Files

57 lines
7.3 KiB
PHP

<?php
$inventory_title='Pergerakan Perangkat Batch';
$inventory_subtitle='Scan atau cari beberapa barang, lalu posting satu dokumen serah-terima, transfer, atau pengembalian.';
$perm=$equipment_permissions??array();
$active_panel='batch';
$canBatch=!empty($perm['handover'])||!empty($perm['transfer'])||!empty($perm['return']);
$this->load->view('peralatan_teknisi/_module_header',get_defined_vars());
?>
<link rel="stylesheet" href="<?=base_url('assets/css/technician-equipment.css')?>?v=<?=filemtime(FCPATH.'assets/css/technician-equipment.css')?>">
<div class="tech-shell">
<?php $this->load->view('peralatan_teknisi/_module_nav',get_defined_vars()); ?>
<?php if(!$canBatch):?><div class="alert alert-warning">Role Anda belum mempunyai permission untuk memproses pergerakan batch.</div><?php else:?>
<form id="techBulkForm" data-ajax="true" enctype="multipart/form-data">
<section class="tech-card mt-0">
<div class="tech-card-head"><div><span class="tech-step-label">1 · Pilih proses satu kali</span><h5>Jenis Pergerakan</h5><p>Data header berlaku untuk seluruh barang dalam daftar.</p></div></div>
<div class="tech-bulk-actions" role="group" aria-label="Jenis pergerakan">
<?php if(!empty($perm['handover'])):?><button type="button" class="tech-bulk-action active" data-action="handover"><i class="bi bi-person-plus"></i><strong>Serahkan ke Teknisi</strong><small>Gudang → Teknisi</small></button><?php endif?>
<?php if(!empty($perm['transfer'])):?><button type="button" class="tech-bulk-action" data-action="transfer"><i class="bi bi-people"></i><strong>Transfer Teknisi</strong><small>Teknisi A → Teknisi B</small></button><?php endif?>
<?php if(!empty($perm['return'])):?><button type="button" class="tech-bulk-action" data-action="return"><i class="bi bi-box-arrow-in-down"></i><strong>Kembali ke Gudang</strong><small>Teknisi → Pemeriksaan</small></button><?php endif?>
</div>
<input type="hidden" name="action">
<input type="hidden" name="idempotency_key">
<input type="hidden" name="items_json">
<div class="tech-form-grid mt-3">
<label>Tanggal *<input class="form-control" type="date" name="date" value="<?=date('Y-m-d')?>" required></label>
<label data-bulk-field="technician"><span data-tech-label>Karyawan Tujuan</span> *<select class="form-select select-search" name="technician_id" required><option value="">Cari karyawan</option><?php foreach($teknisi_list as$t):?><option value="<?=$t->id?>"><?=html_escape($t->employee_code.' - '.$t->full_name)?></option><?php endforeach?></select></label>
<label data-bulk-field="target" class="d-none">Karyawan Tujuan *<select class="form-select select-search" name="target_technician_id"><option value="">Cari karyawan tujuan</option><?php foreach(($target_teknisi_list??$teknisi_list) as$t):?><option value="<?=$t->id?>"><?=html_escape($t->employee_code.' - '.$t->full_name)?></option><?php endforeach?></select></label>
<label data-bulk-field="warehouse" class="d-none">Gudang Perusahaan<select class="form-select" name="warehouse_id"><option value="">Pilih gudang</option><?php foreach($warehouses as$w):?><option value="<?=$w->id?>"><?=html_escape($w->nama)?></option><?php endforeach?></select><small id="techWarehouseHint" class="text-muted">Wajib hanya untuk barang milik perusahaan.</small></label>
<label class="full">Keterangan Transaksi<textarea class="form-control" name="notes" rows="2" placeholder="Opsional; sistem memberi keterangan standar bila dikosongkan"></textarea></label>
</div>
</section>
<section class="tech-card">
<div class="tech-card-head"><div><span class="tech-step-label">2 · Pilih barang</span><h5>Tambahkan Banyak Barang</h5><p>Pilih teknisi asal untuk menampilkan seluruh barang yang sedang dikuasai. Barcode dan pencarian tetap dapat digunakan untuk mempercepat pemilihan.</p></div><span class="tech-status"><strong id="techBulkCount">0</strong>&nbsp;dipilih</span></div>
<div class="tech-scan"><input class="form-control" id="techBulkSearch" autocomplete="off" placeholder="Scan barcode/SN atau ketik nama barang"><button type="button" class="btn btn-primary" id="techBulkSearchButton"><i class="bi bi-search"></i> Cari</button></div>
<div id="techBulkSearchResults" class="tech-search-results d-none"></div>
<div class="tech-technician-stock d-none mt-3" id="techTechnicianStock">
<div class="tech-stock-toolbar"><div><strong>Barang pada Teknisi Asal</strong><small id="techTechnicianStockInfo">Pilih barang yang akan diproses.</small></div><div class="d-flex gap-2"><button type="button" class="btn btn-outline-primary btn-sm" id="techSelectVisible"><i class="bi bi-check2-square"></i> Pilih Semua</button><button type="button" class="btn btn-outline-secondary btn-sm" id="techClearSelection">Kosongkan</button></div></div>
<div class="tech-table-wrap tech-stock-list"><table class="table tech-table align-middle mb-0"><thead><tr><th style="width:46px"><input class="form-check-input" type="checkbox" id="techToggleVisible" aria-label="Pilih semua barang yang tampil"></th><th>Barang</th><th>Barcode / Serial</th><th>Status</th><th>Jenis</th><th>Saldo</th></tr></thead><tbody id="techTechnicianStockBody"><tr><td colspan="6" class="tech-empty">Pilih teknisi asal.</td></tr></tbody></table></div>
</div>
<div class="tech-selected-head mt-3"><strong>Barang yang Dipilih</strong><small>Jumlah QTY dapat disesuaikan sebelum diposting.</small></div>
<div class="tech-table-wrap mt-2"><table class="table tech-table align-middle" id="techBulkItems"><thead><tr><th>Barang</th><th>Barcode / Serial</th><th>Jenis</th><th>Saldo</th><th style="width:150px">Jumlah Diproses</th><th>Keterangan Baris</th><th></th></tr></thead><tbody><tr class="tech-bulk-empty"><td colspan="7" class="tech-empty">Belum ada barang yang dipilih.</td></tr></tbody></table></div>
</section>
<section class="tech-card d-none" data-bulk-field="proof">
<div class="tech-card-head"><div><span class="tech-step-label">3 · Bukti batch</span><h5>Bukti Pengembalian</h5><p>Satu atau beberapa foto/PDF dapat menjadi bukti untuk seluruh barang dalam dokumen ini.</p></div></div>
<div class="tech-file-box" data-filebox><label class="tech-add-file"><i class="bi bi-plus-lg fs-4"></i><span class="small">Tambah</span><input class="d-none" type="file" name="attachments[]" accept="image/*,application/pdf" multiple></label></div>
</section>
<div class="tech-bulk-submit"><div><strong id="techBulkSummary">Belum ada barang dipilih</strong><small>Semua baris diposting sebagai satu dokumen dan satu transaksi database.</small></div><button class="btn btn-primary btn-lg" type="submit" disabled><i class="bi bi-check2-circle"></i> Posting Pergerakan</button></div>
</form>
<?php endif?>
</div>
<div class="modal fade tech-modal" id="techBulkPreviewModal" data-bs-backdrop="static" tabindex="-1"><div class="modal-dialog modal-xl modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h5 class="modal-title">Preview Bukti</h5><button class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body p-2" style="height:min(82vh,850px)" data-preview-body></div></div></div></div>
<script>window.TECH_EQUIPMENT_BULK=<?=json_encode(array('base'=>base_url(),'permissions'=>$perm),JSON_UNESCAPED_SLASHES)?>;</script>
<script src="<?=base_url('assets/js/technician-equipment-bulk.js')?>?v=<?=filemtime(FCPATH.'assets/js/technician-equipment-bulk.js')?>"></script>