diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToB.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToB.java index 8bc7d3a5..3b77ad89 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToB.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToB.java @@ -1328,8 +1328,7 @@ public class PassiveWarehouseReceiptToB extends PluginBaseEntity { } HeaderDto header1 = saleOrderMessageDto.getData().get(0).getHeader(); String memberId = header1.getMemberId(); - //TODO 测试 - memberId = "GYS00002"; +// memberId = "GYS00002"; Assert.notNull(memberId, "TOB销售订单(OFS)表头会员id不能为空,否则无法匹配U8C客商档案!"); Assert.state(!"".equals(memberId.trim()), "TOB销售订单(OFS)表头会员id不能为空,否则无法匹配U8C客商档案!"); diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToC.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToC.java index e48a81e0..9ba54ac2 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToC.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToC.java @@ -400,10 +400,10 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { private void getSetStock(List returnGoodHeaderDetailsDataDtoArrayList) throws Exception { LOCK1.lock(); try { + //保存到mysql底表 + batchInsert(returnGoodHeaderDetailsDataDtoArrayList); //过滤成功的数据 List data = filterDataStock(returnGoodHeaderDetailsDataDtoArrayList); - //保存到mysql底表 - batchInsert(data); //执行推送主逻辑 implementStock(data); } catch (Exception e) { @@ -730,7 +730,7 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { Assert.notNull(passiveStorageResponseList, "passiveStorageResponseList不能为空"); logger.info("TOC无源件退货入库:{} 行需要进行数据转换", passiveStorageResponseList.size()); - if (passiveStorageResponseList != null && passiveStorageResponseList.size() > 0) { + if (passiveStorageResponseList.size() > 0) { try { // 查询基本档案 String sceneType = "stock"; @@ -861,7 +861,11 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { // saleorderRequestChildrenDto.setNoriginalcurnetprice(noriginalcurprice.stripTrailingZeros().toPlainString());//无税净价 // saleorderRequestChildrenDto.setNoriginalcurprice(noriginalcurprice.stripTrailingZeros().toPlainString());//无税单价 // saleorderRequestChildrenDto.setNoriginalcursummny("-" + noriginalcursummny.stripTrailingZeros().toPlainString());//价税合计 - saleorderRequestChildrenDto.setNoriginalcursummny("-" + passiveStorageSonDetailsDto.getGroupTotalPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString());//价税合计 新逻辑 + if (isblargessflag) { + saleorderRequestChildrenDto.setNoriginalcursummny("0");//价税合计 新逻辑 + } else { + saleorderRequestChildrenDto.setNoriginalcursummny("-" + passiveStorageSonDetailsDto.getGroupTotalPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString());//价税合计 新逻辑 + } // saleorderRequestChildrenDto.setNoriginalcurtaxmny("-" + noriginalcurtaxmny.stripTrailingZeros().toPlainString());//税额 // saleorderRequestChildrenDto.setNoriginalcurtaxnetprice(noriginalcurtaxprice.stripTrailingZeros().toPlainString());//含税净价 // saleorderRequestChildrenDto.setNoriginalcurtaxprice(noriginalcurtaxprice.stripTrailingZeros().toPlainString());//含税单价 @@ -2153,9 +2157,6 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { BdInvbasdocEntity bdInvbasdocEntity = passiveStorageSonDetailsDto.getBdInvbasdocEntity();//存货基本档案 BdInvmandocEntity bdInvmandocEntity = passiveStorageSonDetailsDto.getBdInvmandocEntity();//存货管理档案 - //根据OFS售后入库单明细行,查找匹配OFS售后订单明细行 - RerturnGoodsOrderSearchDetails ofsOrderDetail = findOfsOrderDetail(details, passiveStorageSonDetailsDto); - String totalAmount = null; StringBuffer calculationFormulaStr = new StringBuffer(); if (isCheckShopChoose) { @@ -2191,10 +2192,20 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { // } //把无源入库单明细行关联对应的售后订单明细行的优惠金额,带入到无源入库单明细行 - passiveStorageSonDetailsDto.setPlatformDiscounts(ofsOrderDetail.getPlatformDiscounts()); - passiveStorageSonDetailsDto.setMerchantDiscounts(ofsOrderDetail.getMerchantDiscounts()); - passiveStorageSonDetailsDto.setExpertDiscounts(ofsOrderDetail.getExpertDiscounts()); - passiveStorageSonDetailsDto.setPayDiscounts(ofsOrderDetail.getPayDiscounts()); + //根据OFS售后入库单明细行,查找匹配OFS售后订单明细行 + //2025年4月18日11:03:56 如果无源入库明细行无法匹配售后订单明细行,则入库时的优惠金额全部为0 + RerturnGoodsOrderSearchDetails ofsOrderDetail = findOfsOrderDetail(details, passiveStorageSonDetailsDto); + if (ofsOrderDetail != null) { + passiveStorageSonDetailsDto.setPlatformDiscounts(ofsOrderDetail.getPlatformDiscounts()); + passiveStorageSonDetailsDto.setMerchantDiscounts(ofsOrderDetail.getMerchantDiscounts()); + passiveStorageSonDetailsDto.setExpertDiscounts(ofsOrderDetail.getExpertDiscounts()); + passiveStorageSonDetailsDto.setPayDiscounts(ofsOrderDetail.getPayDiscounts()); + } else { + passiveStorageSonDetailsDto.setPlatformDiscounts("0"); + passiveStorageSonDetailsDto.setMerchantDiscounts("0"); + passiveStorageSonDetailsDto.setExpertDiscounts("0"); + passiveStorageSonDetailsDto.setPayDiscounts("0"); + } } PassiveStorageSonDetailsDto passiveStorageSonDetailsDto = sonDetailsDtoList.get(0); @@ -3514,7 +3525,7 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { } } // Assert.state(false, "根据OFS售后入库单明细行,无法查找OFS售后订单明细行 来源明细行主键:{} 来源单据主键:{}", goodsRertunSonDetailsDto.getRefOrderDetailId(), goodsRertunSonDetailsDto.getRefOrderId()); - Assert.state(false, "无源入库单明细行存货 sku:{} 名称:{} 无法匹配售后订单明细行 sku", goodsRertunSonDetailsDto.getSkuCode(), goodsRertunSonDetailsDto.getSkuName()); +// Assert.state(false, "无源入库单明细行存货 sku:{} 名称:{} 无法匹配售后订单明细行 sku", goodsRertunSonDetailsDto.getSkuCode(), goodsRertunSonDetailsDto.getSkuName()); return null; } @@ -3650,32 +3661,37 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { } } } - Assert.notNull(targetDetails, "根据OFS无源入库单单细行(sku匹配)无法匹配售后订单明细行", passiveStorageSonDetailsDto.getSkuCode()); +// Assert.notNull(targetDetails, "根据OFS无源入库单单细行(sku匹配)无法匹配售后订单明细行", passiveStorageSonDetailsDto.getSkuCode()); - //售后订单明细行-退货金额 - String totalAmount = targetDetails.getTotalAmount();//实退金额 - Assert.notNull(totalAmount, "售后订单:{} 存货明细行:{} 退货金额不能为空!", header.getCode(), targetDetails.getSkuCode()); - Assert.state(!"".equals(totalAmount), "售后订单:{} 存货明细行:{} 退货金额不能为空!", header.getCode(), targetDetails.getSkuCode()); - //售后订单明细行-请求数量 - //实退数量存在可能为0的情况,如果用退货金额/实退数量可能会抛出异常 - String requestQty = targetDetails.getRequestQty();//请求数量 - Assert.notNull(requestQty, "售后订单:{} 存货明细行:{} 请求数量不能为空!", header.getCode(), targetDetails.getSkuCode()); - Assert.state(!"".equals(requestQty), "售后订单:{} 存货明细行:{} 请求数量不能为空!", header.getCode(), targetDetails.getSkuCode()); + if (targetDetails != null) { + //售后订单明细行-退货金额 + String totalAmount = targetDetails.getTotalAmount();//实退金额 + Assert.notNull(totalAmount, "售后订单:{} 存货明细行:{} 退货金额不能为空!", header.getCode(), targetDetails.getSkuCode()); + Assert.state(!"".equals(totalAmount), "售后订单:{} 存货明细行:{} 退货金额不能为空!", header.getCode(), targetDetails.getSkuCode()); + //售后订单明细行-请求数量 + //实退数量存在可能为0的情况,如果用退货金额/实退数量可能会抛出异常 + String requestQty = targetDetails.getRequestQty();//请求数量 + Assert.notNull(requestQty, "售后订单:{} 存货明细行:{} 请求数量不能为空!", header.getCode(), targetDetails.getSkuCode()); + Assert.state(!"".equals(requestQty), "售后订单:{} 存货明细行:{} 请求数量不能为空!", header.getCode(), targetDetails.getSkuCode()); - String quantity = passiveStorageSonDetailsDto.getQuantity(); - Assert.notNull(quantity, "无源入库单:{} sku:{} 实退数量不能为空", passiveStorageSonDetailsDto.getQuantity(), passiveStorageSonDetailsDto.getSkuName()); - Assert.state(!"".equals(quantity), "无源入库单:{} sku:{} 实退数量不能为空", passiveStorageSonDetailsDto.getQuantity(), passiveStorageSonDetailsDto.getSkuName()); - if ("0".equals(new BigDecimal(quantity).stripTrailingZeros().toPlainString())) { - Assert.state(false, "无源入库单:{} sku:{} 实退数量不能为0!", passiveStorageSonDetailsDto.getQuantity(), passiveStorageSonDetailsDto.getSkuName()); + String quantity = passiveStorageSonDetailsDto.getQuantity(); + Assert.notNull(quantity, "无源入库单:{} sku:{} 实退数量不能为空", passiveStorageSonDetailsDto.getQuantity(), passiveStorageSonDetailsDto.getSkuName()); + Assert.state(!"".equals(quantity), "无源入库单:{} sku:{} 实退数量不能为空", passiveStorageSonDetailsDto.getQuantity(), passiveStorageSonDetailsDto.getSkuName()); + if ("0".equals(new BigDecimal(quantity).stripTrailingZeros().toPlainString())) { + Assert.state(false, "无源入库单:{} sku:{} 实退数量不能为0!", passiveStorageSonDetailsDto.getQuantity(), passiveStorageSonDetailsDto.getSkuName()); + } + + //O含税单价=通过退货金额/请求数量 + BigDecimal unitPriceIncludingTax = new BigDecimal(totalAmount).divide(new BigDecimal(requestQty), 20, BigDecimal.ROUND_HALF_UP); + //实退金额=O含税单价*(O售后入库单)实退数量 + BigDecimal actualRefundAmount = unitPriceIncludingTax.multiply(new BigDecimal(quantity)).setScale(4, BigDecimal.ROUND_HALF_UP); + String format = StrUtil.format("{}/{}*{}", totalAmount, requestQty, quantity); + calculationFormulaStr.append(format); + return actualRefundAmount.stripTrailingZeros().toPlainString(); + } else { + //2025年4月18日11:06:04 如果无源入库单明细行无法匹配售后订单明细行,则金额为0即可 + return "0"; } - - //O含税单价=通过退货金额/请求数量 - BigDecimal unitPriceIncludingTax = new BigDecimal(totalAmount).divide(new BigDecimal(requestQty), 20, BigDecimal.ROUND_HALF_UP); - //实退金额=O含税单价*(O售后入库单)实退数量 - BigDecimal actualRefundAmount = unitPriceIncludingTax.multiply(new BigDecimal(quantity)).setScale(4, BigDecimal.ROUND_HALF_UP); - String format = StrUtil.format("{}/{}*{}", totalAmount, requestQty, quantity); - calculationFormulaStr.append(format); - return actualRefundAmount.stripTrailingZeros().toPlainString(); } /** diff --git a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToCTest.java b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToCTest.java index 5f66effd..da9565ca 100644 --- a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToCTest.java +++ b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToCTest.java @@ -30,9 +30,9 @@ public class PassiveWarehouseReceiptToCTest { //测试O无源件入库 // passiveWarehouseReceiptToC.startImplementStockByTime("2025-03-11 22:27:02", "2025-03-11 22:27:02"); //测试O无源生成红字应收 -// passiveWarehouseReceiptToC.startImplementByTradeTime("2025-03-11 22:27:02", "2025-03-11 22:27:02"); + passiveWarehouseReceiptToC.startImplementStockByTime("2025-04-07 13:10:01", "2025-04-07 13:10:01"); - passiveWarehouseReceiptToC.startImplementByCode("RH20250226000177", "tran"); +// passiveWarehouseReceiptToC.startImplementByCode("RH20250403000841", "stock"); } catch (Exception e) { e.printStackTrace(); }