计费重覆盖
This commit is contained in:
+31
-11
@@ -207,7 +207,11 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
assertOrderBillEditable(request.getOrderNo());
|
||||
PrcOrderBill existed = orderBillMapper.selectPrcOrderBillByOrderNo(request.getOrderNo());
|
||||
BigDecimal systemWeight = request.getWeight();
|
||||
BigDecimal calcWeight = resolveCalcWeight(existed, systemWeight);
|
||||
// Upstream Oracle sync: always use TAB_ORDER weight (same overwrite as weight/charge_weight).
|
||||
// Local rebill / manual charge_weight edit: keep resolveCalcWeight preference.
|
||||
BigDecimal calcWeight = isUpstreamSyncRequest(request)
|
||||
? systemWeight
|
||||
: resolveCalcWeight(existed, systemWeight);
|
||||
// Three-side sum rule disabled: upstream already applies it.
|
||||
// Manual charge_weight wins; otherwise apply active biz rules (e.g. three-side).
|
||||
// if (!isManualChargeWeight(existed))
|
||||
@@ -1755,7 +1759,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
}
|
||||
bill.setBillKey(billKey);
|
||||
bill.setOrderNo(orderNo);
|
||||
// Upstream header overwrite (no validate); charge_weight kept via resolvePersistChargeWeight below.
|
||||
// Upstream header overwrite (no validate).
|
||||
applyUpstreamBillHeaderFields(bill, request);
|
||||
Long customerId = request.getCustomerId();
|
||||
if (customerId == null && result != null)
|
||||
@@ -1798,7 +1802,8 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
{
|
||||
bill.setCountryName(result.getCountryName());
|
||||
}
|
||||
// weight = system/original; charge_weight = effective (may be manual override)
|
||||
// weight = system/original; charge_weight follows weight on upstream sync,
|
||||
// otherwise may keep manual override via resolvePersistChargeWeight.
|
||||
bill.setWeight(weight);
|
||||
bill.setBizDate(bizDate);
|
||||
bill.setTmsId(request.getTmsId() == null ? null : Long.valueOf(request.getTmsId()));
|
||||
@@ -1816,7 +1821,14 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
bill.setWeightMax(result.getWeightMax());
|
||||
bill.setWeightLabel(result.getWeightLabel());
|
||||
bill.setEffectiveDate(result.getEffectiveDate());
|
||||
bill.setChargeWeight(resolvePersistChargeWeight(weight, result.getChargeWeight()));
|
||||
if (isUpstreamSyncRequest(request))
|
||||
{
|
||||
bill.setChargeWeight(weight);
|
||||
}
|
||||
else
|
||||
{
|
||||
bill.setChargeWeight(resolvePersistChargeWeight(weight, result.getChargeWeight()));
|
||||
}
|
||||
Integer billingFailStatus = result.getBillingFailStatus();
|
||||
if (billingFailStatus == null)
|
||||
{
|
||||
@@ -2797,6 +2809,12 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
payBillFeeMapper.selectByBillId(bill.getBillId()));
|
||||
}
|
||||
|
||||
/** Upstream Oracle row present => sync/billing path that overwrites weight & charge_weight together. */
|
||||
private static boolean isUpstreamSyncRequest(TmsPriceBillRequest request)
|
||||
{
|
||||
return request != null && request.getUpstreamRow() != null && !request.getUpstreamRow().isEmpty();
|
||||
}
|
||||
|
||||
/** charge_weight differs from weight => treated as manual override. */
|
||||
private static boolean isManualChargeWeight(PrcOrderBill bill)
|
||||
{
|
||||
@@ -3011,14 +3029,11 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
applyProductCodeMapping(bill, request);
|
||||
Long customerId = resolveCustomerIdByCode(request.getCustomerCode(), bill.getCustomerId());
|
||||
bill.setCustomerId(customerId == null ? Long.valueOf(0L) : customerId);
|
||||
// System weight overwrite; charge_weight keeps existing manual override when present.
|
||||
// Order-source sync: overwrite weight and charge_weight the same way from upstream.
|
||||
if (request.getWeight() != null)
|
||||
{
|
||||
bill.setWeight(request.getWeight());
|
||||
if (creating || bill.getChargeWeight() == null)
|
||||
{
|
||||
bill.setChargeWeight(request.getWeight());
|
||||
}
|
||||
bill.setChargeWeight(request.getWeight());
|
||||
}
|
||||
if (creating)
|
||||
{
|
||||
@@ -3131,8 +3146,12 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
{
|
||||
bill.setCustomerActiveStatus(BillCustomerActiveStatus.ACTIVE.getCode());
|
||||
}
|
||||
// Soft-fail snapshot: overwrite system weight; do not touch charge_weight (keep current logic).
|
||||
// Soft-fail snapshot: overwrite weight and charge_weight the same way from upstream.
|
||||
bill.setWeight(request.getWeight());
|
||||
if (request.getWeight() != null)
|
||||
{
|
||||
bill.setChargeWeight(request.getWeight());
|
||||
}
|
||||
Date bizDate = StringUtils.isEmpty(request.getBizDate()) ? new Date() : resolveBizDate(request.getBizDate());
|
||||
bill.setBizDate(bizDate);
|
||||
if (StringUtils.isEmpty(bill.getCurrency()))
|
||||
@@ -3191,7 +3210,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
}
|
||||
|
||||
/**
|
||||
* Locked by AR bill: overwrite upstream header + ext; keep amounts / fees / charge_weight.
|
||||
* Locked by AR bill: overwrite upstream header + ext + weight/charge_weight; keep amounts / fees.
|
||||
*/
|
||||
private void persistFailedSnapshotWhenLocked(PrcOrderBill bill, TmsPriceBillRequest request,
|
||||
int billingFailStatus, String errorMessage)
|
||||
@@ -3203,6 +3222,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
if (request.getWeight() != null)
|
||||
{
|
||||
bill.setWeight(request.getWeight());
|
||||
bill.setChargeWeight(request.getWeight());
|
||||
}
|
||||
}
|
||||
applyBillingFailText(bill, billingFailStatus, errorMessage);
|
||||
|
||||
Reference in New Issue
Block a user