|
@@ -0,0 +1,514 @@
|
|
|
+package nc.bs.arap.impl;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.PrintWriter;
|
|
|
+import java.io.StringWriter;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+import javax.servlet.ServletException;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+
|
|
|
+import nc.bs.arap.plugin.GetDataUtil;
|
|
|
+import nc.bs.framework.adaptor.IHttpServletAdaptor;
|
|
|
+import nc.bs.framework.common.InvocationInfoProxy;
|
|
|
+import nc.bs.framework.common.NCLocator;
|
|
|
+import nc.bs.framework.server.ISecurityTokenCallback;
|
|
|
+import nc.bs.servlet.service.BaseServlet;
|
|
|
+import nc.itf.uap.pf.IPFBusiAction;
|
|
|
+import nc.log.NcLog;
|
|
|
+import nc.vo.arap.payable.AggPayableBillVO;
|
|
|
+import nc.vo.arap.payable.PayableBillItemVO;
|
|
|
+import nc.vo.arap.payable.PayableBillVO;
|
|
|
+import nc.vo.org.FinanceOrgVO;
|
|
|
+import nc.vo.pu.m25.entity.InvoiceItemVO;
|
|
|
+import nc.vo.pub.lang.UFBoolean;
|
|
|
+import nc.vo.pub.lang.UFDate;
|
|
|
+import nc.vo.pub.lang.UFDateTime;
|
|
|
+import nc.vo.pub.lang.UFDouble;
|
|
|
+import nc.vo.pub.workflownote.WorkflownoteVO;
|
|
|
+
|
|
|
+public class PayableBillImpl extends BaseServlet implements IHttpServletAdaptor{
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void doAction(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
|
|
+ String billno = "";
|
|
|
+ try {
|
|
|
+ NCLocator.getInstance().lookup(ISecurityTokenCallback.class).token("NCSystem".getBytes(),"pfxx".getBytes());
|
|
|
+ String createStr = buildJson(req, resp, this.getClass().getName());
|
|
|
+ JSONObject json = JSON.parseObject(createStr);
|
|
|
+ NcLog.info(json.toString());
|
|
|
+ billno = json.getString("billno");
|
|
|
+ InvocationInfoProxy.getInstance().setUserDataSource("NC6337");
|
|
|
+ GetDataUtil.getBillno(billno);
|
|
|
+ checkJson(json);
|
|
|
+ AggPayableBillVO aggPayableBillVO = new AggPayableBillVO ();
|
|
|
+ PayableBillVO payableBillVO = new PayableBillVO();
|
|
|
+ String userPK = GetDataUtil.getUserPK(json.getString("billmaker"));
|
|
|
+ String pk_group = GetDataUtil.getGroupPK(json.getString("pk_group"));
|
|
|
+
|
|
|
+ InvocationInfoProxy.getInstance().setUserId(userPK);//用户主键
|
|
|
+ InvocationInfoProxy.getInstance().setGroupId(pk_group);//指定集团pk
|
|
|
+ //集团
|
|
|
+ payableBillVO.setPk_group(pk_group);
|
|
|
+ String pk_tradetype = json.getString("pk_tradetype");
|
|
|
+ //应付单类型编码
|
|
|
+ payableBillVO.setPk_tradetype(pk_tradetype);
|
|
|
+ String pk_billtypeid = GetDataUtil.getBilltypePK(pk_tradetype,pk_group);
|
|
|
+ //应付类型
|
|
|
+ payableBillVO.setPk_tradetypeid(pk_billtypeid);
|
|
|
+ FinanceOrgVO financeOrgVO = GetDataUtil.getFinanceOrgVO(json.getString("pk_org"));
|
|
|
+ //财务组织
|
|
|
+ payableBillVO.setPk_fiorg(financeOrgVO.getPk_financeorg());
|
|
|
+ //废弃财务组织版本
|
|
|
+ payableBillVO.setPk_fiorg_v(financeOrgVO.getPk_vid());
|
|
|
+ //应付财务组织
|
|
|
+ payableBillVO.setPk_org(financeOrgVO.getPk_financeorg());
|
|
|
+ //应付财务组织版本
|
|
|
+ payableBillVO.setPk_org_v(financeOrgVO.getPk_vid());
|
|
|
+ //结算财务组织
|
|
|
+ payableBillVO.setSett_org(financeOrgVO.getPk_financeorg());
|
|
|
+ //结算财务组织版本
|
|
|
+ payableBillVO.setSett_org_v(financeOrgVO.getPk_vid());
|
|
|
+ //业务组织
|
|
|
+ payableBillVO.setPu_org(financeOrgVO.getPk_financeorg());
|
|
|
+ //业务组织版本
|
|
|
+ payableBillVO.setPu_org_v(financeOrgVO.getPk_vid());
|
|
|
+ //单据号
|
|
|
+ payableBillVO.setBillno(json.getString("billno"));
|
|
|
+ //单据日期
|
|
|
+ payableBillVO.setBilldate(new UFDate(json.getString("billdate")));
|
|
|
+ if("F1-0xx-01".equals(pk_tradetype)) {
|
|
|
+ //起算日期
|
|
|
+ payableBillVO.setBusidate(new UFDate(json.getString("busidate")));
|
|
|
+ }else {
|
|
|
+ //起算日期
|
|
|
+ payableBillVO.setBusidate(new UFDate(json.getString("billdate")));
|
|
|
+ }
|
|
|
+
|
|
|
+ //制单人
|
|
|
+ payableBillVO.setBillmaker(userPK);
|
|
|
+ //创建人
|
|
|
+ payableBillVO.setCreator(userPK);
|
|
|
+ //创建时间
|
|
|
+ payableBillVO.setCreationtime(new UFDateTime(json.getString("billdate")));
|
|
|
+ String pk_dept = GetDataUtil.getDeptPK(json.getString("pk_deptid"));
|
|
|
+ //费用使用部门
|
|
|
+ payableBillVO.setPk_deptid(pk_dept);
|
|
|
+ //业务部门
|
|
|
+ payableBillVO.setPu_deptid(pk_dept);
|
|
|
+ String pk_vid = GetDataUtil.getDeptVPK(json.getString("pk_deptid_v"));
|
|
|
+ if(pk_vid == null) {
|
|
|
+ pk_vid = GetDataUtil.getDeptVPK(json.getString("pk_deptid"));
|
|
|
+ }
|
|
|
+ //部门版本信息
|
|
|
+ payableBillVO.setPk_deptid_v(pk_vid);
|
|
|
+ //业务部门版本
|
|
|
+ payableBillVO.setPu_deptid_v(pk_vid);
|
|
|
+
|
|
|
+ //对方单位名称
|
|
|
+ payableBillVO.setSupplier(GetDataUtil.getSupplierPK(json.getString("supplier")));
|
|
|
+ //组织本币金额
|
|
|
+ payableBillVO.setLocal_money(new UFDouble(json.getString("local_money")));
|
|
|
+ //原币金额
|
|
|
+ payableBillVO.setMoney(new UFDouble(json.getString("local_money")));
|
|
|
+ String recaccount = GetDataUtil.getBankaccsubPK(json.getString("recaccount"));
|
|
|
+ //对方单位银行账户
|
|
|
+ payableBillVO.setRecaccount(recaccount);
|
|
|
+ //发票张数
|
|
|
+ payableBillVO.setAccessorynum(Integer.parseInt(json.getString("accessorynum")));
|
|
|
+ //业务流程
|
|
|
+ payableBillVO.setPk_busitype(GetDataUtil.getBusitypePK(json.getString("pk_busitype")));
|
|
|
+ //单据会计年度
|
|
|
+ payableBillVO.setBillyear(json.getString("billyear"));
|
|
|
+ //单据会计期间
|
|
|
+ payableBillVO.setBillperiod(json.getString("billperiod"));
|
|
|
+ String payaccount = GetDataUtil.getBankaccsubPK(json.getString("payaccount"));
|
|
|
+ //付款银行账户
|
|
|
+ payableBillVO.setPayaccount(payaccount);
|
|
|
+ String pk_currtype = GetDataUtil.getCurrtypePK(json.getString("pk_currtype"));
|
|
|
+ //币种
|
|
|
+ payableBillVO.setPk_currtype(pk_currtype);
|
|
|
+ String pk_psndoc = GetDataUtil.getPsndocPK(json.getString("pk_psndoc"));
|
|
|
+ //业务员
|
|
|
+ payableBillVO.setPk_psndoc(pk_psndoc);
|
|
|
+ //业务人员
|
|
|
+ payableBillVO.setPu_psndoc(pk_psndoc);
|
|
|
+ //单据来源系统 默认来源采购系统
|
|
|
+ payableBillVO.setSrc_syscode(Integer.parseInt(json.getString("src_syscode")));
|
|
|
+
|
|
|
+ //是否打印备注
|
|
|
+ payableBillVO.setDef1(GetDataUtil.getDefdocPK(json.getString("def1"), "19", "是否打印备注"));
|
|
|
+ //建议付款日期
|
|
|
+ payableBillVO.setDef3(json.getString("def3"));
|
|
|
+ //组长审批
|
|
|
+ payableBillVO.setDef4(GetDataUtil.getPsndocPK(json.getString("def4")));
|
|
|
+ //费用承担部门
|
|
|
+ payableBillVO.setDef5(GetDataUtil.getDeptPK(json.getString("def5")));
|
|
|
+ //分包类型
|
|
|
+ payableBillVO.setDef10(GetDataUtil.getDefdocPK(json.getString("def10"), "13", "分包类型"));
|
|
|
+ //员工编号
|
|
|
+ payableBillVO.setDef13(json.getString("def13"));
|
|
|
+ //来源单号
|
|
|
+ payableBillVO.setDef15(json.getString("15"));
|
|
|
+ //预算所在部门
|
|
|
+ payableBillVO.setDef20(GetDataUtil.getDeptPK(json.getString("def20")));
|
|
|
+ //应付单非项目——是否公司费用
|
|
|
+ //预付核销非项目——待核销的预付单号
|
|
|
+ //是否公司费用
|
|
|
+ payableBillVO.setDef21(json.getString("def21"));
|
|
|
+ //对方单位开户行
|
|
|
+ payableBillVO.setDef25(json.getString("def25"));
|
|
|
+ //是否一致
|
|
|
+ payableBillVO.setDef33(json.getString("def33"));
|
|
|
+ //单据类型编码
|
|
|
+ payableBillVO.setPk_billtype("F1");
|
|
|
+ //单据大类
|
|
|
+ payableBillVO.setBillclass("yf");
|
|
|
+ //国家地区 默认CN
|
|
|
+ String pk_country = GetDataUtil.getCountryzonePK("CN");
|
|
|
+ payableBillVO.setRececountryid(pk_country);
|
|
|
+ //报税国 默认CN
|
|
|
+ payableBillVO.setTaxcountryid(pk_country);
|
|
|
+ //单据所属系统 默认所属应付系统
|
|
|
+ payableBillVO.setSyscode(1);
|
|
|
+ //结算方式 取表体第一行赋给表头
|
|
|
+ payableBillVO.setPk_balatype(GetDataUtil.getBalatypePK(json.getJSONArray("childrenVO").getJSONObject(0).getString("pk_balatype")));
|
|
|
+ //往来对象 取表体第一行赋给表头
|
|
|
+ payableBillVO.setObjtype(Integer.parseInt(json.getJSONArray("childrenVO").getJSONObject(0).getString("pk_balatype")));
|
|
|
+ payableBillVO.setBillstatus(-1);
|
|
|
+ payableBillVO.setStatus(2);
|
|
|
+ //是否红冲过
|
|
|
+ payableBillVO.setIsreded(UFBoolean.FALSE);
|
|
|
+ //是否流程单据
|
|
|
+ payableBillVO.setIsflowbill(UFBoolean.FALSE);
|
|
|
+ aggPayableBillVO.setParentVO(payableBillVO);
|
|
|
+ List<PayableBillItemVO> listPayableBillItemVO = new ArrayList<PayableBillItemVO>();
|
|
|
+ JSONArray josns = json.getJSONArray("childrenVO");
|
|
|
+ for (int i = 0; i < josns.size(); i++) {
|
|
|
+ PayableBillItemVO payableBillItemVO = new PayableBillItemVO();
|
|
|
+ JSONObject item = josns.getJSONObject(i);
|
|
|
+ //预算编号
|
|
|
+ payableBillItemVO.setDef1(item.getString("pk_subjcode"));
|
|
|
+ //预算名称
|
|
|
+ payableBillItemVO.setPk_subjcode(GetDataUtil.getInoutbusiclassPK(item.getString("pk_subjcode")));
|
|
|
+ /**
|
|
|
+ * 应付单非项目——备注
|
|
|
+ 应付单项目——备注
|
|
|
+ 预付核销非项目——备注
|
|
|
+ 预付核销项目——备注
|
|
|
+
|
|
|
+ */
|
|
|
+ //备注
|
|
|
+ payableBillItemVO.setDef2(item.getString("def2"));
|
|
|
+ //票据/保理申请编号
|
|
|
+ payableBillItemVO.setDef5(item.getString("def5"));
|
|
|
+ //专业
|
|
|
+ payableBillItemVO.setDef6(GetDataUtil.getDefdocPK(item.getString("def6"), "HR016", "专业"));
|
|
|
+ //费用事项
|
|
|
+ payableBillItemVO.setDef7(GetDataUtil.getDefdocPK(item.getString("def7"), "88", "费用事项"));
|
|
|
+ /**
|
|
|
+ * 内部应付单——备注
|
|
|
+ */
|
|
|
+ //备注
|
|
|
+ payableBillItemVO.setDef10(item.getString("def10"));
|
|
|
+ //发票号
|
|
|
+ payableBillItemVO.setDef12(item.getString("def12"));
|
|
|
+ //应付单非项目def13参照的自定义档案
|
|
|
+ //预付核销非项目def参照的客户基础档案
|
|
|
+
|
|
|
+ if("F1-Cxx-04".equals(pk_tradetype)) {
|
|
|
+ //客户
|
|
|
+ payableBillItemVO.setDef13(GetDataUtil.getCustomerPK(item.getString("def13")));
|
|
|
+ }else {
|
|
|
+ //客户
|
|
|
+ payableBillItemVO.setDef13(GetDataUtil.getDefdocPK(item.getString("def13"), "CUST", "客户"));
|
|
|
+ }
|
|
|
+
|
|
|
+ //经营合同名称
|
|
|
+ payableBillItemVO.setDef15(GetDataUtil.getDefdocPK(item.getString("def15"), "01", "分包合同"));
|
|
|
+ //原发票日期
|
|
|
+ payableBillItemVO.setDef17(item.getString("def17"));
|
|
|
+ //项目名称
|
|
|
+ payableBillItemVO.setProject(GetDataUtil.getprojectPK(item.getString("project")));
|
|
|
+ //项目编码
|
|
|
+ payableBillItemVO.setDef18(item.getString("project"));
|
|
|
+ //分包合同名称
|
|
|
+ payableBillItemVO.setDef20(GetDataUtil.getDefdocPK(item.getString("def20"), "01", "分包合同"));
|
|
|
+ //汇款附言
|
|
|
+ payableBillItemVO.setDef21(item.getString("def21"));
|
|
|
+ /**
|
|
|
+ * 应付单非项目——客户层级
|
|
|
+ * 应付单项目——成本归属部门
|
|
|
+ 预付核销非项目——客户层级
|
|
|
+ 预付核销项目——成本归属部门
|
|
|
+
|
|
|
+ */
|
|
|
+ if("F1-Cxx-02".equals(pk_tradetype) || "F1-Cxx-05".equals(pk_tradetype) || "F1-Cxx-03".equals(pk_tradetype)) {
|
|
|
+ //成本归属部门
|
|
|
+ payableBillItemVO.setDef22(GetDataUtil.getDeptPK(item.getString("def22")));
|
|
|
+
|
|
|
+ }else {
|
|
|
+ //客户层级
|
|
|
+ payableBillItemVO.setDef22(item.getString("def22"));
|
|
|
+ }
|
|
|
+
|
|
|
+ //应付单非项目使用的自定义23 成本归属部门
|
|
|
+ payableBillItemVO.setDef23(GetDataUtil.getDeptPK(item.getString("def23")));
|
|
|
+ //摘要
|
|
|
+ payableBillItemVO.setDef25(GetDataUtil.getDefdocPK(item.getString("def25"), "999", "摘要"));
|
|
|
+ /**
|
|
|
+ * 应付单非项目——民航发展基金
|
|
|
+ 应付单项目——民航发展基金
|
|
|
+ 预付核销非项目——民航发展基金
|
|
|
+ 预付核销项目——民航发展基金
|
|
|
+ 内部应付单——付款业务性质
|
|
|
+ */
|
|
|
+ if("F1-0xx-01".equals(pk_tradetype)) {
|
|
|
+ //付款业务性质
|
|
|
+ payableBillItemVO.setDef29(GetDataUtil.getDefdocPK(item.getString("def29"), "YS001", "付款业务性质"));
|
|
|
+ }else {
|
|
|
+ //民航发展基金
|
|
|
+ payableBillItemVO.setDef29(item.getString("def29"));
|
|
|
+ }
|
|
|
+
|
|
|
+ //费用归属
|
|
|
+ payableBillItemVO.setDef30(GetDataUtil.getDefdocPK(item.getString("def30"), "05", "费用归属"));
|
|
|
+ //人员
|
|
|
+ payableBillItemVO.setDef40(GetDataUtil.getPsndocPK(item.getString("def40")));
|
|
|
+ //发票查看
|
|
|
+ payableBillItemVO.setDef41(item.getString("def41"));
|
|
|
+ //物料
|
|
|
+ payableBillItemVO.setMaterial(GetDataUtil.getMaterialPK(item.getString("material")));
|
|
|
+ //贷方数量
|
|
|
+ payableBillItemVO.setQuantity_cr("".equals(item.getString("quantity_cr")) ? null : new UFDouble(item.getString("quantity_cr")));
|
|
|
+ //数量余额
|
|
|
+ payableBillItemVO.setQuantity_bal("".equals(item.getString("quantity_cr")) ? null : new UFDouble(item.getString("quantity_cr")));
|
|
|
+ //结算方式
|
|
|
+ payableBillItemVO.setPk_balatype(GetDataUtil.getBalatypePK(item.getString("pk_balatype")));
|
|
|
+ //税码
|
|
|
+ payableBillItemVO.setTaxcodeid(GetDataUtil.getTaxcodePK(item.getString("taxcodeid")));
|
|
|
+ //税率
|
|
|
+ payableBillItemVO.setTaxrate(new UFDouble(item.getString("taxrate")));
|
|
|
+ //单价
|
|
|
+ payableBillItemVO.setPrice("".equals(item.getString("price")) ? null : new UFDouble(item.getString("price")));
|
|
|
+ //本币单价
|
|
|
+ payableBillItemVO.setLocal_price("".equals(item.getString("price")) ? null : new UFDouble(item.getString("price")));
|
|
|
+ //含税单价
|
|
|
+ payableBillItemVO.setTaxprice("".equals(item.getString("taxprice")) ? null : new UFDouble(item.getString("taxprice")));
|
|
|
+ //本币含税单价
|
|
|
+ payableBillItemVO.setLocal_taxprice("".equals(item.getString("taxprice")) ? null : new UFDouble(item.getString("taxprice")));
|
|
|
+ //组织本币无税金额
|
|
|
+ payableBillItemVO.setLocal_notax_cr(new UFDouble(item.getString("local_notax_cr")));
|
|
|
+ //贷方原币无税金额
|
|
|
+ payableBillItemVO.setNotax_cr(new UFDouble(item.getString("local_notax_cr")));
|
|
|
+ //计税金额
|
|
|
+ payableBillItemVO.setCaltaxmny(new UFDouble(item.getString("local_notax_cr")));
|
|
|
+ //税额
|
|
|
+ payableBillItemVO.setLocal_tax_cr(new UFDouble(item.getString("local_tax_cr")));
|
|
|
+ //组织本币余额
|
|
|
+ payableBillItemVO.setLocal_money_bal(new UFDouble(item.getString("local_money_cr")));
|
|
|
+ //预占用原币余额
|
|
|
+ payableBillItemVO.setOccupationmny(new UFDouble(item.getString("local_money_cr")));
|
|
|
+ //原币余额
|
|
|
+ payableBillItemVO.setMoney_bal(new UFDouble(item.getString("local_money_cr")));
|
|
|
+ //贷方原币金额
|
|
|
+ payableBillItemVO.setMoney_cr(new UFDouble(item.getString("local_money_cr")));
|
|
|
+ //组织本币金额
|
|
|
+ payableBillItemVO.setLocal_money_cr(new UFDouble(item.getString("local_money_cr")));
|
|
|
+ //往来对象
|
|
|
+ payableBillItemVO.setObjtype(Integer.parseInt(item.getString("objtype")));
|
|
|
+ //对方单位名称
|
|
|
+ payableBillItemVO.setSupplier(GetDataUtil.getSupplierPK(item.getString("supplier")));
|
|
|
+ //付款部门
|
|
|
+ payableBillItemVO.setPk_deptid("".equals(item.getString("pk_deptid")) ? pk_dept : GetDataUtil.getDeptPK(item.getString("pk_deptid")));
|
|
|
+ //部门版本
|
|
|
+ payableBillItemVO.setPk_deptid_v(pk_vid);
|
|
|
+ //行号
|
|
|
+ payableBillItemVO.setRowno(Integer.parseInt(item.getString("rowno")));
|
|
|
+ //发票号
|
|
|
+ String invoiceno = item.getString("invoiceno");
|
|
|
+ InvoiceItemVO invoiceItemVO = GetDataUtil.getInvoice(invoiceno, item.getString("invoicenorowno"));
|
|
|
+ //上层单据主键
|
|
|
+ payableBillItemVO.setTop_billid("".equals(invoiceno) ? null : invoiceItemVO.getPk_invoice());
|
|
|
+ //上层单据类型
|
|
|
+ payableBillItemVO.setTop_billtype(item.getString("top_billtype"));
|
|
|
+ //上层单据行主键
|
|
|
+ payableBillItemVO.setTop_itemid("".equals(invoiceno) ? null : invoiceItemVO.getPk_invoice_b());
|
|
|
+ //上层交易类型
|
|
|
+ payableBillItemVO.setTop_tradetype(item.getString("top_tradetype"));
|
|
|
+ //购销类型
|
|
|
+ payableBillItemVO.setBuysellflag(Integer.parseInt(item.getString("buysellflag")));
|
|
|
+ //扣税类别
|
|
|
+ payableBillItemVO.setTaxtype(Integer.parseInt(item.getString("taxtype")));
|
|
|
+ //是否逆向征税
|
|
|
+ payableBillItemVO.setOpptaxflag(UFBoolean.FALSE);
|
|
|
+ //单据大类
|
|
|
+ payableBillItemVO.setBillclass("yf");
|
|
|
+ //单据日期
|
|
|
+ payableBillItemVO.setBilldate(new UFDate(json.getString("billdate")));
|
|
|
+ //单据号
|
|
|
+ payableBillItemVO.setBillno(json.getString("billno"));
|
|
|
+ if("F1-0xx-01".equals(pk_tradetype)) {
|
|
|
+ //起算日期
|
|
|
+ payableBillItemVO.setBusidate(new UFDate(json.getString("busidate")));
|
|
|
+ }else {
|
|
|
+ //起算日期
|
|
|
+ payableBillItemVO.setBusidate(new UFDate(json.getString("billdate")));
|
|
|
+ }
|
|
|
+ //方向 默认贷方
|
|
|
+ payableBillItemVO.setDirection(-1);
|
|
|
+ payableBillItemVO.setInvoiceno(invoiceno);
|
|
|
+ //不可抵扣税率
|
|
|
+ payableBillItemVO.setNosubtaxrate(new UFDouble(0));
|
|
|
+ //不可抵扣税额
|
|
|
+ payableBillItemVO.setNosubtax(new UFDouble(0));
|
|
|
+ //单据类型编码
|
|
|
+ payableBillItemVO.setPk_billtype("F1");
|
|
|
+ //币种
|
|
|
+ payableBillItemVO.setPk_currtype(pk_currtype);
|
|
|
+ //废弃财务组织
|
|
|
+ payableBillItemVO.setPk_fiorg(financeOrgVO.getPk_financeorg());
|
|
|
+ //废弃财务组织版本
|
|
|
+ payableBillItemVO.setPk_fiorg_v(financeOrgVO.getPk_vid());
|
|
|
+ //所属集团
|
|
|
+ payableBillItemVO.setPk_group(pk_group);
|
|
|
+ //应付财务组织
|
|
|
+ payableBillItemVO.setPk_org(financeOrgVO.getPk_financeorg());
|
|
|
+ //结算财务组织
|
|
|
+ payableBillItemVO.setSett_org(financeOrgVO.getPk_financeorg());
|
|
|
+ //结算财务组织版本
|
|
|
+ payableBillItemVO.setSett_org_v(financeOrgVO.getPk_vid());
|
|
|
+ //应付财务组织版本
|
|
|
+ payableBillItemVO.setPk_org_v(financeOrgVO.getPk_vid());
|
|
|
+ //应付类型code
|
|
|
+ payableBillItemVO.setPk_tradetype(pk_tradetype);
|
|
|
+ //应付类型
|
|
|
+ payableBillItemVO.setPk_tradetypeid(pk_billtypeid);
|
|
|
+ //rate组织本币汇率
|
|
|
+ payableBillItemVO.setRate(new UFDouble(1));
|
|
|
+ //收款银行账户
|
|
|
+ payableBillItemVO.setRecaccount(recaccount);
|
|
|
+ //付款银行账户
|
|
|
+ payableBillItemVO.setPayaccount(payaccount);
|
|
|
+ //行类型
|
|
|
+ payableBillItemVO.setRowtype(0);
|
|
|
+ //发货国
|
|
|
+ payableBillItemVO.setSendcountryid(pk_country);
|
|
|
+ //业务员
|
|
|
+ payableBillItemVO.setPk_psndoc(pk_psndoc);
|
|
|
+ //业务人员
|
|
|
+ payableBillItemVO.setPu_psndoc(pk_psndoc);
|
|
|
+ //业务部门
|
|
|
+ payableBillItemVO.setPu_deptid(pk_dept);
|
|
|
+ //业务部门版本
|
|
|
+ payableBillItemVO.setPu_deptid_v(pk_vid);
|
|
|
+ //业务组织
|
|
|
+ payableBillItemVO.setPu_org(financeOrgVO.getPk_financeorg());
|
|
|
+ //业务组织版本
|
|
|
+ payableBillItemVO.setPu_org_v(financeOrgVO.getPk_vid());
|
|
|
+ payableBillItemVO.setStatus(2);
|
|
|
+ listPayableBillItemVO.add(payableBillItemVO);
|
|
|
+ }
|
|
|
+ aggPayableBillVO.setChildrenVO(listPayableBillItemVO.toArray(new PayableBillItemVO[listPayableBillItemVO.size()]));
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ Object dateTimeString = payableBillVO.getBilldate();
|
|
|
+ if(dateTimeString != null) {
|
|
|
+ Date date = format.parse(dateTimeString.toString());
|
|
|
+ long timestamp = date.getTime();
|
|
|
+ InvocationInfoProxy.getInstance().setBizDateTime(timestamp);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ WorkflownoteVO Workflownote = new WorkflownoteVO();
|
|
|
+ IPFBusiAction ipf = NCLocator.getInstance().lookup(IPFBusiAction.class);
|
|
|
+ ipf.processAction("SAVE", "F1", Workflownote, aggPayableBillVO, null, null);
|
|
|
+ resp.getWriter().write(formatRSJsonData("成功", "", billno).toString());
|
|
|
+ } catch (Exception e) {
|
|
|
+ resp.getWriter().write(formatRSJsonData("失败",e.getMessage() == null ? "" : e.getMessage(),billno).toString());
|
|
|
+ StringWriter stringWriter = new StringWriter();
|
|
|
+ e.printStackTrace(new PrintWriter(stringWriter));
|
|
|
+ //获取详细信息
|
|
|
+ String msg=stringWriter.getBuffer().toString();
|
|
|
+ NcLog.info(msg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void checkJson(JSONObject json) throws Exception {
|
|
|
+
|
|
|
+ StringBuffer mags = new StringBuffer();
|
|
|
+ Boolean empty = true;
|
|
|
+
|
|
|
+ String pk_group = "pk_group";
|
|
|
+ String pk_tradetype = "pk_tradetype";
|
|
|
+ String pk_org = "pk_org";
|
|
|
+ String billno = "billno";
|
|
|
+ String billdate = "billdate";
|
|
|
+ String billmaker = "billmaker";
|
|
|
+ String local_money = "local_money";
|
|
|
+ String accessorynum = "accessorynum";
|
|
|
+ String pk_busitype = "pk_busitype";
|
|
|
+ String billyear = "billyear";
|
|
|
+ String billperiod = "billperiod";
|
|
|
+ String pk_currtype = "pk_currtype";
|
|
|
+ String src_syscode = "src_syscode";
|
|
|
+
|
|
|
+ String body = "childrenVO";//表体
|
|
|
+ String[] HeadKey = {pk_group,pk_tradetype,pk_org,billno,billdate,billmaker,local_money,accessorynum,
|
|
|
+ pk_busitype,billyear,billperiod,pk_currtype,src_syscode};
|
|
|
+
|
|
|
+ for (String as : HeadKey) {
|
|
|
+
|
|
|
+ if (json.getString(as).isEmpty()) {
|
|
|
+ empty = false;
|
|
|
+ mags.append("'" + as + "'");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (json.getJSONArray(body)==null) {
|
|
|
+ empty = false;
|
|
|
+ mags.append("表体不存在! ");
|
|
|
+ }
|
|
|
+
|
|
|
+ JSONArray childrenVO = json.getJSONArray("childrenVO");
|
|
|
+
|
|
|
+ if (childrenVO == null || childrenVO.size() == 0) {
|
|
|
+ throw new Exception("表体内容不可为空!");
|
|
|
+ }
|
|
|
+
|
|
|
+ String taxcodeid = "taxcodeid";
|
|
|
+ String taxrate = "taxrate";
|
|
|
+ String local_notax_cr = "local_notax_cr";
|
|
|
+ String local_tax_cr = "local_tax_cr";
|
|
|
+ String local_money_cr = "local_money_cr";
|
|
|
+ String objtype = "objtype";
|
|
|
+ String rowno = "rowno";
|
|
|
+ String buysellflag = "buysellflag";
|
|
|
+ String taxtype = "taxtype";
|
|
|
+ for(int i = 0; i < childrenVO.size(); i++) {
|
|
|
+
|
|
|
+ JSONObject oprepJsonObjectB = childrenVO.getJSONObject(i);
|
|
|
+ String[] BodyKey = {taxcodeid,taxrate,local_notax_cr,local_tax_cr,local_money_cr,
|
|
|
+ objtype,rowno,buysellflag,taxtype};
|
|
|
+ int num = i+1;
|
|
|
+
|
|
|
+ mags.append("第"+num+"块表体:{");
|
|
|
+ for (String as : BodyKey) {
|
|
|
+ if (oprepJsonObjectB.getString(as).isEmpty()) {
|
|
|
+ empty = false;
|
|
|
+ mags.append("'" + as + "' ");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ mags.append("}");
|
|
|
+ }
|
|
|
+ if (!empty) {
|
|
|
+ throw new Exception("以下字段不可为空:"+mags);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|