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