parfum/app/Livewire/Forms/Studio/Stock/StockOpnameForm.php

63 lines
1.4 KiB
PHP

<?php
namespace App\Livewire\Forms\Studio\Stock;
use App\Models\StockOpname;
use App\Models\StockOpnameItem;
use App\Rules\UnsignedInteger;
use Livewire\Form;
class StockOpnameForm extends Form
{
public StockOpname $stockOpname;
public array $outlet_stock = [];
public ?string $note = null;
public function rules(): array
{
return [
'outlet_stock' => 'array',
'outlet_stock.*' => ['nullable', new UnsignedInteger],
'note' => 'nullable',
];
}
public function validationAttributes(): array
{
return [
'outlet_stock' => 'stock outlet',
'outlet_stock.*' => 'stock outlet',
'note' => 'catatan',
];
}
public function setStockOpname(StockOpname $stockOpname): void
{
$stockOpname->load('items');
$this->stockOpname = $stockOpname;
$this->note = $stockOpname->note;
}
public function update(): void
{
$this->validate();
$this->stockOpname->update(['note' => $this->note]);
foreach ($this->outlet_stock as $itemId => $qtyPhysical) {
$item = StockOpnameItem::find($itemId);
if (! $item) {
continue;
}
$item->qty_physical = (int) str_replace('.', '', (string) ($qtyPhysical ?? 0));
$item->save();
}
}
}