From a26fcd7645ef822ac5e61adb8bdbe66a6a96626d Mon Sep 17 00:00:00 2001 From: God <10745413@qq.com> Date: Fri, 14 Jul 2023 15:25:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AC=BE=E9=A1=B9=E7=BB=93=E8=BD=AC=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../anrui/fin/api/kingdee/KingDeeBillId.java | 2 +- .../OtherReceivableBillService.java | 52 ++-- .../biz/kingdee/otherreceivablebill/data.json | 2 +- .../kingdee/otherreceivablebill/remarks.txt | 254 +++++------------- .../其他应收单的参数必填备注.xlsx | Bin 10060 -> 0 bytes 5 files changed, 84 insertions(+), 226 deletions(-) delete mode 100644 anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/其他应收单的参数必填备注.xlsx diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/KingDeeBillId.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/KingDeeBillId.java index 0996e12546..dc5e644857 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/KingDeeBillId.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/KingDeeBillId.java @@ -3,7 +3,7 @@ package com.yxt.anrui.fin.api.kingdee; public enum KingDeeBillId { AP_PAYABLE("AP_Payable", "应付单"), AR_RECEIVABLE("AR_receivable", "应收单"), - OTHER_RECEIVABLE("OTHER_RECEIVABLE", "其他应收单"), + AR_OTHERRECEIVABLE("AR_OTHERRECEIVABLE", "其他应收单"), AP_PAYBILL("AP_PAYBILL", "付款单"), AR_RECEIVEBILL("AR_RECEIVEBILL", "收款单"), STK_INSTOCK("STK_InStock", "采购入库单"), diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/OtherReceivableBillService.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/OtherReceivableBillService.java index c7af920571..5c7599236d 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/OtherReceivableBillService.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/OtherReceivableBillService.java @@ -25,53 +25,45 @@ public class OtherReceivableBillService extends FinKingDeeService { public ResultBean otherReceivableBillService(OtherReceivable otherReceivable) { ResultBean rb=ResultBean.fireFail(); //业务表的主表数据集合 - /*Map map_fEntityModel_=new HashMap<>(); + Map map_fEntityModel_=new HashMap<>(); //物料的数组集合 - if(aRReceivable.getApplicationDate()==null){ - return rb.setMsg("业务日期 不能为空"); + if(otherReceivable.getBussDate()==null){ + return rb.setMsg("业务日期不能为空"); } //业务日期 - map_fEntityModel_.put("FDATE",aRReceivable.getApplicationDate()); - map_fEntityModel_.put("FCUSTOMERID",aRReceivable.getFcustomerid()); - //供应商:FSUPPLIERID (必填项) - if(aRReceivable.getApplicationDate()==null){ - return rb.setMsg("供应商 不能为空"); - } - // map_fEntityModel_.put("FSUPPLIERID","010001"); - List vehicleList = aRReceivable.getVehicleList()==null?new ArrayList<>(): aRReceivable.getVehicleList(); + map_fEntityModel_.put("FDATE",otherReceivable.getBussDate()); + + List collectionDetails = otherReceivable.getCollectionDetails()==null?new ArrayList<>(): otherReceivable.getCollectionDetails(); //准备 物料列表的数据 - ResultBean>> vehicleListMap = createVehicleListsForReceivableBill(vehicleList); + ResultBean>> vehicleListMap = createVehicleListsForReceivableBill(collectionDetails); if(!vehicleListMap.getSuccess()){ return rb.setMsg(vehicleListMap.getMsg()); } String kingDeeData = OtherReceivableBillCastToKingDeeBillFields.getKingDeeData(map_fEntityModel_,vehicleListMap.getData()); try { - return accessKingDeeInterface(KingDeeBillId.AP_PAYABLE.getID(),kingDeeData, KingDeeBillUrl.DRAFT_URL.getURL()); + return accessKingDeeInterface(KingDeeBillId.AR_OTHERRECEIVABLE.getID(),kingDeeData, KingDeeBillUrl.DRAFT_URL.getURL()); } catch (Exception e) { e.printStackTrace(); - }*/ + } return rb; } - /** - * 准备 物料列表的数据 ForReceivableBill - */ - public ResultBean>> createVehicleListsForReceivableBill(List vehicleList) { + + public ResultBean>> createVehicleListsForReceivableBill(List collectionDetails) { ResultBean>> rb=ResultBean.fireFail(); - List> vehicleListMap=new ArrayList<>(); - for(int i = 0; i< vehicleList.size(); i++){ - ARReceivable.ScmApplyInboundVehicleDto f= vehicleList.get(i); + List> collectionDetailMap=new ArrayList<>(); + for(int i = 0; i< collectionDetails.size(); i++){ + OtherReceivable.CollectionDetailDto c = collectionDetails.get(i); Map m=new HashMap<>(); - if(StringUtils.isBlank(f.getVinNo())){ - return rb.setMsg("物料编码 不能为空"); + if(StringUtils.isBlank(c.getDearDept())){ + return rb.setMsg("承担部门不能为空"); } - if(StringUtils.isBlank(f.getRemarks())){ - return rb.setMsg("物料名称 不能为空"); + if(StringUtils.isBlank(c.getExTaxMoney())){ + return rb.setMsg("不含税金额不能为空"); } - m.put("FMATERIALID",f.getVinNo()); - m.put("FMaterialDesc",f.getRemarks()); - m.put("FPRICEUNITID","liang"); - vehicleListMap.add(m); + m.put("FCOSTDEPARTMENTID",c.getDearDept()); + m.put("FNOTAXAMOUNTFOR",c.getExTaxMoney()); + collectionDetailMap.add(m); } - return rb.success().setData(vehicleListMap); + return rb.success().setData(collectionDetailMap); } } diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/data.json b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/data.json index cd519d5b73..08f7c432fe 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/data.json +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/data.json @@ -1,4 +1,4 @@ { - "formId": "AR_receivable", + "formId": "AR_OTHERRECEIVABLE", "data": "@KD_data" } \ No newline at end of file diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/remarks.txt b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/remarks.txt index 885437edd6..dc5da5cd07 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/remarks.txt +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/remarks.txt @@ -1,6 +1,6 @@ -一、请求参数说明: -1.formid:业务对象表单Id,字符串类型(必录) -2.data:Json格式数据(详情参考Json格式数据)(必录) +请求参数说明: +formid:业务对象表单Id,字符串类型(必录) +data:Json格式数据(详情参考Json格式数据)(必录) 2.1.Creator:创建者内码(非必录) 2.2.NeedUpDateFields:需要更新的字段,数组类型,格式:[key1,key2,...](非必录),注(更新单据体字段得加上单据体key) 2.3.NeedReturnFields:需返回结果的字段集合,数组类型,格式:[key,entitykey.key,...](非必录),注(返回单据体字段格式:entitykey.key) @@ -13,209 +13,75 @@ 2.10.InterationFlags:交互标志集合,字符串类型,分号分隔,格式:"flag1;flag2;..."(非必录),例如(允许负库存标识:STK_InvCheckResult) 2.11.Model:表单数据包,Json类型(必录) -五、字段说明: -销售单位:FSalUnitId -库存基本数量:FStockBaseQty -库存数量:FStockQty -销售基本数量:FSalBaseQty -库存基本分子:FStockBaseNum -销售基本分子:FSalBaseNum -计价基本分母:FPriceBaseDen -库存单位:FStockUnitId -工序号:FOPERNUMBER -序列号:FSEQNUMBER -工序计划号:FOPNO -作业:FPROCESSID -是否赠品:FIsFree -源单行内码:FSRCROWID -生产车间:FFPRODEPARTMENTID -销售基本数量(财务):FSALFINBASEQTY -已下推负数财务应收数量:FPushRedQty -销售发票价税合计期初:FIVINIALLAMOUNTFOR -客户物料编码:FCustMatID -车辆类型:F_PAEZ_BaseProperty -优惠额:F_PAEZ_Decimal -客户物料名称:FCustMatName -销售发票数量(基本单位)期初:FBUYIVINIBASICQTY -销售订单行内码:FORDERENTRYID -成本金额:FCOSTAMTSUM -销售数量:FSalQty -源单单据类型:FSOURCEBILLTYPEID -销售发票数量期初:FBUYIVINIQTY -已收款金额:FRECEIVEAMOUNT -销售订单行号:FORDERENTRYSEQ -业务单据内码:FBizID -业务单据分录内码:FBizEntryId -特殊核销金额:FSpecialAmountFor -业务单据类型:FBizBillTypeId -物料说明:FMaterialDesc -业务单据名称:FBizFormId -业务单据编号:FBizBillNo -特殊核销数量:FSpecialQTY -已开票核销数量:FOPENQTY_D -销售发票数量:FBUYIVQTY -销售发票数量(基本单位):FBUYIVBASICQTY -卖家代扣增值税税率:FTEMPTAXRATE -结算清单调拨类型:FSettleTran -已开票金额(下推审核反写、核销反写):FHadMatchAmountFor -已核销不含税金额:FMatchNotTaxAmtFor -卡片编码:FASSETID +字段说明: +银行:F_PAEZ_Base +银行帐号:F_PAEZ_Base1 +转出往来单位类型:FOUTCONTACTTYPE +转出往来单位:FOUTCONTACTID +项目类别:F_PMZC_Assistant1 +备注:FCOMMENT 费用项目名称:FCOSTNAME 费用项目编码:FCOSTID -资产名称:FAssetName -生产订单行号:FMOENTRYSEQ -生产订单编号:FMONUMBER -费用承担部门:FCOSTDEPARTMENTID -库存组织:FSTOCKORGID -关联出库数量(基本单位):FBaseStockOutJoinQty -发货上限(基本单位):FBaseDeliveryMaxQty -销售订单内码(删除):FSaleOrderID -控制发货数量:FDeliveryControl -业务流程:FBFLowId -批号:FLot -辅助属性:FAUXPROPID -物料分组:F_PAEZ_BaseProperty1 -增值税:FVAT -计入成本金额:FCostAmount -计入成本比例:FCostPercent -卖方代扣代缴:FSellerWithholding -物料名称:FMETRIALNAME -物料编码:FMETRIALID -买方代扣代缴:FBuyerWithholding -税额:FTaxAmount_T -物料名称:FMATERIALNAME_S -物料编码:FMATERIALID_S -订单收款计划明细内码:FRECEIVABLEENTRYID -订单行号:FMATERIALSEQ -税率(%):FTaxRate -税率名称:FTaxRateId +总金额:FAMOUNTFOR_D +备注:FAR_OtherRemarks +扫描点:FScanPoint +表头-付款申请关联金额:FAPPLYAMOUNT_H +销售组织:FSALEORGID +转销:FIsWriteOff +销售组:FSALEGROUPID +销售部门:FSALEDEPTID 收(退)款单关联金额本位币:FWRITTENOFFAMOUNT -成本金额:FCOSTAMT -成本价:FCOSTPrice -会计政策:FACCTPOLICY -基本单位数量:FBaseQty -基本单位:FBASICUNIT -明细内码:FDEntryID -源单行号:FSEQSRC -核算体系:FACCTSYS -计价单位:FPriceUnit -货物类别:FMETRIALTYPE -规格型号:FMetrialModel -计价数量:FPriceUnitQty -源单内码:FROWNOSRC -源单单号:FBILLNOSRC -源出库单类型:FOUTSTOCKTYPE -本位币:FMAINBOOKSTDCURRID (必填项) -结算方式:FSettleTypeID -订货方:FORDERID -税额:FTaxAmountFor -不含税金额本位币:FNoTaxAmount -税额本位币:FTaxAmount -不含税金额:FNoTaxAmountFor -付款方:FChargeId -赠送套餐:F_PAEZ_Decimal3 -销售折让:F_PAEZ_Decimal2 -返利金额:F_PAEZ_Decimal1 +销售员:FSALEERID +税率(%):FEntryTaxRate +已开票金额:FIVAmountFor +发票类型:FINVOICETYPE (必填项) +已生成发票:FCREATEINVOICE +利息:F_PAEZ_Amount 物流车辆:F_PMZC_Base -收货方:FTRANSFERID -物流客户:F_PMZC_Assistant1 +油卡号码:F_PMZC_Assistant2 +用途:F_PAEZ_Assistant1 (必填项) 运输编号:F_PMZC_Assistant -应收比例(%):FPAYRATE -表头计划 - 收(退)款单关联金额:FRELATEHADPAYAMOUNT_P -表头计划 - 未核销金额(作废):FNOTWRITTENOFFAMOUNTFOR_P -已核销金额:FWRITTENOFFAMOUNTFOR_P -销售订单内码:FSALEORDERID_S -销售订单号:FORDERBILLNO +税额:FTAXAMOUNTFOR +不含税金额本位币:FNOTAXAMOUNT_D +总金额本位币:FAMOUNT_D +不含税金额:FNOTAXAMOUNTFOR +税额本位币:FTAXAMOUNT_D +源单类型:FSOURCETYPE +源单编号:FSourceBillNo +费用承担部门:FCOSTDEPARTMENTID (必填项) 付款申请关联金额:FAPPLYAMOUNT -表头计划 - 核销状态:FWRITTENOFFSTATUS_P -汇率:FExchangeRate 汇率类型:FEXCHANGETYPE (必填项) -价税合计本位币:FALLAMOUNT -到期日计算日期:FACCNTTIMEJUDGETIME -应收金额本位币:FPAYAMOUNT -应收金额:FPAYAMOUNTFOR -表头计划 - 到期日:FENDDATE -作废日期:FCancelDate -作废人:FCancellerId -按含税单价录入:FISTAX -作废状态:FCancelStatus (必填项) -销售组织:FSALEORGID -客户:FCUSTOMERID (必填项) +汇率:FExchangeRate 收款条件:FPayConditon -会计核算体系:FACCOUNTSYSTEM -价税合计:FALLAMOUNTFOR -创建人:FCreatorId -货主:FOWNERID -货主类型:FOWNERTYPE -到期日:FENDDATE_H -销售员:FSALEERID -销售组:FSALEGROUPID -销售部门:FSALEDEPTID -创建日期:FCreateDate -审核日期:FAPPROVEDATE -修改人:FModifierId +本位币:FMAINBOOKSTDCURRID (必填项) +作废日期:FCancelDate 修改日期:FModifyDate -表头基本 - 收款核销状态:FWRITTENOFFSTATUS 审核人:FAPPROVERID +创建日期:FCreateDate +作废状态:FCancelStatus (必填项) 单据类型:FBillTypeID (必填项) -表头基本 - 收(退)款单的关联金额:FRelateHadPayAmount -单据状态:FDocumentStatus -单据编号:FBillNo 业务日期:FDATE (必填项) +单据编号:FBillNo +单据状态:FDocumentStatus +到期日:FENDDATE_H 币别:FCURRENCYID (必填项) -表头基本 -未收款核销金额(作废):FNOTWRITTENOFFAMOUNTFOR 结算组织:FSETTLEORGID (必填项) -表头基本 - 开票核销状态:FOPENSTATUS -税率(%):FEntryTaxRate -不含税金额:FNoTaxAmountFor_D -折扣率(%):FEntryDiscountRate -税额:FTAXAMOUNTFOR_D -销售发票价税合计:FIVALLAMOUNTFOR -备注:FComment -价税合计:FALLAMOUNTFOR_D -折扣额:FDISCOUNTAMOUNTFOR -物料类别:FMaterialType -规格型号:FModel -物料名称:FMaterialName -单价:FPrice -计价数量:FPriceQty -价格系数:FPriceCoefficient -含税单价:FTaxPrice -含税净价:FPriceWithTax -计价基本数量:FBASICUNITQTY -基本单位:FBASICUNITID -基本单位关联数量:FBaseJoinQty -税组合:FTaxCombination -源单编号:FSourceBillNo -源单类型:FSOURCETYPE -计价单位:FPRICEUNITID -价税合计本位币:FALLAMOUNT_D -税额本位币:FTAXAMOUNT_D -折扣额本位币:FDISCOUNTAMOUNT -不含税金额本位币:FNOTAXAMOUNT_D -销售订单号:FORDERNUMBER -表体明细 - 已开票核销金额:FOPENAMOUNTFOR_D -表体明细 - 开票核销状态:FOPENSTATUS_D -业务类型:FBUSINESSTYPE -核销方式:FMatchMethodID -零售:FISRETAIL -现销 :FCASHSALE -信用检查结果:FCreditCheckResult -收款组织:FPAYORGID (必填项) -销售业务类型:FSALESBUSTYPE +往来单位:FCONTACTUNIT (必填项) +往来单位类型:FCONTACTUNITTYPE (必填项) +结算方式:FSettleTypeID +已收款核销金额:FWRITTENOFFAMOUNTFOR +来源系统:FSOURCESYSTEM +申请部门:FDEPARTMENTID 是否期初单据:FISINIT -转出客户:FOUTCUSTOMERID -扫描点:FScanPoint -生成方式:FByVerify -项目类别:F_PAEZ_Assistant1 -物料编码:FMATERIALID -是否开票:F_PMZC_Assistant2 -中介单位:F_PAEZ_Base -红蓝字:FRedBlue -备注:FAR_Remark -价外税:FISPRICEEXCLUDETAX -B2C业务:FISB2C -立账类型:FSetAccountType -先到票后出库:FISINVOICEARLIER -转销:FIsWriteOff -参与暂估应收核销:FISHookMatch \ No newline at end of file +税额本位币:FTAXAMOUNT +收款组织:FPAYORGID (必填项) +到期日计算日期:FACCNTTIMEJUDGETIME +不含税金额本位币:FNOTAXAMOUNT +修改人:FModifierId +创建人:FCreatorId +审核日期:FAPPROVEDATE +作废人:FCancellerId +总金额:FAMOUNTFOR +总金额本位币:FAMOUNT +表头基本 - 收款核销状态:FWRITTENOFFSTATUS +表头基本 - 收(退)款单的关联金额:FRelateHadPayAmount \ No newline at end of file diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/其他应收单的参数必填备注.xlsx b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/其他应收单的参数必填备注.xlsx deleted file mode 100644 index afa999de3d05fbe58f387ef7c3bafaf44142b69d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10060 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 P01f)1`)TWGe%}2bjlgQj