销售发票红冲接口调整
This commit is contained in:
parent
1135b199af
commit
6dc1f0e9b1
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding='gb2312'?>
|
||||
<module>
|
||||
<rest>
|
||||
<resource classname="nc.vo.so.m32.saleinvoice.operator.billSaveAction" exinfo="销售发票及其下游单据开票申请修改红冲逻辑"/>
|
||||
<resource classname="nccloud.api.so.saleinvoice.operator.BillSaveAction" exinfo="销售发票及其下游单据开票申请修改红冲逻辑"/>
|
||||
</rest>
|
||||
</module>
|
|
@ -1,4 +1,4 @@
|
|||
package nc.vo.so.m32.saleinvoice.operator;
|
||||
package nccloud.api.so.saleinvoice.operator;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import nc.bs.framework.common.NCLocator;
|
||||
|
@ -42,11 +42,11 @@ import java.util.List;
|
|||
* @date 2025/03/14
|
||||
*/
|
||||
@Path("so/saleinvoice/operator")
|
||||
public class billSaveAction extends AbstractNCCRestResource {
|
||||
public class BillSaveAction extends AbstractNCCRestResource {
|
||||
|
||||
public static String fplxStr = "";// 开票申请发票类型
|
||||
|
||||
public billSaveAction() {
|
||||
public BillSaveAction() {
|
||||
|
||||
}
|
||||
|
||||
|
@ -84,13 +84,14 @@ public class billSaveAction extends AbstractNCCRestResource {
|
|||
if (bject == null) {
|
||||
return ResultMessageUtil.exceptionToJSON(new NullPointerException("billhead:null"));
|
||||
}
|
||||
String csaleinvoiceid = bject.getString("csaleinvoiceid"); // 销售发票id
|
||||
// 销售发票id
|
||||
String csaleinvoiceid = bject.getString("vdef40");
|
||||
// 根据销售发票主实体id查询销售发票
|
||||
String[] ids = {csaleinvoiceid};
|
||||
SaleInvoiceVO[] saleInvoiceVOs = NCLocator.getInstance().lookup(ISaleinvoiceQueryAPI.class)
|
||||
.queryVOByIDs(ids);
|
||||
if (saleInvoiceVOs.length <= 0) {
|
||||
return ResultMessageUtil.exceptionToJSON(new NullPointerException("未查询到Erp对应的销售发票"));
|
||||
if (saleInvoiceVOs == null || saleInvoiceVOs.length <= 0) {
|
||||
return ResultMessageUtil.exceptionToJSON(new NullPointerException("未在系统中查询到对应的销售发票"));
|
||||
}
|
||||
try {
|
||||
// 调用函数根据原销售发票组装新红冲发票
|
||||
|
@ -109,7 +110,7 @@ public class billSaveAction extends AbstractNCCRestResource {
|
|||
context.setBillVos(returnSaveSaleInvoiceVOs);
|
||||
context.setActionName("APPROVE");
|
||||
SaleInvoiceVO[] returnApproveSaleInvoiceVOs = (SaleInvoiceVO[]) flowService.exeScriptPFlow(context);
|
||||
if (returnApproveSaleInvoiceVOs == null && returnApproveSaleInvoiceVOs.length <= 0) {
|
||||
if (returnApproveSaleInvoiceVOs == null || returnApproveSaleInvoiceVOs.length <= 0) {
|
||||
throw new BusinessException("生成销售发票审核失败");
|
||||
}
|
||||
/**
|
||||
|
@ -144,8 +145,8 @@ public class billSaveAction extends AbstractNCCRestResource {
|
|||
Exception e = new Exception("接口调用失败");
|
||||
return ResultMessageUtil.exceptionToJSON(e);
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
Logger.error("writeBack Error: ", e);
|
||||
} catch (Exception e) {
|
||||
Logger.error("billSaveRp-exp: ", e);
|
||||
return ResultMessageUtil.exceptionToJSON(e);
|
||||
}
|
||||
}
|
||||
|
@ -153,16 +154,16 @@ public class billSaveAction extends AbstractNCCRestResource {
|
|||
/**
|
||||
* 构造红冲发票VO
|
||||
*
|
||||
* @param originalSaleInvoiceVO
|
||||
* @param originalVO
|
||||
* @param bject
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static SaleInvoiceVO makeNewRedRushSaleInvoice(SaleInvoiceVO originalSaleInvoiceVO, JSONObject bject) throws Exception {
|
||||
public static SaleInvoiceVO makeNewRedRushSaleInvoice(SaleInvoiceVO originalVO, JSONObject bject) throws Exception {
|
||||
try {
|
||||
SaleInvoiceVO saleInvoiceVO = new SaleInvoiceVO();
|
||||
SaleInvoiceHVO saleInvoiceHVO = originalSaleInvoiceVO.getParentVO(); // 主实体
|
||||
SaleInvoiceBVO[] saleInvoiceBVOs = originalSaleInvoiceVO.getChildrenVO(); // 子实体
|
||||
SaleInvoiceHVO saleInvoiceHVO = originalVO.getParentVO(); // 主实体
|
||||
SaleInvoiceBVO[] saleInvoiceBVOs = originalVO.getChildrenVO(); // 子实体
|
||||
SaleInvoiceHVO newSaleInvoiceHVO = new SaleInvoiceHVO(); // 新主实体
|
||||
|
||||
// 子实体属性赋值
|
||||
|
@ -172,14 +173,15 @@ public class billSaveAction extends AbstractNCCRestResource {
|
|||
UFDouble sumNorigmny = new UFDouble(); // 合计无税金额
|
||||
UFDouble sumNorigtaxmny = new UFDouble(); // 合计价税合计
|
||||
int i = 0;
|
||||
com.alibaba.fastjson.JSONArray paramsSaleInvoiceBVOsJSA = (com.alibaba.fastjson.JSONArray) bject.get("SaleInvoiceBVOs"); // 参数子实体数组
|
||||
List<JSONObject> paramsSaleInvoiceBVOs = paramsSaleInvoiceBVOsJSA.toJavaList(JSONObject.class);
|
||||
SaleInvoiceBVO[] newSaleInvoiceBVOs = new SaleInvoiceBVO[paramsSaleInvoiceBVOs.size()]; // 新子实体
|
||||
// 参数子实体数组
|
||||
com.alibaba.fastjson.JSONArray bvoJsonArr = (com.alibaba.fastjson.JSONArray) bject.get("csaleinvoicebid");
|
||||
List<JSONObject> bvoList = bvoJsonArr.toJavaList(JSONObject.class);
|
||||
SaleInvoiceBVO[] newSaleInvoiceBVOs = new SaleInvoiceBVO[bvoList.size()]; // 新子实体
|
||||
for (SaleInvoiceBVO saleInvoiceBVO : saleInvoiceBVOs) {
|
||||
String csaleinvoicebid = saleInvoiceBVO.getCsaleinvoicebid(); // 子表id
|
||||
// 筛选参数红冲的子表集合
|
||||
List<JSONObject> newParamsSaleInvoiceBVOs = paramsSaleInvoiceBVOs.stream().filter(item -> {
|
||||
String parCsaleinvoicebid = item.getString("csaleinvoicebid") + "";
|
||||
List<JSONObject> newParamsSaleInvoiceBVOs = bvoList.stream().filter(item -> {
|
||||
String parCsaleinvoicebid = item.getString("vbdef15") + ""; // 子表id
|
||||
return csaleinvoicebid.equals(parCsaleinvoicebid);
|
||||
}).toList();
|
||||
if (newParamsSaleInvoiceBVOs.size() <= 0) {
|
||||
|
@ -246,14 +248,14 @@ public class billSaveAction extends AbstractNCCRestResource {
|
|||
/**
|
||||
* 构造红冲开票申请VO
|
||||
*
|
||||
* @param ivApplicationHeadVO 原开票申请主实体
|
||||
* @param applyHeadVO 原开票申请主实体
|
||||
* @param ivApplicationBodyVOS 原开票申请子实体
|
||||
* @param bject bip参数
|
||||
* @param returnApproveSaleInvoiceVOs 新生成的红冲销售发票实体
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static IVApplicationAggVO makeNewRedRushIVApplicationAggVO(IVApplicationHeadVO ivApplicationHeadVO, IVApplicationBodyVO[] ivApplicationBodyVOS, JSONObject bject, SaleInvoiceVO[] returnApproveSaleInvoiceVOs) throws Exception {
|
||||
public static IVApplicationAggVO makeNewRedRushIVApplicationAggVO(IVApplicationHeadVO applyHeadVO, IVApplicationBodyVO[] ivApplicationBodyVOS, JSONObject bject, SaleInvoiceVO[] returnApproveSaleInvoiceVOs) throws Exception {
|
||||
try {
|
||||
IVApplicationAggVO ivApplicationAggVO = new IVApplicationAggVO();
|
||||
IVApplicationHeadVO newivApplicationHeadVO = new IVApplicationHeadVO(); // 新主实体
|
||||
|
@ -266,13 +268,13 @@ public class billSaveAction extends AbstractNCCRestResource {
|
|||
SaleInvoiceHVO rpSaleInvoiceHVO = rpSaleInvoiceVOs[0].getParentVO();
|
||||
|
||||
// 主实体属性赋值
|
||||
// BeanUtil.copyProperties(ivApplicationHeadVO,newivApplicationHeadVO, CopyOptions.create().setIgnoreNullValue(true));
|
||||
// BeanUtil.copyProperties(applyHeadVO,newivApplicationHeadVO, CopyOptions.create().setIgnoreNullValue(true));
|
||||
// 克隆取值原子表开票申请
|
||||
newivApplicationHeadVO = (IVApplicationHeadVO) CloneUtil.depthClone(ivApplicationHeadVO);
|
||||
newivApplicationHeadVO = (IVApplicationHeadVO) CloneUtil.depthClone(applyHeadVO);
|
||||
// 根据参数判断是否为部分红冲
|
||||
boolean isPartHCFlag = false;
|
||||
UFDouble paramNtotalorigmny = new UFDouble(bject.getString("ntotalorigmny")); // 参数价税合计(主表红冲金额)
|
||||
UFDouble ntotalorigmny = ivApplicationHeadVO.getJshj(); // 原开票申请主表价税合计
|
||||
UFDouble ntotalorigmny = applyHeadVO.getJshj(); // 原开票申请主表价税合计
|
||||
// 红冲金额与开票申请源价税合计比较如果和值大于零,则为部分红冲
|
||||
if (ntotalorigmny.add(paramNtotalorigmny).compareTo(UFDouble.ZERO_DBL) > 0) {
|
||||
isPartHCFlag = true;
|
||||
|
@ -284,14 +286,15 @@ public class billSaveAction extends AbstractNCCRestResource {
|
|||
UFDouble sumSe = new UFDouble(); // 合计税额
|
||||
// 子实体属性赋值
|
||||
int i = 0;
|
||||
com.alibaba.fastjson.JSONArray paramsSaleInvoiceBVOsJSA = (com.alibaba.fastjson.JSONArray) bject.get("SaleInvoiceBVOs"); // 参数子实体数组
|
||||
List<JSONObject> paramsSaleInvoiceBVOs = paramsSaleInvoiceBVOsJSA.toJavaList(JSONObject.class);
|
||||
IVApplicationBodyVO[] newivApplicationBodyVOS = new IVApplicationBodyVO[paramsSaleInvoiceBVOs.size()]; // 新子实体
|
||||
// 参数子实体数组
|
||||
com.alibaba.fastjson.JSONArray bvoJsonArr = (com.alibaba.fastjson.JSONArray) bject.get("csaleinvoicebid");
|
||||
List<JSONObject> bvoList = bvoJsonArr.toJavaList(JSONObject.class);
|
||||
IVApplicationBodyVO[] newivApplicationBodyVOS = new IVApplicationBodyVO[bvoList.size()]; // 新子实体
|
||||
for (IVApplicationBodyVO ivApplicationBodyVO : ivApplicationBodyVOS) {
|
||||
String src_pkdetail = ivApplicationBodyVO.getSrc_pkdetail(); // 来源单据行id
|
||||
// 筛选参数红冲的子表集合
|
||||
List<JSONObject> newParamsSaleInvoiceBVOs = paramsSaleInvoiceBVOs.stream().filter(item -> {
|
||||
String parCsaleinvoicebid = item.getString("csaleinvoicebid") + "";
|
||||
List<JSONObject> newParamsSaleInvoiceBVOs = bvoList.stream().filter(item -> {
|
||||
String parCsaleinvoicebid = item.getString("vbdef15") + ""; // 子表id
|
||||
return src_pkdetail.equals(parCsaleinvoicebid);
|
||||
}).toList();
|
||||
if (newParamsSaleInvoiceBVOs.size() <= 0) {
|
Loading…
Reference in New Issue