Wednesday, October 7, 2020

TFS Work space configuration

Refer below link: 

https://d365byjp.blogspot.com/2018/10/steps-to-configure-tfsvsts-workspace-in.html

Tuesday, October 6, 2020

File Rename in print management report related to the purch requested quotation.

 Written Logic in Init method of PurchRFQEditLinesPrintOptions form

using this to get the dynamic subject and file name in print management





Tuesday, September 29, 2020

Logic for unmapped field in Entity to get the data while DMF export using PostLoad method

  [DataEventHandler(tableStr(EcoResReleasedProductV2Entity), DataEventType::PostedLoad)]

    public static void EcoResReleasedProductV2Entity_onPostedLoad(Common _sender, DataEventArgs _eventArgs)

    {

        InventItemInventSetup           inventItemInventSetup;

        EcoResReleasedProductV2Entity   ecoResReleasedProductV2Entity  = _sender as EcoResReleasedProductV2Entity;


        select firstonly  MultipleQty from inventItemInventSetup 

            where inventItemInventSetup.ItemId == ecoResReleasedProductV2Entity.ItemNumber;

        if(inventItemInventSetup)

        {

            ecoResReleasedProductV2Entity.SalesQuantityMultiple = inventItemInventSetup.MultipleQty;

        }

    }


Saturday, September 12, 2020

OnValidate event handler

 [DataEventHandler(tableStr(TaxRegistrationNumbers_IN), DataEventType::ValidatedField)]
    public static void TaxRegistrationNumbers_IN_onValidatedField(Common sender, DataEventArgs e)
    {
        TaxRegistrationNumbers_IN TaxRegistrationNumbers_IN = sender as TaxRegistrationNumbers_IN; // Code to get the buffer
        boolean ret = true;
 
        ValidateFieldEventArgs args = e as ValidateFieldEventArgs; // Code to get args
 
        switch (args.parmFieldId())
        {
            case fieldNum(TaxRegistrationNumbers_IN, RegistrationNumber):
                {
                    if(strLen(TaxRegistrationNumbers_IN.RegistrationNumber) != 15)
                    {
                        ret = checkFailed("Registration number should be 15 characters"); // Just a validation to display on user interface
                    }
                }
                break;
        }
        args.parmValidateResult(ret);
    }

Saturday, September 5, 2020

COC for form datasource Execute query

 [ExtensionOf(formDataSourceStr(LedgerJournalTable,LedgerJournalTable))]
final class LedgerJournalTableForm_Extension
{
    public void executeQuery()
    {
        FormDataSource   ledgerJournal_ds = this;
        UserGroupList    userGroupList,userGroupListLoc;
         
        str              currentUser;
        select userGroupList
            where userGroupList.userId == curUserId()
               && userGroupList.groupId like "LOC*";
        if(userGroupList)
        {
            while select userGroupListLoc
                    where userGroupListLoc.groupId == userGroupList.groupId
            {
                ledgerJournal_ds.query().dataSourceTable(tableNum(LedgerJournalTable)).addRange(fieldNum(LedgerJournalTable,CreatedBy)).value(SysQuery::value(userGroupListLoc.userId));
            }
        }
        next executeQuery();
        
    }
}

MapEntityToDataSouce logic with Skipping validation

 [ExtensionOf(dataentityviewstr(SalesQuotationLineCDSEntity))]
final class SalesQuotationLineCDSEntity_Extension
{
public void mapEntityToDataSource(DataEntityRuntimeContext entityCtx, DataEntityDataSourceRuntimeContext dataSourceCtx)
{
next mapEntityToDataSource(_entityCtx,_dataSourceCtx);
if (_entityCtx.getDatabaseOperation() == DataEntityDatabaseOperation::Insert)
{
switch (_dataSourceCtx.name())
{
case dataEntityDataSourceStr(SalesQuotationLineCDSEntity, SalesQuotationLineEntity):
SalesQuotationLineV2Entity salesQuotationLineEntity = _dataSourceCtx.getBuffer();

if (SalesQuotationLineEntity.LineCreationSequenceNumber)
{
salesQuotationLineEntity.LineNum = any2Real(SalesQuotationLineEntity.LineCreationSequenceNumber);
}
salesQuotationLineEntity.skipDataSourceValidateField(fieldNum(SalesQuotationLineV2Entity,LineNum),true);

break;
}
}
}
}

Friday, September 4, 2020

Excel Import in D365 F & O

 /// <summary>
/// PMEUploadGereralJournalExcel class is used to import the journals
/// </summary>
using System.IO;
using OfficeOpenXml;
using OfficeOpenXml.ExcelPackage;
using OfficeOpenXml.ExcelRange;
class PMEUploadGereralJournalExcel
{
    /// <summary>
    /// excelimport used to import the journals
    /// </summary>
    public void excelImport()
    {
        System.IO.Stream                            stream;
        //FileUploadBuild                             fileUpload;
        DialogGroup                                 dlgUploadGroup;
        FileUploadBuild                             fileUploadBuild;
        FormBuildControl                            formBuildControl;
        PMEReverseLedgerGeneralJournalTable         reverseJournal;
        PMEReverseJournal                           reversalCreation = new PMEReverseJournal();
        //PMEReverseLedgerJournalCreation             journalCreation = new PMEReverseLedgerJournalCreation();
        Dialog                                      dialog = new Dialog("@PME:ImportDataFromExcel");
        dlgUploadGroup          = dialog.addGroup("@SYS54759");
        formBuildControl        = dialog.formBuildDesign().control(dlgUploadGroup.name());
        fileUploadBuild         = formBuildControl.addControlEx(classstr(FileUpload), "@PME:Upload");
        fileUploadBuild.style(FileUploadStyle::MinimalWithFilename);
        fileUploadBuild.fileTypesAccepted('.xlsx');
        if (dialog.run() && dialog.closedOk())
        {
            FileUpload fileUploadControl     = dialog.formRun().control(dialog.formRun().controlId("@PME:Upload"));
            FileUploadTemporaryStorageResult fileUploadResult = fileUploadControl.getFileUploadResult();
            if (fileUploadResult != null && fileUploadResult.getUploadStatus())
            {
                stream = fileUploadResult.openResult();
                using (ExcelPackage Package = new ExcelPackage(stream))
                {
                    int                         rowCount, i;
                    Package.Load(stream);
                     
                    ExcelWorksheet  worksheet   = package.get_Workbook().get_Worksheets().get_Item(1);
                    OfficeOpenXml.ExcelRange    range       = worksheet.Cells;
                    rowCount                  = worksheet.Dimension.End.Row - worksheet.Dimension.Start.Row + 1;
                    
                    try
                    {
                        for (i = 2; i<= rowCount; i++)
                        {
                            ttsbegin;
                            select firstonly JournalNum from reverseJournal
                                where reverseJournal.JournalNum == range.get_Item(i, 1).value;
                            if(!reverseJournal)
                            {
                                reverseJournal.JournalNum = (range.get_Item(i, 1).value);
                                reverseJournal.Released   = NoYes::Yes;
                                reverseJournal.insert();
                                reversalCreation.createJournal(reverseJournal);
                            }
                            else
                            {
                                info(strFmt("@PME:ReverseJournalExist" ,range.get_Item(i, 1).value));
                            }
                            ttscommit;
                        }
                    }
                    catch(Exception::Error)
                    {
                        info("@PME:Error");
                                
                    }
                }
                Info("@PME:Sucessed");
            }
            else
            {
                error("@PME:Error");
            }
        }
    }
}






The above code create like below and manual choose file and import

TFS Work space configuration

Refer below link:  https://d365byjp.blogspot.com/2018/10/steps-to-configure-tfsvsts-workspace-in.html