[FEAT] 取貨碼金額歸零 + 通行碼不上報交易

- 取貨碼(FontendPickupCodeDialog):setTotalPrice(0),因屬已預付來取貨/
  付款未出貨補出貨,本機交易付款金額為 0。
- 通行碼(payment_type=5):工程師/內部硬體測試用,DispatchDialog 照常出貨
  測試硬體,但略過 MQTT 交易結案上報(避免污染銷售/營收、不扣雲端庫存;
  B670 驗證已於後台記 log)。集中於 publishFinalizeUnlessPassCode(),
  成功/失敗兩路徑共用。

三 flavor 編譯/打包通過。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
sky121113 2026-06-10 10:01:51 +08:00
parent 1720d2007e
commit 53ea3dafa9
2 changed files with 15 additions and 2 deletions

View File

@ -393,6 +393,7 @@ public class FontendPickupCodeDialog extends DialogAbstract {
MyApp.getInstance().getReportFlowInfoData().setFlowBarCode(code);
MyApp.getInstance().getReportFlowInfoData().setReportFlowId(code);
MyApp.getInstance().getReportFlowInfoData().setOrderId(Tools.generateTimeBasedUUID());
MyApp.getInstance().getReportFlowInfoData().setTotalPrice(0); // 取貨碼為已預付/補出貨付款金額 0
MyApp.getInstance().getReportAccessCodeStructure().setAccessCodeId(codeId);
changeBuy(); // 開啟取貨確認 BuyPickupCodeDialog 出貨

View File

@ -943,7 +943,7 @@ public class DispatchDialog extends DialogAbstract {
if ("Cmuh".equalsIgnoreCase(com.unibuy.smartdevice.BuildConfig.FLAVOR_project)) {
insertDrgnoToMemo();
}
MqttManager.getInstance().publishTransactionFinalize(finalizeBuilder.build());
publishFinalizeUnlessPassCode();
getSrcHandlerMain().send(getClass().getSimpleName(), FontendActivity.Option.RESET_DATA.getOption(),
"update data");
saveData();
@ -1059,12 +1059,24 @@ public class DispatchDialog extends DialogAbstract {
}
getLogs().info("出貨失敗,發送 MQTT Finalize 結案訊息: " + message);
MqttManager.getInstance().publishTransactionFinalize(finalizeBuilder.build());
publishFinalizeUnlessPassCode();
getSrcHandlerMain().send(getClass().getSimpleName(), FontendActivity.Option.RESET_DATA.getOption(),
"update data");
saveData();
}
/**
* 發送 MQTT 交易結案 flowType 5通行碼為工程師/內部硬體測試不上報交易
* B670 驗證已於後台記 log避免污染銷售/營收且不扣減雲端庫存
*/
private void publishFinalizeUnlessPassCode() {
if (MyApp.getInstance().getReportFlowInfoData().getFlowType() == 5) {
getLogs().info("通行碼(payment_type=5) 為內部測試出貨,略過 MQTT 交易結案上報。");
return;
}
MqttManager.getInstance().publishTransactionFinalize(finalizeBuilder.build());
}
private void addFailedDispenseRecordsFromCurrent() {
if (dispatchList == null || dispatchList.isEmpty()) {
return;