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.framework.service.ServiceLocator; | ||||
| import nccloud.itf.sscivm.ivsale.impl.IVApplicationServiceImpl; | ||||
| 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 org.json.JSONString; | ||||
| import uap.mw.trans.TransactionFactory; | ||||
|  | @ -97,14 +100,25 @@ public class billSaveAction extends AbstractNCCRestResource { | |||
|             return ResultMessageUtil.exceptionToJSON(new NullPointerException("未查询到Erp对应的销售发票")); | ||||
|         } | ||||
|         try{ | ||||
|             //手动开启事务 | ||||
|             TransactionFactory.getTMProxy().begin(3,0); | ||||
|             //调用函数根据原销售发票组装新红冲发票 | ||||
|             SaleInvoiceVO saleInvoiceRedRushVO = makeNewRedRushSaleInvoice(saleInvoiceVOs[0],bject); | ||||
|             //生成红冲发票 | ||||
|             SaleInvoiceVO[] returnSaleInvoiceVO = (SaleInvoiceVO[])PfServiceScmUtil.processBatch("WRITE", SOBillType.Invoice.getCode(), new SaleInvoiceVO[] { saleInvoiceRedRushVO }, null, null); | ||||
|             if(returnSaleInvoiceVO !=null && returnSaleInvoiceVO.length > 0) { | ||||
|                 //生成红冲发票成功后,执行开票申请红冲逻辑 | ||||
|             ICloudScriptPFlowService flowService = NCLocator.getInstance().lookup(ICloudScriptPFlowService.class); | ||||
|             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.根据销售发票号查询下游开票申请 | ||||
|  | @ -118,14 +132,16 @@ public class billSaveAction extends AbstractNCCRestResource { | |||
|                 //开票申请单子表 | ||||
|                 IVApplicationBodyVO[] iVApplicationBodyVOs=(IVApplicationBodyVO[]) dmo.queryByWhereClause(IVApplicationBodyVO.class, "pk_ivapplication='"+pk_ivapplication+"' and dr=0 "); | ||||
|                 //调用函数封装开票申请红冲VO | ||||
|                 IVApplicationAggVO iVApplicationAggVO = makeNewRedRushIVApplicationAggVO(iVApplicationHeadVO[0],iVApplicationBodyVOs,bject); | ||||
|                 IVApplicationAggVO iVApplicationAggVO = makeNewRedRushIVApplicationAggVO(iVApplicationHeadVO[0],iVApplicationBodyVOs,bject,returnApproveSaleInvoiceVOs); | ||||
|                 //生成红冲的开票申请 | ||||
| //                IVApplicationService ivApplicationServiceservice = (IVApplicationService) ServiceLocator.find(IVApplicationService.class); | ||||
| //                IVApplicationAggVO returnIVApplicationAggVO = ivApplicationServiceservice.save(iVApplicationAggVO); | ||||
|                 Object returnIVApplicationAggVO = PfServiceScmUtil.processBatch("SAVE", "SSCIVA", new IVApplicationAggVO[] { iVApplicationAggVO }, null, null); | ||||
|                 if(returnIVApplicationAggVO != null ) { | ||||
|                     //正常结束 | ||||
|                     TransactionFactory.getTMProxy().end(null); | ||||
| //                context.setBillType("SSCIVA"); | ||||
| //                context.setBillVos( new IVApplicationAggVO[] { iVApplicationAggVO }); | ||||
| //                context.setActionName("SAVE"); | ||||
| //                IVApplicationAggVO[] returnSaveIVApplicationAggVO = (IVApplicationAggVO[] )flowService.exeScriptPFlow(context); | ||||
|                 IVApplicationServiceImpl serviceImpl = new IVApplicationServiceImpl(); | ||||
|                 IVApplicationAggVO returnSaveIVApplicationAggVO = serviceImpl.save(iVApplicationAggVO); | ||||
| //                Object returnIVApplicationAggVO = PfServiceScmUtil.processBatch("SAVE", "SSCIVA", new IVApplicationAggVO[] { iVApplicationAggVO }, null, null); | ||||
|                 if(returnSaveIVApplicationAggVO != null ) { | ||||
|                     return ResultMessageUtil.toJSON(null, "接口调用成功"); | ||||
|                 }else{ | ||||
|                     Exception e = new Exception("接口调用失败"); | ||||
|  | @ -136,8 +152,6 @@ public class billSaveAction extends AbstractNCCRestResource { | |||
|                 return ResultMessageUtil.exceptionToJSON(e); | ||||
|             } | ||||
|         }catch (BusinessException e) { | ||||
|             //异常回滚 | ||||
|             TransactionFactory.getTMProxy().end(e); | ||||
|             Logger.error("writeBack Error: ",e); | ||||
|             return ResultMessageUtil.exceptionToJSON(e); | ||||
|         } | ||||
|  | @ -237,17 +251,25 @@ public class billSaveAction extends AbstractNCCRestResource { | |||
| 
 | ||||
|     /** | ||||
|      * 构造红冲开票申请VO | ||||
|      * @param ivApplicationHeadVO | ||||
|      * @param ivApplicationBodyVOS | ||||
|      * @param bject | ||||
|      * @param ivApplicationHeadVO 原开票申请主实体 | ||||
|      * @param ivApplicationBodyVOS 原开票申请子实体 | ||||
|      * @param bject bip参数 | ||||
|      * @param returnApproveSaleInvoiceVOs 新生成的红冲销售发票实体 | ||||
|      * @return | ||||
|      * @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 { | ||||
|             IVApplicationAggVO ivApplicationAggVO = new IVApplicationAggVO(); | ||||
|             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)); | ||||
|             //克隆取值原子表开票申请 | ||||
|  | @ -264,6 +286,7 @@ public class billSaveAction extends AbstractNCCRestResource { | |||
|             UFDouble sumXmje = new UFDouble(); //合计金额 | ||||
|             UFDouble sumXmjshj = new UFDouble(); //合计价税合计 | ||||
|             UFDouble sumBchcje = new UFDouble(); //合计本次红冲金额 | ||||
|             UFDouble sumSe = new UFDouble(); //合计税额 | ||||
|             //子实体属性赋值 | ||||
|             int i = 0; | ||||
|             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.setBillno(null); //开票申请子实体单据号 | ||||
|                 newivApplicationBodyVO.setSe(new UFDouble(paramSaleInvoiceBVO.getString("ntax"))); //税额 | ||||
|                 newivApplicationBodyVO.setXmsl(new UFDouble(paramSaleInvoiceBVO.getString("nnum"))); //数量 | ||||
|                 newivApplicationBodyVO.setXmje(new UFDouble(paramSaleInvoiceBVO.getString("norigmny"))); //金额 | ||||
|                 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; | ||||
|                 sumSe = sumSe.add(new UFDouble(paramSaleInvoiceBVO.getString("ntax"))); | ||||
|                 sumXmsl = sumXmsl.add(new UFDouble(paramSaleInvoiceBVO.getString("nnum"))); | ||||
|                 sumXmje = sumXmje.add(new UFDouble(paramSaleInvoiceBVO.getString("norigmny"))); | ||||
|                 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.setBillno(null);  //单据号 | ||||
|             newivApplicationHeadVO.setPreparedate(new UFDate());  //单据日期 | ||||
|             newivApplicationHeadVO.setJshj(sumXmjshj);  //价税合计 | ||||
|             newivApplicationHeadVO.setHjje(sumXmje);  //合计金额 | ||||
|             newivApplicationHeadVO.setHjse(ivApplicationHeadVO.getHjse().multiply(new UFDouble(-1)));  //合计税额 | ||||
|             newivApplicationHeadVO.setHjse(sumSe);  //合计税额 | ||||
|             newivApplicationHeadVO.setBchcje(sumBchcje);  //本次红冲金额 | ||||
|             newivApplicationHeadVO.setHzfp(UFBoolean.TRUE);  //红字发票 | ||||
|             newivApplicationHeadVO.setSrc_billtype(ivApplicationHeadVO.getSrc_billtype());  //来源单据类型 | ||||
|             newivApplicationHeadVO.setSrc_tradetype(ivApplicationHeadVO.getSrc_tradetype());  //来源交易类型 | ||||
|             newivApplicationHeadVO.setSrc_billno(ivApplicationHeadVO.getSrc_billno());  //来源单据编号 | ||||
|             newivApplicationHeadVO.setSrc_billtype(SOBillType.Invoice.getCode());  //来源单据类型 | ||||
|             newivApplicationHeadVO.setSrc_tradetype(rpSaleInvoiceHVO.getCtrantypeid());  //来源交易类型 | ||||
|             newivApplicationHeadVO.setTranstypecode(rpSaleInvoiceHVO.getVtrantypecode());  //来源交易类型编码 | ||||
|             newivApplicationHeadVO.setSrc_pkbusibill(rpSaleInvoiceHVO.getCsaleinvoiceid());  //来源单据id | ||||
|             newivApplicationHeadVO.setSrc_billno(rpSaleInvoiceHVO.getVbillcode());  //来源单据编号 | ||||
|             newivApplicationHeadVO.setHcyy("2");  //红冲原因:2(开票有误) | ||||
| 
 | ||||
|             //组装VO | ||||
|             ivApplicationAggVO.setParentVO(newivApplicationHeadVO); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue