main-gitea
zeldaababil19 2024-05-02 20:33:35 +07:00
parent 89bfff7b1d
commit 438feb1290
10 changed files with 185 additions and 9 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -35,7 +35,6 @@ class PengeluaranController extends Controller
public function simpan(Request $request)
{
dd($request->all());
try {
DB::beginTransaction();
$user = request()->user();
@ -45,14 +44,14 @@ class PengeluaranController extends Controller
$kode_coa = explode('|', $request->rekening_coa_kebutuhan[$key])[1];
$keterangan_coa = explode('|', $request->rekening_coa_kebutuhan[$key])[2];
// detail kebutuhan
$harga_total = $request->nominal[$key] ?? 0 * $request->satuan[$key] ?? 0;
$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,
// detail kebutuhan
$harga_total = $request->nominal[$key] ?? 0 * $request->satuan[$key] ?? 0,
'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,
@ -218,4 +217,19 @@ class PengeluaranController extends Controller
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'));
}
}

View File

@ -15,6 +15,7 @@ class GenerateFreshSeeder extends Seeder
$classes = [
UserSeeder::class,
KasirSeeder::class,
MasterSatuanSeeder::class,
];
foreach ($classes as $class) $this->call($class);
}

BIN
resources/.DS_Store vendored

Binary file not shown.

View File

@ -0,0 +1,59 @@
<tr>
<td>
<div id="card-form-item">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-md-4 mt-3"> <label>Kebutuhan</label> <select class="form-control"
id="rekening_coa_kebutuhan" name="rekening_coa_kebutuhan[]" required>
<option value="" selected>Pilih Kebutuhan </option>
@foreach ($coaPengeluaran as $biaya)
@if ($biaya->status == 0)
<optgroup label="{{ $biaya->coa }} | {{ $biaya->keterangan_coa }}">
@else
<option @if ($biaya->id == $rekening_coa_kebutuhan) selected @endif
value="{{ $biaya->id }}|{{ $biaya->coa }}|{{ $biaya->keterangan_coa }}">
{{ $biaya->coa }} |
{{ $biaya->keterangan_coa }} </option>
@endif
@endforeach
</optgroup>
</select> </div>
<div class="col-md-4 mt-3"> <label>Nominal</label> <input type="number" min="0"
class="form-control" id="nominal" name="nominal[]" onchange="calculateTotalItem(this)"
placeholder="Harga satuan atau kiloan" required value="{{ $nominal }}"> </div>
<div class="col-md-4 mt-3"> <label>Satuan</label>
<div class="row"> <input type="number" min="0" class="form-control col-md-6"
name="satuan[]" id="satuan" onchange="calculateTotalItem(this)"
placeholder="Satuan Pengeluaran" required value="{{ $satuannya }}"> <select
class="form-control col-md-6" id="satuan_bahan" name="pilihansatuan[]" required>
<option value="" selected>--Pilih Satuan-- </option>
@foreach ($satuans as $satuan)
<option value="{{ $satuan->id }}"
@if ($satuan->id == $pilihansatuan) selected @endif>
{{ $satuan->nama_satuan }}</option>
@endforeach
</select> </div>
</div>
<div class="col-md-4 mt-3"> <label>Supplier Distributor</label> <select class="form-control"
id="supplier_distributior" name="supplier[]">
<option value="" selected>Tanpa distributor </option>
@foreach ($distributors as $distributor)
<option value="{{ $distributor->id }}"
@if ($distributor->id == $supplier) selected @endif>
{{ $distributor->nama_distributor }}
{{ $distributor->alamat }} {{ $distributor->telepon }} </option>
@endforeach
</select> </div>
<div class="col-md-4 mt-3"> <label>Keterangan</label>
<textarea class="form-control" id="keterangan" placeholder="Keterangan" name="keterangan[]">{{ $keterangan }}</textarea>
</div>
<div class="col-md-4 mt-3"> <label>Total</label>
<h3 id="total-item">Rp. {{ $total_harga }}</h3>
</div>
</div>
</div>
</div>
</div>
</td>
</tr>

View File

@ -151,6 +151,8 @@
return false;
}
theInterval = false;
document.getElementById('simpan_pengeluaran').disabled = true;
document.getElementById(
'simpan_pengeluaran').innerText = "Proses...";
@ -227,7 +229,11 @@
<script type="text/javascript">
$("#dynamic-ar").click(function() {
$("#dynamicAddRemove").append(
` <tr> <td> <div id="card-form-item"> <div class="card"> <div class="card-body"> <div class="row"> <div class="col-md-4 mt-3"> <label>Kebutuhan</label> <select class="form-control" id="rekening_coa_kebutuhan" name="rekening_coa_kebutuhan[]" required> <option value="" selected>Pilih Kebutuhan </option> @foreach ($coaPengeluaran as $biaya) @if ($biaya->status == 0) <optgroup label="{{ $biaya->coa }} | {{ $biaya->keterangan_coa }}"> @else <option value="{{ $biaya->id }}|{{ $biaya->coa }}|{{ $biaya->keterangan_coa }}"> {{ $biaya->coa }} | {{ $biaya->keterangan_coa }} </option> @endif @endforeach </optgroup> </select> </div> <div class="col-md-4 mt-3"> <label>Nominal</label> <input type="number" min="0" class="form-control" id="nominal" name="nominal[]" onchange="calculateTotalItem(this)" placeholder="Harga satuan atau kiloan" required> </div> <div class="col-md-4 mt-3"> <label>Satuan</label> <div class="row"> <input type="number" min="0" class="form-control col-md-6" name="satuan[]" id="satuan" onchange="calculateTotalItem(this)" placeholder="Satuan Pengeluaran" required> <select class="form-control col-md-6" id="satuan_bahan" name="pilihansatuan[]" required> <option value="" selected>--Pilih Satuan-- </option> @foreach ($satuans as $satuan) <option value="{{ $satuan->id }}"> {{ $satuan->nama_satuan }}</option> @endforeach </select> </div> </div> <div class="col-md-4 mt-3"> <label>Supplier Distributor</label> <select class="form-control" id="supplier_distributior" name="supplier[]"> <option value="" selected>Tanpa distributor </option> @foreach ($distributors as $distributor) <option value="{{ $distributor->id }}"> {{ $distributor->nama_distributor }} {{ $distributor->alamat }} {{ $distributor->telepon }} </option> @endforeach </select> </div> <div class="col-md-4 mt-3"> <label>Keterangan</label> <textarea class="form-control" id="keterangan" placeholder="Keterangan" name="keterangan[]"></textarea> </div> <div class="col-md-4 mt-3"> <label>Total</label> <h3 id="total-item"></h3> </div> </div> </div> </div> </div> </td> </tr>`
` <tr> <td> <div id="card-form-item"> <div class="card"> <div class="card-body"> <button type="button" class="btn btn-danger remove-input-field"
style="display: flex;position: absolute;left: -20px;top: 5px;"
id="add-form-item">
<i class="fa fa-trash"></i>
</button> <div class="row"> <div class="col-md-4 mt-3"> <label>Kebutuhan</label> <select class="form-control" id="rekening_coa_kebutuhan" name="rekening_coa_kebutuhan[]" required> <option value="" selected>Pilih Kebutuhan </option> @foreach ($coaPengeluaran as $biaya) @if ($biaya->status == 0) <optgroup label="{{ $biaya->coa }} | {{ $biaya->keterangan_coa }}"> @else <option value="{{ $biaya->id }}|{{ $biaya->coa }}|{{ $biaya->keterangan_coa }}"> {{ $biaya->coa }} | {{ $biaya->keterangan_coa }} </option> @endif @endforeach </optgroup> </select> </div> <div class="col-md-4 mt-3"> <label>Nominal</label> <input type="number" min="0" class="form-control" id="nominal" name="nominal[]" onchange="calculateTotalItem(this)" placeholder="Harga satuan atau kiloan" required> </div> <div class="col-md-4 mt-3"> <label>Satuan</label> <div class="row"> <input type="number" min="0" class="form-control col-md-6" name="satuan[]" id="satuan" onchange="calculateTotalItem(this)" placeholder="Satuan Pengeluaran" required> <select class="form-control col-md-6" id="satuan_bahan" name="pilihansatuan[]" required> <option value="" selected>--Pilih Satuan-- </option> @foreach ($satuans as $satuan) <option value="{{ $satuan->id }}"> {{ $satuan->nama_satuan }}</option> @endforeach </select> </div> </div> <div class="col-md-4 mt-3"> <label>Supplier Distributor</label> <select class="form-control" id="supplier_distributior" name="supplier[]"> <option value="" selected>Tanpa distributor </option> @foreach ($distributors as $distributor) <option value="{{ $distributor->id }}"> {{ $distributor->nama_distributor }} {{ $distributor->alamat }} {{ $distributor->telepon }} </option> @endforeach </select> </div> <div class="col-md-4 mt-3"> <label>Keterangan</label> <textarea class="form-control" id="keterangan" placeholder="Keterangan" name="keterangan[]"></textarea> </div> <div class="col-md-4 mt-3"> <label>Total</label> <h3 id="total-item"></h3> </div> </div> </div> </div> </div> </td> </tr>`
);
});
$(document).on('click', '.remove-input-field', function() {
@ -242,6 +248,95 @@
/\B(?=(\d{3})+(?!\d))/g, '.'));
}
</script>
<script>
var theInterval = true;
function saveToLocalStorage(params) {
var dataItems = [];
var items = document.querySelectorAll('[id="card-form-item"]');
for (let index = 0; index < items.length; index++) {
const element = items[index];
let nominal = element.querySelector('input[name="nominal[]"]').value;
let satuan = element.querySelector('input[name="satuan[]"]').value;
let pilihansatuan = element.querySelector('select[name="pilihansatuan[]"]').value;
let rekening_coa_kebutuhan = element.querySelector(
'select[name="rekening_coa_kebutuhan[]"]').value;
let supplier = element.querySelector('select[name="supplier[]"]').value;
let keterangan = element.querySelector('textarea[name="keterangan[]"]').value;
let total = nominal * satuan;
if (rekening_coa_kebutuhan == "" || nominal == "" || satuan == "") {
continue;
} else {
rekening_coa_kebutuhan = rekening_coa_kebutuhan.split('|')[0];
}
dataItems.push({
rekening_coa_kebutuhan: rekening_coa_kebutuhan,
nominal: nominal,
satuan: satuan,
pilihansatuan: pilihansatuan,
supplier: supplier,
keterangan: keterangan,
total: total
});
}
let json = JSON.stringify({
tanggal: $("#tanggal").val(),
jenis_transaksi: $("#jenis_transaksi").val(),
dataItems
});
localStorage.setItem('pengeluaranItemStorage', json);
}
// Save to local storage each 1 second
setInterval(function() {
saveToLocalStorage();
}, 2000);
function showPengeluaranItemStorage() {
if (localStorage.pengeluaranItemStorage === undefined || localStorage.pengeluaranItemStorage === null) {
return false;
}
let data = JSON.parse(localStorage.pengeluaranItemStorage);
document.getElementsByName('tanggal_belanja').value = data.tanggal ?? '';
document.getElementsByName('jenis_transaksi').value = data.jenis_transaksi;
if (data.dataItems.length > 0) {
$('#dynamicAddRemove').html('');
data.dataItems.forEach((i, key) => {
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
type: "GET",
url: "{{ route('pengelauran.generateLocalStorage') }}",
data: data.dataItems[key],
success: function(result) {
$('#dynamicAddRemove').append(result);
},
error: function(result) {
console.log(result);
}
})
});
}
}
showPengeluaranItemStorage();
setInterval(doTheInterval, 1000);
function doTheInterval() {
if (theInterval === true) {
// show time every second
saveToLocalStorage();
} else {
localStorage.removeItem('pengeluaranItemStorage');
}
}
</script>
<script>
@if (session()->has('success'))

View File

@ -255,7 +255,7 @@
$('#modal-default-add-distributor').modal('hide')
$('#form-tambah-distributor')[0].reset()
$('#tabeldistributor').DataTable().ajax.reload()
// location.reload()
location.reload()
},
error: function(response) {
toastr.error(response.responseJSON.meta.message)
@ -298,6 +298,7 @@
$('#form-edit-distributor')[0].reset()
idEdit = null
$('#tabeldistributor').DataTable().ajax.reload()
location.reload()
},
error: function(response) {
// enable button submit on interval 1 detik
@ -344,6 +345,7 @@
toastr.success(response.meta.message)
$('#modal-default-hapus-distributor').modal('hide')
$('#tabeldistributor').DataTable().ajax.reload()
location.reload()
},
error: function(response) {
toastr.error(response.responseJSON.meta.message)

View File

@ -94,8 +94,8 @@
</div>
<div class="col-md-6">
<label for="simbol-edit" class="col-form-label">Simbol:</label>
<input type="text" class="form-control" id="simbol-edit" name="simbol_edit"
required>
<input type="text" class="form-control" id="nama-simbol-edit"
name="simbol_edit" required>
</div>
</div>
<div class="modal-footer justify-content-between">
@ -233,7 +233,7 @@
$('#modal-default-add-satuan').modal('hide')
$('#form-tambah-satuan')[0].reset()
$('#tabelsatuan').DataTable().ajax.reload()
// location.reload()
location.reload()
},
error: function(response) {
toastr.error(response.responseJSON.meta.message)
@ -249,9 +249,10 @@
type: "GET",
success: function(response) {
data = response.data.satuan
console.log(data);
$('#id-edit-satuan').val(data.id)
$('#nama-satuan-edit').val(data.nama_satuan)
$('#simbol-edit').val(data.simbol)
$('#nama-simbol-edit').val(data.simbol)
$('#modal-default-edit-satuan').modal('show')
},
error: function(response) {
@ -276,6 +277,7 @@
$('#form-edit-satuan')[0].reset()
idEdit = null
$('#tabelsatuan').DataTable().ajax.reload()
location.reload()
},
error: function(response) {
// enable button submit on interval 1 detik
@ -322,6 +324,7 @@
toastr.success(response.meta.message)
$('#modal-default-hapus-satuan').modal('hide')
$('#tabelsatuan').DataTable().ajax.reload()
location.reload()
},
error: function(response) {
toastr.error(response.responseJSON.meta.message)

View File

@ -179,4 +179,6 @@ Route::group(['middleware' => ['auth', 'permission']], function () {
Route::post('/simpan', [RekeningCoaController::class, 'simpan'])->name('coa.simpan')->comment('Halaman Simpan Rekening Coa');
Route::post('/ubah/{id}', [RekeningCoaController::class, 'ubah'])->name('coa.ubah')->comment('Halaman Ubah Rekening Coa');
});
Route::get('/generateLocalStorage', [PengeluaranController::class, 'generateLocalStorage'])->name('pengelauran.generateLocalStorage')->comment('generateLocalStorage');
});

BIN
storage/.DS_Store vendored

Binary file not shown.