Fix mikro expertise auto-open and early warning target logic
This commit is contained in:
@@ -691,7 +691,7 @@ class FrontpageController extends Controller
|
||||
if (!Session::has('previlage')) {
|
||||
return redirect('/login');
|
||||
}
|
||||
$periksa = Periksa::select('id', 'poli_id', 'daftar')->find($periksaId);
|
||||
$periksa = Periksa::select('id', 'poli_id', 'daftar', 'nofoto')->find($periksaId);
|
||||
if (!$periksa) {
|
||||
abort(404);
|
||||
}
|
||||
@@ -706,9 +706,11 @@ class FrontpageController extends Controller
|
||||
|
||||
return view($this->mikroExpertiseViewName(), $this->buildMikroViewData($master, [
|
||||
'focusPeriksaId' => (string) $periksaId,
|
||||
'focusNoFoto' => (string) ($periksa->nofoto ?? ''),
|
||||
'expertiseReturnUrl' => $returnUrl,
|
||||
'openExpertiseOnLoad' => true,
|
||||
'initialListMode' => 'searchbydate',
|
||||
'initialListMode' => 'nofoto',
|
||||
'initialSearchValue' => (string) ($periksa->nofoto ?? ''),
|
||||
'initialStartDate' => $periksaDate,
|
||||
'initialEndDate' => $periksaDate,
|
||||
]));
|
||||
|
||||
@@ -6,7 +6,6 @@ use App\Services\SimbhpStockService;
|
||||
use App\SIMBHPJenis;
|
||||
use App\SIMBHPReport;
|
||||
use App\User;
|
||||
use App\Ruangan;
|
||||
use Carbon\Carbon;
|
||||
use Livewire\Component;
|
||||
use Livewire\Attributes\On;
|
||||
@@ -18,7 +17,9 @@ class GudangPos extends Component
|
||||
use WithPagination;
|
||||
|
||||
public string $tanggal = '';
|
||||
public ?string $penerimaId = null;
|
||||
public string $namaRuangan = '';
|
||||
public string $penerimaId = '';
|
||||
public string $penerimaManual = '';
|
||||
|
||||
public string $scan = '';
|
||||
public string $selectedKode = '';
|
||||
@@ -36,7 +37,8 @@ class GudangPos extends Component
|
||||
public function mount(): void
|
||||
{
|
||||
$this->tanggal = date('Y-m-d');
|
||||
$this->penerimaId = User::orderBy('nama', 'ASC')->value('nama');
|
||||
$firstUserId = User::orderBy('nama', 'ASC')->value('id');
|
||||
$this->penerimaId = $firstUserId ? (string) $firstUserId : '';
|
||||
}
|
||||
|
||||
public function updatingSearch(): void
|
||||
@@ -183,7 +185,7 @@ class GudangPos extends Component
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$this->penerimaId) {
|
||||
if ($this->penerimaId === '') {
|
||||
$this->toast('error', 'Penerima wajib dipilih.');
|
||||
return;
|
||||
}
|
||||
@@ -201,7 +203,26 @@ class GudangPos extends Component
|
||||
return;
|
||||
}
|
||||
|
||||
$penerima = $this->penerimaId;
|
||||
$namaRuangan = trim((string) $this->namaRuangan);
|
||||
if ($namaRuangan === '') {
|
||||
$this->toast('error', 'Nama ruang wajib diisi.');
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->penerimaId === '__manual__') {
|
||||
$penerima = trim((string) $this->penerimaManual);
|
||||
if ($penerima === '') {
|
||||
$this->toast('error', 'Nama penerima manual wajib diisi.');
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
$user = User::select('id', 'nama')->find((int) $this->penerimaId);
|
||||
if (!$user) {
|
||||
$this->toast('error', 'Penerima tidak ditemukan.');
|
||||
return;
|
||||
}
|
||||
$penerima = trim((string) ($user->nama ?? ''));
|
||||
}
|
||||
|
||||
$service = app(SimbhpStockService::class);
|
||||
|
||||
@@ -253,7 +274,7 @@ class GudangPos extends Component
|
||||
];
|
||||
}
|
||||
|
||||
DB::transaction(function () use ($prepared, $date, $penerima) {
|
||||
DB::transaction(function () use ($prepared, $date, $penerima, $namaRuangan) {
|
||||
foreach ($prepared as $row) {
|
||||
/** @var SIMBHPJenis $jenis */
|
||||
$jenis = $row['jenis'];
|
||||
@@ -261,7 +282,7 @@ class GudangPos extends Component
|
||||
'tanggal' => (int) $date->format('d'),
|
||||
'bulan' => (int) $date->format('m'),
|
||||
'tahun' => (int) $date->format('Y'),
|
||||
'deskripsi' => 'Diterima oleh ' . ($penerima ?? $penerimaId),
|
||||
'deskripsi' => 'Ruangan: ' . $namaRuangan . ' | Diterima oleh ' . ($penerima !== '' ? $penerima : 'Unknown'),
|
||||
'pemasukan' => null,
|
||||
'pengeluaran' => (int) $row['qty'],
|
||||
'qty_base' => (int) $row['qty_base'],
|
||||
@@ -277,6 +298,7 @@ class GudangPos extends Component
|
||||
$this->cart = [];
|
||||
$this->qty = 1;
|
||||
$this->keterangan = '';
|
||||
$this->penerimaManual = '';
|
||||
$this->toast('success', 'Barang keluar berhasil diproses.');
|
||||
$this->dispatch('gudang-refresh');
|
||||
$this->dispatch('gudangpos-close-modal');
|
||||
@@ -322,7 +344,6 @@ class GudangPos extends Component
|
||||
$service = app(SimbhpStockService::class);
|
||||
|
||||
$users = User::select('id', 'nama', 'previlage')->orderBy('nama', 'ASC')->get();
|
||||
$ruangans = Ruangan::select('id', 'ruangan')->orderBy('ruangan', 'ASC')->get();
|
||||
|
||||
$query = SIMBHPJenis::query()->orderBy('jenis', 'ASC');
|
||||
$search = trim((string) $this->search);
|
||||
@@ -395,7 +416,6 @@ class GudangPos extends Component
|
||||
|
||||
return view('livewire.gudang-pos', [
|
||||
'users' => $users,
|
||||
'ruangans' => $ruangans,
|
||||
'products' => $products,
|
||||
'stockMap' => $stockMap,
|
||||
'latestExpiredMap' => $latestExpiredMap,
|
||||
|
||||
@@ -4,9 +4,11 @@
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
var focusPeriksaId = @json((string) ($focusPeriksaId ?? ''));
|
||||
var focusNoFoto = @json((string) ($focusNoFoto ?? ''));
|
||||
var returnUrl = @json($expertiseReturnUrl ?? url('/'));
|
||||
var shouldOpenOnLoad = @json((bool) ($openExpertiseOnLoad ?? false));
|
||||
var initialListMode = @json($initialListMode ?? 'searchbydate');
|
||||
var initialSearchValue = @json($initialSearchValue ?? '');
|
||||
var initialStartDate = @json($initialStartDate ?? '');
|
||||
var initialEndDate = @json($initialEndDate ?? '');
|
||||
var autoOpenAttempts = 0;
|
||||
@@ -28,7 +30,7 @@
|
||||
$('#master_set01').val(initialListMode);
|
||||
}
|
||||
if ($('#valcari').length) {
|
||||
$('#valcari').val('');
|
||||
$('#valcari').val(initialSearchValue);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,10 +85,12 @@
|
||||
|
||||
var rows = $('#gridpemeriksaan').jqxGrid('getrows') || [];
|
||||
var matchedRow = null;
|
||||
var matchedRowIndex = -1;
|
||||
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
if (String(rows[i].id) === focusPeriksaId) {
|
||||
if (String(rows[i].id) === focusPeriksaId || (focusNoFoto !== '' && String(rows[i].nofoto) === focusNoFoto)) {
|
||||
matchedRow = rows[i];
|
||||
matchedRowIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -99,12 +103,12 @@
|
||||
return;
|
||||
}
|
||||
|
||||
var boundIndex = matchedRow.boundindex;
|
||||
$('#gridpemeriksaan').jqxGrid('selectrow', boundIndex);
|
||||
$('#gridpemeriksaan').jqxGrid('ensurerowvisible', boundIndex);
|
||||
var triggerRowIndex = matchedRowIndex >= 0 ? matchedRowIndex : matchedRow.boundindex;
|
||||
$('#gridpemeriksaan').jqxGrid('selectrow', triggerRowIndex);
|
||||
$('#gridpemeriksaan').jqxGrid('ensurerowvisible', triggerRowIndex);
|
||||
|
||||
setTimeout(function () {
|
||||
if (triggerExpertiseButton(boundIndex)) {
|
||||
if (triggerExpertiseButton(triggerRowIndex)) {
|
||||
hasOpenedTarget = true;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -85,19 +85,33 @@
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>Penerima</label>
|
||||
<label>Nama Ruang</label>
|
||||
<input type="text" class="form-control" wire:model.live="namaRuangan" placeholder="contoh: ICU / Lab Mikrobiologi / OK">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label>Nama Penerima Barang</label>
|
||||
<select class="form-control" wire:model.live="penerimaId">
|
||||
@foreach($users as $u)
|
||||
<option value="{{ $u->nama }}">{{ $u->nama }}</option>
|
||||
@endforeach
|
||||
@foreach($ruangans as $ruang)
|
||||
<option value="{{ $ruang->ruangan }}">{{ $ruang->ruangan }}</option>
|
||||
<option value="{{ $u->id }}">{{ $u->nama }}</option>
|
||||
@endforeach
|
||||
<option value="__manual__">Lainnya, ketik manual</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if($penerimaId === '__manual__')
|
||||
<div class="form-group">
|
||||
<label>Nama Penerima Manual</label>
|
||||
<input type="text" class="form-control" wire:model.live="penerimaManual" placeholder="ketik nama penerima barang">
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-striped m-b-0">
|
||||
<thead>
|
||||
|
||||
Reference in New Issue
Block a user