Esempio n. 1
0
	public function getListSo(Request $request)
	{
		$list_order = array();
		$id_product = session('current_product') !== null ? session('current_product') : 0;
		$type = $request->has('type')? $request->input('type'): 'all';
		$company_id = $request->has('company_id')? $request->input('company_id'): 'all';
		$month_year = $request->has('month_year')? $request->input('month_year'): 'all';
		if($type=='all' || $type=='so'){
			$list_so = Saleorder::select('saleorders.date','saleorders.id','m_products.quantity','m_products.specification','oums.name as oum_name','companies.name as company_name','m_products.id as product_id')
				->leftJoin('m_products',function($join){
					$join->on('m_products.module_id','=','saleorders.id')
						->where('module_type','=','App\Saleorder');
				})
				->leftJoin('products','m_products.product_id','=','products.id')
				->leftJoin('companies','m_products.company_id','=','companies.id')
				->leftJoin('oums','m_products.oum_id','=','oums.id')
				->where('products.id','=',$id_product)
				->where('saleorders.status','=',1)
				->orderBy('date','desc');
			if($company_id != 'all')
				$list_so = $list_so->where('companies.id','=',$company_id);
			if($month_year != 'all'){
				$month = explode('-',$month_year);
				$list_so = 	$list_so->whereRaw("MONTH(`saleorders`.`date`)=".$month[0])
									->whereRaw("Year(`saleorders`.`date`)=".$month[1]);
			}
			$list_so = $list_so->get()->toArray();

			foreach ($list_so as $key => $value) {
				$arr_tmp = array();
				$arr_tmp['company_name'] = $value['company_name'];
				$arr_tmp['oum_name'] = $value['oum_name'];
				$arr_tmp['specification'] = $value['specification'];
				$arr_tmp['quantity'] = $value['quantity'];
				$arr_tmp['id'] = $value['id'];
				$arr_tmp['date'] = $value['date'];
				$arr_tmp['type'] = 'so';
				$list_order[] = $arr_tmp;
			}
		}
		if($type=='all' || $type=='rpo'){
			$list_rpo = ReturnPurchaseorder::select('return_purchaseorders.date','return_purchaseorders.id','m_products.quantity','m_products.specification','oums.name as oum_name','companies.name as company_name','m_products.id as product_id')
				->leftJoin('m_products',function($join){
					$join->on('m_products.module_id','=','return_purchaseorders.id')
						->where('module_type','=','App\ReturnPurchaseorder');
				})
				->leftJoin('products','m_products.product_id','=','products.id')
				->leftJoin('companies','m_products.company_id','=','companies.id')
				->leftJoin('oums','m_products.oum_id','=','oums.id')
				->where('products.id','=',$id_product)
				->where('return_purchaseorders.status','=',1)
				->orderBy('date','desc');
			if($company_id != 'all')
				$list_rpo  = $list_rpo->where('companies.id','=',$company_id);
			if($month_year != 'all'){
				$month = explode('-',$month_year);
				$list_rpo = 	$list_rpo->whereRaw("MONTH(`return_purchaseorders`.`date`)=".$month[0])
									->whereRaw("Year(`return_purchaseorders`.`date`)=".$month[1]);
			}
			$list_rpo = $list_rpo->get()->toArray();

			foreach ($list_rpo as $key => $value) {
				$arr_tmp = array();
				$arr_tmp['company_name'] = $value['company_name'];
				$arr_tmp['oum_name'] = $value['oum_name'];
				$arr_tmp['specification'] = $value['specification'];
				$arr_tmp['quantity'] = $value['quantity'];
				$arr_tmp['id'] = $value['id'];
				$arr_tmp['date'] = $value['date'];
				$arr_tmp['type'] = 'rpo';
				$list_order[] = $arr_tmp;
			}
		}
		$product = Product::find($id_product)->toArray();
		return view('product.list-so',[
				'list_order'		=>	$list_order ,
				'product'	=>	$product
			]);
	}
	public function anyExportPdf(){
		$id_template = 3;
		$arr_print = 	[
				'arr_list' =>	[
						'arr_key' => 	[
								'sku',
								'name',
								'oum_name',
								'specification',
								'quantity',
								'origin_price',
								'invest'
								],
						'arr_head' => 	[
								['text'=>'Mã','class'=>''],
								['text'=>'Tên sản phẩm','class'=>''],
								['text'=>'Đơn vị','class'=>'center'],
								['text'=>'Quy cách','class'=>'center'],
								['text'=>'Số lượng','class'=>'center'],
								['text'=>'Đơn giá','class'=>'money'],
								['text'=>'Thành tiền','class'=>'money']
								],
						'arr_body'=>[],
						'arr_sum'=>[]
						],
				'arr_data'=>	[
							'id'=>session('current_returnpurchaseorder')
						]
				];	
		if (\Cache::has('list_product_rpo'.\Auth::user()->id)){
			$rpo = ReturnPurchaseorder::select('return_purchaseorders.*','companies.name')->where('return_purchaseorders.id','=',session('current_returnpurchaseorder'))
							->leftJoin('companies','companies.id','=','return_purchaseorders.company_id')->get()->first();
			$month = intval(date('m',strtotime($rpo->date)));
			$year = intval(date('Y',strtotime($rpo->date)));
			$begin = date('Y-m-d H:i:s',strtotime('1'.'-'.$month.'-'.$year));
			$end = $rpo->date;
			$list_order = array();
			$key_order = 1;
			$arr_print['arr_data']['date'] = date('d-m-Y',strtotime($rpo->date));
			$arr_print['arr_data']['company_name'] = $rpo->name;
			$arr_print['arr_data']['phone'] = $rpo->company_phone;
			$arr_print['arr_data']['address'] = '';
			$arr_dress = Address::select('addresses.*','provinces.name as province_name')
						->where('addresses.id','=',$rpo->address_id)
						->leftJoin('provinces','provinces.id','=','addresses.province_id')
						->get()->first();
			$arr_print['arr_data']['address'] .= $arr_dress->address?$arr_dress->address.', ':'';
			$arr_print['arr_data']['address'] .= $arr_dress->town_city?$arr_dress->town_city.', ':'';
			$arr_print['arr_data']['address'] .= $arr_dress->province_name?$arr_dress->province_name:'';

			$receipt_month_prev = ReceiptMonth::where('type_receipt','=','distribute')
								->where('company_id','=',$rpo->company_id)
								->where(function($query) use ($month,$year){
									$query->where(function($query2) use ($month,$year){
										$query2->where('month','<',$month)
											->where('year','=',$year);
									})->orWhere(function($query2) use ($month,$year){
										$query2->where('year','<',$year);
									});
								})
								->orderBy('year','desc')
								->orderBy('month','desc')
								->limit(1);
			$receipt_month_prev = $receipt_month_prev->first();

			if($receipt_month_prev){
				$arr_print['arr_data']['no_cu'] = $receipt_month_prev->con_lai;
			}else{
				$arr_print['arr_data']['no_cu'] = 0;
			}
			
			$list_po = Purchaseorder::where('date','>=',$begin)
					->where('date','<',$end)
					->where('status','=',1)
					->where('company_id','=',$rpo->company_id)
					->get()->toArray();
			foreach ($list_po as $key => $value) {
				$list_order[$key_order]['id'] = $value['id'];
				$list_order[$key_order]['date'] =  $value['date'];
				$list_order[$key_order]['sum_amount'] =  $value['sum_amount'];
				$key_order++;
			}
			$list_rpo = ReturnPurchaseorder::where('date','>=',$begin)
					->where('date','<',$end)
					->where('status','=',1)
					->where('company_id','=',$rpo->company_id)
					->get()->toArray();

			foreach ($list_rpo as $key => $value) {
				$list_order[$key_order]['id'] = $value['id'];
				$list_order[$key_order]['date'] =  $value['date'];
				$list_order[$key_order]['sum_amount'] =  -$value['sum_amount'];
				$key_order++;
			}

			$list_paid = Paid::where('date','>=',$begin)
						->where('date','<',$end)
						->where('company_id','=',$rpo->company_id)
						->where('type_paid','=','distribute')
						->get()->toArray();
			foreach ($list_paid as $key => $value) {
				$list_order[$key_order]['id'] = $value['id'];
				$list_order[$key_order]['date'] =  $value['date'];
				$list_order[$key_order]['sum_amount'] =  -$value['sum_paid'];
				$key_order++;
			}
			$date = array();
			foreach ($list_order as $key => $value) {
				$date[$key] = $value['date'];
			}
			array_multisort($date,SORT_ASC,$list_order);
			foreach ($list_order as $key => $value) {
				$arr_print['arr_data']['no_cu']+=$value['sum_amount'];
			}

			$arr_cache = \Cache::get('list_product_rpo'.\Auth::user()->id);
			$sum_invest = 0;
			foreach ($arr_cache as $key => $value) {
				$sum_invest += $value['invest'];
			}
			if($rpo->status==0){
				$arr_print['arr_data']['no_cu'] = 0;
			}
			$arr_print['arr_data']['toa_moi'] = $sum_invest;
			$arr_print['arr_data']['tong_cong'] = $arr_print['arr_data']['no_cu'] - $arr_print['arr_data']['toa_moi'];

			$arr_print['arr_data']['no_cu'] = number_format($arr_print['arr_data']['no_cu']);
			$arr_print['arr_data']['toa_moi'] = number_format(-$arr_print['arr_data']['toa_moi']);
			$arr_print['arr_data']['tong_cong'] = number_format($arr_print['arr_data']['tong_cong']);
			$arr_print['arr_list']['arr_sum'][] = [
				['value'=>'Tổng cộng:','colspan'=>'6'],
				['value'=>$sum_invest]
			];
			$arr_print['arr_list']['arr_body'] = $arr_cache;
			$link = ExportsController::getCreatePrintPdf($arr_print,$id_template,'phieu_tra_hang_ncc_so_'.$rpo->id,'potrait');
			Log::create_log(\Auth::user()->id,'App\ReturnPurchaseorder','In đơn hàng trả nhà cung cấp số '.session('current_returnpurchaseorder'));
			return redirect($link);
		}
		die;
	}