setupCustomFields('EcmProducts'); foreach ($this->field_defs as $field) { $this->field_name_map[$field['name']] = $field; } } var $new_schema = true; function get_summary_text(){ return "$this->name"; } function create_list_query($order_by, $where, $show_deleted = 0){ // Fill in the assigned_user_name $custom_join = $this->custom_fields->getJOIN(); $query = "SELECT "; $query .= " ecmproducts.* ,users.user_name as assigned_user_name"; if($custom_join){ $query .= $custom_join['select']; } $query .= " FROM ecmproducts LEFT JOIN users ON ecmproducts.assigned_user_id=users.id"; $query .= " "; if($custom_join){ $query .= $custom_join['join']; } $where_auto = '1=1'; if($show_deleted == 0){ $where_auto = " $this->table_name.deleted=0 "; }else if($show_deleted == 1){ $where_auto = " $this->table_name.deleted=1 "; } if($where != "") $query .= "where $where AND ".$where_auto; else $query .= "where ".$where_auto; if(substr_count($order_by, '.') > 0){ $query .= " ORDER BY $order_by"; } else if($order_by != "") $query .= " ORDER BY $order_by"; else $query .= " ORDER BY ecmproducts.name"; return $query; } function create_export_query($order_by, $where){ $custom_join = $this->custom_fields->getJOIN(); $query = "SELECT ecmproducts.*, users.user_name assigned_user_name"; if($custom_join){ $query .= $custom_join['select']; } $query .= " FROM ecmproducts "; $query .= " LEFT JOIN users ON ecmproducts.assigned_user_id=users.id"; if($custom_join){ $query .= $custom_join['join']; } $query .= ""; $where_auto = " ecmproducts.deleted=0 "; if($where != "") $query .= " where $where AND ".$where_auto; else $query .= " where ".$where_auto; if($order_by != "") $query .= " ORDER BY $order_by"; else $query .= " ORDER BY ecmproducts.name"; return $query; } function fill_in_additional_list_fields(){ } function fill_in_additional_detail_fields(){ // FILL IN THE ASSIGNED_USER_NAME $this->assigned_user_name = get_assigned_user_name($this->assigned_user_id); $this->created_by_name = get_assigned_user_name($this->created_by); $this->modified_by_name = get_assigned_user_name($this->modified_user_id); if ($_REQUEST['action '] == 'DetailView') { $this->url1 = ''.$this->url1.''; $this->url2 = ''.$this->url2.''; $this->url3 = ''.$this->url3.''; $this->url4 = ''.$this->url4.''; $this->url5 = ''.$this->url5.''; $this->url6 = ''.$this->url6.''; $this->url7 = ''.$this->url7.''; $this->url8 = ''.$this->url8.''; $this->url9 = ''.$this->url9.''; } $r = $GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("SELECT SUM(quantity) as qty FROM ecmstockstates WHERE product_id='".$this->id."'")); $this->ems_qty_in_stock = $r['qty']; } function getSale($date){ foreach($date as $d){ $z="select sum( CASE WHEN e.type!='correct' THEN CASE WHEN e.currency_value is null or e.currency_value='' THEN i.price*i.quantity ELSE i.price*i.quantity*e.currency_value END ELSE CASE WHEN ci.price is null or ci.quantity is null THEN 0 ELSE i.price*i.quantity-ci.price*ci.quantity END END ) as sales, sum( CASE WHEN e.type!='correct' THEN i.purchase_price*i.quantity ELSE CASE WHEN ci.quantity is null THEN 0 ELSE ci.purchase_price*i.quantity-ci.purchase_price*ci.quantity END END ) as purchase, sum( CASE WHEN e.type!='correct' THEN i.quantity ELSE CASE WHEN ci.quantity is null THEN 0 ELSE i.quantity-ci.quantity END END ) as quantity from ecminvoiceoutitems as i left join ecminvoiceoutitems as ci on i.ecminvoiceoutitem_id=ci.id inner join ecminvoiceouts as e on e.id=i.ecminvoiceout_id left join ecmstockdocouts as w on e.wz_id=w.id left join ecmproducts as p on p.id=i.ecmproduct_id where e.register_date like '".$d."%' and e.status='accepted' and i.ecmproduct_id='".$this->id."'"; $r=$GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query($z)); $total_s+=$r['sales']; $total_p+=$r['purchase']; $total_q+=$r['quantity']; /*$r=$GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("select sum(i.quantity) as q,sum(i.quantity*i.price) as s,sum(i.quantity*i.purchase_price) as p from ecminvoiceouts as e inner join ecminvoiceoutitems as i on i.ecminvoiceout_id=e.id where e.register_date like '".$d."%' and e.status='accepted' and i.ecmproduct_id='".$this->id."'")); $total_s+=$r['s']; $total_p+=$r['p']; $total_q+=$r['q']; $w=$GLOBALS['db']->query("select i.quantity,i.price,i.purchase_price,i.ecminvoiceoutitem_id from ecminvoiceouts as e inner join ecminvoiceoutitems as i on i.ecminvoiceout_id=e.id where e.register_date like '".$d."%' and e.status='accepted' and e.type='correct' and i.ecmproduct_id='".$this->id."'"); while($r=$GLOBALS['db']->fetchByAssoc($w)){ $total_s+=$r['price']*$r['quantity']; $total_q+=$r['quantity']; $rr=$GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("select price,quantity,purchase_price from ecminvoiceoutitems where id='".$r['ecminvoiceoutitem_id']."'")); $totat_s-=$rr['price']*$rr['quantity']; $totat_p-=$rr['purchase_price']*$rr['quantity']; $total_p+=$rr['purchase_price']*$r['quantity']; $totat_q-=$rr['quantity']; }*/ } //echo $total_s." ".$total_p." ".$total_q."
"; return array("sale"=>$total_s,"purchase"=>$total_p,"quantity"=>$total_q); } function get_list_view_data(){ global $current_language,$current_user; global $numerek; $numerek=$this->id; $i=0; $i++; $the_array = parent::get_list_view_data(); $app_list_strings = return_app_list_strings_language($current_language); $mod_strings = return_module_language($current_language, 'EcmProducts'); global $current_user_id; $r = $GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("SELECT SUM(quantity) as qty FROM ecmstockstates WHERE product_id='".$this->id."'")); $this->ems_qty_in_stock = $r['qty']; // THE NEW LISTVIEW CODE ONLY FETCHES COLUMNS THAT WE'RE DISPLAYING AND NOT ALL // THE COLUMNS SO WE NEED THESE CHECKS. $the_array['NAME'] = (($this->name == "") ? "blank" : $this->name); //chmod('modules/EcmProducts/upload/images/'.$this->product_picture,777); if(file_exists('modules/EcmProducts/upload/images/'.$this->product_picture) && $this->product_picture){ $the_array['IMAGE']=''; } $the_array['STOCK_QTY'] = 0; $op=new EcmStockOperation(); $the_array['STOCK_QTY']=format_number($op->getAllQuantity($this->id)); $the_array['ENCODED_NAME'] = $this->name; $lolek=$GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("select sum(pp.product_quantity) as l from ecmproducts_ecmpurchaseorders as pp inner join ecmpurchaseorders as p on p.id=pp.ecmpurchaseorder_id where pp.ecmproduct_id='".$this->id."' and p.status='accepted' and p.deleted='0'")); //echo "select sum(pp.product_quantity) as l from ecmproducts_ecmpurchaseorders as pp inner join ecmpurchaseorders as p on p.id=pp.ecmpurchaseorder_id where pp.ecmproduct_id='".$this->id."' and p.status='accepted'

"; $the_array['ORDERED']=$lolek['l']; $the_array['SRP_PRICE'] = number_format($this->srp_price,2,$GLOBALS['sugar_config']['default_decimal_seperator'],$GLOBALS['sugar_config']['default_number_grouping_seperator']); $the_array['EDIT_BTN'] = ''; $the_array['PURCHASE_PRICE'] = number_format($this->purchase_price,2,$GLOBALS['sugar_config']['default_decimal_seperator'],$GLOBALS['sugar_config']['default_number_grouping_seperator']); $the_array['COMMISSION_RATE'] = number_format($this->commission_rate,2,$GLOBALS['sugar_config']['default_decimal_seperator'],$GLOBALS['sugar_config']['default_number_grouping_seperator']); if($_SESSION[$current_user->user_name.'_PREFERENCES']['global']['EcmProductsQ']['stock_id_basic']){ $sid=$_SESSION[$current_user->user_name.'_PREFERENCES']['global']['EcmProductsQ']['stock_id_basic']; $st=" and stock_id='".$sid."'"; } elseif($_SESSION[$current_user->user_name.'_PREFERENCES']['global']['EcmProductsQ']['stock_id_advanced']) { $sid=$_SESSION[$current_user->user_name.'_PREFERENCES']['global']['EcmProductsQ']['stock_id_advanced']; $st=" and stock_id='".$sid."'"; } else $st=""; $this->retrieve($this->id); if (!$this->code) $this->code='--'; if ($_REQUEST['action']=='ListView' || $_REQUEST['action']=='index') { if ($this->product_active) { if($this->status=='active'){ $the_array['CODE']='
'.$this->code.'
'; } if($this->status=='new'){ $the_array['CODE']='
'.$this->code.'
'; } if($this->status=='end_of_line'){ $the_array['CODE']='
'.$this->code.'
'; } if(!$this->status){ $the_array['CODE']='
'.$this->code.'
'; } } else $the_array['CODE']='
'.$this->code.'
'; } /*$z="select sum(quantity) as q from ecmstockstates where product_id='".$this->id."' and deleted='0'".$st; $w=$GLOBALS['db']->query($z); $qq=0; $r=$GLOBALS['db']->fetchByAssoc($w); $qq+=$r['q'];*/ $the_array['EMS_QTY_IN_STOCK']=number_format($this->ems_qty_in_stock,0,"",""); /* include_once("modules/EcmProductReports/vtigerConnector.php"); $vc=new vtigerConnector(); $vc->where="poproductrel.productcode like '".$this->code."'"; $vc->limit="0,999"; $vc->getData(); $vc->getCount(); $data=$vc->data; for($i=0;$i<$vc->count;$i++){ $ord+=$data[$i]['quantity']; } */ $r=$GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("select * from ecmproducts where id='".$this->id."'")); $rp_sum=$GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("select sum(p.product_quantity) as s from ecmproducts_ecmpurchaseorders as p inner join ecmpurchaseorders as e on e.id=p.ecmpurchaseorder_id where p.ecmproduct_id='".$this->id."' and p.deleted='0' and e.deleted='0'")); $rp_app=$GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("select sum(p.product_quantity) as s from ecmproducts_ecmpurchaseorders as p inner join ecmpurchaseorders as e on e.id=p.ecmpurchaseorder_id where p.ecmproduct_id='".$this->id."' and p.deleted='0' and (e.status='accepted' or e.status='mailed') and e.deleted='0'")); $rp_cr=$GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("select sum(p.product_quantity) as s from ecmproducts_ecmpurchaseorders as p inner join ecmpurchaseorders as e on e.id=p.ecmpurchaseorder_id where p.ecmproduct_id='".$this->id."' and p.deleted='0' and e.status='not_accepted' and e.deleted='0'")); $the_array['ORD_CREATED']=$rp_cr['s']; $the_array['ORD_APPROVED']=$rp_app['s']; //$the_array['ORDERED']=$rp_app['s']+$rp_cr['s']; //$the_array['ORD_DELIVERED']=$r['ord_delivered']; $the_array['Q0']=round($r['q0']); $the_array['Q3']=round(($r['q3'])); $the_array['S0']=number_format($r['s0'],2,",","."); $the_array['S3']=number_format($r['s3'],2,",","."); $the_array['P0']=number_format($r['p0'],2,",","."); $the_array['P3']=number_format($r['p3'],2,",","."); $stock_value=($this->ems_price*$this->ems_qty_in_stock); $the_array['STOCK_VALUE']=number_format($stock_value,2,",","."); if(round(($r['s3']))!=0)$stock_month=(($this->ems_qty_in_stock+$this->ordered)/round(($r['s3']))); else $stock_month=0; $the_array['STOCK_MONTH']=number_format($stock_month,2,",","."); $the_array['EMS_PRICE']=number_format($this->ems_price,2,",","."); $r=$GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("select flag from ecmproducts where id='".$this->id."'")); if($this->flag){ $flag=0; $color="red"; } else { $flag=1; $color="#cccccc"; } $the_array['FLAGS']='!'; $the_array['HINT']=HintProduct($this->id,$this->description,$this->add_status); // $the_array['TO_ORDER'] = $r['to'] $the_array['STAN']="".($this->active?'Tak':'Nie').""; //$GLOBALS['db']->query("update ecmproducts set q0='".$s0['quantity']."',p0='".($s0['sale']-$s0['purchase'])."',s0='".$s0['sale']."',q3='".($s3['quantity']/3)."',p3='".(($s3['sale']-$s3['purchase'])/3)."',s3='".($s3['sale']/3)."',stock_month='".$stock_month."',stock_value='".$stock_value."' where id='".$this->id."'"); //echo mysql_error(); // echo $i; return $the_array; } /** BUILDS A GENERIC SEARCH BASED ON THE QUERY STRING USING OR. DO NOT INCLUDE ANY $THIS-> BECAUSE THIS IS CALLED ON WITHOUT HAVING THE CLASS INSTANTIATED. */ function build_generic_where_clause ($the_query_string) { $where_clauses = Array(); $the_query_string = PearDatabase::quote(from_html($the_query_string)); array_push($where_clauses, "ecmproducts.name like '$the_query_string%'"); $the_where = ""; foreach($where_clauses as $clause){ if($the_where != "") $the_where .= " or "; $the_where .= $clause; } return $the_where; } function set_notification_body($xtpl, $simplemodule){ global $mod_strings, $app_list_strings; $xtpl->assign("NAME", $simplemodule->name); $xtpl->assign("ECMPRODUCTS_DESCRIPTION", $ecmproducts->description); return $xtpl; } function bean_implements($interface){ switch($interface){ case 'ACL':return true; } return false; } function r($t){ $t=str_replace(".","",$t); $t=str_replace(",",".",$t); $t=floatval($t); return $t; } function save($check_notify = FALSE){ include("modules/EcmProducts/generateEAN.php"); if ($_REQUEST['newEan']=='1') $_REQUEST['ean']=generateEan(1); if ($_REQUEST['newEan2']=='1') $this->ean2 = generateEAN(2); //$_REQUEST['ean2'] = generateEan(1); if($_REQUEST['massupdate']){ foreach($_REQUEST['mass'] as $m)$mm[]="id='".$m."'"; if($_REQUEST['production'])$set[]="production='".$_REQUEST['production']."'"; if($_REQUEST['product_active'])$set[]="product_active='".$_REQUEST['product_active']."'"; if($_REQUEST['end_of_line'])$set[]="end_of_line='".$_REQUEST['end_of_line']."'"; if($_REQUEST['sales_start_date'])$set[]="sales_start_date='".date("Y-m-d",strtotime($GLOBALS['timedate']->to_db_date($_REQUEST['sales_start_date']))+24*3600)."'"; if($_REQUEST['sales_end_date'])$set[]="sales_end_date='".date("Y-m-d",strtotime($GLOBALS['timedate']->to_db_date($_REQUEST['sales_end_date']))+24*3600)."'"; if(count($set)>0)$z="update ecmproducts set ".implode(",",$set)." where ".implode(" or ",$mm); //echo $z; $GLOBALS['db']->query($z); header("Location: index.php?module=EcmProducts&action=index"); } else{ $return_id = parent::save($check_notify); //$components = self::ParseComponentsFromPOST(); //if(!(!is_array($components) && $components == false)) $this->position_list = $components; //$this->savePositions($return_id); //save categories $this->savePositions3($_POST['position_list3']); //save prices $this->savePrices($_POST['position_list4']); return $return_id; } } static function ParseComponentsFromPOST() { if(isset($_POST['position_list'])) { $c_ = $_POST['position_list']; $json = getJSONobj(); $c = $json->decode(htmlspecialchars_decode($c_)); return $c; } return false; } //***************************Start Managing Positions*************************// function constructInsertQuery($data, $table = '') { if($table == '' && isset($this->object_name) && $this->object_name != '') { $table = strtolower($this->object_name)."components"; } else return ""; $keys = array(); $values = array(); foreach($data as $key => $value) { $keys[] = $key; if(is_array($value)) $values[] = $value[1].str_replace("'", "\'", $value[0]).$value[1]; else $values[] = "'".str_replace("'", "\'", $value)."'"; } $q = "insert into `$table` (`"; $q .= implode('`, `', $keys); $q .= "`) values ("; $q .= implode(", ", $values); $q .= ");"; return $q; } function savePositions($id = null, $position_list = null) { global $current_user, $timedate; if($position_list == null) $position_list = $this->position_list; if($id == null) $id = $this->id; if(count($position_list) > 0) $this->deleteAssignedPositions($id); $arr = array(); $position = 0; for($i = 0; $i < count($position_list); $i ++) { if($position_list[$i]['name'] == '') continue; $p = $position_list[$i]; /* Not Nessesary require_once("modules/EcmVats/EcmVat.php"); $vats = new EcmVat(); $vats->retrieve($p['vat_id']); $p['vat_name'] = $vats->name; require_once("modules/Currencies/Currency.php"); $curr = new Currency(); $curr->retrieve($p['currency_id']); $p['currency_name'] = $curr->name; if(!empty($p['category_id']) || $p['category_id'] == '') { require_once("modules/EcmProducts/EcmProduct.php"); $pr = new EcmProduct(); $pr->retrieve($p['id']); $p['category_id'] = $pr->product_category_id; } */ $arr = array( 'id' => create_guid(), 'date_entered' => array('NOW()', ''), 'date_modified' => array('NOW()', ''), 'modified_user_id' => $current_user->id, 'assigned_user_id' => $current_user->id, 'created_by' => $current_user->id, 'deleted' => '0', strtolower($this->object_name).'_id' => $id, 'ecmcomponent_id' => $p['id'], 'position' => $position, 'code' => $p['code'], 'name' => $p['name'], 'quantity' => ((empty($p['quantity']) || $p['quantity'] == '') ? 0 : $p['quantity']), 'ecmusageunit_id' => $p['unit_id'], /* Not Nessesary 'price' => ((empty($p['price']) || $p['price'] == '') ? 0 : $p['price']), 'discount' => ((empty($p['discount']) || $p['discount'] == '') ? 0 : $p['discount']), 'total' => ((empty($p['total']) || $p['total'] == '') ? 0 : $p['total']), 'dd_unit_id' => $p['unit_id'], 'dd_unit_name' => '', 'ecmvat_id' => $p['vat_id'], 'ecmvat_name' => $p['vat_name'], 'ecmvat_value' => $p['vat_value'], 'ecmproductcategory_id' => $p['category_id'], 'currency_id' => $p['currency_id'], 'currency_name' => $p['currency_name'], 'recipient_code' => $p['recipient_code'], */ ); $this->db->query($this->constructInsertQuery($arr)); $position ++; } } function getPosition($position) { global $app_list_strings; if(!is_array($position)) return ''; global $timedate; $return_array = array(); $unit = $GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("select unit_id from ecmproducts where id='".$position['ecmcomponent_id']."'")); $return_array['id'] = $position['ecmcomponent_id']; $return_array['position'] = $position['position']; $return_array['code'] = $position['code']; $return_array['name'] = str_replace('"','',$position['name']); $return_array['quantity'] = $position['quantity']; $return_array['price'] = $position['price']; $return_array['discount'] = $position['discount']; $return_array['total'] = $position['total']; $return_array['unit_id'] = $unit['unit_id']; $return_array['unit_name'] = $app_list_strings['ecmproducts_unit_dom'][$unit['unit_id']]; $return_array['vat_id'] = $position['ecmvat_id']; $return_array['vat_name'] = $position['ecmvat_name']; $return_array['vat_value'] = $position['ecmvat_value']; $return_array['category_id'] = $position['ecmproductcategory_id']; $return_array['currency_id'] = $position['currency_id']; $return_array['currency_name'] = $position['currency_name']; $return_array['recipient_code'] = $position['recipient_code']; //get ems price $r = $GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("SELECT ems_price FROM ecmproducts WHERE id='".$position['ecmcomponent_id']."'")); $return_array['ems_price'] = $position['quantity'] * $r['ems_price']; if (!$r || $r['ems_price']==0) { $pz = $GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query(" SELECT price FROM ecmstockoperations WHERE product_id= '".$position['ecmcomponent_id']."' AND parent_type = 'EcmStockDocIns' ORDER BY date_entered DESC LIMIT 0,1 ")); $return_array['ems_price'] = $pz['price']; } global $db; $c = $db->fetchByAssoc($db->query("SELECT product_category_id as c, purchase_price as p FROM ecmproducts WHERE id='".$position['ecmcomponent_id']."'")); $return_array['category_id'] = $c['c']; if ($c['c'] == 'd7f876b0-1a3d-43a1-7c9b-511ba40df3d1') $return_array['ems_price'] = $c['p']; if (!$return_array['ems_price'] || $return_array['ems_price']=="") $return_array['ems_price'] = $c['purchase_price']; return $return_array; } function getPositionList($array = false) { if(isset($this->id) && $this->id != '') { $query = "SELECT * FROM `ecmproductcomponents` WHERE `ecmproduct_id`='".$this->id."' order by position asc"; $r = $this->db->query($query); $return_array = array(); if($r) { while($w = $this->db->fetchByAssoc($r)) { $return_array [] = $this->getPosition($w); } $json = getJSONobj(); return $array ? $return_array : $json->encode($return_array); } } return $array ? false : '[]'; } function deleteAssignedPositions() { if(isset($this->id) && $this->id != '') { $query = "DELETE FROM `".strtolower($this->object_name)."components` WHERE `".strtolower($this->object_name)."_id`='".$this->id."'"; $r = $this->db->query($query); if($r) return true; } return false; } //***************************End Managing Positions*************************// //start managing categories function savePositions3($pl) { global $current_user; $exists = array(); $first = true; foreach ($pl as $p) { if (!isset($p['ecmproductcategory_id']) || $p['ecmproductcategory_id']=='') continue; //first position save into main category if ($first) { $q = "UPDATE ecmproducts set product_category_id='".$p['ecmproductcategory_id']."', product_category_name='".$p['ecmproductcategory_name']."' WHERE id='".$this->id."'"; $GLOBALS['db']->query($q); $first = false; } if (isset($p['id']) && $p['id']!='') { //update exists $q = " UPDATE ecmproductcategories_bean set date_modified = '".date("Y-m-d H:i:s")."', modified_user_id = '".$current_user->id."', bean_id = '".addslashes($this->id)."', ecmproductcategory_id = '".addslashes($p['ecmproductcategory_id'])."', position = '".$p['position']."' WHERE id = '".$p['id']."' "; $GLOBALS['db']->query($q); $exists[] = $p['id']; } else { //insert new record $id = create_guid(); $t = array( $id, addslashes($p['ecmproductcategory_id']), $this->id, "EcmProducts", date("Y-m-d H:i:s"), date("Y-m-d H:i:s"), $current_user->id, $current_user->id, '0', $p['position'], ); $q = "INSERT INTO ecmproductcategories_bean VALUES ('".implode("','", $t)."')"; $GLOBALS['db']->query($q); $exists[] = $id; } } //delete old $GLOBALS['db']->query("UPDATE ecmproductcategories_bean SET deleted='1', modified_user_id='".$current_user->id."',date_modified = '".date("Y-m-d H:i:s")."' WHERE bean_id='".$this->id."' AND id NOT IN ('".implode("','",$exists)."')"); } function getPositionList3($array = false) { if(isset($this->id) && $this->id != '') { $query = "SELECT * FROM ecmproductcategories_bean WHERE bean_id='".$this->id."' AND deleted='0' AND bean_name='EcmProducts'"; $r = $this->db->query($query); $return_array = array(); if($r) { while($w = $this->db->fetchByAssoc($r)) { //get category name && assigned_file $n = $GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("SELECT name, assigned_file FROM ecmproductcategories WHERE id='".$w['ecmproductcategory_id']."'")); $w['ecmproductcategory_name'] = $n['name']; $w['assigned_file'] = $n['assigned_file']; $return_array [] = $w; } $json = getJSONobj(); return $array ? $return_array : $json->encode($return_array); } } return $array ? false : '[]'; } function showPositions3(){ $arr=$this->getPositionList3(true); global $mod_strings; if(count($arr)>0){ $table=' '; $i == 0; foreach($arr as $a){ $i++; //assigned file if ($a['assigned_file']!="" && $a['assigned_file']) { $tmp = explode(".", $a['assigned_file']); if (end($tmp) == 'jpeg' || end($tmp) == 'jpg' || end($tmp) == 'png' || end($tmp) == 'bmp') $af = ''; else $af = ''.$a['assigned_file'].''; } $table.=' '; } $table.='
'.$mod_strings['LBL_CATEGORY_NAME'].' '.$mod_strings['LBL_CATEGORY_ASSIGNED_FILE'].'
'.$a['ecmproductcategory_name'].' '.$af.'
'; } return $table; } //end managing categories //prices manage function savePrices($prices) { if (!is_array($prices)) return null; $fields = array('id','ecmprice_id','ecmproduct_id','price'); $new = array(); $db = $GLOBALS['db']; foreach ($prices as $p) { if (!isset($p['price']) || !isset($p['ecmpricebook_id']) || floatval($p['price'])==0) continue; $id = create_guid(); $new[] = $id; $tmp = array(); $tmp[] = $id; $tmp[] = $p['ecmpricebook_id']; $tmp[] = $this->id; $tmp[] = floatval($p['price']); $query = "INSERT INTO ecmprices_ecmproducts (".implode(",", $fields).") VALUES ('".implode("','", $tmp)."')"; $db->query($query); } $db->query("delete from ecmprices_ecmproducts where ecmproduct_id='".$this->id."' AND id NOT IN ('".implode("','",$new)."')"); } function getPricePosition($position) { if(!is_array($position)) return ''; global $timedate; $query="SELECT id,name FROM ecmpricebooks WHERE id='".$position['ecmpricebook_id']."'"; $r = $this->db->fetchByAssoc($this->db->query($query)); $return_array = array(); $return_array['price'] = $position['price']; $return_array['pricebook_name'] = $r['name']; $return_array['pricebook_id'] = $r['id']; //var_dump($return_array); return $return_array; } function getPricesList($array = false) { if(isset($this->id) && $this->id != '') { $query = "SELECT p.id as id, p.name as name, pp.price as price FROM ecmprices as p LEFT JOIN ecmprices_ecmproducts as pp ON pp.ecmprice_id=p.id AND pp.ecmproduct_id='".$this->id."' WHERE p.deleted='0'"; $r = $this->db->query($query); $return_array = array(); if($r) { while($w = $this->db->fetchByAssoc($r)) { $tmp = array(); $tmp['pricebook_id'] = $w['id']; $tmp['pricebook_name'] = $w['name']; $tmp['price'] = $w['price']; $return_array [] = $tmp; } $json = getJSONobj(); return $array ? $return_array : $json->encode($return_array); } } return $array ? false : '[]'; } function showPrices(){ $arr=$this->getPricesList(true); if(count($arr)>0){ $table=' '; foreach($arr as $a){ $table.=' '; } $table.='
Nazwa Wartość
'.$a['pricebook_name'].' '.format_number($a['price']).'
'; } return $table; } //end manage prices function getProductResInfo($product_id, $stock_id) { $info = array(); global $db; require_once('modules/EcmStockOperations/EcmStockOperation.php'); $op = new EcmStockOperation(); $info['stock']= $op -> getRealStock($product_id, $stock_id); //temp reserwations $rr = $db->fetchByAssoc($db->query("SELECT sum(quantity) as s FROM ecmreservations WHERE product_id='$product_id' AND doc_id IS NULL")); if (!$rr['s']) $rr['s'] = 0; $info['res']= $rr['s']; //doc reservations $res = $db->query("SELECT quantity, doc_id, doc_type FROM ecmreservations WHERE product_id='$product_id' AND doc_id IS NOT NULL"); if (!is_array($res)==0) return $info; while ($row = $db->fetchByAssoc($res)) { $tmp = array(); $type = ''; if ($row['doc_type']=='EcmSales') $type = 'ZS'; if ($row['doc_type']=='EcmInsideOrders') $type = 'ZW'; //get document name $doc = $GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("SELECT document_no, parent_name FROM ".strtolower($row['doc_type'])." WHERE id='".$row['doc_id']."'")); $tmp[] =''.$type.' '.$doc['document_no'].' - '.$row['quantity'].'  '.$doc['parent_name']; } $info['docs']=$tmp; return $info; } //add mz 2014-12-11 //android mobile functions //search product by EAN //simply try found product_id and executa function below static function mobile_getProductInfoByEAN($params) { $ean = trim($params['product_ean']); if (!$ean || $ean=="") return -2; $db = $GLOBALS['db']; $prod = $db->fetchByAssoc($db->query("SELECT id FROM ecmproducts WHERE (TRIM(ean) = '$ean' OR TRIM(ean2) = '$ean') AND deleted = '0' ORDER BY code LIMIT 0,1")); if (!$prod['id']) return -3; //product not exist else return EcmProduct::mobile_getProductInfo( array ( 'product_id' => $prod['id'] )); } //ERROR CODES // -2 - wrong paramaters // -3 - can't find object static function mobile_getProductInfo($params) { $app_list_strings = return_app_list_strings_language("pl_pl"); $product_id = $params['product_id']; if (!$product_id || $product_id=="") return -2; $db = $GLOBALS['db']; $prod = $db->fetchByAssoc($db->query("SELECT id, IFNULL(name,'-') AS name, IFNULL(code,'-') AS code, IFNULL(ean,'-') AS ean, IFNULL(ean2,'-') AS ean2, IFNULL(unit_id,'-') AS unit_id FROM ecmproducts WHERE id='$product_id'")); if (!$prod['id']) return -3; //product not exist //get stocks array $stocks = array(); $res = $db->query("SELECT IFNULL(stock_name, '-') as stock_name, quantity FROM ecmstockstates WHERE product_id = '$product_id' AND deleted = '0' AND quantity IS NOT NULL AND quantity != '0' ORDER BY stock_name;"); while ($row = $db->fetchByAssoc($res)) { //format number precision if ($prod['unit_id'] == "1") $qty = format_number(intval($row['quantity']),0,0); else $qty = format_number(intval($row['quantity']),4,2); $tmp = array(); $tmp['name'] = $row['stock_name']; $tmp['quantity'] = $qty; $stocks[] = $tmp; } if (sizeof($stocks) == 1) $s = htmlspecialchars_decode(json_encode($stocks), ENT_QUOTES); else $s = htmlspecialchars_decode(json_encode($stocks), ENT_QUOTES); $result = array ( 'code' => $prod['code'], 'name' => base64_encode($prod['name']), 'id' => $prod['id'], 'ean' => $prod['ean'], 'ean2' => $prod['ean'], 'stockStates' => base64_encode($s), 'unit' => $app_list_strings['ecmproducts_unit_dom'][$prod['unit_id']], ); return $result; } } ?>