销售业绩对比表--待完善,有报错

using Kingdee.BOS;
using Kingdee.BOS.App;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Contracts.Report;
using Kingdee.BOS.Core.CommonFilter;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Resource;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using Kingdee.BOS.App.Data;
namespace HMXJ1.Bussiness.PlugIn
{
[Description("销售业绩对比表")]
public class SalArchievementComparisonRptServicePlugIn : SysReportBaseService
{
//过滤字段
long _cusNumStart = 0L; //客户代码起
long _cusNumEnd = 0L; //客户代码至
string _year = string.Empty; //年度
string _month = string.Empty; //期间
DateTime _timeStart = new DateTime(); //开始日期
DateTime _timeEnd = new DateTime(); //结束日期
DateTime _lastTimeStart = new DateTime(); //上年开始日期
DateTime _lastTimeEnd = new DateTime(); //上年结束日期
string _attribute = string.Empty; //产品属性
//构建表头
public override ReportHeader GetReportHeaders(IRptParams filter)
{
ReportHeader header = new ReportHeader();
ListHeader headChild1 = header.AddChild("CNUMBER", new LocaleValue("客户代码"));
headChild1.Width = 100;
ListHeader headChild2 = header.AddChild("CNAME", new LocaleValue("客户名称"));
headChild2.Width = 100;
ListHeader headChild3 = header.AddChild("ATTRIBUTE", new LocaleValue("产品属性"));
headChild3.Width = 100;
ListHeader headChild4 = header.AddChild("MNUMBER", new LocaleValue("物料代码"));
headChild4.Width = 100;
ListHeader headChild5 = header.AddChild("MNAME", new LocaleValue("物料名称"));
headChild5.Width = 100;
ListHeader headChild6 = header.AddChild("QTY", new LocaleValue("数量"));
headChild6.Width = 100;
ListHeader headChild7 = header.AddChild("AMT", new LocaleValue("金额"), SqlStorageType.SqlDecimal);
headChild7.Width = 100;
ListHeader headChild8 = header.AddChild("LASTYEARQTY", new LocaleValue("上年同期数量"));
headChild8.Width = 100;
ListHeader headChild9 = header.AddChild("LASTYEARAMT", new LocaleValue("上年同期金额"), SqlStorageType.SqlDecimal);
headChild9.Width = 100;
ListHeader headChild10 = header.AddChild("QTYRATE", new LocaleValue("增长比例(数量)"));
headChild10.Width = 100;
ListHeader headChild11 = header.AddChild("AMTRATE", new LocaleValue("增长比例(金额)"));
headChild11.Width = 100;
return header;
}
//设置精度
private void SetDecimalControl()
{
Listlist = new List();
list.Add(new DecimalControlField
{
ByDecimalControlFieldName = "AMT",
DecimalControlFieldName = "FPRECISION"
});
list.Add(new DecimalControlField
{
ByDecimalControlFieldName = "LASTYEARAMT",
DecimalControlFieldName = "FPRECISION"
});
this.ReportProperty.DecimalControlFieldList = list;
}
private string sqlBilder()
{
StringBuilder sql = new StringBuilder();
sql.AppendLine(" SELECT ROW_NUMBER() over(order by grouping(CUSTOMER.FNUMBER),CUSTOMER.FNUMBER) SEQ");
sql.AppendLine(" ,CASE");
sql.AppendLine(" WHEN GROUPING(CUSTOMER.FNUMBER) = 1 THEN '合计'");
sql.AppendLine(" WHEN GROUPING(ASSISTANTDATAENTRY_L.FDATAVALUE)=1 AND GROUPING(MATERIAL.FNUMBER)=1 THEN '小计'");
sql.AppendLine(" ELSE CUSTOMER.FNUMBER ");
sql.AppendLine(" END CNUMBER --客户编码");
sql.AppendLine(" ,CASE");
sql.AppendLine(" WHEN GROUPING(ASSISTANTDATAENTRY_L.FDATAVALUE)=1 AND GROUPING(MATERIAL.FNUMBER)=1 THEN NULL");
sql.AppendLine(" ELSE MAX(CUSTOMER_L.FNAME)");
sql.AppendLine(" END CNAME --客户名称");
sql.AppendLine(" ,CASE");
sql.AppendLine(" WHEN GROUPING(CUSTOMER.FNUMBER) = 1 THEN NULL");
sql.AppendLine(" WHEN GROUPING(ASSISTANTDATAENTRY_L.FDATAVALUE) = 1 THEN NULL");
sql.AppendLine(" WHEN GROUPING(ASSISTANTDATAENTRY_L.FDATAVALUE) = 0 AND GROUPING(MATERIAL.FNUMBER)=1 THEN '小计'");
sql.AppendLine(" ELSE ASSISTANTDATAENTRY_L.FDATAVALUE");
sql.AppendLine(" END ATTRIBUTE --产品属性");
sql.AppendLine(" ,MATERIAL.FNUMBER MNUMBER --物料代码");
sql.AppendLine(" ,CASE");
sql.AppendLine(" WHEN GROUPING(MATERIAL.FNUMBER)=1 THEN NULL");
sql.AppendLine(" ELSE MAX(MATERIAL_L.FNAME) END MNAME --物料名称");
sql.AppendLine(" ,SUM(OUTSTOCKENTRY.FREALQTY) QTY --数量");
sql.AppendLine(" ,SUM(OUTSTOCKENTRY_F.FALLAMOUNT) AMT --金额");
sql.AppendLine(" ,SUM(LASTYEAR.FREALQTY) LASTYEARQTY --上年同期数量");
sql.AppendLine(" ,SUM(LASTYEAR.FALLAMOUNT) LASTYEARAMT --上年同期金额");
sql.AppendLine(" ,CASE");
sql.AppendLine(" WHEN SUM(LASTYEAR.FREALQTY) = 0 THEN NULL");
sql.AppendLine(" WHEN GROUPING(CUSTOMER.FNUMBER) = 1 OR GROUPING(ASSISTANTDATAENTRY_L.FDATAVALUE) = 1 OR GROUPING(MATERIAL.FNUMBER) = 1 THEN NULL");
sql.AppendLine(" ELSE (SUM(OUTSTOCKENTRY.FREALQTY)-SUM(LASTYEAR.FREALQTY))/SUM(LASTYEAR.FREALQTY)");
sql.AppendLine(" END QTYRATE --增长比例(数量)");
sql.AppendLine(" ,CASE");
sql.AppendLine(" WHEN SUM(LASTYEAR.FALLAMOUNT) = 0 THEN NULL");
sql.AppendLine(" WHEN GROUPING(CUSTOMER.FNUMBER) = 1 OR GROUPING(ASSISTANTDATAENTRY_L.FDATAVALUE) = 1 OR GROUPING(MATERIAL.FNUMBER) = 1 THEN NULL");
sql.AppendLine(" ELSE(SUM(OUTSTOCKENTRY_F.FALLAMOUNT)-SUM(LASTYEAR.FALLAMOUNT))/SUM(LASTYEAR.FALLAMOUNT)");
sql.AppendLine(" END AMTRATE --增长比例(金额)");
sql.AppendLine(" ,MAX(CURRENCY.FAMOUNTDIGITS) FPRECISION --金额精度");
sql.AppendLine(" FROM T_SAL_OUTSTOCK OUTSTOCK --销售出库单");
sql.AppendLine(" LEFT JOIN T_SAL_OUTSTOCKFIN OUTSTOCKFIN ON OUTSTOCK.FID = OUTSTOCKFIN.FID --财务信息");
sql.AppendLine(" LEFT JOIN T_SAL_OUTSTOCKENTRY OUTSTOCKENTRY ON OUTSTOCK.FID = OUTSTOCKENTRY.FID");
sql.AppendLine(" LEFT JOIN T_SAL_OUTSTOCKENTRY_F OUTSTOCKENTRY_F ON OUTSTOCKENTRY.FENTRYID = OUTSTOCKENTRY_F.FENTRYID");
sql.AppendLine(" --客户");
sql.AppendLine(" LEFT JOIN T_BD_CUSTOMER CUSTOMER ON OUTSTOCK.FCUSTOMERID = CUSTOMER.FCUSTID");
sql.AppendLine(" LEFT JOIN T_BD_CUSTOMER_L CUSTOMER_L ON CUSTOMER.FCUSTID = CUSTOMER_L.FCUSTID");
sql.AppendLine(" --物料");
sql.AppendLine(" LEFT JOIN T_BD_MATERIAL MATERIAL ON MATERIAL.FMATERIALID = OUTSTOCKENTRY.FMATERIALID");
sql.AppendLine(" LEFT JOIN T_BD_MATERIAL_L MATERIAL_L ON MATERIAL.FMATERIALID = MATERIAL_L.FMATERIALID");
sql.AppendLine(" --产品属性");
sql.AppendLine(" LEFT JOIN T_BAS_ASSISTANTDATAENTRY_L ASSISTANTDATAENTRY_L ON MATERIAL.FASSISTANT1 = ASSISTANTDATAENTRY_L.FENTRYID");
销售业绩对比表--待完善,有报错
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



