ReportManageController.php
unknown
php_laravel_blade
2 years ago
38 kB
2
Indexable
public function exportPenjualan(Request $req) { // $start_date = $req->tgl_awal; // $end_date = $req->tgl_akhir; // $start_date2 = Carbon::parse($start_date)->format('Y-m-d'); // $end_date2 = date('Y-m-d', strtotime($end_date.'+1 day')); $filter = $req->filter; $search_penjualan = $req->cari_penjualan; $search_pajak = $req->status_pajak; if($req->tgl_awal != null || $req->tgl_akhir != null){ $start_date = $req->tgl_awal; $end_date = $req->tgl_akhir; $start_date2 = Carbon::parse($start_date)->format('Y-m-d'); $end_date2 = date('Y-m-d', strtotime($end_date.'+1 day')); }else{ $get_start1 = Transaction::first(); $get_start2 = TransactionNonPPN::first(); if ($get_start1->created_at < $get_start2->created_at) { $get_start = $get_start1->created_at; }else{ $get_start = $get_start2->created_at; } $get_end1 = Transaction::latest()->first(); $get_end2 = TransactionNonPPN::latest()->first(); if ($get_end1->created_at > $get_end2->created_at) { $get_end = $get_end1->created_at; }else{ $get_end = $get_end2->created_at; } $start_date = $get_start->format('Y-m-d'); $end_date = $get_end->format('Y-m-d'); $start_date2 = Carbon::parse($start_date)->format('Y-m-d'); $end_date2 = date('Y-m-d', strtotime($end_date.'+1 day')); } $transaction = Transaction::whereBetween('created_at', [$start_date2, $end_date2]) ->select('transactions.kode_transaksi') ->where('status', 'lunas') ->where(function ($query) use($search_penjualan){ $query->where('kode_transaksi', 'like', '%' . $search_penjualan . '%') ->orWhere('nama_barang', 'like', '%' . $search_penjualan . '%') ->orWhereHas('customer', function($query) use ($search_penjualan){ $query->where('nama', 'like', '%'.$search_penjualan.'%'); }); }) ->orderBy('created_at', 'desc') ->get(); $transactionNonPPN = TransactionNonPPN::whereBetween('created_at', [$start_date2, $end_date2]) ->select('transaction_non_ppn.kode_transaksi') ->where('status', 'lunas') ->where(function ($query) use($search_penjualan){ $query->where('kode_transaksi', 'like', '%' . $search_penjualan . '%') ->orWhere('nama_barang', 'like', '%' . $search_penjualan . '%') ->orWhereHas('customer', function($query) use ($search_penjualan){ $query->where('nama', 'like', '%'.$search_penjualan.'%'); }); }) ->orderBy('created_at', 'desc') ->get(); $transaction = $transaction->concat($transactionNonPPN); $jumlah = count($transaction); // =============================================================================== $array = []; foreach ($transaction as $no => $trans) { array_push($array, $trans->kode_transaksi); } $uniq = array_unique($array); $penjualan = array_values($uniq); $per_transaksi = []; foreach ($penjualan as $i => $v) { $cc = Transaction::where('kode_transaksi', $v)->where('status','lunas')->first(); if(!$cc){ $cc = TransactionNonPPN::where('kode_transaksi', $v)->where('status','lunas')->first(); } $bb = Customer::where('id', $cc->id_customer)->first(); $ttl = Transaction::where('kode_transaksi', $v)->where('status','lunas')->sum('total_barang'); $ttl1 = TransactionNonPPN::where('kode_Transaksi', $v)->where('status','lunas')->sum('total_barang'); $jumlahBesarPpn = Transaction::join('products', 'transactions.kode_barang', '=', 'products.kode_barang') ->where('transactions.kode_transaksi', $v) ->where('transactions.status','lunas') ->where('transactions.jenis_kemasan', '!=', 'Pack') ->select(DB::raw('products.*,(transactions.jumlah / products.pack) as total_jumlah'))->get(); $jumlahBesarNonPpn = TransactionNonPPN::join('products', 'transaction_non_ppn.kode_barang', '=', 'products.kode_barang') ->where('transaction_non_ppn.kode_transaksi', $v) ->where('transaction_non_ppn.status','lunas') ->where('transaction_non_ppn.jenis_kemasan', '!=', 'Pack') ->select(DB::raw('products.*,(transaction_non_ppn.jumlah / products.pack) as total_jumlah'))->get(); $jumlahKecilPpn = Transaction::where('kode_Transaksi', $v)->where('status','lunas')->where('jenis_kemasan', 'Pack')->sum('jumlah'); $jumlahKecilNonPpn = TransactionNonPPN::where('kode_Transaksi', $v)->where('status','lunas')->where('jenis_kemasan', 'Pack')->sum('jumlah'); array_push($per_transaksi, [ 'kode_transaksi' => $v, 'nama_customer' => ($bb != null) ? $bb->nama : 'Customer dihapus', 'jumlah_besar' => ($jumlahBesarPpn->sum('total_jumlah') + $jumlahBesarNonPpn->sum('total_jumlah')), 'jumlah_kecil' => ($jumlahKecilPpn + $jumlahKecilNonPpn), 'total' => 'Rp '.number_format($ttl + $ttl1,2,',','.'), 'kasir' => $cc->kasir, 'created_at' => $cc->created_at->format('d/M/Y H:i:s'), 'updated_at' => $cc->updated_at->format('d/M/Y H:i:s'), ]); } if($filter == 'penjualan'){ $jumlah = count($penjualan); } // =============================================================================== $data_tr = Transaction::whereBetween('created_at', [$start_date2, $end_date2]) ->where('status', 'lunas') ->orderBy('created_at', 'desc') ->where(function ($query) use($search_penjualan){ $query->where('kode_transaksi', 'like', '%' . $search_penjualan . '%') ->orWhere('nama_barang', 'like', '%' . $search_penjualan . '%') ->orWhereHas('customer', function($query) use ($search_penjualan){ $query->where('nama', 'like', '%'.$search_penjualan.'%'); }); }) ->get(); $data_trr = TransactionNonPPN::whereBetween('created_at',[$start_date2, $end_date2]) ->where('status', 'lunas') ->orderBy('created_at', 'desc') ->where(function ($query) use($search_penjualan){ $query->where('kode_transaksi', 'like', '%' . $search_penjualan . '%') ->orWhere('nama_barang', 'like', '%' . $search_penjualan . '%') ->orWhereHas('customer', function($query) use ($search_penjualan){ $query->where('nama', 'like', '%'.$search_penjualan.'%'); }); }) ->get(); if($search_pajak == '1'){ $transaksi = $data_tr; } else if($search_pajak == '2'){ $transaksi = $data_trr; } else{ $transaksi = $data_tr->merge($data_trr); } $transaksi = $transaksi->sortBy('created_at'); $transaksi = $transaksi->values()->all(); // ===================================== Jumlah Stok ========================================== $dos = 0; $pack = 0; $total_harga = 0; $total_dos = 0; $total_pack = 0; foreach ($transaksi as $key => $value) { $pp = Product::where('kode_barang', $value->kode_barang)->first(); if($pp != null){ if(strtolower($value->jenis_kemasan) == 'pack'){ $pack += $value->jumlah; $total_dos += $value->total_barang; }else{ $dos += $value->jumlah / $pp->pack; $total_pack += $value->total_barang; } } $total_harga += $value->total_barang; } $jumlah_dos = (int) $dos ; $jumlah_pack = (int) $pack ; // ==================================== ganti data transaksi =========================================== array_walk($transaksi, function(&$item, $key) { $item->kode_transaksi = $item->kode_transaksi.''.$item->luar_pulau; $product = Product::where('kode_barang', $item->kode_barang)->first(); if($product != null){ if(strtolower($item->jenis_kemasan) == 'pack'){ $item->jumlah = $item->jumlah; }else{ $item->jumlah = (int) $item->jumlah / $product->pack; } }else{ $item->jumlah = $item->jumlah; } $item->id_kasir = User::find($item->id_kasir)->nama; $item->id_customer = (Customer::find($item->id_customer) != null) ? Customer::find($item->id_customer)->nama : 'Customer dihapus'; $item->created_at = $item->created_at->format('d-m-Y H:i:s'); }); // =============================================================================== $pelanggan = []; $jumlah_pelanggan = 0; foreach ($transaksi as $key => $value) { if(!in_array($value->id_customer, $pelanggan)){ array_push($pelanggan, $value->id_customer); $jumlah_pelanggan++; } } // =============================================================================== $tgl1 = Carbon::parse($start_date)->isoFormat('D MMMM Y'); $tgl2 = Carbon::parse($end_date)->isoFormat('D MMMM Y'); $tgl = $tgl1.' s/d '.$tgl2; return Excel::download(new ExportLaporanPenjualan($transaksi, $per_transaksi, $filter, $penjualan, $jumlah_dos, $jumlah_pack, $tgl, $jumlah, $jumlah_pelanggan, $total_harga, $total_dos, $total_pack), 'penjualan-'.now().'.xlsx'); } public function printPenjualan(Request $req) { $filter = $req->filter; $search_penjualan = $req->cari_penjualan; $search_pajak = $req->status_pajak; if($req->tgl_awal != null || $req->tgl_akhir != null){ $start_date = $req->tgl_awal; $end_date = $req->tgl_akhir; $start_date2 = Carbon::parse($start_date)->format('Y-m-d'); $end_date2 = date('Y-m-d', strtotime($end_date.'+1 day')); }else{ $get_start1 = Transaction::first(); $get_start2 = TransactionNonPPN::first(); if ($get_start1->created_at < $get_start2->created_at) { $get_start = $get_start1->created_at; }else{ $get_start = $get_start2->created_at; } $get_end1 = Transaction::latest()->first(); $get_end2 = TransactionNonPPN::latest()->first(); if ($get_end1->created_at > $get_end2->created_at) { $get_end = $get_end1->created_at; }else{ $get_end = $get_end2->created_at; } $start_date = $get_start->format('Y-m-d'); $end_date = $get_end->format('Y-m-d'); $start_date2 = Carbon::parse($start_date)->format('Y-m-d'); $end_date2 = date('Y-m-d', strtotime($end_date.'+1 day')); } $transaction = Transaction::whereBetween('created_at', [$start_date2, $end_date2]) ->select('transactions.kode_transaksi') ->where('status', 'lunas') ->where(function ($query) use($search_penjualan){ $query->where('kode_transaksi', 'like', '%' . $search_penjualan . '%') ->orWhere('nama_barang', 'like', '%' . $search_penjualan . '%') ->orWhereHas('customer', function($query) use ($search_penjualan){ $query->where('nama', 'like', '%'.$search_penjualan.'%'); }); }) ->orderBy('created_at', 'desc') ->get(); $transactionNonPPN = TransactionNonPPN::whereBetween('created_at', [$start_date2, $end_date2]) ->select('transaction_non_ppn.kode_transaksi') ->where('status', 'lunas') ->where(function ($query) use($search_penjualan){ $query->where('kode_transaksi', 'like', '%' . $search_penjualan . '%') ->orWhere('nama_barang', 'like', '%' . $search_penjualan . '%') ->orWhereHas('customer', function($query) use ($search_penjualan){ $query->where('nama', 'like', '%'.$search_penjualan.'%'); }); }) ->orderBy('created_at', 'desc') ->get(); $transaction = $transaction->concat($transactionNonPPN); $jumlah = count($transaction); // =============================================================================== $array = []; foreach ($transaction as $no => $trans) { array_push($array, $trans->kode_transaksi); } $uniq = array_unique($array); $penjualan = array_values($uniq); $per_transaksi = []; foreach ($penjualan as $i => $v) { $cc = Transaction::where('kode_transaksi', $v)->where('status','lunas')->first(); if(!$cc){ $cc = TransactionNonPPN::where('kode_transaksi', $v)->where('status','lunas')->first(); } $bb = Customer::where('id', $cc->id_customer)->first(); $ttl = Transaction::where('kode_transaksi', $v)->where('status','lunas')->sum('total_barang'); $ttl1 = TransactionNonPPN::where('kode_Transaksi', $v)->where('status','lunas')->sum('total_barang'); $jumlahBesarPpn = Transaction::join('products', 'transactions.kode_barang', '=', 'products.kode_barang') ->where('transactions.kode_transaksi', $v) ->where('transactions.status','lunas') ->where('transactions.jenis_kemasan', '!=', 'Pack') ->select(DB::raw('products.*,(transactions.jumlah / products.pack) as total_jumlah'))->get(); $jumlahBesarNonPpn = TransactionNonPPN::join('products', 'transaction_non_ppn.kode_barang', '=', 'products.kode_barang') ->where('transaction_non_ppn.kode_transaksi', $v) ->where('transaction_non_ppn.status','lunas') ->where('transaction_non_ppn.jenis_kemasan', '!=', 'Pack') ->select(DB::raw('products.*,(transaction_non_ppn.jumlah / products.pack) as total_jumlah'))->get(); $jumlahKecilPpn = Transaction::where('kode_Transaksi', $v)->where('status','lunas')->where('jenis_kemasan', 'Pack')->sum('jumlah'); $jumlahKecilNonPpn = TransactionNonPPN::where('kode_Transaksi', $v)->where('status','lunas')->where('jenis_kemasan', 'Pack')->sum('jumlah'); array_push($per_transaksi, [ 'kode_transaksi' => $v, 'nama_customer' => ($bb != null) ? $bb->nama : 'Customer dihapus', 'jumlah_besar' => ($jumlahBesarPpn->sum('total_jumlah') + $jumlahBesarNonPpn->sum('total_jumlah')), 'jumlah_kecil' => ($jumlahKecilPpn + $jumlahKecilNonPpn), 'total' => 'Rp '.number_format($ttl + $ttl1,2,',','.'), 'kasir' => $cc->kasir, 'created_at' => $cc->created_at->format('d/M/Y H:i:s'), 'updated_at' => $cc->updated_at->format('d/M/Y H:i:s'), ]); } if($filter == 'penjualan'){ $jumlah = count($penjualan); } // =============================================================================== $data_tr = Transaction::whereBetween('created_at', [$start_date2, $end_date2]) ->where('status', 'lunas') ->orderBy('created_at', 'desc') ->where(function ($query) use($search_penjualan){ $query->where('kode_transaksi', 'like', '%' . $search_penjualan . '%') ->orWhere('nama_barang', 'like', '%' . $search_penjualan . '%') ->orWhereHas('customer', function($query) use ($search_penjualan){ $query->where('nama', 'like', '%'.$search_penjualan.'%'); }); }) ->get(); $data_trr = TransactionNonPPN::whereBetween('created_at',[$start_date2, $end_date2]) ->where('status', 'lunas') ->orderBy('created_at', 'desc') ->where(function ($query) use($search_penjualan){ $query->where('kode_transaksi', 'like', '%' . $search_penjualan . '%') ->orWhere('nama_barang', 'like', '%' . $search_penjualan . '%') ->orWhereHas('customer', function($query) use ($search_penjualan){ $query->where('nama', 'like', '%'.$search_penjualan.'%'); }); }) ->get(); if($search_pajak == '1'){ $transaksi = $data_tr; } else if($search_pajak == '2'){ $transaksi = $data_trr; } else{ $transaksi = $data_tr->merge($data_trr); } $transaksi = $transaksi->sortBy('created_at'); $transaksi = $transaksi->values()->all(); // ===================================== Jumlah Stok ========================================== $dos = 0; $pack = 0; $total_harga = 0; $total_dos = 0; $total_pack = 0; foreach ($transaksi as $key => $value) { $pp = Product::where('kode_barang', $value->kode_barang)->first(); if($pp != null){ if(strtolower($value->jenis_kemasan) == 'pack'){ $pack += $value->jumlah; $total_dos += $value->total_barang; }else{ $dos += $value->jumlah / $pp->pack; $total_pack += $value->total_barang; } } $total_harga += $value->total_barang; } $dos = (int) $dos ; $pack = (int) $pack ; // ==================================== ganti data transaksi =========================================== array_walk($transaksi, function(&$item, $key) { $item->kode_transaksi = $item->kode_transaksi.''.$item->luar_pulau; $product = Product::where('kode_barang', $item->kode_barang)->first(); if($product != null){ if(strtolower($item->jenis_kemasan) == 'pack'){ $item->jumlah = $item->jumlah; }else{ $item->jumlah = (int) $item->jumlah / $product->pack; } }else{ $item->jumlah = $item->jumlah; } $item->id_kasir = User::find($item->id_kasir)->nama; $item->id_customer = (Customer::find($item->id_customer) != null) ? Customer::find($item->id_customer)->nama : 'Customer dihapus'; $item->created_at = $item->created_at->format('d-m-Y H:i:s'); }); // =============================================================================== $pelanggan = []; $jumlah_pelanggan = 0; foreach ($transaksi as $key => $value) { if(!in_array($value->id_customer, $pelanggan)){ array_push($pelanggan, $value->id_customer); $jumlah_pelanggan++; } } // =============================================================================== $sum_transaction = Transaction::whereBetween('created_at', [$start_date2, $end_date2]) ->where('status', 'lunas') ->where(function ($query) use($search_penjualan){ $query->where('kode_transaksi', 'like', '%' . $search_penjualan . '%') ->orWhere('nama_barang', 'like', '%' . $search_penjualan . '%') ->orWhereHas('customer', function($query) use ($search_penjualan){ $query->where('nama', 'like', '%'.$search_penjualan.'%'); }); }) ->sum('total_barang'); $sum_transactionNonPPN = TransactionNonPPN::whereBetween('created_at', [$start_date2, $end_date2]) ->where('status', 'lunas') ->where(function ($query) use($search_penjualan){ $query->where('kode_transaksi', 'like', '%' . $search_penjualan . '%') ->orWhere('nama_barang', 'like', '%' . $search_penjualan . '%') ->orWhereHas('customer', function($query) use ($search_penjualan){ $query->where('nama', 'like', '%'.$search_penjualan.'%'); }); }) ->sum('total_barang'); $total = $sum_transaction + $sum_transactionNonPPN; $total = number_format($total, 0, ',', '.'); // =============================================================================== $tgl1 = Carbon::parse($start_date)->isoFormat('D MMMM Y'); $tgl2 = Carbon::parse($end_date)->isoFormat('D MMMM Y'); $tgl = $tgl1.' s/d '.$tgl2; return view('report.print_laporan_penjualan', compact('transaksi','per_transaksi','filter','penjualan', 'dos', 'pack', 'total', 'tgl', 'jumlah', 'jumlah_pelanggan', 'total_harga', 'total_dos', 'total_pack')); } public function exportPembelian(Request $req) { $filter = $req->filter; $search_pembelian = $req->cari_pembelian; $search_pajak = $req->status_pajak; if($search_pajak == '1'){ $search_pajak = 'ppn'; } else if($search_pajak == '2'){ $search_pajak = 'non_ppn'; } else{ $search_pajak = null; } if($req->tgl_awal != null || $req->tgl_akhir != null){ $start_date = $req->tgl_awal; $end_date = $req->tgl_akhir; $start_date2 = Carbon::parse($start_date)->format('Y-m-d'); $end_date2 = date('Y-m-d', strtotime($end_date.'+1 day')); }else{ $get_start = Supply::first(); $get_end = Supply::latest()->first(); $start_date = $get_start->created_at->format('Y-m-d'); $end_date = $get_end->created_at->format('Y-m-d'); $start_date2 = Carbon::parse($start_date)->format('Y-m-d'); $end_date2 = date('Y-m-d', strtotime($end_date.'+1 day')); } $supply = Supply::whereBetween('created_at', [$start_date2, $end_date2]) ->select('supplies.kode_pasok') ->where('status', 'lunas') ->where(function ($query) use($search_pembelian){ $query->where('kode_pasok', 'like', '%'.$search_pembelian.'%') ->orWhere('surat_jalan', 'like', '%'.$search_pembelian.'%') ->orWhere('no_faktur', 'like', '%'.$search_pembelian.'%') ->orWhere('nama_barang', 'like', '%'.$search_pembelian.'%') ->orWhereHas('supplier', function($query) use ($search_pembelian){ $query->where('nama', 'like', '%'.$search_pembelian.'%'); }); }) ->orderBy('created_at', 'desc') ->get(); // =============================================================================== $array = []; foreach ($supply as $no => $trans) { array_push($array, $trans->kode_pasok); } $uniq = array_unique($array); $pembelian = array_values($uniq); // =============================================================================== if($search_pajak){ $pasok = supply::select('supplies.*', 'products.status_pajak') ->join('products', 'supplies.kode_barang', '=', 'products.kode_barang') ->whereBetween('supplies.created_at', [$start_date2, $end_date2]) ->where('products.status_pajak', $search_pajak) ->where('supplies.status', 'lunas') ->orderBy('supplies.created_at', 'desc') ->where(function ($query) use($search_pembelian){ $query->where('supplies.kode_pasok', 'like', '%'.$search_pembelian.'%') ->orWhere('supplies.surat_jalan', 'like', '%'.$search_pembelian.'%') ->orWhere('supplies.no_faktur', 'like', '%'.$search_pembelian.'%') ->orWhere('supplies.nama_barang', 'like', '%'.$search_pembelian.'%') ->orWhereHas('supplier', function($query) use ($search_pembelian){ $query->where('nama', 'like', '%'.$search_pembelian.'%'); }); }) ->get(); } else{ $pasok = supply::select('supplies.*', 'products.status_pajak') ->join('products', 'supplies.kode_barang', '=', 'products.kode_barang') ->whereBetween('supplies.created_at', [$start_date2, $end_date2]) ->where('supplies.status', 'lunas') ->orderBy('supplies.created_at', 'desc') ->where(function ($query) use($search_pembelian){ $query->where('supplies.kode_pasok', 'like', '%'.$search_pembelian.'%') ->orWhere('supplies.surat_jalan', 'like', '%'.$search_pembelian.'%') ->orWhere('supplies.no_faktur', 'like', '%'.$search_pembelian.'%') ->orWhere('supplies.nama_barang', 'like', '%'.$search_pembelian.'%') ->orWhereHas('supplier', function($query) use ($search_pembelian){ $query->where('nama', 'like', '%'.$search_pembelian.'%'); }); }) ->get(); } $pasok = $pasok->sortBy('created_at'); $pasok = $pasok->values()->all(); // ===================================== Jumlah Stok ========================================== $dos = 0; $pack = 0; $harga_dos = 0; $harga_pack = 0; $harga_total = 0; foreach ($pasok as $key => $value) { $pp = Product::where('kode_barang', $value->kode_barang)->first(); if(strtolower($value->jenis_kemasan) == 'pack'){ $pack += $value->jumlah; $harga_pack += $value->subtotal; }else{ $dos += $value->jumlah / $pp->pack; $harga_dos += $value->subtotal; } $harga_total += $value->subtotal; } $jumlah_dos = (int) $dos ; $jumlah_pack = (int) $pack ; // ==================================== ganti data pasok =========================================== array_walk($pasok, function($item, $key) { $product = Product::where('kode_barang', $item->kode_barang)->first(); if(strtolower($item->jenis_kemasan) == 'pack'){ $item->jumlah = $item->jumlah; }else{ $item->jumlah = (int) $item->jumlah / $product->pack; } $item->nama_barang = $product->nama_barang; $item->status_pajak = (strtolower($item->status_pajak) == 'ppn') ? 'PPN' : 'Non PPN'; $item->id_worker = User::find($item->id_worker)->nama; $item->id_pemasok = Supplier::find($item->id_pemasok)->nama; $item->created_at = $item->created_at->format('d-m-Y H:i:s'); }); // =============================================================================== $pemasok = []; $jumlah_pemasok = 0; foreach ($pasok as $key => $value) { if(!in_array($value->id_pemasok, $pemasok)){ array_push($pemasok, $value->id_pemasok); $jumlah_pemasok++; } } if($filter == 'pasok'){ $supply = []; $kode_pasok = []; foreach ($pasok as $key => $value) { if(!in_array($value->kode_pasok, $kode_pasok)){ $total_harga = Supply::where('kode_pasok', $value->kode_pasok)->where('status', 'lunas')->sum('subtotal'); $value->subtotal = $total_harga; $jumlahBesar = Supply::join('products', 'supplies.kode_barang', '=', 'products.kode_barang') ->where('supplies.kode_pasok', $value->kode_pasok) ->where('supplies.status','lunas') ->where('supplies.jenis_kemasan', '!=', 'Pack') ->select(DB::raw('products.*,(supplies.jumlah / products.pack) as total_jumlah'))->get(); $value->jumlah_besar = $jumlahBesar->sum('total_jumlah'); $value->jumlah_kecil = Supply::where('kode_pasok', $value->kode_pasok)->where('status', 'lunas')->where('jenis_kemasan', 'pack')->sum('jumlah'); array_push($kode_pasok, $value->kode_pasok); array_push($supply, $value); } } $pasok = $supply; } $jumlah = count($pasok); // =============================================================================== $tgl1 = Carbon::parse($start_date)->isoFormat('D MMMM Y'); $tgl2 = Carbon::parse($end_date)->isoFormat('D MMMM Y'); $tgl = $tgl1.' s/d '.$tgl2; return Excel::download(new ExportLaporanPembelian($pasok, $filter, $pembelian, $jumlah_dos, $jumlah_pack, $harga_dos, $harga_pack, $tgl, $jumlah, $jumlah_pemasok, $harga_total), 'pembelian-'.now().'.xlsx'); } public function printPembelian(Request $req) { $search_pembelian = $req->cari_pembelian; $search_pajak = $req->status_pajak; $filter = $req->filter; if($search_pajak == '1'){ $search_pajak = 'ppn'; } else if($search_pajak == '2'){ $search_pajak = 'non_ppn'; } else{ $search_pajak = null; } if($req->tgl_awal != null || $req->tgl_akhir != null){ $start_date = $req->tgl_awal; $end_date = $req->tgl_akhir; $start_date2 = Carbon::parse($start_date)->format('Y-m-d'); $end_date2 = date('Y-m-d', strtotime($end_date.'+1 day')); }else{ $get_start = Supply::first(); $get_end = Supply::latest()->first(); $start_date = $get_start->created_at->format('Y-m-d'); $end_date = $get_end->created_at->format('Y-m-d'); $start_date2 = Carbon::parse($start_date)->format('Y-m-d'); $end_date2 = date('Y-m-d', strtotime($end_date.'+1 day')); } if($search_pajak){ $pasok = supply::select('supplies.*', 'products.status_pajak') ->join('products', 'supplies.kode_barang', '=', 'products.kode_barang') ->whereBetween('supplies.created_at', [$start_date2, $end_date2]) ->where('products.status_pajak', $search_pajak) ->where('supplies.status', 'lunas') ->orderBy('supplies.created_at', 'desc') ->where(function ($query) use($search_pembelian){ $query->where('supplies.kode_pasok', 'like', '%'.$search_pembelian.'%') ->orWhere('supplies.surat_jalan', 'like', '%'.$search_pembelian.'%') ->orWhere('supplies.no_faktur', 'like', '%'.$search_pembelian.'%') ->orWhere('supplies.nama_barang', 'like', '%'.$search_pembelian.'%') ->orWhereHas('supplier', function($query) use ($search_pembelian){ $query->where('nama', 'like', '%'.$search_pembelian.'%'); }); }) ->get(); } else{ $pasok = supply::select('supplies.*', 'products.status_pajak') ->join('products', 'supplies.kode_barang', '=', 'products.kode_barang') ->whereBetween('supplies.created_at', [$start_date2, $end_date2]) ->where('supplies.status', 'lunas') ->orderBy('supplies.created_at', 'desc') ->where(function ($query) use($search_pembelian){ $query->where('supplies.kode_pasok', 'like', '%'.$search_pembelian.'%') ->orWhere('supplies.surat_jalan', 'like', '%'.$search_pembelian.'%') ->orWhere('supplies.no_faktur', 'like', '%'.$search_pembelian.'%') ->orWhere('supplies.nama_barang', 'like', '%'.$search_pembelian.'%') ->orWhereHas('supplier', function($query) use ($search_pembelian){ $query->where('nama', 'like', '%'.$search_pembelian.'%'); }); }) ->get(); } $pasok = $pasok->sortBy('created_at'); $pasok = $pasok->values()->all(); // ===================================== Jumlah Stok ========================================== $dos = 0; $pack = 0; $harga_dos = 0; $harga_pack = 0; $harga_total = 0; foreach ($pasok as $key => $value) { $pp = Product::where('kode_barang', $value->kode_barang)->first(); if(strtolower($value->jenis_kemasan) == 'pack'){ $pack += $value->jumlah; $harga_pack += $value->subtotal; }else{ $dos += $value->jumlah / $pp->pack; $harga_dos += $value->subtotal; } $harga_total += $value->subtotal; } $dos = (int) $dos ; $pack = (int) $pack ; // ==================================== ganti data pasok =========================================== array_walk($pasok, function(&$item, $key) { $product = Product::where('kode_barang', $item->kode_barang)->first(); if(strtolower($item->jenis_kemasan) == 'pack'){ $item->jumlah = $item->jumlah; }else{ $item->jumlah = (int) $item->jumlah / $product->pack; } $item->status_pajak = (strtolower($item->status_pajak) == 'ppn') ? 'PPN' : 'Non PPN'; $item->nama_barang = $product->nama_barang; $item->id_worker = User::find($item->id_worker)->nama; $item->id_pemasok = Supplier::find($item->id_pemasok)->nama; $item->created_at = $item->created_at->format('d-m-Y H:i:s'); }); // =============================================================================== $pemasok = []; $jumlah_pemasok = 0; foreach ($pasok as $key => $value) { if(!in_array($value->id_pemasok, $pemasok)){ array_push($pemasok, $value->id_pemasok); $jumlah_pemasok++; } } if($filter == 'pasok'){ $supply = []; $kode_pasok = []; foreach ($pasok as $key => $value) { if(!in_array($value->kode_pasok, $kode_pasok)){ $total_harga = Supply::where('kode_pasok', $value->kode_pasok)->where('status', 'lunas')->sum('subtotal'); $value->subtotal = $total_harga; $jumlahBesar = Supply::join('products', 'supplies.kode_barang', '=', 'products.kode_barang') ->where('supplies.kode_pasok', $value->kode_pasok) ->where('supplies.status','lunas') ->where('supplies.jenis_kemasan', '!=', 'Pack') ->select(DB::raw('products.*,(supplies.jumlah / products.pack) as total_jumlah'))->get(); $value->jumlah_besar = $jumlahBesar->sum('total_jumlah'); $value->jumlah_kecil = Supply::where('kode_pasok', $value->kode_pasok)->where('status', 'lunas')->where('jenis_kemasan', 'pack')->sum('jumlah'); array_push($kode_pasok, $value->kode_pasok); array_push($supply, $value); } } $pasok = $supply; } $jumlah = count($pasok); // =============================================================================== $tgl1 = Carbon::parse($start_date)->isoFormat('D MMMM Y'); $tgl2 = Carbon::parse($end_date)->isoFormat('D MMMM Y'); $tgl = $tgl1.' s/d '.$tgl2; return view('report.print_laporan_pembelian', compact('pasok', 'dos', 'pack', 'harga_dos', 'harga_pack', 'tgl', 'jumlah', 'jumlah_pemasok', 'harga_total', 'filter')); }
Editor is loading...