销项发票提交

release
王琦 2 years ago
parent f0583953f8
commit a5f5243697
  1. 24
      dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java
  2. 211
      dxhy-erp/src/main/java/com/dxhy/erp/service/impl/ImageSubmitServiceImpl.java

@ -24,6 +24,7 @@ import com.dxhy.erp.utils.Base64;
import com.dxhy.erp.utils.HmacSHA1Util;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@ -112,6 +113,9 @@ public class SDNYMainProcessController extends AbstractController {
@Resource
private RequestRecordService requestRecordService;
@Autowired
private ImageSubmitService imageSubmitService;
/**
* 查验发票
*/
@ -1207,15 +1211,21 @@ public class SDNYMainProcessController extends AbstractController {
@SysLog("影像系统提交销项发票")
public ResponseEntity<String> imageSubmitSalesInvoice(@RequestBody SNRequestObject params) {
log.info("影像系统提交销项发票 params:{}", JSONObject.toJSONString(params));
if (params.getInvoiceInfoList() == null || params.getInvoiceInfoList().size() == 0) {
// 撤回
} else {
// 提交
try {
R rs = null;
if (params.getInvoiceInfoList() == null || params.getInvoiceInfoList().size() == 0) {
// 撤回
rs = imageSubmitService.salesInvoiceRollback(params);
} else {
// 提交
rs = imageSubmitService.salesInvoiceSubmit(params);
}
return ResponseEntity.ok(JSONObject.toJSONString(rs));
}catch (Exception e) {
log.error("影像系统提交销项发票失败", e);
return ResponseEntity.ok(JSONObject.toJSONString(R.error(500, e.getMessage())));
}
return ResponseEntity.ok(JSONObject.toJSONString(R.success()));
}

@ -142,7 +142,18 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
@Override
public R salesInvoiceRollback(SNRequestObject params) {
return null;
List<String> uuidList = new ArrayList<>();
params.getInvoiceInfoList().stream().forEach(item -> {
String uuid = (StringUtils.isBlank(item.getInvoiceCode()) ? "" : item.getInvoiceCode()) + item.getInvoiceNumber();
uuidList.add(uuid);
});
UpdateWrapper<SdnyTDxRecordInvoiceDetailSales> updateWrapper = new UpdateWrapper<>();
updateWrapper.set(true, "image_id", null);
updateWrapper.set(true, "bzdh", null);
updateWrapper.set(true, "bzr", null);
updateWrapper.in("uuid", uuidList);
sdnyTDxRecordInvoiceDetailSalesService.update(updateWrapper);
return pushSap(null, params);
}
/**
@ -155,104 +166,108 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
public R pushSap(List<SdnyTDxSaleRecordInvoice> invoiceList, SNRequestObject params) {
String dt = DateUtil.now();
List<ZData> zDataList = new ArrayList<>();
invoiceList.stream().forEach(item -> {
String invoiceType = FplxEnum.getSapFplxdm(item.getInvoiceType());
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());
zdata.setZFPLX(invoiceType);
zdata.setZXFBM(item.getXfTaxNo());
zdata.setZGFBH(item.getGfTaxNo());
zdata.setZHSJE(item.getTaxAmount().toPlainString());
zdata.setZBHSJE_DIF("0");
zdata.setZZSE_DIF("0");
zdata.setZHSJE_DIF("0");
zdata.setZZBZ(item.getRemark());
zdata.setZFPZT("0");
zdata.setZKPRQ(DateUtils.dateToStr(item.getInvoiceDate(),DateUtils.YYYYMMDD));
zdata.setMANDT(params.getClientNum());
zdata.setZGFMC(item.getGfName());
zdata.setZGFSH(item.getGfTaxNo());
zdata.setZXFMC(item.getXfName());
zdata.setZXFSH(item.getXfTaxNo());
zdata.setZTID(StringUtils.isBlank(item.getInvoiceCode())?"":item.getInvoiceCode()+item.getInvoiceNo()+invoiceType);
zdata.setZJYM(item.getCheckCode());
zdata.setZGFZH(item.getGfBankAndNo());
zdata.setZGFDH(item.getGfAddressAndPhone());
zdata.setZXFDH(item.getXfAddressAndPhone());
zdata.setZXFZH(item.getXfBankAndNo());
zdata.setZPJLY("1");
zdata.setZYGC(params.getJbrUserNum());
zdata.setZYHM(params.getJbrUserName());
zdata.setZQM("opentext");
zdata.setZGSDM(params.getCompCode());
if(!StringUtils.isBlank(params.getBillNum())){
zdata.setZYWDJ(params.getBillNum());
zdata.setZYWZT("1");
zdata.setZBZDH(params.getBillNum());
}else{
zdata.setZYWZT("0");
}
zdata.setZPJZT("2");
zdata.setZCJSJ(dt);
zdata.setZCJR(params.getJbrUserNum());
zdata.setZGXSJ(dt);
zdata.setZGXR(params.getJbrUserNum());
zdata.setZCYZT("1");
zdata.setZCYJG("查验成功");
zdata.setZCYRQ(dt);
zdata.setZBHSJE_Y(item.getInvoiceAmount().toPlainString());
zdata.setZZSE_Y(item.getTaxAmount().toPlainString());
zdata.setZHSJE_Y(item.getTotalAmount().toPlainString());
zdata.setZBHSJE(item.getInvoiceAmount().toPlainString());
zdata.setFPYXBH(params.getImageId());
zdata.setIMG_ID(params.getImageId());
zdata.setSORT(String.valueOf(item.getSort()));
// 处理明细行
List<ZData> zDatas=new ArrayList<>();
for (SdnyTDxRecordInvoiceDetailSales detail : item.getDetailList()) {
detail.setTaxRateOfSap(getTaxRate(detail.getTaxRate()));
detail.setTaxRate(detail.getTaxRateOfSap().multiply(new BigDecimal(100)).toPlainString());
BigDecimal totalAmount = new BigDecimal(detail.getDetailAmount()).add(new BigDecimal(detail.getTaxAmount()));
zDatas.add(ZData.builder()
.ZBHSJE(detail.getDetailAmount())
.ZBHSJE_DIF("0")
.ZBHSJE_Y(detail.getDetailAmount())
.ZFPDM(item.getInvoiceCode())
.ZFPHM(item.getInvoiceNo())
.ZFPHH(detail.getDetailNo())
.ZGGXH(Optional.ofNullable(detail.getModel()).orElse("").replaceAll("\\.{3}|/|<|>", "")) //去掉包含...和/、<、>的特殊字符
.ZHSJE(totalAmount.toPlainString())
.ZHSJE_Y(totalAmount.toPlainString())
.ZZSE_Y(detail.getTaxAmount())
.ZSLDW(detail.getUnit())
.ZTAX(detail.getTaxRate())
.ZZDJ(detail.getUnitPrice())
.ZZDJFP(detail.getUnitPrice())
.ZZSL(detail.getNum())
.MANDT(params.getClientNum())
.INVOICEDATE(zdata.getZKPRQ())
.INVOICETYPE(invoiceType)
.ZHWMC(detail.getGoodsName())
.ZTID(zdata.getZTID())
.ZSM(TaxRateCodeEnum.getCode(detail.getTaxRate()))
.build());
}
String taxRate = "";
if (item.getDetailList().size() > 0) {
taxRate = item.getDetailList().stream().max(Comparator.comparing(SdnyTDxRecordInvoiceDetailSales::getTaxRateOfSap)).get().getTaxRate();
}
zdata.setIT_ITEM(zDatas);
if (invoiceList != null) {
// 影像提交
invoiceList.stream().forEach(item -> {
String invoiceType = FplxEnum.getSapFplxdm(item.getInvoiceType());
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());
zdata.setZFPLX(invoiceType);
zdata.setZXFBM(item.getXfTaxNo());
zdata.setZGFBH(item.getGfTaxNo());
zdata.setZHSJE(item.getTaxAmount().toPlainString());
zdata.setZBHSJE_DIF("0");
zdata.setZZSE_DIF("0");
zdata.setZHSJE_DIF("0");
zdata.setZZBZ(item.getRemark());
zdata.setZFPZT("0");
zdata.setZKPRQ(DateUtils.dateToStr(item.getInvoiceDate(),DateUtils.YYYYMMDD));
zdata.setMANDT(params.getClientNum());
zdata.setZGFMC(item.getGfName());
zdata.setZGFSH(item.getGfTaxNo());
zdata.setZXFMC(item.getXfName());
zdata.setZXFSH(item.getXfTaxNo());
zdata.setZTID(StringUtils.isBlank(item.getInvoiceCode())?"":item.getInvoiceCode()+item.getInvoiceNo()+invoiceType);
zdata.setZJYM(item.getCheckCode());
zdata.setZGFZH(item.getGfBankAndNo());
zdata.setZGFDH(item.getGfAddressAndPhone());
zdata.setZXFDH(item.getXfAddressAndPhone());
zdata.setZXFZH(item.getXfBankAndNo());
zdata.setZPJLY("1");
zdata.setZYGC(params.getJbrUserNum());
zdata.setZYHM(params.getJbrUserName());
zdata.setZQM("opentext");
zdata.setZGSDM(params.getCompCode());
if(!StringUtils.isBlank(params.getBillNum())){
zdata.setZYWDJ(params.getBillNum());
zdata.setZYWZT("1");
zdata.setZBZDH(params.getBillNum());
}else{
zdata.setZYWZT("0");
}
zdata.setZPJZT("2");
zdata.setZCJSJ(dt);
zdata.setZCJR(params.getJbrUserNum());
zdata.setZGXSJ(dt);
zdata.setZGXR(params.getJbrUserNum());
zdata.setZCYZT("1");
zdata.setZCYJG("查验成功");
zdata.setZCYRQ(dt);
zdata.setZBHSJE_Y(item.getInvoiceAmount().toPlainString());
zdata.setZZSE_Y(item.getTaxAmount().toPlainString());
zdata.setZHSJE_Y(item.getTotalAmount().toPlainString());
zdata.setZBHSJE(item.getInvoiceAmount().toPlainString());
zdata.setFPYXBH(params.getImageId());
zdata.setIMG_ID(params.getImageId());
zdata.setSORT(String.valueOf(item.getSort()));
// 处理明细行
List<ZData> zDatas=new ArrayList<>();
for (SdnyTDxRecordInvoiceDetailSales detail : item.getDetailList()) {
detail.setTaxRateOfSap(getTaxRate(detail.getTaxRate()));
detail.setTaxRate(detail.getTaxRateOfSap().multiply(new BigDecimal(100)).toPlainString());
BigDecimal totalAmount = new BigDecimal(detail.getDetailAmount()).add(new BigDecimal(detail.getTaxAmount()));
zDatas.add(ZData.builder()
.ZBHSJE(detail.getDetailAmount())
.ZBHSJE_DIF("0")
.ZBHSJE_Y(detail.getDetailAmount())
.ZFPDM(item.getInvoiceCode())
.ZFPHM(item.getInvoiceNo())
.ZFPHH(detail.getDetailNo())
.ZGGXH(Optional.ofNullable(detail.getModel()).orElse("").replaceAll("\\.{3}|/|<|>", "")) //去掉包含...和/、<、>的特殊字符
.ZHSJE(totalAmount.toPlainString())
.ZHSJE_Y(totalAmount.toPlainString())
.ZZSE_Y(detail.getTaxAmount())
.ZSLDW(detail.getUnit())
.ZTAX(detail.getTaxRate())
.ZZDJ(detail.getUnitPrice())
.ZZDJFP(detail.getUnitPrice())
.ZZSL(detail.getNum())
.MANDT(params.getClientNum())
.INVOICEDATE(zdata.getZKPRQ())
.INVOICETYPE(invoiceType)
.ZHWMC(detail.getGoodsName())
.ZTID(zdata.getZTID())
.ZSM(TaxRateCodeEnum.getCode(detail.getTaxRate()))
.build());
}
String taxRate = "";
if (item.getDetailList().size() > 0) {
taxRate = item.getDetailList().stream().max(Comparator.comparing(SdnyTDxRecordInvoiceDetailSales::getTaxRateOfSap)).get().getTaxRate();
}
zdata.setIT_ITEM(zDatas);
//税率
zdata.setZTAX(taxRate);
//税码
zdata.setZSM(TaxRateCodeEnum.getCode(taxRate));
zDataList.add(zdata);
});
}
//税率
zdata.setZTAX(taxRate);
//税码
zdata.setZSM(TaxRateCodeEnum.getCode(taxRate));
zDataList.add(zdata);
});
S4Request request = S4Request.builder()
.SYSID("FPXT")
.IFYWID("FI889")

Loading…
Cancel
Save