修改已出账单,状态没落库
This commit is contained in:
+77
-18
@@ -1305,9 +1305,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
bill.setDestPostcode(request.getDestPostcode());
|
||||
bill.setWarehouseCode(request.getWarehouseCode());
|
||||
bill.setOrderTime(request.getOrderTime());
|
||||
bill.setOrderStatus(request.getOrderStatus());
|
||||
bill.setBlPickup(request.getBlPickup());
|
||||
bill.setPickupDate(request.getPickupDate());
|
||||
applyUpstreamOrderStatus(bill, request);
|
||||
bill.setOrderRemark(request.getOrderRemark());
|
||||
bill.setProductCode(result.getProductCode());
|
||||
bill.setProductName(result.getProductName());
|
||||
@@ -1695,15 +1693,20 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
assertOrderBillEditable(orderBillMapper.selectPrcOrderBillByOrderNo(orderNo.trim()));
|
||||
}
|
||||
|
||||
private void assertOrderBillEditable(PrcOrderBill existed)
|
||||
private boolean isAlreadyInArBill(PrcOrderBill existed)
|
||||
{
|
||||
if (existed == null || StringUtils.isEmpty(existed.getBillId()))
|
||||
{
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
int billedFreightCount = incomeBillFeeMapper.countByBillIdAndArBillStatusAndFeeType(
|
||||
existed.getBillId(), ArIncomeBillFeeStatus.BILLED.getCode(), "BASIC_FREIGHT");
|
||||
if (billedFreightCount > 0)
|
||||
return billedFreightCount > 0;
|
||||
}
|
||||
|
||||
private void assertOrderBillEditable(PrcOrderBill existed)
|
||||
{
|
||||
if (isAlreadyInArBill(existed))
|
||||
{
|
||||
throw new ServiceException(MessageUtils.message("price.bill.alreadyInArBill", existed.getOrderNo()));
|
||||
}
|
||||
@@ -2424,7 +2427,12 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
orderNo = orderNo.trim();
|
||||
request.setOrderNo(orderNo);
|
||||
PrcOrderBill existed = orderBillMapper.selectPrcOrderBillByOrderNo(orderNo);
|
||||
assertOrderBillEditable(existed);
|
||||
// Already in AR: still record fail + ORDER_STATUS; do not touch amounts/fees.
|
||||
if (isAlreadyInArBill(existed))
|
||||
{
|
||||
persistFailedSnapshotWhenLocked(existed, request, billingFailStatus, errorMessage);
|
||||
return;
|
||||
}
|
||||
BigDecimal previousIncome = existed == null ? BigDecimal.ZERO : nz(existed.getIncomeTotal());
|
||||
PrcOrderBill bill = existed == null ? new PrcOrderBill() : existed;
|
||||
if (existed == null)
|
||||
@@ -2464,9 +2472,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
bill.setDestPostcode(request.getDestPostcode());
|
||||
bill.setWarehouseCode(request.getWarehouseCode());
|
||||
bill.setOrderTime(request.getOrderTime());
|
||||
bill.setOrderStatus(request.getOrderStatus());
|
||||
bill.setBlPickup(request.getBlPickup());
|
||||
bill.setPickupDate(request.getPickupDate());
|
||||
applyUpstreamOrderStatus(bill, request);
|
||||
bill.setOrderRemark(request.getOrderRemark());
|
||||
bill.setProductCode(request.getProductCode());
|
||||
bill.setProductName(request.getProductName());
|
||||
@@ -2490,14 +2496,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
bill.setSurchargeAmount(BigDecimal.ZERO);
|
||||
bill.setIncomeTotal(BigDecimal.ZERO);
|
||||
bill.setPayTotal(BigDecimal.ZERO);
|
||||
bill.setBillingFailStatus(Integer.valueOf(billingFailStatus));
|
||||
String failText = errorMessage == null ? "" : errorMessage.trim();
|
||||
if (failText.length() > 1000)
|
||||
{
|
||||
failText = failText.substring(0, 1000);
|
||||
}
|
||||
bill.setErrorMessage(failText);
|
||||
bill.setMatchMessage(failText);
|
||||
applyBillingFailText(bill, billingFailStatus, errorMessage);
|
||||
if (StringUtils.isEmpty(bill.getRefundStatus()))
|
||||
{
|
||||
bill.setRefundStatus(BillRefundStatus.NONE.getCode());
|
||||
@@ -2523,4 +2522,64 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
}
|
||||
persistBillExt(bill, request.getUpstreamRow());
|
||||
}
|
||||
|
||||
/**
|
||||
* Locked by AR bill: write fail status + upstream ORDER_STATUS only.
|
||||
* Amounts / income fees stay untouched.
|
||||
*/
|
||||
private void persistFailedSnapshotWhenLocked(PrcOrderBill bill, TmsPriceBillRequest request,
|
||||
int billingFailStatus, String errorMessage)
|
||||
{
|
||||
applyUpstreamOrderStatus(bill, request);
|
||||
if (request != null)
|
||||
{
|
||||
if (StringUtils.isNotEmpty(request.getTrackingNo()))
|
||||
{
|
||||
bill.setTrackingNo(request.getTrackingNo());
|
||||
}
|
||||
if (StringUtils.isNotEmpty(request.getTransferNo()))
|
||||
{
|
||||
bill.setTransferNo(request.getTransferNo());
|
||||
}
|
||||
}
|
||||
applyBillingFailText(bill, billingFailStatus, errorMessage);
|
||||
orderBillMapper.updatePrcOrderBill(bill);
|
||||
if (request != null)
|
||||
{
|
||||
persistBillExt(bill, request.getUpstreamRow());
|
||||
}
|
||||
}
|
||||
|
||||
/** Prefer request status fields; never clear existing order_status with null. */
|
||||
private static void applyUpstreamOrderStatus(PrcOrderBill bill, TmsPriceBillRequest request)
|
||||
{
|
||||
if (bill == null || request == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (request.getOrderStatus() != null)
|
||||
{
|
||||
bill.setOrderStatus(request.getOrderStatus());
|
||||
}
|
||||
if (request.getBlPickup() != null)
|
||||
{
|
||||
bill.setBlPickup(request.getBlPickup());
|
||||
}
|
||||
if (request.getPickupDate() != null)
|
||||
{
|
||||
bill.setPickupDate(request.getPickupDate());
|
||||
}
|
||||
}
|
||||
|
||||
private static void applyBillingFailText(PrcOrderBill bill, int billingFailStatus, String errorMessage)
|
||||
{
|
||||
bill.setBillingFailStatus(Integer.valueOf(billingFailStatus));
|
||||
String failText = errorMessage == null ? "" : errorMessage.trim();
|
||||
if (failText.length() > 1000)
|
||||
{
|
||||
failText = failText.substring(0, 1000);
|
||||
}
|
||||
bill.setErrorMessage(failText);
|
||||
bill.setMatchMessage(failText);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user