Monday 22 July 2019

Get the Next custom number Sequence ax7/365 x++



NumberSequenceTable numt;
        NumberSequenceReference numR;
        NumberSeq num;
     
     

        select numt where numt.NumberSequence ==  'Number Sequence ID';
        select numR where numR.NumberSequenceId == numt.RecId;
        // NumberseqDatatype datatype = NumberseqDatatype::construct();
     
        num = NumberSeq::newGetNum(numR);
        num.parmMakeDecisionLater(true);

        return num.num();


Friday 19 July 2019

Axapta 2012 x++ filter the worker lookup

//Override the field data source lookupReference

public Common lookupReference(FormReferenceControl _formReferenceControl)
{
HcmWorkerLookup hcmWorkerLookup;
     SysReferenceTableLookup  tableLookup ;
     Query query = new Query();
     QueryBuildDataSource qbds;
     QueryBuildDataSource qbdsWorkers;



     tableLookup = SysReferenceTableLookup::newParameters(tableNum(HcmWorker), _formReferenceControl);

    qbds = query.addDataSource(tableNum(HcmWorker));
    if (SalesTable.SalesUnitId !='')
    {
         qbdsWorkers = qbds.addDataSource(tableNum(SMMSALESUNITMEMBERS));
         qbdsWorkers.relations(false);
         qbdsWorkers.addLink(fieldNum(HcmWorker,RecId),fieldNum(SMMSALESUNITMEMBERS,SalesPersonWorker));
         qbdsWorkers.addRange(fieldNum(SMMSALESUNITMEMBERS,salesunitid)).value(queryValue(SalesTable.SalesUnitId));

        tableLookup.parmQuery(query);
        tableLookup.addLookupfield(fieldNum(HcmWorker, Person));

        return tableLookup.performFormLookup();
    }
    else
    {
            return HcmWorkerLookup::newOnlyActiveWorkers().lookupWorker(_formReferenceControl);
    }
}

Wednesday 17 July 2019

Nav 365 C/AL create a purchase order

counter :=0;

PurchHeader.INIT;
//PurchHeader.INIT();
PurchHeader."Document Type":= PurchHeader."Document Type"::Order;
PurchHeader."Vendor Invoice No.":='123';
PurchHeader.VALIDATE("Posting Date",TODAY);
PurchHeader.VALIDATE("Buy-from Vendor No.",'10000');

PurchHeader.INSERT(TRUE);
COMMIT;

CurrPage.SETSELECTIONFILTER(SalesInvoiceLine);

 REPEAT
   PurchaseLine.INIT();
   PurchaseLine.CLEARMARKS;
   MESSAGE(FORMAT(PurchHeader."No."));
   counter := counter+1;
  PurchaseLine."Line No.":=counter;
  PurchaseLine."Document Type":=PurchHeader."Document Type";
  PurchaseLine."Document No.":=PurchHeader."No.";
  PurchaseLine.VALIDATE(Type,PurchaseLine.Type::Item);
  PurchaseLine.VALIDATE("No.",'70062');
  PurchaseLine.VALIDATE("Direct Unit Cost",90);
  //PurchaseLine.Quantity
  PurchaseLine.VALIDATE(Quantity,10);
  PurchaseLine.INSERT(TRUE);
  COMMIT;
 UNTIL SalesInvoiceLine.NEXT = 0;

Nav 365 loop through the selected records

Hello Nav my first post ;)

//lSalesLine is a local record variable that points to "Sales Line" table.
CurrPage.SETSELECTIONFILTER(lSalesLine);
IF lSalesLine.FINDSET THEN
 REPEAT
   MESSAGE(FORMAT(lSalesLine));
 UNTIL lSalesLine.NEXT = 0;

Monday 1 July 2019

AX 2012/365 x++ convert numbers to English text

/// <summary>
/// Convert numerals to Hindi format text.
/// </summary>
/// <param name="_num">
/// The numeral to be converted.
/// </param>
/// <returns>
/// The converted string.
/// </returns>
static TempStr numeralsToTxt_KW(real _num)
{
    int     numOfPennies = (decRound(frac(_num), 2) * 100) mod 100;
    real    amount         = _num - frac(_num);
    int     numOfTenths;
    str 20  ones[19], tenths[9], hundreds, thousands, millions, billions, trillions;

    int64   temp;
    str 200 returntxt;
    boolean checkStatus = false;
    #define.paise("Fils")

    real modOperator(real a1, real a2)
    {
    int tmpi;
    real tmp1, tmp2;
    tmp1 = a1 / a2;
    tmpi = real2int(tmp1);
    tmp2 = tmpi;
    return (tmp1 - tmp2)*a2;
    }

    real checkPower(real  _amount, int64 _power)
    {
        int64   numOfPower;

        if (_amount >= _power)
        {
            numOfPower = real2int(_amount) div _power;
            if (numOfPower >= 100)
            {
                temp = numOfPower div 100;
                returntxt = returntxt + ' ' + ones[temp] + ' ' + hundreds;
                numOfPower = numOfPower mod 100;
            }
            if (numOfPower >= 20)
            {
                temp = numOfPower div 10;
                returntxt = returntxt + ' ' + tenths[temp];
                numOfPower = numOfPower mod 10;
            }
            if (numOfPower >= 1)
            {
                returntxt = returntxt + ' ' + ones[numOfPower];
                numOfPower = numOfPower mod 10;
            }
            switch(_power)
            {
                case 1000000000000:
                    returntxt = returntxt + ' ' + trillions;
                    _amount = modOperator(_amount, 1000000000000.00);
                    break;
                case 1000000000:
                    returntxt = returntxt + ' ' + billions;
                    _amount = modOperator(_amount, 1000000000);
                    break;
                case 1000000:
                    returntxt = returntxt + ' ' + millions;
                    _amount = modOperator(_amount, 1000000);
                    break;
                case 1000:
                    returntxt = returntxt + ' ' + thousands;
                    _amount = modOperator(_amount, 1000);
                    break;
                case 100:
                    returntxt = returntxt + ' ' + hundreds;
                    _amount = modOperator(_amount, 100);
                    break;
                default:
                    break;
            }
        }
        return _amount;
    }

    ;

    ones[1] = "@SYS26620";
    ones[2] = "@SYS26621";
    ones[3] = "@SYS26622";
    ones[4] = "@SYS26626";
    ones[5] = "@SYS26627";
    ones[6] = "@SYS26628";
    ones[7] = "@SYS26629";
    ones[8] = "@SYS26630";
    ones[9] = "@SYS26631";
    ones[10] = "@SYS26632";
    ones[11] = "@SYS26633";
    ones[12] = "@SYS26634";
    ones[13] = "@SYS26635";
    ones[14] = "@SYS26636";
    ones[15] = "@SYS26637";
    ones[16] = "@SYS26638";
    ones[17] = "@SYS26639";
    ones[18] = "@SYS26640";
    ones[19] = "@SYS26641";

    tenths[1] = 'Not used';
    tenths[2] = "@SYS26643";
    tenths[3] = "@SYS26644";
    tenths[4] = "@SYS26645";
    tenths[5] = "@SYS26646";
    tenths[6] = "@SYS26647";
    tenths[7] = "@SYS26648";
    tenths[8] = "@SYS26649";
    tenths[9] = "@SYS26650";

    hundreds    = "@SYS26651";
    thousands   = "@SYS26652";
    millions    = "@SYS26653";
    billions    = "@SYS26654";
    trillions   = "@SYS101697";


    amount = checkPower(amount, 1000000000000);
    amount = checkPower(amount, 1000000000);
    amount = checkPower(amount, 1000000);
    amount = checkPower(amount, 1000);
    amount = checkPower(amount, 100);

    if (amount >= 20)
    {
        numOfTenths = real2int(amount) div 10;
        returntxt = returntxt + ' ' + tenths[numofTenths] + '';
        numOfTenths = numOfTenths mod 10;
        amount = real2int(amount) mod 10;
    }
    if (amount >= 1)
    {
        numOfTenths = real2int(amount);
        returntxt = returntxt + ' ' + ones[numOfTenths] + '';
    }
        //Hesham
    returntxt = returntxt + ' Dinar ';
    //
    if (numOfPennies >= 20)
    {
        numOfTenths = numOfPennies div 10;
        returntxt =  returntxt + ' '+"@SYS5534" +' '+ tenths[numofTenths] + '';
        numOfTenths = numOfTenths mod 10;
        numOfPennies = numOfPennies mod 10;
        checkStatus = true;
    }
    if (numOfPennies >= 1)
    {
        numOfTenths = real2int(numOfPennies);
        returntxt = checkStatus == true ? returntxt + ' ' + ones[numOfTenths] : returntxt + ' '+"@SYS5534" +' ' + ones[numOfTenths] + '';
        checkStatus = true;
    }
    if (numOfPennies == 0 && !checkStatus)
    {
        returntxt = returntxt + '' + "@SYS5534"+' '+"@SYS2068";
    }

    return   returntxt + ' ' + #paise;

}