|
|
@@ -55,10 +55,38 @@ class Procuremen extends Backend
|
|
|
{
|
|
|
parent::_initialize();
|
|
|
$this->model = new \app\admin\model\Procuremen;
|
|
|
+ $this->maybeMigrateLegacyWflowStatusText();
|
|
|
$this->assignProcuremenAuthConfig();
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 将 purchase_order.wflow_status 旧数字值(0–3)一次性迁移为中文文案
|
|
|
+ */
|
|
|
+ protected function maybeMigrateLegacyWflowStatusText(): void
|
|
|
+ {
|
|
|
+ $flagFile = RUNTIME_PATH . 'procuremen_wflow_text_migrated.flag';
|
|
|
+ if (is_file($flagFile)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ $map = [
|
|
|
+ '0' => ProcuremenStatus::WFLOW_PENDING_ISSUE,
|
|
|
+ '1' => ProcuremenStatus::WFLOW_PENDING_CONFIRM,
|
|
|
+ '2' => ProcuremenStatus::WFLOW_PENDING_APPROVAL,
|
|
|
+ '3' => ProcuremenStatus::WFLOW_APPROVED,
|
|
|
+ ];
|
|
|
+ try {
|
|
|
+ foreach ($map as $num => $text) {
|
|
|
+ Db::table('purchase_order')
|
|
|
+ ->whereRaw("TRIM(CAST(wflow_status AS CHAR)) = '" . str_replace("'", "''", $num) . "'")
|
|
|
+ ->update(['wflow_status' => $text]);
|
|
|
+ }
|
|
|
+ @file_put_contents($flagFile, date('c'));
|
|
|
+ } catch (\Throwable $e) {
|
|
|
+ Log::write('migrate wflow_status text failed: ' . $e->getMessage(), 'error');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 是否拥有采购子权限(支持 procuremen/pickreview 与 procuremen/pickreview/index 等写法)
|
|
|
*
|
|
|
@@ -4969,7 +4997,7 @@ class Procuremen extends Backend
|
|
|
protected function upsertPurchaseOrderFromRow(
|
|
|
array $row,
|
|
|
string $sysRqDb,
|
|
|
- ?int $wflowStatus = null,
|
|
|
+ $wflowStatus = null,
|
|
|
?string $pickTime = null,
|
|
|
?array $exists = null
|
|
|
): void {
|
|
|
@@ -5003,8 +5031,8 @@ class Procuremen extends Backend
|
|
|
'status' => ProcuremenStatus::PO_IN_PROGRESS,
|
|
|
'sys_rq' => $sysRqDb,
|
|
|
];
|
|
|
- if ($wflowStatus !== null) {
|
|
|
- $data['wflow_status'] = $wflowStatus;
|
|
|
+ if ($wflowStatus !== null && $wflowStatus !== '') {
|
|
|
+ $data['wflow_status'] = ProcuremenStatus::normalizeWflowStatus($wflowStatus);
|
|
|
}
|
|
|
if ($pickTime !== null && $pickTime !== '') {
|
|
|
$data['pick_time'] = $pickTime;
|
|
|
@@ -5871,7 +5899,7 @@ class Procuremen extends Backend
|
|
|
|
|
|
Db::startTrans();
|
|
|
try {
|
|
|
- // ---------- 主表 wflow_status=1;明细写入 purchase_order_detail,随后向供应商发短信/邮件 ----------
|
|
|
+ // ---------- 主表 wflow_status=待确认;明细写入 purchase_order_detail,随后向供应商发短信/邮件 ----------
|
|
|
foreach ($mergeRows as $row) {
|
|
|
if (!is_array($row)) {
|
|
|
continue;
|
|
|
@@ -5880,7 +5908,7 @@ class Procuremen extends Backend
|
|
|
$this->upsertPurchaseOrderFromRow(
|
|
|
$row,
|
|
|
$sysRqDb,
|
|
|
- 1,
|
|
|
+ ProcuremenStatus::WFLOW_PENDING_CONFIRM,
|
|
|
$issueTime,
|
|
|
$this->isValidScydgyRowId($sid) ? ($existingBySid[$sid] ?? null) : null
|
|
|
);
|