Commit 9bd2415e by 陈斌

订单开票

parent b7bebd44
......@@ -11,12 +11,14 @@ import cn.freemud.enums.ResponseResult;
import cn.freemud.utils.ResponseUtil;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.enums.NewOrderStatus;
import org.apache.commons.collections4.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
public class OrderInvoiceAdapter {
......@@ -46,25 +48,28 @@ public class OrderInvoiceAdapter {
if(orders.size() > ORDER_INVOICE_NUM_LIMIT){
return ResponseUtil.error(ResponseResult.ORDER_INVOINVE_LIMIT_30);
}
Long totalActualPayAmount = orders.stream()
.filter(x->canOpenOrderInvoiceStatus.contains(x.getStatus()))
.filter(x -> x.getActualPayAmount() != null)
.map(e -> e.getActualPayAmount()).reduce(Long::sum).get();
// 【3】 实际支付金额为0,不能开票
// 【3】 过滤订单状态&&实付金额是否符合开票原则
List<OrderBeanV1> orderBeanV1List = orders.stream().filter(x -> canOpenOrderInvoiceStatus.contains(x.getStatusV2()))
.filter(x -> x.getActualPayAmount() != null).collect(Collectors.toList());
if(CollectionUtils.isEmpty(orderBeanV1List)){
return ResponseUtil.error(ResponseResult.ORDER_INVOICE_OPEN_ERR);
}
Long totalActualPayAmount = orderBeanV1List.stream().map(e -> e.getActualPayAmount()).reduce(Long::sum).get();
// 【4】 实际支付金额为0,不能开票
if(null == totalActualPayAmount || totalActualPayAmount == 0 ){
return ResponseUtil.error(ResponseResult.ACTUALPAYAMOUNT_IS_ZERO);
}
// 【4】 将前端传的实际支付金额和服务端查出订单【可开票状态】实际支付金额对比,如果不相等,不予开票
// 【5】 将前端传的实际支付金额和服务端查出订单【可开票状态】实际支付金额对比,如果不相等,不予开票
if(totalActualPayAmount != request.getTotalActualPayAmount()){
return ResponseUtil.error(ResponseResult.ACTUALPAYAMOUNT_IS_ERROR);
}
// 【5】 单张发票最大限制1000元,超过最大限额不能开票
// 【6】 单张发票最大限制1000元,超过最大限额不能开票
double actualPayAmount2yuan = new BigDecimal(totalActualPayAmount)
.divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP).doubleValue();
if(actualPayAmount2yuan > CommonsConstant.CONSTANTS_ONE_THOUSAND){
return ResponseUtil.error(ResponseResult.ACTUALPAYAMOUNT_OUT_OF_ONE_THOUSAND);
}
// 【6】 单张发票金额最小限制???元,低于最小限制不能开票
// 【7】 单张发票金额最小限制???元,低于最小限制不能开票
return ResponseUtil.success();
......
......@@ -185,6 +185,7 @@ public enum ResponseResult {
ORDER_INVOINVE_LIMIT_30("45078", "单张发票限制30个订单,超过限额不能开票",""),
ACTUALPAYAMOUNT_IS_ERROR("45079", "实际支付金额有误,不予开票",""),
ORDER_QUERY_ANY_ERR("45080", "部分订单查询失败",""),
ORDER_INVOICE_OPEN_ERR("45081", "订单状态不符合开票原则",""),
/**
* 售后单
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment