197 lines
6.7 KiB
PHP
197 lines
6.7 KiB
PHP
<?php $inventory_title='Jenis / Kode Barang';$inventory_subtitle='Atur identitas, satuan, cara tracking, serial, dan pembentukan harga beli.';$this->load->view('inventory_professional/_module_nav',get_defined_vars());?>
|
|
<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 mb-3">
|
|
<div><h5 class="mb-1">Jenis / Kode Barang</h5><small class="text-muted">Master yang sudah digunakan dinonaktifkan, bukan dihapus.</small></div>
|
|
<?php if($this->session->userdata('role')==='Admin'||check_permission('items','can_create')):?><button class="btn btn-primary btn-add"><i class="bi bi-plus-lg"></i> Tambah</button><?php endif?>
|
|
</div>
|
|
|
|
<div class="table-responsive">
|
|
<table id="tableWarehouse" class="table modern-table align-middle w-100">
|
|
<thead class="table-light">
|
|
<tr>
|
|
<th>No</th>
|
|
<th>Kode</th>
|
|
<th>Nama</th>
|
|
<th>Limit Stok</th>
|
|
<th>Tracking</th>
|
|
<th>Perlu Serial</th>
|
|
<th>Biaya ke Harga Beli</th>
|
|
<th>Unit</th>
|
|
<th>Status</th>
|
|
<th>Aksi</th>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- MODAL -->
|
|
<div class="modal fade" id="modalKodebarang">
|
|
<div class="modal-dialog modal-dialog-centered">
|
|
<div class="modal-content">
|
|
|
|
<div class="modal-header bg-warning text-white">
|
|
<h5 class="modal-title">Kode Barang</h5>
|
|
<button class="btn-close" data-bs-dismiss="modal"></button>
|
|
</div>
|
|
|
|
<div class="modal-body">
|
|
|
|
<input type="hidden" id="id">
|
|
|
|
<label>Kode Barang</label>
|
|
<input type="text" id="kode" class="form-control">
|
|
|
|
<label>Nama Barang</label>
|
|
<input type="text" id="nama" class="form-control">
|
|
|
|
<label>Limit Stok</label>
|
|
<input type="number" id="limit_stock" class="form-control">
|
|
|
|
<label class="mt-2">Tracking Type</label>
|
|
<select id="tracking_type" class="form-control">
|
|
<option value="UNIT">UNIT</option>
|
|
<option value="QTY">QTY</option>
|
|
</select>
|
|
|
|
<label class="mt-2">Need Serial Number</label>
|
|
<select id="need_serial_number" class="form-control">
|
|
<option value="false">Tidak</option>
|
|
<option value="true">Ya</option>
|
|
</select>
|
|
|
|
<div class="form-check mt-3 py-3 border rounded bg-light" style="padding-left: 30px">
|
|
<input class="form-check-input" type="checkbox" id="allocate_purchase_cost" value="1">
|
|
<label class="form-check-label fw-semibold" for="allocate_purchase_cost">Masukkan biaya pembelian ke harga beli satuan</label>
|
|
<small class="d-block text-muted">Ongkir, asuransi, dan layanan bersih dari diskon/cashback dialokasikan per unit saat penerimaan.</small>
|
|
</div>
|
|
|
|
<label class="mt-2">Unit</label>
|
|
<select id="unit" class="form-control">
|
|
<option value="PCS">PCS</option>
|
|
<option value="Meter">Meter</option>
|
|
<option value="Lembar">Lembar</option>
|
|
</select>
|
|
|
|
<div class="form-check form-switch mt-3">
|
|
<input class="form-check-input" type="checkbox" id="is_active" checked>
|
|
<label class="form-check-label" for="is_active">Aktif dan dapat dipilih pada transaksi baru</label>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="modal-footer">
|
|
<button class="btn btn-secondary" data-bs-dismiss="modal">Batal</button>
|
|
<button class="btn btn-warning" id="btnSimpan">Simpan</button>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
$(function(){
|
|
|
|
let action = 'add';
|
|
|
|
let table = $('#tableWarehouse').DataTable({
|
|
ajax:{
|
|
url:"<?= base_url('kodebarang/get_data'); ?>",
|
|
type:"POST"
|
|
}
|
|
});
|
|
|
|
function resetForm(){
|
|
$('#id').val('');
|
|
$('#kode').val('');
|
|
$('#nama').val('');
|
|
$('#limit_stock').val('');
|
|
$('#tracking_type').val('UNIT');
|
|
$('#need_serial_number').val('false');
|
|
$('#allocate_purchase_cost').prop('checked',false);
|
|
$('#unit').val('PCS');
|
|
$('#is_active').prop('checked',true);
|
|
}
|
|
|
|
// ADD
|
|
$('.btn-add').click(function(){
|
|
resetForm();
|
|
action = 'add';
|
|
$('#modalKodebarang').modal('show');
|
|
});
|
|
|
|
// EDIT
|
|
$(document).on('click','.btn-editkode',function(){
|
|
let id = $(this).data('id');
|
|
|
|
$.get("<?= base_url('kodebarang/detail/'); ?>"+id,function(res){
|
|
|
|
$('#id').val(res.id);
|
|
$('#kode').val(res.kode_barang);
|
|
$('#nama').val(res.nama);
|
|
$('#limit_stock').val(res.limit_stock);
|
|
$('#tracking_type').val((res.tracking_type || 'UNIT').toUpperCase());
|
|
$('#need_serial_number').val((res.need_serial_number || 'false').toLowerCase());
|
|
$('#allocate_purchase_cost').prop('checked', Number(res.allocate_purchase_cost || 0) === 1);
|
|
$('#unit').val(res.unit || 'PCS');
|
|
$('#is_active').prop('checked',Number(res.is_active || 0) === 1);
|
|
|
|
action = 'edit';
|
|
$('#modalKodebarang').modal('show');
|
|
|
|
},'json');
|
|
});
|
|
|
|
// SAVE
|
|
$('#btnSimpan').click(function(){
|
|
|
|
let data = {
|
|
id: $('#id').val(),
|
|
kode: $('#kode').val(),
|
|
nama: $('#nama').val(),
|
|
limit_stock: $('#limit_stock').val(),
|
|
tracking_type: $('#tracking_type').val(),
|
|
need_serial_number: $('#need_serial_number').val(),
|
|
allocate_purchase_cost: $('#allocate_purchase_cost').is(':checked') ? 1 : 0,
|
|
unit: $('#unit').val(),
|
|
is_active: $('#is_active').is(':checked') ? 1 : 0
|
|
};
|
|
|
|
if(window.APP_CSRF) data[APP_CSRF.name]=APP_CSRF.value;
|
|
|
|
if(!data.kode || !data.nama){
|
|
Swal.fire('Warning','Kode dan nama barang wajib diisi','warning');
|
|
return;
|
|
}
|
|
|
|
if(data.limit_stock === '' || parseInt(data.limit_stock) < 0){
|
|
Swal.fire('Warning','Limit stok wajib diisi dan tidak boleh negatif','warning');
|
|
return;
|
|
}
|
|
|
|
let url = action === 'add'
|
|
? "<?= base_url('kodebarang/save'); ?>"
|
|
: "<?= base_url('kodebarang/update'); ?>";
|
|
|
|
$.post(url,data,function(res){
|
|
|
|
if(res.status){
|
|
$('#modalKodebarang').modal('hide');
|
|
table.ajax.reload(null,false);
|
|
Swal.fire('Sukses',res.message,'success');
|
|
} else {
|
|
Swal.fire('Error',res.message,'error');
|
|
}
|
|
|
|
},'json');
|
|
});
|
|
|
|
});
|
|
</script>
|