Пример #1
0
	public function anyListPopupRso(Request $request)
	{
		DB::enableQueryLog();
		if($request->has('input-sort')){
			$arr_sort = $request->input('input-sort');
			$arr_sort = (array)json_decode($arr_sort);
		}else{
			$arr_sort = array();
		}

		if($request->has('input-filter')){
			$arr_filter = $request->input('input-filter');
		}else{
			$arr_filter =[
						'sku' => '',
						'name' => '',
						'company_id' => '',
						'oum_id' => '',
						];
		}
		session(['sort_filter_product_rso.arr_sort' => $arr_sort]);
		session(['sort_filter_product_rso.arr_filter'=> $arr_filter]);

		$distributes = array();
		$oums = array();
		$list_sku = array();

		$distributes = Company::getDistributeList()->get()->toArray();
		$oums = Oum::orderBy('name')->get()->toArray();
		$list_all_product = Product::select('sku','name')->get()->toArray();

		$current_rso = ReturnSaleorder::find(session('current_returnsaleorder'));

		$list_product = MProduct::select('products.name',
		                                'products.sku',
		                                'm_products.id',
		                                'm_products.oum_id',
		                                'm_products.specification',
		                                'm_products.quantity',
		                                'companies.name as company_name',
		                                'm_products.module_id'
		                                )
					->with('oum')
					->leftJoin('products','products.id','=','m_products.product_id')
					->leftJoin('saleorders',function($join){
						$join->on('saleorders.id','=','m_products.module_id')
						->where('saleorders.status','=',1);
					})
					->where('m_products.module_type','=','App\\Saleorder')
					->where('saleorders.status','=',1)
					->leftJoin('companies','companies.id','=','m_products.company_id')
					->where('m_products.company_id','=',$current_rso->company_id);

		$list_product_id_so = MProduct::select('m_products.id')
					->leftJoin('saleorders',function($join){
						$join->on('saleorders.id','=','m_products.module_id')
						->where('saleorders.status','=',1);
					})
					->where('m_products.module_type','=','App\\Saleorder')
					->where('saleorders.status','=',1)
					->where('m_products.company_id','=',$current_rso->company_id)
					->lists('m_products.id');

		$list_product_rso = MProduct::select('m_products.id',
		                                'm_products.m_product_id_so',
		                                'm_products.specification',
		                                'm_products.quantity'
		                                )
					->leftJoin('return_saleorders',function($join){
						$join->on('return_saleorders.id','=','m_products.module_id')
						->where('return_saleorders.status','=',1);
					})
					->where('m_products.module_type','=','App\\ReturnSaleorder')
					->where('return_saleorders.status','=',1)
					->whereIn('m_product_id_so',$list_product_id_so)
					->where('m_products.company_id','=',$current_rso->company_id)->get();
		if(count($arr_sort)==0){
			$list_product = $list_product->orderBy('products.id','asc');
		}

			foreach ($arr_filter as $key => $value) {
				if($value!=''){
					if($arr_filter['sku']!=''){
						$list_product->where('products.sku',$arr_filter['sku']);
					}elseif($arr_filter['name']!=''){
						$list_product->where('products.name',$arr_filter['name']);
					}elseif($key == 'company_id'){
						$list_product->where('m_products.company_id',$arr_filter['company_id']);
					}elseif($key == 'oum_id'){
						$list_product->where('products.oum_id',$arr_filter['oum_id']);
					}else{
						$list_product->where($key,$value);
					}

				}
			}
		$list_product = $list_product->paginate(20);
		foreach ($list_product as $key => $value) {
			$list_product[$key]->so_le = 0;
			foreach ($list_product_rso as $key1 => $value1) {
				if($value1->m_product_id_so==$value->id){
					$so_luong_con = ($list_product[$key]->quantity * $list_product[$key]->specification) + $list_product[$key]->so_le - ($value1->quantity * $value1->specification);
					$list_product[$key]->quantity = floor($so_luong_con/$list_product[$key]->specification);
					$list_product[$key]->so_le = $so_luong_con%$list_product[$key]->specification;
				}
			}
		}
		// pr($list_product->toArray());
		// die;
		// echo $current_rso->company_id;
		// print_r(DB::getQueryLog());
		// pr($list_product->toArray());die;
		return view('popup.choose_product_rso', [
								'distributes'		=> $distributes,
								'oums'			=> $oums,
								'list_product'		=> $list_product,
								'list_all_product'		=> $list_all_product,
								'arr_sort' 		=> $arr_sort,
								'arr_filter' 		=> $arr_filter
							        ]);
	}
	public function postDeleteProduct(Request $request){
		$arr_return= array('status'=>'error');
		$id = $request->has('id')?$request->input('id'):0;
		if($id){
			$mproduct = MProduct::find($id);
			$id_product = $mproduct->m_product_id;
			$quantity = $mproduct->quantity;
			$specification = $mproduct->specification;
			$check  = MProduct::where('id','=',$id)->delete();
			if($check){
				// $product = ProductStock::find($id_product);
				// $product->in_stock = $product->in_stock - $quantity*$specification;
				// $product->save();
				$product = Product::find($mproduct->product_id);
				Log::create_log(\Auth::user()->id,'App\ReturnSaleorder','Xóa sản phẩm '.$product->sku.' đơn hàng đại lý trả số '.session('current_returnsaleorder'));
				$arr_return['status'] = 'success';
			}else{
				$arr_return['message'] = 'Saving fail !';
			}
		}
		$returnsaleorder = ReturnSaleorder::find(session('current_returnsaleorder'));
		$returnsaleorder->updated_by = \Auth::user()->id;
		$returnsaleorder->save();
		self::getListProduct();
		return $arr_return;
	}