ReportManageController.php
unknown
php_laravel_blade
3 years ago
21 kB
8
Indexable
public function exportReturPenjualan(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_retur_penjualan = $req->cari_retur_penjualan;
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', 'retur')
->where(function ($query) use($search_retur_penjualan){
$query->where('kode_transaksi', 'like', '%' . $search_retur_penjualan . '%')
->orWhere('nama_barang', 'like', '%' . $search_retur_penjualan . '%')
->orWhereHas('customer', function($query) use ($search_retur_penjualan){
$query->where('nama', 'like', '%'.$search_retur_penjualan.'%');
});
})
->orderBy('created_at', 'desc')
->get();
$transactionNonPPN = TransactionNonPPN::whereBetween('created_at', [$start_date2, $end_date2])
->select('transaction_non_ppn.kode_transaksi')
->where('status', 'retur')
->where(function ($query) use($search_retur_penjualan){
$query->where('kode_transaksi', 'like', '%' . $search_retur_penjualan . '%')
->orWhere('nama_barang', 'like', '%' . $search_retur_penjualan . '%')
->orWhereHas('customer', function($query) use ($search_retur_penjualan){
$query->where('nama', 'like', '%'.$search_retur_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','retur')->first();
if(!$cc){
$cc = TransactionNonPPN::where('kode_transaksi', $v)->where('status','retur')->first();
}
$bb = Customer::where('id', $cc->id_customer)->first();
$ttl = Transaction::where('kode_transaksi', $v)->where('status','retur')->sum('total_barang');
$ttl1 = TransactionNonPPN::where('kode_Transaksi', $v)->where('status','retur')->sum('total_barang');
$jumlahBesarPpn = Transaction::join('products', 'transactions.kode_barang', '=', 'products.kode_barang')
->where('transactions.kode_transaksi', $v)
->where('transactions.status','retur')
->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','retur')
->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','retur')->where('jenis_kemasan', 'Pack')->sum('jumlah');
$jumlahKecilNonPpn = TransactionNonPPN::where('kode_Transaksi', $v)->where('status','retur')->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', 'retur')
->orderBy('created_at', 'desc')
->where(function ($query) use($search_retur_penjualan){
$query->where('kode_transaksi', 'like', '%' . $search_retur_penjualan . '%')
->orWhere('nama_barang', 'like', '%' . $search_retur_penjualan . '%')
->orWhereHas('customer', function($query) use ($search_retur_penjualan){
$query->where('nama', 'like', '%'.$search_retur_penjualan.'%');
});
})
->get();
$data_trr = TransactionNonPPN::whereBetween('created_at',[$start_date2, $end_date2])
->where('status', 'retur')
->orderBy('created_at', 'desc')
->where(function ($query) use($search_retur_penjualan){
$query->where('kode_transaksi', 'like', '%' . $search_retur_penjualan . '%')
->orWhere('nama_barang', 'like', '%' . $search_retur_penjualan . '%')
->orWhereHas('customer', function($query) use ($search_retur_penjualan){
$query->where('nama', 'like', '%'.$search_retur_penjualan.'%');
});
})
->get();
$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_pack += $value->total_barang;
}else{
$dos += $value->jumlah / $pp->pack;
$total_dos += $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 ExportLaporanReturPenjualan($transaksi, $per_transaksi, $filter, $penjualan, $jumlah_dos, $jumlah_pack, $tgl, $jumlah, $jumlah_pelanggan, $total_harga, $total_dos, $total_pack), 'retur penjualan-'.now().'.xlsx');
}
public function printReturPenjualan(Request $req)
{
$search_retur_penjualan = $req->cari_retur_penjualan;
$filter = $req->filter;
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', 'retur')
->where(function ($query) use($search_retur_penjualan){
$query->where('kode_transaksi', 'like', '%' . $search_retur_penjualan . '%')
->orWhere('nama_barang', 'like', '%' . $search_retur_penjualan . '%')
->orWhereHas('customer', function($query) use ($search_retur_penjualan){
$query->where('nama', 'like', '%'.$search_retur_penjualan.'%');
});
})
->orderBy('created_at', 'desc')
->get();
$transactionNonPPN = TransactionNonPPN::whereBetween('created_at', [$start_date2, $end_date2])
->select('transaction_non_ppn.kode_transaksi')
->where('status', 'retur')
->where(function ($query) use($search_retur_penjualan){
$query->where('kode_transaksi', 'like', '%' . $search_retur_penjualan . '%')
->orWhere('nama_barang', 'like', '%' . $search_retur_penjualan . '%')
->orWhereHas('customer', function($query) use ($search_retur_penjualan){
$query->where('nama', 'like', '%'.$search_retur_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','retur')->first();
if(!$cc){
$cc = TransactionNonPPN::where('kode_transaksi', $v)->where('status','retur')->first();
}
$bb = Customer::where('id', $cc->id_customer)->first();
$ttl = Transaction::where('kode_transaksi', $v)->where('status','retur')->sum('total_barang');
$ttl1 = TransactionNonPPN::where('kode_Transaksi', $v)->where('status','retur')->sum('total_barang');
$jumlahBesarPpn = Transaction::join('products', 'transactions.kode_barang', '=', 'products.kode_barang')
->where('transactions.kode_transaksi', $v)
->where('transactions.status','retur')
->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','retur')
->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','retur')->where('jenis_kemasan', 'Pack')->sum('jumlah');
$jumlahKecilNonPpn = TransactionNonPPN::where('kode_Transaksi', $v)->where('status','retur')->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', 'retur')
->orderBy('created_at', 'desc')
->where(function ($query) use($search_retur_penjualan){
$query->where('kode_transaksi', 'like', '%' . $search_retur_penjualan . '%')
->orWhere('nama_barang', 'like', '%' . $search_retur_penjualan . '%')
->orWhereHas('customer', function($query) use ($search_retur_penjualan){
$query->where('nama', 'like', '%'.$search_retur_penjualan.'%');
});
})
->get();
$data_trr = TransactionNonPPN::whereBetween('created_at',[$start_date2, $end_date2])
->where('status', 'retur')
->orderBy('created_at', 'desc')
->where(function ($query) use($search_retur_penjualan){
$query->where('kode_transaksi', 'like', '%' . $search_retur_penjualan . '%')
->orWhere('nama_barang', 'like', '%' . $search_retur_penjualan . '%')
->orWhereHas('customer', function($query) use ($search_retur_penjualan){
$query->where('nama', 'like', '%'.$search_retur_penjualan.'%');
});
})
->get();
$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_pack += $value->total_barang;
}else{
$dos += $value->jumlah / $pp->pack;
$total_dos += $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++;
}
}
// ===============================================================================
$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_retur_penjualan', compact('transaksi' ,'per_transaksi','filter', 'penjualan', 'dos', 'pack', 'tgl', 'jumlah', 'jumlah_pelanggan', 'total_harga', 'total_dos', 'total_pack'));
}Editor is loading...