feat(production): 優化生產單 BOM 原物料選取邏輯,支援商品 -> 倉庫 -> 批號連動與 API 分佈查詢

This commit is contained in:
2026-02-04 13:08:05 +08:00
parent a0c450d229
commit 4ba85ce446
17 changed files with 285 additions and 227 deletions

View File

@@ -36,7 +36,7 @@ class InventoryAdjustDoc extends Model
static::creating(function ($model) {
if (empty($model->doc_no)) {
$today = date('Ymd');
$prefix = 'ADJ' . $today;
$prefix = 'ADJ-' . $today . '-';
$lastDoc = static::where('doc_no', 'like', $prefix . '%')
->orderBy('doc_no', 'desc')

View File

@@ -36,7 +36,7 @@ class InventoryCountDoc extends Model
static::creating(function ($model) {
if (empty($model->doc_no)) {
$today = date('Ymd');
$prefix = 'CNT' . $today;
$prefix = 'CNT-' . $today . '-';
// 查詢當天編號最大的單據
$lastDoc = static::where('doc_no', 'like', $prefix . '%')

View File

@@ -35,7 +35,7 @@ class InventoryTransferOrder extends Model
static::creating(function ($model) {
if (empty($model->doc_no)) {
$today = date('Ymd');
$prefix = 'TRF' . $today;
$prefix = 'TRF-' . $today . '-';
$lastDoc = static::where('doc_no', 'like', $prefix . '%')
->orderBy('doc_no', 'desc')

View File

@@ -90,8 +90,8 @@ class GoodsReceiptService
private function generateCode(string $date)
{
// Format: GR + YYYYMMDD + NNN
$prefix = 'GR' . date('Ymd', strtotime($date));
// Format: GR-YYYYMMDD-NN
$prefix = 'GR-' . date('Ymd', strtotime($date)) . '-';
$last = GoodsReceipt::where('code', 'like', $prefix . '%')
->orderBy('id', 'desc')
@@ -99,11 +99,11 @@ class GoodsReceiptService
->first();
if ($last) {
$seq = intval(substr($last->code, -3)) + 1;
$seq = intval(substr($last->code, -2)) + 1;
} else {
$seq = 1;
}
return $prefix . str_pad($seq, 3, '0', STR_PAD_LEFT);
return $prefix . str_pad($seq, 2, '0', STR_PAD_LEFT);
}
}