Fungsi Laporan stok
FIKRI
php_laravel_blade
3 years ago
11 kB
10
Indexable
public function getLaporanStokFilterAwal(Request $req)
{
$cari = $req->cari;
if ($req->pajak != "") {
$product = Product::where('status_pajak', $req->pajak)
->where(function ($query)use($cari){
$query->where('nama_barang','like', '%'.$cari.'%')
->orWhere('kode_barang', '%'.$cari.'%');
})->orderBy('nama_barang')->get();
}else{
$product = Product::where('nama_barang','like', '%'.$cari.'%')
->orWhere('kode_barang','like','%'.$cari.'%')
->orderBy('nama_barang')->get();
}
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{
$supply_start = Supply::first();
$transppn_start = Transaction::first();
$trans_nonppn_start = TransactionNonPPN::first();
if($trans_nonppn_start && $transppn_start){
if($trans_nonppn_start > $transppn_start){
$get_start = $transppn_start;
}else{
$get_start = $trans_nonppn_start;
}
}else if($transppn_start){
$get_start = $transppn_start;
}else if($trans_nonppn_start){
$get_start = $trans_nonppn_start;
}
if($get_start && $supply_start){
if($get_start > $supply_start){
$get_start = $supply_start;
}
}else if($supply_start){
$get_start = $supply_start;
}
if($trans_nonppn_start && $transppn_start){
if($trans_nonppn_start < $transppn_start){
$get_end = $transppn_start;
}else{
$get_end = $trans_nonppn_start;
}
}else if($transppn_start){
$get_end = $transppn_start;
}else if($trans_nonppn_start){
$get_end = $trans_nonppn_start;
}
if($get_end && $supply_start){
if($get_end < $supply_start){
$get_end = $supply_start;
}
}else if($supply_start){
$get_end = $supply_start;
}
$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'));
}
$tgl1 = Carbon::parse($start_date)->isoFormat('D MMMM Y');
$tgl2 = Carbon::parse($end_date)->isoFormat('D MMMM Y');
$tgl = $tgl1.' s/d '.$tgl2;
$data = [];
$total_barang = 0;
$ppn = 0;
$nonppn = 0;
$sb_awal = 0;
$sk_awal = 0;
$sb_masuk = 0;
$sk_masuk = 0;
$sb_keluar = 0;
$sk_keluar = 0;
$sb_akhir = 0;
$sk_akhir = 0;
$tb_nilai = 0;
$tk_nilai = 0;
foreach ($product as $key => $value) {
// ===================versi sblm bulan 8 =======================//
$pasok_awal = Supply::where('created_at', '<', $start_date2)->where('kode_barang',$value->kode_barang)
->where('status', 'lunas')->get();
if($value->status_pajak == 'ppn'){
$transaksi_awal = Transaction::where('created_at', '<', $start_date2)->where('kode_barang',$value->kode_barang)
->where('status', 'lunas')->get();
}
else{
$transaksi_awal = TransactionNonPPN::where('created_at', '<', $start_date2)->where('kode_barang',$value->kode_barang)
->where('status', 'lunas')->get();
}
$data_awal = $pasok_awal->concat($transaksi_awal);
$pasok_awal_besar = $pasok_awal->where('jenis_kemasan', '!=', 'pack')->sum('jumlah')/$value->pack;
$transaksi_awal_besar = $transaksi_awal->where('jenis_kemasan', '!=', 'Pack')->sum('jumlah')/$value->pack;
$pasok_awal_kecil = $pasok_awal->where('jenis_kemasan', 'pack')->sum('jumlah');
$transaksi_awal_kecil = $transaksi_awal->where('jenis_kemasan', 'Pack')->sum('jumlah');
$stok_awal_b = $pasok_awal_besar - $transaksi_awal_besar;
$stok_awal_k = $pasok_awal_kecil - $transaksi_awal_kecil;
$sb_awal += $stok_awal_b;
$sk_awal += $stok_awal_k;
;
$harga_beli_besar = ($data_awal == null) ? 0 : $value->harga_modal_dos;
$harga_beli_kecil = ($data_awal == null) ? 0 : $value->harga_modal_pack;
$harga_jual_besar = ($data_awal == null) ? 0 : $value->harga_jual_dos;
$harga_jual_kecil = ($data_awal == null) ? 0 : $value->harga_jual_pack;
$summ_stok_besar = Supply::whereBetween('created_at', [$start_date2, $end_date2])
->where('kode_barang', $value->kode_barang)->where('status', 'lunas')->where('jenis_kemasan', '!=', 'pack')->sum('jumlah')/$value->pack;
$summ_stok_kecil = Supply::whereBetween('created_at', [$start_date2, $end_date2])
->where('kode_barang', $value->kode_barang)->where('status', 'lunas')->where('jenis_kemasan', 'pack')->sum('jumlah');
$summ_total_harga_besar = Supply::whereBetween('created_at', [$start_date2, $end_date2])
->where('kode_barang', $value->kode_barang)->where('status', 'lunas')->where('jenis_kemasan', '!=', 'pack')->sum('subtotal');
$summ_total_harga_kecil = Supply::whereBetween('created_at', [$start_date2, $end_date2])
->where('kode_barang', $value->kode_barang)->where('status', 'lunas')->where('jenis_kemasan', 'pack')->sum('subtotal');
if($value->status_pajak == 'ppn'){
$sum_stok_besar = Transaction::whereBetween('created_at', [$start_date2, $end_date2])
->where('kode_barang', $value->kode_barang)->where('jenis_kemasan', '!=', 'Pack')->where('status', 'lunas')->sum('jumlah')/$value->pack;
$sum_stok_kecil = Transaction::whereBetween('created_at', [$start_date2, $end_date2])
->where('kode_barang', $value->kode_barang)->where('jenis_kemasan', 'Pack')->where('status', 'lunas')->sum('jumlah');
$sum_total_harga_besar = Transaction::whereBetween('created_at', [$start_date2, $end_date2])
->where('kode_barang', $value->kode_barang)->where('jenis_kemasan', '!=' , 'Pack')->where('status', 'lunas')->sum('total_barang');
$sum_total_harga_kecil = Transaction::whereBetween('created_at', [$start_date2, $end_date2])
->where('kode_barang', $value->kode_barang)->where('jenis_kemasan', 'Pack')->where('status', 'lunas')->sum('total_barang');
}
else{
$sum_stok_besar = TransactionNonPPN::whereBetween('created_at', [$start_date2, $end_date2])
->where('kode_barang', $value->kode_barang)->where('jenis_kemasan', '!=', 'Pack')->where('status', 'lunas')->sum('jumlah')/$value->pack;
$sum_stok_kecil = TransactionNonPPN::whereBetween('created_at', [$start_date2, $end_date2])
->where('kode_barang', $value->kode_barang)->where('jenis_kemasan', 'Pack')->where('status', 'lunas')->sum('jumlah');
$sum_total_harga_besar = TransactionNonPPN::whereBetween('created_at', [$start_date2, $end_date2])
->where('kode_barang', $value->kode_barang)->where('jenis_kemasan', '!=', 'Pack')->where('status', 'lunas')->sum('total_barang');
$sum_total_harga_kecil = TransactionNonPPN::whereBetween('created_at', [$start_date2, $end_date2])
->where('kode_barang', $value->kode_barang)->where('jenis_kemasan', 'Pack')->where('status', 'lunas')->sum('total_barang');
}
$sb_masuk += $summ_stok_besar;
$sk_masuk += $summ_stok_kecil;
$sb_keluar += $sum_stok_besar;
$sk_keluar += $sum_stok_kecil;
$stok_akhir_b = $stok_awal_b + $summ_stok_besar - $sum_stok_besar;
$stok_akhir_k = $stok_awal_k + $summ_stok_kecil - $sum_stok_kecil;
$nn = $stok_akhir_b * $harga_beli_besar;
$tb_nilai += $nn;
$nk = $stok_akhir_k * $harga_beli_kecil;
$tk_nilai += $nk;
array_push($data, [
'kode_barang' => $value->kode_barang,
'nama_barang' => $value->nama_barang,
'stok_awal_besar' => $stok_awal_b.' '.$value->master_kemasan,
'stok_awal_kecil' => $stok_awal_k.' Pack',
'stok_masuk_besar' => $summ_stok_besar.' '.$value->master_kemasan,
'harga_beli_besar' => number_format($harga_beli_besar,2,',','.'),
'total_nilai_besar' => number_format($summ_total_harga_besar,2,',','.'),
'stok_masuk_kecil' => $summ_stok_kecil.' Pack',
'harga_beli_kecil' => number_format($harga_beli_kecil,2,',','.'),
'total_nilai_kecil' => number_format($summ_total_harga_kecil,2,',','.'),
'stok_keluar_besar' => $sum_stok_besar.' '.$value->master_kemasan,
'harga_jual_besar' => number_format($harga_jual_besar,2,',','.'),
'total_nilai_jual_besar' => number_format($sum_total_harga_besar,2,',','.'),
'stok_keluar_kecil' => $sum_stok_kecil.' Pack',
'harga_jual_kecil' => number_format($harga_jual_kecil,2,',','.'),
'total_nilai_jual_kecil' => number_format($sum_total_harga_kecil,2,',','.'),
'stok_akhir_besar' => $stok_akhir_b.' '.$value->master_kemasan,
'stok_akhir_kecil' => $stok_akhir_k.' Pack',
'stok_rupiah_besar' => number_format($nn,2,',','.'),
'stok_rupiah_kecil' => number_format($nk,2,',','.'),
'status_pajak' => ($value->status_pajak == 'ppn') ? 'PPN' : 'Non PPN',
]);
if($value->status_pajak == 'ppn'){
$ppn++;
}else{
$nonppn++;
}
$total_barang++;
}
return request()->json(200,[
'tgl' => $tgl,
'data' => $data,
'ppn' => $ppn,
'nonppn' => $nonppn,
'stok_awal_besar' => $sb_awal,
'stok_awal_kecil' => $sk_awal,
'stok_masuk_besar' => $sb_masuk,
'stok_masuk_kecil' => $sk_masuk,
'stok_keluar_besar' => $sb_keluar,
'stok_keluar_kecil' => $sk_keluar,
'stok_akhir_besar' => $sb_akhir,
'stok_akhir_kecil' => $sk_akhir,
'nilai_akhir_besar' => number_format($tb_nilai,2,',','.'),
'nilai_akhir_kecil' => number_format($tk_nilai,2,',','.'),
'total_barang' => $total_barang
]);
}Editor is loading...