Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
7c7792fe52
|
@ -99,8 +99,16 @@ public class GatheringbillRestResource extends ArapBaseRestResource {
|
|||
// 税码
|
||||
String ctaxcode = "";
|
||||
BaseDAO dao = new BaseDAO();
|
||||
// 销售订单号
|
||||
// 销售订单号 从表体拿
|
||||
String csaleorderid = "";
|
||||
List<Map<String, Object>> itemMaps = (List) billMap.get("items");
|
||||
List<GatheringBillItemVO> itemvos = new ArrayList<GatheringBillItemVO>();
|
||||
if (itemMaps != null && itemMaps.size() > 0) {
|
||||
for (Map<String, Object> item : itemMaps) {
|
||||
GatheringBillItemVO itemvo = (GatheringBillItemVO) fromJsonToVO(item, GatheringBillItemVO.class);
|
||||
csaleorderid = itemvo.getDef37();
|
||||
}
|
||||
}
|
||||
try {
|
||||
HYPubBO hybo = new HYPubBO();
|
||||
headvo.setIsinit(new UFBoolean(false));
|
||||
|
@ -113,10 +121,10 @@ public class GatheringbillRestResource extends ArapBaseRestResource {
|
|||
// 往来对象0-客户 2-部门 3-业务员 默认客户
|
||||
headvo.setObjtype(0);
|
||||
// 销售订单号
|
||||
csaleorderid = headvo.getDef3();
|
||||
if (StringUtils.isEmpty(csaleorderid)) {
|
||||
throw new BusinessException("销售订单不能为空");
|
||||
// return ResultMessageUtil.exceptionToJSON("销售订单不能为空", APIErrCodeEnum.BUSINESSEXCCODE.getCode());
|
||||
// return ResultMessageUtil.exceptionToJSON("销售订单不能为空",
|
||||
// APIErrCodeEnum.BUSINESSEXCCODE.getCode());
|
||||
}
|
||||
// 客户
|
||||
Object customerid = hybo.findColValue("so_saleorder", "ccustomerid",
|
||||
|
@ -181,8 +189,6 @@ public class GatheringbillRestResource extends ArapBaseRestResource {
|
|||
return ResultMessageUtil.exceptionToJSON(e);
|
||||
}
|
||||
|
||||
List<Map<String, Object>> itemMaps = (List) billMap.get("items");
|
||||
List<GatheringBillItemVO> itemvos = new ArrayList<GatheringBillItemVO>();
|
||||
if (itemMaps != null && itemMaps.size() > 0) {
|
||||
for (Map<String, Object> item : itemMaps) {
|
||||
GatheringBillItemVO itemvo = (GatheringBillItemVO) fromJsonToVO(item, GatheringBillItemVO.class);
|
||||
|
|
|
@ -9,6 +9,8 @@ import nc.jdbc.framework.PersistenceManager;
|
|||
import nc.jdbc.framework.exception.DbException;
|
||||
import nc.jdbc.framework.processor.MapListProcessor;
|
||||
import nc.jdbc.framework.processor.MapProcessor;
|
||||
import nccloud.commons.lang.StringUtils;
|
||||
import nccloud.framework.core.exception.ExceptionUtils;
|
||||
import nccloud.framework.service.ServiceLocator;
|
||||
import nccloud.framework.web.action.itf.ICommonAction;
|
||||
import nccloud.framework.web.container.IRequest;
|
||||
|
@ -188,18 +190,16 @@ public class myBtnClickAction extends InformerAction implements ICommonAction {
|
|||
}
|
||||
if ("撤回".equals(def01)) {
|
||||
vmao.put("publishStatus", "再次发布");
|
||||
|
||||
} else {
|
||||
vmao.put("publishStatus", "");
|
||||
|
||||
}
|
||||
|
||||
|
||||
String pjlsh;
|
||||
if (row.get("transerial") != null) {
|
||||
pjlsh = row.get("transerial").toString();
|
||||
pjlsh = row.get("transerial");
|
||||
} else if (row.get("note_no") != null) {
|
||||
pjlsh = row.get("note_no").toString();
|
||||
pjlsh = row.get("note_no");
|
||||
} else {
|
||||
resultMap.put("flag", "false");
|
||||
resultMap.put("message", "票据与流水号不可同时为空");
|
||||
|
@ -218,13 +218,16 @@ public class myBtnClickAction extends InformerAction implements ICommonAction {
|
|||
vmao.put("oppAccountName", row.get("oppunitname"));
|
||||
vmao.put("oppBank", row.get("dfcode"));
|
||||
vmao.put("oppBankName", row.get("dfname"));
|
||||
vmao.put("description", "--");
|
||||
if (StringUtils.isNotEmpty(row.get("memo"))) {
|
||||
vmao.put("description", row.get("memo"));
|
||||
}
|
||||
vmao.put("bankTransactionNumber", pjlsh);
|
||||
vmao.put("accountType", "默认类型");
|
||||
vmao.put("orgCode", row.get("orgcode"));
|
||||
vmao.put("billNumber", row.get("note_no"));
|
||||
|
||||
if (row.get("pk_balatype") != null && row.get("pk_balatype") != "" && row.get("pk_balatype") != "~") {
|
||||
if (row.get("pk_balatype") != null && !Objects.equals(row.get("pk_balatype"), "") && !Objects.equals(row.get("pk_balatype"), "~")) {
|
||||
vmao.put("paymentMethod", row.get("pk_balatype"));
|
||||
} else {
|
||||
vmao.put("paymentMethod", "10");
|
||||
|
@ -238,6 +241,10 @@ public class myBtnClickAction extends InformerAction implements ICommonAction {
|
|||
Map access_token = (Map) map.get("data");
|
||||
String urls2 = urlpath + "/iuap-api-gateway/" + tenant + "/current_yonbip_default_sys/KKAPI/paymentNotice/addBatch?access_token=" + access_token.get("access_token");
|
||||
Map mapjson = httpFW(urls2, jsonString1);
|
||||
Logger.error("myBtnClickAction-mapjson = " + mapjson);
|
||||
if (!"200".equals(mapjson.getOrDefault("code", "") + "")) {
|
||||
throw new Exception(mapjson.getOrDefault("message", "ÍÆËÍʧ°Ü") + "");
|
||||
}
|
||||
Map datas = (Map) mapjson.get("data");
|
||||
JSONArray faijsonist = (JSONArray) datas.get("failData");
|
||||
|
||||
|
@ -273,17 +280,13 @@ public class myBtnClickAction extends InformerAction implements ICommonAction {
|
|||
String message = datas.get("successData") + "成功" + message1 + ",失败:" + failData;
|
||||
resultMap.put("flag", "true");
|
||||
resultMap.put("message", message);
|
||||
// 调用服务工具类的deletePrcplInterest方法,尝试删除利息计划
|
||||
System.out.println("year" + mapjson);
|
||||
ins.close();
|
||||
} catch (Exception ex) {
|
||||
// 捕获异常,并记录错误日志
|
||||
Logger.error("123" + ex.getMessage(), ex);
|
||||
resultMap.put("flag", "0");
|
||||
resultMap.put("message", ex.getMessage());
|
||||
Logger.error("myBtnClickAction-exp:" + ex.getMessage(), ex);
|
||||
ExceptionUtils.wrapBusinessException(ex.getMessage());
|
||||
}
|
||||
|
||||
|
||||
// 返回结果映射
|
||||
return resultMap;
|
||||
}
|
||||
|
@ -300,7 +303,7 @@ public class myBtnClickAction extends InformerAction implements ICommonAction {
|
|||
hmacSHA256.init(secretKey);
|
||||
byte[] hashBytes = hmacSHA256.doFinal(data.getBytes());
|
||||
String base64Hash = Base64.encodeBase64String(hashBytes);
|
||||
return URLEncoder.encode(base64Hash, StandardCharsets.UTF_8.toString());
|
||||
return URLEncoder.encode(base64Hash, StandardCharsets.UTF_8);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding='gb2312'?>
|
||||
<module displayname="purp" name="purp">
|
||||
<dependencies>
|
||||
</dependencies>
|
||||
</module>
|
|
@ -0,0 +1,273 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package nc.impl.pp.supplierprice.rule;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import nc.vo.pp.report.entity.PurpReportTransMap;
|
||||
import nc.vo.pp.report.util.PurpRptUtils;
|
||||
import nc.vo.pp.supplierprice.entity.SupPriceRptConst;
|
||||
import nc.vo.pp.util.StringUtils;
|
||||
import nc.vo.pub.lang.UFDate;
|
||||
import nc.vo.pub.query.ConditionVO;
|
||||
import nc.vo.pubapp.AppContext;
|
||||
import nc.vo.scmpub.util.ArrayUtil;
|
||||
import nc.vo.util.CloneUtil;
|
||||
|
||||
/**
|
||||
* ×îм۸ñ²éѯ
|
||||
* 2005ÊÊÅä2312
|
||||
*
|
||||
* @author mzr
|
||||
* @date 2025/04/16
|
||||
*/
|
||||
public class SupPriceQryRule {
|
||||
public SupPriceQryRule() {
|
||||
}
|
||||
|
||||
public String getWhereCtForHis(PurpReportTransMap tranMap, PurpRptUtils rptutils, String htablealias, String btablealias) {
|
||||
ConditionVO[] convos = this.getInitQryCondVOs(tranMap, rptutils);
|
||||
if (ArrayUtil.isEmpty(convos)) {
|
||||
return "";
|
||||
} else {
|
||||
ConditionVO[] copyconvos = (ConditionVO[])CloneUtil.deepClone(convos);
|
||||
List<ConditionVO> list = new ArrayList();
|
||||
|
||||
for(ConditionVO vo : copyconvos) {
|
||||
if (vo.getFieldCode().equals("pk_supplier")) {
|
||||
vo.setFieldCode(htablealias + ".cvendorid");
|
||||
list.add(vo);
|
||||
} else if (vo.getFieldCode().equals("tcreatetime")) {
|
||||
if (vo.getDataType() == 3 && vo.getOperaCode().equalsIgnoreCase("=")) {
|
||||
UFDate date = new UFDate(vo.getValue());
|
||||
vo.setValue(date.toLocalString());
|
||||
}
|
||||
|
||||
vo.setFieldCode(htablealias + ".creationtime");
|
||||
list.add(vo);
|
||||
} else if (!vo.getFieldCode().equals("fpricesrctype")) {
|
||||
if (vo.getFieldCode().equals("dvaliddate")) {
|
||||
if (vo.getDataType() == 3 && vo.getOperaCode().equalsIgnoreCase("=")) {
|
||||
UFDate date = new UFDate(vo.getValue());
|
||||
vo.setValue(date.toLocalString());
|
||||
}
|
||||
|
||||
vo.setFieldCode(htablealias + ".dbilldate");
|
||||
list.add(vo);
|
||||
} else if (vo.getFieldCode().equals("dinvaliddate")) {
|
||||
if (vo.getDataType() == 3 && vo.getOperaCode().equalsIgnoreCase("=")) {
|
||||
UFDate date = new UFDate(vo.getValue());
|
||||
vo.setValue(date.toLocalString());
|
||||
}
|
||||
} else {
|
||||
vo.setFieldCode(htablealias + "." + vo.getFieldCode());
|
||||
list.add(vo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StringBuilder sql = new StringBuilder("");
|
||||
sql.append((new ConditionVO()).getSQLStr((ConditionVO[])list.toArray(new ConditionVO[list.size()])));
|
||||
this.addMarWhere(sql, tranMap, rptutils, btablealias);
|
||||
return sql.toString();
|
||||
}
|
||||
}
|
||||
|
||||
public String getWhereCtForNew(PurpReportTransMap tranMap, PurpRptUtils rptutils, String htablealias, String btablealias) {
|
||||
ConditionVO[] convos = this.getInitQryCondVOs(tranMap, rptutils);
|
||||
if (ArrayUtil.isEmpty(convos)) {
|
||||
return "";
|
||||
} else {
|
||||
ConditionVO[] copyconvos = (ConditionVO[])CloneUtil.deepClone(convos);
|
||||
|
||||
for(ConditionVO vo : copyconvos) {
|
||||
if (vo.getFieldCode().equals(SupPriceRptConst.DBUSINESSDATE)) {
|
||||
int month = Integer.valueOf(vo.getValue());
|
||||
UFDate curdate = AppContext.getInstance().getBusiDate();
|
||||
UFDate befdate = curdate.getDateBefore(month * 30);
|
||||
vo.setFieldCode(htablealias + ".dbilldate");
|
||||
vo.setOperaCode("between");
|
||||
vo.setDataType(3);
|
||||
String var10001 = befdate.toString();
|
||||
vo.setValue(var10001 + " ," + curdate.toString() + " ");
|
||||
} else if (vo.getFieldCode().equals("pk_supplier")) {
|
||||
vo.setFieldCode(htablealias + ".cvendorid");
|
||||
} else {
|
||||
vo.setFieldCode(htablealias + "." + vo.getFieldCode());
|
||||
}
|
||||
}
|
||||
|
||||
StringBuilder sql = new StringBuilder("");
|
||||
sql.append((new ConditionVO()).getSQLStr(copyconvos));
|
||||
this.addMarWhere(sql, tranMap, rptutils, btablealias);
|
||||
return sql.toString();
|
||||
}
|
||||
}
|
||||
|
||||
public String getWhereOrderForHis(PurpReportTransMap tranMap, PurpRptUtils rptutils, String htablealias, String btablealias) {
|
||||
List<ConditionVO> list = new ArrayList();
|
||||
ConditionVO[] convos = this.getInitQryCondVOs(tranMap, rptutils);
|
||||
if (ArrayUtil.isEmpty(convos)) {
|
||||
return "";
|
||||
} else {
|
||||
ConditionVO[] convosCt = (ConditionVO[])CloneUtil.deepClone(convos);
|
||||
|
||||
for(ConditionVO vo : convosCt) {
|
||||
if (!vo.getFieldCode().equals("bsc") && !vo.getFieldCode().equals("fpricesrctype")) {
|
||||
if (vo.getFieldCode().equals("dinvaliddate")) {
|
||||
if (vo.getDataType() == 3 && vo.getOperaCode().equalsIgnoreCase("=")) {
|
||||
UFDate date = new UFDate(vo.getValue());
|
||||
vo.setValue(date.toLocalString());
|
||||
}
|
||||
} else if (vo.getFieldCode().equals("dvaliddate")) {
|
||||
if (vo.getDataType() == 3 && vo.getOperaCode().equalsIgnoreCase("=")) {
|
||||
UFDate date = new UFDate(vo.getValue());
|
||||
vo.setValue(date.toLocalString());
|
||||
}
|
||||
} else if (vo.getFieldCode().equals("tcreatetime")) {
|
||||
vo.setFieldCode(htablealias + ".creationtime");
|
||||
if (vo.getDataType() == 3 && vo.getOperaCode().equalsIgnoreCase("=")) {
|
||||
UFDate date = new UFDate(vo.getValue());
|
||||
vo.setValue(date.toLocalString());
|
||||
}
|
||||
|
||||
list.add(vo);
|
||||
} else {
|
||||
vo.setFieldCode(htablealias + "." + vo.getFieldCode());
|
||||
list.add(vo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StringBuilder sql = new StringBuilder("");
|
||||
sql.append((new ConditionVO()).getSQLStr((ConditionVO[])list.toArray(new ConditionVO[list.size()])));
|
||||
this.addMarWhere(sql, tranMap, rptutils, btablealias);
|
||||
return sql.toString();
|
||||
}
|
||||
}
|
||||
|
||||
public String getWhereOrderForNew(PurpReportTransMap tranMap, PurpRptUtils rptutils, String htablealias, String btablealias) {
|
||||
List<ConditionVO> list = new ArrayList();
|
||||
ConditionVO[] convos = this.getInitQryCondVOs(tranMap, rptutils);
|
||||
ConditionVO[] convosCt = (ConditionVO[])CloneUtil.deepClone(convos);
|
||||
if (convosCt != null && convosCt.length > 0) {
|
||||
for(ConditionVO vo : convosCt) {
|
||||
if (vo.getFieldCode().equals(SupPriceRptConst.DBUSINESSDATE)) {
|
||||
int month = Integer.valueOf(vo.getValue());
|
||||
UFDate curdate = AppContext.getInstance().getBusiDate();
|
||||
UFDate befdate = curdate.getDateBefore(month * 30);
|
||||
vo.setFieldCode(htablealias + ".dbilldate");
|
||||
vo.setOperaCode("between");
|
||||
vo.setDataType(3);
|
||||
String var10001 = befdate.toString();
|
||||
vo.setValue(var10001 + " ," + curdate.toString() + " ");
|
||||
list.add(vo);
|
||||
} else if (!vo.getFieldCode().equals("bsc")) {
|
||||
vo.setFieldCode(htablealias + "." + vo.getFieldCode());
|
||||
list.add(vo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StringBuilder sql = new StringBuilder("");
|
||||
sql.append((new ConditionVO()).getSQLStr((ConditionVO[])list.toArray(new ConditionVO[list.size()])));
|
||||
this.addMarWhere(sql, tranMap, rptutils, btablealias);
|
||||
return sql.toString();
|
||||
}
|
||||
|
||||
public String getWhereSupPrice(PurpReportTransMap tranMap, PurpRptUtils rptutils, String tablealias) {
|
||||
ConditionVO[] convos = this.getInitQryCondVOs(tranMap, rptutils);
|
||||
if (ArrayUtil.isEmpty(convos)) {
|
||||
return "";
|
||||
} else {
|
||||
ConditionVO[] copyconvos = (ConditionVO[])CloneUtil.deepClone(convos);
|
||||
|
||||
for(ConditionVO vo : copyconvos) {
|
||||
if (vo.getFieldCode().equals(SupPriceRptConst.DBUSINESSDATE)) {
|
||||
int month = Integer.valueOf(vo.getValue());
|
||||
UFDate curdate = AppContext.getInstance().getBusiDate();
|
||||
UFDate befdate = curdate.getDateBefore(month * 30);
|
||||
vo.setFieldCode(tablealias + ".dvaliddate");
|
||||
vo.setOperaCode("between");
|
||||
vo.setDataType(3);
|
||||
String var10001 = befdate.toString();
|
||||
vo.setValue(var10001 + " ," + curdate.toString() + " ");
|
||||
} else if (vo.getDataType() == 3 && vo.getOperaCode().equalsIgnoreCase("=")) {
|
||||
UFDate date = new UFDate(vo.getValue());
|
||||
vo.setValue(date.toLocalString());
|
||||
vo.setFieldCode(tablealias + "." + vo.getFieldCode());
|
||||
} else {
|
||||
vo.setFieldCode(tablealias + "." + vo.getFieldCode());
|
||||
}
|
||||
}
|
||||
|
||||
StringBuilder sql = new StringBuilder("");
|
||||
sql.append((new ConditionVO()).getSQLStr(copyconvos));
|
||||
this.addMarWhere(sql, tranMap, rptutils, tablealias);
|
||||
return sql.toString();
|
||||
}
|
||||
}
|
||||
|
||||
public String getWhereSupPriceNew(PurpReportTransMap tranMap, PurpRptUtils rptutils, String tablealias) {
|
||||
ConditionVO[] convos = this.getInitQryCondVOs(tranMap, rptutils);
|
||||
if (ArrayUtil.isEmpty(convos)) {
|
||||
return "";
|
||||
} else {
|
||||
ConditionVO[] copyconvos = (ConditionVO[])CloneUtil.deepClone(convos);
|
||||
List<ConditionVO> list = new ArrayList();
|
||||
|
||||
for(ConditionVO vo : copyconvos) {
|
||||
if (vo.getFieldCode().equals(SupPriceRptConst.DBUSINESSDATE)) {
|
||||
int month = Integer.valueOf(vo.getValue());
|
||||
UFDate curdate = AppContext.getInstance().getBusiDate();
|
||||
UFDate befdate = curdate.getDateBefore(month * 30);
|
||||
vo.setFieldCode(tablealias + ".dinvaliddate");
|
||||
vo.setOperaCode("between");
|
||||
vo.setDataType(3);
|
||||
String var10001 = befdate.toString();
|
||||
vo.setValue(var10001 + " ," + curdate.toString() + " ");
|
||||
ConditionVO newvo = new ConditionVO();
|
||||
newvo.setLogic(false);
|
||||
newvo.setFieldCode(tablealias + ".dvaliddate");
|
||||
newvo.setOperaCode("between");
|
||||
newvo.setDataType(3);
|
||||
var10001 = befdate.toString();
|
||||
newvo.setValue(var10001 + " ," + curdate.toString() + " ");
|
||||
list.add(vo);
|
||||
list.add(newvo);
|
||||
} else if (vo.getDataType() == 3 && vo.getOperaCode().equalsIgnoreCase("=")) {
|
||||
UFDate date = new UFDate(vo.getValue());
|
||||
vo.setValue(date.toLocalString());
|
||||
vo.setFieldCode(tablealias + "." + vo.getFieldCode());
|
||||
list.add(vo);
|
||||
} else {
|
||||
vo.setFieldCode(tablealias + "." + vo.getFieldCode());
|
||||
list.add(vo);
|
||||
}
|
||||
}
|
||||
|
||||
StringBuilder sql = new StringBuilder("");
|
||||
sql.append((new ConditionVO()).getSQLStr((ConditionVO[])list.toArray(new ConditionVO[0])));
|
||||
this.addMarWhere(sql, tranMap, rptutils, tablealias);
|
||||
return sql.toString();
|
||||
}
|
||||
}
|
||||
|
||||
private void addMarWhere(StringBuilder sql, PurpReportTransMap tranMap, PurpRptUtils rptutils, String btablealias) {
|
||||
String[] marQryKeys = new String[]{SupPriceRptConst.MARBASCLASS, SupPriceRptConst.MATERIALCODE, SupPriceRptConst.MARTERIALNAME};
|
||||
String marwhere = rptutils.getWhereForMar(tranMap, btablealias, marQryKeys);
|
||||
if (!StringUtils.isEmpty(marwhere)) {
|
||||
sql.append(" and " + marwhere);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private ConditionVO[] getInitQryCondVOs(PurpReportTransMap tranMap, PurpRptUtils rptutils) {
|
||||
ConditionVO[] generalvos = tranMap.getConditionVOs(SupPriceRptConst.SUPPRICE_GENERALCOND);
|
||||
ConditionVO[] logicalvos = tranMap.getConditionVOs(SupPriceRptConst.SUPPRICE_LOGICALCOND);
|
||||
return rptutils.combineCondVOs(generalvos, logicalvos);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,175 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package nc.vo.pp.report.util;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import nc.bs.ic.icreport.pub.RPMetaDataUtil;
|
||||
import nc.bs.pubapp.report.ReportPermissionUtils;
|
||||
import nc.pub.smart.context.SmartContext;
|
||||
import nc.pub.smart.data.DataSet;
|
||||
import nc.pub.smart.metadata.MetaData;
|
||||
import nc.vo.ml.MultiLangUtil;
|
||||
import nc.vo.ml.NCLangRes4VoTransl;
|
||||
import nc.vo.pp.report.entity.PurpReportTransMap;
|
||||
import nc.vo.pub.ISuperVO;
|
||||
import nc.vo.pub.query.ConditionVO;
|
||||
import nc.vo.pubapp.pattern.model.entity.view.AbstractDataView;
|
||||
import nc.vo.pubapp.pattern.model.meta.entity.view.IDataViewMeta;
|
||||
import nc.vo.scmbd.pub.SCMESAPI;
|
||||
import nc.vo.scmpub.util.ArrayUtil;
|
||||
|
||||
/**
|
||||
* ×îм۸ñ²éѯ
|
||||
* 2005ÊÊÅä2312
|
||||
*
|
||||
* @author mzr
|
||||
* @date 2025/04/16
|
||||
*/
|
||||
public class PurpRptUtils {
|
||||
public static final int UFDATEDATATIMETYPE = 8;
|
||||
public static final int UFDATEDATATYPE = 3;
|
||||
|
||||
public PurpRptUtils() {
|
||||
}
|
||||
|
||||
public ConditionVO[] combineCondVOs(ConditionVO[] generalvos, ConditionVO[] logicalvos) {
|
||||
ConditionVO[] endvos = null;
|
||||
if (!ArrayUtil.isEmpty(generalvos)) {
|
||||
endvos = generalvos;
|
||||
}
|
||||
|
||||
if (!ArrayUtil.isEmpty(logicalvos) && ArrayUtil.isEmpty(endvos)) {
|
||||
endvos = logicalvos;
|
||||
} else if (!ArrayUtil.isEmpty(logicalvos) && endvos != null && endvos.length > 0) {
|
||||
System.arraycopy(logicalvos, 0, endvos, endvos.length, logicalvos.length);
|
||||
}
|
||||
|
||||
return endvos;
|
||||
}
|
||||
|
||||
public DataSet convertDataSet(IDataViewMeta md, AbstractDataView[] vos) {
|
||||
String[] fields = md.getAttributeNames();
|
||||
MetaData mtd = new MetaData();
|
||||
RPMetaDataUtil.addVOMetaFieldByKeys(mtd, md, fields);
|
||||
if (vos != null && vos.length > 0) {
|
||||
Object[][] datas = new Object[vos.length][fields.length];
|
||||
|
||||
for(int i = 0; i < vos.length; ++i) {
|
||||
if (vos[i] != null) {
|
||||
for(int k = 0; k < fields.length; ++k) {
|
||||
datas[i][k] = vos[i].getAttributeValue(fields[k]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new DataSet(mtd, datas);
|
||||
} else {
|
||||
DataSet ds = new DataSet();
|
||||
ds.setMetaData(mtd);
|
||||
return ds;
|
||||
}
|
||||
}
|
||||
|
||||
public String getChnNo() {
|
||||
return NCLangRes4VoTransl.getNCLangRes().getStrByID("40050004", "1400500040031");
|
||||
}
|
||||
|
||||
public String getChnYes() {
|
||||
return NCLangRes4VoTransl.getNCLangRes().getStrByID("40050004", "1400500040030");
|
||||
}
|
||||
|
||||
public String getPermisionInnerJoin(SmartContext context, Class<? extends ISuperVO> marclass, String btablealias) {
|
||||
ReportPermissionUtils utils = new ReportPermissionUtils(context);
|
||||
Map<Class<? extends ISuperVO>, String> beanMap = new HashMap();
|
||||
beanMap.put(marclass, btablealias);
|
||||
return utils.getPermissionSQL(beanMap);
|
||||
}
|
||||
|
||||
public String getWhereForMar(PurpReportTransMap tranMap, String btablealias, String[] marQryKeys) {
|
||||
String marclassKey = marQryKeys[0];
|
||||
String marcodeKey = marQryKeys[1];
|
||||
String marnameKey = marQryKeys[2];
|
||||
ConditionVO codeVO = this.getMarCondVO(tranMap, marcodeKey);
|
||||
ConditionVO nameVO = this.getMarCondVO(tranMap, marnameKey);
|
||||
ConditionVO classVO = this.getMarCondVO(tranMap, marclassKey);
|
||||
if (null == codeVO && null == nameVO && null == classVO) {
|
||||
return "";
|
||||
} else {
|
||||
StringBuilder wheresql = new StringBuilder();
|
||||
wheresql.append(btablealias + ".pk_material in ( select bd_material.pk_material from bd_material bd_material where bd_material.dr=0 ");
|
||||
if (codeVO != null) {
|
||||
wheresql.append(" and ");
|
||||
this.setMarWhere(codeVO, "bd_material.code", wheresql);
|
||||
}
|
||||
|
||||
if (nameVO != null) {
|
||||
String langseq = MultiLangUtil.getCurrentLangSeqSuffix();
|
||||
wheresql.append(" and ");
|
||||
this.setMarWhere(nameVO, "bd_material.name" + langseq, wheresql);
|
||||
}
|
||||
|
||||
if (classVO != null) {
|
||||
wheresql.append(" and ");
|
||||
this.setMarWhere(classVO, "bd_material.pk_marbasclass", wheresql);
|
||||
}
|
||||
|
||||
wheresql.append(" ) ");
|
||||
return wheresql.toString();
|
||||
}
|
||||
}
|
||||
|
||||
public ConditionVO updUFDateCondVO(ConditionVO condvo, String qryDlgWhereSql, String dateField) {
|
||||
if (!qryDlgWhereSql.contains(dateField)) {
|
||||
return null;
|
||||
} else {
|
||||
String[] conds = qryDlgWhereSql.split(dateField);
|
||||
StringBuilder valueBuilder = new StringBuilder();
|
||||
String first = conds[1].split("'")[1];
|
||||
if (condvo.getOperaCode().equalsIgnoreCase("between")) {
|
||||
if (condvo.getValue().toLowerCase().contains("isnull")) {
|
||||
if (condvo.getValue().toLowerCase().startsWith("isnull")) {
|
||||
valueBuilder.append(first);
|
||||
condvo.setOperaCode("<=");
|
||||
} else {
|
||||
valueBuilder.append(first);
|
||||
condvo.setOperaCode(">=");
|
||||
}
|
||||
|
||||
condvo.setValue(valueBuilder.toString());
|
||||
return condvo;
|
||||
}
|
||||
|
||||
String end = conds[2].split("'")[1];
|
||||
valueBuilder.append(first);
|
||||
valueBuilder.append(",");
|
||||
valueBuilder.append(end);
|
||||
} else {
|
||||
valueBuilder.append(first);
|
||||
}
|
||||
|
||||
condvo.setValue(valueBuilder.toString());
|
||||
return condvo;
|
||||
}
|
||||
}
|
||||
|
||||
private ConditionVO getMarCondVO(PurpReportTransMap tranMap, String key) {
|
||||
ConditionVO[] tempvos = tranMap.getConditionVOs(key);
|
||||
return ArrayUtil.isEmpty(tempvos) ? null : tempvos[0];
|
||||
}
|
||||
|
||||
private void setMarWhere(ConditionVO condvo, String field, StringBuilder wheresql) {
|
||||
if (condvo.getOperaCode().equals("in")) {
|
||||
wheresql.append(field + " in " + condvo.getValue());
|
||||
} else if (condvo.getOperaCode().equals("=")) {
|
||||
wheresql.append(field + " = '" + SCMESAPI.sqlEncodeGeneral(condvo.getValue()) + "' ");
|
||||
} else if (condvo.getOperaCode().equals("left like")) {
|
||||
String value = condvo.getValue().replaceAll("\\(", "").replaceAll("\\)", "");
|
||||
wheresql.append(field + " like '" + SCMESAPI.sqlEncodeGeneral(value) + "%' ");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -60,7 +60,9 @@ public class SyncBipBillRuleForDelete implements IRule<SaleInvoiceVO> {
|
|||
appKey = bipParamMap.get("appKey");
|
||||
appSecret = bipParamMap.get("appSecret");
|
||||
toBipUrl = bipParamMap.get("updateInvoice");
|
||||
NCCForUAPLogger.debug(String.format("SyncBipBillRuleForDelete-baseUrl = [%s],appKey1 = [%s],appSecret = [%s],",
|
||||
NCCForUAPLogger.debug(String.format("SyncBipBillRuleForDelete-baseUrl = [%s],appKey = [%s],appSecret = [%s],",
|
||||
baseUrl, appKey, appSecret));
|
||||
Logger.error(String.format("SyncBipBillRuleForDelete-baseUrl = [%s],appKey = [%s],appSecret = [%s],",
|
||||
baseUrl, appKey, appSecret));
|
||||
String access_token = getAccessToken();
|
||||
for (SaleInvoiceVO invoiceVO : vos) {
|
||||
|
@ -132,6 +134,7 @@ public class SyncBipBillRuleForDelete implements IRule<SaleInvoiceVO> {
|
|||
String signature = URLEncoder.encode(base64String, "UTF-8");
|
||||
params.put("signature", signature);
|
||||
String responseString = doGet(baseUrl + tokenUrl, params);
|
||||
Logger.error("SyncBipBillRuleForDelete-responseString = " + responseString);
|
||||
Gson gson = new Gson();
|
||||
Map result = gson.fromJson(responseString, Map.class);
|
||||
if (StringUtils.equals("00000", result.getOrDefault("code", "") + "")) {
|
||||
|
|
|
@ -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;
|
||||
|
@ -40,13 +40,14 @@ import java.util.List;
|
|||
*
|
||||
* @author lj
|
||||
* @date 2025/03/14
|
||||
* @update 20250415 mzr修改
|
||||
*/
|
||||
@Path("so/saleinvoice/operator")
|
||||
public class billSaveAction extends AbstractNCCRestResource {
|
||||
public class BillSaveAction extends AbstractNCCRestResource {
|
||||
|
||||
public static String fplxStr = "";// 开票申请发票类型
|
||||
|
||||
public billSaveAction() {
|
||||
public BillSaveAction() {
|
||||
|
||||
}
|
||||
|
||||
|
@ -84,13 +85,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 +111,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 +146,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,17 +155,25 @@ 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 newSaleInvoiceHVO = new SaleInvoiceHVO(); // 新主实体
|
||||
// 发票主实体
|
||||
SaleInvoiceHVO saleInvoiceHVO = originalVO.getParentVO();
|
||||
// 发票子实体数组
|
||||
SaleInvoiceBVO[] saleInvoiceBVOs = originalVO.getChildrenVO();
|
||||
// 发票新主实体
|
||||
SaleInvoiceHVO newSaleInvoiceHVO = new SaleInvoiceHVO();
|
||||
|
||||
// 单据日期
|
||||
UFDate dbilldate = new UFDate(bject.getString("dbilldate"));
|
||||
// 制单日期
|
||||
UFDate dmakedate = new UFDate(bject.getString("creationtime"));
|
||||
|
||||
// 子实体属性赋值
|
||||
UFDouble sumNum = new UFDouble(); // 合计数量
|
||||
|
@ -172,48 +182,48 @@ 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> newBvoArr = bvoList.stream().filter(item -> {
|
||||
String parCsaleinvoicebid = item.getString("vbdef15") + ""; // 子表id
|
||||
return csaleinvoicebid.equals(parCsaleinvoicebid);
|
||||
}).toList();
|
||||
if (newParamsSaleInvoiceBVOs.size() <= 0) {
|
||||
if (newBvoArr.size() <= 0) {
|
||||
continue;
|
||||
}
|
||||
JSONObject paramSaleInvoiceBVO = newParamsSaleInvoiceBVOs.get(0); // 参数子表
|
||||
SaleInvoiceBVO newSaleInvoiceBVO = new SaleInvoiceBVO();
|
||||
// BeanUtil.copyProperties(saleInvoiceBVO,newSaleInvoiceBVO);
|
||||
JSONObject bipBvoJson = newBvoArr.get(0); // 参数子表
|
||||
SaleInvoiceBVO newInvBVO = new SaleInvoiceBVO();
|
||||
// 克隆取值原子表销售发票
|
||||
newSaleInvoiceBVO = (SaleInvoiceBVO) CloneUtil.depthClone(saleInvoiceBVO);
|
||||
newInvBVO = (SaleInvoiceBVO) CloneUtil.depthClone(saleInvoiceBVO);
|
||||
// 赋值之后修改子实体红冲时字段
|
||||
newSaleInvoiceBVO.setCsaleinvoicebid(null); // 发票子实体id
|
||||
newSaleInvoiceBVO.setDbilldate(newSaleInvoiceHVO.getDbilldate()); // 开票日期
|
||||
newSaleInvoiceBVO.setNastnum(new UFDouble(paramSaleInvoiceBVO.getString("nastnum"))); // 数量
|
||||
newSaleInvoiceBVO.setNnum(new UFDouble(paramSaleInvoiceBVO.getString("nnum"))); // 主数量
|
||||
newSaleInvoiceBVO.setNtax(new UFDouble(paramSaleInvoiceBVO.getString("ntax"))); // 税额
|
||||
newSaleInvoiceBVO.setNmny(new UFDouble(paramSaleInvoiceBVO.getString("nmny"))); // 本币无税金额
|
||||
newSaleInvoiceBVO.setNtaxmny(new UFDouble(paramSaleInvoiceBVO.getString("ntaxmny"))); // 本币价税合计
|
||||
newSaleInvoiceBVO.setNcaltaxmny(new UFDouble(paramSaleInvoiceBVO.getString("ncaltaxmny"))); // 计税金额
|
||||
newSaleInvoiceBVO.setNorigmny(new UFDouble(paramSaleInvoiceBVO.getString("norigmny"))); // 无税金额
|
||||
newSaleInvoiceBVO.setNorigtaxmny(new UFDouble(paramSaleInvoiceBVO.getString("norigtaxmny"))); // 价税合计
|
||||
newSaleInvoiceBVO.setCopposesrcbid(paramSaleInvoiceBVO.getString("csaleinvoicebid")); // 对冲来源子表id
|
||||
newSaleInvoiceBVO.setNqtunitnum(null); // 报价数量
|
||||
newSaleInvoiceBVO.setCsaleinvoiceid(null); // 发票关联主表id
|
||||
newSaleInvoiceBVO.setNtotalcostnum(null); // 累计成本结算数量
|
||||
newSaleInvoiceBVO.setNtotalincomemny(null); // 累计确认应收金额
|
||||
newSaleInvoiceBVO.setNtotalincomenum(null); // 累计确认应收数量
|
||||
newSaleInvoiceBVO.setVchangerate("1.00/1.00"); // 换算率
|
||||
newSaleInvoiceBVOs[i++] = newSaleInvoiceBVO;
|
||||
sumNum = sumNum.add(new UFDouble(paramSaleInvoiceBVO.getString("nnum")));
|
||||
sumNtax = sumNtax.add(new UFDouble(paramSaleInvoiceBVO.getString("ntax")));
|
||||
sumNcaltaxmny = sumNcaltaxmny.add(new UFDouble(paramSaleInvoiceBVO.getString("ncaltaxmny")));
|
||||
sumNorigmny = sumNorigmny.add(new UFDouble(paramSaleInvoiceBVO.getString("norigmny")));
|
||||
sumNorigtaxmny = sumNorigtaxmny.add(new UFDouble(paramSaleInvoiceBVO.getString("norigtaxmny")));
|
||||
newInvBVO.setCsaleinvoicebid(null); // 发票子实体id
|
||||
newInvBVO.setDbilldate(dbilldate); // 开票日期
|
||||
newInvBVO.setNastnum(new UFDouble(bipBvoJson.getString("nastnum"))); // 数量
|
||||
newInvBVO.setNnum(new UFDouble(bipBvoJson.getString("nnum"))); // 主数量
|
||||
newInvBVO.setNtax(new UFDouble(bipBvoJson.getString("ntax"))); // 税额
|
||||
newInvBVO.setNmny(new UFDouble(bipBvoJson.getString("nmny"))); // 本币无税金额
|
||||
newInvBVO.setNtaxmny(new UFDouble(bipBvoJson.getString("ntaxmny"))); // 本币价税合计
|
||||
newInvBVO.setNcaltaxmny(new UFDouble(bipBvoJson.getString("ncaltaxmny"))); // 计税金额
|
||||
newInvBVO.setNorigmny(new UFDouble(bipBvoJson.getString("norigmny"))); // 无税金额
|
||||
newInvBVO.setNorigtaxmny(new UFDouble(bipBvoJson.getString("norigtaxmny"))); // 价税合计
|
||||
newInvBVO.setCopposesrcbid(bipBvoJson.getString("vbdef15")); // 对冲来源子表id
|
||||
newInvBVO.setNqtunitnum(null); // 报价数量
|
||||
newInvBVO.setCsaleinvoiceid(null); // 发票关联主表id
|
||||
newInvBVO.setNtotalcostnum(null); // 累计成本结算数量
|
||||
newInvBVO.setNtotalincomemny(null); // 累计确认应收金额
|
||||
newInvBVO.setNtotalincomenum(null); // 累计确认应收数量
|
||||
newInvBVO.setVchangerate("1.00/1.00"); // 换算率
|
||||
newSaleInvoiceBVOs[i++] = newInvBVO;
|
||||
sumNum = sumNum.add(new UFDouble(bipBvoJson.getString("nnum")));
|
||||
sumNtax = sumNtax.add(new UFDouble(bipBvoJson.getString("ntax")));
|
||||
sumNcaltaxmny = sumNcaltaxmny.add(new UFDouble(bipBvoJson.getString("ncaltaxmny")));
|
||||
sumNorigmny = sumNorigmny.add(new UFDouble(bipBvoJson.getString("norigmny")));
|
||||
sumNorigtaxmny = sumNorigtaxmny.add(new UFDouble(bipBvoJson.getString("norigtaxmny")));
|
||||
}
|
||||
|
||||
// 克隆取值原子表销售发票
|
||||
|
@ -221,8 +231,8 @@ public class billSaveAction extends AbstractNCCRestResource {
|
|||
// 赋值之后修改主实体红冲时字段
|
||||
newSaleInvoiceHVO.setCsaleinvoiceid(null); // 发票主实体id
|
||||
newSaleInvoiceHVO.setVbillcode(null); // 发票号
|
||||
newSaleInvoiceHVO.setDbilldate(new UFDate()); // 开票日期
|
||||
newSaleInvoiceHVO.setDmakedate(new UFDate()); // 制单日期
|
||||
newSaleInvoiceHVO.setDbilldate(dbilldate); // 开票日期
|
||||
newSaleInvoiceHVO.setDmakedate(dmakedate); // 制单日期
|
||||
newSaleInvoiceHVO.setBsubunitflag(UFBoolean.TRUE); // 冲抵标记
|
||||
newSaleInvoiceHVO.setFopposeflag(2); // 对冲标记 (2:对冲生成)
|
||||
newSaleInvoiceHVO.setFstatusflag(1); // 单据状态 (1:自由态)
|
||||
|
@ -246,16 +256,16 @@ 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();
|
||||
IVApplicationAggVO applicationAggVO = new IVApplicationAggVO();
|
||||
IVApplicationHeadVO newivApplicationHeadVO = new IVApplicationHeadVO(); // 新主实体
|
||||
|
||||
// 取新生成红冲发票的主实体数据
|
||||
|
@ -266,13 +276,12 @@ public class billSaveAction extends AbstractNCCRestResource {
|
|||
SaleInvoiceHVO rpSaleInvoiceHVO = rpSaleInvoiceVOs[0].getParentVO();
|
||||
|
||||
// 主实体属性赋值
|
||||
// BeanUtil.copyProperties(ivApplicationHeadVO,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,20 +293,21 @@ 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> newBvoArr = bvoList.stream().filter(item -> {
|
||||
String parCsaleinvoicebid = item.getString("vbdef15") + ""; // 子表id
|
||||
return src_pkdetail.equals(parCsaleinvoicebid);
|
||||
}).toList();
|
||||
if (newParamsSaleInvoiceBVOs.size() <= 0) {
|
||||
if (newBvoArr.size() <= 0) {
|
||||
continue;
|
||||
}
|
||||
JSONObject paramSaleInvoiceBVO = newParamsSaleInvoiceBVOs.get(0); // 参数子表
|
||||
JSONObject bipBvoJson = newBvoArr.get(0); // 参数子表
|
||||
IVApplicationBodyVO newivApplicationBodyVO = new IVApplicationBodyVO();
|
||||
// BeanUtil.copyProperties(ivApplicationBodyVO,newivApplicationBodyVO, CopyOptions.create().setIgnoreNullValue(true));
|
||||
// 克隆取值原子表开票申请
|
||||
|
@ -305,22 +315,23 @@ 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")).multiply(new UFDouble(-1))); // 本次红冲金额 = 本次参数红冲金额
|
||||
newivApplicationBodyVO.setSe(new UFDouble(bipBvoJson.getString("ntax"))); // 税额
|
||||
newivApplicationBodyVO.setXmsl(new UFDouble(bipBvoJson.getString("nnum"))); // 数量
|
||||
newivApplicationBodyVO.setXmje(new UFDouble(bipBvoJson.getString("norigmny"))); // 金额
|
||||
newivApplicationBodyVO.setXmjshj(new UFDouble(bipBvoJson.getString("norigtaxmny"))); // 价税合计
|
||||
// 本次红冲金额 = 本次参数红冲金额
|
||||
newivApplicationBodyVO.setBchcje(new UFDouble(bipBvoJson.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")).multiply(new UFDouble(-1)));
|
||||
sumSe = sumSe.add(new UFDouble(bipBvoJson.getString("ntax")));
|
||||
sumXmsl = sumXmsl.add(new UFDouble(bipBvoJson.getString("nnum")));
|
||||
sumXmje = sumXmje.add(new UFDouble(bipBvoJson.getString("norigmny")));
|
||||
sumXmjshj = sumXmjshj.add(new UFDouble(bipBvoJson.getString("norigtaxmny")));
|
||||
sumBchcje = sumBchcje.add(new UFDouble(bipBvoJson.getString("norigtaxmny")).multiply(new UFDouble(-1)));
|
||||
}
|
||||
// 赋值之后修改主实体红冲时字段
|
||||
newivApplicationHeadVO.setPk_ivapplication(null); // 开票申请单主实体id
|
||||
newivApplicationHeadVO.setBillno(null); // 单据号
|
||||
newivApplicationHeadVO.setPreparedate(new UFDate()); // 单据日期
|
||||
newivApplicationHeadVO.setPreparedate(new UFDate(bject.getString("dbilldate"))); // 单据日期
|
||||
newivApplicationHeadVO.setJshj(sumXmjshj); // 价税合计
|
||||
newivApplicationHeadVO.setHjje(sumXmje); // 合计金额
|
||||
newivApplicationHeadVO.setHjse(sumSe); // 合计税额
|
||||
|
@ -334,9 +345,9 @@ public class billSaveAction extends AbstractNCCRestResource {
|
|||
newivApplicationHeadVO.setHcyy("2"); // 红冲原因:2(开票有误)
|
||||
|
||||
// 组装VO
|
||||
ivApplicationAggVO.setParentVO(newivApplicationHeadVO);
|
||||
ivApplicationAggVO.setChildrenVO(newivApplicationBodyVOS);
|
||||
return ivApplicationAggVO;
|
||||
applicationAggVO.setParentVO(newivApplicationHeadVO);
|
||||
applicationAggVO.setChildrenVO(newivApplicationBodyVOS);
|
||||
return applicationAggVO;
|
||||
} catch (Exception e) {
|
||||
throw new BusinessException(e.getMessage());
|
||||
}
|
|
@ -195,10 +195,13 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
|
|||
mapInit(original);
|
||||
|
||||
AggBomVO agg = aggInit(paramMap);
|
||||
//2025年4月11日14点35分 --重新赋值上制单人创建人 --start
|
||||
//2025年4月11日14点35分 --重新赋值上制单人创建人+默认 --start
|
||||
agg.getParentVO().setAttributeValue("billmaker", original.getParent().getAttributeValue("billmaker"));
|
||||
agg.getParentVO().setAttributeValue("creator", original.getParent().getAttributeValue("creator"));
|
||||
//2025年4月11日14点35分 --重新赋值上制单人创建人 --end
|
||||
if(bom.get("hbdefault")==null){
|
||||
agg.getParentVO().setAttributeValue("hbdefault", original.getParent().getAttributeValue("hbdefault"));
|
||||
}
|
||||
//2025年4月11日14点35分 --重新赋值上制单人创建人+默认 --end
|
||||
JSONString checkInfo = requiredCheck(agg);
|
||||
if (checkInfo != null) {
|
||||
return checkInfo;
|
||||
|
@ -645,7 +648,7 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
|
|||
if (VersionTypeEnum.AVAILABLE.equalsValue(head.getHfversiontype())
|
||||
&& !head.getCbomid().equals(headvo.getCbomid())) {
|
||||
//sdlizheng --添加独立判断--plm三方越过此校验
|
||||
if ("plm".equals(userCode)) {
|
||||
if ("plm".equals(userCode)||"dlkght".equals(userCode)) {
|
||||
// AggBomVO afterVO = service.canceldefault(aggBomVO);
|
||||
} else {
|
||||
return UFBoolean.TRUE;
|
||||
|
@ -699,7 +702,7 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
|
|||
agg.getParent().setAttributeValue("fbillstatus", Integer.valueOf(-1));
|
||||
agg.getParent().setAttributeValue("hfbomsource", Integer.valueOf(1));
|
||||
agg.getParent().setAttributeValue("hfbomcategory", Integer.valueOf(1));
|
||||
if ("plm".equals(userCode)) {
|
||||
if ("plm".equals(userCode)||"dlkght".equals(userCode)) {
|
||||
//sdlizheng 1、对于之前不存在的BOM,新增时:如果是传自由态,不默认且无效,走标准逻辑,如果传的是审批态默认且有效。2025年4月11日16点28分 start
|
||||
if (fbillstatus != null && "1".equals(fbillstatus.toString())) {
|
||||
agg.getParent().setAttributeValue("hfversiontype", Integer.valueOf(1));
|
||||
|
|
Loading…
Reference in New Issue