/
home
/
sjslayjy
/
public_html
/
tabson_test
/
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; class SupplierQuotationController extends Controller { public function supplierQuotation() { $data = array(); $all_pr = DB::table('purchase_requests')->select('id', 'pr_number')->where('status', 'requested')->get(); $data['all_pr'] = array(); if(!$all_pr->isEmpty()) { $data['all_pr'] = $all_pr; } $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.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(); $data->quotation_status = $request->status; if($data->save()) { $response['success'] = true; $response['msg'] = 'Purchase Request Added 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', '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->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')->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) { dd('stop'); $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['quotation_id'] = $quotation_id; return view('dashboard.supplier-quotation.quotation-convert-to-po', $data); } public function getQuotationItems(Request $request) { $data = array(); $data['items'] = SupplierQuotationItemDetail::where('vendor_quotation_detail_id', $request->quotation_id)->get(); return response()->json($data); } }