Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
784a3a17c9
|
@ -102,8 +102,7 @@ public class IAPISaleInvMaitainImpl {
|
|||
: ResultMessageUtil.exceptionToJSON(new NullPointerException("未知异常"));
|
||||
}
|
||||
String[] ids = {content};
|
||||
SaleInvoiceVO[] saleInvoiceVO = NCLocator.getInstance().lookup(ISaleinvoiceQueryAPI.class)
|
||||
.queryVOByIDs(ids);
|
||||
SaleInvoiceVO[] saleInvoiceVO = querySaleInvoiceByIds(ids);
|
||||
SaleInvoiceVO saleInvoiceVO22 = saleInvoiceVO[0];
|
||||
SaleInvoiceHVO saleInvoiceHVO = saleInvoiceVO22.getParentVO();
|
||||
// 销售发票审核开始
|
||||
|
@ -156,63 +155,79 @@ public class IAPISaleInvMaitainImpl {
|
|||
String csaleinvoiceid = bject.getString("vdef40");
|
||||
// 根据销售发票主实体id查询销售发票
|
||||
String[] ids = {csaleinvoiceid};
|
||||
SaleInvoiceVO[] saleInvoiceVOs = NCLocator.getInstance().lookup(ISaleinvoiceQueryAPI.class)
|
||||
.queryVOByIDs(ids);
|
||||
SaleInvoiceVO[] saleInvoiceVOs = querySaleInvoiceByIds(ids);
|
||||
if (saleInvoiceVOs == null || saleInvoiceVOs.length <= 0) {
|
||||
return ResultMessageUtil.exceptionToJSON(new NullPointerException("未在系统中查询到对应的销售发票"));
|
||||
}
|
||||
// 调用函数根据原销售发票组装新红冲发票
|
||||
SaleInvoiceVO saleInvoiceRedRushVO = makeNewRedRushSaleInvoice(saleInvoiceVOs[0], bject);
|
||||
// 生成红冲发票
|
||||
Logger.error("====================inv-red-save-start===============");
|
||||
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);
|
||||
Logger.error("=========================inv-save============== ");
|
||||
if (returnSaveSaleInvoiceVOs != null && returnSaveSaleInvoiceVOs.length > 0) {
|
||||
Logger.error("inv-save = " + JSONArray.toJSONString(returnSaveSaleInvoiceVOs));
|
||||
// 生成红冲发票成功后,执行销售发票审批动作
|
||||
context.setBillType("32");
|
||||
context.setBillVos(returnSaveSaleInvoiceVOs);
|
||||
context.setActionName("APPROVE");
|
||||
SaleInvoiceVO[] returnApproveSaleInvoiceVOs = (SaleInvoiceVO[]) flowService.exeScriptPFlow(context);
|
||||
if (returnApproveSaleInvoiceVOs == null || returnApproveSaleInvoiceVOs.length <= 0) {
|
||||
throw new BusinessException("生成销售发票审核失败");
|
||||
}
|
||||
Logger.error("=========================inv-audit============== ");
|
||||
Logger.error("inv-audit = " + JSONArray.toJSONString(returnApproveSaleInvoiceVOs));
|
||||
/**
|
||||
* 开票申请红冲逻辑:
|
||||
* 1.根据销售发票号查询下游开票申请
|
||||
* 2.根据原开票申请生成新红冲
|
||||
*/
|
||||
String vBillcode = saleInvoiceVOs[0].getParentVO().getVbillcode();
|
||||
HYSuperDMO dmo = new HYSuperDMO();
|
||||
// 开票申请单主表
|
||||
IVApplicationHeadVO[] iVApplicationHeadVO = (IVApplicationHeadVO[]) dmo.queryByWhereClause(IVApplicationHeadVO.class, "src_billno='" + vBillcode + "' and dr=0 ");
|
||||
String pk_ivapplication = iVApplicationHeadVO[0].getPk_ivapplication(); // 开票申请id
|
||||
// 开票申请单子表
|
||||
IVApplicationBodyVO[] iVApplicationBodyVOs = (IVApplicationBodyVO[]) dmo.queryByWhereClause(IVApplicationBodyVO.class, "pk_ivapplication='" + pk_ivapplication + "' and dr=0 ");
|
||||
// 调用函数封装开票申请红冲VO
|
||||
IVApplicationAggVO iVApplicationAggVO = makeNewRedRushIVApplicationAggVO(iVApplicationHeadVO[0], iVApplicationBodyVOs, bject, returnApproveSaleInvoiceVOs);
|
||||
// 生成红冲的开票申请
|
||||
IVApplicationServiceImpl serviceImpl = new IVApplicationServiceImpl();
|
||||
IVApplicationAggVO returnSaveIVApplicationAggVO = serviceImpl.save(iVApplicationAggVO);
|
||||
if (returnSaveIVApplicationAggVO != null) {
|
||||
return ResultMessageUtil.toJSON(returnApproveSaleInvoiceVOs, "接口调用成功");
|
||||
} else {
|
||||
Exception e = new Exception("接口调用失败");
|
||||
return ResultMessageUtil.exceptionToJSON(e);
|
||||
}
|
||||
if (returnSaveSaleInvoiceVOs == null || returnSaveSaleInvoiceVOs.length <= 0) {
|
||||
Exception e = new Exception("销售红冲发票保存失败");
|
||||
return ResultMessageUtil.exceptionToJSON(e);
|
||||
}
|
||||
Logger.error("inv-red-save = " + JSONArray.toJSONString(returnSaveSaleInvoiceVOs));
|
||||
Logger.error("=====================inv-red-save-end===============");
|
||||
|
||||
Logger.error("=====================inv-red-audit-start===============");
|
||||
// 生成红冲发票成功后,执行销售发票审批动作
|
||||
context.setBillType("32");
|
||||
context.setBillVos(returnSaveSaleInvoiceVOs);
|
||||
context.setActionName("APPROVE");
|
||||
SaleInvoiceVO[] returnApproveSaleInvoiceVOs = (SaleInvoiceVO[]) flowService.exeScriptPFlow(context);
|
||||
if (returnApproveSaleInvoiceVOs == null || returnApproveSaleInvoiceVOs.length <= 0) {
|
||||
throw new BusinessException("生成销售发票审核失败");
|
||||
}
|
||||
Logger.error("inv-red-audit = " + JSONArray.toJSONString(returnApproveSaleInvoiceVOs));
|
||||
Logger.error("=====================inv-red-audit-end===============");
|
||||
|
||||
// 查询新生成红冲发票的信息
|
||||
String newPk = returnApproveSaleInvoiceVOs[0].getParentVO().getCsaleinvoiceid();
|
||||
String[] idsNew = {newPk};
|
||||
// String[] idsNew = {"1001A11000000FREYYLE"};
|
||||
SaleInvoiceVO[] redVos = querySaleInvoiceByIds(idsNew);
|
||||
|
||||
/**
|
||||
* 开票申请红冲逻辑:
|
||||
* 1.根据销售发票号查询下游开票申请
|
||||
* 2.根据原开票申请生成新红冲
|
||||
*/
|
||||
String vBillcode = saleInvoiceVOs[0].getParentVO().getVbillcode();
|
||||
HYSuperDMO dmo = new HYSuperDMO();
|
||||
// 开票申请单主表
|
||||
IVApplicationHeadVO[] iVApplicationHeadVO = (IVApplicationHeadVO[]) dmo.queryByWhereClause(IVApplicationHeadVO.class, "src_billno='" + vBillcode + "' and dr=0 ");
|
||||
String pk_ivapplication = iVApplicationHeadVO[0].getPk_ivapplication(); // 开票申请id
|
||||
// 开票申请单子表
|
||||
IVApplicationBodyVO[] iVApplicationBodyVOs = (IVApplicationBodyVO[]) dmo.queryByWhereClause(IVApplicationBodyVO.class, "pk_ivapplication='" + pk_ivapplication + "' and dr=0 ");
|
||||
// 调用函数封装开票申请红冲VO
|
||||
IVApplicationAggVO iVApplicationAggVO = makeNewRedRushIVApplicationAggVO(iVApplicationHeadVO[0], iVApplicationBodyVOs, bject, redVos);
|
||||
// 生成红冲的开票申请
|
||||
IVApplicationServiceImpl serviceImpl = new IVApplicationServiceImpl();
|
||||
IVApplicationAggVO returnSaveIVApplicationAggVO = serviceImpl.save(iVApplicationAggVO);
|
||||
if (returnSaveIVApplicationAggVO != null) {
|
||||
// 查询红冲发票信息返回给调用方
|
||||
return ResultMessageUtil.toJSON(redVos, "接口调用成功");
|
||||
} else {
|
||||
Exception e = new Exception("接口调用失败");
|
||||
Exception e = new Exception("销售红冲发票保存审核成功,开票申请保存失败");
|
||||
return ResultMessageUtil.exceptionToJSON(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static JSONObject jsonObjectAss(JSONObject originalJson) throws Exception {
|
||||
/**
|
||||
* 蓝字发票封装给交换平台的传参
|
||||
*
|
||||
* @param originalJson
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public JSONObject jsonObjectAss(JSONObject originalJson) throws Exception {
|
||||
try {
|
||||
// 构建目标 JSON 格式
|
||||
JSONObject resultJson = new JSONObject();
|
||||
|
@ -384,7 +399,7 @@ public class IAPISaleInvMaitainImpl {
|
|||
}
|
||||
}
|
||||
|
||||
private static String getTaxcode(String taxrateStr) throws BusinessException {
|
||||
private String getTaxcode(String taxrateStr) throws BusinessException {
|
||||
IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class);
|
||||
String sql = " select code FROM bd_taxrate tt inner join bd_taxcode tc on tt.pk_taxcode=tc.pk_taxcode where taxrate='"
|
||||
+ taxrateStr + "' AND ROWNUM = 1 ";
|
||||
|
@ -392,7 +407,7 @@ public class IAPISaleInvMaitainImpl {
|
|||
return taxcodeStr;
|
||||
}
|
||||
|
||||
private static Map<String, Object> getSaleorderVo(String csourcebillbidStr) throws BusinessException {
|
||||
private Map<String, Object> getSaleorderVo(String csourcebillbidStr) throws BusinessException {
|
||||
IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class);
|
||||
String sql = " select s.vbillcode,s.csaleorderid, s.corigcurrencyid," +
|
||||
" sb.csaleorderbid,sb.crowno,sb.blargessflag,sb.nexchangerate,sb.vchangerate," +
|
||||
|
@ -405,14 +420,14 @@ public class IAPISaleInvMaitainImpl {
|
|||
return value2;
|
||||
}
|
||||
|
||||
private static String getString_TrimAsNull(Object value) {
|
||||
private String getString_TrimAsNull(Object value) {
|
||||
if ((value == null) || (value.toString().trim().isEmpty())) {
|
||||
return "";
|
||||
}
|
||||
return value.toString().trim();
|
||||
}
|
||||
|
||||
private static UFDouble getUFDouble_NullAsZero(Object value) {
|
||||
private UFDouble getUFDouble_NullAsZero(Object value) {
|
||||
if ((value == null) || (value.toString().trim().isEmpty()) || (value.toString().trim().equals("~")))
|
||||
return UFDouble.ONE_DBL;
|
||||
if ((value instanceof UFDouble))
|
||||
|
@ -423,6 +438,17 @@ public class IAPISaleInvMaitainImpl {
|
|||
return new UFDouble(value.toString().trim());
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据主键查询销售发票
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
* @throws BusinessException
|
||||
*/
|
||||
private SaleInvoiceVO[] querySaleInvoiceByIds(String[] ids) throws BusinessException {
|
||||
return NCLocator.getInstance().lookup(ISaleinvoiceQueryAPI.class).queryVOByIDs(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造红冲发票VO
|
||||
*
|
||||
|
@ -431,7 +457,7 @@ public class IAPISaleInvMaitainImpl {
|
|||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static SaleInvoiceVO makeNewRedRushSaleInvoice(SaleInvoiceVO originalVO, JSONObject bject) throws Exception {
|
||||
public SaleInvoiceVO makeNewRedRushSaleInvoice(SaleInvoiceVO originalVO, JSONObject bject) throws Exception {
|
||||
try {
|
||||
SaleInvoiceVO saleInvoiceVO = new SaleInvoiceVO();
|
||||
// 发票主实体
|
||||
|
@ -555,24 +581,20 @@ public class IAPISaleInvMaitainImpl {
|
|||
/**
|
||||
* 构造红冲开票申请VO
|
||||
*
|
||||
* @param applyHeadVO 原开票申请主实体
|
||||
* @param ivApplicationBodyVOS 原开票申请子实体
|
||||
* @param bject bip参数
|
||||
* @param returnApproveSaleInvoiceVOs 新生成的红冲销售发票实体
|
||||
* @param applyHeadVO 原开票申请主实体
|
||||
* @param ivApplicationBodyVOS 原开票申请子实体
|
||||
* @param bject bip参数
|
||||
* @param redVos 新生成的红冲销售发票实体
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static IVApplicationAggVO makeNewRedRushIVApplicationAggVO(IVApplicationHeadVO applyHeadVO, IVApplicationBodyVO[] ivApplicationBodyVOS, JSONObject bject, SaleInvoiceVO[] returnApproveSaleInvoiceVOs) throws Exception {
|
||||
public IVApplicationAggVO makeNewRedRushIVApplicationAggVO(IVApplicationHeadVO applyHeadVO, IVApplicationBodyVO[] ivApplicationBodyVOS, JSONObject bject, SaleInvoiceVO[] redVos) throws Exception {
|
||||
try {
|
||||
IVApplicationAggVO applicationAggVO = 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();
|
||||
SaleInvoiceHVO rpSaleInvoiceHVO = redVos[0].getParentVO();
|
||||
|
||||
// 主实体属性赋值
|
||||
// 克隆取值原子表开票申请
|
||||
|
@ -608,7 +630,6 @@ public class IAPISaleInvMaitainImpl {
|
|||
}
|
||||
JSONObject bipBvoJson = newBvoArr.get(0); // 参数子表
|
||||
IVApplicationBodyVO newivApplicationBodyVO = new IVApplicationBodyVO();
|
||||
// BeanUtil.copyProperties(ivApplicationBodyVO,newivApplicationBodyVO, CopyOptions.create().setIgnoreNullValue(true));
|
||||
// 克隆取值原子表开票申请
|
||||
newivApplicationBodyVO = (IVApplicationBodyVO) getCloneTool().deepClone(ivApplicationBodyVO);
|
||||
// 赋值之后修改子实体红冲时字段
|
||||
|
@ -636,9 +657,9 @@ public class IAPISaleInvMaitainImpl {
|
|||
newivApplicationHeadVO.setHjse(sumSe); // 合计税额
|
||||
newivApplicationHeadVO.setBchcje(sumBchcje); // 本次红冲金额
|
||||
newivApplicationHeadVO.setHzfp(UFBoolean.TRUE); // 红字发票
|
||||
newivApplicationHeadVO.setTranstypecode("SSCIVA-kpsq"); // 交易类型编码-填充默认值
|
||||
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(开票有误)
|
||||
|
@ -652,7 +673,7 @@ public class IAPISaleInvMaitainImpl {
|
|||
}
|
||||
}
|
||||
|
||||
private static Map<String, Object> getSaleOrderInfo(String csaleorderbid) throws BusinessException {
|
||||
private Map<String, Object> getSaleOrderInfo(String csaleorderbid) throws BusinessException {
|
||||
IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class);
|
||||
String sql = " select s.vbillcode,s.csaleorderid, s.corigcurrencyid," +
|
||||
" sb.csaleorderbid,sb.crowno,sb.blargessflag,sb.nexchangerate," +
|
||||
|
|
Loading…
Reference in New Issue