From 666bac34d0481042cbe2c748377f38a51a53f85b Mon Sep 17 00:00:00 2001 From: mzr Date: Sun, 4 May 2025 10:46:37 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E6=88=90=E5=BC=80=E7=A5=A8=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E8=B0=83=E6=95=B4=E5=8F=8A=E6=B3=A8=E9=87=8A=E5=BC=80?= =?UTF-8?q?=E7=A5=A8=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operator/IAPISaleInvMaitainImpl.java | 56 ++++++++++++------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/so/src/public/nccloud/api/so/saleinvoice/operator/IAPISaleInvMaitainImpl.java b/so/src/public/nccloud/api/so/saleinvoice/operator/IAPISaleInvMaitainImpl.java index 470178d..1eb8408 100644 --- a/so/src/public/nccloud/api/so/saleinvoice/operator/IAPISaleInvMaitainImpl.java +++ b/so/src/public/nccloud/api/so/saleinvoice/operator/IAPISaleInvMaitainImpl.java @@ -40,6 +40,7 @@ import nccloud.pubitf.ssctp.sscbd.lientage.ISSClientageMatchService; import org.json.JSONString; import java.math.BigDecimal; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -212,15 +213,17 @@ public class IAPISaleInvMaitainImpl { * 生成开票申请的旧逻辑,走不通已废弃 1.根据销售发票号查询下游开票申请 2.根据原开票申请生成新红冲 * 新逻辑:根据税务云的发票号查询蓝字发票,根据蓝字和已生成的红字发票共同生成红字的开票申请 */ - IVApplicationAggVO returnSaveIVApplicationAggVO = saveIVApplication(bject, redVos); + /*IVApplicationAggVO returnSaveIVApplicationAggVO = saveIVApplication(bject, redVos); if (returnSaveIVApplicationAggVO != null) { Logger.error("inv-redApply = " + JSONArray.toJSONString(returnSaveIVApplicationAggVO)); - // 查询红冲发票信息返回给调用方 + // 把红冲发票信息返回给调用方 return ResultMessageUtil.toJSON(redVos, "接口调用成功"); } else { Exception e = new Exception("销售红冲发票保存审核成功,开票申请保存失败"); return ResultMessageUtil.exceptionToJSON(e); - } + }*/ + // 把红冲发票信息返回给调用方 + return ResultMessageUtil.toJSON(redVos, "接口调用成功"); } /** @@ -568,37 +571,50 @@ public class IAPISaleInvMaitainImpl { public IVApplicationAggVO saveIVApplication(JSONObject bject, SaleInvoiceVO[] redVos) throws Exception { SaleInvoiceHVO redHvo = redVos[0].getParentVO(); + SaleInvoiceBVO[] redBodyVos = redVos[0].getChildrenVO(); // 获取 红字发票传开票申请的数据 ApplicationRedInvoiceService applicationRedInvoiceService = new ApplicationRedInvoiceService(); List> jeMap = applicationRedInvoiceService.getData(redVos); IVApplicationAggVO applyVo = null; - + // BIP合同平台传的蓝字销售发票的主键 String invId = bject.getOrDefault("vdef40", "") + ""; // 查询蓝字发票号对应的税务云开出的发票号 String invCode = getSaleInvCode(invId); if (StringUtils.isBlank(invCode) || "null".equals(invCode)) { - ExceptionUtils.wrapBusinessException("税务云的发票号不能为空"); + ExceptionUtils.wrapBusinessException("税务云的发票号不能为空,请等待税务云单号回写后再手动生单"); } IVApplicationInvoiceService ivService = NCLocator.getInstance().lookup(IVApplicationInvoiceService.class); JSONObject jsonObject1 = new JSONObject(); // 构造开票申请的VO IVApplicationAggVO[] applicationAggVOS = ivService.getRedInvoice("", invCode, jsonObject1); - Logger.error("saveIVApplication-jsonObject1 = " + jsonObject1); - if (applicationAggVOS != null) { - String src_billid = redHvo.getCsaleinvoiceid(); - String src_pk_org = redHvo.getPk_org(); - String src_billno = redHvo.getVbillcode(); - // String src_billtypeid = ""; - String src_tradetypeid = redHvo.getCtrantypeid(); - applicationAggVOS[0].getParentVO().setSrc_jx_billid(src_billid); - applicationAggVOS[0].getParentVO().setSrc_jx_billno(src_billno); - applicationAggVOS[0].getParentVO().setSrc_jx_billtypeid("32"); - applicationAggVOS[0].getParentVO().setSrc_jx_sporg(src_pk_org); - // applicationAggVOS[0].getParentVO().setSrc_jx_spr(src_spr); - applicationAggVOS[0].getParentVO().setSrc_jx_tradetypeid(src_tradetypeid); + if (applicationAggVOS == null || applicationAggVOS.length == 0) { + ExceptionUtils.wrapBusinessException("构造开票申请的VO失败!"); } + Logger.error("saveIVApplication-getRedInvoice-jsonObject1 = " + jsonObject1); + // 开票申请的上游单据信息赋值 + String src_billid = redHvo.getCsaleinvoiceid(); + String src_pk_org = redHvo.getPk_org(); + String src_billno = redHvo.getVbillcode(); + // String src_billtypeid = ""; + String src_tradetypeid = redHvo.getCtrantypeid(); + applicationAggVOS[0].getParentVO().setSrc_jx_billid(src_billid); + applicationAggVOS[0].getParentVO().setSrc_jx_billno(src_billno); + applicationAggVOS[0].getParentVO().setSrc_jx_billtypeid("32"); + applicationAggVOS[0].getParentVO().setSrc_jx_sporg(src_pk_org); + // applicationAggVOS[0].getParentVO().setSrc_jx_spr(src_spr); + applicationAggVOS[0].getParentVO().setSrc_jx_tradetypeid(src_tradetypeid); + + Map ntaxmnyMap = new HashMap<>(); + for (SaleInvoiceBVO redBodyVo : redBodyVos) { + // vbdef6 商品名称 vbdef12 规格 vbdef13 型号 + String key = redBodyVo.getVbdef6() + redBodyVo.getVbdef12() + redBodyVo.getVbdef13(); + // ntaxmny 本币价税合计 + UFDouble ntaxmny = redBodyVo.getNtaxmny(); + ntaxmnyMap.put(key, ntaxmny); + } + Logger.error("saveIVApplication-ntaxmnyMap = " + ntaxmnyMap); JSONObject jsonObject = new JSONObject(); // ntotalorigmny 价税合计 UFDouble ntotalorigmny = redHvo.getNtotalorigmny() == null ? UFDouble.ZERO_DBL : redHvo.getNtotalorigmny(); @@ -620,7 +636,7 @@ public class IAPISaleInvMaitainImpl { if (ivApplicationVOs != null && ivApplicationVOs.length > 0) { applyVo = ivApplicationVOs[0]; } - Logger.error("saveIVApplication-msg = " + jsonObject); + Logger.error("saveIVApplication-makeRedInvoice-msg = " + jsonObject); return applyVo; } @@ -638,7 +654,7 @@ public class IAPISaleInvMaitainImpl { } /** - * 根据税务云单号查询发票的单号 + * 查询蓝票的税务云单号 * * @param invId * @return