46 lines
1.2 KiB
PHP
46 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace Modules\MaterialLogistics\Services;
|
|
|
|
use Modules\MaterialLogistics\Models\MaterialRequisition;
|
|
use Modules\MaterialLogistics\Models\PurchaseOrder;
|
|
|
|
class DocumentNumberService
|
|
{
|
|
public function nextMrNumber(): string
|
|
{
|
|
$year = now()->format('Y');
|
|
$prefix = "MR-{$year}-";
|
|
|
|
$last = MaterialRequisition::where('document_number', 'like', "{$prefix}%")
|
|
->orderByDesc('document_number')
|
|
->value('document_number');
|
|
|
|
$nextSeq = 1;
|
|
if ($last) {
|
|
$seq = (int) str_replace($prefix, '', $last);
|
|
$nextSeq = $seq + 1;
|
|
}
|
|
|
|
return $prefix . str_pad($nextSeq, 4, '0', STR_PAD_LEFT);
|
|
}
|
|
|
|
public function nextPoNumber(): string
|
|
{
|
|
$year = now()->format('Y');
|
|
$prefix = "PO-{$year}-";
|
|
|
|
$last = PurchaseOrder::where('document_number', 'like', "{$prefix}%")
|
|
->orderByDesc('document_number')
|
|
->value('document_number');
|
|
|
|
$nextSeq = 1;
|
|
if ($last) {
|
|
$seq = (int) str_replace($prefix, '', $last);
|
|
$nextSeq = $seq + 1;
|
|
}
|
|
|
|
return $prefix . str_pad($nextSeq, 4, '0', STR_PAD_LEFT);
|
|
}
|
|
}
|