module = $module; $this->date = $date; $this->dbase = $dbase; } public function getNumberTemplate() { //get pattern require_once('modules/EcmSysInfos/EcmSysInfo.php'); $EcmSysInfo = new EcmSysInfo(); return $EcmSysInfo->getFormatNumberForModule($this->module); } private function preparePattern($pattern) { $p = $pattern; //check stock if (strpos($pattern, '{mag}')) { if (!$this->stock || $this->stock == "") return -1; $p = str_replace('{mag}', $this->stock, $p); } //user if (strpos($pattern, '{U}')) { global $current_user; $p = str_replace('{U}', $current_user->user_name, $p); } //date fields $p = str_replace('{Y}', date("Y", strtotime($this->date)), $p); $p = str_replace('{y}', date("y", strtotime($this->date)), $p); $p = str_replace('{m}', date("m", strtotime($this->date)), $p); $p = str_replace('{d}', date("d", strtotime($this->date)), $p); //insert number wildcard $p = str_replace('{n}', '%', $p); return $p; } public function parseSaleNumber($pattern, $stock_id, $order_source) { $this->setStock($stock_id); $number = $this->preparePattern($pattern); if ($stock_id && $stock_id != "") $this->stock_id = $stock_id; if ($number == -1) { return "Stock error"; } var_dump($number); //get number of objects $query = "SELECT count(*) AS c FROM " . strtolower($this->module) . " WHERE (document_no LIKE '$number' OR document_no LIKE '$number/%')"; //echo $query; if (gettype($GLOBALS['superGlobalDb']) == 'object') { $db = $GLOBALS['superGlobalDb']; } else { $db = $GLOBALS['db']; } $res = $db->fetchByAssoc($db->query($query)); $n = intval($res['c']); $n++; // add mz 18.06.2024 $document_no = str_replace('%', $n, $number); if ($order_source == 'standard' || $order_source == 'edi' || $order_source == null || $order_source == '') { return $document_no . '/S'; } else { return $document_no . '/E'; } } public function parseNormalNumber($pattern, $stock_id) { $this->setStock($stock_id); $number = $this->preparePattern($pattern); if ($stock_id && $stock_id != "") $this->stock_id = $stock_id; if ($number == -1) { return "Stock error"; } //get number of objects $query = "SELECT count(*) AS c FROM " . strtolower($this->module) . " WHERE document_no LIKE '$number' AND type='normal' AND deleted='0'"; //echo $query; if (gettype($GLOBALS['superGlobalDb']) == 'object') { $db = $GLOBALS['superGlobalDb']; } else { $db = $GLOBALS['db']; } $res = $db->fetchByAssoc($db->query($query)); $n = intval($res['c']); $n++; if (strtolower($this->module) == 'ecminvoiceouts') { // check amazon invoices $a = $db->fetchByAssoc($db->query("SELECT count(*) AS c FROM ecminvoiceouts WHERE document_no LIKE '$number' AND document_no LIKE '%/a%' AND type='normal' AND deleted='0'"))['c']; if ($a > 0) { $n -= $a; } } return str_replace('%', $n, $number); } public function parseCorrectNumber($pattern, $stock_id) { $this->setStock($stock_id); $number = $this->preparePattern($pattern); if ($stock_id && $stock_id != "") $this->stock_id = $stock_id; if ($number == -1) { return "Stock error"; } //get number of objects $query = "SELECT count(*) AS c FROM " . strtolower($this->module) . " WHERE document_no LIKE '$number' AND type='correct' AND deleted='0'"; if (gettype($GLOBALS['superGlobalDb']) == 'object') { $db = $GLOBALS['superGlobalDb']; } else { $db = $GLOBALS['db']; } $res = $db->fetchByAssoc($db->query($query)); $n = intval($res['c']); if ($this->dbase == 'preDb_0dcc87940d3655fa574b253df04ca1c3' && substr($this->date, -4) == '2018') { $n = $n + 2; } else { $n++; } return str_replace('%', $n, $number); } public function parseNumber($pattern, $stock_id) { $this->setStock($stock_id); $number = $this->preparePattern($pattern); if ($number == -1) { return "Stock error"; } //get number of objects $query = "SELECT count(*) AS c FROM " . strtolower($this->module) . " WHERE document_no LIKE '$number' AND deleted='0'"; if (gettype($GLOBALS['superGlobalDb']) == 'object') { $db = $GLOBALS['superGlobalDb']; } else { $db = $GLOBALS['db']; } $res = $db->fetchByAssoc($db->query($query)); $n = intval($res['c']); $n++; return str_replace('%', $n, $number); } public function setStock($id) { $s = new EcmStock(); $s->retrieve($id); $this->stock = $s->no; unset($s); } } ?>