feat(sap): 扩展SAP单据类型支持新业务场景

- 支持新的发货单类型ZLF1、ZLF3、ZLF9替代原有的ZLF类型
- 支持新的退货单类型ZLR1、ZLR2替代原有的ZLR类型
- 新增getBillTypeByLfart方法根据SAP LFART字段动态获取单据类型
- 更新出库单生成逻辑使用动态单据类型配置
- 优化发货分配逻辑支持多种免费发货单场景
- 完善退货入库流程适配新的单据类型规则
This commit is contained in:
yangyufu
2026-04-09 16:45:30 +08:00
parent 26622ca4bf
commit 2b8b402c2d

View File

@@ -383,11 +383,12 @@ public class SapToLmsServiceImpl implements SapToLmsService {
JSONObject json = item.getJSONObject(i);
lfart = json.getString("LFART");
JSONObject jsonDtl = new JSONObject();
if (StrUtil.equals(lfart, "ZLF") || StrUtil.equals(lfart, "ZJS")) {
if (StrUtil.equals(lfart, "ZLF1") || StrUtil.equals(lfart, "ZLF3") || StrUtil.equals(lfart, "ZLF9") || StrUtil.equals(lfart, "ZJS")) {
// 生成出库单
String billType = getBillTypeByLfart(lfart);
jsonMst.put("io_type", "1");
jsonMst.put("buss_type", "1001");
jsonMst.put("bill_type", "1001");
jsonMst.put("buss_type", billType);
jsonMst.put("bill_type", billType);
jsonMst.put("source_id", json.getLongValue("VBELN"));
jsonMst.put("source_name", "交货单");
jsonMst.put("receiver", json.getString("CONSIGNEE")); // 收货人
@@ -502,8 +503,13 @@ public class SapToLmsServiceImpl implements SapToLmsService {
box_rows.add(map);
}
}
// 发货出库
if (StrUtil.equals(lfart, "ZLF")) {
/*
发货分配逻辑
* ZLF9 免费发货单-有价格
* ZLF3 免费发货单
* ZLF1 标准发货单
* */
if (StrUtil.equals(lfart, "ZLF1") || StrUtil.equals(lfart, "ZLF3") || StrUtil.equals(lfart, "ZLF9")) {
jsonMst.put("tableData", tableData);
// 调用出库新增并分配
String iostorinv_id = checkOutBillService.insertDtl2(jsonMst);
@@ -520,11 +526,15 @@ public class SapToLmsServiceImpl implements SapToLmsService {
JSONObject jsonObject = new JSONObject();
jsonObject.put("iostorinv_id", iostorinv_id);
}
// 退货入库
if (StrUtil.equals(lfart, "ZLR")) {
/*
退货入库 - 1 销售退货单
退货入库 - 3 免费退货单
*/
if (StrUtil.equals(lfart, "ZLR1") || StrUtil.equals(lfart, "ZLR2")) {
jsonMst.put("tableData", box_rows);
//创建退货入库单
jsonMst.put("bill_type", "0002");
String billType = getBillTypeByLfart(lfart);
jsonMst.put("bill_type", billType);
jsonMst.put("biz_date", DateUtil.now());
jsonMst.put("bill_status", "10");
rawAssistIStorService.insertDtl(jsonMst);
@@ -547,6 +557,48 @@ public class SapToLmsServiceImpl implements SapToLmsService {
return result;
}
/**
* @description: 根据Sap LFART获取单据类型
* @author ManMan
* @date: 2026/4/9 14:08
* 发货(字典值ST_INV_OUT_TYPE)
* ZLF 1001 发货出库 (旧)
* ZLF1 1013 标准发货 (新)
* ZLF3 1014 无票发货 (新)
* ZLF9 1015 有票发货 (新)
* 退货入库字典值ST_INV_IN_TYPE
* ZLR 0002 退货入库 (旧)
* ZLR1 0013 标准退货 (新)
* ZLR3 0014 免费退货 (新)
**/
public String getBillTypeByLfart(String code){
String billType = "";
switch (code){
case "ZLF1":
billType = "1013";
break;
case "ZLF3":
billType = "1014";
break;
case "ZLF9":
billType = "1015";
break;
case "ZLR1":
billType = "0013";
break;
case "ZLR2":
billType = "0014";
break;
default:
if(code.contains("ZLR")){
billType = "0002";
}
if (code.contains("ZLF")){
billType = "1001";
}
}
return billType;
}
@Override
public JSONObject getReturnDeliveryInfo(JSONObject jo) {