martabak-grand/app/Http/Controllers/Admins/Pengeluaran/PengeluaranController.php

238 lines
11 KiB
PHP

<?php
namespace App\Http\Controllers\Admins\Pengeluaran;
use App\Http\Controllers\Controller;
use App\Models\BukuBesar;
use App\Models\MasterDistributor;
use App\Models\MasterSatuan;
use App\Models\Pengeluaran;
use App\Models\RekeningCoa;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class PengeluaranController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
$coaBiaya = RekeningCoa::where('kode_coa', 5)->get();
$coaPengeluaran = RekeningCoa::where('kode_coa', 5)->where('sub_kode_coa', 500)->get();
$rekeningCoaTf = RekeningCoa::where('kode_coa', 1)->where('sub_kode_coa', 200)->get();
$distributors = MasterDistributor::all();
$satuans = MasterSatuan::all();
$getLastCoaKebutuhan = RekeningCoa::where('kode_coa', 5)->where('sub_kode_coa', 500)->orderBy('id', 'desc')->first();
if ($getLastCoaKebutuhan == null) {
$getLastCoaKebutuhan = 1;
} else {
$getLastCoaKebutuhan = $getLastCoaKebutuhan->detail_coa + 1;
}
return view('pages.admin.pengeluaran.index', compact('coaBiaya', 'rekeningCoaTf', 'coaPengeluaran', 'distributors', 'satuans', 'getLastCoaKebutuhan'));
}
public function simpan(Request $request)
{
try {
DB::beginTransaction();
$user = request()->user();
foreach ($request->rekening_coa_kebutuhan as $key => $value) {
$rekening_coa_id = explode('|', $request->rekening_coa_kebutuhan[$key])[0];
$kode_coa = explode('|', $request->rekening_coa_kebutuhan[$key])[1];
$keterangan_coa = explode('|', $request->rekening_coa_kebutuhan[$key])[2];
$nominalnya = $request->nominal[$key] ?? 0;
$satuan = $request->satuan[$key] ?? 0;
// detail kebutuhan
$harga_total = $nominalnya * $satuan;
$pengeluaran = Pengeluaran::create([
'faktur' => "PG-" . date('YmdHis'),
'tanggal' => $request->tanggal_belanja,
'jenis_transaksi' => $request->jenis_transaksi,
'rekening_coa_transfer_id' => $request->id_rekening_coa_transfer ? $request->id_rekening_coa_transfer : null,
'rekening_coa_id' => $rekening_coa_id,
'master_distributors_id' => $request->supplier[$key] ? $request->supplier[$key] : null,
'master_satuans_id' => $request->pilihansatuan[$key] ? $request->pilihansatuan[$key] : null,
'satuan' => $satuan,
'nominal' => $nominalnya,
'total_harga' => $harga_total,
'keterangan' => $request->keterangan[$key] ? $request->keterangan[$key] : null,
'user_id' => $user->id
]);
if ($request->jenis_transaksi == "1") {
BukuBesar::create([
'faktur' => "PG-" . date('YmdHis'),
'tanggal' => $request->tanggal_belanja,
'rekening_coa_id' => "2",
'pengeluaran_id' => $pengeluaran->id,
'kode_rekening_coa' => "1.100.01",
'keterangan_coa' => "Kas Kasir",
'keterangan' => $request->keterangan[$key] ?? '',
'debet' => 0,
'kredit' => $request->nominal[$key] ?? 0
]);
BukuBesar::create([
'faktur' => "PG-" . date('YmdHis'),
'tanggal' => $request->tanggal_belanja,
'rekening_coa_id' => $rekening_coa_id,
'kode_rekening_coa' => $kode_coa,
'pengeluaran_id' => $pengeluaran->id,
'keterangan_coa' => $keterangan_coa,
'keterangan' => $request->keterangan[$key] ?? '',
'debet' => $request->nominal[$key] ?? '',
'kredit' => 0,
]);
} else {
BukuBesar::create([
'faktur' => "PG-" . date('YmdHis'),
'tanggal' => $request->tanggal_belanja,
'rekening_coa_id' => $request->id_rekening_coa_transfer,
'kode_rekening_coa' => $request->kode_coa_transfer,
'pengeluaran_id' => $pengeluaran->id,
'keterangan_coa' => $request->keterangan_coa_transfer,
'keterangan' => $request->keterangan[$key],
'debet' => 0,
'kredit' => $request->nominal[$key]
]);
BukuBesar::create([
'faktur' => "PG-" . date('YmdHis'),
'tanggal' => $request->tanggal_belanja,
'rekening_coa_id' => $rekening_coa_id,
'kode_rekening_coa' => $kode_coa,
'pengeluaran_id' => $pengeluaran->id,
'keterangan_coa' => $keterangan_coa,
'keterangan' => $request->keterangan[$key],
'debet' => $request->nominal[$key],
'kredit' => 0,
]);
}
}
DB::commit();
return response()->json(['status' => true, 'message' => 'Data berhasil tersimpan']);
} catch (\Throwable $th) {
DB::rollBack();
dd($th->getMessage() . ' ' . $th->getLine() . ' ' . $th->getFile());
return response()->json(['status' => false, 'message' => 'Kesalahan menyimpan data']);
}
}
public function laporan(Request $request)
{
$mpdf = new \Mpdf\Mpdf([
'mode' => 'utf-8',
'format' => 'A4',
'orientation' => 'Landscape',
'margin_left' => 15,
'margin_right' => 15,
'margin_top' => 10,
'margin_bottom' => 10,
'default_font_size' => 9,
'default_font' => 'arial',
]);
$mpdf->AddPage();
$mpdf->setFooter('{PAGENO}');
$data = Pengeluaran::with('user', 'masterDistributor', 'masterSatuan', 'rekeningCoa', 'rekeningCoaTransfer')->whereDate('tanggal', '>=', $request->filter_tanggal_1)
->whereDate('tanggal', '<=', $request->filter_tanggal_2)
->get();
$html = view('pages.admin.pengeluaran.laporan', [
'data' => $data,
'filter_tanggal_1' => $request->filter_tanggal_1,
'filter_tanggal_2' => $request->filter_tanggal_2,
]);
$mpdf->writeHTML($html);
$mpdf->Output('Laporan_Pengeluaran.pdf', 'I');
return response()->header('Content-Type', 'application/pdf');
}
public function getDatapengeluaran(Request $request)
{
$nomor = 1;
$filter_tanggal_1 = $request->filter_tanggal_1;
$filter_tanggal_2 = $request->filter_tanggal_2;
$data = Pengeluaran::with('user', 'masterDistributor', 'masterSatuan', 'rekeningCoa', 'rekeningCoaTransfer')
->when($filter_tanggal_1, function ($query) use ($filter_tanggal_1) {
return $query->whereDate('tanggal', '>=', $filter_tanggal_1);
})
->when($filter_tanggal_2, function ($query) use ($filter_tanggal_2) {
return $query->whereDate('tanggal', '<=', $filter_tanggal_2);
})
->when(!$filter_tanggal_1 && !$filter_tanggal_2, function ($query) {
return $query->whereDate('tanggal', Carbon::today());
})
->orderBy('tanggal', 'desc')
->get();
return datatables()
->of($data)
->addColumn('suppliersnya', function ($data) {
if ($data->master_distributors_id == null) {
return '-';
} else {
return $data->masterDistributor->nama_distributor;
}
})
->addColumn('transaksinya', function ($data) {
if ($data->jenis_transaksi == 1) {
return "Tunai";
} else {
return "Transfer" . " " . $data->rekeningCoaTransfer->keterangan_coa;
}
})
->addColumn('satuannya', function ($data) {
return $data->satuan . " " . $data->masterSatuan?->simbol ?? '';
})
->addColumn('rekening_coa', function ($data) {
return $data->rekeningCoa->keterangan_coa . " " . $data->keterangan ?? '';
})
->addColumn('nomor', function ($data) use (&$nomor) {
return $nomor++;
})
->addColumn('action', function ($data) {
return '<div class="btn-group">
<button href="javascript:void(0)" class="btn btn-xs btn-danger mr-1 delete_pengeluaran" data-id="' . $data->id . '" data-kebutuhan="' . $data->rekeningCoa->keterangan_coa . '" data-faktur="' . $data->faktur . '"><i class="fas fa-trash"></i></button>
</div>';
})
->rawColumns(['action'])
->make(true);
}
public function delete(Request $request)
{
try {
DB::beginTransaction();
$pengeluaran = Pengeluaran::find($request->id);
$pengeluaran->delete();
BukuBesar::where('faktur', $request->faktur)->delete();
DB::commit();
return response()->json(['status' => true, 'message' => 'Data berhasil dihapus']);
} catch (\Throwable $th) {
DB::rollBack();
return response()->json(['status' => false, 'message' => 'Kesalahan menghapus data']);
}
}
public function generateLocalStorage(Request $request)
{
$coaPengeluaran = RekeningCoa::where('kode_coa', 5)->where('sub_kode_coa', 500)->get();
$distributors = MasterDistributor::all();
$satuans = MasterSatuan::all();
$rekening_coa_kebutuhan = $request->rekening_coa_kebutuhan;
$nominal = $request->nominal;
$pilihansatuan = $request->pilihansatuan;
$satuannya = $request->satuan;
$supplier = $request->supplier;
$keterangan = $request->keterangan;
$total_harga = $request->total;
return view('pages.admin.pengeluaran.cardpengeluaran', compact('coaPengeluaran', 'distributors', 'satuans', 'rekening_coa_kebutuhan', 'nominal', 'pilihansatuan', 'satuannya', 'supplier', 'keterangan', 'total_harga'));
}
}