bip销售发票红冲接口
This commit is contained in:
		
							parent
							
								
									bed6eaacd8
								
							
						
					
					
						commit
						35a57b3551
					
				|  | @ -31,7 +31,10 @@ import nccloud.api.baseapp.exchange.convert.OpenApiConvertDataResult; | ||||||
| import nccloud.api.rest.utils.ResultMessageUtil; | import nccloud.api.rest.utils.ResultMessageUtil; | ||||||
| 
 | 
 | ||||||
| import nccloud.framework.service.ServiceLocator; | import nccloud.framework.service.ServiceLocator; | ||||||
|  | import nccloud.itf.sscivm.ivsale.impl.IVApplicationServiceImpl; | ||||||
| import nccloud.itf.sscivm.ivsale.service.IVApplicationService; | import nccloud.itf.sscivm.ivsale.service.IVApplicationService; | ||||||
|  | import nccloud.pubitf.riart.pflow.CloudPFlowContext; | ||||||
|  | import nccloud.pubitf.riart.pflow.ICloudScriptPFlowService; | ||||||
| import nccloud.ws.rest.resource.AbstractNCCRestResource; | import nccloud.ws.rest.resource.AbstractNCCRestResource; | ||||||
| import org.json.JSONString; | import org.json.JSONString; | ||||||
| import uap.mw.trans.TransactionFactory; | import uap.mw.trans.TransactionFactory; | ||||||
|  | @ -97,14 +100,25 @@ public class billSaveAction extends AbstractNCCRestResource { | ||||||
|             return ResultMessageUtil.exceptionToJSON(new NullPointerException("未查询到Erp对应的销售发票")); |             return ResultMessageUtil.exceptionToJSON(new NullPointerException("未查询到Erp对应的销售发票")); | ||||||
|         } |         } | ||||||
|         try{ |         try{ | ||||||
|             //手动开启事务 |  | ||||||
|             TransactionFactory.getTMProxy().begin(3,0); |  | ||||||
|             //调用函数根据原销售发票组装新红冲发票 |             //调用函数根据原销售发票组装新红冲发票 | ||||||
|             SaleInvoiceVO saleInvoiceRedRushVO = makeNewRedRushSaleInvoice(saleInvoiceVOs[0],bject); |             SaleInvoiceVO saleInvoiceRedRushVO = makeNewRedRushSaleInvoice(saleInvoiceVOs[0],bject); | ||||||
|             //生成红冲发票 |             //生成红冲发票 | ||||||
|             SaleInvoiceVO[] returnSaleInvoiceVO = (SaleInvoiceVO[])PfServiceScmUtil.processBatch("WRITE", SOBillType.Invoice.getCode(), new SaleInvoiceVO[] { saleInvoiceRedRushVO }, null, null); |             ICloudScriptPFlowService flowService = NCLocator.getInstance().lookup(ICloudScriptPFlowService.class); | ||||||
|             if(returnSaleInvoiceVO !=null && returnSaleInvoiceVO.length > 0) { |             CloudPFlowContext context = new CloudPFlowContext(); | ||||||
|                 //生成红冲发票成功后,执行开票申请红冲逻辑 |             context.setBillType("32"); | ||||||
|  |             context.setBillVos( new SaleInvoiceVO[] { saleInvoiceRedRushVO }); | ||||||
|  |             context.setActionName("WRITE"); | ||||||
|  |             SaleInvoiceVO[] returnSaveSaleInvoiceVOs = (SaleInvoiceVO[])flowService.exeScriptPFlow(context); | ||||||
|  | //            SaleInvoiceVO[] returnSaveSaleInvoiceVO = (SaleInvoiceVO[])PfServiceScmUtil.processBatch("WRITE", SOBillType.Invoice.getCode(), new SaleInvoiceVO[] { saleInvoiceRedRushVO }, null, null); | ||||||
|  |             if(returnSaveSaleInvoiceVOs !=null && returnSaveSaleInvoiceVOs.length > 0) { | ||||||
|  |                 //生成红冲发票成功后,执行销售发票审批动作 | ||||||
|  |                 context.setBillType("32"); | ||||||
|  |                 context.setBillVos( returnSaveSaleInvoiceVOs); | ||||||
|  |                 context.setActionName("APPROVE"); | ||||||
|  |                 SaleInvoiceVO[] returnApproveSaleInvoiceVOs = (SaleInvoiceVO[])flowService.exeScriptPFlow(context); | ||||||
|  |                 if(returnApproveSaleInvoiceVOs ==null && returnApproveSaleInvoiceVOs.length <= 0) { | ||||||
|  |                     throw new BusinessException("生成销售发票审核失败"); | ||||||
|  |                 } | ||||||
|                 /** |                 /** | ||||||
|                  * 开票申请红冲逻辑: |                  * 开票申请红冲逻辑: | ||||||
|                  *  1.根据销售发票号查询下游开票申请 |                  *  1.根据销售发票号查询下游开票申请 | ||||||
|  | @ -118,14 +132,16 @@ public class billSaveAction extends AbstractNCCRestResource { | ||||||
|                 //开票申请单子表 |                 //开票申请单子表 | ||||||
|                 IVApplicationBodyVO[] iVApplicationBodyVOs=(IVApplicationBodyVO[]) dmo.queryByWhereClause(IVApplicationBodyVO.class, "pk_ivapplication='"+pk_ivapplication+"' and dr=0 "); |                 IVApplicationBodyVO[] iVApplicationBodyVOs=(IVApplicationBodyVO[]) dmo.queryByWhereClause(IVApplicationBodyVO.class, "pk_ivapplication='"+pk_ivapplication+"' and dr=0 "); | ||||||
|                 //调用函数封装开票申请红冲VO |                 //调用函数封装开票申请红冲VO | ||||||
|                 IVApplicationAggVO iVApplicationAggVO = makeNewRedRushIVApplicationAggVO(iVApplicationHeadVO[0],iVApplicationBodyVOs,bject); |                 IVApplicationAggVO iVApplicationAggVO = makeNewRedRushIVApplicationAggVO(iVApplicationHeadVO[0],iVApplicationBodyVOs,bject,returnApproveSaleInvoiceVOs); | ||||||
|                 //生成红冲的开票申请 |                 //生成红冲的开票申请 | ||||||
| //                IVApplicationService ivApplicationServiceservice = (IVApplicationService) ServiceLocator.find(IVApplicationService.class); | //                context.setBillType("SSCIVA"); | ||||||
| //                IVApplicationAggVO returnIVApplicationAggVO = ivApplicationServiceservice.save(iVApplicationAggVO); | //                context.setBillVos( new IVApplicationAggVO[] { iVApplicationAggVO }); | ||||||
|                 Object returnIVApplicationAggVO = PfServiceScmUtil.processBatch("SAVE", "SSCIVA", new IVApplicationAggVO[] { iVApplicationAggVO }, null, null); | //                context.setActionName("SAVE"); | ||||||
|                 if(returnIVApplicationAggVO != null ) { | //                IVApplicationAggVO[] returnSaveIVApplicationAggVO = (IVApplicationAggVO[] )flowService.exeScriptPFlow(context); | ||||||
|                     //正常结束 |                 IVApplicationServiceImpl serviceImpl = new IVApplicationServiceImpl(); | ||||||
|                     TransactionFactory.getTMProxy().end(null); |                 IVApplicationAggVO returnSaveIVApplicationAggVO = serviceImpl.save(iVApplicationAggVO); | ||||||
|  | //                Object returnIVApplicationAggVO = PfServiceScmUtil.processBatch("SAVE", "SSCIVA", new IVApplicationAggVO[] { iVApplicationAggVO }, null, null); | ||||||
|  |                 if(returnSaveIVApplicationAggVO != null ) { | ||||||
|                     return ResultMessageUtil.toJSON(null, "接口调用成功"); |                     return ResultMessageUtil.toJSON(null, "接口调用成功"); | ||||||
|                 }else{ |                 }else{ | ||||||
|                     Exception e = new Exception("接口调用失败"); |                     Exception e = new Exception("接口调用失败"); | ||||||
|  | @ -136,8 +152,6 @@ public class billSaveAction extends AbstractNCCRestResource { | ||||||
|                 return ResultMessageUtil.exceptionToJSON(e); |                 return ResultMessageUtil.exceptionToJSON(e); | ||||||
|             } |             } | ||||||
|         }catch (BusinessException e) { |         }catch (BusinessException e) { | ||||||
|             //异常回滚 |  | ||||||
|             TransactionFactory.getTMProxy().end(e); |  | ||||||
|             Logger.error("writeBack Error: ",e); |             Logger.error("writeBack Error: ",e); | ||||||
|             return ResultMessageUtil.exceptionToJSON(e); |             return ResultMessageUtil.exceptionToJSON(e); | ||||||
|         } |         } | ||||||
|  | @ -237,17 +251,25 @@ public class billSaveAction extends AbstractNCCRestResource { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 构造红冲开票申请VO |      * 构造红冲开票申请VO | ||||||
|      * @param ivApplicationHeadVO |      * @param ivApplicationHeadVO 原开票申请主实体 | ||||||
|      * @param ivApplicationBodyVOS |      * @param ivApplicationBodyVOS 原开票申请子实体 | ||||||
|      * @param bject |      * @param bject bip参数 | ||||||
|  |      * @param returnApproveSaleInvoiceVOs 新生成的红冲销售发票实体 | ||||||
|      * @return |      * @return | ||||||
|      * @throws Exception |      * @throws Exception | ||||||
|      */ |      */ | ||||||
|     public static IVApplicationAggVO makeNewRedRushIVApplicationAggVO(IVApplicationHeadVO ivApplicationHeadVO,IVApplicationBodyVO[] ivApplicationBodyVOS, JSONObject bject) throws Exception { |     public static IVApplicationAggVO makeNewRedRushIVApplicationAggVO(IVApplicationHeadVO ivApplicationHeadVO,IVApplicationBodyVO[] ivApplicationBodyVOS, JSONObject bject,SaleInvoiceVO[] returnApproveSaleInvoiceVOs) throws Exception { | ||||||
|         try { |         try { | ||||||
|             IVApplicationAggVO ivApplicationAggVO = new IVApplicationAggVO(); |             IVApplicationAggVO ivApplicationAggVO = new IVApplicationAggVO(); | ||||||
|             IVApplicationHeadVO newivApplicationHeadVO = new IVApplicationHeadVO(); //新主实体 |             IVApplicationHeadVO newivApplicationHeadVO = new IVApplicationHeadVO(); //新主实体 | ||||||
| 
 | 
 | ||||||
|  |             //取新生成红冲发票的主实体数据 | ||||||
|  |             String csaleinvoiceid = returnApproveSaleInvoiceVOs[0].getParentVO().getCsaleinvoiceid(); | ||||||
|  |             String[] ids = {csaleinvoiceid}; | ||||||
|  |             SaleInvoiceVO[] rpSaleInvoiceVOs = NCLocator.getInstance().lookup(ISaleinvoiceQueryAPI.class) | ||||||
|  |                     .queryVOByIDs(ids); | ||||||
|  |             SaleInvoiceHVO rpSaleInvoiceHVO = rpSaleInvoiceVOs[0].getParentVO(); | ||||||
|  | 
 | ||||||
|             //主实体属性赋值 |             //主实体属性赋值 | ||||||
| //            BeanUtil.copyProperties(ivApplicationHeadVO,newivApplicationHeadVO, CopyOptions.create().setIgnoreNullValue(true)); | //            BeanUtil.copyProperties(ivApplicationHeadVO,newivApplicationHeadVO, CopyOptions.create().setIgnoreNullValue(true)); | ||||||
|             //克隆取值原子表开票申请 |             //克隆取值原子表开票申请 | ||||||
|  | @ -264,6 +286,7 @@ public class billSaveAction extends AbstractNCCRestResource { | ||||||
|             UFDouble sumXmje = new UFDouble(); //合计金额 |             UFDouble sumXmje = new UFDouble(); //合计金额 | ||||||
|             UFDouble sumXmjshj = new UFDouble(); //合计价税合计 |             UFDouble sumXmjshj = new UFDouble(); //合计价税合计 | ||||||
|             UFDouble sumBchcje = new UFDouble(); //合计本次红冲金额 |             UFDouble sumBchcje = new UFDouble(); //合计本次红冲金额 | ||||||
|  |             UFDouble sumSe = new UFDouble(); //合计税额 | ||||||
|             //子实体属性赋值 |             //子实体属性赋值 | ||||||
|             int i = 0; |             int i = 0; | ||||||
|             com.alibaba.fastjson.JSONArray paramsSaleInvoiceBVOsJSA = (com.alibaba.fastjson.JSONArray)bject.get("SaleInvoiceBVOs"); //参数子实体数组 |             com.alibaba.fastjson.JSONArray paramsSaleInvoiceBVOsJSA = (com.alibaba.fastjson.JSONArray)bject.get("SaleInvoiceBVOs"); //参数子实体数组 | ||||||
|  | @ -287,27 +310,33 @@ public class billSaveAction extends AbstractNCCRestResource { | ||||||
|                 //赋值之后修改子实体红冲时字段 |                 //赋值之后修改子实体红冲时字段 | ||||||
|                 newivApplicationBodyVO.setPk_ivappdetail(null); //开票申请子实体id |                 newivApplicationBodyVO.setPk_ivappdetail(null); //开票申请子实体id | ||||||
|                 newivApplicationBodyVO.setBillno(null); //开票申请子实体单据号 |                 newivApplicationBodyVO.setBillno(null); //开票申请子实体单据号 | ||||||
|  |                 newivApplicationBodyVO.setSe(new UFDouble(paramSaleInvoiceBVO.getString("ntax"))); //税额 | ||||||
|                 newivApplicationBodyVO.setXmsl(new UFDouble(paramSaleInvoiceBVO.getString("nnum"))); //数量 |                 newivApplicationBodyVO.setXmsl(new UFDouble(paramSaleInvoiceBVO.getString("nnum"))); //数量 | ||||||
|                 newivApplicationBodyVO.setXmje(new UFDouble(paramSaleInvoiceBVO.getString("norigmny"))); //金额 |                 newivApplicationBodyVO.setXmje(new UFDouble(paramSaleInvoiceBVO.getString("norigmny"))); //金额 | ||||||
|                 newivApplicationBodyVO.setXmjshj(new UFDouble(paramSaleInvoiceBVO.getString("norigtaxmny"))); //价税合计 |                 newivApplicationBodyVO.setXmjshj(new UFDouble(paramSaleInvoiceBVO.getString("norigtaxmny"))); //价税合计 | ||||||
|                 newivApplicationBodyVO.setBchcje(new UFDouble(paramSaleInvoiceBVO.getString("norigtaxmny"))); //本次红冲金额 = 本次参数红冲金额 |                 newivApplicationBodyVO.setBchcje(new UFDouble(paramSaleInvoiceBVO.getString("norigtaxmny")).multiply(new UFDouble(-1))); //本次红冲金额 = 本次参数红冲金额 | ||||||
|                 newivApplicationBodyVOS[i++] = newivApplicationBodyVO; |                 newivApplicationBodyVOS[i++] = newivApplicationBodyVO; | ||||||
|  |                 sumSe = sumSe.add(new UFDouble(paramSaleInvoiceBVO.getString("ntax"))); | ||||||
|                 sumXmsl = sumXmsl.add(new UFDouble(paramSaleInvoiceBVO.getString("nnum"))); |                 sumXmsl = sumXmsl.add(new UFDouble(paramSaleInvoiceBVO.getString("nnum"))); | ||||||
|                 sumXmje = sumXmje.add(new UFDouble(paramSaleInvoiceBVO.getString("norigmny"))); |                 sumXmje = sumXmje.add(new UFDouble(paramSaleInvoiceBVO.getString("norigmny"))); | ||||||
|                 sumXmjshj = sumXmjshj.add(new UFDouble(paramSaleInvoiceBVO.getString("norigtaxmny"))); |                 sumXmjshj = sumXmjshj.add(new UFDouble(paramSaleInvoiceBVO.getString("norigtaxmny"))); | ||||||
|                 sumBchcje = sumBchcje.add(new UFDouble(paramSaleInvoiceBVO.getString("norigtaxmny"))); |                 sumBchcje = sumBchcje.add(new UFDouble(paramSaleInvoiceBVO.getString("norigtaxmny")).multiply(new UFDouble(-1))); | ||||||
|             } |             } | ||||||
|             //赋值之后修改主实体红冲时字段 |             //赋值之后修改主实体红冲时字段 | ||||||
|             newivApplicationHeadVO.setPk_ivapplication(null);  //开票申请单主实体id |             newivApplicationHeadVO.setPk_ivapplication(null);  //开票申请单主实体id | ||||||
|             newivApplicationHeadVO.setBillno(null);  //单据号 |             newivApplicationHeadVO.setBillno(null);  //单据号 | ||||||
|  |             newivApplicationHeadVO.setPreparedate(new UFDate());  //单据日期 | ||||||
|             newivApplicationHeadVO.setJshj(sumXmjshj);  //价税合计 |             newivApplicationHeadVO.setJshj(sumXmjshj);  //价税合计 | ||||||
|             newivApplicationHeadVO.setHjje(sumXmje);  //合计金额 |             newivApplicationHeadVO.setHjje(sumXmje);  //合计金额 | ||||||
|             newivApplicationHeadVO.setHjse(ivApplicationHeadVO.getHjse().multiply(new UFDouble(-1)));  //合计税额 |             newivApplicationHeadVO.setHjse(sumSe);  //合计税额 | ||||||
|             newivApplicationHeadVO.setBchcje(sumBchcje);  //本次红冲金额 |             newivApplicationHeadVO.setBchcje(sumBchcje);  //本次红冲金额 | ||||||
|             newivApplicationHeadVO.setHzfp(UFBoolean.TRUE);  //红字发票 |             newivApplicationHeadVO.setHzfp(UFBoolean.TRUE);  //红字发票 | ||||||
|             newivApplicationHeadVO.setSrc_billtype(ivApplicationHeadVO.getSrc_billtype());  //来源单据类型 |             newivApplicationHeadVO.setSrc_billtype(SOBillType.Invoice.getCode());  //来源单据类型 | ||||||
|             newivApplicationHeadVO.setSrc_tradetype(ivApplicationHeadVO.getSrc_tradetype());  //来源交易类型 |             newivApplicationHeadVO.setSrc_tradetype(rpSaleInvoiceHVO.getCtrantypeid());  //来源交易类型 | ||||||
|             newivApplicationHeadVO.setSrc_billno(ivApplicationHeadVO.getSrc_billno());  //来源单据编号 |             newivApplicationHeadVO.setTranstypecode(rpSaleInvoiceHVO.getVtrantypecode());  //来源交易类型编码 | ||||||
|  |             newivApplicationHeadVO.setSrc_pkbusibill(rpSaleInvoiceHVO.getCsaleinvoiceid());  //来源单据id | ||||||
|  |             newivApplicationHeadVO.setSrc_billno(rpSaleInvoiceHVO.getVbillcode());  //来源单据编号 | ||||||
|  |             newivApplicationHeadVO.setHcyy("2");  //红冲原因:2(开票有误) | ||||||
| 
 | 
 | ||||||
|             //组装VO |             //组装VO | ||||||
|             ivApplicationAggVO.setParentVO(newivApplicationHeadVO); |             ivApplicationAggVO.setParentVO(newivApplicationHeadVO); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue