Wednesday 18 December 2019

intercompany PO multiple product receipt by x++

public void processStampICPO(PackingSlipId _deliveryNote,
                            Transdate _deliverydate,
                            InterCompanyCompanyId _dataAreaID,
                            custPackingSlipJour _custPackingSlipJour)
{
    SalesTable              salesTable;
    CustPackingSlipJour     custPackingSlipJour =_custPackingSlipJour;
    CustPackingSlipTrans    custPackingSlipTrans;
    PurchLine               purchLine;
    int                     i,j;
    boolean                 isPosted;
    PurchId                 purchId;
    utcDateTime             currentDatetime;
    date                    currentDate;
    SON_InterCompanyPurchView   interPurchTable;
    InventTransId           interInventTrans;

    //currentDatetime = DateTimeUtil::utcNow();
    //currentDatetime = DateTimeUtil::applyTimeZoneOffset(currentDatetime,DateTimeUtil::getUserPreferredTimeZone());
    //currentDate     = DateTimeUtil::date(currentDatetime);
//
    //while select forUpdate SON_DDDeliveryNote,DeliveryDate,InterCompanyCompanyId,
    //SON_IsIntercompanyPOPosted,PackingSlipId from custPackingSlipJour
        //where custPackingSlipJour.SON_IsIntercompanyPOPosted == NoYes::No
        //&& custPackingSlipJour.SON_DDDeliveryNote != ''
        //&& custPackingSlipJour.DeliveryDate <= currentDate
    //join SalesId,SalesStatus from salesTable
        //where salesTable.SalesId == custPackingSlipJour.SalesId
        //&& salesTable.SalesStatus != SalesStatus::Invoiced
        //&& salesTable.SalesStatus != SalesStatus::Canceled
    //join InterCompanySalesId,PurchStatus from interPurchTable
        //where interPurchTable.InterCompanySalesId == salesTable.SalesId
        //&& interPurchTable.PurchStatus == PurchStatus::Backorder

    {
        //deliveryNote = custPackingSlipJour.SON_DDDeliveryNote;
        //deliveryDate = custPackingSlipJour.DeliveryDate;
        //interCompany = custPackingSlipJour.InterCompanyCompanyId;

       // custPackingSlipJour as _custPackingSlipJour;

        deliveryNote = _deliveryNote;
        deliveryDate = _deliverydate;
        interCompany = _dataAreaID;


        if(interCompany == '0001')
        {
            while select InterCompanyInventTransId,Qty from custPackingSlipTrans
                where custPackingSlipTrans.PackingSlipId == custPackingSlipJour.PackingSlipId
            {
                purchLine.clear();
                select forUpdate * from purchLine
                    where purchLine.InventTransId == custPackingSlipTrans.InterCompanyInventTransId;
                if(purchLine)
                {
                    ttsBegin;
                    purchLine.PurchReceivedNow = custPackingSlipTrans.Qty;
                    purchLine.setInventReceivedNow();
                    purchLine.doUpdate();
                    ttsCommit;
                    purchId = purchLine.PurchId;
                }

            }
        }
        else
        {
            while select crossCompany InventTransId,Qty from custPackingSlipTrans
                where custPackingSlipTrans.PackingSlipId == custPackingSlipJour.PackingSlipId
            {
                interInventTrans = custPackingSlipTrans.InventTransId;

                select forUpdate  crossCompany * from purchLine
                    where purchLine.InterCompanyInventTransId == interInventTrans
                        && purchLine.PurchStatus == PurchStatus::Backorder;
                if(purchLine)
                {
                    changeCompany(purchLine.dataAreaId)
                    {
                        ttsBegin;
                        purchLine.PurchReceivedNow = custPackingSlipTrans.Qty;
                        purchLine.setInventReceivedNow();
                        purchLine.doUpdate();
                        ttsCommit;
                    }
                    purchId = purchLine.PurchId;
                }
            }
        }

        isPosted = this.postPurchPackingSlip(purchId);//,custPackingSlipJour.InterCompanyCompanyId);
        if(isPosted)
        {
            info(strFmt("@SON2167", custPackingSlipJour.SalesId));
            info(strFmt("@SON2168", custPackingSlipJour.SalesId,purchId));
            ttsBegin;
            custPackingSlipJour.SON_IsIntercompanyPOPosted = NoYes::Yes;
            custPackingSlipJour.doUpdate();
            ttsCommit;
            i++;
        }
        else
        {
            j++;
        }
    }
    //info(strFmt('%1 - ICPO were posted successfully and %2 were failed',i,j));

}

-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------

public boolean postPurchPackingSlip(PurchId _purchId)
{
    PurchFormLetter purchFormLetter =  PurchFormLetter::construct(DocumentStatus::PackingSlip);
    PurchFormLetter purchFormLetterConfirm;
    PurchParmLine   parmLine;
    PurchTable      purchTableUpdate,purchTable;
    PurchParmTable  purchParmTable;
    PurchId         purchIdError;
    boolean         ret = false;
    VendPackingSlipJour vendPackingSlipJour;
    SON_InterSalesLinesView interSalesLine;

    try
    {

        changeCompany(interCompany)
        {
            //check and get updated date afterchecking fiscal calender and inventory closing
            deliveryDate = this.getinvoicedate(deliveryDate);
            //
            if(purchIdError != _purchId)
            {
                purchTable.clear();
                purchTable = PurchTable::find(_purchId);
                if(purchTable.DocumentState == VersioningDocumentState::Approved)
                {
                    purchFormLetterConfirm = PurchFormLetter::construct(DocumentStatus::PurchaseOrder);
                    purchFormLetterConfirm.update(purchTable,'InterPurchConf_'+purchTable.PurchId);
                }

                purchFormLetter.purchTable(purchTable);
                purchFormLetter.transDate (deliveryDate);
                purchFormLetter.specQty(PurchUpdate::ReceiveNow);

                purchFormLetter.initParmDefault();
                purchFormLetter.initParameters(purchFormLetter.purchParmUpdate(),Printout::After);
                purchFormLetter.initLinesQuery();

                select forUpdate Num from purchParmTable
                    where purchParmTable.ParmId == purchFormLetter.parmId();

                if(purchParmTable)
                {
                    ttsBegin;
                    purchParmTable.Num = deliveryNote;
                    purchParmTable.update();
                    ttsCommit;
                }

                purchFormLetter.run();

                if (purchformletter.parmjournalrecord().tableid == tablenum(vendpackingslipjour))
                {
                    ret = true;
                }
            }
        }
    }
    catch
    {
        this.insertErrorLog(purchTable.InterCompanySalesId,SON_POPackingSlipDD::HasError());
        infolog.clear();
        //info(strFmt('%1',SON_POPackingSlipDD::HasError()));
        purchIdError = purchTable.PurchId;
        ret = false;
        retry;
    }
    return ret;
}

Tuesday 12 November 2019

buf2buf in ax 2012



buf2buf copies all fields except system fields.(intercompany usefull)
data copies every thing including system fields.

static void updatesalesparameter(Args _args)
{

    CompanyInfo CompanyInfo;
    SalesParameters SalesParameters,SalesParameters1375;
    CustParameters  CustParameters,CustParameters1375;
    CustLedger      CustLedger;


   
    changeCompany ('9999')
    {
        select CustParameters1375;
        select SalesParameters1375;
    }
   
    select CompanyInfo  where CompanyInfo.DataArea == "1997"
    && CompanyInfo.SON_Active == NoYes::Yes;
    {
   
        changeCompany(CompanyInfo.DataArea)
        {
            SalesParameters = null;
            CustParameters = null;
            CustLedger = null;
            ttsBegin;

            select forUpdate SalesParameters;
            if(SalesParameters)
            {
                SalesParameters.OrderType = SalesType::Sales;
                SalesParameters.doUpdate();
           
            }
            else
            {
                SalesParameters.clear();
                //SalesParameters.BillOfLading = SalesShipping::None;
                //SalesParameters.OrderType = SalesType::Sales;
                //SalesParameters.BOLfreightChargeTerms = WMSFreightChargeTerms::Prepaid;
                //SalesParameters.BOLfreightCounted = WMSFreightCounted::ByShipper;
                //SalesParameters.BOLFreightedBy = WMSFreightedBy::Carrier;
                //SalesParameters.BOLtrailerLoaded = WMSTrailerLoaded::ByShipper;
                //SalesParameters.CreditNoteDocumentDateControlType_W = DateControlType_W::None;
                //SalesParameters.CreditNoteInvoiceDateControlType_W = DateControlType_W::None;
                //SalesParameters.MCRResourceNum_Acceptable = 3125;
                //SalesParameters.MCRResourceNum_Questionable = 3127;
                //SalesParameters.MCRResourceNum_Unacceptable = 3126;
                //SalesParameters.OrderEntryStatistics = 5;
                //SalesParameters.PromptQty = NoYes::Yes;
                //SalesParameters.QuotationNumOfDaysExpiryDate =30;
                //SalesParameters.QuotationNumOfDaysFollowUpDate =2;
                //SalesParameters.SplitDeliveryPackingSlip = NoYes::Yes;
                //SalesParameters.SplitDeliveryPickingList = NoYes::Yes;
                //SalesParameters.insert();
                buf2buf(SalesParameters1375, SalesParameters);
                SalesParameters.OrderType = SalesType::Sales;
                SalesParameters.insert();
            }
            select CustLedger  where CustLedger.PostingProfile == 'Gen';
            if(!CustLedger)
            {
                CustLedger.initValue();
                CustLedger.PostingProfile = 'Gen';
                CustLedger.insert();
            }
            CustLedger.clear();
            select CustLedger  where CustLedger.PostingProfile == 'Gen';
       
            select forUpdate CustParameters;
            if(CustParameters)
            {
                CustParameters.PostingProfile = CustLedger.PostingProfile;
                CustParameters.doUpdate();
            }
            else
            {
                //CustParameters.clear();
                //CustParameters.PostingProfile = CustLedger.PostingProfile;
                //CustParameters.insert();
                buf2buf(CustParameters1375, CustParameters);
                CustParameters.PostingProfile = CustLedger.PostingProfile;
                CustParameters.insert();
            }

            ttsCommit;
        }
    }

}

Saturday 4 May 2019

chain of command in d 365

create a class 

[ExtensionOf(classStr(SalesLineType))]
final class SalesLineType_Extension
{
    
    
    public void inserting()
    {
       
        CustTable   custTable;
        
        //get customer for evalation of credit rating
        custTable = CustTable::find(salesLine.CustAccount);
 
        if(!custTable.CreditRating)
        {
            info("Customer on sales line has no credit rating!");
        }
 
        // must call next when using Chain of Command pattern
        next inserting();

       
    }

}

first 2 lines are important as it tells it is an extension of which class and suffix should end with _extension

now add sales table form in the project and add as a start up object  and run  the visual studio and once browser is open navigate to new button and create a  new sales order  and save  then the message will pop up  in the screen , you can debug the process also .
by loading the symbols it will take some time to load all the symbols.




Wednesday 1 May 2019

item creation and update in ax 2012

static void SON_ProductcreateAndUpdate(Args _args)
{
    #define.ProductNum()
    #define.SearchName()
    #define.StorageDim()
    #define.TrackingDim()
    #define.ItemId()
    #define.NameAlias()
    #define.ModelGroup()
    #define.ItemGroup()
    EcoResDistinctProduct               ecoResDistinctProduct;
    EcoResProductIdentifier             ecoResProductIdentifier;
    EcoResStorageDimensionGroupProduct  ecoResStorageDimensionGroupProduct;
    EcoResTrackingDimensionGroupProduct ecoResTrackingDimensionGroupProduct;
    InventTable                         inventTable;
    InventTableModule                   inventTableModule;
    MCRInventTable mcrInventTable;
    InventItemSetupSupplyType           inventItemSetupSupplyType;
    EcoResStorageDimensionGroupItem     ecoResStorageDimensionGroupItem;
    EcoResTrackingDimensionGroupItem    ecoResTrackingDimensionGroupItem;
    InventModelGroupItem                inventModelGroupItem;
    InventItemGroupItem                 inventItemGroupItem;

    EcoResProductReleaseManagerBase     releaseManager;
    SysExcelApplication                 application;
    SysExcelWorkbooks                   workbooks;
    SysExcelWorkbook                    workbook;
    SysExcelWorksheets                  worksheets;
    SysExcelWorksheet                   worksheet;
    SysExcelCells                       cells;
    COMVariantType                      type;
    FileIoPermission                    perm;
    LongDescription                     number;
    #File
    int                                 row,i;
    Name                                name;
    FileName                            filename;
    InventTableModule                   inventTableModulePurch,inventTableModuleSales,inventTableModuleInvent;
    EcoResProduct                       ecoResProduct;
    ItemId                              itemId;
    UnitOfMeasureSymbol                 purchUnit,salesUnit,inventUnit;
    InventModelGroupId                  modelGroupId;
    Name                                productType;
    EcoResProductType                   ecoResProductType;
    int                                 j;
    str                                 dimValue;
    DimensionDefault                    result;
    container                           conValue;// = _value;
    DimensionAttribute                  dimensionAttribute;
    DimensionAttributeValue             dimensionAttributeValue;
    DimensionAttributeValueSetStorage   valueSetStorage = new DimensionAttributeValueSetStorage();
    container                           conAttr = ["@SON338"];
    EcoResTrackingDimensionGroupItem    trackingDimensionGroupItem;
    EcoResTrackingDimensionGroup        trackingDimensionGroup;
    //ItemId                  itemId;
    EcoResTrackingDimensionGroupName    trDim;
    EcoResStorageDimensionGroupItem     dimensionGroupItem;
    EcoResStorageDimensionGroup         storageDimensionGroup;
    EcoResStorageDimensionGroupName     storDim;
    ItemGroupId                         itemGroup;
   // Name                                nameGroup;
    Name                                lItem,lType,shipment,pos,dD,dDWarehouse,partnerIdf,ownUse;
    NoYes                               noyes1,noyes2,noyes3,noyes4;
    SON_ShipmentType                    son_ShipmentType;
    string20                            productName;
    String10                            productKey;
    String10                             nameGroup;

    application = SysExcelApplication::construct();
    workbooks = application.workbooks();

    perm = new FileIOPermission(filename,#io_read);
    perm.assert();

    info(strFmt('%1',DateTimeUtil::getSystemDateTime()));

    //specify the file path that you want to read
    filename = @'E:\Kavin\Additional Item upload\Additionalitemupload.xlsx';
    //E:\Kavin\Additional Item upload

    try
    {
        workbooks.open(filename);
    }
    catch (Exception::Error)
    {
        throw error("File cannot be opened.");
    }
    try
    {
        //ttsBegin;
        workbook = workbooks.item(1);
        worksheets = workbook.worksheets();
        worksheet = worksheets.itemFromNum(1);
        cells = worksheet.cells();

        do
        {
            row++;
            if(row > 1)
            {
                nameGroup    = '';
                itemId       = cells.item(row, 1).value().bStr();
                productType  = cells.item(row, 2).value().bStr();
                productKey   = cells.item(row, 3).value().bStr();
                productName  = cells.item(row, 4).value().bStr();
                storDim      = cells.item(row, 5).value().bStr();
                trDim        = cells.item(row, 6).value().bStr();
                modelGroupId = cells.item(row, 7).value().bStr();
                itemGroup    = cells.item(row, 8).value().bStr();
                dD           = cells.item(row, 9).value().bStr();
                dDWarehouse  = cells.item(row, 10).value().bStr();
                inventUnit   = cells.item(row, 11).value().bStr();
                purchUnit    = cells.item(row, 12).value().bStr();
                salesUnit    = cells.item(row, 13).value().bStr();
                lItem        = cells.item(row, 14).value().bStr();
                lType        = cells.item(row, 15).value().bStr();
                shipment     = cells.item(row, 16).value().bStr();
                pos          = cells.item(row, 17).value().bStr();
                partnerIdf   = cells.item(row, 18).value().bStr();
               // ownUse       = cells.item(row, 19).value().bStr();
                nameGroup    = cells.item(row, 19).value().bStr();

                select firstOnly * from inventTable
                    where inventTable.ItemId == itemId;

                if(inventTable)
                {
                    ttsBegin;
                    select firstOnly forupdate ProductType from ecoResProduct
                        where ecoResProduct.RecId == inventTable.Product;

                    if(ecoResProduct)
                    {
                        ecoResProduct.ProductType = str2enum(ecoResProductType, productType);
                        ecoResProduct.doUpdate();
                    }
                    ttsCommit;

                    ttsBegin;
                    conValue = conNull();
                    result = 0;
                    inventTable.selectForUpdate(true);

                    if (nameGroup != '')
                    {
                        conValue = [nameGroup];

                        for (j = 1; j <= conLen(conAttr); j++)
                        {
                            dimensionAttribute = dimensionAttribute::findByName(conPeek(conAttr,j));

                            if (dimensionAttribute.RecId == 0)
                            {
                                continue;
                            }

                            dimValue = conPeek(conValue,j);

                            if (dimValue != "")
                            {
                                dimensionAttributeValue = dimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute,dimValue,false,true);
                                valueSetStorage.addItem(dimensionAttributeValue);
                            }
                        }
                        result = valueSetStorage.save();


                        if(result != 0)
                        {
                            inventTable.DefaultDimension    = result;
                        }
                    }

                    inventTable.SON_LicensedItems       = str2enum(noyes1,lItem);
                    inventTable.SON_LicenseType         = lType;
                    inventTable.RAXShipmentType         = str2enum(son_ShipmentType,shipment);
                    inventTable.SON_PosPartner          = str2enum(noyes2,pos);
                    inventTable.RAXPartnerIdentifier    = str2int(partnerIdf);
                    inventTable.RAXOwnUseItem           = str2enum(noyes3,ownUse);
                    inventTable.doUpdate();
                    ttsCommit;

                    ttsBegin;
                    select firstOnly forUpdate * from mcrInventTable
                        where mcrInventTable.InventTable == inventTable.RecId;

                    mcrInventTable.InventTable                  =  inventTable.RecId;
                    mcrInventTable.DropShipment                 =  str2enum(noyes4,dD);
                    mcrInventTable.DefaultDropShipmentWarehouse = dDWarehouse;
                    mcrInventTable.write();
                    ttsCommit;

                    ttsBegin;
                    select firstOnly * from trackingDimensionGroupItem
                        where trackingDimensionGroupItem.ItemDataAreaId == inventTable.dataAreaId
                        && trackingDimensionGroupItem.ItemId == itemId;

                    trackingDimensionGroupItem.selectForUpdate(true);

                    select firstonly RecId from trackingDimensionGroup
                        where trackingDimensionGroup.Name == trDim;

                    trackingDimensionGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                    trackingDimensionGroupItem.ItemId = itemId;
                    trackingDimensionGroupItem.TrackingDimensionGroup = trackingDimensionGroup.RecId;
                    trackingDimensionGroupItem.write();
                    ttsCommit;

                    ttsBegin;
                    select firstOnly forupdate * from inventModelGroupItem
                        where inventModelGroupItem.ItemDataAreaId == inventTable.dataAreaId
                        && inventModelGroupItem.ItemId == inventTable.ItemId;

                    inventModelGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                    inventModelGroupItem.ModelGroupDataAreaId = inventTable.dataAreaId;
                    inventModelGroupItem.ItemId = inventTable.ItemId;
                    inventModelGroupItem.ModelGroupId = modelGroupId;
                    inventModelGroupItem.write();
                    ttsCommit;

                    ttsBegin;
                    select firstOnly forupdate * from inventItemGroupItem
                        where inventItemGroupItem.ItemDataAreaId == inventTable.dataAreaId
                        && inventItemGroupItem.ItemId == inventTable.ItemId;

                    inventItemGroupItem.ItemGroupDataAreaId = inventTable.dataAreaId;
                    inventItemGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                    inventItemGroupItem.ItemId = inventTable.ItemId;
                    inventItemGroupItem.ItemGroupId = itemGroup;
                    inventItemGroupItem.write();
                    ttsCommit;

                    ttsBegin;
                    select firstonly forUpdate UnitId from inventTableModulePurch
                        where inventTableModulePurch.ItemId == inventTable.ItemId
                        && inventTableModulePurch.ModuleType == ModuleInventPurchSales::Purch;

                    if(inventTableModulePurch)
                    {
                        inventTableModulePurch.UnitId = purchUnit;
                        inventTableModulePurch.doUpdate();
                    }
                    ttsCommit;

                    ttsBegin;
                    select firstonly forUpdate UnitId from inventTableModuleSales
                        where inventTableModuleSales.ItemId == inventTable.ItemId
                        && inventTableModuleSales.ModuleType == ModuleInventPurchSales::Sales;

                    if(inventTableModuleSales)
                    {
                        inventTableModuleSales.UnitId = salesUnit;
                        inventTableModuleSales.doUpdate();
                    }
                    ttsCommit;

                    ttsBegin;
                    select firstonly forUpdate UnitId from inventTableModuleInvent
                        where inventTableModuleInvent.ItemId == inventTable.ItemId
                        && inventTableModuleInvent.ModuleType == ModuleInventPurchSales::Invent;

                    if(inventTableModuleSales)
                    {
                        inventTableModuleInvent.UnitId = inventUnit;
                        inventTableModuleInvent.doUpdate();
                    }
                    ttsCommit;



                    ttsBegin;
                    select firstOnly * from dimensionGroupItem
                        where dimensionGroupItem.ItemDataAreaId == inventTable.dataAreaId
                        && dimensionGroupItem.ItemId == itemId;

                    dimensionGroupItem.selectForUpdate(true);

                    select firstonly RecId from storageDimensionGroup
                        where storageDimensionGroup.Name == storDim;

                    dimensionGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                    dimensionGroupItem.ItemId = itemId;
                    dimensionGroupItem.StorageDimensionGroup = storageDimensionGroup.RecId;
                    dimensionGroupItem.write();
                    ttsCommit;

                    //info(strFmt("Details updated for the ItemId :: %1 ",cells.item(row, 1).value().bStr()));
                }
                else
                {
                    info(strFmt("Item not found :: %1",cells.item(row, 1).value().bStr()));
                    //create a new item
                                    //Product
                       // itemname = "Rohit6";
                       // productName = "productname";

                        ecoResDistinctProduct.clear();
                        ecoResDistinctProduct.initValue();
                        ecoResDistinctProduct.ProductType = EcoResProductType::Item;
                        ecoResDistinctProduct.DisplayProductNumber = itemId;
                        ecoResDistinctProduct.SearchName = productName;

                        if (ecoResDistinctProduct.validateWrite())
                        {
                            ecoResDistinctProduct.insert();
                            ecoResProductIdentifier.clear();
                            ecoResProductIdentifier.initValue();
                            ecoResProductIdentifier.ProductNumber = itemId;
                            ecoResProductIdentifier.Product = ecoResDistinctProduct.RecId;
                            ecoResProductIdentifier.insert();
                            //Storage dimension group
                            ecoResStorageDimensionGroupProduct.clear();
                            ecoResStorageDimensionGroupProduct.initValue();
                            ecoResStorageDimensionGroupProduct.Product = ecoResDistinctProduct.RecId;
                            ecoResStorageDimensionGroupProduct.StorageDimensionGroup = EcoResStorageDimensionGroup::findByDimensionGroupName("SiteWH").RecId;
                            if (ecoResStorageDimensionGroupProduct.validateWrite())
                            {
                                ecoResStorageDimensionGroupProduct.insert();
                            }
                            //Tracking dimension group
                            ecoResTrackingDimensionGroupProduct.clear();
                            ecoResTrackingDimensionGroupProduct.initValue();
                            ecoResTrackingDimensionGroupProduct.Product = ecoResDistinctProduct.RecId;
                            ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup = EcoResTrackingDimensionGroup::findByDimensionGroupName("None").RecId;
                            if (ecoResTrackingDimensionGroupProduct.validateWrite())
                            {
                                ecoResTrackingDimensionGroupProduct.insert();
                            }
                            EcoResProductTranslation::createOrUpdateTranslation(ecoResDistinctProduct.RecId, itemId,productName);//name,descripyion
                            //Released product
                            inventTable.clear();
                            inventTable.initValue();
                            inventTable.initFromEcoResProduct(ecoResDistinctProduct);
                            inventTable.ItemId = itemId;
                            inventTable.NameAlias = productName;
                            inventTable.RAXProductKey = productKey;
                            InventTable.PmfProductType = PmfProductType::None;
                            InventTable.SON_LicensedItems       = str2enum(noyes1,lItem);
                            InventTable.SON_LicenseType         = lType;
                            InventTable.RAXShipmentType         = str2enum(son_ShipmentType,shipment);
                            InventTable.SON_PosPartner          = str2enum(noyes2,pos);
                            InventTable.RAXPartnerIdentifier    = str2int(partnerIdf);
                            InventTable.RAXOwnUseItem           = str2enum(noyes3,ownUse);
                            if (nameGroup != '')
                            {
                                conValue = [nameGroup];

                                for (j = 1; j <= conLen(conAttr); j++)
                                {
                                    dimensionAttribute = dimensionAttribute::findByName(conPeek(conAttr,j));

                                    if (dimensionAttribute.RecId == 0)
                                    {
                                        continue;
                                    }

                                dimValue = conPeek(conValue,j);

                                if (dimValue != "")
                                {
                                    dimensionAttributeValue = dimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute,dimValue,false,true);
                                    valueSetStorage.addItem(dimensionAttributeValue);
                                }
                                }
                                result = valueSetStorage.save();


                                if(result != 0)
                                {
                                    inventTable.DefaultDimension    = result;
                                }
                            }

                            if (inventTable.validateWrite())
                            {
                                inventTable.insert();

                                ttsBegin;
                                select firstOnly forUpdate * from mcrInventTable
                                where mcrInventTable.InventTable == inventTable.RecId;

                                mcrInventTable.InventTable                  =  inventTable.RecId;
                                mcrInventTable.DropShipment                 =  str2enum(noyes4,dD);
                                mcrInventTable.DefaultDropShipmentWarehouse = dDWarehouse;
                                mcrInventTable.write();
                                ttsCommit;

                                //Inventory model group
                                inventModelGroupItem.clear();
                                inventModelGroupItem.initValue();
                                inventModelGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                                inventModelGroupItem.ItemId = inventTable.ItemId;
                                inventModelGroupItem.ModelGroupId = modelGroupId;
                                inventModelGroupItem.ModelGroupDataAreaId = curext();
                                inventModelGroupItem.insert();
                                //Item group
                                inventItemGroupItem.clear();
                                inventItemGroupItem.initValue();
                                inventItemGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                                inventItemGroupItem.ItemId = inventTable.ItemId;
                                inventItemGroupItem.ItemGroupId = itemGroup;
                                inventItemGroupItem.ItemGroupDataAreaId = curext();
                                inventItemGroupItem.insert();
                                //Extended product details – Inventory
                                inventTableModule.clear();
                                inventTableModule.initValue();
                                inventTableModule.ItemId = inventTable.ItemId;
                                inventTableModule.UnitId = inventUnit;
                                inventTableModule.ModuleType = ModuleInventPurchSales::Invent;
                                inventTableModule.insert();
                                //Extended product details – Purchase
                                inventTableModule.clear();
                                inventTableModule.initValue();
                                inventTableModule.ItemId = inventTable.ItemId;
                                inventTableModule.UnitId = purchUnit;
                                inventTableModule.ModuleType = ModuleInventPurchSales::Purch;
                                inventTableModule.insert();
                                //Extended product details – Sales
                                inventTableModule.clear();
                                inventTableModule.initValue();
                                inventTableModule.ItemId = inventTable.ItemId;
                                inventTableModule.UnitId = salesUnit;
                                inventTableModule.ModuleType = ModuleInventPurchSales::Sales;
                                inventTableModule.insert();
                                //Warehouse items
                                InventItemLocation::createDefault(inventTable.ItemId);
                                //Supply type setup
                                inventItemSetupSupplyType.clear();
                                inventItemSetupSupplyType.initValue();
                                inventItemSetupSupplyType.ItemId = inventTable.ItemId;
                                inventItemSetupSupplyType.ItemDataAreaId = inventTable.DataAreaId;
                                inventItemSetupSupplyType.insert();
                                //Product storage dimension group
                                ecoResStorageDimensionGroupProduct = EcoResStorageDimensionGroupProduct::findByProduct(ecoResDistinctProduct.RecId);
                                if (ecoResStorageDimensionGroupProduct.RecId)
                                {
                                    ecoResStorageDimensionGroupItem.clear();
                                    ecoResStorageDimensionGroupItem.initValue();
                                    ecoResStorageDimensionGroupItem.ItemDataAreaId = inventTable.DataAreaId;
                                    ecoResStorageDimensionGroupItem.ItemId = inventTable.ItemId;
                                    ecoResStorageDimensionGroupItem.StorageDimensionGroup   = ecoResStorageDimensionGroupProduct.StorageDimensionGroup;
                                    ecoResStorageDimensionGroupItem.insert();
                                }
                                //Product tracking dimension group
                                ecoResTrackingDimensionGroupProduct = EcoResTrackingDimensionGroupProduct::findByProduct(ecoResDistinctProduct.RecId);
                                if (ecoResTrackingDimensionGroupProduct.RecId)
                                {
                                    ecoResTrackingDimensionGroupItem.clear();
                                    ecoResTrackingDimensionGroupItem.initValue();
                                    ecoResTrackingDimensionGroupItem.ItemDataAreaId = inventTable.DataAreaId;
                                    ecoResTrackingDimensionGroupItem.ItemId = inventTable.ItemId;
                                    ecoResTrackingDimensionGroupItem.TrackingDimensionGroup = ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup;
                                    ecoResTrackingDimensionGroupItem.insert();
                                }
                            }
                        }

                    //create a new item
                }//else ends here
            }
            //if (row == 2100)
            //{
                //break;
            //}
            type = cells.item(row+1, 1).value().variantType();
        }

        while (type != COMVariantType::VT_EMPTY);
        CodeAccessPermission::revertAssert();
        application.quit();
        //ttsCommit;
    }
    catch(Exception::Error)
    {
        info(strFmt('%1 - %2',DateTimeUtil::getSystemDateTime(), row));
        throw error("File upload failed");
    }

    info("File uploaded success fully");
    info(strFmt('%1',DateTimeUtil::getSystemDateTime()));
}

Monday 22 April 2019

display method in d 365 extension

1. Add a project
2.create a  new class VendPackingSlipJour_Extension for writing code in vendpackingslipjour table


[ExtensionOf(tableStr(VendPackingSlipJour))]
final public static class VendPackingSlipJour_Extension
{
    [SysClientCacheDataMethodAttribute(true)] //This attribute will cache your display method.
    public static display Name internalpcakingslipno(VendPackingSlipJour _this)
    {
        return "text";
    }

}

3. create a extesion of the form

VendPackingSlipJournal.Extension an add a string over there

datemethod as :VendPackingSlipJour_Extension::internalpcakingslipno
and datasource as VendPackingSlipJour

add a startup project as PurchTable (PurchTable.Extension1)

then run the program atlast when we navigate the product recipt of the Po we will get the new display method over there

we can also write like this

[ExtensionOf(tableStr(VendPackingSlipJour))]
final public class VendPackingSlipJour_Extension
{
    [SysClientCacheDataMethodAttribute(true)] //This attribute will cache your display method.
    public display Name internalpcakingslipno()
    {
        return "text";
    }

}

and can call the datamethod as VendPackingSlipJour_Extension.internalpcakingslipno

here please make sure we add
[ExtensionOf(tableStr(VendPackingSlipJour))]

and _Extension please pay extra attention to the spelling of the "extension" if it goes wrong the display method wont work.


intercompany PO multiple product receipt by x++

public void processStampICPO(PackingSlipId _deliveryNote,                             Transdate _deliverydate,                             ...