<?php
namespace App\Http\Controllers;
use App\Exports\GudangExport;
use App\Exports\HutangExport;
use App\Exports\ServicesExport;
use App\Exports\ItemExport;
use App\Exports\KirimSuppliersExport;
use App\Exports\LaporanPelangganExport;
use App\Exports\PembelianExport;
use App\Exports\PenjualanExport;
use App\Exports\PiutangExport;
use App\Exports\ReturPembelianExport;
use App\Exports\ReturPenjualanExport;
use App\Exports\uangMukaExport;
use App\Models\DetailKirimSupplier;
use App\Models\DetailReturPembelian;
use App\Models\Item;
use App\Models\JenisItem;
use App\Models\KategoriItem;
use App\Models\Pelanggan;
use App\Models\Penjualan;
use App\Models\Pembelian;
use App\Models\Pengguna;
use App\Models\ReturPembelian;
use App\Models\ReturPenjualan;
use App\Models\Service;
use App\Models\Supplier;
use App\Models\Teknisi;
use App\Models\Toko;
use App\Models\TransaksiGudang;
use Barryvdh\DomPDF\Facade\Pdf;
use Illuminate\Http\Request;
use DateInterval;
use DatePeriod;
use DateTime;
use Illuminate\Support\Facades\Log;
use Maatwebsite\Excel\Facades\Excel;
class LaporanController extends Controller
{
public function index()
{
return response()->view("laporan.index");
}
public function penjualan(Request $request)
{
try {
$penjualan = new Penjualan;
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$start = $begin->format('Y-m-d');
$finish = $end->format('Y-m-d');
if ($start == $finish) {
$datas = Penjualan::with('detail_penjualan.detail_pengembalians')
->where('status_pembayaran', 'lunas')->whereNull('status_lanjutan')
->whereDate("jam_selesai", $begin->format("Y-m-d"))
->filterToko();
} else {
$datas = Penjualan::with('detail_penjualan.detail_pengembalians')
->where('status_pembayaran', 'lunas')->whereNull('status_lanjutan')
->whereDateBetween("jam_selesai", [$begin->format('Y-m-d'), $end->format('Y-m-d')])
->filterToko();
}
if (isset($request->pengguna_id) && $request->pengguna_id != "") {
$datas = $datas->where('pengguna_id', $request->pengguna_id);
}
if (isset($request->cari)) {
$datas = $datas->cari($request->cari);
}
$penjualan = $datas->get();
$penjualan_cash = Penjualan::where('status_pembayaran', 'lunas')->whereNull('status_lanjutan')->whereDateBetween("jam_selesai", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->where('metode_bayar', 'cash')->filterToko()->get();
$penjualan_transfer = Penjualan::where('status_pembayaran', 'lunas')->whereNull('status_lanjutan')->whereDateBetween("jam_selesai", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->where('metode_bayar', 'transfer')->filterToko()->get();
$jumlah_penjualan = $datas->count();
$pendapatan = 0;
$pendapatan_cash = 0;
$pendapatan_transfer = 0;
$modal = 0;
$jual = 0;
$laba_rugi = 0;
foreach ($penjualan as $penjualan) {
$pendapatan += $penjualan->total;
$modal += $penjualan->total_modal;
$jual += $penjualan->total;
$laba_rugi += $penjualan->total - $penjualan->total_modal;
}
foreach ($penjualan_cash as $penjualan_cash) {
$pendapatan_cash += $penjualan_cash->total;
}
foreach ($penjualan_transfer as $penjualan_transfer) {
$pendapatan_transfer += $penjualan_transfer->total;
}
$datas = $datas->paginate(10);
$pengguna = Pengguna::all();
$data = [
"request" => $request,
'datas' => $datas,
'modal' => $modal,
'jual' => $jual,
'laba_rugi' => $laba_rugi,
'pengguna' => $pengguna,
'jumlah_penjualan' => $jumlah_penjualan,
"pendapatan" => $pendapatan,
"pendapatan_transfer" => $pendapatan_transfer,
"pendapatan_cash" => $pendapatan_cash,
"periode" => $periode
];
return response()->view("laporan.penjualan.index", $data);
} catch (\Throwable $th) {
Log::error($th);
return redirect()->route('laporan')->with('error', 'Error, tidak bisa menampilkan laporan');
}
}
public function service(Request $request)
{
try {
// dd( url()->current());
// dd( '?'.http_build_query($request->query()));
// this will default to a time of 00:00:00
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$start = $begin->format('Y-m-d');
$finish = $end->format('Y-m-d');
if ($start == $finish) {
$datas = Service::where('status_transaksi', 'success')
->whereDate("jam_selesai", $begin->format("Y-m-d"))
->filterToko();
} else {
$datas = Service::where('status_transaksi', 'success')->selesai($begin, $end)->where('status_pembayaran', 'lunas')->filterToko();
}
if (!isset($request->sorting_order)) {
$sorting_order = "asc";
}
if (isset($request->sorting_order)) {
if ($request->sorting_order == "desc") {
$sorting_order = "asc";
} else if ($request->sorting_order == "asc") {
$sorting_order = "desc";
}
}
if (isset($request->status)) {
$datas = $datas->where("status", $request->status);
}
if (isset($request->search)) {
$datas = $datas->cari($request->search);
}
if (isset($request->pengguna_id)) {
$datas = $datas->where('pengguna_id', $request->pengguna_id);
}
if (isset($request->teknisi_id)) {
$datas = $datas->where('teknisi_id', $request->teknisi_id);
}
if (isset($request->sale_id)) {
$datas = $datas->where('sale_id', $request->sale_id);
}
if (isset($request->sales_out)) {
$datas = $datas->where('sales_out', $request->sales_out);
}
if (isset($request->kasir_out)) {
$datas = $datas->where('kasir_out', $request->kasir_out);
}
if (isset($request->jenis_id)) {
$datas = $datas->jenis($request->jenis_id);
}
if (isset($request->order)) {
$order = $request->order;
if ($request->order == "nama_pelanggan") {
$datas = $datas->orderBy(
Pelanggan::select("nama_pelanggan")
->whereColumn('pelanggans.id', 'services.pelanggan_id'),
$sorting_order
);
} else {
//$datas = $datas->orderBy($request->order, $sorting_order);
}
} else {
$datas = $datas->orderBy("tanggal_selesai", "desc")->orderBy("jam_selesai", "desc");
}
$s_laba_rugi_jasa = 0;
$s_modal_sparepart = 0;
$s_jual_sparepart = 0;
$s_laba_rugi_sparepart = 0;
$s_laba_total = 0;
$s_omset_total = 0;
$omset_cash = 0;
$omset_transfer = 0;
foreach ($datas->get() as $s) {
// if ($s->status_transaksi == 'success') {
// $s_omset_total += $s->grand_total;
// $s_laba_rugi_jasa += ($s->biaya + $s->total_jual_sparepart_luar) - $s->total_modal_sparepart_luar;
// $s_modal_sparepart += $s->total_modal_sparepart;
// $s_jual_sparepart += $s->total_jual_sparepart;
// $s_laba_rugi_sparepart += $s->total_jual_sparepart - $s->total_modal_sparepart;
// $s_laba_total += ($s->total_jual_sparepart - $s->total_modal_sparepart) + $s->biaya;
// $has_cash = false;
// $has_transfer = false;
// foreach ($s->pembayaran_service as $pembayaran) {
// if ($pembayaran->metode_bayar == 'cash') {
// $has_cash = true;
// } elseif ($pembayaran->metode_bayar == 'transfer') {
// $has_transfer = true;
// }
// }
// // Allocate the grand_total to the corresponding payment methods
// if ($has_cash) {
// $omset_cash += $s->grand_total;
// }
// if ($has_transfer) {
// $omset_transfer += $s->grand_total;
// }
// }
$s_omset_total += $s->grand_total;
$s_laba_rugi_jasa += ($s->biaya + $s->total_jual_sparepart_luar) - $s->total_modal_sparepart_luar;
$s_modal_sparepart += $s->total_modal_sparepart;
$s_jual_sparepart += $s->total_jual_sparepart;
$s_laba_rugi_sparepart += $s->total_jual_sparepart - $s->total_modal_sparepart;
$s_laba_total += ($s->total_jual_sparepart - $s->total_modal_sparepart) + $s->biaya;
$has_cash = false;
$has_transfer = false;
foreach ($s->pembayaran_service as $pembayaran) {
if ($pembayaran->metode_bayar == 'cash') {
$has_cash = true;
} elseif ($pembayaran->metode_bayar == 'transfer') {
$has_transfer = true;
}
}
// Allocate the grand_total to the corresponding payment methods
if ($has_cash) {
$omset_cash += $s->grand_total;
}
if ($has_transfer) {
$omset_transfer += $s->grand_total;
}
}
$total_transaksi = $datas->count();
$services = $datas->get();
$datas = $datas->paginate(10);
$total_barang_terjual = 0;
foreach ($services as $s) {
foreach ($s->detail as $d) {
$total_barang_terjual += $d->jumlah;
}
}
$pengguna = Pengguna::all();
// $teknisi = Teknisi::all();
$jenis = JenisItem::where('kategori_item_id', 4)->get();
$data = [
"request" => $request,
"datas" => $datas,
"jenis" => $jenis,
// "teknisi" => $teknisi,
"pengguna" => $pengguna,
"total_transaksi" => $total_transaksi,
"total_barang_terjual" => $total_barang_terjual,
"sorting_order" => $sorting_order,
"s_laba_rugi_jasa" => $s_laba_rugi_jasa,
"s_modal_sparepart" => $s_modal_sparepart,
"s_jual_sparepart" => $s_jual_sparepart,
"s_laba_rugi_sparepart" => $s_laba_rugi_sparepart,
"s_laba_total" => $s_laba_total,
"s_omset_total" => $s_omset_total,
"omset_cash" => $omset_cash,
"omset_transfer" => $omset_transfer,
];
return response()->view("laporan.service.index", $data);
} catch (\Throwable $th) {
Log::error($th);
return redirect()->route('laporan')->with('error', 'Error, tidak bisa menampilkan laporan');
}
}
public function serviceGaransi(Request $request)
{
try {
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$start = $begin->format('Y-m-d');
$finish = $end->format('Y-m-d');
if ($start == $finish) {
$datas = Service::where('garansi', 1)
->whereDate("tanggal", $begin->format("Y-m-d"))
->filterToko();
} else {
$datas = Service::where('garansi', 1)->tanggal($begin, $end)->filterToko();
}
if (!isset($request->sorting_order)) {
$sorting_order = "asc";
}
if (isset($request->sorting_order)) {
if ($request->sorting_order == "desc") {
$sorting_order = "asc";
} else if ($request->sorting_order == "asc") {
$sorting_order = "desc";
}
}
if (isset($request->status)) {
$datas = $datas->where("status", $request->status);
}
if (isset($request->search)) {
$datas = $datas->cari($request->search);
}
if (isset($request->pengguna_id)) {
$datas = $datas->where('pengguna_id', $request->pengguna_id);
}
if (isset($request->teknisi_id)) {
$datas = $datas->where('teknisi_id', $request->teknisi_id);
}
if (isset($request->sale_id)) {
$datas = $datas->where('sale_id', $request->sale_id);
}
if (isset($request->sales_out)) {
$datas = $datas->where('sales_out', $request->sales_out);
}
if (isset($request->kasir_out)) {
$datas = $datas->where('kasir_out', $request->kasir_out);
}
if (isset($request->jenis_id)) {
$datas = $datas->jenis($request->jenis_id);
}
if (isset($request->order)) {
$order = $request->order;
if ($request->order == "nama_pelanggan") {
$datas = $datas->orderBy(
Pelanggan::select("nama_pelanggan")
->whereColumn('pelanggans.id', 'services.pelanggan_id'),
$sorting_order
);
} else {
//$datas = $datas->orderBy($request->order, $sorting_order);
}
} else {
$datas = $datas->orderBy("tanggal_selesai", "desc")->orderBy("jam_selesai", "desc");
}
$s_laba_rugi_jasa = 0;
$s_modal_sparepart = 0;
$s_jual_sparepart = 0;
$s_laba_rugi_sparepart = 0;
$s_laba_total = 0;
$s_omset_total = 0;
$omset_cash = 0;
$omset_transfer = 0;
foreach ($datas->get() as $s) {
// if ($s->status_transaksi == 'success') {
// $s_omset_total += $s->grand_total;
// $s_laba_rugi_jasa += ($s->biaya + $s->total_jual_sparepart_luar) - $s->total_modal_sparepart_luar;
// $s_modal_sparepart += $s->total_modal_sparepart;
// $s_jual_sparepart += $s->total_jual_sparepart;
// $s_laba_rugi_sparepart += $s->total_jual_sparepart - $s->total_modal_sparepart;
// $s_laba_total += ($s->total_jual_sparepart - $s->total_modal_sparepart) + $s->biaya;
// $has_cash = false;
// $has_transfer = false;
// foreach ($s->pembayaran_service as $pembayaran) {
// if ($pembayaran->metode_bayar == 'cash') {
// $has_cash = true;
// } elseif ($pembayaran->metode_bayar == 'transfer') {
// $has_transfer = true;
// }
// }
// // Allocate the grand_total to the corresponding payment methods
// if ($has_cash) {
// $omset_cash += $s->grand_total;
// }
// if ($has_transfer) {
// $omset_transfer += $s->grand_total;
// }
// }
$s_omset_total += $s->grand_total;
$s_laba_rugi_jasa += ($s->biaya + $s->total_jual_sparepart_luar) - $s->total_modal_sparepart_luar;
$s_modal_sparepart += $s->total_modal_sparepart;
$s_jual_sparepart += $s->total_jual_sparepart;
$s_laba_rugi_sparepart += $s->total_jual_sparepart - $s->total_modal_sparepart;
$s_laba_total += ($s->total_jual_sparepart - $s->total_modal_sparepart) + $s->biaya;
$has_cash = false;
$has_transfer = false;
foreach ($s->pembayaran_service as $pembayaran) {
if ($pembayaran->metode_bayar == 'cash') {
$has_cash = true;
} elseif ($pembayaran->metode_bayar == 'transfer') {
$has_transfer = true;
}
}
// Allocate the grand_total to the corresponding payment methods
if ($has_cash) {
$omset_cash += $s->grand_total;
}
if ($has_transfer) {
$omset_transfer += $s->grand_total;
}
}
$total_transaksi = $datas->count();
$services = $datas->get();
$datas = $datas->paginate(10);
$total_barang_terjual = 0;
foreach ($services as $s) {
foreach ($s->detail as $d) {
$total_barang_terjual += $d->jumlah;
}
}
$pengguna = Pengguna::all();
// $teknisi = Teknisi::all();
$jenis = JenisItem::where('kategori_item_id', 4)->get();
$data = [
"request" => $request,
"datas" => $datas,
"jenis" => $jenis,
// "teknisi" => $teknisi,
"pengguna" => $pengguna,
"total_transaksi" => $total_transaksi,
"total_barang_terjual" => $total_barang_terjual,
"sorting_order" => $sorting_order,
"s_laba_rugi_jasa" => $s_laba_rugi_jasa,
"s_modal_sparepart" => $s_modal_sparepart,
"s_jual_sparepart" => $s_jual_sparepart,
"s_laba_rugi_sparepart" => $s_laba_rugi_sparepart,
"s_laba_total" => $s_laba_total,
"s_omset_total" => $s_omset_total,
"omset_cash" => $omset_cash,
"omset_transfer" => $omset_transfer,
];
return response()->view("laporan.service-garansi.index", $data);
} catch (\Throwable $th) {
Log::error($th);
return redirect()->route('laporan')->with('error', 'Error, tidak bisa menampilkan laporan');
}
}
public function serviceRefund(Request $request)
{
try {
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$start = $begin->format('Y-m-d');
$finish = $end->format('Y-m-d');
if ($start == $finish) {
$datas = Service::where('status_pembayaran', 'refund')
->whereDate("tanggal", $begin->format("Y-m-d"))
->filterToko();
} else {
$datas = Service::where('status_pembayaran', 'refund')->tanggal($begin, $end)->filterToko();
}
if (!isset($request->sorting_order)) {
$sorting_order = "asc";
}
if (isset($request->sorting_order)) {
if ($request->sorting_order == "desc") {
$sorting_order = "asc";
} else if ($request->sorting_order == "asc") {
$sorting_order = "desc";
}
}
if (isset($request->status)) {
$datas = $datas->where("status", $request->status);
}
if (isset($request->search)) {
$datas = $datas->cari($request->search);
}
if (isset($request->pengguna_id)) {
$datas = $datas->where('pengguna_id', $request->pengguna_id);
}
if (isset($request->teknisi_id)) {
$datas = $datas->where('teknisi_id', $request->teknisi_id);
}
if (isset($request->sale_id)) {
$datas = $datas->where('sale_id', $request->sale_id);
}
if (isset($request->sales_out)) {
$datas = $datas->where('sales_out', $request->sales_out);
}
if (isset($request->kasir_out)) {
$datas = $datas->where('kasir_out', $request->kasir_out);
}
if (isset($request->jenis_id)) {
$datas = $datas->jenis($request->jenis_id);
}
if (isset($request->order)) {
$order = $request->order;
if ($request->order == "nama_pelanggan") {
$datas = $datas->orderBy(
Pelanggan::select("nama_pelanggan")
->whereColumn('pelanggans.id', 'services.pelanggan_id'),
$sorting_order
);
} else {
//$datas = $datas->orderBy($request->order, $sorting_order);
}
} else {
$datas = $datas->orderBy("tanggal_selesai", "desc")->orderBy("jam_selesai", "desc");
}
$s_laba_rugi_jasa = 0;
$s_modal_sparepart = 0;
$s_jual_sparepart = 0;
$s_laba_rugi_sparepart = 0;
$s_laba_total = 0;
$s_omset_total = 0;
$omset_cash = 0;
$omset_transfer = 0;
foreach ($datas->get() as $s) {
// if ($s->status_transaksi == 'success') {
// $s_omset_total += $s->grand_total;
// $s_laba_rugi_jasa += ($s->biaya + $s->total_jual_sparepart_luar) - $s->total_modal_sparepart_luar;
// $s_modal_sparepart += $s->total_modal_sparepart;
// $s_jual_sparepart += $s->total_jual_sparepart;
// $s_laba_rugi_sparepart += $s->total_jual_sparepart - $s->total_modal_sparepart;
// $s_laba_total += ($s->total_jual_sparepart - $s->total_modal_sparepart) + $s->biaya;
// $has_cash = false;
// $has_transfer = false;
// foreach ($s->pembayaran_service as $pembayaran) {
// if ($pembayaran->metode_bayar == 'cash') {
// $has_cash = true;
// } elseif ($pembayaran->metode_bayar == 'transfer') {
// $has_transfer = true;
// }
// }
// // Allocate the grand_total to the corresponding payment methods
// if ($has_cash) {
// $omset_cash += $s->grand_total;
// }
// if ($has_transfer) {
// $omset_transfer += $s->grand_total;
// }
// }
$s_omset_total += $s->grand_total;
$s_laba_rugi_jasa += ($s->biaya + $s->total_jual_sparepart_luar) - $s->total_modal_sparepart_luar;
$s_modal_sparepart += $s->total_modal_sparepart;
$s_jual_sparepart += $s->total_jual_sparepart;
$s_laba_rugi_sparepart += $s->total_jual_sparepart - $s->total_modal_sparepart;
$s_laba_total += ($s->total_jual_sparepart - $s->total_modal_sparepart) + $s->biaya;
$has_cash = false;
$has_transfer = false;
foreach ($s->pembayaran_service as $pembayaran) {
if ($pembayaran->metode_bayar == 'cash') {
$has_cash = true;
} elseif ($pembayaran->metode_bayar == 'transfer') {
$has_transfer = true;
}
}
// Allocate the grand_total to the corresponding payment methods
if ($has_cash) {
$omset_cash += $s->grand_total;
}
if ($has_transfer) {
$omset_transfer += $s->grand_total;
}
}
$total_transaksi = $datas->count();
$services = $datas->get();
$datas = $datas->paginate(10);
$total_barang_terjual = 0;
foreach ($services as $s) {
foreach ($s->detail as $d) {
$total_barang_terjual += $d->jumlah;
}
}
$pengguna = Pengguna::all();
// $teknisi = Teknisi::all();
$jenis = JenisItem::where('kategori_item_id', 4)->get();
$data = [
"request" => $request,
"datas" => $datas,
"jenis" => $jenis,
// "teknisi" => $teknisi,
"pengguna" => $pengguna,
"total_transaksi" => $total_transaksi,
"total_barang_terjual" => $total_barang_terjual,
"sorting_order" => $sorting_order,
"s_laba_rugi_jasa" => $s_laba_rugi_jasa,
"s_modal_sparepart" => $s_modal_sparepart,
"s_jual_sparepart" => $s_jual_sparepart,
"s_laba_rugi_sparepart" => $s_laba_rugi_sparepart,
"s_laba_total" => $s_laba_total,
"s_omset_total" => $s_omset_total,
"omset_cash" => $omset_cash,
"omset_transfer" => $omset_transfer,
];
return response()->view("laporan.service-refund.index", $data);
} catch (\Throwable $th) {
Log::error($th);
return redirect()->route('laporan')->with('error', 'Error, tidak bisa menampilkan laporan');
}
}
public function pembelian(Request $request)
{
// this will default to a time of 00:00:00
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$start = $begin->format('Y-m-d');
$finish = $end->format('Y-m-d');
if ($start == $finish) {
$datas = Pembelian::with('detail_pembelian')->whereDate("created_at", $begin->format('Y-m-d'))->filterToko()->latest()->paginate(10);
} else {
$datas = Pembelian::with('detail_pembelian')->whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko()->latest()->paginate(10);
}
$jumlahPembelian = Pembelian::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko()->count();
$pembelian = Pembelian::with('detail_pembelian')->whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko()->latest()->get();
$totalPembelian = 0;
$jumlahBarang = 0;
foreach ($pembelian as $p) {
$totalPembelian += $p->total;
if (isset($p->detail_pembelian)) {
foreach ($p->detail_pembelian as $dp) {
$jumlahBarang += $dp->qty;
}
}
}
$data = [
'datas' => $datas,
'jumlahPembelian' => $jumlahPembelian,
'totalPembelian' => $totalPembelian,
'jumlahBarang' => $jumlahBarang,
];
return response()->view('laporan.pembelian.index', $data);
}
public function returPenjualan()
{
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$datas = ReturPenjualan::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko()->paginate(10);
$returPenjualan = ReturPenjualan::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko()->get();
$jumlahReturPenjualan = ReturPenjualan::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko()->count();
$jumlahBarang = 0;
foreach ($returPenjualan as $rp) {
if (isset($rp->detail)) {
foreach ($rp->detail as $detail) {
$jumlahBarang += $detail->qry;
}
}
}
$data = [
'datas' => $datas,
'jumlahReturPenjualan' => $jumlahReturPenjualan,
'jumlahBarang' => $jumlahBarang,
];
return response()->view("laporan.retur_penjualan.index", $data);
}
public function returPembelian()
{
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$datas = ReturPembelian::with('detail.item')->whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko()->paginate(10);
$returPembelian = ReturPembelian::with('detail.item')->whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko()->get();
$jumlahReturPembelian = ReturPembelian::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko()->count();
$jumlahBarang = 0;
$nominalBarang = 0;
foreach ($returPembelian as $rp) {
if (isset($rp->detail)) {
foreach ($rp->detail as $detail) {
$jumlahBarang += $detail->qty;
$nominalBarang += $detail->item->biaya_item;
}
}
}
$data = [
'datas' => $datas,
'jumlahReturPembelian' => $jumlahReturPembelian,
'jumlahBarang' => $jumlahBarang,
'nominalBarang' => $nominalBarang,
];
return response()->view("laporan.retur_pembelian.index", $data);
}
public function gudang(Request $request)
{
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$datas = TransaksiGudang::latest()->paginate(10);
$data = [
'datas' => $datas,
'arah_transaksi' => $request->arah_transaksi
];
if (isset($request->arah_transaksi)) {
$data['datas'] = TransaksiGudang::cari($request->arah_transaksi)->latest()->paginate(15);
return response()->view('laporan.gudang.index', $data);
}
if (isset($begin) && isset($end)) {
$data['datas'] = TransaksiGudang::tanggal($begin, $end)->latest()->paginate(15);
return response()->view('laporan.gudang.index', $data);
}
return response()->view('laporan.gudang.index', $data);
}
public function piutang()
{
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$datas = Penjualan::whereBetween("tanggal_penjualan", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->whereHas('pembayaran_piutang')->filterToko()->paginate(10);
$piutang = Penjualan::whereBetween("tanggal_penjualan", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->whereHas('pembayaran_piutang')->filterToko()->get();
// $returPembelians = ReturPembelian::where('ket_tambahan','Tukar Barang')->where('status_retur','!=','selesai')->get();
//$totalReturPembelian = $returPembelians->sum('total');
$detailReturPembelians = DetailKirimSupplier::with('detail_retur_pembelian.retur_pembelian','kirim_supplier.supplier')->whereNotNull('detail_retur_pembelian_id')
->whereHas('kirim_supplier',function($w){
$w->where('status_kirim','!=','selesai');
})
->whereHas('detail_retur_pembelian',function($w){
$w->where('status_item','tukar-barang');
})->get();
// $detailReturPembelians = DetailReturPembelian::whereDoesntHave('detail_kirim_supplier')->orWhere(function($w){
// $w->whereHas('detail_kirim_supplier.kirim_supplier',function($w){
// $w->where('status_kirim','!=','selesai');
// })->where('status_item','tukar-barang');
// })->get();
// dd($detailReturPembelians);
$totalReturPembelian = $detailReturPembelians->sum('total');
$suppliers = Supplier::whereHas('kirim_supplier',function($w){
$w->where('jenis_kompensasi','potong-nota');
})->get();
$saldoSuppliers = $suppliers->sum('saldo');
$totalPiutang = $totalReturPembelian + $saldoSuppliers;
$totalDibayarkan = 0;
foreach ($piutang as $p) {
$totalPiutang += $p->total;
$totalDibayarkan += $p->total_pembayaran_piutang;
}
$data = [
'datas' => $datas,
'totalPiutang' => $totalPiutang,
'totalDibayarkan' => $totalDibayarkan,
'totalReturPembelian' => $totalReturPembelian,
'saldoSuppliers' => $saldoSuppliers,
// 'returPembelians' => $returPembelians,
'detailReturPembelians'=>$detailReturPembelians,
'suppliers' => $suppliers
];
return response()->view('laporan.piutang.index', $data);
}
public function hutang()
{
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$datas = Pembelian::where('metode_bayar', "kredit")->whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko()->paginate(10);
$hutang = Pembelian::where('metode_bayar', "kredit")->whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko()->get();
$totalHutang = 0;
$totalDibayarkan = 0;
foreach ($hutang as $h) {
$totalHutang += $h->total;
$totalDibayarkan += $h->total_pembayaran_hutang;
}
$data = [
"datas" => $datas,
"totalHutang" => $totalHutang,
"totalDibayarkan" => $totalDibayarkan,
];
return response()->view('laporan.hutang.index', $data);
}
public function items(Request $request)
{
$tokos = auth()->user()->role->tokos->load('stok_item_tokos');
$kategori = KategoriItem::all();
$datas = Item::with('kategoriItem', 'jenis_item', 'stok_item_tokos.toko', 'detail_retur_penjualan')->paginate(20);
$data_modal = Item::get();
if ($request->kategori) {
$datas = Item::kategori($request->kategori)->paginate(20);
$data_modal = Item::kategori($request->kategori)->get();
}
$stok_toko = 0;
$stok_gudang = 0;
$retur_barang = 0;
$modal = 0;
foreach ($data_modal as $data) {
$stok_toko += $data->stok_item_tokos->sum('stok') ?? 0;
$stok_gudang += $data->stok_gudang;
$retur_barang += $data->total_retur_penjualan;
$stok = $data->stok_item_tokos->sum('stok') + $data->stok_gudang;
$modal += $data->biaya_item * $stok;
}
$data = [
'datas' => $datas,
'kategori' => $kategori,
'stok_toko' => $stok_toko,
'stok_gudang' => $stok_gudang,
'retur_barang' => $retur_barang,
'modal' => $modal,
'item_kategori' => $request->kategori,
'tokos' => $tokos
];
return response()->view('laporan.item.index', $data);
}
public function pelanggan(Request $request)
{
// $datas = new Pelanggan;
// if (isset($request->nama_pelanggan)) {
// $datas = Pelanggan::cari($request->nama_pelanggan);
// }
// if (isset($request->kecamatan_pelanggan)) {
// $datas = Pelanggan::kecamatan($request->kecamatan_pelanggan);
// }
// // if (isset($begin) && isset($end)) {
// // $datas = Pelanggan::tanggal($begin, $end)->paginate(15);
// // return response()->view("pelanggan.index", compact("request", "datas"));
// // }
// $datas = $datas->paginate(15);
$sorting_order = $request->sorting_order ?? "DESC";
$pelanggans = Pelanggan::query();
$datas = Pelanggan::with(['riwayat', 'penjualan.detail_penjualan', 'service.detail', 'service.sparepart_luar'])
->select([
'pelanggans.*',
])
// Menghitung jumlah transaksi (total penjualan + total service 'success')
->selectRaw(
'(
(SELECT COUNT(*) FROM penjualans WHERE penjualans.pelanggan_id = pelanggans.id AND penjualans.deleted_at IS NULL) +
(SELECT COUNT(*) FROM services WHERE services.pelanggan_id = pelanggans.id AND services.status_transaksi = "success" AND services.deleted_at IS NULL)
) as jumlah_transaksi'
)
// Menghitung nominal transaksi (total harga item penjualan + total harga item service 'success')
->selectRaw(
'
COALESCE((SELECT SUM((detail_penjualans.harga_item - detail_penjualans.diskon)*detail_penjualans.qty)
FROM detail_penjualans
JOIN penjualans ON detail_penjualans.penjualan_id = penjualans.id
WHERE penjualans.pelanggan_id = pelanggans.id AND penjualans.deleted_at IS NULL AND detail_penjualans.deleted_at IS NULL), 0)
+
COALESCE((SELECT SUM(services.biaya)
FROM services
WHERE services.pelanggan_id = pelanggans.id AND services.status_transaksi = "success" AND services.deleted_at IS NULL), 0)
+
COALESCE((SELECT SUM(((detail_services.harga_item - detail_services.diskon)*detail_services.jumlah))
FROM detail_services
JOIN services ON detail_services.service_id = services.id
WHERE services.pelanggan_id = pelanggans.id AND services.status_transaksi = "success" AND services.deleted_at IS NULL AND detail_services.deleted_at IS NULL), 0)
+
COALESCE((SELECT SUM(((sparepart_luars.harga_jual_SL - sparepart_luars.diskon_SL)*sparepart_luars.jumlah_SL))
FROM sparepart_luars
JOIN services ON sparepart_luars.service_id = services.id
WHERE services.pelanggan_id = pelanggans.id AND services.status_transaksi = "success" AND services.deleted_at IS NULL), 0)
as total_nominal'
)
->groupBy('pelanggans.id');
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0])->setTime(0, 0, 0);
$end = DateTime::createFromFormat('d/m/Y', $periode[1])->setTime(23, 59, 59);
if (isset($begin) && isset($end)) {
$datas->tanggal($begin, $end);
$pelanggans->tanggal($begin, $end);
}
}
if (isset($request->kecamatan)) {
$datas->kecamatan($request->kecamatan);
$pelanggans->kecamatan($request->kecamatan);
}
if (isset($request->nama_pelanggan)) {
$datas->cari($request->nama_pelanggan);
$pelanggans->cari($request->nama_pelanggan);
}
$jumlahPelanggan = $pelanggans->count();
if ($request->order) {
$order = $request->order;
if ($order == "nama") {
$datas->orderBy("nama_pelanggan", $sorting_order);
} else if ($order == "telp") {
$datas->orderBy("telp_pelanggan", $sorting_order);
} else if ($order == "alamat") {
$datas->orderBy("alamat_pelanggan", $sorting_order);
} else if ($order == "kecamatan") {
$datas->orderBy("kecamatan_pelanggan", $sorting_order);
} else if ($order == "nominal") {
$datas->orderBy("total_nominal", $sorting_order);
} else if ($order == "waktu") {
$datas->orderBy("created_at", $sorting_order);
} else if ($order == "total") {
// $datas->orderBy("riwayat_count", $sorting_order);
$datas->orderBy("jumlah_transaksi", $sorting_order);
}
} else {
$datas->orderBy("jumlah_transaksi", $sorting_order);
}
$data = [
"datas" => $datas->paginate(15),
"jumlahPelanggan" => $jumlahPelanggan,
"request" => $request,
];
return response()->view('laporan.pelanggan.index', $data);
}
public function uangMuka(Request $request)
{
try {
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$start = $begin->format('Y-m-d');
$finish = $end->format('Y-m-d');
if ($start == $finish) {
$datas = Service::with('pelanggan', 'pengguna', 'detail', 'teknisi')->where('status_pembayaran', '!=', 'lunas')->where('status_transaksi', '!=', 'cancel')->where('uang_bayar', '>', 0)->filterToko()->whereDate('tanggal', $begin);
} else {
$datas = Service::with('pelanggan', 'pengguna', 'detail', 'teknisi')->where('status_pembayaran', '!=', 'lunas')->where('status_transaksi', '!=', 'cancel')->where('uang_bayar', '>', 0)->filterToko()->tanggal($begin, $end);
}
if (!isset($request->sorting_order)) {
$sorting_order = "asc";
}
if (isset($request->sorting_order)) {
if ($request->sorting_order == "desc") {
$sorting_order = "asc";
} else if ($request->sorting_order == "asc") {
$sorting_order = "desc";
}
}
if (isset($request->status)) {
$datas = $datas->where("status", $request->status);
}
if (isset($request->search)) {
$datas = $datas->cari($request->search);
}
if (isset($request->pengguna_id)) {
$datas = $datas->where('pengguna_id', $request->pengguna_id);
}
if (isset($request->teknisi_id)) {
$datas = $datas->where('teknisi_id', $request->teknisi_id);
}
if (isset($request->sale_id)) {
$datas = $datas->where('sale_id', $request->sale_id);
}
if (isset($request->jenis_id)) {
$datas = $datas->jenis($request->jenis_id);
}
if (isset($request->order)) {
$order = $request->order;
if ($request->order == "nama_pelanggan") {
$datas = $datas->orderBy(
Pelanggan::select("nama_pelanggan")
->whereColumn('pelanggans.id', 'services.pelanggan_id'),
$sorting_order
);
} else {
//$datas = $datas->orderBy($request->order, $sorting_order);
}
} else {
$datas = $datas->orderBy("tanggal", "desc");
}
$s_total_uang_muka = 0;
$s_total_uang_muka_transfer = 0;
$s_total_uang_muka_cash = 0;
foreach ($datas->get() as $s) {
$s_total_uang_muka += $s->uang_bayar;
if ($s->metode_bayar == 'transfer') {
$s_total_uang_muka_transfer += $s->uang_bayar;
}
if ($s->metode_bayar == 'cash') {
$s_total_uang_muka_cash += $s->uang_bayar;
}
}
$services = $datas->get();
$total_transaksi = $services->count();
$datas = $datas->paginate(10);
$pengguna = Pengguna::all();
$teknisi = Teknisi::all();
$jenis = JenisItem::where('kategori_item_id', 4)->get();
$data = [
"request" => $request,
"s_total_uang_muka" => $s_total_uang_muka,
"s_total_uang_muka_transfer" => $s_total_uang_muka_transfer,
"s_total_uang_muka_cash" => $s_total_uang_muka_cash,
"datas" => $datas,
"jenis" => $jenis,
"teknisi" => $teknisi,
"pengguna" => $pengguna,
"periode" => $periode,
"sorting_order" => $sorting_order,
'total_transaksi' => $total_transaksi
];
return response()->view("laporan.uang_muka.index", $data);
} catch (\Throwable $th) {
Log::error($th);
return redirect()->route('laporan.service');
}
}
public function kirimSupplier(Request $request){
$datas = DetailKirimSupplier::with('kirim_supplier','item');
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$start = $begin->format('Y-m-d');
$finish = $end->format('Y-m-d');
if ($start == $finish) {
$datas = $datas->whereHas('kirim_supplier',function($w)use($begin){
$w->whereDate('tanggal_kirim', $begin);
});
} else {
$datas = $datas->whereHas('kirim_supplier',function($w)use($begin,$end){
$w->tanggal($begin, $end);
});
}
$sumDatas = $datas->get();
$totalHargaAwal = $sumDatas->sum(function($d){
return $d->item->biaya_item;
});
$totalHargaSupplier = $sumDatas->sum('biaya_item');
$datas = $datas->orderBy('kirim_supplier_id','DESC')->paginate(10);
return response()->view("laporan.kirim-supplier.index", compact('datas','periode','totalHargaAwal','totalHargaSupplier'));
}
// Cetak
public function itemsPrint(Request $request)
{
try {
$kategori = KategoriItem::all();
$datas = Item::with('kategoriItem', 'jenis_item', 'stok_item_tokos.toko')->get();
if ($request->kategori) {
$datas = Item::with('kategoriItem', 'jenis_item', 'stok_item_tokos.toko','detail_retur_penjualan')->kategori($request->kategori)->get();
}
$stok_toko = 0;
$stok_gudang = 0;
$retur_barang = 0;
$modal = 0;
foreach ($datas as $data) {
$stok_toko += $data->stok_item_tokos->sum('stok');
$stok_gudang += $data->stok_gudang;
$retur_barang += $data->total_retur_penjualan;
$stok = $data->stok_item_tokos->sum('stok') + $data->stok_gudang;
$modal += $data->biaya_item * $stok;
}
$export = [];
foreach ($datas as $item) {
$export[] = [
$item->nama_item,
$item->kategoriItem->nama_kategori,
$item->harga_item,
$item->biaya_item,
$item->stok_item_tokos->sum('stok') ?? 0,
// $item->stok_gudang,
$item->total_retur_penjualan
];
}
if ($request->excel == 1) {
return Excel::download(new ItemExport($export), 'Laporan Data-Barang.xlsx');
} else {
$data = [
'datas' => $datas,
'kategori' => $kategori,
'stok_toko' => $stok_toko,
'stok_gudang' => $stok_gudang,
'retur_barang' => $retur_barang,
'modal' => $modal,
];
return response()->view("laporan.item.cetak", $data);
}
} catch (\Throwable $th) {
return redirect()->route('laporan.item.index');
}
}
public function servicePrint(Request $request)
{
try {
// dd( url()->current());
// dd( '?'.http_build_query($request->query()));
// this will default to a time of 00:00:00
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$datas = Service::with('detail', 'pengguna', 'pelanggan', 'teknisi', 'sales', 'sparepart_luar')->where('status_pembayaran', 'lunas')->where('status_transaksi', 'success')->filterToko();
if (isset($begin) && isset($end)) {
$datas = $datas->selesai($begin, $end);
}
if (!isset($request->sorting_order)) {
$sorting_order = "asc";
}
if (isset($request->sorting_order)) {
if ($request->sorting_order == "desc") {
$sorting_order = "asc";
} else if ($request->sorting_order == "asc") {
$sorting_order = "desc";
}
}
if (isset($request->status)) {
$datas = $datas->where("status", $request->status);
}
if (isset($request->nama_pelanggan)) {
$datas = $datas->cari($request->nama_pelanggan);
}
if (isset($request->jenis_id)) {
$datas = $datas->jenis($request->jenis_id);
}
if (isset($request->pengguna_id)) {
$datas = $datas->where('pengguna_id', $request->pengguna_id);
}
if (isset($request->teknisi_id)) {
$datas = $datas->where('teknisi_id', $request->teknisi_id);
}
if (isset($request->sales_out)) {
$datas = $datas->where('sales_out', $request->sales_out);
}
if (isset($request->kasir_out)) {
$datas = $datas->where('kasir_out', $request->kasir_out);
}
if (isset($request->sale_id)) {
$datas = $datas->where('sale_id', $request->sale_id);
}
if (isset($request->order)) {
$order = $request->order;
if ($request->order == "nama_pelanggan") {
$datas = $datas->orderBy(
Pelanggan::select("nama_pelanggan")
->whereColumn('pelanggans.id', 'services.pelanggan_id'),
$sorting_order
);
} else {
//$datas = $datas->orderBy($request->order, $sorting_order);
}
} else {
$datas = $datas->orderBy("tanggal_selesai", "desc");
}
$servis = $datas->get();
$s_dp = 0;
$s_laba_rugi_jasa = 0;
$s_modal_sparepart = 0;
$s_jual_sparepart = 0;
$s_laba_rugi_sparepart = 0;
foreach ($servis as $s) {
$s_dp += $s->uang_bayar;
$s_laba_rugi_jasa += $s->biaya;
$s_modal_sparepart += $s->total_modal_sparepart;
$s_jual_sparepart += $s->total_jual_sparepart;
$s_laba_rugi_sparepart += $s->total_jual_sparepart - $s->total_modal_sparepart;
}
$datas = $datas->get();
$export = [];
$metode_bayar = '';
$akhir_garansi = '';
$sparepart = '';
$sparepart = '';
$jenis_spareparts = '';
foreach ($datas as $data) {
$pembayaran_service = $data->pembayaran_service->first();
if (isset($pembayaran_service)) {
$metode_bayar = $pembayaran_service->metode_bayar;
$akhir_garansi = $pembayaran_service->akhir_garansi;
}
$sparepart = '';
$jenis_spareparts = '';
if (isset($data->detail)) {
foreach ($data->detail as $d) {
$sparepart .= $d->nama_item . ", ";
if (isset($d->sparepart->jenis_item)) {
$jenis_spareparts .= $d->sparepart->jenis_item->nama_jenis . ',';
}
}
}
$sparepart_luar = '';
$jenis_sparepart_luar = '';
if ($data->sparepart_luar->count() > 0) {
foreach ($data->sparepart_luar as $sl) {
$sparepart_luar .= $sl->nama_SL;
}
$jenis_sparepart_luar = 'Sparepart Luar';
}
$garansi = '';
$refund = '';
$set_refund = 0;
if ($data->garansi == 1) {
$garansi = "(Garansi)";
}
if ($data->status_pembayaran == 'refund') {
$refund = "(Refund)";
$set_refund = 1;
}
$total = $data->total_jual_sparepart_dalam - $data->total_modal_sparepart + $data->biaya + $data->total_jual_sparepart_luar - $data->total_modal_sparepart_luar;
if ($set_refund == 1) {
$total = -$total;
}
$export[] = [
$data->no_service . $garansi . $refund,
$data->tanggal,
$data->tanggal_selesai,
$data->pelanggan->nama_pelanggan,
$data->merk . "(" . $data->tipe . ")",
$data->deskripsi,
$sparepart . $sparepart_luar,
$jenis_spareparts . $jenis_sparepart_luar,
$data->teknisi->nama_pengguna,
$data->pengguna->nama_pengguna,
$data->sales->nama_pengguna,
$data->kasir_out,
$data->sales_out,
$data->uang_bayar,
$data->metode_bayar,
$data->grand_total,
$metode_bayar,
$data->biaya,
$data->total_jual_sparepart_luar,
$data->total_modal_sparepart_luar,
$data->total_jual_sparepart_dalam,
$data->total_modal_sparepart,
$total
];
}
if ($request->excel == 1) {
return Excel::download(new ServicesExport($export), 'Laporan Service Periode ' . $begin->format("Y-m-d") . " - " . $end->format("Y-m-d") . '.xlsx');
} else {
$data = [
"request" => $request,
"datas" => $datas,
"s_dp" => $s_dp,
"s_laba_rugi_jasa" => $s_laba_rugi_jasa,
"s_modal_sparepart" => $s_modal_sparepart,
"s_jual_sparepart" => $s_jual_sparepart,
"s_laba_rugi_sparepart" => $s_laba_rugi_sparepart,
"sorting_order" => $sorting_order,
];
// $pdf = Pdf::loadView('laporan.service.cetak', $data);
// return $pdf->download('Laporan Service.pdf');
return response()->view("laporan.service.cetak", $data);
}
} catch (\Throwable $th) {
Log::error($th);
return redirect()->route('laporan')->with('error', 'Error, tidak bisa menampilkan laporan');
}
}
public function serviceGaransiPrint(Request $request)
{
try {
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$datas = Service::with('detail', 'pengguna', 'pelanggan', 'teknisi', 'sales', 'sparepart_luar')->where('garansi', 1)->filterToko();
if (isset($begin) && isset($end)) {
$datas = $datas->tanggal($begin, $end);
}
if (!isset($request->sorting_order)) {
$sorting_order = "asc";
}
if (isset($request->sorting_order)) {
if ($request->sorting_order == "desc") {
$sorting_order = "asc";
} else if ($request->sorting_order == "asc") {
$sorting_order = "desc";
}
}
if (isset($request->status)) {
$datas = $datas->where("status", $request->status);
}
if (isset($request->nama_pelanggan)) {
$datas = $datas->cari($request->nama_pelanggan);
}
if (isset($request->jenis_id)) {
$datas = $datas->jenis($request->jenis_id);
}
if (isset($request->pengguna_id)) {
$datas = $datas->where('pengguna_id', $request->pengguna_id);
}
if (isset($request->teknisi_id)) {
$datas = $datas->where('teknisi_id', $request->teknisi_id);
}
if (isset($request->sales_out)) {
$datas = $datas->where('sales_out', $request->sales_out);
}
if (isset($request->kasir_out)) {
$datas = $datas->where('kasir_out', $request->kasir_out);
}
if (isset($request->sale_id)) {
$datas = $datas->where('sale_id', $request->sale_id);
}
if (isset($request->order)) {
$order = $request->order;
if ($request->order == "nama_pelanggan") {
$datas = $datas->orderBy(
Pelanggan::select("nama_pelanggan")
->whereColumn('pelanggans.id', 'services.pelanggan_id'),
$sorting_order
);
} else {
//$datas = $datas->orderBy($request->order, $sorting_order);
}
} else {
$datas = $datas->orderBy("tanggal_selesai", "desc");
}
$servis = $datas->get();
$s_dp = 0;
$s_laba_rugi_jasa = 0;
$s_modal_sparepart = 0;
$s_jual_sparepart = 0;
$s_laba_rugi_sparepart = 0;
foreach ($servis as $s) {
$s_dp += $s->uang_bayar;
$s_laba_rugi_jasa += $s->biaya;
$s_modal_sparepart += $s->total_modal_sparepart;
$s_jual_sparepart += $s->total_jual_sparepart;
$s_laba_rugi_sparepart += $s->total_jual_sparepart - $s->total_modal_sparepart;
}
$datas = $datas->get();
$export = [];
$metode_bayar = '';
$akhir_garansi = '';
$sparepart = '';
$sparepart = '';
$jenis_spareparts = '';
foreach ($datas as $data) {
$pembayaran_service = $data->pembayaran_service->first();
if (isset($pembayaran_service)) {
$metode_bayar = $pembayaran_service->metode_bayar;
$akhir_garansi = $pembayaran_service->akhir_garansi;
}
$sparepart = '';
$jenis_spareparts = '';
if (isset($data->detail)) {
foreach ($data->detail as $d) {
$sparepart .= $d->nama_item . ", ";
if (isset($d->sparepart->jenis_item)) {
$jenis_spareparts .= $d->sparepart->jenis_item->nama_jenis . ',';
}
}
}
$sparepart_luar = '';
$jenis_sparepart_luar = '';
if ($data->sparepart_luar->count() > 0) {
foreach ($data->sparepart_luar as $sl) {
$sparepart_luar .= $sl->nama_SL;
}
$jenis_sparepart_luar = 'Sparepart Luar';
}
$garansi = '';
$refund = '';
$set_refund = 0;
if ($data->garansi == 1) {
$garansi = "(Garansi)";
}
if ($data->status_pembayaran == 'refund') {
$refund = "(Refund)";
$set_refund = 1;
}
$total = $data->total_jual_sparepart_dalam - $data->total_modal_sparepart + $data->biaya + $data->total_jual_sparepart_luar - $data->total_modal_sparepart_luar;
if ($set_refund == 1) {
$total = -$total;
}
$export[] = [
$data->no_service . $garansi . $refund,
$data->tanggal,
$data->tanggal_selesai,
$data->pelanggan->nama_pelanggan,
$data->merk . "(" . $data->tipe . ")",
$data->deskripsi,
$sparepart . $sparepart_luar,
$jenis_spareparts . $jenis_sparepart_luar,
$data->teknisi->nama_pengguna,
$data->pengguna->nama_pengguna,
$data->sales->nama_pengguna,
$data->kasir_out,
$data->sales_out,
$data->uang_bayar,
$data->metode_bayar,
$data->grand_total,
$metode_bayar,
$data->biaya,
$data->total_jual_sparepart_luar,
$data->total_modal_sparepart_luar,
$data->total_jual_sparepart_dalam,
$data->total_modal_sparepart,
$total
];
}
if ($request->excel == 1) {
return Excel::download(new ServicesExport($export), 'Laporan Service Garansi Periode ' . $begin->format("Y-m-d") . " - " . $end->format("Y-m-d") . '.xlsx');
} else {
$data = [
"request" => $request,
"datas" => $datas,
"s_dp" => $s_dp,
"s_laba_rugi_jasa" => $s_laba_rugi_jasa,
"s_modal_sparepart" => $s_modal_sparepart,
"s_jual_sparepart" => $s_jual_sparepart,
"s_laba_rugi_sparepart" => $s_laba_rugi_sparepart,
"sorting_order" => $sorting_order,
];
// $pdf = Pdf::loadView('laporan.service.cetak', $data);
// return $pdf->download('Laporan Service.pdf');
return response()->view("laporan.service-garansi.cetak", $data);
}
} catch (\Throwable $th) {
Log::error($th);
return redirect()->route('laporan')->with('error', 'Error, tidak bisa menampilkan laporan');
}
}
public function serviceRefundPrint(Request $request)
{
try {
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$datas = Service::with('detail', 'pengguna', 'pelanggan', 'teknisi', 'sales', 'sparepart_luar')->where('status_pembayaran', 'refund')->filterToko();
if (isset($begin) && isset($end)) {
$datas = $datas->tanggal($begin, $end);
}
if (!isset($request->sorting_order)) {
$sorting_order = "asc";
}
if (isset($request->sorting_order)) {
if ($request->sorting_order == "desc") {
$sorting_order = "asc";
} else if ($request->sorting_order == "asc") {
$sorting_order = "desc";
}
}
if (isset($request->status)) {
$datas = $datas->where("status", $request->status);
}
if (isset($request->nama_pelanggan)) {
$datas = $datas->cari($request->nama_pelanggan);
}
if (isset($request->jenis_id)) {
$datas = $datas->jenis($request->jenis_id);
}
if (isset($request->pengguna_id)) {
$datas = $datas->where('pengguna_id', $request->pengguna_id);
}
if (isset($request->teknisi_id)) {
$datas = $datas->where('teknisi_id', $request->teknisi_id);
}
if (isset($request->sales_out)) {
$datas = $datas->where('sales_out', $request->sales_out);
}
if (isset($request->kasir_out)) {
$datas = $datas->where('kasir_out', $request->kasir_out);
}
if (isset($request->sale_id)) {
$datas = $datas->where('sale_id', $request->sale_id);
}
if (isset($request->order)) {
$order = $request->order;
if ($request->order == "nama_pelanggan") {
$datas = $datas->orderBy(
Pelanggan::select("nama_pelanggan")
->whereColumn('pelanggans.id', 'services.pelanggan_id'),
$sorting_order
);
} else {
//$datas = $datas->orderBy($request->order, $sorting_order);
}
} else {
$datas = $datas->orderBy("tanggal_selesai", "desc");
}
$servis = $datas->get();
$s_dp = 0;
$s_laba_rugi_jasa = 0;
$s_modal_sparepart = 0;
$s_jual_sparepart = 0;
$s_laba_rugi_sparepart = 0;
foreach ($servis as $s) {
$s_dp += $s->uang_bayar;
$s_laba_rugi_jasa += $s->biaya;
$s_modal_sparepart += $s->total_modal_sparepart;
$s_jual_sparepart += $s->total_jual_sparepart;
$s_laba_rugi_sparepart += $s->total_jual_sparepart - $s->total_modal_sparepart;
}
$datas = $datas->get();
$export = [];
$metode_bayar = '';
$akhir_garansi = '';
$sparepart = '';
$sparepart = '';
$jenis_spareparts = '';
foreach ($datas as $data) {
$pembayaran_service = $data->pembayaran_service->first();
if (isset($pembayaran_service)) {
$metode_bayar = $pembayaran_service->metode_bayar;
$akhir_garansi = $pembayaran_service->akhir_garansi;
}
$sparepart = '';
$jenis_spareparts = '';
if (isset($data->detail)) {
foreach ($data->detail as $d) {
$sparepart .= $d->nama_item . ", ";
if (isset($d->sparepart->jenis_item)) {
$jenis_spareparts .= $d->sparepart->jenis_item->nama_jenis . ',';
}
}
}
$sparepart_luar = '';
$jenis_sparepart_luar = '';
if ($data->sparepart_luar->count() > 0) {
foreach ($data->sparepart_luar as $sl) {
$sparepart_luar .= $sl->nama_SL;
}
$jenis_sparepart_luar = 'Sparepart Luar';
}
$garansi = '';
$refund = '';
$set_refund = 0;
if ($data->garansi == 1) {
$garansi = "(Garansi)";
}
if ($data->status_pembayaran == 'refund') {
$refund = "(Refund)";
$set_refund = 1;
}
$total = $data->total_jual_sparepart_dalam - $data->total_modal_sparepart + $data->biaya + $data->total_jual_sparepart_luar - $data->total_modal_sparepart_luar;
if ($set_refund == 1) {
$total = -$total;
}
$export[] = [
$data->no_service . $garansi . $refund,
$data->tanggal,
$data->tanggal_selesai,
$data->pelanggan->nama_pelanggan,
$data->merk . "(" . $data->tipe . ")",
$data->deskripsi,
$sparepart . $sparepart_luar,
$jenis_spareparts . $jenis_sparepart_luar,
$data->teknisi->nama_pengguna,
$data->pengguna->nama_pengguna,
$data->sales->nama_pengguna,
$data->kasir_out,
$data->sales_out,
$data->uang_bayar,
$data->metode_bayar,
$data->grand_total,
$metode_bayar,
$data->biaya,
$data->total_jual_sparepart_luar,
$data->total_modal_sparepart_luar,
$data->total_jual_sparepart_dalam,
$data->total_modal_sparepart,
$total
];
}
if ($request->excel == 1) {
return Excel::download(new ServicesExport($export), 'Laporan Service Refund Periode ' . $begin->format("Y-m-d") . " - " . $end->format("Y-m-d") . '.xlsx');
} else {
$data = [
"request" => $request,
"datas" => $datas,
"s_dp" => $s_dp,
"s_laba_rugi_jasa" => $s_laba_rugi_jasa,
"s_modal_sparepart" => $s_modal_sparepart,
"s_jual_sparepart" => $s_jual_sparepart,
"s_laba_rugi_sparepart" => $s_laba_rugi_sparepart,
"sorting_order" => $sorting_order,
];
// $pdf = Pdf::loadView('laporan.service.cetak', $data);
// return $pdf->download('Laporan Service.pdf');
return response()->view("laporan.service-refund.cetak", $data);
}
} catch (\Throwable $th) {
Log::error($th);
return redirect()->route('laporan')->with('error', 'Error, tidak bisa menampilkan laporan');
}
}
public function penjualanPrint(Request $request)
{
$penjualan = new Penjualan;
// $data =
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$datas = Penjualan::where('status_pembayaran', 'lunas')->whereNull('status_lanjutan')->whereDateBetween("jam_selesai", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko();
if (isset($request->pengguna_id) && $request->pengguna_id != "") {
$datas = $datas->where('pengguna_id', $request->pengguna_id);
}
if (isset($request->cari)) {
$datas = $datas->cari($request->cari);
}
$penjualan = $datas->get();
$pendapatan = 0;
$modal = 0;
$jual = 0;
$laba_rugi = 0;
foreach ($penjualan as $penjualan) {
$pendapatan += $penjualan->total;
$modal += $penjualan->total_modal;
$jual += $penjualan->total;
$laba_rugi += $penjualan->total - $penjualan->total_modal;
}
$datas = $datas->get();
$export = [];
$detail = "";
$akhir_garansi = "";
foreach ($datas as $data) {
$detail = "";
$akhir_garansi = "";
foreach ($data->detail_penjualan as $d) {
$detail .= $d->nama_item . ',';
$akhir_garansi .= $d->akhir_garansi . ',';
}
$export[] = [
$data->nomor_nota,
$data->tanggal_penjualan,
$data->pelanggan->nama_pelanggan,
$detail,
$data->metode_bayar,
$data->status_pembayaran,
optional($data->sales)->nama_pengguna,
$data->pengguna->nama_pengguna,
$data->total_modal,
$data->total,
$data->total - $data->total_modal,
$data->uang_bayar,
];
}
if ($request->excel == 1) {
return Excel::download(new PenjualanExport($export), 'Laporan Penjualan ' . $begin->format("Y-m-d") . " - " . $end->format("Y-m-d") . '.xlsx');
} else {
$data = [
'datas' => $datas,
"pendapatan" => $pendapatan,
"modal" => $modal,
"jual" => $jual,
"laba_rugi" => $laba_rugi,
];
// $pdf = Pdf::loadView('laporan.penjualan.cetak', $data);
// return $pdf->download('Laporan Penjualan.pdf');
return response()->view("laporan.penjualan.cetak", $data);
}
}
public function pembelianPrint(Request $request)
{
// this will default to a time of 00:00:00
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$datas = Pembelian::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko()->get();
$export = [];
$detail_item = '';
foreach ($datas as $data) {
$detail_item = '';
foreach ($data->detail_pembelian as $detail) {
if (isset($detail->item)) {
$detail_item .= $detail->item->nama_item . ',';
}
}
$export[] = [
$data->tanggal_pembelian,
$data->supplier->nama_supplier . '(' . $data->supplier->telp_supplier . ')',
$detail_item,
$data->total
];
}
if ($request->excel == 1) {
return Excel::download(new PembelianExport($export), 'Laporan Pembelian.xlsx');
} else {
$data = [
'datas' => $datas,
];
return response()->view("laporan.pembelian.cetak", $data);
}
}
public function gudangPrint(Request $request)
{
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$datas = TransaksiGudang::filterToko()->latest()->get();
if (isset($request->arah_transaksi)) {
$datas = TransaksiGudang::cari($request->arah_transaksi)->filterToko()->latest()->get();
}
if (isset($begin) && isset($end)) {
$datas = TransaksiGudang::tanggal($begin, $end)->filterToko()->latest()->get();
}
$export = [];
foreach ($datas as $data) {
$export[] = [
$data->no_transaksi,
$data->tanggal,
$data->arah_transaksi,
$data->keterangan,
];
}
if ($request->excel == 1) {
return Excel::download(new GudangExport($export), 'Laporan Transaksi Gudang.xlsx');
} else {
$data = [
'datas' => $datas,
'arah_transaksi' => $request->arah_transaksi
];
return response()->view('laporan.gudang.cetak', $data);
}
}
public function hutangPrint(Request $request)
{
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$datas = Pembelian::where('metode_bayar', "kredit")->whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko()->get();
$export = [];
$lunas = '';
foreach ($datas as $data) {
if (!$data->status_lunas) {
$lunas = 'Belum Lunas';
} else {
$lunas = 'Lunas';
}
$export[] = [
$data->nomor_nota,
$data->supplier->nama_supplier,
$data->total,
$data->total_pembayaran_hutang,
$lunas,
];
}
if ($request->excel == 1) {
return Excel::download(new HutangExport($export), 'Laporan Hutang.xlsx');
} else {
$data = [
"datas" => $datas,
];
return response()->view('laporan.hutang.cetak', $data);
}
}
public function returPenjualanPrint(Request $request)
{
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$datas = ReturPenjualan::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko()->get();
$export = [];
$detail_item = '';
foreach ($datas as $data) {
$detail_item = '';
foreach ($data->detail as $detail) {
$detail_item .= $detail->nama_item . ',';
}
$export[] = [
$data->created_at->format('d-m-Y'),
$data->no_penjualan,
$detail_item,
$data->pelanggan->nama_pelanggan,
$data->keterangan,
];
}
if ($request->excel == 1) {
return Excel::download(new ReturPenjualanExport($export), 'Laporan Retur Penjualan.xlsx');
} else {
$data = [
'datas' => $datas,
];
return response()->view("laporan.retur_penjualan.cetak", $data);
}
}
public function returPembelianPrint(Request $request)
{
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$datas = ReturPembelian::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->filterToko()->get();
$export = [];
$detail_item = '';
foreach ($datas as $data) {
$detail_item = '';
foreach ($data->detail as $detail) {
$detail_item .= $detail->nama_item . ',';
}
$export[] = [
$data->created_at->format('d-m-Y'),
$data->no_pembelian,
$data->supplier->nama_supplier,
$detail_item,
$data->keterangan,
$data->ket_tambahan,
];
}
if ($request->excel == 1) {
return Excel::download(new ReturPembelianExport($export), 'Laporan Retur Pembelian.xlsx');
} else {
$data = [
'datas' => $datas,
];
return response()->view("laporan.retur_pembelian.cetak", $data);
}
}
public function piutangPrint(Request $request)
{
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$datas = Penjualan::whereBetween("tanggal_penjualan", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->whereHas('pembayaran_piutang')->filterToko()->get();
$export = [];
$lunas = '';
foreach ($datas as $data) {
if (!$data->status_lunas) {
$lunas = 'Belum Lunas';
} else {
$lunas = 'Lunas';
}
$export[] = [
$data->nomor_nota,
$data->pelanggan->nama_pelanggan,
$data->total,
$data->total_pembayaran_piutang,
$lunas,
];
}
if ($request->excel == 1) {
return Excel::download(new PiutangExport($export), 'Laporan Piutang.xlsx');
} else {
$data = [
'datas' => $datas,
];
return response()->view('laporan.piutang.cetak', $data);
}
}
public function pelangganPrint(Request $request)
{
// $datas = new Pelanggan;
// if (isset($request->nama_pelanggan)) {
// $datas = Pelanggan::cari($request->nama_pelanggan);
// }
// if (isset($request->kecamatan_pelanggan)) {
// $datas = Pelanggan::kecamatan($request->kecamatan_pelanggan);
// }
// // if (isset($begin) && isset($end)) {
// // $datas = Pelanggan::tanggal($begin, $end)->paginate(15);
// // return response()->view("pelanggan.index", compact("request", "datas"));
// // }
$sorting_order = $request->sorting_order ?? "DESC";
$datas = Pelanggan::with(['riwayat', 'penjualan.detail_penjualan', 'service.detail', 'service.sparepart_luar'])
->select([
'pelanggans.*',
])
// Menghitung jumlah transaksi (total penjualan + total service 'success')
->selectRaw(
'(
(SELECT COUNT(*) FROM penjualans WHERE penjualans.pelanggan_id = pelanggans.id AND penjualans.deleted_at IS NULL) +
(SELECT COUNT(*) FROM services WHERE services.pelanggan_id = pelanggans.id AND services.status_transaksi = "success" AND services.deleted_at IS NULL)
) as jumlah_transaksi'
)
// Menghitung nominal transaksi (total harga item penjualan + total harga item service 'success')
->selectRaw(
'
COALESCE((SELECT SUM((detail_penjualans.harga_item - detail_penjualans.diskon)*detail_penjualans.qty)
FROM detail_penjualans
JOIN penjualans ON detail_penjualans.penjualan_id = penjualans.id
WHERE penjualans.pelanggan_id = pelanggans.id AND penjualans.deleted_at IS NULL AND detail_penjualans.deleted_at IS NULL), 0)
+
COALESCE((SELECT SUM(services.biaya)
FROM services
WHERE services.pelanggan_id = pelanggans.id AND services.status_transaksi = "success" AND services.deleted_at IS NULL), 0)
+
COALESCE((SELECT SUM(((detail_services.harga_item - detail_services.diskon)*detail_services.jumlah))
FROM detail_services
JOIN services ON detail_services.service_id = services.id
WHERE services.pelanggan_id = pelanggans.id AND services.status_transaksi = "success" AND services.deleted_at IS NULL AND detail_services.deleted_at IS NULL), 0)
+
COALESCE((SELECT SUM(((sparepart_luars.harga_jual_SL - sparepart_luars.diskon_SL)*sparepart_luars.jumlah_SL))
FROM sparepart_luars
JOIN services ON sparepart_luars.service_id = services.id
WHERE services.pelanggan_id = pelanggans.id AND services.status_transaksi = "success" AND services.deleted_at IS NULL), 0)
as total_nominal'
)
->groupBy('pelanggans.id');
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0])->setTime(0, 0, 0);
$end = DateTime::createFromFormat('d/m/Y', $periode[1])->setTime(23, 59, 59);
if (isset($begin) && isset($end)) {
$datas->tanggal($begin, $end);
}
}
if (isset($request->kecamatan)) {
$datas->kecamatan($request->kecamatan);
}
if ($request->order) {
$order = $request->order;
if ($order == "nama") {
$datas->orderBy("nama_pelanggan", $sorting_order);
} else if ($order == "telp") {
$datas->orderBy("telp_pelanggan", $sorting_order);
} else if ($order == "alamat") {
$datas->orderBy("alamat_pelanggan", $sorting_order);
} else if ($order == "kecamatan") {
$datas->orderBy("kecamatan_pelanggan", $sorting_order);
} else if ($order == "nominal") {
$datas->orderBy("total_nominal", $sorting_order);
} else if ($order == "waktu") {
$datas->orderBy("created_at", $sorting_order);
} else if ($order == "total") {
// $datas->orderBy("riwayat_count", $sorting_order);
$datas->orderBy("jumlah_transaksi", $sorting_order);
}
} else {
$datas->orderBy("jumlah_transaksi", $sorting_order);
}
if (isset($request->nama_pelanggan)) {
$datas = $datas->cari($request->nama_pelanggan);
}
$datas = $datas->get();
$export = [];
foreach ($datas as $data) {
$export[] = [
$data->nama_pelanggan,
$data->telp_pelanggan,
$data->alamat_pelanggan,
$data->kecamatan_pelanggan,
$data->total_nominal,
];
}
if ($request->excel == 1) {
return Excel::download(new LaporanPelangganExport($export), 'Laporan Pengguna.xlsx');
} else {
$data = [
"datas" => $datas,
"request" => $request,
];
return response()->view('laporan.pelanggan.cetak', $data);
}
}
public function uangMukaPrint(Request $request)
{
try {
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$datas = Service::where('status_transaksi', 'proses')->where('uang_bayar', '>', 0)->filterToko();
if (!isset($request->sorting_order)) {
$sorting_order = "asc";
}
if (isset($request->sorting_order)) {
if ($request->sorting_order == "desc") {
$sorting_order = "asc";
} else if ($request->sorting_order == "asc") {
$sorting_order = "desc";
}
}
if (isset($begin) && isset($end)) {
$datas = $datas->tanggal($begin, $end);
}
if (isset($request->status)) {
$datas = $datas->where("status", $request->status);
}
if (isset($request->nama_pelanggan)) {
$datas = $datas->cari($request->nama_pelanggan);
}
if (isset($request->pengguna_id)) {
$datas = $datas->where('pengguna_id', $request->pengguna_id);
}
if (isset($request->teknisi_id)) {
$datas = $datas->where('teknisi_id', $request->teknisi_id);
}
if (isset($request->sale_id)) {
$datas = $datas->where('sale_id', $request->sale_id);
}
if (isset($request->jenis_id)) {
$datas = $datas->jenis($request->jenis_id);
}
if (isset($request->order)) {
$order = $request->order;
if ($request->order == "nama_pelanggan") {
$datas = $datas->orderBy(
Pelanggan::select("nama_pelanggan")
->whereColumn('pelanggans.id', 'services.pelanggan_id'),
$sorting_order
);
} else {
//$datas = $datas->orderBy($request->order, $sorting_order);
}
} else {
$datas = $datas->orderBy("tanggal", "desc");
}
$datas = $datas->get();
$pengguna = Pengguna::all();
$teknisi = Teknisi::all();
$jenis = JenisItem::where('kategori_item_id', 4)->get();
$data = [
"request" => $request,
"datas" => $datas,
"jenis" => $jenis,
"teknisi" => $teknisi,
"pengguna" => $pengguna,
"sorting_order" => $sorting_order,
];
foreach ($datas as $data) {
$export[] = [
$data->no_service,
$data->tanggal,
$data->pelanggan->nama_pelanggan,
$data->merk . "(" . $data->tipe . ")",
$data->deskripsi,
$data->status,
$data->teknisi->nama_pengguna,
$data->pengguna->nama_pengguna,
$data->sales->nama_pengguna,
$data->uang_bayar,
$data->metode_bayar,
$data->grand_total,
];
}
if ($request->excel == 1) {
return Excel::download(new uangMukaExport($export), 'Laporan Uang Muka Service ' . $begin->format("Y-m-d") . " - " . $end->format("Y-m-d") . '.xlsx');
} else {
$data = [
"request" => $request,
"datas" => $datas,
"sorting_order" => $sorting_order,
];
// $pdf = Pdf::loadView('laporan.service.cetak', $data);
// return $pdf->download('Laporan Service.pdf');
return response()->view("laporan.uang_muka.cetak", $data);
}
} catch (\Throwable $th) {
Log::error($th);
return redirect()->route('laporan')->with('error', 'Error, tidak bisa menampilkan laporan');
}
}
public function kirimSupplierPrint(Request $request){
$datas = DetailKirimSupplier::with('kirim_supplier','item');
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$start = $begin->format('Y-m-d');
$finish = $end->format('Y-m-d');
if ($start == $finish) {
$datas = $datas->whereHas('kirim_supplier',function($w)use($begin){
$w->whereDate('tanggal_kirim', $begin);
});
} else {
$datas = $datas->whereHas('kirim_supplier',function($w)use($begin,$end){
$w->tanggal($begin, $end);
});
}
$datas = $datas->orderBy('kirim_supplier_id','DESC')->paginate(10);
if ($request->excel == 1) {
$export = [];
foreach ($datas as $data) {
$export[] = [
$data->kirim_supplier->tanggal_kirim,
$data->kirim_supplier->no_kirim,
$data->nama_item,
$data->qty,
$data->item->biaya_item,
$data->biaya_item,
];
}
return Excel::download(new KirimSuppliersExport($export), 'Laporan Kirim Supplier ' . $begin->format("Y-m-d") . " - " . $end->format("Y-m-d") . '.xlsx');
} else {
return response()->view("laporan.kirim-supplier.cetak", compact('datas','periode'));
}
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]