Merge branch 'release' of http://192.168.12.182/invoice/pt into 1007-认证人和组织权限需要匹配,只显示启用了该组织进项功能的人

release
路明慧 2 years ago
commit b0208b0ba5
  1. 2
      dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java
  2. 6
      dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/SAPInvoiceInfo.java
  3. 5
      dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/SNInvoice.java
  4. 3
      dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/SdnyTDxSaleRecordInvoice.java
  5. 11
      dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/ZData.java
  6. 2
      dxhy-erp/src/main/java/com/dxhy/erp/enums/TaxRateCodeEnum.java
  7. 50
      dxhy-erp/src/main/java/com/dxhy/erp/service/impl/ImageSubmitServiceImpl.java

@ -1500,6 +1500,8 @@ public class SDNYMainProcessController extends AbstractController {
info.setZDJZH(snInvoice.getCertificateNo());
info.setZGFMC(snInvoice.getPurchaserName());
info.setSORT(snInvoice.getSort());
// 文件名
info.setZWJMC(snInvoice.getFileName());
//机打代码
info.setZJDDM(snInvoice.getMachineCode());
if (snInvoice.getTotalAmount() != null) {

@ -545,4 +545,10 @@ public class SAPInvoiceInfo {
@JSONField(name = "ZTID")
private String ZTID = "";
/**
* 文件名称
*/
@JSONField(name = "ZWJMC")
private String ZWJMC = "";
}

@ -334,6 +334,11 @@ public class SNInvoice {
*/
private String isDeductible;
/**
* 文件名
*/
private String fileName;
/**
* 明细列表
*/

@ -858,4 +858,7 @@ public class SdnyTDxSaleRecordInvoice implements Serializable {
private String sort;
@TableField(exist = false)
private String fileId;
@TableField(exist = false)
private String fileName;
}

@ -340,6 +340,11 @@ public class ZData {
* 国税局商品编码 发票信息空则不传
*/
private String ZGSJBM="";
/**
* 文件名称
*/
private String ZWJMC = "";
@JSONField(name = "ZBHSJE_Y")
public String getZBHSJE_Y() {
return ZBHSJE_Y;
@ -729,6 +734,8 @@ public class ZData {
return RESERVE5;
}
@JSONField(name = "ZWJMC")
public String getZWJMC() {
return ZWJMC;
}
}

@ -2,6 +2,8 @@ package com.dxhy.erp.enums;
import com.dxhy.common.vo.Tax;
import java.math.BigDecimal;
/**
* 税率 税码关系表
*/

@ -121,16 +121,24 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
item.setImageId(params.getImageId());
item.setBzdh(params.getBillNum());
item.setBzr(params.getJbrUserName());
item.setCompCode(params.getCompCode());
});
List<SdnyTDxSaleRecordInvoice> salesInvoiceList = new ArrayList<>();
invoicesList.stream().forEach(invoice -> {
SdnyTDxSaleRecordInvoice saleRecordInvoice = sdnyTDxSaleRecordInvoiceDao.selectOne(new QueryWrapper<SdnyTDxSaleRecordInvoice>().eq("uuid", invoice.getUuid()));
List<SdnyTDxSaleRecordInvoice> saleRecordInvoices = sdnyTDxSaleRecordInvoiceDao.selectList(new QueryWrapper<SdnyTDxSaleRecordInvoice>().eq("uuid", invoice.getUuid()));
SdnyTDxSaleRecordInvoice saleRecordInvoice = null;
if (saleRecordInvoices!=null && saleRecordInvoices.size()>0) {
saleRecordInvoice = saleRecordInvoices.get(0);
}
List<SdnyTDxRecordInvoiceDetailSales> salesDetailList = new ArrayList<>();
detailiMap.get(invoice.getUuid()).stream().forEach(item -> {
log.info("进项表明细行:{}",JSONObject.toJSONString(item));
SdnyTDxRecordInvoiceDetailSales salesDetail = JsonUtils.getInstance().parseObject(JSONObject.toJSONString(item), SdnyTDxRecordInvoiceDetailSales.class);
log.info("销项表明细行:{}",JSONObject.toJSONString(salesDetail));
salesDetail.setId(null);
salesDetail.setTaxRate(item.getTaxRate());
salesDetailList.add(salesDetail);
});
if (saleRecordInvoice == null) {
@ -138,18 +146,22 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
saleRecordInvoice = JsonUtils.getInstance().parseObject(JSONObject.toJSONString(invoice), SdnyTDxSaleRecordInvoice.class);
saleRecordInvoice.setId(null);
sdnyTDxSaleRecordInvoiceDao.insert(saleRecordInvoice);
detailSalesDao.deleteByUUid(invoice.getUuid());
detailSalesDao.batchInsert(salesDetailList);
} else {
// 修改
saleRecordInvoice.setImageId(invoice.getImageId());
saleRecordInvoice.setBzdh(invoice.getBzdh());
saleRecordInvoice.setBzr(invoice.getBzr());
saleRecordInvoice.setCompCode(invoice.getCompCode());
sdnyTDxSaleRecordInvoiceDao.updateById(saleRecordInvoice);
}
detailSalesDao.deleteByUUid(invoice.getUuid());
detailSalesDao.batchInsert(salesDetailList);
saleRecordInvoice.setDetailList(salesDetailList);
saleRecordInvoice.setSort(paramsInvoiceMap.get(invoice.getUuid()).getSort());
saleRecordInvoice.setFileId(paramsInvoiceMap.get(invoice.getUuid()).getFileId());
saleRecordInvoice.setFileName(paramsInvoiceMap.get(invoice.getUuid()).getFileName());
salesInvoiceList.add(saleRecordInvoice);
});
@ -183,6 +195,7 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
* @return
*/
public R pushSap(List<SdnyTDxSaleRecordInvoice> invoiceList, SNRequestObject params) {
log.info("销项发票推送SAP准备数据:{},影像参数:{}", invoiceList, params);
String dt = DateUtil.now();
List<ZData> zDataList = new ArrayList<>();
if (invoiceList != null) {
@ -192,6 +205,7 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
if (StringUtils.isBlank(invoiceType)) {
throw new RuntimeException("推送SAP失败,推导发票类型错误,发票代码:"+item.getInvoiceCode()+",发票代码:"+item.getInvoiceNo());
}
ZData zdata = new ZData();
zdata.setZFPDM(StringUtils.isBlank(item.getInvoiceCode())?"":item.getInvoiceCode());
zdata.setZFPHM(item.getInvoiceNo());
@ -203,7 +217,7 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
zdata.setZZSE_DIF("0");
zdata.setZHSJE_DIF("0");
zdata.setZZBZ(item.getRemark());
zdata.setZFPZT("0");
zdata.setZFPZT("0".equals(item.getInvoiceStatus())?"0":"1");
zdata.setZKPRQ(DateUtils.dateToStr(item.getInvoiceDate(),DateUtils.YYYYMMDD));
zdata.setMANDT(params.getClientNum());
zdata.setZGFMC(item.getGfName());
@ -243,11 +257,15 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
zdata.setFPYXBH(item.getFileId());
zdata.setIMG_ID(params.getImageId());
zdata.setSORT(String.valueOf(item.getSort()));
// 增加文件名
zdata.setZWJMC(item.getFileName());
// 处理明细行
List<ZData> zDatas=new ArrayList<>();
for (SdnyTDxRecordInvoiceDetailSales detail : item.getDetailList()) {
detail.setTaxRateOfSap(getTaxRate(detail.getTaxRate()));
detail.setTaxRate(detail.getTaxRateOfSap().multiply(new BigDecimal(100)).stripTrailingZeros().toPlainString());
detail.setTaxRate(detail.getTaxRateOfSap().multiply(new BigDecimal(100)).setScale(4,BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString());
log.info("明细行数据:{}",JSONObject.toJSONString(detail));
BigDecimal totalAmount = new BigDecimal(detail.getDetailAmount()).add(new BigDecimal(detail.getTaxAmount()));
zDatas.add(ZData.builder()
.ZBHSJE(detail.getDetailAmount())
@ -312,14 +330,14 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
* @param taxRate
* @return 去掉%的小数
*/
public BigDecimal getTaxRate(String taxRate) {
public static BigDecimal getTaxRate(String taxRate) {
if (StringUtils.isBlank(taxRate) || Constant.ZERO_TAXRATE_VALUE.contains(taxRate)) {
taxRate = "0";
} else {
taxRate = taxRate.replace("%", "");
// 判断是不是数字 不是数字的就给0
if (!isNumeric(taxRate)) {
taxRate = "0.00";
taxRate = "0";
} else {
// 不知道库里存的是13% 还是0.13 所以加一个判断
if (new BigDecimal(taxRate).compareTo(BigDecimal.ONE) >= 0) {
@ -334,17 +352,21 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
}
public static boolean isNumeric(String str){
for (int i = str.length();--i>=0;){
if (!Character.isDigit(str.charAt(i))){
return false;
}
try {
Double.parseDouble(str);
return true;
} catch (NumberFormatException e) {
return false;
}
return true;
}
public static void main(String[] args) {
BigDecimal a = new BigDecimal(13);
System.out.println(a.stripTrailingZeros().toPlainString());
BigDecimal a = new BigDecimal(0.13);
String tax = a.multiply(new BigDecimal(100)).setScale(4,BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString();
System.out.println(StringUtils.isNumeric("13.00"));
System.out.println(isNumeric("1e1"));
System.out.println(getTaxRate("13.00"));
System.out.println(TaxRateCodeEnum.getCode(tax));
}
}

Loading…
Cancel
Save