From 32b11a74e0b81c3b09fe5a4f32075bc23e2c24eb Mon Sep 17 00:00:00 2001 From: PastSaid <603806070@qq.com> Date: Sun, 10 Dec 2023 03:58:57 +0800 Subject: [PATCH] =?UTF-8?q?=E9=94=80=E5=94=AE=E5=87=BA=E5=BA=93=E5=8D=95?= =?UTF-8?q?=E5=8F=91=E7=A5=A8=E5=90=88=E5=B9=B6=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SAL_OUTSTOCK/MergePrintIssueAnInvPlugIn.cs | 180 +++++++++--------- SAL_OUTSTOCK/SAL_OUTSTOCK.csproj | 4 + .../SQLServer/月度生产计划表-预测单.sql | 0 .../SQLServer/月度生产计划表.sql | 0 SAL_OUTSTOCK/SQLServer/销售出库单子表信息.sql | 27 +++ .../SQLServer/销售出库单财务信息-视图.sql | 35 ++++ SAL_OUTSTOCK/packages.config | 41 ++++ 销售出库单财务信息.sql | 11 -- 8 files changed, 202 insertions(+), 96 deletions(-) rename 月度生产计划表-预测单.sql => SAL_OUTSTOCK/SQLServer/月度生产计划表-预测单.sql (100%) rename 月度生产计划表.sql => SAL_OUTSTOCK/SQLServer/月度生产计划表.sql (100%) create mode 100644 SAL_OUTSTOCK/SQLServer/销售出库单子表信息.sql create mode 100644 SAL_OUTSTOCK/SQLServer/销售出库单财务信息-视图.sql create mode 100644 SAL_OUTSTOCK/packages.config delete mode 100644 销售出库单财务信息.sql diff --git a/SAL_OUTSTOCK/MergePrintIssueAnInvPlugIn.cs b/SAL_OUTSTOCK/MergePrintIssueAnInvPlugIn.cs index 909c651..b77f77b 100644 --- a/SAL_OUTSTOCK/MergePrintIssueAnInvPlugIn.cs +++ b/SAL_OUTSTOCK/MergePrintIssueAnInvPlugIn.cs @@ -5,6 +5,7 @@ using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.List.PlugIn; using Kingdee.BOS.Core.Validation; using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.TCP; using Kingdee.BOS.Util; using Newtonsoft.Json; using SAL_OUTSTOCK.Request; @@ -72,17 +73,24 @@ namespace SAL_OUTSTOCK var orgId = 0L; var list = this.ListView.SelectedRowsInfo; var orgIdList = list.Select(x => x.MainOrgId).Distinct(); - if (orgIdList.Count() == 1) + if (orgIdList.Any()) { - orgId = orgIdList.First(); - if (orgId != 101542) - DoIssueAnInvoice2List(FPLXDM, orgId); + if (orgIdList.Count() == 1) + { + opResult = new OperationResult(); + var checkId = 101542L; + + orgId = orgIdList.First(); + checkId = orgId; + if (orgId == checkId) + DoIssueAnInvoice2List(FPLXDM, orgId); + else + this.View.ShowMessage("此功能未开放!如有需要请联系管理员!"); + } else - this.View.ShowMessage("此功能未开放!如有需要请联系管理员!"); - } - else - { - this.View.ShowMessage("选择的单据的组织不统一!"); + { + this.View.ShowErrMessage("选择的单据的组织不统一!"); + } } } _doingButtonFlag = false; @@ -99,29 +107,30 @@ namespace SAL_OUTSTOCK public string ListMergeInv_FPKJ(string FPLXDM, DynamicObject invoiceInfo) { var list = this.ListView.SelectedRowsInfo; - var fidList = list.Select(x => x.FormID).Distinct(); + var fidList = list.Select(x => x.PrimaryKeyValue).Distinct(); //var sHeadInfo = this.View.Model.GetEntityDataObject(subHeadEntity, 0); var result = new GP_FPKJ(); var fpkj = result.FPKJ = new REQUEST_COMMON_FPKJ(); - var headSql = $@"SELECT -ID,APPLYID,APPLYNAME,BILLALLAMOUNT,BILLAMOUNT,BILLTAXAMOUNT, -CUSTID,CUSTNAME,INVOICETITLE, -INVOICEBANKNAME,INVOICEBANKACCOUNT,FTAXREGISTERCODE,SOCIALCRECODE,INVOICETEL,INVOICEADDRESS -FROM V_OUTSTOCKINVINFO_HEAD + var headSql = $@" +SELECT + ID,DOCUMENTSTATUS,APPLYID,APPLYNAME,BILLALLAMOUNT,BILLAMOUNT,BILLTAXAMOUNT,BILLNO + CUSTID,CUSTNAME,INVOICETITLE,INVOICEBANKNAME,INVOICEBANKACCOUNT, + TAXREGISTERCODE,SOCIALCRECODE,INVOICETEL,INVOICEADDRESS +FROM + V_INVINFO_OUTSTOCK WHERE ID IN ({string.Join(",", fidList)}) "; - + var sHeadInfos = DBUtils.ExecuteDynamicObject(this.Context, $"/*dialect*/{headSql}"); + var sHeadInfo = sHeadInfos[0]; #region 针对非农产收购发票 #region 基础信息 - var sHeadInfos = DBUtils.ExecuteDynamicObject(this.Context, $"/*dialect*/{headSql}"); - var custIds = sHeadInfos.Select(x => x["CUSTID"].Long2Int()).Distinct(); - if (custIds.Count() > 1) + if (custIds.Count() != 1) opResult.OperateResult.Add(new OperateResult { Name = "客户信息", @@ -130,7 +139,7 @@ WHERE ID IN ({string.Join(",", fidList)}) }); var applyIds = sHeadInfos.Select(x => x["APPLYID"].Long2Int()).Distinct(); - if (applyIds.Count() > 1) + if (applyIds.Count() != 1) opResult.OperateResult.Add(new OperateResult { Name = "申领单位", @@ -138,6 +147,31 @@ WHERE ID IN ({string.Join(",", fidList)}) SuccessStatus = false }); + if (applyIds.Any() && applyIds.First() == 0) + opResult.OperateResult.Add(new OperateResult + { + Name = "申领单位", + Message = "选择的开票数据申领单位不能为空!", + SuccessStatus = false + }); + + var sheadInfos2 = sHeadInfos.Where(x => !x["DOCUMENTSTATUS"].ToString().Trim().Equals("C")); + if (sheadInfos2 != null && sheadInfos2.Any()) + { + foreach (var item in sheadInfos2) + { + opResult.OperateResult.Add(new OperateResult + { + Name = item["BILLNO"].ToString(), + Message = $"{item["BILLNO"]}该订单未审核完毕!", + SuccessStatus = false + }); + } + } + + if (opResult.OperateResult.Any()) + throw new Exception("检验信息"); + fpkj.FPQQLSH = $"{invoiceInfo["FFIRMCODE"]}{DateTime.Now.ToString("yyyyMMddHHmm")}{invoiceInfo["FSERIALNUMBER"]}"; fpkj.FPLXDM = FPLXDM; @@ -170,25 +204,18 @@ WHERE ID IN ({string.Join(",", fidList)}) fpkj.KPR = invoiceInfo["FDRAWER"].ToString(); - ////申领单位 - //var applicant = this.View.Model.GetValue("F_QNV_Base1") as DynamicObject; - //var deptMulti = applicant["MultiLanguageText"] as DynamicObjectCollection; - + fpkj.BZ = sHeadInfo["APPLYNAME"].ToString(); #endregion 销售方 #region 购买方(客户信息) - var sHeadInfo = sHeadInfos[0]; - - fpkj.BZ = sHeadInfo["APPLYNAME"].ToString(); - fpkj.GMF_MC = (sHeadInfo["INVOICETITLE"].IsNullOrEmpty() ? (sHeadInfo["CUSTNAME"].IsNullOrEmpty() ? "" : sHeadInfo["CUSTNAME"]) : sHeadInfo["INVOICETITLE"]).ToString(); //纳税人识别号/统一社会信用代码 - fpkj.GMF_NSRSBH = (sHeadInfo["SOCIALCRECODE"].IsNullOrEmpty() ? (sHeadInfo["FTAXREGISTERCODE"].IsNullOrEmpty() ? "" : sHeadInfo["FTAXREGISTERCODE"]) : sHeadInfo["SOCIALCRECODE"]).ToString(); + fpkj.GMF_NSRSBH = (sHeadInfo["SOCIALCRECODE"].IsNullOrEmpty() ? (sHeadInfo["TAXREGISTERCODE"].IsNullOrEmpty() ? "" : sHeadInfo["TAXREGISTERCODE"]) : sHeadInfo["SOCIALCRECODE"]).ToString(); fpkj.GMF_DZDH = $"{sHeadInfo["INVOICEADDRESS"]} {sHeadInfo["INVOICETEL"]}"; fpkj.GMF_YHZH = $"{sHeadInfo["INVOICEBANKNAME"]} {sHeadInfo["INVOICEBANKACCOUNT"]}"; - if (fpkj.GMF_MC == string.Empty) + if (fpkj.GMF_MC.IsNullOrEmptyOrWhiteSpace()) opResult.OperateResult.Add(new OperateResult { Name = "客户信息", @@ -196,7 +223,7 @@ WHERE ID IN ({string.Join(",", fidList)}) SuccessStatus = false }); - if (fpkj.GMF_NSRSBH == string.Empty) + if (fpkj.GMF_NSRSBH.IsNullOrEmptyOrWhiteSpace()) opResult.OperateResult.Add(new OperateResult { Name = "客户信息", @@ -204,7 +231,7 @@ WHERE ID IN ({string.Join(",", fidList)}) SuccessStatus = false }); - if (isPaper && fpkj.GMF_DZDH == string.Empty) + if (isPaper && fpkj.GMF_DZDH.IsNullOrEmptyOrWhiteSpace()) opResult.OperateResult.Add(new OperateResult { Name = "客户信息", @@ -212,7 +239,7 @@ WHERE ID IN ({string.Join(",", fidList)}) SuccessStatus = false }); - if (isPaper && fpkj.GMF_YHZH == string.Empty) + if (isPaper && fpkj.GMF_YHZH.IsNullOrEmptyOrWhiteSpace()) opResult.OperateResult.Add(new OperateResult { Name = "客户信息", @@ -224,70 +251,53 @@ WHERE ID IN ({string.Join(",", fidList)}) #region 明细信息 var details = fpkj.COMMON_FPKJ_XMXX = new List(); - if (!opResult.OperateResult.Any()) - { - var checkTaxCategroupSql = $@" -SELECT - a.FMASTERID, - a.FNUMBER, - a.FMATERIALID , - b.FTAXCATEGORYCODEID , - c.FTAXCODE , - d.FENTRYID -FROM - T_BD_MATERIAL a - LEFT JOIN T_BD_MATERIALSALE b ON a.FMATERIALID = b.FMATERIALID - INNER JOIN T_IV_GTTAXCODE c ON b.FTAXCATEGORYCODEID = c.FID - INNER JOIN T_SAL_OUTSTOCKENTRY d ON d.FMATERIALID = a.FMATERIALID -WHERE - c.FDOCUMENTSTATUS = 'C' - AND d.FID in ({string.Join(",", fidList)}) "; + if (opResult.OperateResult.Any()) + throw new Exception("检验信息"); - var entrySql = $@" + var entrySql = $@" SELECT - ID,FTAXCATEGORYCODEID,Number,TaxCode,MaterialName,Salunitqty,Specification,UnitName,Price,Amount,TaxRate,TaxAmount -from V_OUTSTOCKINVINFO_ENTRY + ID,TaxCategoryCodeId,Number,TaxCode,MaterialName,Qty,Specification,UnitName,Price,Amount,TaxRate,TaxAmount +FROM V_INVINFO_OUTSTOCKENTRY -AND ID in ({string.Join(",", fidList)}) +WHERE ID in ({string.Join(",", fidList)}) "; - var dbList = DBUtils.ExecuteDynamicObject(this.Context, $"/*dialect*/{entrySql}"); + var dbList = DBUtils.ExecuteDynamicObject(this.Context, $"/*dialect*/{entrySql}"); - foreach (var item in dbList) + foreach (var item in dbList) + { + + if (item["TaxCategoryCodeId"].Long2Int() == 0) { - - if (item["FTAXCATEGORYCODEID"].IsNullOrEmpty()) + opResult.OperateResult.Add(new OperateResult { - opResult.OperateResult.Add(new OperateResult - { - Name = item["Number"].ToString(), - Message = $"物料:{item["Number"]} 缺少税收分类编码!", - SuccessStatus = false - }); - continue; - } - - details.Add(new COMMON_FPKJ_XMXX - { - FPHXZ = "0", - SPBM = item["TaxCode"].ToString(), - //ZXBM = material["Number"].ToString(), - XMMC = item["MaterialName"].ToString(), - XMSL = item["Salunitqty"].ToDecimal().ToString("F6"), - GGXH = item["Specification"].ToString(), - DW = item["UnitName"].ToString(), - XMDJ = item["Price"].ToDecimal().ToString("F6"), - XMJE = item["Amount"].ToDecimal().ToString("F2"), - SL = (item["TaxRate"].ToDecimal() * 0.01M).ToString("F2"), - SE = item["TaxAmount"].ToDecimal().ToString("F2"), + Name = item["Number"].ToString(), + Message = $"物料:{item["Number"]} 缺少税收分类编码!", + SuccessStatus = false }); + continue; } - if (opResult.OperateResult.Any()) - throw new Exception("物料缺少税收分类编码"); - + details.Add(new COMMON_FPKJ_XMXX + { + FPHXZ = "0", + SPBM = item["TaxCode"].ToString(), + //ZXBM = material["Number"].ToString(), + XMMC = item["MaterialName"].ToString(), + XMSL = item["Qty"].ToDecimal().ToString("F6"), + GGXH = item["Specification"].ToString(), + DW = item["UnitName"].ToString(), + XMDJ = item["Price"].ToDecimal().ToString("F6"), + XMJE = item["Amount"].ToDecimal().ToString("F2"), + SL = (item["TaxRate"].ToDecimal() * 0.01M).ToString("F2"), + SE = item["TaxAmount"].ToDecimal().ToString("F2"), + }); } + if (opResult.OperateResult.Any()) + throw new Exception("物料缺少税收分类编码"); + + #endregion 明细信息 #endregion 针对非农产收购发票 @@ -520,7 +530,7 @@ ORDER BY { this.View.ShowMessage($"报文处理成功,正在回填发票信息【财务信息】"); - var idList = this.ListView.SelectedRowsInfo.Select(x => x.FormID).Distinct(); + var idList = this.ListView.SelectedRowsInfo.Select(x => x.PrimaryKeyValue).Distinct(); //更新对应开票信息的流水号记录 var serialNumber = invInfo["FSERIALNUMBER"].Long2Int(); diff --git a/SAL_OUTSTOCK/SAL_OUTSTOCK.csproj b/SAL_OUTSTOCK/SAL_OUTSTOCK.csproj index 40b69de..a684788 100644 --- a/SAL_OUTSTOCK/SAL_OUTSTOCK.csproj +++ b/SAL_OUTSTOCK/SAL_OUTSTOCK.csproj @@ -73,6 +73,10 @@ + + + + diff --git a/月度生产计划表-预测单.sql b/SAL_OUTSTOCK/SQLServer/月度生产计划表-预测单.sql similarity index 100% rename from 月度生产计划表-预测单.sql rename to SAL_OUTSTOCK/SQLServer/月度生产计划表-预测单.sql diff --git a/月度生产计划表.sql b/SAL_OUTSTOCK/SQLServer/月度生产计划表.sql similarity index 100% rename from 月度生产计划表.sql rename to SAL_OUTSTOCK/SQLServer/月度生产计划表.sql diff --git a/SAL_OUTSTOCK/SQLServer/销售出库单子表信息.sql b/SAL_OUTSTOCK/SQLServer/销售出库单子表信息.sql new file mode 100644 index 0000000..be8453c --- /dev/null +++ b/SAL_OUTSTOCK/SQLServer/销售出库单子表信息.sql @@ -0,0 +1,27 @@ +IF EXISTS (SELECT * FROM sysobjects WHERE name='V_INVINFO_OUTSTOCKENTRY') --Ϊͼ + DROP VIEW V_INVINFO_OUTSTOCKENTRY --ͼ +GO +CREATE VIEW V_INVINFO_OUTSTOCKENTRY +AS +SELECT + AE.FID AS ID + ,AE.FENTRYID AS ENTRYID + ,BS.FTAXCATEGORYCODEID AS TAXCATEGORYCODEID + ,B.FNUMBER AS NUMBER + ,C.FTAXCODE AS TAXCODE + ,B_L.FNAME AS MATERIALNAME + ,AE_F.FSALUNITQTY AS QTY + ,B_L.FSPECIFICATION AS SPECIFICATION + ,D_L.FNAME AS UNITNAME + ,AE_F.FPRICE AS PRICE + ,AE_F.FAMOUNT AS AMOUNT + ,AE_F.FTAXRATE AS TAXRATE + ,AE_F.FTAXAMOUNT AS TAXAMOUNT +FROM + T_SAL_OUTSTOCKENTRY AE + LEFT JOIN T_SAL_OUTSTOCKENTRY_F AE_F ON AE.FENTRYID = AE_F.FENTRYID AND AE.FID = AE_F.FID + LEFT JOIN T_BD_MATERIAL B ON AE.FMATERIALID = B.FMATERIALID + LEFT JOIN T_BD_MATERIALSALE BS ON AE.FMATERIALID = BS.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L B_L ON AE.FMATERIALID = B_L.FMATERIALID AND B_L.FLOCALEID =2052 + LEFT JOIN T_IV_GTTAXCODE C ON BS.FTAXCATEGORYCODEID = C.FID AND C.FDOCUMENTSTATUS = 'C' + LEFT JOIN T_BD_UNIT_L D_L ON AE.FUNITID = D_L.FUNITID AND D_L.FLOCALEID = 2052 \ No newline at end of file diff --git a/SAL_OUTSTOCK/SQLServer/销售出库单财务信息-视图.sql b/SAL_OUTSTOCK/SQLServer/销售出库单财务信息-视图.sql new file mode 100644 index 0000000..7dc385c --- /dev/null +++ b/SAL_OUTSTOCK/SQLServer/销售出库单财务信息-视图.sql @@ -0,0 +1,35 @@ +IF EXISTS (SELECT * FROM sysobjects WHERE name='V_INVINFO_OUTSTOCK') --单引号里面为视图名称 + DROP VIEW V_INVINFO_OUTSTOCK --视图名称 +GO +CREATE VIEW V_INVINFO_OUTSTOCK +AS +SELECT + A.FBILLNO as BILLNO, + A.FID as ID, + A.FSTOCKORGID as STOCKORGID, + A.FDOCUMENTSTATUS as DOCUMENTSTATUS, + A.FCUSTOMERID as CUSTID, + AF.FBILLALLAMOUNT AS BILLALLAMOUNT, + AF.FBILLAMOUNT AS BILLAMOUNT, + AF.FBILLTAXAMOUNT as BILLTAXAMOUNT + ,AF.FINVOICENUMBER AS INVOICENUMBER +-- ,B_L.FDEPTID as APPLYID +-- ,B_L.FNAME as APPLYNAME + ,1 as APPLYID + ,'' as APPLYNAME + ,C_L.FNAME as CUSTNAME + ,c.FTAXREGISTERCODE as TAXREGISTERCODE + ,c.FSOCIALCRECODE as SOCIALCRECODE + ,c_f.FINVOICETITLE as INVOICETITLE + ,c_f.FINVOICEBANKNAME as INVOICEBANKNAME + ,c_f.FINVOICEBANKACCOUNT as INVOICEBANKACCOUNT + ,c_f.FINVOICETEL as INVOICETEL + ,c.FINVOICEADDRESS as INVOICEADDRESS +FROM + T_SAL_OUTSTOCK A + LEFT JOIN T_SAL_OUTSTOCKFIN AF ON A.FID = AF.FID +-- left join T_BD_DEPARTMENT_L B_L on A.F_QNV_Base1 = B_L.FDEPTID and b_l.FLOCALEID = 2052 + left join T_BD_CUSTOMER C ON a.FCUSTOMERID = c.FCUSTID + left join T_BD_CUSTOMER_L C_L ON a.FCUSTOMERID = c_l.FCUSTID and C_L.FLOCALEID = 2052 + left join T_BD_CUSTOMER_F C_F on a.FCUSTOMERID = C_F.FCUSTID + diff --git a/SAL_OUTSTOCK/packages.config b/SAL_OUTSTOCK/packages.config new file mode 100644 index 0000000..f63921e --- /dev/null +++ b/SAL_OUTSTOCK/packages.config @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/销售出库单财务信息.sql b/销售出库单财务信息.sql deleted file mode 100644 index 0ffb684..0000000 --- a/销售出库单财务信息.sql +++ /dev/null @@ -1,11 +0,0 @@ -SELECT - A.FBILLNO, - A.FID, - A.FSTOCKORGID, - A.FDOCUMENTSTATUS, - AF.FBILLALLAMOUNT, - AF.FBILLAMOUNT, - AF.FBILLTAXAMOUNT -FROM - T_SAL_OUTSTOCK A - LEFT JOIN T_SAL_OUTSTOCKFIN AF ON A.FID = AF.FID \ No newline at end of file