From c9a8a895d3efd6ea566e79059a53792316cc5ef3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=8B=97=E8=9B=8B?= <12086832+li-goudan233@user.noreply.gitee.com> Date: Tue, 15 Apr 2025 19:52:56 +0800 Subject: [PATCH] 1 --- DDWFHMX.cs | 127 ++++++++++++++++++ bin/Debug/GZ_LTHReportForms.dll | Bin 49664 -> 51200 bytes .../订单未发货明细表创建表单sql.sql | 26 ++-- .../订单未发货明细表插入数据SQL.sql | 124 ++++++++++++----- 4 files changed, 232 insertions(+), 45 deletions(-) create mode 100644 DDWFHMX.cs diff --git a/DDWFHMX.cs b/DDWFHMX.cs new file mode 100644 index 0000000..2ddb5e8 --- /dev/null +++ b/DDWFHMX.cs @@ -0,0 +1,127 @@ +using Kingdee.BOS.Core.Report; +using Kingdee.BOS; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Kingdee.BOS.Contracts.Report; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Core.Enums; + +namespace GZ_LTHReportForms.ReporyDDWFH +{ + [Description("【报表服务插件】订单为未发货明细表_TH"), HotUpdate] + public class DDWFHMX : SysReportBaseService + { + public override void Initialize() + { + base.Initialize(); + this.ReportProperty.ReportName = new LocaleValue("销售业绩排行榜", base.Context.UserLocale.LCID); + this.ReportProperty.IsUIDesignerColumns = false; + // 简单账表类型:普通、树形、分页 + this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL; + this.IsCreateTempTableByPlugin = true; + // + this.IsCreateTempTableByPlugin = true; + // + this.ReportProperty.IsGroupSummary = true; + // + this.ReportProperty.SimpleAllCols = false; + // 单据主键:两行FID相同,则为同一单的两条分录,单据编号可以不重复显示 + this.ReportProperty.PrimaryKeyFieldName = "FID"; + // + this.ReportProperty.IsDefaultOnlyDspSumAndDetailData = true; + + // 设置精度控制 + var list = new List + { + new DecimalControlField("FDECIMALS", "OrigInvoiceAmount"), + new DecimalControlField("FDECIMALS", "ExchangeRate"), + new DecimalControlField("FDECIMALS", "InvoiceAmountTHB"), + new DecimalControlField("FDECIMALS", "MonthEndExRate"), + new DecimalControlField("FDECIMALS", "RevaluationAountInTHB"), + new DecimalControlField("FDECIMALS", "UnrealizedGainLoss"), + }; + this.ReportProperty.DecimalControlFieldList = list; + } + //设置报表表单单据头 + public override ReportHeader GetReportHeaders(IRptParams filter) + { + DynamicObject customFilter = filter.FilterParameter.CustomFilter; + + base.GetReportHeaders(filter); + + ReportHeader header = new ReportHeader(); + + header.AddChild("日期", new LocaleValue("日期"), SqlStorageType.SqlDatetime); + header.AddChild("制单人", new LocaleValue("制单人"), SqlStorageType.Sqlnvarchar); + header.AddChild("区域", new LocaleValue("区域"), SqlStorageType.Sqlnvarchar); + header.AddChild("业务员", new LocaleValue("业务员"), SqlStorageType.Sqlnvarchar); + header.AddChild("合同号", new LocaleValue("合同号"), SqlStorageType.Sqlnvarchar); + header.AddChild("客户", new LocaleValue("客户"), SqlStorageType.Sqlnvarchar); + header.AddChild("项目名", new LocaleValue("项目名"), SqlStorageType.Sqlnvarchar); + header.AddChild("物料编码", new LocaleValue("物料编码"), SqlStorageType.Sqlnvarchar); + header.AddChild("物料名称", new LocaleValue("物料编码"), SqlStorageType.Sqlnvarchar); + header.AddChild("规格型号", new LocaleValue("规格型号"), SqlStorageType.Sqlnvarchar); + header.AddChild("数量", new LocaleValue("数量"), SqlStorageType.SqlDecimal); + header.AddChild("含税单价", new LocaleValue("含税单价"), SqlStorageType.SqlDecimal); + header.AddChild("已发货数量", new LocaleValue("已发货数量"), SqlStorageType.SqlDecimal); + header.AddChild("已发货金额", new LocaleValue("已发货金额"), SqlStorageType.SqlDecimal); + header.AddChild("未发货数量", new LocaleValue("未发货数量"), SqlStorageType.SqlDecimal); + header.AddChild("未发货金额", new LocaleValue("未发货金额"), SqlStorageType.SqlDecimal); + header.AddChild("合同类型", new LocaleValue("合同类型"), SqlStorageType.Sqlnvarchar); + header.AddChild("发货条件", new LocaleValue("发货条件"), SqlStorageType.Sqlnvarchar); + + foreach (var item in header.GetChilds()) + { + item.Width = 160; + } + return header; + } + //查询报表数据 + public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) + { + base.BuilderReportSqlAndTempTable(filter, tableName); + DynamicObject customFilter = filter.FilterParameter.CustomFilter; + //获取开始日期 + string FstartDate = (customFilter["F_SDate"] == null) ? string.Empty : Convert.ToDateTime( + customFilter["F_SDate"]).ToString("yyyy-MM-dd"); + //获取结束日期 + string FEndDate = (customFilter["F_EDate"] == null) ? string.Empty : Convert.ToDateTime( + customFilter["F_EDate"]).ToString("yyyy-MM-dd"); + var FZZ = customFilter["F_YWZZ"] as DynamicObject; + string FSaleOrgId = ""; + if (FZZ != null) + { + FSaleOrgId = FZZ["Id"].ToString(); + } + string sql = String.Format(@"/*dialect*/ + EXEC GZTH_DDWFHMXB '{0}','{1}','{2}' + + SELECT + ROW_NUMBER() OVER (ORDER BY [日期]) AS FIDENTITYID, + * + INTO {3} + FROM GZ_DDWFHMX_TH + ORDER BY [日期] + ", FstartDate, FEndDate, FSaleOrgId, tableName); + DBUtils.Execute(this.Context, sql); + } + //设置报表合计列 + public override List GetSummaryColumnInfo(IRptParams filter) + { + var result = base.GetSummaryColumnInfo(filter); + result.Add(new SummaryField("数量", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("含税单价", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("已发货数量", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("已发货金额", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("未发货数量", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("未发货金额", BOSEnums.Enu_SummaryType.SUM)); + return result; + } + } +} diff --git a/bin/Debug/GZ_LTHReportForms.dll b/bin/Debug/GZ_LTHReportForms.dll index 20688069afe8f793e5fa2c89aa49d8e9d80cdf53..e139cc3da14de8252222d3e5aaf5250d4a9c569a 100644 GIT binary patch delta 2107 zcmai#du&s66vxl+-rnAJWo2Ev?!jYy*!8lFvaQO7b4D2s24h3oxs9=mL6(6JwzN1M z6N}a;G8WeSVw?{W-CX4Hhr$g6aFIm_kv|L&Vvs0fibM=?GBrX>FrIU_;JP$=Z|?VZ z&iS14`}O`Fy*pnMclL>WyIff%M-RZ%H3lw+i4_2hU_d_^TsIm!_>@^51*oCG7{GBc z=Cqj@%tE*0DnJQ$3i-T&d6PDLjv)s=BYZc@V_)!N%*)R5QRd1l#SZ9NfsX(Z7*+yo z<^YU8d9qktBfOo(3e=l(HyM~;t@7*;{(Jv^y}*s)JA-7G?FivA|=O2R!M90Z)cSH{i+C z4JaEZM-mhlwiZcg!6qlyS|CC<{scS>77#?`af~MEo3vR^4=+Wpy&MJf+H}W9XrALE zG{Nx^n%MZry)cj2=GFMZi*VGP3_zFb5|n3Yklcz;Q73eWnkvs>DAyM*qBQY;(tux9 zJY~a40PdFo6cZj|eB6O;p)Fh6!uWnLX2*lviLu%MWb^{yQhbXl07tO^Y8OAXCDw5)H|^r zUV(##Pq{IF0XxS1`Nc>KutxcpbZKNT{~Ge>!gkc(7nVj!=pO{mf>Ce@Zcr*GJ)7La zJn)I;y`JGR=phG=YhElvF${}2a3+p@rFl`D)EdmZHZ9W&x29!!;g4yV`0707JI}{` zsp^JByM;(5qoG>Zm~ofr0~3s(THze(9Jq<Fz9^X*R)jAaxK0J%oq=7kw#57 zK@LWqfi?qo@6s^*nL3EZ#gPMIB?TylD&AyIyzjR%* zMb-^pN+P3TH`+SATeHhq4|Pq-KP$>(+xd+mf7)KL9@i506v@=JmoN0cfaI>`$CDHO z`RWyaK_nvGXw7b8^5V6%fs@rtdN^>cj>%coAFizrGT9KE6}%H*(m-SJMkaUlk9Q^q znQ=?#omP8YZaz{XHv+wA6K^NXb zp&I+C!4uMrtG)w^7rl6v;Beay ztwWymEBB1Q*Qu82GgODVT{I`lhSXZKnI21npuT%-Sg<#z+&fF_gx^pc1zb>D(boQVBh6m?(z>#tV&%p^>wD2O0pd>r(Gx=RntyhWvY4jFHu7@NWPB delta 1061 zcmah|TS$~a6#nL)-EGtInzxd4_cvT~+l$I-SrIB~DXe5h(L*ghM0BN%E*iOFlx|io zlSmX&`BFj={t>G!DMs~N35ih&z9>ae58a+RGYQ#K1LxyA-#K&sGiT-x_3+SH-qUHX z%Kkoq`85rDZanh-)m>|Ui2o-I6^&ae7^oU8dEVnCE|06&BXXQeH(ZGW^fM&J z(@eP2w4;iH5wPp396amoAsaFOiJO1#DycGze?+A(OoCDytN*lp45E~SVS z4UWH&J1X+Z{hs26=P;q}Ef0j~9)NS1cB=(Cx|A2mbXf0k9lig=`jyu~L-teV{RNqM zh%Ly>!_x(sdE$-th4Hv3thEg@`H?Jz0XDt3g}Z2ULxib#M7RP|ggRyj3-ODvSYf%s zN~PD)g}KnElwAs&kx9yaR1gN?H&vn)R|z{XZfYj}oKW(Pt>pYPbtq?mc%gYf@h8N$ znV%>=Lp*GrQJk|@jF>r-n|0#f%(~*0?1C&UQKb3`#U@`-T07sN-iS#KbAGjp^S%>B z?fi%G|A}x;4^O^K3k|@E8ua1>*0blxCf#tA7Pn>aeD&%wUZ#9B^-t8@xNggsYxuOs z@C>(bBN~fonLyEJ-y2y+Bil{ZO+RDzun3RZlS-D)-F)C2s_pcD9qSsMO%Sosx|G!U ne^BmOBYAGbmagSY8s4$DOn9_xBVqg(*EW?I$= @FSDate) + AND (ISNULL(@FEDate,'') = '' OR A.FAPPROVEDATE < @ConvertedDate) + + INSERT INTO GZ_DDWFHMX_TH([FId],[FENTRYID],[],[Ƶ],[],[ҵԱ],[ͬ],[ͻ],[Ŀ], + [ϱ],[],[ͺ],[],[˰],[ͬ],[]) + SELECT * FROM #TEMP1 + + + SELECT + E.FID AS FID, + D.FENTRYID AS FENTRYID, + SUM(B.FQTY) AS 'ѷ', + SUM(BF.FAllAmount_LC) AS 'ѷ' + INTO #TEMP2 + FROM T_SAL_DELIVERYNOTICE A + INNER JOIN T_SAL_DELIVERYNOTICEENTRY B ON A.FID = B.FID + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_F BF ON BF.FENTRYID = B.FENTRYID + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK C ON B.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY' + INNEr JOIN T_SAL_ORDERENTRY D ON C.FSID = D.FENTRYID + INNER JOIN T_SAL_ORDER E ON D.FID = E.FID + WHERE + A.FDOCUMENTSTATUS = 'C' + AND (ISNULL(@FSaleOrgId,'') = '' OR E.FSaleOrgId = @FSaleOrgId) + AND(ISNULL(@FSDate,'') = '' OR E.FAPPROVEDATE >= @FSDate) + AND (ISNULL(@FEDate,'') = '' OR E.FAPPROVEDATE <= @ConvertedDate) + GROUP BY E.FID,D.FENTRYID + + UPDATE A + SET A.[ѷ] = B.[ѷ],A.[ѷ] = B.[ѷ] + FROM GZ_DDWFHMX_TH A + INNER JOIN #TEMP2 B ON A.FId = B.FID AND A.FENTRYID = B.FENTRYID + + UPDATE A + SET A.[δ] = ISNULL(A.[],0) - ISNULL(A.[ѷ],0),A.[δ] = B.FALLAMOUNT_LC - ISNULL(A.[ѷ],0) + FROM GZ_DDWFHMX_TH A + INNER JOIN T_SAL_ORDERENTRY_F B ON A.FENTRYID = B.FENTRYID + + DROP TABLE #TEMP1,#TEMP2 +END; -SELECT -A.FID AS FID, -A.FApproveDate AS '', -B.FNAME AS 'Ƶ', -CASE WHEN ISNULL(E.FNAME,'') = '' THEN ACG. -ELSE ACE. END AS '', -CASE WHEN ISNULL(E.FNAME,'') = '' THEN G.FNAME -ELSE E.FNAME END AS 'ҵԱ', -A.F_contractnumber AS 'ͬ', -F.FNAME AS 'ͻ', -H.FNAME AS 'Ŀ', -WL.FNUMBER AS 'ϱ', -WL_L.FNAME AS '', -WL_L.FSpecification AS 'ͺ', -AE.FQTY AS '', -AE_F.FTaxPrice AS '˰', -HT_L.FDATAVALUE AS 'ͬ', -A.F_Deliveryconditions AS '' -FROM T_SAL_ORDER A -INNER JOIN T_SEC_USER B ON A.FCreatorId = B.FUSERID --û -INNER JOIN V_BD_SALESMAN_L G ON G.FID = A.FSALERID -- Ա۶ -LEFT JOIN T_PerformanceSharing C ON C.FSOURCEBILLNO = A.FBILLNO AND C.FDOCUMENTSTATUS = 'C' --ҵ̯ -LEFT JOIN T_PerformanceSharingEntry D ON C.FID=D.FID --ҵ̯ϸ -LEFT JOIN V_BD_SALESMAN_L E ON E.fid= D.FSaleId --Ա,ҵ̯ -LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACE ON ACE.=E.FNAME --ҵ̯Ա -LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACG ON ACG.=G.FNAME --۶ҵԱ -INNER JOIN T_BD_CUSTOMER_L F ON F.FCUSTID = A.FCustId --ͻ -INNER JOIN T_BAS_PREBDONE_L H ON H.FID = A.F_projectname --ĿƱ -INNER JOIN T_SAL_ORDERENTRY AE ON AE.FID = A.FID --۶ϸ -INNER JOIN T_BD_MATERIAL WL ON WL.FMATERIALID = AE.FMaterialId --ϱ -INNER JOIN T_BD_MATERIAL_L WL_L ON WL_L.FMATERIALID = WL.FMATERIALID --_L -INNER JOIN T_SAL_ORDERENTRY_F AE_F ON AE_F.FENTRYID = AE.FENTRYID --۶ϸ- -INNER JOIN T_BAS_ASSISTANTDATAENTRY_L HT_L On A.F_Ordercategory = HT_L.FENTRYID --ͬ͸_L -WHERE A.FDocumentStatus = 'C'