<?php
namespace App\Http\Controllers;
use App\Exports\GudangExport;
use App\Exports\HutangExport;
use App\Exports\ServicesExport;
use App\Exports\ItemExport;
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\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\Teknisi;
use App\Models\TransaksiGudang;
use Barryvdh\DomPDF\Facade\Pdf;
use Illuminate\Http\Request;
use DateInterval;
use DatePeriod;
use DateTime;
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]);
}
$end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');;
}
$datas = Penjualan::where('status_pembayaran', 'lunas')->whereBetween("jam_selesai", [$begin->format('Y-m-d'), $end->format('Y-m-d')]);
if (isset($request->pengguna_id)) {
$datas = $datas->where('pengguna_id', $request->pengguna_id);
}
$penjualan = $datas->get();
$penjualan_cash = Penjualan::where('status_pembayaran', 'lunas')->whereBetween("jam_selesai", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->where('metode_bayar', 'cash')->get();
$penjualan_transfer = Penjualan::where('status_pembayaran', 'lunas')->whereBetween("jam_selesai", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->where('metode_bayar', 'transfer')->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,
"periode" => $periode,
"periodeTanggals" => $periodeTanggals,
"pendapatan" => $pendapatan,
"pendapatan_transfer" => $pendapatan_transfer,
"pendapatan_cash" => $pendapatan_cash,
];
return response()->view("laporan.penjualan.index", $data);
} catch (\Throwable $th) {
dd($th);
return redirect()->route('laporan.penjualan');
}
}
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]);
}
// $end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');;
}
$datas = Service::where('status_transaksi', 'success')->orwhere('status_pembayaran', 'refund');
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->selesai($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->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");
}
$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;
}
}
}
$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,
"periodeTanggals" => $periodeTanggals,
"periode" => $periode,
"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) {
dd($th);
return redirect()->route('laporan.service');
}
}
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]);
}
$end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');;
}
$datas = Pembelian::with('detail_pembelian')->whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->latest()->paginate(10);
$jumlahPembelian = Pembelian::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->latest()->count();
$pembelian = Pembelian::with('detail_pembelian')->whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->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,
"periode" => $periode,
"periodeTanggals" => $periodeTanggals
];
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]);
}
$end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');;
}
$datas = ReturPenjualan::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->paginate(10);
$returPenjualan = ReturPenjualan::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->get();
$jumlahReturPenjualan = ReturPenjualan::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->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,
'periode' => $periode,
'periodeTanggals' => $periodeTanggals
];
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]);
}
$end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');;
}
$datas = ReturPembelian::with('detail.item')->whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->paginate(10);
$returPembelian = ReturPembelian::with('detail.item')->whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->get();
$jumlahReturPembelian = ReturPembelian::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->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,
'periode' => $periode,
'periodeTanggals' => $periodeTanggals
];
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]);
}
$end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');
}
$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]);
}
$end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');
}
$datas = Penjualan::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->whereHas('pembayaran_piutang')->paginate(10);
$piutang = Penjualan::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->whereHas('pembayaran_piutang')->get();
$totalPiutang = 0;
$totalDibayarkan = 0;
foreach ($piutang as $p) {
$totalPiutang += $p->total;
$totalDibayarkan += $p->total_pembayaran_piutang;
}
$data = [
'datas' => $datas,
'totalPiutang' => $totalPiutang,
'totalDibayarkan' => $totalDibayarkan,
'periode' => $periode,
'periodeTanggals' => $periodeTanggals
];
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]);
}
$end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');
}
$datas = Pembelian::where('metode_bayar', "kredit")->whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->paginate(10);
$hutang = Pembelian::where('metode_bayar', "kredit")->whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->get();
$totalHutang = 0;
$totalDibayarkan = 0;
foreach ($hutang as $h) {
$totalHutang += $h->total;
$totalDibayarkan += $h->total_pembayaran_hutang;
}
$data = [
"datas" => $datas,
"totalHutang" => $totalHutang,
"totalDibayarkan" => $totalDibayarkan,
"periodeTanggals" => $periodeTanggals
];
return response()->view('laporan.hutang.index', $data);
}
public function items(Request $request)
{
$kategori = KategoriItem::all();
$datas = Item::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;
$stok_gudang += $data->stok_gudang;
$retur_barang += $data->total_retur_penjualan;
$stok = $data->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,
];
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);
$jumlahPelanggan = Pelanggan::count();
$data = [
"datas" => $datas,
"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]);
}
// $end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');
}
$datas = Service::where('status_transaksi', 'proses')->where('uang_bayar', '>', 0);
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");
}
$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,
"total_transaksi" => $total_transaksi,
"periodeTanggals" => $periodeTanggals,
"periode" => $periode,
"sorting_order" => $sorting_order,
];
return response()->view("laporan.uang_muka.index", $data);
} catch (\Throwable $th) {
dd($th);
return redirect()->route('laporan.service');
}
}
// Cetak
public function itemsPrint(Request $request)
{
try {
$kategori = KategoriItem::all();
$datas = Item::get();
if ($request->kategori) {
$datas = Item::kategori($request->kategori)->get();
}
$stok_toko = 0;
$stok_gudang = 0;
$retur_barang = 0;
$modal = 0;
foreach ($datas as $data) {
$stok_toko += $data->stok;
$stok_gudang += $data->stok_gudang;
$retur_barang += $data->total_retur_penjualan;
$stok = $data->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->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]);
}
// $end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');
}
$datas =
Service::where('status_transaksi', 'success')->orwhere('status_pembayaran', 'refund');
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->selesai($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->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->jam_selesai,
$data->pelanggan->nama_pelanggan,
$data->merk . "(" . $data->tipe . ")",
$data->deskripsi,
$sparepart . $sparepart_luar,
$jenis_spareparts . $jenis_sparepart_luar,
$data->teknisi->nama_teknisi,
$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.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,
"periodeTanggals" => $periodeTanggals,
"periode" => $periode,
"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) {
dd($th);
return redirect()->route('laporan.service');
}
}
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]);
}
$end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');
}
$datas = Penjualan::where('status_pembayaran', 'lunas')->whereBetween("jam_selesai", [$begin->format('Y-m-d'), $end->format('Y-m-d')]);
if (isset($request->pengguna_id)) {
$datas = $datas->where('pengguna_id', $request->pengguna_id);
}
$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
];
}
if ($request->excel == 1) {
return Excel::download(new PenjualanExport($export), 'Laporan Penjualan.xlsx');
} else {
$data = [
'datas' => $datas,
"periode" => $periode,
"periodeTanggals" => $periodeTanggals,
"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]);
}
$end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');
}
$datas = Pembelian::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->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,
"periode" => $periode,
"periodeTanggals" => $periodeTanggals
];
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]);
}
$end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');
}
$datas = TransaksiGudang::latest()->get();
if (isset($request->arah_transaksi)) {
$datas = TransaksiGudang::cari($request->arah_transaksi)->latest()->get();
}
if (isset($begin) && isset($end)) {
$datas = TransaksiGudang::tanggal($begin, $end)->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]);
}
$end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');
}
$datas = Pembelian::where('metode_bayar', "kredit")->whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->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,
"periode" => $periode,
"periodeTanggals" => $periodeTanggals
];
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]);
}
$end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');
}
$datas = ReturPenjualan::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->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,
'periode' => $periode,
'periodeTanggals' => $periodeTanggals
];
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]);
}
$end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');
}
$datas = ReturPembelian::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->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,
'periode' => $periode,
'periodeTanggals' => $periodeTanggals
];
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]);
}
$end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');
}
$datas = Penjualan::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->whereHas('pembayaran_piutang')->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,
'periode' => $periode,
'periodeTanggals' => $periodeTanggals
];
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"));
// }
$datas = $datas->get();
$export = [];
foreach ($datas as $data) {
$export[] = [
$data->nama_pelanggan,
$data->telp_pelanggan,
$data->alamat_pelanggan,
$data->kecamatan_pelanggan,
$data->riwayat->sum('biaya')
];
}
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]);
}
// $end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = $date->format('d-M');
}
$datas = Service::where('status_transaksi', 'proses')->where('uang_bayar', '>', 0);
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,
"periodeTanggals" => $periodeTanggals,
"periode" => $periode,
"sorting_order" => $sorting_order,
];
foreach ($datas as $data) {
$export[] = [
$data->no_service,
$data->pelanggan->nama_pelanggan,
$data->merk . "(" . $data->tipe . ")",
$data->deskripsi,
$data->status,
$data->teknisi->nama_teknisi,
$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.xlsx');
} else {
$data = [
"request" => $request,
"datas" => $datas,
"periodeTanggals" => $periodeTanggals,
"periode" => $periode,
"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) {
dd($th);
return redirect()->route('laporan.service');
}
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]