/
home
/
sjslayjy
/
public_html
/
tabson
/
app
/
Http
/
Controllers
/
Upload File
HOME
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use DB; use \App\SupplierQuotation; use \App\SupplierQuotationDetail; use \App\SupplierQuotationEditLog; use \App\SupplierQuotationItemDetail; use \App\PurchaseRequest; class SupplierQuotationController extends Controller { public function supplierQuotation() { $data = array(); $all_pr = DB::table('purchase_requests')->join('purchase_request_items as pri', 'pri.pr_id', 'purchase_requests.id')->select('purchase_requests.id', 'pr_number', DB::raw('sum(qty) as qty'), DB::raw('sum(rqty) as rqty'))->where('purchase_requests.status', 'approved')->where('purchase_requests.current_status','!=','completed')->groupBy('pri.pr_id')->get(); $data['all_pr'] = array(); $prArr = array(); if(!$all_pr->isEmpty()) { foreach ($all_pr as $key => $value) { if($value->qty == $value->rqty) { $arr['id'] = $value->id; $arr['pr_number'] = $value->pr_number; array_push($prArr, $arr); } } } $data['all_pr'] = $prArr; $data['vendors'] = DB::table('vendors')->select('vendor_name', 'vendor_code')->where('is_active', 1)->get(); $data['delivery_terms'] = DB::table('delivery_terms')->select('name', 'id')->get(); $data['payment_terms'] = DB::table('payment_terms')->select('name', 'id')->get(); return view('dashboard.supplier-quotation.add-supplier-quotation', $data); } public function getPRDetails($pr_id) { $response = array(); $pr_details = DB::table('purchase_requests as pr')->join('department', 'department.id', 'pr.department')->join('users', 'users.id', 'pr.prepared_by')->join('customers', 'customers.id', 'pr.customer')->join('business_units', 'business_units.id', 'pr.business_unit')->join('circles', 'pr.circle', 'circles.id')->select( 'department.name as department_name', 'pr.pr_date', 'pr.project', 'pr.status', 'pr.site', 'users.name as preparer_name', 'customers.name as customer_name', 'business_units.name as business_u_name', 'circles.name as circle_name')->where('pr.id', 'LIKE', $pr_id)->first(); $pr_item_details = DB::table('purchase_request_items as pri')->join('items', 'items.code', 'pri.item_code')->join('units', 'units.id', 'items.uom')->select( 'units.name as uom', 'pri.item_code', 'pri.qty','pri.rqty', 'pri.specification', 'pri.make', 'items.description')->where('pr_id', $pr_id)->get(); if(!is_null($pr_details) && !$pr_item_details->isEmpty()) { $response['flag'] = true; $response['pr_details'] = $pr_details; $response['pr_item_details'] = $pr_item_details; } else { $response['flag'] = false; $response['msg'] = 'No Details Found.'; } return response()->json($response); } public function getVendorDetails($vendor_code) { $response = array(); $vendor_details = DB::table('vendors')->select('vendor_name', 'vendor_code', 'address')->where('is_active', 1)->where('vendor_code', $vendor_code)->first(); if(!is_null($vendor_details)) { $response['flag'] = true; $response['vendor_details'] = $vendor_details; } else { $response['flag'] = true; $response['msg'] = 'No Details Found.'; } return response()->json($response); } public function getSupplierDetails($sqd_id) { $data = array(); $data['sqd_data'] = SupplierQuotationDetail::select('supplier_quotation_details.id', 'supplier_quotation_details.vendor_name','supplier_quotation_details.quotation_number', 'supplier_quotations.pr_number')->join('supplier_quotations', 'supplier_quotations.id', 'supplier_quotation_details.vendor_quotation_id')->where('supplier_quotation_details.id', $sqd_id)->first(); $data['sqd_id'] = $sqd_id; return view('dashboard.supplier-quotation.supplier-quot-status', $data); } public function updateSupplierStatus(Request $request) { $response = array(); $validator = \Validator::make($request->all(), array( 'sqd_id' => 'required', ) ); if($validator->fails()) { $response['flag'] = false; $response['error'] = $validator->getMessageBag(); }else{ $data = SupplierQuotationDetail::where('id', $request->sqd_id)->first(); if($request->status == 'accepted') { $data->quotation_status = $request->status; $data->po_status = 'requested'; } elseif($request->status == 'rejected') { $data->quotation_status = $request->status; $data->po_status = 'rejected'; } if($data->save()) { if($request->status == 'rejected') { $vendor_item = SupplierQuotationItemDetail::where('vendor_quotation_detail_id', $request->sqd_id)->update(['rem_qty'=>0]); } $response['flag'] = true; $response['msg'] = 'Status Updated Successfully !!'; }else{ $response['flag'] = false; $response['error'] = "Something Went Wrong"; } } return response()->json($response); } public function allSupplierQuotation() { $data = array(); $data['all_quotations'] = SupplierQuotation::select('supplier_quotations.id', 'sqd.id as sqd_id', 'supplier_quotations.pr_number', 'sqd.quotation_number', 'sqd.quotation_status', 'sqd.po_status', 'supplier_quotations.quotation_date', 'sqd.vendor_name')->join('supplier_quotation_details as sqd', 'sqd.vendor_quotation_id', 'supplier_quotations.id')->get(); return view('dashboard.supplier-quotation.all-supplier-quotation', $data); } public function addSupplierQuotationData(Request $request) { // dd($request->all()); $response = array(); $validator = \Validator::make($request->all(), array( 'pr_id' => 'required', 'item_code' => 'required' )); if($validator->fails()) { $response['flag'] = false; $response['errors'] = $validator->getMessageBag(); } else { try{ DB::beginTransaction(); $supplier_quot = new SupplierQuotation(); // $supplier_quotation->session = ; // $sqArr = $this->generateQuotationNumber(); // logger($sqArr); $supplier_quot->quotation_number = 'STATIC/SQ/2324/1'; $supplier_quot->series = 1; $supplier_quot->session = 2324; $supplier_quot->pr_id = $request->pr_id; $supplier_quot->pr_number = getModelById('PurchaseRequest', $request->pr_id)->pr_number; $supplier_quot->quotation_date = date('Y-m-d H:i:s'); $supplier_quot->pr_date = $request->pr_date; $supplier_quot->pr_status = $request->pr_status; $supplier_quot->pr_department = $request->department; $supplier_quot->pr_customer = $request->customer; $supplier_quot->pr_circle = $request->circle; $supplier_quot->pr_site = $request->site; $supplier_quot->pr_business_unit = $request->business_unit; $supplier_quot->pr_project = $request->project; $supplier_quot->pr_preparer_name = $request->preparer_name; $supplier_quot->quotation_created_by = \Auth::user()->id; if($supplier_quot->save()) { foreach($request->vendor_name as $key=>$value) { $sqArr = $this->generateQuotationNumber(); $supplier_quot_detail = new SupplierQuotationDetail(); $supplier_quot_detail->quotation_number = $sqArr['sq_number']; $supplier_quot_detail->session = $sqArr['session']; $supplier_quot_detail->series = $sqArr['series']; $supplier_quot_detail->quotation_status = 'requested'; $supplier_quot_detail->vendor_quotation_id = $supplier_quot->id; $supplier_quot_detail->vendor_code = $request->vendor_code[$key]; $supplier_quot_detail->vendor_name = $request->vendor_name[$key]; $supplier_quot_detail->vendor_address = $request->vendor_address[$key]; $supplier_quot_detail->vendor_state = $request->vendor_state[$key]; $supplier_quot_detail->vendor_type = $request->vendor_type[$key]; $supplier_quot_detail->delivery_term_id = $request->delivery_term[$key]; $supplier_quot_detail->payment_term_id = $request->payment_term[$key]; $supplier_quot_detail->warranty_term = $request->warranty_term[$key]; $supplier_quot_detail->special_term = $request->special_term[$key]; $supplier_quot_detail->freight_amount = $request->freight_amount[$key]; $supplier_quot_detail->total_basic_amount = $request->total_basic_amount[$key]; $supplier_quot_detail->gst_amount = $request->gst_amount[$key]; $supplier_quot_detail->total_amount = $request->total_amount[$key]; if($supplier_quot_detail->save()) { foreach ($request->item_code[$key] as $key1 => $value1) { $supplier_quot_item_detail = new SupplierQuotationItemDetail(); $supplier_quot_item_detail->vendor_quotation_id = $supplier_quot->id; $supplier_quot_item_detail->vendor_quotation_detail_id = $supplier_quot_detail->id; $supplier_quot_item_detail->item_code = $value1; $supplier_quot_item_detail->description = $request->description[$key][$key1]; $supplier_quot_item_detail->specification = $request->specification[$key][$key1]; $supplier_quot_item_detail->uom = $request->uom[$key][$key1]; $supplier_quot_item_detail->make = $request->make[$key][$key1]; $supplier_quot_item_detail->qty = $request->qty[$key][$key1]; $supplier_quot_item_detail->rem_qty = $request->qty[$key][$key1]; $supplier_quot_item_detail->quoted_rate = $request->quoted_rate[$key][$key1]; $supplier_quot_item_detail->item_amount = $request->item_amount[$key][$key1]; $supplier_quot_item_detail->gst_percentage = $request->gst_percent[$key][$key1]; $supplier_quot_item_detail->save(); } } } } $response['flag'] = true; $response['quotation_number'] = $sqArr['sq_number']; $response['msg'] = 'Supplier Quotations Added Successfully.'; DB::commit(); } catch(\Exception $e) { DB::rollback(); $response['flag'] = false; $response['msg'] = $e->getMessage(); } } return response()->json($response); } public function generateQuotationNumber() { if(date('m')>=4){ $session=date('y').(date('y')+1); }else{ $session=(date('y')-1).date('y'); } $latest_series = SupplierQuotationDetail::where('session', $session)->orderBy('id', 'desc')->first(); if(!is_null($latest_series)) { $series = $latest_series->series + 1; } else { $series = 1; } switch (strlen((string)$series)) { case 1: $series = '000'.$series; break; case 2: $series = '00'.$series; break; case 3: $series = '0'.$series; break; default: $series = $series; } $sq_number = 'ATS/SQ/'.$session.'/'.$series; return ['sq_number'=>$sq_number, 'series'=>$series, 'session'=>$session]; } public function getcompareQuotation() { $all_pr_numbers = SupplierQuotation::select('id','pr_id', 'pr_number')->groupBy('pr_id')->get(); return view('dashboard.supplier-quotation.compare-quotation', ['all_pr_numbers'=>$all_pr_numbers]); } public function viewQuotation($quotation_id) { $data['supplier_quotations'] = SupplierQuotation::select('supplier_quotations.*')->where('supplier_quotations.id', $quotation_id)->get(); $data['supplier_quotation_details'] = SupplierQuotationDetail::select('supplier_quotation_details.*', 'delivery_terms.name as delivery_term', 'payment_terms.name as payment_term')->leftjoin('delivery_terms', 'delivery_terms.id', 'supplier_quotation_details.delivery_term_id')->leftjoin('payment_terms', 'payment_terms.id', 'supplier_quotation_details.payment_term_id')->where('supplier_quotation_details.vendor_quotation_id', $quotation_id)->get(); $data['supplier_quotation_item_details'] = SupplierQuotationItemDetail::select('supplier_quotation_item_details.*')->where('supplier_quotation_item_details.vendor_quotation_id', $quotation_id)->get(); return view('dashboard.supplier-quotation.view-quotation', $data); } public function getComparisonPage($pr_id) { $data = array(); $supplier_data = DB::table('supplier_quotations')->select('id', 'pr_id', 'pr_number', 'pr_date', 'pr_preparer_name')->where('pr_id', $pr_id)->first(); $data['supplier_data'] = $supplier_data; $data['pr_details'] = DB::table('purchase_requests as pr')->join('purchase_request_items as pri', 'pri.pr_id', 'pr.id')->join('items', 'items.code', 'pri.item_code')->select('pr.id', 'pr.pr_number', 'pri.item_code', 'pri.specification', 'pri.qty', 'items.description', 'items.uom')->where('pri.pr_id', $pr_id)->get(); $vendor_details = DB::table('supplier_quotation_details')->select('id', 'vendor_code', 'vendor_name', 'freight_amount', 'total_basic_amount', 'gst_amount', 'total_amount', 'delivery_term_id', 'payment_term_id', 'warranty_term', 'special_term')->where('vendor_quotation_id', $supplier_data->id)->get(); $data['vendor_quot_count'] = $vendor_details; $finalArr = array(); foreach($vendor_details as $key=>$vendor) { $finalArr['freight_amount'][$key] = $vendor->freight_amount; $finalArr['total_basic_amount'][$key] = $vendor->total_basic_amount; $finalArr['gst_amount'][$key] = $vendor->gst_amount; $finalArr['total_amount'][$key] = $vendor->total_amount; $finalArr['delivery_term_id'][$key] = $vendor->delivery_term_id; $finalArr['payment_term_id'][$key] = $vendor->payment_term_id; $finalArr['warranty_term'][$key] = $vendor->warranty_term; $finalArr['special_term'][$key] = $vendor->special_term; } $data['vendor_details'] = $finalArr; // $supplier_data->id foreach ($vendor_details as $key1 => $value1) { $vendor_quot_details = DB::table('supplier_quotation_item_details as sqid')->select('sqid.make', 'sqid.quoted_rate', 'sqid.item_amount', 'sqid.gst_percentage')->where('sqid.vendor_quotation_detail_id', $value1->id)->get(); foreach ($vendor_quot_details as $key3 => $value3) { $finalArr1[$key3]['make'][$key1] = $value3->make; $finalArr1[$key3]['quoted_rate'][$key1] = $value3->quoted_rate; $finalArr1[$key3]['item_amount'][$key1] = $value3->item_amount; $finalArr1[$key3]['gst_percentage'][$key1] = $value3->gst_percentage; } } // dd($finalArr1); $data['vendor_quot_details'] = $finalArr1; // print_r($finalArr1); // dd($finalArr1); // // dd('stop'); // dd($data['pr_details']); // dd($finalArr1); return view('dashboard.supplier-quotation.compare-quotation-page', $data); } public function updateSupplierQuotation(Request $request) { // dd($request->vendor_quotation_id); // dd($request->all()); $response = array(); $validator = \Validator::make($request->all(), array( 'pr_id' => 'required', 'item_code' => 'required' )); if($validator->fails()) { $response['flag'] = false; $response['errors'] = $validator->getMessageBag(); } else { try{ DB::beginTransaction(); $supplier_quot = SupplierQuotation::where('id', $request->squpplier_quot_id)->first(); if(!is_null($supplier_quot)) { $supplier_quot_detail1 = SupplierQuotationDetail::where('vendor_quotation_id', $supplier_quot->id)->get()->toArray(); $supplier_quot_data = json_encode($supplier_quot_detail1); $supplier_quot_item_detail1 = SupplierQuotationItemDetail::where('vendor_quotation_id', $supplier_quot->id)->get()->toArray(); $supplier_quot_item_data = json_encode($supplier_quot_item_detail1); $supplier_edit_log = new SupplierQuotationEditLog(); $supplier_edit_log->vendor_quotation_id = $supplier_quot->id; $supplier_edit_log->supplier_quot_details = $supplier_quot_data; $supplier_edit_log->supplier_quot_item_details = $supplier_quot_item_data; $supplier_edit_log->save(); SupplierQuotationDetail::where('vendor_quotation_id', $supplier_quot->id)->whereNotIn('id', array_values($request->vendor_quotation_id))->delete(); SupplierQuotationItemDetail::where('vendor_quotation_id', $supplier_quot->id)->delete(); foreach($request->vendor_name as $key=>$value) { if(array_key_exists($key, $request->vendor_quotation_id)) { $supplier_quot_detail = SupplierQuotationDetail::where('quotation_number', $request->quotation_number[$key])->first(); } else { $supplier_quot_detail = new SupplierQuotationDetail(); $sqArr = $this->generateQuotationNumber(); $supplier_quot_detail->quotation_number = $sqArr['sq_number']; $supplier_quot_detail->session = $sqArr['session']; $supplier_quot_detail->series = $sqArr['series']; } $supplier_quot_detail->quotation_status = 'requested'; $supplier_quot_detail->vendor_quotation_id = $supplier_quot->id; $supplier_quot_detail->vendor_code = $request->vendor_code[$key]; $supplier_quot_detail->vendor_name = $request->vendor_name[$key]; $supplier_quot_detail->vendor_address = $request->vendor_address[$key]; $supplier_quot_detail->vendor_state = $request->vendor_state[$key]; $supplier_quot_detail->vendor_type = $request->vendor_type[$key]; $supplier_quot_detail->delivery_term_id = $request->delivery_term[$key]; $supplier_quot_detail->payment_term_id = $request->payment_term[$key]; $supplier_quot_detail->warranty_term = $request->warranty_term[$key]; $supplier_quot_detail->special_term = $request->special_term[$key]; $supplier_quot_detail->freight_amount = $request->freight_amount[$key]; $supplier_quot_detail->total_basic_amount = $request->total_basic_amount[$key]; $supplier_quot_detail->gst_amount = $request->gst_amount[$key]; $supplier_quot_detail->total_amount = $request->total_amount[$key]; if($supplier_quot_detail->save()) { foreach ($request->item_code[$key] as $key1 => $value1) { $supplier_quot_item_detail = new SupplierQuotationItemDetail(); $supplier_quot_item_detail->vendor_quotation_id = $supplier_quot->id; $supplier_quot_item_detail->vendor_quotation_detail_id = $supplier_quot_detail->id; $supplier_quot_item_detail->item_code = $value1; $supplier_quot_item_detail->description = $request->description[$key][$key1]; $supplier_quot_item_detail->specification = $request->specification[$key][$key1]; $supplier_quot_item_detail->uom = $request->uom[$key][$key1]; $supplier_quot_item_detail->make = $request->make[$key][$key1]; $supplier_quot_item_detail->qty = $request->qty[$key][$key1]; $supplier_quot_item_detail->quoted_rate = $request->quoted_rate[$key][$key1]; $supplier_quot_item_detail->item_amount = $request->item_amount[$key][$key1]; $supplier_quot_item_detail->gst_percentage = $request->gst_percent[$key][$key1]; $supplier_quot_item_detail->save(); } } } $response['flag'] = true; $response['quotation_number'] = $supplier_quot->sq_number; $response['msg'] = 'Supplier Quotations Updated Successfully.'; DB::commit(); } else { $response['flag'] = false; $response['quotation_number'] = $supplier_quot->sq_number; $response['msg'] = 'Supplier Quotations Not Found.'; } } catch(\Exception $e) { DB::rollback(); $response['flag'] = false; $response['msg'] = $e->getMessage(); } } return response()->json($response); } public function getQuotationEditPage($quotation_id) { $data = array(); $data['delivery_terms'] = DB::table('delivery_terms')->select('name', 'id')->get(); $data['payment_terms'] = DB::table('payment_terms')->select('name', 'id')->get(); $data['vendors'] = DB::table('vendors')->select('vendor_name', 'vendor_code')->where('is_active', 1)->get(); $data['supplier_quotations'] = SupplierQuotation::select('supplier_quotations.*')->where('supplier_quotations.id', $quotation_id)->get(); $data['supplier_quotation_details'] = SupplierQuotationDetail::select('supplier_quotation_details.*')->where('supplier_quotation_details.vendor_quotation_id', $quotation_id)->get(); $data['supplier_quotation_item_details'] = SupplierQuotationItemDetail::select('supplier_quotation_item_details.*')->where('supplier_quotation_item_details.vendor_quotation_id', $quotation_id)->get(); return view('dashboard.supplier-quotation.edit-quotation-page', $data); } public function quotationConvertToPo($quotation_id) { $data = array(); $data['vendor_quot_details'] = SupplierQuotationDetail::where('id', $quotation_id)->first(); $data['quot_pr_details'] = SupplierQuotation::where('id', $data['vendor_quot_details']->vendor_quotation_id)->first(); $data['purchase_requests'] = PurchaseRequest::where('id', $data['quot_pr_details']->pr_id)->first(); $data['business_units'] = DB::table('business_units')->get(); $data['delivery_periods'] = DB::table('delivery_periods')->get(); $data['payment_terms'] = DB::table('payment_terms')->get(); $data['po_types']= DB::table('po_category')->get(); $data['vendors'] = DB::table('vendors')->select('id','vendor_name', 'vendor_code')->where('is_active', 1)->get(); $data['quotation_id'] = $quotation_id; return view('dashboard.supplier-quotation.quotation-convert-to-po', $data); } public function getQuotationItems(Request $request) { $data = array(); $data['items'] = SupplierQuotationItemDetail::join('supplier_quotations as sq', 'supplier_quotation_item_details.vendor_quotation_id', 'sq.id')->select('sq.pr_number','sq.pr_id','supplier_quotation_item_details.*')->where('vendor_quotation_detail_id', $request->quotation_id)->get(); foreach($data['items'] as $key=>$val) { $data['items'][$key]['item_id'] = $val->id; $data['items'][$key]['id'] = $val->id; $data['items'][$key]['pr_id'] = $val->pr_id; $data['items'][$key]['pr_number'] = $val->pr_number; $data['items'][$key]['code'] = $val->item_code; $data['items'][$key]['description'] = $val->description; $data['items'][$key]['specification'] = $val->specification; $data['items'][$key]['make'] = $val->make; $data['items'][$key]['qty'] = $val->rem_qty; $data['items'][$key]['rate'] = $val->quoted_rate; $data['items'][$key]['gst'] = $val->gst_percentage; } return response()->json($data); } public function addConvertQuotationToPo(Request $request){ // dd($request->all()); $response = array(); $validator = \Validator::make($request->all(), array( 'document' => 'mimes:pdf' ) ); if($validator->fails()) { $response['flag'] = false; $response['error'] = $validator->getMessageBag(); //$validator->getMessageBag(); }else{ DB::beginTransaction(); try{ $purchaseOrder = new \App\PurchaseOrder(); $purchaseOrder->business_unit = $request->business_unit; $purchaseOrder->circle = $request->circle; $purchaseOrder->contact = $request->contact; $purchaseOrder->bill_to_address = $request->bill_to_address; $purchaseOrder->delivery_address = $request->delivery_address; $purchaseOrder->po_created_by = \Auth::user()->id; $purchaseOrder->delivery_periods_id = $request->delivery_periods; // if($request->delivery_periods != "other"){ // $delivery_periods = \DB::table('delivery_periods')->where('id',$request->delivery_periods)->first(); // $purchaseOrder->delivery_periods = $delivery_periods->name; // }else{ // $purchaseOrder->delivery_periods = $request->delivery_period_textarea; // } $purchaseOrder->document_type = $request->document_type; $purchaseOrder->payment_terms_id = $request->payment_terms; // if($request->payment_terms != "other"){ // $payment_terms = \DB::table('payment_terms')->where('id',$request->payment_terms)->first(); // $purchaseOrder->payment_terms = $payment_terms->name; // }else{ // $purchaseOrder->payment_terms = $request->payment_term_textarea; // } $purchaseOrder->delivery_terms = $request->delivery_terms; $purchaseOrder->reference_no = $request->reference_no; $purchaseOrder->stc = $request->stc; $purchaseOrder->vendor_id = $request->vendor; $purchaseOrder->warranty_terms = $request->warranty_terms; $purchaseOrder->po_amount = $request->po_amount; $purchaseOrder->po_gst_amount = $request->po_gst_amount; $purchaseOrder->status = 'requested'; $purchaseOrder->current_status = 'processing'; $purchaseOrder->amendment_number = 0; $purchaseOrder->po_type = $request->po_type; // file upload if($request->hasFile('document')) { $filenameWithExt = $request->file('document')->getClientOriginalName(); $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME); $extension = $request->file('document')->getClientOriginalExtension(); $fileNameToStore = $filename.'_'.time().'.'.$extension; $destinationPath = public_path().'/po_document'; $path = $request->file('document')->move($destinationPath, $fileNameToStore); $purchaseOrder->document1 = str_replace(public_path(), '', $path); } if($purchaseOrder->save()){ if(date('m')>=4){ $session=date('y').(date('y')+1); }else{ $session=(date('y')-1).date('y'); } $series_po = \App\PurchaseOrder::where('session', $session)->orderBy('id', 'desc')->first(); if(!is_null($series_po)) { $series = $series_po->series + 1; } else { $series = 1; } switch (strlen((string)$series)) { case 1: $series = '000'.$series; break; case 2: $series = '00'.$series; break; case 3: $series = '0'.$series; break; default: $series = $series; } $purchaseOrder->po_number = 'ATS/PO/'.$session."/".$series; $purchaseOrder->session = $session; $purchaseOrder->series = ($series*1); $purchaseOrder->save(); }else{ $response['flag'] = false; $response['error'] = "Something Went Wrong"; } $items = json_decode($request->items, true); // dd($request->items); foreach ($items as $key => $item){ $purchase_order_items = new \App\PurchaseOrderItem(); $purchase_order_items->po_id = $purchaseOrder->id; $purchase_order_items->pr_id = $item['pr_id']; $purchase_order_items->rate = $item['rate']; $purchase_order_items->qty = $item['qty']; $purchase_order_items->uom = $item['uom']; $purchase_order_items->make = $item['make']; $purchase_order_items->specification = $item['specification']; $purchase_order_items->item_code = $item['item_code']; $purchase_order_items->save(); $pr_item = \App\PurchaseRequestItem::where('pr_id', $item['pr_id'])->where('item_code',$item['item_code'])->first(); if(!is_null($pr_item)) { $balance = $pr_item->rqty - $item['qty']; $pr_item->rqty = $balance; $pr_item->status = ($balance > 0)?'partially_completed':'completed'; $pr_item->save(); } $vendor_item = SupplierQuotationItemDetail::where('id', $item['item_id'])->first(); if(!is_null($vendor_item)) { $balance = $vendor_item->rem_qty - $item['qty']; $vendor_item->rem_qty = $balance; $vendor_item->save(); } } $qty = SupplierQuotationItemDetail::where('vendor_quotation_detail_id', $request->quotation_id)->sum('qty'); $rem_qty = SupplierQuotationItemDetail::where('vendor_quotation_detail_id', $request->quotation_id)->sum('rem_qty'); $data = SupplierQuotationDetail::where('id', $request->quotation_id)->first(); if($rem_qty == 0) { $data->po_status = 'completed'; $data->save(); } elseif($rem_qty > 0 && $rem_qty < $qty) { $data->po_status = 'partial_completed'; $data->save(); } $check_pr = \App\PurchaseRequestItem::where('pr_id',$item['pr_id'])->where('status','Requested')->orWhere('status', 'partially_completed')->first(); if($check_pr==null){ $pr= \App\PurchaseRequest::where('id',$item['pr_id'])->first(); $pr->current_status='completed'; $pr->save(); }else{ $pr= \App\PurchaseRequest::where('id',$item['pr_id'])->first(); $pr->current_status='partially_completed'; $pr->save(); } $purchaseOrderLog = new \App\PurchaseOrderLog(); $purchaseOrderLog->po_id = $purchaseOrder->id; $purchaseOrderLog->user_id = \Auth::user()->id; $purchaseOrderLog->message = 'create'; $purchaseOrderLog->save(); DB::commit(); $response['success'] = true; $response['msg'] = "Purchase Order Added Successfully !!"; $response['po_number'] = $purchaseOrder->po_number; } catch(\Exception $e) { DB::rollback(); $response['flag'] = false; $response['msg'] = $e->getMessage(); } } return response()->json($response); } }