query($query); $orders=[]; $products=[]; $orderNo=''; $orderNr=[]; while($dane = $db->fetchByAssoc($res)){ $tmp = []; $tmp['ecmproduct_id']=$dane['ecmproduct_id']; $tmp['quantity']=(float)$dane['quantity']; $tmp['name']=$dane['name']; $tmp['code']=$dane['code']; $orders[$dane['ecmsale_id']][]=$tmp; $products[]=$dane['ecmproduct_id']; if($orderNr[$dane['document_no']]==""){ $orderNr[$dane['document_no']]=1; $orderNo.=' '.$dane['document_no']; } } $products=array_unique($products); $query="SELECT c.ecmproduct_id,c.ecmcomponent_id,c.code,c.name,c.quantity,p.product_category_name,p.group_ks,p.unit_id FROM ecmproductcomponents c inner join ecmproducts p on p.id=c.ecmcomponent_id where c.ecmproduct_id in ('".implode("','",$products)."') and c.deleted=0"; $res = $db->query($query); $lists = return_app_list_strings_language('pl_pl'); $components=[]; $products_has_components=[]; while($dane = $db->fetchByAssoc($res)){ $products_has_components[$dane['ecmproduct_id']][]=$dane; } $total_components=0; $total_in_stock=0; $components_list=[]; foreach ($orders as $order){ foreach ($order as $product){ if(isset($products_has_components[$product['ecmproduct_id']])){ foreach ($products_has_components[$product['ecmproduct_id']] as $component){ if($component['group_ks']=='4')continue; if($component['product_category_name']=='Usługi')continue; if($components_list[$component['ecmcomponent_id']]){ $components_list[$component['ecmcomponent_id']]['quantity']=bcadd(bcmul($component['quantity'],$product['quantity'],2),$components_list[$component['ecmcomponent_id']]['quantity'],2); $total_components=bcadd(bcmul($component['quantity'],$product['quantity'],6),$total_components,2); } else { $components_list[$component['ecmcomponent_id']]['quantity']=bcmul ($component['quantity'],$product['quantity'],2); $components_list[$component['ecmcomponent_id']]['code']=$component['code']; $components_list[$component['ecmcomponent_id']]['name']=$component['name']; $components_list[$component['ecmcomponent_id']]['product_category_name']=$component['product_category_name']; $components_list[$component['ecmcomponent_id']]['group_ks_name']=$app_list_strings['ecmproducts_group_ks_dom'][$component['group_ks']]; $components_list[$component['ecmcomponent_id']]['unit_name'] = $lists['ecmproducts_unit_dom'][$component['unit_id']]; $ecmStockOperations = new EcmStockOperation(); $stock=round($ecmStockOperations->getRealStock($component['ecmcomponent_id']),2); $total_components=bcadd($components_list[$component['ecmcomponent_id']]['quantity'],$total_components,2); $total_in_stock=bcadd($stock,$total_in_stock,2); $components_list[$component['ecmcomponent_id']]['stock']=$stock; } } } } } foreach ($products as $key=> $product){ foreach ($products_has_components as $key2=> $product2){ if($product==$key2){ unset($products[$key]); } } } $query="select p.id,p.code,p.name,p.product_category_name,p.group_ks,i.quantity,p.unit_id from ecmsaleitems i inner join ecmproducts p on p.id = i.ecmproduct_id where i.ecmsale_id in ('".implode("','",$ids) ."') and i.deleted=0 and i.ecmproduct_id in ('".implode("','",$products)."')"; $total=0; $total_in_stock2=0; $res = $db->query($query); $products=[]; while($dane = $db->fetchByAssoc($res)){ if($dane['group_ks']=='4')continue; if($dane['product_category_name']=='Usługi')continue; $products[$dane['id']]['code']=$dane['code']; $products[$dane['id']]['name']=$dane['name']; $products[$dane['id']]['quantity']=$products[$dane['id']]['quantity']+$dane['quantity']; $products[$dane['id']]['product_category_name']=$dane['product_category_name']; $products[$dane['id']]['group_ks_name']=$app_list_strings['ecmproducts_group_ks_dom'][$dane['group_ks']]; $products[$dane['id']]['unit_name']= $lists['ecmproducts_unit_dom'][$component['unit_id']]; $ecmStockOperations = new EcmStockOperation(); $stock=$ecmStockOperations->getRealStock($dane['id']); $total=bcadd($dane['quantity'],$total,2); $total_in_stock2=bcadd($stock,$total_in_stock2,2); $products[$dane['id']]['stock']=$stock; } $query="select p.id,p.code,p.name,p.product_category_name,p.group_ks,i.quantity,p.pieces_per_carton,p.boxes_per_palette,p.packing_dimensions_1 as a1,p.packing_dimensions_2 as a2,p.packing_dimensions_3 as a3 from ecmsaleitems i inner join ecmproducts p on p.id = i.ecmproduct_id where i.ecmsale_id in ('".implode("','",$ids) ."') and i.deleted=0 "; $res = $db->query($query); $packing=[]; while($dane = $db->fetchByAssoc($res)){ if($dane['group_ks']=='4')continue; if($dane['product_category_name']=='Usługi')continue; $packing[$dane['a1'].'x'.$dane['a2'].'x'.$dane['a3']]['name']=$dane['a1'].'x'.$dane['a2'].'x'.$dane['a3']; $packing[$dane['a1'].'x'.$dane['a2'].'x'.$dane['a3']]['box']=$packing[$dane['a1'].'x'.$dane['a2'].'x'.$dane['a3']]['box']+ceil($dane['quantity']/$dane['pieces_per_carton']); $packing[$dane['a1'].'x'.$dane['a2'].'x'.$dane['a3']]['palet']=$packing[$dane['a1'].'x'.$dane['a2'].'x'.$dane['a3']]['palet']+ ceil(($dane['quantity']/$dane['pieces_per_carton'])/$dane['boxes_per_palette']); $packing[$dane['a1'].'x'.$dane['a2'].'x'.$dane['a3']]['product_category_name']=$dane['product_category_name']; $packing[$dane['a1'].'x'.$dane['a2'].'x'.$dane['a3']]['group_ks_name']=$app_list_strings['ecmproducts_group_ks_dom'][$dane['group_ks']]; $total_box=bcadd($packing[$dane['a1'].'x'.$dane['a2'].'x'.$dane['a3']]['box'],$total_box,2); $total_palet=bcadd($packing[$dane['a1'].'x'.$dane['a2'].'x'.$dane['a3']]['palet'],$total_palet,2); } $ss = new Sugar_Smarty (); global $mod_strings; $ss->assign ( "total_box", ceil($total_box)); $ss->assign ( "total_total", $total_total); $ss->assign ( "total_palet", ceil($total_palet)); $ss->assign ( "packing", $packing); $ss->assign ( "orderNo", $orderNo); $ss->assign ( "total_components", $total_components); $ss->assign ( "total_in_stock", $total_in_stock); $ss->assign ( "total", $total); $ss->assign ( "total_in_stock2", $total_in_stock2); $ss->assign ( "products", $products ); $ss->assign ( "components_list", $components_list); $ss->assign ( 'MOD', $mod_strings); $ss-> display('modules/EcmSales/tpls/ComponentsList.html'); //4 } ?>