diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java b/dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java index 77a3d2cf..c0e1cab9 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java @@ -33,6 +33,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @@ -843,11 +844,11 @@ public class SDNYMainProcessController extends AbstractController { sapInvoiceDetail.setZSM(getZSM(tax.toString())); BigDecimal tax1 = tax.multiply(new BigDecimal("100")); sapInvoiceDetail.setZTAX(tax1.toString()); - if (tax1.toPlainString().indexOf(".")>=3) { + if (tax1.compareTo(new BigDecimal("100")) == 1) { sapInvoiceDetail.setZTAX(snInvoiceDetail.getTaxRate()); - }else if (tax1.toPlainString().length()-tax1.toPlainString().indexOf(".")>3){ - String substring = tax1.toPlainString().substring(0, tax1.toPlainString().indexOf(".") + 3); - sapInvoiceDetail.setZTAX(substring); + }else if (tax1.scale() > 2){ + BigDecimal substring = tax1.setScale(2, RoundingMode.FLOOR); + sapInvoiceDetail.setZTAX(substring.toPlainString()); } } @@ -910,7 +911,7 @@ public class SDNYMainProcessController extends AbstractController { if (taxRate != null && !taxRate.contains("%")) { BigDecimal bigDecimal = new BigDecimal(taxRate); BigDecimal multiply = bigDecimal.multiply(new BigDecimal("100")); - info.setZTAX(multiply.toString()); + info.setZTAX(multiply.toPlainString()); info.setZSM(getZSM(taxRate)); } if (taxRate != null && taxRate.contains("%")) { @@ -923,13 +924,12 @@ public class SDNYMainProcessController extends AbstractController { info.setZSM(getZSM(divide.toString())); } if (taxRate != null && taxRate.contains(".") && !taxRate.contains("%")) { - if (taxRate.length() > 4) { - taxRate = taxRate.substring(0, 4); - BigDecimal tax = new BigDecimal(taxRate); - info.setZSM(getZSM(tax.toString())); - BigDecimal tax1 = tax.multiply(new BigDecimal("100")); - info.setZTAX(tax1.toString()); - } + + BigDecimal tax = new BigDecimal(taxRate); + info.setZSM(getZSM(tax.toPlainString())); + BigDecimal tax1 = tax.multiply(new BigDecimal("100")); + info.setZTAX(tax1.setScale(2,RoundingMode.FLOOR).toPlainString()); + } if (taxRate != null && "0".equals(taxRate)) { info.setZTAX("0.00");