电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

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

来源:金蝶云社区作者:金蝶2024-09-168

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

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");
         

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

using Kingdee.BOS;using Kingdee.BOS.App;using Kingdee.BOS.Contracts;using Kingdee.BOS.Contracts.Report;using Kingdee.BOS.Core...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信