Browse Source

发票工具

master
xyiege 3 years ago
parent
commit
6bb7742033
  1. 90
      src/main/java/cn/chjyj/szwh/utils/TaxUtils.java

90
src/main/java/cn/chjyj/szwh/utils/TaxUtils.java

@ -0,0 +1,90 @@
package cn.chjyj.szwh.utils;
import cn.chjyj.szwh.bean.OrderGoodsDetail;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 发票信息工具
*/
public class TaxUtils {
/**
* 计算订单发税务 发票信息万元票
* @param orglist 商品详情list
* @return
*/
public static List TaxSpilt(List<OrderGoodsDetail> orglist){
List taxlist = new ArrayList();
//loop
for(OrderGoodsDetail odg:orglist){
//服务费
BigDecimal serviceCharge = odg.getServiceCharge();
//万元票,单张顶格金额
BigDecimal topFee = new BigDecimal("9999.00");
//服务费小于等于0
if(serviceCharge.compareTo(new BigDecimal("0"))!=1){
continue;
}
/**
* 服务费超过9999万元票需要多张
* 计算方法第一张发票金额为 9999第二张发票金额显示剩余若额度仍然超过 9999继续出现第三张发票
*/
// 付费超过 9999
if(serviceCharge.compareTo(topFee) ==1){
//统计需要的发票数量
int tnum = countTaxPapers(serviceCharge.longValue(),1);
for(int i=0;i<tnum;i++){
BigDecimal price = topFee;
BigDecimal leftAmount = serviceCharge.subtract(topFee);
if(leftAmount.compareTo(new BigDecimal("0"))==-1){ //小于0
price = leftAmount;
}
// 填充发票信息
Map txmap = fillTax(price);
taxlist.add(txmap);
}
}else{
// 填充发票信息
Map txmap = fillTax(serviceCharge);
taxlist.add(txmap);
}
}
return taxlist;
}
public static Map fillTax(BigDecimal price){
Map tmap = new HashMap();
tmap.put("totalAmountTax",price); //发票总金额
Map tdmap = new HashMap();
tdmap.put("amount",price); //金额
tdmap.put("invoiceNature","0");//0:正常 1:折扣 2:被折扣
tdmap.put("itemName","*现代服务*交易佣金");//商品名称
tdmap.put("itemTaxCode","3049900000000000000"); //商品税号
tdmap.put("taxIncluded", '1'); //1:含税0:不含税
tdmap.put("taxRate","0.06");//税率
tdmap.put("yhzcbs","0"); //优惠政策标识
//添加到细节节点
tmap.put("manualOrderDetails",tdmap);//发票细节
//返回发票对象map
return tdmap;
}
/**
* 计算发票数量 万元版每张金额9999
* @param amount
* @param num
* @return
*/
public static Integer countTaxPapers(long amount,int num){
long left = amount-9999l;//
if(left>0){
num = countTaxPapers(left,num);
return num+1;
}
return num;
}
}
Loading…
Cancel
Save