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 2068806..e139cc3 100644 Binary files a/bin/Debug/GZ_LTHReportForms.dll and b/bin/Debug/GZ_LTHReportForms.dll differ diff --git a/派诺报表SQL文件/订单未发货明细表创建表单sql.sql b/派诺报表SQL文件/订单未发货明细表创建表单sql.sql index 39c2f8a..7600948 100644 --- a/派诺报表SQL文件/订单未发货明细表创建表单sql.sql +++ b/派诺报表SQL文件/订单未发货明细表创建表单sql.sql @@ -1,20 +1,24 @@ CREATE TABLE GZ_DDWFHMX_TH ( FId INT, + FENTRYID INT, DATE, - Ƶ VARCHAR(200), - VARCHAR(200), - ҵԱ VARCHAR(200), - ͬ VARCHAR(200), - ͻ VARCHAR(200), - Ŀ VARCHAR(200), - ϱ VARCHAR(200), - ͺ VARCHAR(200), + Ƶ VARCHAR(5000), + VARCHAR(5000), + ҵԱ VARCHAR(5000), + ͬ VARCHAR(5000), + ͻ VARCHAR(5000), + Ŀ VARCHAR(5000), + ϱ VARCHAR(5000), + VARCHAR(5000), + ͺ VARCHAR(5000), DECIMAL(23, 10), ˰ DECIMAL(23, 10), ѷ DECIMAL(23, 10), ѷ DECIMAL(23, 10), δ DECIMAL(23, 10), δ DECIMAL(23, 10), - ͬ VARCHAR(200), - VARCHAR(200) -); \ No newline at end of file + ͬ VARCHAR(5000), + VARCHAR(5000) +); + +--DROP TABLE GZ_DDWFHMX_TH \ No newline at end of file diff --git a/派诺报表SQL文件/订单未发货明细表插入数据SQL.sql b/派诺报表SQL文件/订单未发货明细表插入数据SQL.sql index 1e85b0b..3876807 100644 --- a/派诺报表SQL文件/订单未发货明细表插入数据SQL.sql +++ b/派诺报表SQL文件/订单未发货明细表插入数据SQL.sql @@ -1,35 +1,91 @@ +ALTER PROCEDURE GZTH_DDWFHMXB + @FSDate nvarchar(1000), + @FEDate nvarchar(1000), + @FSaleOrgId nvarchar(1000) +AS +BEGIN + DECLARE @ConvertedDate DATE; + + SET @ConvertedDate = CONVERT(DATE, @FEDate, 120); + -- ϼһ + SET @ConvertedDate = DATEADD(DAY, 1, @ConvertedDate); + + TRUNCATE TABLE GZ_DDWFHMX_TH + + SELECT + A.FID AS FID, + AE.FENTRYID AS FENTRYID, + 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 '' + INTO #TEMP1 + 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' + AND (ISNULL(@FSaleOrgId,'') = '' OR A.FSaleOrgId = @FSaleOrgId) + AND (ISNULL(@FSDate,'') = '' OR A.FAPPROVEDATE >= @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'