关于SalesLine上Inquiries->Explosion 功能的代码一步实现

本文介绍了一种方法,用于自动计算并更新销售订单中的确认发货日期,通过使用特定的代码逻辑来代替手动操作,提高了效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过salesLine上的Explosion功能,可根据生产计划以及提前期更新salesLine的Confirmed ship date. 使用此功能是需要进行诸多点击数边操作:

1)     Select SO line

2)     Inquiries button – Explosion.

3)     Click on “Update” button

4)     Click OK with the following options:

5)     If the requested ship date cannot be met, this generates a futures date. Click on “Transfer futures date”. If the date can be met, the “Transfer futures date” button is grayed out.

6)     If the “Transfer futures date” is clicked, the futures date gets copied to SalesLine.ShippingDateConfirmed field

 

 

 

有需求需要在salesorder类型由journal 转化到 salesorder类型时,自动计算更新salesLine上的Confirmed ship date,自动过成代码如下:

static void Job11(Args _args)
{
    ReqCalcExplode          reqCalcExplode ;
    Reqtrans        reqTrans;
    salesline       salesline;
    ItemId          itemId;

    ;
    while select forupdate salesline
        where salesLine.SalesId == 'SO-100465'
        {
            select reqTrans
                where reqTrans.RefType == ReqRefType::Sales
                   && reqTrans.InventTransId == salesLine.InventTransId;

            if(reqTrans)

                //通过ReqTrans构造reqCalcExplode 类对象
                reqCalcExplode = ReqCalcExplode::newReqTransPrompt(reqTrans);
            else
            {
                itemId = salesLine.ItemId;

                // 由ItemId构造ReqTrans,其中用到一个inventSumLogTTS表记录,在salesLine产生时对应自动创建

               //inventSumLogTTS记录
                reqTransUpdate::runItemId(itemId);


                select reqTrans
                where reqTrans.RefType == ReqRefType::Sales
                   && reqTrans.InventTransId == salesLine.InventTransId;

                if(reqTrans)
                    reqCalcExplode = ReqCalcExplode::newReqTransPrompt(reqTrans);
            }

            ttsbegin;
            if(reqCalcExplode)

                //run方法中计算ReqTrans
                reqCalcExplode.run();
            ttscommit;

            select reqTrans
                where reqTrans.RefType == ReqRefType::Sales
                   && reqTrans.InventTransId == salesLine.InventTransId;
            info(strfmt('reqTrans.FuturesDate :%1', reqTrans.FuturesDate));
            info(strfmt('reqTrans.ReqDateDlvOrig :%1', reqTrans.ReqDateDlvOrig));

            //是否需要更新salesLine.ShippingDateConfirmed 的条件

            if(reqTrans.RecId && reqTrans.FuturesDate > reqTrans.ReqDateDlvOrig)
            {
                salesLine.ShippingDateConfirmed = reqTrans.FuturesDate;

                ttsbegin;
                salesLine.update();
                ttscommit;
            }

        }

}

具体几个类的内部实现逻辑,我也不是很明白,还在学习中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值