<?php namespace App\Http\Controllers; use App\Models\Bahan; use App\Models\Bom; use App\Models\bomsementara; use App\Models\Customer; use App\Models\Manufacturingorder; use App\Models\manufacturingorderisi; use App\Models\Produk; use App\Models\Sales; use App\Models\Salesisi; use App\Models\SalesOrder; use App\Models\SO; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class SalesController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $sq = Sales::all(); $cust = Customer::all(); return view('dashboards.sales.index', [ 'sq' => $sq, 'cust' => $cust, ]); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $code = 'SQ' . date('Y') . rand(1111, 9999); $customer = Customer::all(); $status = "Quotation"; return view('dashboards.sales.create', [ 'code' => $code, 'customer' => $customer, 'status' => $status, ]); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $request->validate([ 'kodesq' => 'required', 'kodecust' => 'required', 'tglpembelian' => 'required', ]); Sales::create($request->all()); return redirect()->route('adminIndexSalesQuotation') ->with('success', 'Data Telah Ditambahkan. Silahkan buka isi dari SQ'); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } public function isi(Sales $sales) { $prod = Produk::all(); $sisi = Sales::get()->where('idsqnya', $sales->idsq); $sisi2 = Salesisi::get()->where('idsqnya', $sales->idsq); //dibuat karena manufacturingisi index tidak dimulai dari nol dan kita cuma butuh banyak qty foreach ($sisi2 as $value) { $quantiti[] = [ 'banyakqty' => $value->banyakqty ]; } // buat cari bahan apa yg dipake di manufacturingisi $kodbahan = DB::table('salesisis') ->select('kodeprod') ->orderBy('idsqnya', 'asc') //berarti kriteria wajib urut ->where('idsqnya', $sales->idsq) ->get(); //nanti berupa objek if ($kodbahan->isEmpty()) { return view('dashboards.sales.isi', [ 'sales' => $sales, 'prod' => $prod, 'sisi' => $sisi, 'sisi2' => $sisi2, 'hargabaru' => 0, 'statbol' => 1, ]); } else { $prod = Produk::all(); $sisi = Sales::get()->where('idsqnya', $sales->idsq); $sisi2 = Salesisi::get()->where('idsqnya', $sales->idsq); //dibuat karena manufacturingisi index tidak dimulai dari nol dan kita cuma butuh banyak qty foreach ($sisi2 as $value) { $quantiti[] = [ 'banyakqty' => $value->banyakqty ]; } $kodbahan = DB::table('salesisis') ->select('kodeprod') ->orderBy('idsqnya', 'asc') //berarti kriteria wajib urut ->where('idsqnya', $sales->idsq) ->get(); //nanti berupa objek //buat hitung total //CARI HARGA DASAR PRODUK foreach ($kodbahan as $key) { // dd($key->kodeprod); $bahanbaku[] = Produk::select('hargaproduk') ->where('kodeproduk', $key->kodeprod) ->get(); } foreach ($bahanbaku as $key) { foreach ($key as $val) { $produkbaru[] = $val->hargaproduk; } } // dd($quantiti[0]['banyakqty']); //untuk mengkalikan for ($i = 0; $i < $kodbahan->count(); $i++) { $hargaakhir[] = $quantiti[$i]['banyakqty'] * $produkbaru[$i]; } //tambah perkaliannya $hargabaru = 0; foreach ($hargaakhir as $key) { $hargabaru += $key; } // dd($hargabaru); //setelahnya ambil data dari tabel bahan untuk ambil bahan yg dipake di materialorder $bahann = array(); for ($i = 0; $i < $kodbahan->count(); $i++) { $bahann[] = Produk::select('kodeproduk', 'stockproduk', 'hargaproduk')->where('kodeproduk', $kodbahan[$i]->kodeprod)->get(); } //buat cek banyak nya bahan aman atau tidaknya.. kalau bahan aman semua berarti statol harus 0 $statbol = 0; for ($i = 0; $i < $kodbahan->count(); $i++) { if ($quantiti[$i]['banyakqty'] <= $bahann[$i][0]->stockproduk) { // Bahan Aman $statbol += 0; } else { // Bahan tidak aman $statbol += 1; } } // dd($statbol); return view('dashboards.sales.isi', [ 'sales' => $sales, 'prod' => $prod, 'sisi' => $sisi, 'sisi2' => $sisi2, 'statbol' => $statbol, 'hargabaru' => $hargabaru, ]); } } public function storeisi(Request $request) { $request->validate([ 'idsqnya' => 'required', 'idprod' => 'required', 'kodeprod' => 'required', 'banyakqty' => 'required', ]); $bahanbaku = Produk::select('hargaproduk') ->where('kodeproduk', $request->kodeprod) ->get(); $materialnya = Produk::get()->where('kodeproduk', $request->kodeprod); //dibuat karena matrialnya index tidak dimulai dari nol foreach ($materialnya as $item) { $stockproduk = $item->stockproduk; $idproduk = $item->idproduk; } $statbol = 0; if ($request->banyakqty <= $stockproduk) { $statusproduk = "Produk Aman"; $statbol += 0; } else { $statusproduk = "Produk Kurang"; $statbol += 1; } Salesisi::create([ 'idsqnya' => $request->idsqnya, 'idprod' => $idproduk, 'kodeprod' => $request->kodeprod, 'banyakqty' => $request->banyakqty, 'statbol' => $statbol, 'statusproduk' => $statusproduk, ]); return redirect()->back() ->with('success', 'Data Telah Ditambahkan. Silahkan Isi Bahan Baku Yang Dibutuhkan Di Isi SQ'); } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $sq = Sales::find($id); $customer = Customer::all(); return view('dashboards.sales.edit', [ 'sq' => $sq, 'customer' => $customer, ]); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, Sales $datasales) { $request->validate([ 'kodesq' => 'required', 'kodecust' => 'required', 'tglpembelian' => 'required', 'status' => 'required', ]); $datasales->update($request->all()); return redirect()->route('adminIndexSalesQuotation') ->with('success', 'Data Telah DiUbah. Silahkan buka isi dari SQ'); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $sq = Sales::find($id); $sq->delete(); return redirect()->route('adminIndexSalesQuotation') ->with('success', 'Data Telah DiHapus'); } public function destroyisi($sales) { $salesisi = Salesisi::find($sales); $salesisi->delete(); return redirect()->back() ->with('success', 'Data Telah Dihapus.'); } public function checkout(Request $request, Sales $sales) { $request->validate([ 'idsqnya' => 'required', ]); $datadarisq = Sales::get()->where('idsq', $request->idsqnya); //dibuat karena manufacturingisi index tidak dimulai dari nol dan kita cuma butuh banyak qty foreach ($datadarisq as $value) { $datadarisqbaru[] = [ "idsq" => $value->idsq, "kodesq" => $value->kodesq, "kodecust" => $value->kodecust, "tglpembelian" => $value->tglpembelian, "status" => $value->status, ]; } // dd($datadarisqbaru[0]['status']); Sales::where('idsq', $request->idsqnya)->update([ 'status' => 'Checkout' ]); DB::table('salesorders')->insert([ 'idso' => $datadarisqbaru[0]['idsq'], 'kodesq2' => $datadarisqbaru[0]['kodesq'], 'kodecust' => $datadarisqbaru[0]['kodecust'], 'tglpembelian' => $datadarisqbaru[0]['tglpembelian'], 'status' => 'Checkout', ]); // dd('sampai sini'); return redirect()->route('adminIndexSalesQuotation') ->with('success', 'Data Telah Diperbaharui.'); } }