aaaaaaa
public function report(Request $request)
{
$report_materials = [];
$report_products = [];
if ($items = $request['products']) {
if (is_array($items)) {
/*
* This item ['product_id','quantity']
*/
$report_products = $this->getProductsWithMaterials($items);
}
}
$report_products_with_price = $this->getProductsData($report_products, $request);
/**
* total_materials ['total_materials_info','total_semi_products_info'].
*/
$total_materials = $this->calculateTotal($report_products_with_price[0], $report_products_with_price[1]);
if (\request()->get('for_print') === true) {
/**
* $report_products_with_price[0] = [ product,qty,semi_products,product_materials].
*/
$report_products_with = $report_products_with_price[0];
return view('sale_report', compact('report_products_with', 'total_materials'));
}
return $this->response->withArray([
'result' => [
'success' => true,
'data' => [
'report_product_materials' => $report_products_with_price[0],
'additional_material' => $report_products_with_price[1],
'total_materials' => $total_materials,
],
],
]);
}
public function getProductsWithMaterials($items)
{
$report_products = [];
foreach ($items as $item) {
$product = \App\Product::where('id', $item['product_id'])->select('id', 'name', 'measurement_id')->with('measurement')->first();
if ($item['status']) {
$materials = $this->ifProductMaterialAdjusted($item);
$semi_products = $this->ifProductSemiProductAdjusted($item);
array_push($report_products, ['product' => $product, 'semi_products' => $semi_products, 'materials' => $materials, 'qty' => $item['quantity']]);
} else {
//materials
$product_materials = ProductMaterial::where('product_id', $item['product_id'])->get();
/**
* $product_materials ['product_id','material_id','quantity'].
*/
$product = \App\Product::where('id', $item['product_id'])->select('id', 'name', 'measurement_id')->with('measurement')->first();
$materials = collect();
foreach ($product_materials as $product_material) {
$materials = $this->getProductMaterials($item['quantity'], $product_material->material_id, $product_material->quantity, $materials, $check = false);
}
//semi_products
$semi_products = ProductSemiProduct::where('product_id', $item['product_id'])->get();
$semi_products_array = collect();
if ($semi_products) {
foreach ($semi_products as $semi_product) {
$semi_products_array = $this->getSemiProducts(['id'=>$semi_product->semi_product_id,'qty' => $semi_product->quantity], $semi_products_array, $item['quantity'],false);
}
}
array_push($report_products, ['product' => $product, 'semi_products' => $semi_products_array, 'materials' => $materials, 'qty' => $item['quantity']]);
}
}
return $report_products;
}