retrieve($id_dokumentu); $tmp = $EcmInventory->create_ks_documents($ks_date_document); print json_encode($tmp); } function createEcmInventory($name, $document_no, $stock_id, $register_date, $ecmproductstockindex_id, $pdf_text){ $EcmInventory = new EcmInventory(); $EcmInventory->name = $name; $EcmInventory->document_no = $document_no; $EcmInventory->stock_id = $stock_id; $EcmInventory->register_date = $register_date; $EcmInventory->ecmproductstockindex_id = $ecmproductstockindex_id; $EcmInventory->pdf_text = $pdf_text; $id = $EcmInventory->save(); print json_encode($id); } function savePositionList($ecminventory_id, $data, $delte_old_values){ $db = $GLOBALS ['db']; if($ecminventory_id==''){ }else{ if($delte_old_values == 'true'){ $del_query = "DELETE FROM ecminventoryitems WHERE ecminventory_id = '" . $ecminventory_id ."'"; $db->query($del_query); } global $current_user, $app_list_strings; foreach ($data as $key => $value) { if ($value ['ecmproduct_id'] == '') { continue; } $item_id = create_guid(); // $_POST ['price'] = unformat_number( $_POST ['price']); // $_POST ['quantity'] = unformat_number( $_POST ['quantity']); $arr = array ( 'id' => $item_id, 'date_entered' => 'NOW()', 'date_modified' => 'NOW()', 'modified_user_id' => $current_user->id, 'assigned_user_id' => $current_user->id, 'created_by' => $current_user->id, 'deleted' => '0', 'position' => $key, strtolower ('EcmInventory') . '_id' => $ecminventory_id, 'ecmproduct_id' => $value ['ecmproduct_id'], 'position' => $value, 'code' => $value['code'], 'name' => $value ['name'], 'price'=> $value ['price'], 'total'=> ROUND($value ['price'] * $value ['quantity'],2), 'quantity' => $value ['quantity'], 'dd_unit_id' => $value ['dd_unit_id'], 'dd_unit_name' => $app_list_strings['ecmproducts_unit_dom'][$value ['dd_unit_id']], 'ecmproductcategory_id' => $value ['ecmproductcategory_id'], //'is_consignment' => $p['product_is_consignment'], ); $keys = array_keys($arr); $values = array_values($arr); $inster_query = 'INSERT INTO ecminventoryitems (' . implode(",",$keys) .') VALUES ("' . implode('","',$values) . '");'; $inster_query = str_replace ( '"NOW()"', 'NOW()', $inster_query ); $db->query ($inster_query); } } //print json_encode($inster_query); } function getPositionList($ecminventory_id){ $db = $GLOBALS ['db']; $q = 'SELECT ecmproduct_id, quantity,stock_state FROM ecminventoryitems WHERE ecminventory_id ="' . $ecminventory_id . '";'; $rs = $db->query($q); $quantity_array = array(); $id_array = array(); $states=array(); while ($row = $db->fetchByAssoc($rs)) { $id_array[] = $row['ecmproduct_id']; $quantity_array[$row['ecmproduct_id']] = $row['quantity']; $states[$row['ecmproduct_id']]=$row['stock_state']; } $inv = new EcmInventory(); $inv->retrieve($ecminventory_id); if(count($id_array)==0){ $result = null; }else{ $query_stock_id = 'SELECT stock_id FROM ecminventorys WHERE id ="' . $ecminventory_id . '";'; $result_stock_id = $db->query($query_stock_id); $stock_id = $row = $db->fetchByAssoc($result_stock_id); $tmp = getProductListById($id_array, $stock_id['stock_id'] ,false ,true); foreach($tmp as $k => $v){ $tmp[$k]['quantity'] = $quantity_array[$v['ecmproduct_id']]; $tmp[$k]['difference'] = $tmp[$k]['quantity'] - $tmp[$k]['stock_state']; if($inv->status=='implemented'){ $tmp[$k]['stock_state']=$states[$v['ecmproduct_id']]; $tmp[$k]['difference'] = $tmp[$k]['quantity'] - $states[$v['ecmproduct_id']]; } } $json = json_encode($tmp); print $json; } } function add_from_stock($stock_id, $add_options, $rewrite_state){ $db = $GLOBALS ['db']; if($add_options=='all_positions'){ $q = 'SELECT product_id FROM ecmstockoperations WHERE stock_id ="' . $stock_id . '" AND deleted = 0 group by product_id;'; $id_array = array(); $rs = $db->query($q); while ($row = $db->fetchByAssoc($rs)) { $id_array[] = $row['product_id']; } getProductListById($id_array,$stock_id,$rewrite_state); }else if($add_options=='not_eq_zero'){ $qplus = 'SELECT product_id, SUM(quantity) as quantity FROM ecmstockoperations WHERE stock_id ="' . $stock_id . '" AND type=0 AND deleted = 0 GROUP BY product_id;'; $qminus = 'SELECT product_id, SUM(quantity) as quantity FROM ecmstockoperations WHERE stock_id ="' . $stock_id . '" AND type=1 AND deleted = 0 GROUP BY product_id;'; $product_array = array(); $id_array = array(); $rs = $db->query($qplus); while ($row = $db->fetchByAssoc($rs)) { $product_array[$row['product_id']] = $row['quantity']; } $rs = $db->query($qminus); while ($row = $db->fetchByAssoc($rs)) { $product_array[$row['product_id']] -= $row['quantity']; } foreach($product_array as $key => $value){ if($value>0){ $id_array[] = $key; } } getProductListById($id_array,$stock_id, $rewrite_state); }else if($add_options=='eq_zero'){ $qplus = 'SELECT product_id, SUM(quantity) as quantity FROM ecmstockoperations WHERE stock_id ="' . $stock_id . '" AND type=0 AND deleted = 0 GROUP BY product_id;'; $qminus = 'SELECT product_id, SUM(quantity) as quantity FROM ecmstockoperations WHERE stock_id ="' . $stock_id . '" AND type=1 AND deleted = 0 GROUP BY product_id;'; $product_array = array(); $id_array = array(); $rs = $db->query($qplus); while ($row = $db->fetchByAssoc($rs)) { $product_array[$row['product_id']] = $row['quantity']; } $rs = $db->query($qminus); while ($row = $db->fetchByAssoc($rs)) { $product_array[$row['product_id']] -= $row['quantity']; } foreach($product_array as $key => $value){ if($value<=0){ $id_array[] = $key; } } getProductListById($id_array,$stock_id,$rewrite_state); } } function getProductListById($id_list, $stock_id, $rewrite_state = false, $return_array = false){ global $current_language; $app_list_strings = return_app_list_strings_language($current_language); $db = $GLOBALS ['db']; $q = ' SELECT product.id AS id, product.name AS name, product.code AS code, product.product_category_id AS product_category_id, product_category.name AS product_category_name, product.unit_id AS dd_unit_id FROM ecmproducts AS product LEFT JOIN ecmproductcategories AS product_category ON product.product_category_id = product_category.id WHERE product.deleted = 0 AND product.id IN ("' . implode('","',$id_list) .'") ORDER BY product.code, product.name'; $result = array(); $rs = $db->query($q); while ($row = $db->fetchByAssoc($rs)) { $a_json_row ['ecmproduct_id'] = $row ['id']; $a_json_row ['name'] = $row ['name']; $a_json_row ['code'] = $row ['code']; $a_json_row ['product_category_id'] = $row ['product_category_id']; $a_json_row ['product_category_name'] = $row ['product_category_name']; $a_json_row ['dd_unit_id'] = $row ['dd_unit_id']; $a_json_row ['dd_unit_precision'] = $app_list_strings['ecmproducts_unit_dom_precision'][$row ['dd_unit_id']]; $a_json_row ['dd_unit_name'] = $app_list_strings['ecmproducts_unit_dom'][$row ['dd_unit_id']]; //Cena zakupu $price_query = ' SELECT price FROM ecmstockdocins LEFT JOIN ecmstockdocinitems ON ecmstockdocins.id = ecmstockdocinitems.ecmstockdocin_id WHERE ecmstockdocinitems.ecmproduct_id = "' . $row ['id'] . '" AND ecmstockdocins.deleted =0 ORDER BY ecmstockdocins.register_date DESC, ecmstockdocins.document_no DESC, ecmstockdocinitems.position DESC LIMIT 1;'; $price_result = $db->query($price_query); if($price_result->num_rows > 0){ $price_row = $db->fetchByAssoc($price_result); $a_json_row ['price'] = $price_row['price']; }else{ $a_json_row ['price'] = 0; } //Stan magazynowy $a_json_row['stock_state'] = EcmStockOperation::getStock($row['id'], $stock_id); if($rewrite_state=="true"){ $a_json_row['quantity'] = $a_json_row['stock_state']; }else{ $a_json_row['quantity'] = 0; } $result [] = $a_json_row; } if(!$return_array){ $json = json_encode($result); print $json; }else{ return $result; } } function AutocompliteProductCode($code,$stock_id){ global $current_language; $app_list_strings = return_app_list_strings_language($current_language); $db = $GLOBALS ['db']; $result = array(); $q = ' SELECT product.id AS id, product.name AS name, product.code AS code, product.product_category_id AS product_category_id, product_category.name AS product_category_name, product.unit_id AS dd_unit_id FROM ecmproducts AS product LEFT JOIN ecmproductcategories AS product_category ON product.product_category_id = product_category.id WHERE product.deleted = 0 AND product.code LIKE "%' . $code .'%" ORDER BY product.code, product.name LIMIT 10;'; $rs = $db->query($q); if ($rs->num_rows > 0) { while ($row = $db->fetchByAssoc($rs)) { $a_json_row ['id'] = $row ['id']; $a_json_row ['name'] = $row ['name']; $a_json_row ['code'] = $row ['code']; $a_json_row ['product_category_id'] = $row ['product_category_id']; $a_json_row ['product_category_name'] = $row ['product_category_name']; $a_json_row ['dd_unit_id'] = $row ['dd_unit_id']; $a_json_row ['dd_unit_precision'] = $app_list_strings['ecmproducts_unit_dom_precision'][$row ['dd_unit_id']]; $a_json_row ['dd_unit_name'] = $app_list_strings['ecmproducts_unit_dom'][$row ['dd_unit_id']]; $a_json_row ['label'] = "Kategoria: " . $a_json_row ['product_category_name'] . "
Indeks: " . $row ['code'] . "
Nazwa: " . $row ['name'] . ''; $a_json_row ['value'] = $row ['code']; //Cena zakupu $price_query = ' SELECT price FROM ecmstockdocins LEFT JOIN ecmstockdocinitems ON ecmstockdocins.id = ecmstockdocinitems.ecmstockdocin_id WHERE ecmstockdocinitems.ecmproduct_id = "' . $row ['id'] . '" ORDER BY ecmstockdocins.register_date DESC LIMIT 1;'; $price_result = $db->query($price_query); if($price_result->num_rows > 0){ $price_row = $db->fetchByAssoc($price_result); $a_json_row ['price'] = $price_row['price']; }else{ $a_json_row ['price'] = 0; } //Stan magazynowy $a_json_row['stock_state'] = EcmStockOperation::getStock($row['id'], $stock_id); $result [] = $a_json_row; } } else { $a_json_row ['id'] = ''; $a_json_row ['name'] = ''; $a_json_row ['code'] = ''; $a_json_row ['product_category_id'] = ''; $a_json_row ['product_category_name'] = ''; $a_json_row ['dd_unit_id'] = ''; $a_json_row ['dd_unit_name'] = ''; $a_json_row ['price'] = ''; $a_json_row ['label'] = "Brak czynności o szukanej nazwie"; $a_json_row ['value'] = ''; $result [] = $a_json_row; } $json = json_encode($result); print $json; } function AutocompliteProductName($name,$stock_id){ global $current_language; $app_list_strings = return_app_list_strings_language($current_language); $db = $GLOBALS ['db']; $result = array(); $q = ' SELECT product.id AS id, product.name AS name, product.code AS code, product.product_category_id AS product_category_id, product_category.name AS product_category_name, product.unit_id AS dd_unit_id FROM ecmproducts AS product LEFT JOIN ecmproductcategories AS product_category ON product.product_category_id = product_category.id WHERE product.deleted = 0 AND product.name LIKE "%' . $name .'%" ORDER BY product.name, product.code LIMIT 10;'; $rs = $db->query($q); if ($rs->num_rows > 0) { while ($row = $db->fetchByAssoc($rs)) { $a_json_row ['id'] = $row ['id']; $a_json_row ['name'] = $row ['name']; $a_json_row ['code'] = $row ['code']; $a_json_row ['product_category_id'] = $row ['product_category_id']; $a_json_row ['product_category_name'] = $row ['product_category_name']; $a_json_row ['dd_unit_id'] = $row ['dd_unit_id']; $a_json_row ['dd_unit_name'] = $app_list_strings['ecmproducts_unit_dom'][$row ['dd_unit_id']]; $a_json_row ['dd_unit_precision'] = $app_list_strings['ecmproducts_unit_dom_precision'][$row ['dd_unit_id']]; $a_json_row ['label'] = "Kategoria: " . $a_json_row ['product_category_name'] . "
Indeks: " . $row ['code'] . "
Nazwa: " . $row ['name'] . ''; $a_json_row ['value'] = $row ['name']; //Cena zakupu $price_query = ' SELECT price FROM ecmstockdocins LEFT JOIN ecmstockdocinitems ON ecmstockdocins.id = ecmstockdocinitems.ecmstockdocin_id WHERE ecmstockdocinitems.ecmproduct_id = "' . $row ['id'] . '" ORDER BY ecmstockdocins.register_date DESC LIMIT 1;'; $price_result = $db->query($price_query); if($price_result->num_rows > 0){ $price_row = $db->fetchByAssoc($price_result); $a_json_row ['price'] = $price_row['price']; }else{ $a_json_row ['price'] = 0; } //Stan magazynowy $a_json_row['stock_state'] = EcmStockOperation::getStock($row['id'], $stock_id); $result [] = $a_json_row; } } else { $a_json_row ['id'] = ''; $a_json_row ['name'] = ''; $a_json_row ['code'] = ''; $a_json_row ['product_category_id'] = ''; $a_json_row ['product_category_name'] = ''; $a_json_row ['dd_unit_id'] = ''; $a_json_row ['dd_unit_name'] = ''; $a_json_row ['price'] = ''; $a_json_row ['label'] = "Brak czynności o szukanej nazwie"; $a_json_row ['value'] = ''; $result [] = $a_json_row; } $json = json_encode($result); print $json; } function generateNumber($mag,$date) { $data = array(); $data['number'] = EcmInventory::generateNumber($date); $data['document_no'] = EcmInventory::generateDocNumberStock($mag,$date); echo json_encode($data); unset($data); return; } function searchProducts($searchKey, $searchCategory, $searchStock, $searchSort, $searchStockId) { $db = $GLOBALS['db']; $q = "SELECT id, code, name FROM ecmproducts WHERE (UPPER(code) LIKE '%$searchKey%' OR UPPER(name) LIKE '%$searchKey%') AND deleted='0' "; if ($searchCategory && $searchCategory!="") $q.="AND product_category_id='$searchCategory' "; if ($searchSort=='1') $q.="ORDER BY code"; else if ($searchSort=='2') $q.="ORDER BY code DESC"; else if ($searchSort=='3') $q.="ORDER BY name"; else if ($searchSort=='4') $q.="ORDER BY name DESC"; $q.=" LIMIT 0,50"; $res = $db->query($q); $result = array(); $stock_id = $searchStockId; while ($row = $db->fetchByAssoc($res)) { $tmp = array(); $tmp['id'] = $row['id']; $tmp['name'] = $row['name']; $tmp['code'] = $row['code']; //get stock if necessary if ($searchStock!='1') { $tmp['stock_state'] = EcmStockOperation::getStock($row['id'], $stock_id); } if ($searchStock=='3' && $tmp['stock_state']==0) continue; //don't show null stock $result[] = $tmp; } echo json_encode($result); return; } function getProduct($id, $stockId) { $db = $GLOBALS['db']; $p = $db->fetchByAssoc($db->query("SELECT p.is_consignment, p.id, p.code, p.name, p.unit_id, p.product_category_id FROM ecmproducts as p INNER JOIN ecmvats as v ON v.id=p.vat_id WHERE p.id='$id'")); global $app_list_strings; $p['unit_name'] = $app_list_strings['ecmproducts_unit_dom'][$p['unit_id']]; $p['stock_state'] = $tmp['stock_state'] = EcmStockOperation::getStock($id, $stockId); $p['unit_precision'] = $app_list_strings['ecmproducts_unit_dom_precision'][$p['unit_id']]; echo json_encode($p); return; } function getItems($record) { $mm = new EcmInventory(); $mm->retrieve($record); $pl = $mm->getPositionList(true); unset($mm); echo json_encode($pl); return; } function getCategoriesList() { $db = $GLOBALS['db']; $res = $db->query("SELECT id, name FROM ecmproductcategories WHERE deleted='0'"); $result = array(); while ($row = $db->fetchByAssoc($res)) { $tmp = array(); $tmp['id'] = $row['id']; $tmp['name'] = $row['name']; $result[] = $tmp; } echo json_encode($result); return; } function getTranslation($product_id, $language, $unit_id) { $db = $GLOBALS['db']; $result = array(); if ($language=='en_us') { $r = $db->fetchByAssoc($db->query("SELECT short_description FROM ecmproduct_language WHERE ecmproduct_id='$product_id' AND language='en'")); $result['name'] = htmlspecialchars_decode($r['short_description']); } else if ($language=='pl_pl') { $p = new EcmProduct(); $p->retrieve($product_id); $result['name'] = htmlspecialchars_decode($p->name); unset($p); } $lists = return_app_list_strings_language($language); $result['unit_name'] = $lists['ecmproducts_unit_dom'][$unit_id]; unset($lists); echo json_encode($result); return; } function getPricesInfo($product_id, $pricebook_id, $account_id) { $db = $GLOBALS['db']; $result = array(); if ($pricebook_id && $pricebook_id!='') { //try get price from pricebook $res = $db->fetchByAssoc($db->query("SELECT price FROM ecmpricebooks_ecmproducts WHERE ecmpricebook_id='$pricebook_id' AND ecmproduct_id='$product_id' AND deleted='0'")); if ($res['price'] && $res['price']!='' && $res['price']!=0) { $tmp = array(); $tmp['name'] = 'pricebook'; $tmp['price'] = $res['price']; $result[] = $tmp; } } //get from ecmprices $res = $db->query("SELECT p.name, pp.price FROM ecmprices_ecmproducts AS pp INNER JOIN ecmprices AS p ON p.id=pp.ecmprice_id WHERE pp.ecmproduct_id='$product_id' AND pp.price!=0"); while ($row = $db->fetchByAssoc($res)) { $tmp = array(); $tmp['name'] = $row['name']; $tmp['price'] = $row['price']; $tmp['module']='EcmPrices'; $tmp['visible']='1'; $result[] = $tmp; } //get last invoice price if ($account_id && $account_id!='') { $res = $db->fetchByAssoc($db->query("SELECT ii.subprice, i.id, i.document_no FROM ecminvoiceoutitems AS ii INNER JOIN ecminvoiceouts AS i ON ii.ecminvoiceout_id=i.id WHERE ii.ecmproduct_id='$product_id' AND i.parent_id='$account_id' AND ii.deleted='0' AND i.deleted='0' AND i.canceled='0' ORDER BY i.register_date DESC LIMIT 0,1")); if ($res && $res['subprice']!='') { $tmp = array(); $tmp['name'] = ''.$res['document_no'].''; $tmp['price'] = $res['subprice']; $tmp['module']='EcmInvoiceOuts'; $tmp['visible']='1'; $result[] = $tmp; } } //get from ecmstockdocins $res = $db->query("SELECT ii.price, i.id, i.document_no,ii.quantity,i.register_date FROM ecmstockdocinitems AS ii INNER JOIN ecmstockdocins AS i ON ii.ecmstockdocin_id=i.id WHERE ii.ecmproduct_id='$product_id' AND ii.deleted='0' AND i.deleted='0' ORDER BY i.register_date DESC"); while ($row = $db->fetchByAssoc($res)) { $tmp = array(); $tmp['name'] = ''.$row['document_no'].''; $tmp['price'] = $row['price']; $tmp['module']='EcmStockDocIns'; $tmp['quantity']=$row['quantity']; $tmp['register_date']=$row['register_date']; $tmp['visible']='0'; $result[] = $tmp; } echo json_encode($result); return; } function getStockArray($product_id) { $o = new EcmStockOperation(); echo json_encode($o->getStockArray($product_id)); unset($o); return; } function getPurchaseArray($product_id) { $o = new EcmStockOperation(); echo json_encode($o->getPurchaseArray($product_id)); unset($o); return; } function getStockState($id, $stock_id) { echo EcmStockOperation::getStock($id, $stock_id); return; } function getComponents($product_id) { $p = new EcmProduct(); $p->retrieve($product_id); echo json_encode($p->getPositionList(true)); return; }