提交 cd04c0a6 authored 作者: 艾庆国's avatar 艾庆国

承运与无车承运对接

上级 2d337446
......@@ -29,6 +29,7 @@ import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.service.TransportSyncService;
import com.clx.performance.service.broker.OrderChildBrokerService;
import com.clx.performance.service.settle.NetworkDriverRunningWaterRecordService;
import com.clx.performance.service.settle.SettlementCommonService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;
......@@ -74,6 +75,8 @@ public class OrderChildSyncTransportListener {
private final SettlementConfig settlementConfig;
private final OrderChildBrokerService orderChildBrokerService;
private final OrderChildDao orderChildDao;
private final SettlementCommonService settlementCommonService;
/**
* 承运同步网络货运运单
*/
......@@ -199,7 +202,7 @@ public class OrderChildSyncTransportListener {
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).get();
// 结算金额
settlementOwnerDetail.setSettlementFreight(settlementFreightCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
settlementOwnerDetail.setSettlementFreight(settlementCommonService.settlementFreightCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
if (SettlementOwnerEnum.InvoiceType.ORDINARY.getCode().equals(invoiceType)) {
if (settlementOwnerDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) == 0) {
......@@ -230,9 +233,9 @@ public class OrderChildSyncTransportListener {
settlementDriverDetail.setInvoiceType(invoiceType);
// 开票服务费
settlementOwnerDetail.setInvoiceServiceFee(invoiceServiceFeeCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
settlementOwnerDetail.setInvoiceServiceFee(settlementCommonService.invoiceServiceFeeCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
// 开票金额
settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderChild.getSettlementWay(),
settlementOwnerDetail.setInvoiceFreight(settlementCommonService.invoiceFreightCalc(orderChild.getSettlementWay(),
orderGoods.getInvoiceServiceFeeRate(), settlementOwnerDetail));
//货主借款事件处理
......@@ -306,56 +309,4 @@ public class OrderChildSyncTransportListener {
}
}
/**
* 开票金额
*/
private BigDecimal invoiceFreightCalc(Integer settlementWay, BigDecimal invoiceServiceFeeRate, SettlementOwnerDetail settlementOwnerDetail) {
if (Objects.equals(settlementWay, SettlementWayEnum.WayType.LOAD.getCode())) { //订单结算方式为“装车净重”时,开票金额=实际净重*平台运费报价-货损金额。
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice())
.subtract(settlementOwnerDetail.getLossFreight());
}
else if (Objects.equals(settlementWay, SettlementWayEnum.WayType.UNLOAD_LOSS.getCode())) {
if (invoiceServiceFeeRate!=null){
//结算方式为“卸车净重(减货损)”,平台运费报价为“未税”时,开票金额=平台运费单价*实际净重-货损单价*货损吨数+开票服务费。
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice())
.subtract(settlementOwnerDetail.getLossPrice())
.add(settlementOwnerDetail.getInvoiceServiceFee());
}
else{
//结算方式为“卸车净重(减货损)”,平台运费报价为“含税”时 开票金额=平台运费单价*实际净重-货损单价*货损吨数
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice())
.subtract(settlementOwnerDetail.getLossFreight());
}
}
else { //订单结算方式为“卸车净重”时,开票金额=实际净重*平台运费报价。
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice());
}
}
/**
* 开票服务费金额
*/
private BigDecimal invoiceServiceFeeCalc(Integer settlementWay, SettlementOwnerDetail settlementOwnerDetail) {
return settlementOwnerDetail.getFreight().subtract(settlementOwnerDetail.getLossFreight())
.divide(BigDecimal.ONE.subtract(settlementOwnerDetail.getInvoiceServiceFeeRate()), 0, RoundingMode.HALF_UP)
.multiply(settlementOwnerDetail.getInvoiceServiceFeeRate()).setScale(0, RoundingMode.HALF_UP);
}
private BigDecimal settlementFreightCalc(Integer settlementWay, SettlementOwnerDetail settlementOwnerDetail) {
if (Objects.equals(settlementWay, SettlementWayEnum.WayType.LOAD.getCode())) { //订单结算方式为“装车净重”时,结算金额=实际净重*平台运费报价-预付运费-货损金额。
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice())
.subtract(settlementOwnerDetail.getPrepayFreight()).subtract(settlementOwnerDetail.getLossFreight());
}
else if (Objects.equals(settlementWay, SettlementWayEnum.WayType.UNLOAD_LOSS.getCode())) {
//结算方式为“卸车净重(减货损)“,结算金额=开票金额-预付运费金额-借款抵扣金额。
return settlementOwnerDetail.getInvoiceFreight()
.subtract(settlementOwnerDetail.getPrepayFreight())
.subtract(settlementOwnerDetail.getLoanFreight());
}else { //订单结算方式为“卸车净重”时,结算金额=实际净重*平台运费报价-预付运费
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice()).subtract(settlementOwnerDetail.getPrepayFreight());
}
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论