Files
crm.e5.pl/modules/EcmSales/ComponentsList.php
2024-04-27 09:23:34 +02:00

164 lines
6.8 KiB
PHP

<?php
if(isset($_REQUEST['ids'])){
$db=$GLOBALS['db'];
global $app_list_strings;
$ids= explode(',', $_REQUEST['ids']);
$query='select i.ecmproduct_id,i.name,i.code,i.quantity,d.document_no from ecmsaleitems i
inner join ecmsales d on d.id=i.ecmsale_id
where i.ecmsale_id in ("'.implode('","',$ids) .'") and i.deleted=0';
$res = $db->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
}
?>