• 销售订单交货计划


    业务场景:销售订单行的交货计划,可以按订单行进行拆分交货,系统的拆分计划,在销售订单没有关联项目Id时,可以使用,有项目ID的销售订单行是不可以使用交货计划的。

    我主要分享下下面两个知识点,也可能是大家经常遇到的;

    1.交货计划的可编辑性:

    一般的按钮编辑都是在Form下写方法控制,但部分Form的可编辑性是在类中实现的,销售订单就是个例子:

    控制销售订单按钮可编辑性的类:SalesTableInteractionHelper

    比如行上的交货计划按钮就是在SalesTableInteractionHelper类中的isOpenOrderNotReturnNotProjectRelatedSalesLine中控制:

      private boolean isOpenOrderNotReturnNotProjectRelatedSalesLine()
        {
            return (salesTable.SalesType == SalesType::Sales || salesTable.SalesType == SalesType::Journal)
                 && salesLine.SalesStatus == SalesStatus::Backorder           // Open order status
                 && salesLine.SalesQty >= 0 ;                                 // No negative qty
                //当销售订单上的项目号有值时,也可以使用订单行上的交货计划按钮--Sunny Add start
                /*
                 && !salesTable.ProjId;                                     // not part of a project
                */
            //Sunny Add end
        }

    2.交货计划拆分行时,其新行上的字段从原行中复制而来,即会执行SalesLine上的InitFromSalesline方法,和initFromOrderLineWithMultipleDeliveries方法,一般新加的字段可在这两个方法中进行初始化;

    但例外的是,部分字段会被清空,比如项目Id,跟代码可以看到,这是因为系统再init方法中执行后,在后面的SalesLineType_Project类的初始化时会清空,如果需要带出项目类别,则我们可以重写此类下的初始化方法。当然这是一个字段,要是有其他字段也可类似找方法:

    //交货计划拆分时带出项目类别--
    [ExtensionOf(classstr(SalesLineType_Project))]
    final class SalesLineType_Project_Extension
    {
        void initValue()
        {
            SalesLine       saleslineOrig;
            ProjCategoryId  projCategoryId;
    
            saleslineOrig   = this.salesLine;
            projCategoryId  = saleslineOrig.ProjCategoryId;
    
            next initValue();
    
            if(!saleslineOrig.ProjCategoryId)
            {
                saleslineOrig.ProjCategoryId = projCategoryId;
            }
    
        }
    
    }

    一周没更新了。。。

  • 相关阅读:
    duilib布局
    C++中嵌入网页(duilib编辑框的实现)
    拖拽的实现
    调试URL(写文件)
    如何使用DataBinder.Eval()方法进行数据绑定
    GridVew,DataList,Repeater分页用户控件(第一版)
    关于何种情况下使用DataGrid、DataList或Repeater的一些讨论(转)
    使用PagedDataSource类实现DataList和Repeater控件的分页显示功能
    一个取得数据控件模板中输入框值的类
    在GridView中自定按钮,实现删除和更新
  • 原文地址:https://www.cnblogs.com/sunny-technology/p/9415439.html
Copyright © 2020-2023  润新知