总账账龄分析表二开——增加客户按“关联公司”过滤及显示“关联公司”列

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

总账账龄分析表二开——增加客户按“关联公司”过滤及显示“关联公司”列

  • 背景需求

关联公司作为客户,在出账龄时,有时候希望排除在账龄核销范围之外,即不参与账龄核销。同时,当关联公司参与核销时,能在查询结果中标示出来,以便财务人员区分。 

  • 主要思路

1,在客户表中增加一列“是否关联公司”,用于标示客户的身份。 

2,过滤条件界面,增加一个选项:客户维度关联公司不参与核销(默认不勾选,表示参与);在显示隐藏列增加一列:“是否关联公司”,用于当参与核销时,在最终查询结果表中显示。 

3,查询时,当核算维度为客户时,如果“客户维度关联公司不参与核销”不勾选,则按原有逻辑处理,但在结果中需要显示“是否关联公司”一列。否则,在主取数SQL条件上增加“不等于关联公司”这一过滤条件,以便排除关联公司。这样便达到了关联公司不参与核销的效果。 

  •  详细步骤

1,客户表中增加一列“是否关联公司”,略 

2,显示隐藏表中增加列:如下图所示:

downloadfile.webp

3,快捷条件中,增加选项:客户维度关联公司不参与核销(默认不勾选,表示参与)。当选择的核算维度中有客户时,该选项才可用,否则不可用且不勾选。当勾选时,显示隐藏列中的“是否有关联公司”取消勾选,反之,勾选。 

4,插件开发,这是二开的核心, 

1)插件类继承官方原插件类,如: public class AgingScheduleForABC : AgingScheduleReportService,作为服务端插件,挂在“总账账龄分析表”的服务器插件上,需要同时取消官方原插件,否则会重复。

2)在插件中取“客户维度关联公司不参与核销”选项的值,以便后面使用。 

public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
{
     //快捷过滤条件
     DynamicObject dyFilterobj = filter.FilterParameter.CustomFilter;
     if (dyFilterobj != null)
     {
          if (dyFilterobj.Contains("PriorityStartDate"))
          {    
                //是否关联公司不参与核销
                filterIsAffiliate = Convert.ToBoolean(dyFilterobj["IsAffiliate"]);
          }
     }
     //继续执行父类的方法
     base.BuilderReportSqlAndTempTable(filter, tableName);
}

3)当勾选“客户维度关联公司不参与核销”时,在取数SQL中添加过滤条件

public override string BuilderBaseDataSql()
{    
    //父类生成的SQL。
    var strSql = base.BuilderBaseDataSql();
    if(包含客户 && !filterIsAffiliate)
    {
        return 取strSql的条件,并拼接“ AND 是否关系公司=‘N’”//难点,需要仔细研究父类生成的SQL,并恰当的增加新条件。
    }
}

4)如果勾选了显示隐藏列中的“是否有关联公司”,则在结果中显示“是否有关联公司”列 

public override ReportHeader GetReportHeaders(IRptParams filter)
{
    var header = base.GetReportHeaders(filter);
    //添加表头列
    List<ColumnField> fields = filter.FilterParameter.ColumnInfo;
    for (int i = 0, j = 0; i < fields.Count; i++)
            {
                ColumnField field = fields[i];
                switch (field.Key.ToUpperInvariant())
                {
                    case "是否关系公司ID":
                        //添加是否关系公司列
                        header.AddChild(field.Key,"是否关系公司", SqlStorageType.Sqlnvarchar, field.Visible).ColIndex = j++; 
                        break;
                }
        }
    return header;
}



老师,总账账龄分析表,后续有没有考虑添加坏账准备计算的逻辑?相当一部分客户是根据总账账龄计提坏账而不是往来模块


大牛,收藏下,能发下示例代码吗?

总账账龄分析表二开——增加客户按“关联公司”过滤及显示“关联公司”列

背景需求关联公司作为客户,在出账龄时,有时候希望排除在账龄核销范围之外,即不参与账龄核销。同时,当关联公司参与核销时,能在查询结果...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息