修改已出账单,状态没落库
This commit is contained in:
+77
-18
@@ -1305,9 +1305,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
|||||||
bill.setDestPostcode(request.getDestPostcode());
|
bill.setDestPostcode(request.getDestPostcode());
|
||||||
bill.setWarehouseCode(request.getWarehouseCode());
|
bill.setWarehouseCode(request.getWarehouseCode());
|
||||||
bill.setOrderTime(request.getOrderTime());
|
bill.setOrderTime(request.getOrderTime());
|
||||||
bill.setOrderStatus(request.getOrderStatus());
|
applyUpstreamOrderStatus(bill, request);
|
||||||
bill.setBlPickup(request.getBlPickup());
|
|
||||||
bill.setPickupDate(request.getPickupDate());
|
|
||||||
bill.setOrderRemark(request.getOrderRemark());
|
bill.setOrderRemark(request.getOrderRemark());
|
||||||
bill.setProductCode(result.getProductCode());
|
bill.setProductCode(result.getProductCode());
|
||||||
bill.setProductName(result.getProductName());
|
bill.setProductName(result.getProductName());
|
||||||
@@ -1695,15 +1693,20 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
|||||||
assertOrderBillEditable(orderBillMapper.selectPrcOrderBillByOrderNo(orderNo.trim()));
|
assertOrderBillEditable(orderBillMapper.selectPrcOrderBillByOrderNo(orderNo.trim()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertOrderBillEditable(PrcOrderBill existed)
|
private boolean isAlreadyInArBill(PrcOrderBill existed)
|
||||||
{
|
{
|
||||||
if (existed == null || StringUtils.isEmpty(existed.getBillId()))
|
if (existed == null || StringUtils.isEmpty(existed.getBillId()))
|
||||||
{
|
{
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
int billedFreightCount = incomeBillFeeMapper.countByBillIdAndArBillStatusAndFeeType(
|
int billedFreightCount = incomeBillFeeMapper.countByBillIdAndArBillStatusAndFeeType(
|
||||||
existed.getBillId(), ArIncomeBillFeeStatus.BILLED.getCode(), "BASIC_FREIGHT");
|
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()));
|
throw new ServiceException(MessageUtils.message("price.bill.alreadyInArBill", existed.getOrderNo()));
|
||||||
}
|
}
|
||||||
@@ -2424,7 +2427,12 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
|||||||
orderNo = orderNo.trim();
|
orderNo = orderNo.trim();
|
||||||
request.setOrderNo(orderNo);
|
request.setOrderNo(orderNo);
|
||||||
PrcOrderBill existed = orderBillMapper.selectPrcOrderBillByOrderNo(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());
|
BigDecimal previousIncome = existed == null ? BigDecimal.ZERO : nz(existed.getIncomeTotal());
|
||||||
PrcOrderBill bill = existed == null ? new PrcOrderBill() : existed;
|
PrcOrderBill bill = existed == null ? new PrcOrderBill() : existed;
|
||||||
if (existed == null)
|
if (existed == null)
|
||||||
@@ -2464,9 +2472,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
|||||||
bill.setDestPostcode(request.getDestPostcode());
|
bill.setDestPostcode(request.getDestPostcode());
|
||||||
bill.setWarehouseCode(request.getWarehouseCode());
|
bill.setWarehouseCode(request.getWarehouseCode());
|
||||||
bill.setOrderTime(request.getOrderTime());
|
bill.setOrderTime(request.getOrderTime());
|
||||||
bill.setOrderStatus(request.getOrderStatus());
|
applyUpstreamOrderStatus(bill, request);
|
||||||
bill.setBlPickup(request.getBlPickup());
|
|
||||||
bill.setPickupDate(request.getPickupDate());
|
|
||||||
bill.setOrderRemark(request.getOrderRemark());
|
bill.setOrderRemark(request.getOrderRemark());
|
||||||
bill.setProductCode(request.getProductCode());
|
bill.setProductCode(request.getProductCode());
|
||||||
bill.setProductName(request.getProductName());
|
bill.setProductName(request.getProductName());
|
||||||
@@ -2490,14 +2496,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
|||||||
bill.setSurchargeAmount(BigDecimal.ZERO);
|
bill.setSurchargeAmount(BigDecimal.ZERO);
|
||||||
bill.setIncomeTotal(BigDecimal.ZERO);
|
bill.setIncomeTotal(BigDecimal.ZERO);
|
||||||
bill.setPayTotal(BigDecimal.ZERO);
|
bill.setPayTotal(BigDecimal.ZERO);
|
||||||
bill.setBillingFailStatus(Integer.valueOf(billingFailStatus));
|
applyBillingFailText(bill, billingFailStatus, errorMessage);
|
||||||
String failText = errorMessage == null ? "" : errorMessage.trim();
|
|
||||||
if (failText.length() > 1000)
|
|
||||||
{
|
|
||||||
failText = failText.substring(0, 1000);
|
|
||||||
}
|
|
||||||
bill.setErrorMessage(failText);
|
|
||||||
bill.setMatchMessage(failText);
|
|
||||||
if (StringUtils.isEmpty(bill.getRefundStatus()))
|
if (StringUtils.isEmpty(bill.getRefundStatus()))
|
||||||
{
|
{
|
||||||
bill.setRefundStatus(BillRefundStatus.NONE.getCode());
|
bill.setRefundStatus(BillRefundStatus.NONE.getCode());
|
||||||
@@ -2523,4 +2522,64 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
|||||||
}
|
}
|
||||||
persistBillExt(bill, request.getUpstreamRow());
|
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