|
@@ -218,54 +218,26 @@ public class CalculateTax {
|
|
|
* @param
|
|
|
* @return
|
|
|
*/
|
|
|
- public static final BigDecimal calculateGoodsRate(GoodsEntity goodsEntity, BigDecimal actualPaymentAmount) {
|
|
|
- // 该商品消费税
|
|
|
- BigDecimal grandConsumerTax = BigDecimal.ZERO;
|
|
|
- // 该商品增值税
|
|
|
- BigDecimal grandValueAddTax = BigDecimal.ZERO;
|
|
|
-
|
|
|
-
|
|
|
- String hsCode = goodsEntity.getHsCode();// 海关商品编码
|
|
|
- String hsCodeName = goodsEntity.getHsCodeName();// 海关商品编码名称
|
|
|
-
|
|
|
+ public static final BigDecimal calculateGoodsRate(GoodsEntity goodsEntity) {
|
|
|
// 消费税税率
|
|
|
final BigDecimal impConsumTaxRate = goodsEntity.getImpConsumTaxRate();
|
|
|
// 增值税税率
|
|
|
final BigDecimal valueAddedTaxRate = goodsEntity.getValueAddedTaxRate();
|
|
|
|
|
|
- try {
|
|
|
- // 计算某类产品的消费税
|
|
|
- final BigDecimal subConsumerTax = calculateConsumerTax(actualPaymentAmount, impConsumTaxRate, hsCodeName, goodsEntity, actualPaymentAmount);
|
|
|
- // 计算某类产品的增值税
|
|
|
- final BigDecimal subValueAddTax = calculateValueAddTax(actualPaymentAmount, valueAddedTaxRate, subConsumerTax);
|
|
|
-
|
|
|
- // 计算总的消费税
|
|
|
- grandConsumerTax = grandConsumerTax.add(subConsumerTax);
|
|
|
- // 计算总的增值税
|
|
|
- grandValueAddTax = grandValueAddTax.add(subValueAddTax);
|
|
|
- } catch (final RuntimeException e) {
|
|
|
- if (logger.isErrorEnabled()) logger.error("计算税费出错!请检查产品的分类数据,以及产品类别的税率数据!", e);
|
|
|
- throw new IllegalStateException("计算税费出错!请检查产品的分类数据,以及产品类别的税率数据!", e);
|
|
|
- }
|
|
|
|
|
|
// 如果增值税为0,免税
|
|
|
- if (BigDecimal.ZERO.compareTo(grandValueAddTax)==0){
|
|
|
- return grandValueAddTax;
|
|
|
+ if (BigDecimal.ZERO.compareTo(valueAddedTaxRate)==0){
|
|
|
+ return valueAddedTaxRate;
|
|
|
}
|
|
|
// 如果有消费税 23.06%=(0.13+0.15)/(1-0.15)*0.7
|
|
|
- if (BigDecimal.ZERO.compareTo(grandConsumerTax)!=0){
|
|
|
+ if (BigDecimal.ZERO.compareTo(impConsumTaxRate)!=0){
|
|
|
return valueAddedTaxRate.add(impConsumTaxRate).
|
|
|
divide(new BigDecimal(100).subtract(impConsumTaxRate),10, BigDecimal.ROUND_HALF_UP)
|
|
|
.multiply(new BigDecimal("0.7")).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
}else {
|
|
|
// 如果没有消费税 9.1%=0.13*0.7
|
|
|
- valueAddedTaxRate.multiply(new BigDecimal("0.7")).divide(new BigDecimal("100"),4,BigDecimal.ROUND_HALF_UP);
|
|
|
+ return valueAddedTaxRate.multiply(new BigDecimal("0.7")).divide(new BigDecimal("100"),4,BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- // 按照公式,打7折
|
|
|
- final BigDecimal tax = grandConsumerTax.add(grandValueAddTax).multiply(new BigDecimal("0.7")).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- return tax.divide(actualPaymentAmount, 4, BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
|
|
|
|