D365 使用 X++ 代码为销售订单生成领料单


前言

转载。


一、详细

传递给此方法的两个参数是销售表的记录和具有销售行的 InventTransId 列表的容器。
该方法将返回已注册领料单的领料路线 ID。
代码如下:

public WMSPickingRouteID generatePickingFromSalesLines(
                                             SalesTable _salesTable,  
                                             container  _salesLineReferences)
    {
        SalesFormLetter          salesFormLetter;
        SalesParmLine            salesParmLine;
        FormletterOutputContract outputContract;
        WMSPickingRoute          wmsPickingRoute;
    
        salesFormLetter = SalesFormLetter::construct(DocumentStatus::PickingList);

        salesFormLetter.salesTable(_salesTable);
        salesFormLetter.initParmSalesTable(salesFormLetter.salesTable());
        salesFormLetter.transDate(DateTimeUtil::getSystemDate(DateTimeUtil::getUserPreferredTimeZone()));
        salesFormLetter.specQty(SalesUpdate::All);
        salesFormLetter.proforma(salesFormLetter.salesParmUpdate().Proforma);
        salesFormLetter.printFormLetter(salesFormLetter.printFormLetter());
        salesFormLetter.printCODLabel(NoYes::No);
        salesFormLetter.printShippingLabel(NoYes::No);
        salesFormLetter.usePrintManagement(false);
        salesFormLetter.creditRemaining(salesFormLetter.creditRemaining());

        salesFormLetter.createParmUpdateFromParmUpdateRecord(
        SalesFormletterParmData::initSalesParmUpdateFormletter(
                                        salesFormLetter.documentStatus(),                                                                
                                        salesFormLetter.pack(),
                                        true,
                                        false,
                                        false));

        salesFormLetter.initParameters(
                                      salesFormLetter.salesParmUpdate(),
                                      Printout::Current);
        salesFormLetter.initLinesQuery();

        // Delete unwanted records in SalesParmLine
        while select forupdate salesParmLine
        where salesParmLine.ParmId == salesFormLetter.parmId()
        {
         if (conFind(_salesLineReferences, salesParmLine.InventTransId) == 0)
            {
                salesParmLine.delete();
            }
        }

        salesFormLetter.run();

        outputContract  = salesFormLetter.getOutputContract();
        wmsPickingRoute = outputContract.parmJournal();

        return wmsPickingRoute.pickingRouteID;
    }

二、直接

代码如下:

SalesFormLetter          salesFormLetter;
salesFormLetter = SalesFormLetter::construct(DocumentStatus::PickingList);
salesFormLetter.update(salesTable);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值