aaaaaaa

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;

}



Report Page