public function postUpdate(Request $request) { $arr_return = array( 'status' => 'error', 'message'=>'' ); $time =date('H:i:s', time()); $id_return_saleorder = session('current_returnsaleorder') !== null ? session('current_returnsaleorder') : 0; if($id_return_saleorder){ $returnsaleorder = ReturnSaleorder::find($id_return_saleorder); session(['current_returnsaleorder' => $returnsaleorder['id']]); $time = date('H:i:s', strtotime($returnsaleorder->date)); }else{ $returnsaleorder = new ReturnSaleorder; $returnsaleorder->date = date("Y-m-d H:i:s"); $returnsaleorder->created_by = \Auth::user()->id; $returnsaleorder->save(); Log::create_log(\Auth::user()->id,'App\ReturnSaleorder','Tạo mới đơn hàng đại lý trả số '.$returnsaleorder->id); session(['current_returnsaleorder' => $returnsaleorder->id]); } $log = ''; $old_company_id = $returnsaleorder->company_id; if($returnsaleorder->status == 0){ $address = Address::where('module_id','=',$returnsaleorder->id) ->where('module_type','=','App\ReturnSaleorder')->first(); if(!$address){ $address = new Address; } if($request->has('company_id') && $returnsaleorder->company_id != $request->input('company_id')){ $old = Company::find($returnsaleorder->company_id); if(!$old){ $old = (object) ['name'=>'']; } $new = Company::find($request->input('company_id')); $log .= 'công ty từ "'.$old->name.'" thành "'.$new->name.'" '; } if($returnsaleorder->company_id == $request->input('company_id')){ if($request->has('user_id') && $returnsaleorder->user_id != $request->input('user_id')){ $old = User::find($returnsaleorder->user_id); if(!$old){ $old = (object) ['name'=>'']; } $new = User::find($request->input('user_id')); $log .= 'người liên hệ từ "'.$old->name.'" thành "'.$new->name.'" '; } $old_date=date("Y-m-d",strtotime($returnsaleorder->date)); $new_date = date("Y-m-d",strtotime($request->input('date'))); if($request->has('date') && $old_date != $new_date){ $log .= 'ngày từ "'.$old_date.'" thành "'.$new_date.'" '; } if($request->has('company_phone') && $returnsaleorder->company_phone != $request->input('company_phone')){ $log .= 'số điện thoại từ "'.$returnsaleorder->company_phone.'" thành "'.$request->input('company_phone').'" '; } if($request->has('company_email') && $returnsaleorder->company_email != $request->input('company_email')){ $log .= 'email từ "'.$returnsaleorder->company_email.'" thành "'.$request->input('company_email').'" '; } if($request->has('address') && $address->address != $request->input('address')){ $log .= 'địa chỉ từ "'.$address->address.'" thành "'.$request->input('address').'" '; } if($request->has('town_city') && $address->town_city != $request->input('town_city')){ $log .= 'quận huyện từ "'.$address->town_city.'" thành "'.$request->input('town_city').'" '; } if($request->has('province_id') && $address->province_id != $request->input('province_id')){ $old = Province::find($address->province_id); $new = Province::find($request->input('province_id')); if(!$old){ $old = (object) ['name'=>'']; } $log .= 'tỉnh thành từ "'.$old->name.'" thành "'.$new->name.'" '; } if($request->has('country_id') && $address->country_id != $request->input('country_id')){ $old = Country::find($address->country_id); $new = Country::find($request->input('country_id')); if(!$old){ $old = (object) ['name'=>'']; } $log .= 'quốc gia từ "'.$old->name.'" thành "'.$new->name.'" '; } } $returnsaleorder->company_id = $request->has('company_id') ? $request->input('company_id') : 0; $returnsaleorder->user_id = $request->has('user_id') ? $request->input('user_id') : 0; $returnsaleorder->date = $request->has('date') ? date("Y-m-d H:i:s",strtotime($request->input('date').' '.$time)) : date("Y-m-d H:i:s"); $returnsaleorder->company_phone = $request->has('company_phone') ? $request->input('company_phone') : ''; $returnsaleorder->company_email = $request->has('company_email') ? $request->input('company_email') : ''; $address_id = isset($returnsaleorder->address_id) ? $returnsaleorder->address_id : 0; $address->module_id = $returnsaleorder->id; $address->module_type = 'App\\ReturnSaleorder'; $address->address = $request->has('address') ? $request->input('address') : ''; $address->town_city = $request->has('town_city') ? $request->input('town_city') : ''; $address->zip_postcode = $request->has('zip_postcode') ? $request->input('zip_postcode') : ''; $address->country_id = $request->has('country_id') ? $request->input('country_id') : 0; $address->province_id = $request->has('province_id') ? $request->input('province_id') : 0; $address->save(); $returnsaleorder->address_id = $address->id; }else{ $returnsaleorder->sum_amount = 0; $returnsaleorder->sum_invest = 0; } $old_status = $returnsaleorder->status; if($returnsaleorder->status != $request->has('status')){ $log .= 'trạng thái từ "'.($returnsaleorder->status?'Hoàn thành':'Mới').'" thành "'.($request->has('status')?'Hoàn thành':'Mới').'" '; } $returnsaleorder->status = $request->has('status')?1:0; $check_save_in_stock = true; if($returnsaleorder->status){ $arr_mproduct = Mproduct::select('m_products.id','quantity','specification','name','m_product_id','amount','invest') ->where('module_id', '=', $returnsaleorder->id) ->where('module_type', '=', 'App\ReturnSaleorder') ->leftJoin('products','products.id','=','m_products.product_id') ->get()->toArray(); foreach ($arr_mproduct as $key => $mproduct) { $returnsaleorder->sum_amount = $returnsaleorder->sum_amount + $mproduct['amount']; $returnsaleorder->sum_invest = $returnsaleorder->sum_invest + $mproduct['invest']; // $mproduct_po = Mproduct::find(); $product_stock = ProductStock::where('m_product_id','=',$mproduct['m_product_id'])->first(); $product_stock->in_stock = $product_stock->in_stock + ($mproduct['quantity']*$mproduct['specification']); if($product_stock->in_stock < 0){ $check_save_in_stock = false; $arr_return['message'] .= 'Số lượng sản phẩm '.$mproduct['name'].' trả về lớn hơn số lượng đã mua<br/><br/>'; } } }else{ if($old_status != $returnsaleorder->status){ $arr_mproduct = Mproduct::select('m_products.id','quantity','specification','name','m_product_id') ->where('module_id', '=', $returnsaleorder->id) ->where('module_type', '=', 'App\ReturnSaleorder') ->leftJoin('products','products.id','=','m_products.product_id') ->get()->toArray(); foreach ($arr_mproduct as $key => $mproduct) { // $mproduct_po = Mproduct::find($mproduct['m_product_id']); $product_stock = ProductStock::where('m_product_id','=',$mproduct['m_product_id'])->first(); $product_stock->in_stock = $product_stock->in_stock - ($mproduct['quantity']*$mproduct['specification']); $product_stock->save(); } } } if($check_save_in_stock){ $returnsaleorder->updated_by = \Auth::user()->id; if($returnsaleorder->save()){ Log::create_log(\Auth::user()->id,'App\ReturnSaleorder','Cập nhật '.$log.' đơn hàng đại lý trả số '.$returnsaleorder->id); if($returnsaleorder->status){ foreach ($arr_mproduct as $key => $mproduct) { //$mproduct_po = Mproduct::find($mproduct['m_product_id']); $product_stock = ProductStock::where('m_product_id','=',$mproduct['m_product_id'])->first(); $product_stock->in_stock = $product_stock->in_stock + ($mproduct['quantity']*$mproduct['specification']); $product_stock->save(); } } if($old_company_id != $returnsaleorder->company_id){ Mproduct::where('module_id', '=', $returnsaleorder->id) ->where('module_type', '=', 'App\ReturnSaleorder') ->where('company_id','=',$old_company_id) ->delete(); }else{ Mproduct::where('module_id', '=', $returnsaleorder->id) ->where('module_type', '=', 'App\ReturnSaleorder') ->update(['company_id' => $returnsaleorder->company_id ]); } $arr_return['status']= 'success'; }else{ $arr_return['message']= 'Saving fail !'; } } return $arr_return; }