Tuesday, January 7, 2020

X++ code for get exchange rate

static void ExchangeRateJob(Args _args)
{

    ExchangeRate     exchangeRate;
    ExchangeRateType ExchangeRateType;
    ExchangeRateCurrencyPair exchangeRateCurrencyPair;
    Amount4decimal             exchRate;

    CurrencyCode fromCurrency  = "USD";
    CurrencyCode toCurrency    = "AED";
    TransDate    transDate     = today();


    select firstonly exchangeRateCurrencyPair
    where
        exchangeRateCurrencyPair.ExchangeRateType == 5637145326
    &&  exchangeRateCurrencyPair.FromCurrencyCode == fromCurrency
    &&  exchangeRateCurrencyPair.ToCurrencyCode   == toCurrency;
    exchRate = exchangeRate::findByDate(exchangeRateCurrencyPair.RecId,transDate).ExchangeRate;
    info(strFmt("%1",exchRate/100));

}

X++ code for Updating main contact worker in customer master

static void UpdatingCustomerMaster(Args _args)
{
 CustTable   _custTable,custMaster;
 int         updatedCount;

 updatedcount = 0;

    ttsBegin;

    while select forUpdate _custTable
        where _custTable.MainContactWorker == 0  &&
              _custTable.SalesGroup == 'RAB'//'SHI'
    {
        _custTable.MainContactWorker = 5637158830;///5637158827;
        _custTable.update();
        updatedCount++;
    }
    ttsCommit;
    info(strFmt("No Of Records Updated:%1 ",updatedCount));
    info('done');
}

X++ code for upload excel through bank account

static void BankAccountUploadExcel(Args _args)
{
    #AviFiles
    FilenameOpen filename;
    dialogField dialogFilename,DialogJournalType;
    int jounaltype;
    Dialog dialog= new Dialog("Excel Upoad");
    Container excelCont[];
    RecId           offsetledger;
        RecId   recidh;
    HcmWorkerBankAccount HcmWorkerBankAccount;
    int rowIdx;
    Counter linesImported;
    int lastRow,dimcount;
    boolean ok = true;
    str c1,c2,c3,c4,c5,c6,c7,c8,c9,c10;
    str input;
    container       accEntryPattern;
    BudgetType      budgetType;
    SysExcelApplication application;
    SysExcelWorkBooks workBooks;
    SysExcelWorkSheets workSheets;
    SysExcelWorkSheet workSheet;
    SysExcelCells cells;
    SysOperationProgress progress;
    struct      struct= new Struct();
    HcmPersonIdentificationNumber   HcmPersonIdentificationNumber;
    BankAccountType                 BankAccountType;
    #define.CurrentVersion(1)
    #localmacro.CurrentList
    filename
    #endmacro

    #Excel
    #define.Star('*')
    #define.Space(' ')


    // convert into str from excel cell value
    str COMVariant2Str(COMVariant _cv, int _decimals = 0, int _characters = 0, int _separator1 = 0, int _separator2 = 0)
    {
        switch (_cv.variantType())
        {
            case (COMVariantType::VT_BSTR):
            return _cv.bStr();

            case (COMVariantType::VT_R4):
            return num2str(_cv.float(),_characters,_decimals,_separator1,_separator2);

            case (COMVariantType::VT_R8):
            return num2str(_cv.double(),_characters,_decimals,_separator1,_separator2);

            case (COMVariantType::VT_DECIMAL):
            return num2str(_cv.decimal(),_characters,_decimals,_separator1,_separator2);

            case (COMVariantType::VT_DATE):
            return date2str(_cv.date(),213,2,1,2,1,4);

            case (COMVariantType::VT_EMPTY):
            return "";

            default:
            throw error(strfmt("@SYS26908", _cv.variantType()));
        }
        return "";
    }

    // Find last row from excel

    int findLastRow(SysExcelWorkSheet _workSheet)
    {
        SysExcelRange range;
        ;

        range = _workSheet.cells().range(#ExcelTotalRange);

        try
        {
            // Finds the row where the first contents is found.
            range = range.find(#Star, null, #xlFormulas, #xlWhole, #xlByRows, #xlPrevious);
        }
        catch (Exception::Error)
        {
            error("@SYS59926");
            return 0;
        }

        if (range)
        {
            return range.row();
        }
        else
        {
            return 0;
        }
    }


    ;


    dialogFilename = dialog.addField(extendedtypestr(FilenameOpen));
   // DialogJournalType = dialog.addField(enumstr(God_JournalToUpload),"Journal Type");
    dialog.filenameLookupFilter(["@SYS28576",#XLS,#Xlsx]);
    dialog.filenameLookupTitle("Upload from Excel");
    dialogFilename.value(filename);

    if(!dialog.run())
    return;

    filename = dialogFilename.value();

   // ttsbegin;

    application = SysExcelApplication::construct();
    workBooks = application.workbooks();
    workBooks.open(filename,0,true);

    workSheets = workBooks.item(1).worksheets();
    // this.importExcel("Sheet1");

    input = "Sheet1";
    workSheet = workSheets.itemFromNum(1);//.itemFromName(input);
    cells = workSheet.cells();
    lastRow = findLastRow(workSheet);
    rowIdx = 2;

    progress = new SysOperationProgress();
    progress.setCaption("Excel Importing");
    progress.setTotal(lastRow);
    progress.setAnimation(#AviTransfer);
    setprefix("Excel Import");

    ttsBegin;
    while (rowIdx <= lastRow)
    {

        setPrefix(strfmt("Excel Row: %1", rowIdx));

        c1 = COMVariant2Str(cells.item(rowIdx,1).value());
        c2 = COMVariant2Str(cells.item(rowIdx,2).value());
        c3 = COMVariant2Str(cells.item(rowIdx,3).value());
        c4 = COMVariant2Str(cells.item(rowIdx,4).value());
        c5 = COMVariant2Str(cells.item(rowIdx,5).value());
        c6 = COMVariant2Str(cells.item(rowIdx,6).value());
        c7 = COMVariant2Str(cells.item(rowIdx,7).value());
        c8 = COMVariant2Str(cells.item(rowIdx,8).value());
        linesImported++;
        recidh = HcmWorker::findByPersonnelNumber(c1).recid;
        if (!HcmWorkerBankAccount::findByWorkerAccount(recidh, c3))//).ReconPeek(con, 6)).RecId)
        {
            HcmWorkerBankAccount.initValue();
            HcmWorkerBankAccount.AccountId      = c4;//conPeek(con, 25);
            HcmWorkerBankAccount.BankGroupId    = c2;//conPeek(con, 26c);
            HcmWorkerBankAccount.initFromBankGroup(BankGroup::find(c2));//conPeek(con, 26)));
            HcmWorkerBankAccount.AccountNum     = c3;//conPeek(con, 28);
            HcmWorkerBankAccount.Worker         = recidh;
            HcmWorkerBankAccount.GOD_IBANNumber = c5;  //GITL::377076:28082019 field added in table and assigned in job
            HcmWorkerBankAccount.BankAccountType = str2enum(BankAccountType,c6);
            HcmWorkerBankAccount.GOD_IsSalaryAcc = NoYes::Yes;
            HcmWorkerBankAccount.insert();
        }
        rowIdx++;
    }
    ttsCommit;

    info("done");
}

X++ code for Customer Ageing through Job

static void CustomerAgeingCode(Args _args)
{
    CustAgingReportTmp          custAgingReportTmp;
    GH_CustAgingReportTmp       _ageingMaster;
    Query                       query        = new Query();
    QueryBuildDataSource        queryBuildDataSource;
    QueryBuildRange             queryBuildRange;
    int                         i;
   // CustTable                   _custTable = CustTable::find("C-00001");
    CustAgingReportController   controller   = new CustAgingReportController();
    CustAgingReportContract     rdpContract  = new CustAgingReportContract ();
    CustAgingReportDP           dataProvider = new CustAgingReportDP();
    ;
    //contract class name
     rdpContract.parmZeroDate(today()); // Balance as of
     rdpContract.parmZeroDate(today()); // Start date
     rdpContract.parmDateTransactionDuedate(DateTransactionDuedate::TransactionDate);
     rdpContract.parmDetailed(NoYes::No); // Is Detail;
     rdpContract.parmAgingBuckets("0-30-60-90-120-120 plus days" );  // Aging period
     rdpContract.parmExcludeZeroBalanceCustomer(NoYes::Yes);
     rdpContract.parmDirection(ForwardBackwardPrinting::Forward);
     rdpContract.parmPeriod(DayMonth::Day);
    //Get data contract instance.
    controller.parmReportName(ssrsReportStr(CustAgingReport, DesignWithNoDetailAndWithTransactionCur));

    query = controller.parmReportContract().parmQueryContracts().lookup('CustAgingReportDP_DynamicParameter');
    query.dataSourceNo(1).clearRanges();
   // query.dataSourceNo(1).addRange(fieldNum(CustTable, AccountNum)).Value(SysQuery::value('C-00061')); //  GIVE CUSTOMER ACCOUNT

    //parameter that you passing in contract class
    query = dataProvider.parmQuery();
    query.dataSourceNo(1).addRange(fieldNum(CustTable, AccountNum)).Value(SysQuery::value('C-00061'));
    dataProvider.parmDataContract(rdpContract);
    dataProvider.processReport();
    custAgingReportTmp = dataProvider.getCustAgingReportTmp();

    while select custAgingReportTmp
     {
        // print(custAgingReportTmp.CustAccount);
        // Just print the filed that you want see the output
        // print(custAgingReportTmp.Name);
        info(strFmt("customer         - %1", custAgingReportTmp.CustAccount));
        info(strFmt("name             - %1", custAgingReportTmp.Name));
        info(strFmt("Total Receiable  - %1", custAgingReportTmp.Balance01));
        info(strFmt("Current Balance  - %1", custAgingReportTmp.Balance02));
        info(strFmt("30days           - %1", custAgingReportTmp.Balance03));
        info(strFmt("60days           - %1", custAgingReportTmp.Balance04));
        info(strFmt("90days           - %1", custAgingReportTmp.Balance05));
        info(strFmt("120days          - %1", custAgingReportTmp.Balance06));
        info(strFmt("+120days         - %1", custAgingReportTmp.Balance07));
     }


}