zoukankan      html  css  js  c++  java
  • 代码创建销售订单

    static void CreateSalesOrder(Args _args)
    {
        SalesTable                              salesTable;
        SalesLine                               salesLine;
        NumberSeq                               numberSeq;
        date                                    ShippingDateRequestedDate;
        date                                    ReceiptDateRequestedDate;
        DimensionAttribute                      dimensionAttribute;
        DimensionAttributeValueSetStorage       dimensionStorage;
        DimensionAttributeValue                 newDimensonValue;
        InventTableModule                       inventTableModule;
        CustTable                               custTable;
        InventTable                             inventTable;
        InventDim                               inventDim;
        InventBatch                             inventBatch;
        InventSerial                            inventSerial;
    
        try
        {
            ttsBegin;
    
            //Create sales order header.
            salesTable.clear();
    
            //Number sequence automatically gets the next number as per system's configuration
            //SalesId is mandatory to create sales order
            numberSeq                           = NumberSeq::newGetNum(SalesParameters::numRefSalesId());
            numberSeq.used();
    
            salesTable.SalesId                  = numberSeq.num();
            salesTable.initValue();
    
            //Create sales type
            salesTable.SalesType                = str2Enum(SalesType::Sales, "salesTypeValue");
    
            //CustAccount is mandatory to create sales order
            salesTable.CustAccount              = "CNMF-000033";
            salesTable.initFromCustTable();
            salesTable.InclTax                  = noyes::Yes;
            salesTable.TaxGroup                 = "taxGroupId";
            salesTable.LanguageId               = currentUserLanguage();
            salesTable.ShippingDateRequested    = today();
            salesTable.ReceiptDateRequested     = today();
            salesTable.modifiedFieldDDC(fieldNum(salesTable, ShippingDateRequested));
            salesTable.InvoiceAccount           = "CNMF-000001";
            salesTable.CurrencyCode             = "CNY";
            salesTable.CustGroup                = "40";
            //It will be used to set the Site & Warehouse and create inventory dimension id
            if(InventLocation::find("WarehouseNum").InventLocationId != "")
            {
                salesTable.InventSiteId         = InventLocation::find("WarehouseNum").InventSiteId;
                salesTable.InventLocationId     = inventlocation::find("WarehouseNum").InventLocationId;
            }
            salesTable.insert();
    
            try
            {
                salesLine.clear();
                salesLine.initValue();
                salesLine.initFromSalesTable(salesTable);
    
                salesLine.SalesStatus               = SalesStatus::Backorder;  //状态:未结订单
    
                //Init from itmeid.
                inventTable                         = InventTable::find("CNMF-6666666", false);
                salesLine.ItemId                    = inventTable.ItemId;
                salesLine.SalesUnit                 = inventTable.salesUnitId();
                salesLine.initFromInventTable(inventtable::find(salesLine.ItemId));
                salesLine.modifyField(fieldNum(SalesLine, ItemId));
    
                inventTableModule                   = InventTableModule::find(inventTable.ItemId, ModuleInventPurchSales::Sales);
                salesLine.TaxItemGroup              = InventTableModule.TaxItemGroupId; //销售税(物料)组
                salesLine.SalesQty                  = 20;
                SalesLine::modifySalesQty(salesLine, salesLine.inventDim(),false);
                salesLine.SalesPrice                = 10.1;
                salesLine.ShippingDateRequested     = today(); //要求装运日期
                salesLine.ReceiptDateRequested      = today(); //要求接受日期
    
                //Init from custTable
                custTable = CustTable::find("CNMF-000025", false);
                if(custTable)
                {
                    salesLine.CustAccount               = custTable.AccountNum;
                    salesLine.initFromCustTable();      //带出客户上的销售税组
                }
                else
                {
                    throw error("客户编号不存在!");
                }
    
                inventBatch = InventBatch::find("inventBatchId", "000102", false);
                if(!inventBatch)
                {
                    if (inventBatch.RecId == 0)
                    {
                        inventBatch.inventBatchId   = "inventBatchId";
                        inventBatch.itemId          = "000102";
                        inventBatch.expDate         = dateNull();
                        inventBatch.insert();
                    }
                }
                inventSerial = InventSerial::find("InventSerieId", "000102", false);
                if (inventSerial.RecId == 0)
                {
                    inventSerial.InventSerialId     = "InventSerieId";
                    inventSerial.ItemId             = "000102";
                    inventSerial.insert();
                }
                inventdim                           = salesLine.inventDim();
                inventdim.inventBatchId             = inventBatch.inventBatchId;    //批次号
                inventdim.inventSerialId            = inventSerial.InventSerialId;  //序列号
                inventdim.InventSiteId              = "SH";                         //站点
                inventdim.InventLocationId          = "SH-01";                      //仓库
                inventdim.wMSLocationId             = "01-01-01";                   //库位
    
                inventdim                           = inventdim::findOrCreate(inventdim);
                salesLine.InventDimId               = inventdim.inventDimId;
    
                //客户维度为例
                if(salesLine.CustAccount && DimensionAttribute::findByName("Customer"))
                {
                    dimensionAttribute  = DimensionAttribute::findByName("Customer");
                    newDimensonValue    = DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, salesLine.CustAccount, false, true);
                    dimensionStorage    = DimensionAttributeValueSetStorage::find(salesLine.DefaultDimension);
                    dimensionStorage.addItem(newDimensonValue);
                }
                salesLine.DefaultDimension  = dimensionStorage.save();
    
                InventMovement::bufferSetRemainQty(salesLine);  //updating the inventory transactions.
                salesLine.insert();
                info(strFmt("已创建销售订单:%1", salesTable.SalesId));
            }
            catch(Exception::Error)
            {
                ttsAbort;
            }
            ttsCommit; 
        }
        catch(Exception::Error)
        {
            ttsAbort;
        }
    }
    

      

  • 相关阅读:
    from...import...导入模块
    import 导入模块
    模块介绍
    面向过程编程
    生成器表达式
    maven打包项目到nexus私服
    Centos安装solr-5.5.5.tgz
    记录一个spring框架搭建的错误
    dubbo、zookeeper和spring整合
    Centos安装配置weblogic
  • 原文地址:https://www.cnblogs.com/sunny-technology/p/11763963.html
Copyright © 2011-2022 走看看