Files
2026-09-11 16:03:00 +07:00

48 lines
2.8 KiB
PHP

<div class="container mt-4">
<div class="card modern-card shadow-sm border-0 rounded-4">
<div class="card-body p-4">
<div class="d-flex justify-content-between align-items-center mb-3">
<div>
<h5 class="mb-1">Periode Accounting</h5>
<small class="text-muted">Soft close dan close hanya dapat dilakukan bila tidak ada jurnal pending.</small>
</div>
<button class="btn btn-warning" id="btnCreateYear"><i class="bi bi-calendar-plus me-1"></i> Tahun Buku</button>
</div>
<div class="table-responsive">
<table id="tablePeriods" class="table modern-table align-middle w-100">
<thead><tr><th>Tahun Buku</th><th>No</th><th>Periode</th><th>Mulai</th><th>Selesai</th><th>Status</th><th>Aksi</th></tr></thead>
<tbody></tbody>
</table>
</div>
</div>
</div>
</div>
<script>
$(function(){
const table=$('#tablePeriods').DataTable({ajax:{url:"<?= base_url('accountingperiods/get_data') ?>",dataSrc:'data'},order:[[3,'desc']],responsive:true});
$('#btnCreateYear').click(async function(){
const input=await Swal.fire({title:'Buat Tahun Buku',input:'number',inputValue:new Date().getFullYear()+1,inputAttributes:{min:2000,max:2200},showCancelButton:true,inputValidator:v=>!v?'Tahun wajib diisi':undefined});
if(!input.isConfirmed)return;
$.post("<?= base_url('accountingperiods/create_year') ?>",{year:input.value},function(res){
if(res.status){table.ajax.reload();Swal.fire('Sukses',res.message,'success');}else Swal.fire('Error',res.message,'error');
},'json');
});
$(document).on('click','.btn-period-status',async function(){
const id=$(this).data('id'),status=$(this).data('status');
let reason='';
if(status==='open'){
const input=await Swal.fire({title:'Buka kembali periode',input:'textarea',inputLabel:'Alasan wajib diisi',showCancelButton:true,inputValidator:v=>!v?'Alasan wajib diisi':undefined});
if(!input.isConfirmed)return;
reason=input.value;
}else{
const confirm=await Swal.fire({title:status==='closed'?'Tutup periode?':'Soft close periode?',text:'Pastikan rekonsiliasi dan seluruh jurnal pending sudah diselesaikan.',icon:'warning',showCancelButton:true});
if(!confirm.isConfirmed)return;
}
$.post("<?= base_url('accountingperiods/change_status/') ?>"+id,{status:status,reason:reason},function(res){
if(res.status){table.ajax.reload(null,false);Swal.fire('Sukses',res.message,'success');}else Swal.fire('Error',res.message,'error');
},'json').fail(xhr=>Swal.fire('Error',xhr.responseJSON?.message||'Gagal mengubah periode','error'));
});
});
</script>