下单时创建订单付费项,出厂时修改付费项
parent
4dedb2a61c
commit
5a95ce7441
|
|
@ -128,9 +128,9 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
.setAssignmentTransTime(transCompanyId == null ? null : LocalDateTime.now());
|
||||
this.save(orderInfoEntity);
|
||||
|
||||
/*if (transCompanyId != null) {
|
||||
settleForTransCompany(this.getById(orderInfoEntity.getId()), 0);
|
||||
}*/
|
||||
OrderGoodsEntity entity = orderGoodsService.getById(orderGoodsId);
|
||||
// 添加付费项,计算费用,需要称重在更新
|
||||
settleForTransCompany(this.getById(orderInfoEntity.getId()), entity, 0);
|
||||
|
||||
Long orderId = orderInfoEntity.getId();
|
||||
OrderCategory orderCategory = addOrderInfoParam.getOrderCategory();
|
||||
|
|
@ -725,9 +725,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
Assert.notNull(entity, () -> Exceptions.clierr("产品不存在"));
|
||||
|
||||
if (MoneyWay.IN.getVal().equals(entity.getMoneyWay())) {
|
||||
// 当计费方式为入场计费时,并且是需要公司支付,我们需要再此次添加订单付费项,并计算好费用
|
||||
settleForTransCompany(orderInfo, entity, 0);
|
||||
|
||||
// 入场付费无称重,不需要更新付费项
|
||||
// 处理公司支付
|
||||
handleCompanyPay(orderInfo, Boolean.TRUE);
|
||||
}
|
||||
|
|
@ -1069,8 +1067,8 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
Assert.notNull(entity, () -> Exceptions.clierr("产品不存在"));
|
||||
// 出厂付费
|
||||
if (MoneyWay.OUT.getVal().equals(entity.getMoneyWay())) {
|
||||
// 计算费用
|
||||
settleForTransCompany(orderInfoEntity, entity, settleWeight);
|
||||
// 计算费用,出厂付费可能需要称重,需要更新付费项
|
||||
updateOrderItems(orderInfoEntity.getId(), settleWeight);
|
||||
|
||||
// 扣费
|
||||
handleCompanyPay(orderInfoEntity, Boolean.FALSE);
|
||||
|
|
@ -1087,6 +1085,46 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
}
|
||||
}
|
||||
|
||||
public void updateOrderItems(Long orderId, Integer settleWeight) {
|
||||
List<OrderExpenseItemsEntity> extraItems = orderExpenseItemsService.list(Wrappers.lambdaQuery(OrderExpenseItemsEntity.class)
|
||||
.eq(OrderExpenseItemsEntity::getOrderId, orderId)
|
||||
.eq(OrderExpenseItemsEntity::getDeleted, Boolean.FALSE));
|
||||
BigDecimal totalDiscountMoney = BigDecimal.ZERO;
|
||||
BigDecimal totalReviseMoney = BigDecimal.ZERO;
|
||||
BigDecimal totalSettleMoney = BigDecimal.ZERO;
|
||||
BigDecimal totalTotalMoney = BigDecimal.ZERO;
|
||||
for (OrderExpenseItemsEntity item : extraItems) {
|
||||
item.setQuantity(MoneyStrategy.Che.getVal().equals(item.getMoneyStrategy()) ? 1 : settleWeight);
|
||||
BigDecimal quantity = new BigDecimal(item.getQuantity() == null ? 0 : item.getQuantity());
|
||||
// 如果计费策略是按吨,数量需要除以1000
|
||||
if (MoneyStrategy.Dun.getVal().equals(item.getMoneyStrategy())) {
|
||||
quantity = quantity.divide(new BigDecimal("1000"), 6, BigDecimal.ROUND_HALF_UP);
|
||||
}
|
||||
|
||||
BigDecimal totalMoney = item.getUnitPrice().multiply(quantity);
|
||||
// settle_money = total_money + discount_money + revise_money(discount、revise 可为正负)
|
||||
BigDecimal discount = item.getDiscountMoney() == null ? BigDecimal.ZERO : item.getDiscountMoney();
|
||||
BigDecimal revise = item.getReviseMoney() == null ? BigDecimal.ZERO : item.getReviseMoney();
|
||||
BigDecimal settle = totalMoney.add(discount).add(revise);
|
||||
item.setTotalMoney(totalMoney).setSettleMoney(settle);
|
||||
totalDiscountMoney = totalDiscountMoney.add(discount);
|
||||
totalReviseMoney = totalReviseMoney.add(revise);
|
||||
totalSettleMoney = totalSettleMoney.add(settle);
|
||||
totalTotalMoney = totalTotalMoney.add(totalMoney);
|
||||
orderExpenseItemsService.updateById(item);
|
||||
}
|
||||
|
||||
// 更新订单表的优惠金额; 手动修正金额;结算金额;总金额;
|
||||
this.lambdaUpdate()
|
||||
.eq(OrderInfoEntity::getId, orderId)
|
||||
.set(OrderInfoEntity::getDiscountMoney, totalDiscountMoney)
|
||||
.set(OrderInfoEntity::getReviseMoney, totalReviseMoney)
|
||||
.set(OrderInfoEntity::getSettleMoney, totalSettleMoney)
|
||||
.set(OrderInfoEntity::getTotalMoney, totalTotalMoney)
|
||||
.set(OrderInfoEntity::getPaymentStatus, PaymentStatus.WeiZhiFu)
|
||||
.update();
|
||||
}
|
||||
|
||||
/**
|
||||
* 清运公司结算
|
||||
* 1. 将订单产品复制为一条付费项(ExpenseItemCategory=ChanPin)
|
||||
|
|
@ -1152,7 +1190,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
.setBizObj(cfg.getBizObj())
|
||||
.setCompanyIds(cfg.getCompanyIds())
|
||||
.setTaxRate(cfg.getTaxRate())
|
||||
.setQuantity("Che".equals(cfg.getMoneyStrategy()) ? 1 : settleWeight))
|
||||
.setQuantity(MoneyStrategy.Che.getVal().equals(cfg.getMoneyStrategy()) ? 1 : settleWeight))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 第三步:合并集合并计算金额,然后批量落库
|
||||
|
|
|
|||
Loading…
Reference in New Issue