This commit is contained in:
李狗蛋 2025-04-15 19:52:56 +08:00
parent b595f279c8
commit c9a8a895d3
4 changed files with 232 additions and 45 deletions

127
DDWFHMX.cs Normal file
View File

@ -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<DecimalControlField>
{
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<SummaryField> 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;
}
}
}

Binary file not shown.

View File

@ -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)
VARCHAR(5000),
VARCHAR(5000)
);
--DROP TABLE GZ_DDWFHMX_TH

View File

@ -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'