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