Sunday 28 August 2016

How to filter Segmented Entry based on Account Type in Ax 2012


filter Segmented Entry based on Account Type






  1. Create a form 
  2. Override form Init and write below code 
  3. Take data source as LedgerJournalTrans

public class FormRun extends ObjectRun
{
    DimensionDynamicAccountController   dimAccountController;
    
}
public void init()
{
    super();
    dimAccountController = DimensionDynamicAccountController::construct(ledgerJournalTrans_ds,
                                    fieldStr(LedgerJournalTrans, LedgerDimension),
                                    fieldStr(LedgerJournalTrans, AccountType));
}

 3.Under design override two controls i.e ComboBox and Segmented Entry control

 4.Under Segmented Entry control override below methods and set below code & properties



public void jumpRef()
{
    dimAccountController.jumpRef();
}
public void loadAutoCompleteData(LoadAutoCompleteDataEventArgs _e)
{
    super(_e);
    dimAccountController.loadAutoCompleteData(_e);
}
public void loadSegments()
{
    super();
    dimAccountController.parmControl(this);
    dimAccountController.loadSegments();

}
public void lookup()
{
    switch (LedgerJournalTrans.AccountType)
    {
        case LedgerJournalACType::Bank:
            BankAccountTable::lookupBankAccount(this);
            break;
        case LedgerJournalACType::Cust:
            CustTable::lookupCustomer(this);
            break;
        case LedgerJournalACType::FixedAssets:
            AssetTable::lookupAccountNum(this);
            break;
        case LedgerJournalACType::Ledger:
            super();
            break;
        case LedgerJournalACType::Vend:
            VendTable::lookupVendor(this);
            break;

        default:
            super();
            break;
    }
}
public Common resolveReference()
{
    Common ret;

    ret = dimAccountController.resolveReference();

    return ret;
}
public void segmentValueChanged(SegmentValueChangedEventArgs _e)
{
    super(_e);

    dimAccountController.segmentValueChanged(_e);
}
public boolean validate()
{
    boolean isValid;

    isValid = super();
    isValid = dimAccountController.validate() && isValid;

    return isValid;
}

Thursday 25 August 2016

filtering lookups in a dialog in SSRS Reports Ax 2012

filtering lookups in a dialog.

You have to override the corresponding lookup method in the UI builder (using registerOverrideMethod()) and filter the query of the lookup.
This is how you can register a lookup override for a data contract field:

public void postBuild()
{
    DialogField df;
   
    super();
   
    df = this.bindInfo().getDialogField(
            this.dataContractObject(),
            methodStr(MyContract, parmMyValue));

    df.registerOverrideMethod(
          methodStr(FormStringControl, lookup),
          methodStr(MyUiBuilder, lookupMyValue), // Your lookup method
          this);  
}

Monday 22 August 2016

How to get Company information and tax information using X++ code in Ax 2012

static void CompanyInformation(Args _args)
{
    CompanyInfo     Company;
    ;
    Company = CompanyInfo::find();
    info(strFmt("Company Name : %1", Company.Name));
    info(strFmt("Company Phone : %1", Company.phone()));
    info(strFmt("Company Phone : %1", Company.telefax()));
    info(strFmt("Company Address : %1", Company.postalAddress().Address));
}
How to get Company full name using x++ code 
str     countryName;

countryName= logisticsAddressCountryRegion::name(countryRegionId);

Company Tax details using X++ code
IEC
display TaxRegistrationNumber_IN  tax_IEC()
{
    TaxInformation_IN        taxInformation_IN;

    taxInformation_IN   = TaxInformation_IN::findDefaultbyLocation(LogisticsPostalAddress::findRecId(this.PrimaryAddressLocation).Location);

    return TaxRegistrationNumbers_IN::find(taxInformation_IN.IECRegistrationNumberTable).RegistrationNumber;
}

Service Tax (STC)
display TaxRegistrationNumber_IN  tax_STC()
{
    TaxInformation_IN        taxInformation_IN;

    taxInformation_IN   = TaxInformation_IN::findDefaultbyLocation(LogisticsPostalAddress::findRecId(this.PrimaryAddressLocation).Location);

    return TaxRegistrationNumbers_IN::find(taxInformation_IN.STCRegistrationNumberTable).RegistrationNumber;

}

Vendor STC number
public str vendorSTC(AccountNum   _accountNum)
{
    VendTable           vendTable;
    DirPartyTable       dirPartyTable;
    LogisticsLocation   logisticsLocation;
    TaxInformation_IN   taxInformation_IN;

    select vendTable where vendTable.AccountNum == _accountNum
        join dirPartyTable
            where dirPartyTable.RecId == vendTable.Party
        join logisticsLocation
            where logisticsLocation.RecId == dirPartyTable.PrimaryAddressLocation;


    taxInformation_IN   = TaxInformation_IN::findDefaultbyLocation(logisticsLocation.RecId);

    return TaxRegistrationNumbers_IN::find(taxInformation_IN.STCRegistrationNumberTable).RegistrationNumber;


}


Tax Identification number (TIN)
display TaxRegistrationNumber_IN  tax_TIN()
{
    TaxInformation_IN        taxInformation_IN;

    taxInformation_IN   = TaxInformation_IN::findDefaultbyLocation(LogisticsPostalAddress::findRecId(this.PrimaryAddressLocation).Location);

    return TaxRegistrationNumbers_IN::find(taxInformation_IN.TIN).RegistrationNumber;

}

Tax Account number(TAN) or PAN

display TaxRegistrationNumber_IN  tax_TAN()
{
    TaxInformation_IN           taxInformation_IN;
    utcDateTime                 fromDate, toDate;
    TaxRegistrationNumbers_IN   TaxRegistrationNumbers_IN;

    fromDate = DateTimeUtil::getSystemDateTime();
    toDate = DateTimeUtil::maxValue();

    taxInformation_IN   = TaxInformation_IN::findDefaultbyLocation(LogisticsPostalAddress::findByLocationAndValidDateTime_IN(this.PrimaryAddressLocation, fromDate, toDate).Location);
    select firstFast TaxRegistrationNumbers_IN
            where TaxRegistrationNumbers_IN.RecId   == taxInformation_IN.TAN
                &&   TaxRegistrationNumbers_IN.TaxType == TaxType_IN::None;

    return TaxRegistrationNumbers_IN.RegistrationNumber;
}

// Company GSTINNumber 
   select companyInfo where companyInfo.DataArea == curext()
           join dirpartytable where dirpartytable.PartyNumber == companyInfo.PartyNumber
               join dirPartyLocation where dirPartyLocation.Party == dirpartytable.RecId
                   join logisticsLocation where logisticsLocation.RecId == dirPartyLocation.Location
                      join taxInformation_IN where taxInformation_IN.RegistrationLocation == logisticsLocation.RecId
                                                              && taxInformation_IN.IsPrimary == NoYes::Yes;

  tmp.comapanyGSTINNumber = TaxRegistrationNumbers_IN::find(taxInformation_IN.GSTIN).RegistrationNumber;

 //Vendor GSTINNumber
  select vendtable1 where vendtable1.AccountNum==vendtable.AccountNum
          join dirPartyLocation where dirPartyLocation.Party == vendtable1.Party
              join logisticsLocation where logisticsLocation.RecId == dirPartyLocation.Location
                   join taxInformation_IN where taxInformation_IN.RegistrationLocation == logisticsLocation.RecId
                                                          && taxInformation_IN.IsPrimary == NoYes::Yes;

     tmp.vendorGSTINNumber = TaxRegistrationNumbers_IN::find(taxInformation_IN.GSTIN).RegistrationNumber;

  // CGST , SGST & IGST numbers with rates.
  select firstOnly HSNCode, SAC from taxDocumentRowTransaction_IN
          join RecId, DiscountAmount from taxDocumentRowTransaction
               where taxDocumentRowTransaction.RecId == taxDocumentRowTransaction_IN.TaxDocumentRowTransactionRecId
               && taxDocumentRowTransaction.TransactionHeaderTableId == vendInvoiceinfotable.TableId
               && taxDocumentRowTransaction.TransactionHeaderRecId == vendInvoiceinfotable.RecId
               && taxDocumentRowTransaction.TransactionLineTableId == vendInvoiceinfoline.TableId
               && taxDocumentRowTransaction.TransactionLineRecId == vendInvoiceinfoline.RecId;

      if(taxDocumentRowTransaction.RecId)
     {
           while select taxDocumentComponentTransaction

            where taxDocumentComponentTransaction.TaxDocumentRowTransactionRecId == taxDocumentRowTransaction.RecId
         {
               if(taxDocumentComponentTransaction.TaxCode =="CGST")
               {
                     tmp.CGST_TaxRate = taxDocumentComponentTransaction.TaxRate*100;
                     tmp.CGST = taxDocumentComponentTransaction.TaxAmountCur;
               }
              if(taxDocumentComponentTransaction.TaxCode == "SGST")
              {
                    tmp.SGST_Taxrate = taxDocumentComponentTransaction.TaxRate*100;
                    tmp.SGST = taxDocumentComponentTransaction.TaxAmountCur;
              }
             if(taxDocumentComponentTransaction.TaxCode == "IGST")
             {
                   tmp.IGST_Taxrate = taxDocumentComponentTransaction.TaxRate*100;
                   tmp.IGST = taxDocumentComponentTransaction.TaxAmountCur;
             }
       }
   }



For multiple Phone numbers and fax Details

static void Companywithmultiplephonenumber(Args _args)
{
 
    DirPartyContactInfoView         contactInfoView;
    CompanyInfo companyinfo;
 
    companyinfo = CompanyInfo::find();
    info(strfmt("%1",companyinfo.Name));
 
  while  select  contactInfoView
        where
             contactInfoView.Type == LogisticsElectronicAddressMethodType::Phone
            || contactInfoView.Type == LogisticsElectronicAddressMethodType::Fax
            && contactInfoView.Party == companyinfo.RecId
    {
         
        if(contactInfoView.Type == LogisticsElectronicAddressMethodType::Phone)
        {
            info(strFmt("Description - %1   Phone -             %2",contactInfoView.LocationName,contactInfoView.Locator));
        }
        else
        {
            info(strFmt("Description - %1   Fax - %2",contactInfoView.LocationName,contactInfoView.Locator));
        }  
    }
}



static void CompanyInfo(Args _args)
{
    DirPartyContactInfoView         contactInfoView,contactInfoPhone,contactInfoFax;
    Name                            LocationName,Phone,Fax;
    description255                  contactAddress;
    CompanyInfo                     companyInfo = CompanyInfo::find();
    container                       CompanyLogo = FormLetter::companyLogo();
    Name                            PrintedBy   = xUserInfo::find(false,curUserId()).name;

    while  select contactInfoView group by LocationName
        where contactInfoView.Party == companyinfo.RecId
     {
           LocationName = contactInfoView.LocationName;

         select contactInfoPhone where contactInfoPhone.Party == companyinfo.RecId
         && contactInfoPhone.Type == LogisticsElectronicAddressMethodType::Phone
         && contactInfoPhone.LocationName == LocationName;

         if(contactInfoPhone)
         {
             Phone     = contactInfoPhone.Locator;
         }
         select contactInfoFax where contactInfoFax.Party == companyinfo.RecId
         && contactInfoFax.Type == LogisticsElectronicAddressMethodType::Fax
         && contactInfoFax.LocationName == LocationName;

         if(contactInfoFax)
         {
            Fax       = contactInfoFax.Locator;
         }

         contactAddress += LocationName + " Tel: " + Phone + " Fax: " + Fax + " " +'\n';


    }
    info(strFmt("ContactAddress = %1 , ExcutedBy = %2",contactAddress,PrintedBy));
}