Thursday, 19 April 2018

SSRS DP Based Report

Simple contract Class :

[
    DataContractAttribute,
    SysOperationGroupAttribute('ItemGroup', "Item group", '1')   ---->Declare item group
]
class NEC_SalesContributionContract
{
    ItemGroupId             itemGroupId;

    [
    DataMemberAttribute('ItemGroupId'),      ----> EDT name
    SysOperationDisplayOrderAttribute('1'),  ----> order of parameter
    SysOperationLabelAttribute(literalStr("Item group")), ----->Lable
    SysOperationGroupMemberAttribute('ItemGroup')      ----->Groupname
    ]
    public ItemGroupId ParmItemGroup(ItemGroupId _itemGroupId = itemGroupId)
    {
        itemGroupId = _itemGroupId;

        return itemGroupId;
    }

}

Simple DP class:

[SrsReportQueryAttribute(querystr(SalesContributionQuery)),
 SRSReportParameterAttribute(classStr(SalesContributionContract))]
class NEC_SalesContributionDP  extends SrsReportDataProviderPreProcessTempDB
{
     SalesContributionTmp            salesContributionTmp;

    [
    SRSReportDataSetAttribute(tableStr(SalesContributionTmp))
    ]
    public SalesContributionTmp getSalesContributionTmp()
    {
        select salesContributionTmp;
        return salesContributionTmp;
    }


    public void processReport()
    {
        RetailTransactionSalesTrans         retailTransactionSalesTrans;
        RetailTransactionTable                 retailTransactionTable;
        InventItemGroup                          inventItemGroup;
        InventTable                                   inventTable;
        ItemGroupId                                 itemGroup;

       NEC_SalesContributionContract       contract = this.parmDataContract() as        NEC_SalesContributionContract;
   
     Query                               query  =  this.parmQuery();
     itemGroup                                   =  contract.ParmItemGroup();


    QueryRun queryRun = new QueryRun(query);

    while(queryRun.next())
    {
         retailTransactionSalesTrans  = queryRun.get(tableNum(RetailTransactionSalesTrans));
                             (or)
        retailTransactionSalesTrans   = queryRun.getNo(2);

          //here insert data in Tmp table from retailTransactionSalesTrans ;
    }
}

}

3.Another ProcessReport Method in DP Class while pass the Range 

 public void ProcessReport()
    {
        TransDate                                     fromDate,toDate;
        RetailStoreId                                fromRetailStoreId,toRetailStoreId;
        Description                                   fromStorename,toStoreName;                           
        RetailTransactionSalesTrans        retailTransactionSalesTrans;
        InventLocation                             inventLocation;
        RetailTransactionTable                 retailTransactionTable;
        RetailTransactionPaymentTrans   retailTransactionPymentTrans;
        RetailTenderTypeTable                 retailTenderTypeTable;
        retailchanneltable                          retailchanneltable;
        OMOperatingUnit                         oMOperatingUnit;

        int                                                  i;
        price                                              salesBeforetax,grossAmount,paymentAmount;
        price                                              tradeamount,negcash;
        Query                                            query;
        QueryBuildDataSource                qbds;
        QueryBuildRange                         qbrTrans,qbrWareHouse,qbrType,qbrentystatus;
        QueryRun                                     qr;


        storeDetailsContract   =      this.parmDataContract();
        fromDate                    =      storeDetailsContract.ParmTrnasFromDate();
        toDate                         =      storeDetailsContract.ParmTrnasToDate();
        fromRetailStoreId       =       storeDetailsContract.ParmFromStore();
        toRetailStoreId           =       storeDetailsContract.ParmtoStore();


        query                    =   new Query();
        qbds                     =  query.addDataSource(tablenum(retailTransactionTable));
        qbrTrans              =  qbds.addRange(fieldnum(retailTransactionTable,transDate));
        qbrWareHouse    =  qbds.addRange(fieldnum(retailTransactionTable,store));
        qbrType               =  qbds.addRange(fieldnum(retailTransactionTable,Type));
        qbrentystatus       =  qbds.addRange(fieldnum(retailTransactionTable,entryStatus));

        if (fromDate !=datenull() && toDate != datenull() &&  fromRetailStoreId !=null &&  toRetailStoreId !=null)
        {
            qbrTrans.value(SysQuery::range(fromDate,toDate));
            qbrWareHouse.value(SysQuery::range(fromRetailStoreId,toRetailStoreId));
            qbrentystatus.value(SysQuery::valueNot(RetailEntryStatus::Voided));
            qbrType.value(queryValue(RetailTransactionType::Sales));
           
        }

        if (  fromDate !=datenull() && toDate != datenull() && fromRetailStoreId ==null && toRetailStoreId ==null)
        {
            qbrTrans.value(SysQuery::range(fromDate,toDate));
            qbrType.value(queryValue(RetailTransactionType::Sales));
            qbrentystatus.value(SysQuery::valueNot(RetailEntryStatus::Voided));
        }
        if (  fromDate ==datenull() && toDate == datenull() && fromRetailStoreId !=null && toRetailStoreId !=null)
        {
            qbrWareHouse.value(SysQuery::range(fromRetailStoreId,toRetailStoreId));
            qbrType.value(queryValue(RetailTransactionType::Sales));
            qbrentystatus.value(SysQuery::valueNot(RetailEntryStatus::Voided));
        }

         qr = new QueryRun(query);

        while(qr.next())
        {

            retailTransactionTable = qr.get(Tablenum(RetailTransactionTable));
            storeDetailsTmp.clear();

            storeDetailsTmp.NEC_Date           = retailTransactionTable.transDate;
            storeDetailsTmp.day                       =  dayName(dayOfWk(retailTransactionTable.transDate));
            storeDetailsTmp.WareHouse           = retailTransactionTable.InventLocationId;
          }
}
}





SSRS Expressions(RowNumber,IIFcondition,Arithmetic Operations,sum of grouping value)

1.RowNumber Auto Generate

= RowNumber("Datasetname")

2.RowNumber  Auto Generate when we do particular filed grouping

= Runningvalue(FieldName.value,countdistint,"Datasetname")

3.using iif Condition Show the fields Report

=iif(isnothing(First(Fields!JournalDescription.Value, "InventJournalTransDS")),journal tax invoice,Journaltaxinvoice+ " - " + First(Fields!NEC_JournalDescription.Value, "InventJournalTransDS"))

4.Take textboxfields and do addition Operation.
=ReportItems!textbox1.value+ReportItem!textbox2.value

5.Take textboxfields and do Multiple and subtraction  and  Division Operation.

=ReportItems!textbox1.value * ReportItem!textbox2.value
=ReportItems!textbox1.value - ReportItem!textbox2.value
=ReportItems!textbox1.value / ReportItem!textbox2.value

6.In Report field level addition and multiple and subtraction and division Operation

=Fields!amount.Value + Fields!Curamount.Value
=Fields!amount.Value * Fields!Curamount.Value
=Fields!amount.Value - Fields!Curamount.Value
=Fields!amount.Value / Fields!Curamount.Value

7.In Report  sum of fields

=Sum(Fields!netAmount.Value)

8.In Report  Abs function(Retrieves the absolute value of a real number. For example: abs(-100.0) returns the value 100.0) 

=Abs((Sum(Fields!Amount.Value)))

9.In Report using expression  sum of  Group by value  division by entire sum of field value multiple with 100.
=(Sum(Fields!netAmount.Value, "Details")/Sum(Fields!netAmount.Value, "NEC_SalesContribution"))*100.

10.If we want to get the row number out of group scope, we can using the expression:
=RowNumber(nothing)

11.If we need get a row number in group scope, we can using the expression:
=RowNumber("Group1")
(Note: Suppose we have a group named Group1.)

12.Remove time from Date in Expression

=FormatDateTime(Fields!StartDate.Value,DateFormat.ShortDate)
  startdate = date and time












Monday, 16 April 2018

Getting MRP from inventTableModule based on item usng display method in Ax7

/// <summary>
    ///
    /// </summary>
    display  MaximumRetailPrice_IN  Item_MRP()
    {
        InventTable                       inventTable;
        InventTableModule           inventTableModule;

        select inventTable
                 where inventTable.ItemId == this.ItemId
                     join inventTableModule
                        where inventTableModule.ItemId == inventTable.ItemId
                       && inventTableModule.ModuleType == ModuleInventPurchSales::Sales;

        return  inventTableModule.MaximumRetailPrice_IN;
    }

Inventory OnhandAvailable Stock Report in Ax7

class NECInventoryOnhandReportDP extends SrsReportDataProviderPreProcessTempDB
{
    NECInventoryOnhandTmp                NECInventoryOnhandTmp, tmpTable;
    InventSum                            inventSum, inventSumLocation, inventSumDim;
    InventDim                            inventDim, inventDimFilter;
    InventItemGroupItem                  inventItemGroupItem;
    InventTable                          inventTable;
    ReqItemTable                         reqItemTable;
    NECInventoryOnhandReportContract     contract;
    ItemId                               itemId;
    ItemGroupId                          itemGroupId;
    EcoResCategoryId                     ecoResCategoryId;
    NoYesId                              onhandStock;
    InventLocationIdReqMain              inventLocationIdReqMain;
    EcoResProductCategory                ecoResProductCategoryItem;
    EcoResCategory                       ecoResCategoryItem;
    str                                  warehouse;
    InventDimId                          inventDimId;
    WHSInventStatus                      whsInventStatus;
    QueryBuildDataSource                 qbdsInventTable;
    //added by Naresh 4/10/2018 -start
    Name                                warehousename;
    InventBatchId                       batchnumber;
    //Description                         transitid;
    Qty                                 transitqty;
    InventLocation                      inventLocation;
    InventSum                           inventsumqty;
    InventDim                           inventDim1;
    InventTransferTable                 inventTransferTable;
    InventTransferLine                  inventTransferLine;
    InventTrans                         inventTrans;

    //added by Naresh 4/10/2018 -end
                           
    QueryBuildRange                     qbr;
    QueryRun                            qr;
    Query                               query = new Query();

    [
    SRSReportDataSetAttribute(tableStr(NECInventoryOnhandTmp))
    ]
    public NECInventoryOnhandTmp getNECInventoryOnhandTmp()
    {
        select NECInventoryOnhandTmp;
        return NECInventoryOnhandTmp;
    }

    public void processReport()
    {
        contract = this.parmDataContract() as NECInventoryOnhandReportContract;
       
        itemId                  = contract.parmItemId();
        itemGroupId             = contract.parmItemGroupId();
        ecoResCategoryId        = contract.parmEcoResCategoryId();
        onhandStock             = contract.parmonhandStock();
        inventLocationIdReqMain = contract.parmInventLocationIdReqMain();

        qbdsInventTable = query.addDataSource(Tablenum(InventTable));
        if(itemId != null)
        {
            qbdsInventTable.addRange(fieldnum(InventTable, ItemId)).value(itemId);
        }
        qr = new QueryRun(query);
        this.runStatement();
    }

    private void runStatement()
    {
        //NS by NK on 29032018
        while (qr.next())
        {
            inventTable = qr.get(tablenum(InventTable));
         
            if(inventItemGroupItem)
            {
                select firstonly inventItemGroupItem
                    where inventItemGroupItem.ItemId == inventTable.ItemId
                    && inventItemGroupItem.ItemGroupId == itemGroupId;
            }
            if(ecoResCategoryId)
            {
                select firstonly ecoResProductCategoryItem
                    where ecoResProductCategoryItem.Product == inventTable.Product
                    && ecoResProductCategoryItem.Category == ecoResCategoryId;
            }
         
            while select AvailPhysical,PhysicalInvent,PostedValue from inventsum
                where inventsum.Closed   == NoYes::No
                && inventsum.ClosedQty   == NoYes::No
                && inventsum.ItemId == inventTable.itemId
                join inventDimFilter
                  // group by  #InventDimGroupAllFields
                where inventSum.InventDimId == inventDimFilter.InventDimId
                &&    inventDimFilter.InventLocationId
               
            {
                select firstonly whsInventStatus
                where whsInventStatus.InventStatusId == inventDimFilter.InventStatusId;

                if(((inventSum.AvailPhysical >=0  && onhandStock == true )|| (inventSum.AvailPhysical <= 0 && onhandStock == false)) &&
                    ((inventLocationIdReqMain != null && inventLocationIdReqMain == inventDimFilter.InventLocationId) || !inventLocationIdReqMain ) &&
                    ((itemGroupId != null && inventItemGroupItem) || !itemGroupId) &&
                    ((ecoResCategoryId != 0 && ecoResProductCategoryItem) || !ecoResCategoryId)
                   && ((whsInventStatus && whsInventStatus.InventStatusBlocking == False) || !whsInventStatus))
                {
                    ttsbegin;
                    select firstonly forupdate  NECInventoryOnhandTmp
                    where NECInventoryOnhandTmp.ItemId == inventTable.ItemId
                    && NECInventoryOnhandTmp.InventLocationIdReqMain == inventDimFilter.InventLocationId;
                    if(NECInventoryOnhandTmp)
                    {
                        NECInventoryOnhandTmp.InventQtyPhysicalOnhand += inventSum.AvailPhysical;
                        //added by naresh 4/12/2018 - start
                        NECInventoryOnhandTmp.AvailablePhysical   += inventSum.AvailPhysical;
                        NECInventoryOnhandTmp.PhysicalInventory   += inventSum.PhysicalInvent;
                        NECInventoryOnhandTmp.financialCostAmount += inventSum.PostedValue;
                        //added by naresh 4/12/2018 - end
                        NECInventoryOnhandTmp.update();

                    }
                    else
                    {
                        inventDimId = inventDimFilter.inventDimId;
                        warehouse = inventDimFilter.InventLocationId;
                        //added by Naresh  4/12/2018 -start
                        batchnumber = inventdimfilter.inventbatchid;
                        transitqty = 0.0;
                        select inventlocation
                            where inventlocation.inventlocationid == warehouse;
                        if(inventlocation.inventlocationid)
                        {
                            warehousename = inventLocation.Name;
                           while select inventTransferTable
                                where inventTransferTable.InventLocationIdTransit == inventlocation.InventLocationIdTransit
                                    && inventTransferTable.InventLocationIdFrom   == inventlocation.InventLocationId
                                && inventTransferTable.TransferStatus == InventTransferStatus::Shipped
                                  join inventTransferLine
                                        where inventTransferLine.TransferId == inventTransferTable.TransferId
                                           && inventTransferLine.ItemId     == inventTable.ItemId
                            if(inventTransferLine.TransferId)
                            {
                                transitqty    += inventTransferLine.QtyShipped;
                            }
                        }
                        //added by Naresh  4/12/2018 -end
                        this.insertTmp();
                     }
                    ttscommit;
                }
            }
        }
        //NE by NK on 29032018
    }

    public void insertTmp()
    {
        ReqItemTable                reqItemTableCurrent;
        InventDim                   inventDimInventLocation;
        NECInventoryOnhandTmp.clear();

        NECInventoryOnhandTmp.ItemId    = inventTable.ItemId;
        NECInventoryOnhandTmp.ItemName  = inventTable.itemName();
        NECInventoryOnhandTmp.InventLocationIdReqMain = warehouse;
        //added by naresh 4/11/2018 - start
        NECInventoryOnhandTmp.inventBatchId = batchnumber;
        NECInventoryOnhandTmp.Name  = warehousename;
        NECInventoryOnhandTmp.TransitTransfer = transitqty;
        NECInventoryOnhandTmp.AvailablePhysical       = inventSum.AvailPhysical;
        NECInventoryOnhandTmp.PhysicalInventory       = inventSum.PhysicalInvent;
        NECInventoryOnhandTmp.financialCostAmount     = inventSum.PostedValue;
        //added by naresh 4/11/2018 - start
        NECInventoryOnhandTmp.InventQtyPhysicalOnhand = inventSum.AvailPhysical; // inventSum.physicalInvent;
        select firstonly reqItemTableCurrent
            where reqItemTableCurrent.ItemId == NECInventoryOnhandTmp.ItemId
            join inventDimInventLocation
            where inventDimInventLocation.InventdimId == reqItemTableCurrent.CovInventDimId
            && inventDimInventLocation.InventLocationId == warehouse;
        if(reqItemTableCurrent)
        {
            NECInventoryOnhandTmp.ReqGroupId = reqItemTableCurrent.ReqGroupId;
            NECInventoryOnhandTmp.InventQtyMinOnhand = reqItemTableCurrent.MinInventOnhand;
            NECInventoryOnhandTmp.InventQtyMaxOnhand = reqItemTableCurrent.MaxInventOnhand;
        }
        this.insertProductCategories(inventTable.ItemId);
        NECInventoryOnhandTmp.SIP = this.getSIP(inventTable.ItemId);
        NECInventoryOnhandTmp.insert();
    }

    private void insertProductCategories(ItemId _itemId)
    {
        EcoResProductCategory EcoResProductCategory;
        EcoResCategory EcoResCategory,EcoResCategoryNext;
        EcoResCategoryId parentCategory;
        int i = 0;
        List li = new List(Types::String);
        ListEnumerator enumer;
       
        NECInventoryOnhandTmp.EcoResCategoryName1 = "";
        NECInventoryOnhandTmp.EcoResCategoryName2 = "";
        NECInventoryOnhandTmp.EcoResCategoryName3 = "";
        NECInventoryOnhandTmp.EcoResCategoryName4 = "";
        NECInventoryOnhandTmp.EcoResCategoryName5 = "";
       
        select * from EcoResCategory
            join RecId from EcoResProductCategory
            where EcoResCategory.RecId == EcoResProductCategory.Category
            && EcoResProductCategory.Product == InventTable::find(_itemId).Product;
       
        parentCategory = EcoResCategory.ParentCategory;

        li.addStart(EcoResCategory.Name);

        while (parentCategory)
        {
            select * from EcoResCategory
                where EcoResCategory.RecId == parentCategory;

            parentCategory = EcoResCategory.ParentCategory;
            li.addStart(EcoResCategory.Name);
        }
        enumer = li.getEnumerator();

        while (enumer.moveNext())
        {
            i++; 
            if(i==1)
            {
                NECInventoryOnhandTmp.EcoResCategoryName5 = enumer.current();
            }
            else if(i==2)
            {
                NECInventoryOnhandTmp.EcoResCategoryName4 = enumer.current();
            }
            else if(i==3)
            {
                NECInventoryOnhandTmp.EcoResCategoryName3 = enumer.current();
            }
            else if(i==4)
            {
                NECInventoryOnhandTmp.EcoResCategoryName2 = enumer.current();
            }
            else if(i==5)
            {
                NECInventoryOnhandTmp.EcoResCategoryName1 = enumer.current();
            }
        }
    }

    public str getSIP(ItemId   _itemId)
    {
        Str              sales, Invent, purch;
        str              SIP;

        sales       = InventItemSalesSetup::findDefault(_itemId).Stopped == true ? "Y" : "N";
        invent      = InventItemInventSetup::findDefault(_itemId).Stopped == true ? "Y" : "N";
        purch       = InventItemPurchSetup::findDefault(_itemId).Stopped == true ? "Y" : "N";

        SIP = strfmt("%1%2%3", sales, invent, purch);
     
        if(SIP ==  "NNN")
        {
            SIP = "ACT";
        }
        else if(SIP ==  "YYY")
        {
            SIP = "INA";
        }
        return SIP;
    }

    public static NECInventoryOnhandReportDP construct()
    {
        return new NECInventoryOnhandReportDP();
    }

}

Friday, 13 April 2018

AX7 FormDataSource level validation using Onvalidated EventHandler

class NEC_InventJournalLossProfitFormEventHandler
{
   
    /// <summary>
    ///
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    [FormDataFieldEventHandler(formDataFieldStr(InventJournalLossProfit, InventJournalTrans, Qty), FormDataFieldEventType::Validated)]
    public static void Qty_OnValidated(FormDataObject sender, FormDataFieldEventArgs e)
    {
        FormDataSource      inventJournalTrans_ds = sender.datasource();
        InventJournalTrans  inventJournalTrans = inventJournalTrans_ds.cursor();

        if(InventJournalName::find(inventJournalTrans.inventJournalTable().JournalNameId).NEC_NegativeQtyOnly == NoYes::Yes && inventJournalTrans.Qty > 0)
        {
            FormDataFieldCancelEventArgs ce = e as FormDataFieldCancelEventArgs;
            ce.cancel(!checkFailed("Quantity cannot be positive"));
        }
    }

}

In AX7 get Itembarcode through inventjouranltrans using OnValidatedWrite EventHandler

class NEC_InventoryAdjustmentItemBarcodeEventHandler
{
 

    // //<summary>

    //// </summary>
    //// <param name="sender"></param>
    //// <param name="e"></param>
    [FormDataSourceEventHandler(formDataSourceStr(InventJournalLossProfit, InventJournalTrans), FormDataSourceEventType::ValidatedWrite)]
    public static void InventJournalTrans_OnValidatedWrite(FormDataSource sender, FormDataSourceEventArgs e)
    {

        FormDataSource                  inventJournalTrans_ds   = sender as  FormDataSource;
        InventJournalTrans              inventJournalTrans      = inventJournalTrans_ds.cursor();
        InventDim                       inventDim;
        InventItemBarcode               inventItemBarcode;
     
        inventDim           = InventDim::find(inventJournalTrans.InventDimId);
        inventItemBarcode   = InventItemBarcode::findByProductDimensions(inventJournalTrans.ItemId,inventDim,false,false);

        if (inventItemBarcode.RecId)
        {
            inventJournalTrans.NEC_itemBarCode = inventItemBarcode.ItemBarCode;
        }
    }

}

Contract Class in Ax7

[DataContractAttribute]
public class NECInventoryOnhandReportContract
{
    ItemId                  itemId;
    ItemGroupId             itemGroupId;
    EcoResCategoryId        ecoResCategoryId;
    NoYesId                 onhandStock;
    InventLocationIdReqMain inventLocationIdReqMain;

    /// <summary>
    /// Gets or sets the value of the datacontract parameter ItemId.
    /// </summary>
    /// <param name="_itemId">
    /// The new value of the datacontract parameter ItemId;
    /// </param>
    /// <returns>
    /// The current value of datacontract parameter ItemId.
    /// </returns>
    [
    DataMemberAttribute('ItemId'),
    SysOperationDisplayOrderAttribute('1')
    ]
    public ItemId parmItemId(ItemId _itemId = itemId)
    {
        itemId = _itemId;

        return itemId;
    }

    /// <summary>
    /// Gets or sets the value of the datacontract parameter ItemGroupId.
    /// </summary>
    /// <param name="_itemGroupId">
    /// The new value of the datacontract parameter ItemGroupId;
    /// </param>
    /// <returns>
    /// The current value of datacontract parameter ItemGroupId.
    /// </returns>
    [
    DataMemberAttribute('ItemGroupId'),
    SysOperationDisplayOrderAttribute('2')
    ]
    public ItemGroupId parmItemGroupId(ItemGroupId _itemGroupId = itemGroupId)
    {
        itemGroupId = _itemGroupId;

        return itemGroupId;
    }

    /// <summary>
    /// Gets or sets the value of the datacontract parameter EcoResCategoryId.
    /// </summary>
    /// <param name="_ecoResCategoryId">
    /// The new value of the datacontract parameter EcoResCategoryId;
    /// </param>
    /// <returns>
    /// The current value of datacontract parameter EcoResCategoryId.
    /// </returns>
    [
    DataMemberAttribute('EcoResCategoryId'),
    SysOperationDisplayOrderAttribute('3')
    ]
    public EcoResCategoryId parmEcoResCategoryId(EcoResCategoryId _ecoResCategoryId = ecoResCategoryId)
    {
        ecoResCategoryId = _ecoResCategoryId;

        return ecoResCategoryId;
    }

    /// <summary>
    /// Gets or sets the value of the datacontract parameter _onhandStock.
    /// </summary>
    /// <param name="_onhandStock">
    /// The new value of the datacontract parameter _onhandStock;
    /// </param>
    /// <returns>
    /// The current value of datacontract parameter _onhandStock.
    /// </returns>
    [
    DataMemberAttribute('NoYesId'),
    SysOperationLabelAttribute(literalStr("@WAX1340")),
    SysOperationDisplayOrderAttribute('4')
    ]
    public NoYesId parmonhandStock(NoYesId _onhandStock = onhandStock)
    {
        onhandStock = _onhandStock;

        return onhandStock;
    }

    /// <summary>
    /// Gets or sets the value of the datacontract parameter InventLocationIdReqMain.
    /// </summary>
    /// <param name="_inventLocationIdReqMain">
    /// The new value of the datacontract parameter InventLocationIdReqMain;
    /// </param>
    /// <returns>
    /// The current value of datacontract parameter InventLocationIdReqMain.
    /// </returns>
    [
        DataMemberAttribute('InventLocationIdReqMain'),
        SysOperationLabelAttribute(literalStr("@SYS6437")),
        SysOperationDisplayOrderAttribute('5')
    ]
    public InventLocationIdReqMain parmInventLocationIdReqMain(InventLocationIdReqMain _inventLocationIdReqMain = inventLocationIdReqMain)
    {
        inventLocationIdReqMain = _inventLocationIdReqMain;
        return inventLocationIdReqMain;
    }

}