Wednesday 16 April 2014

Remove the double Quotes ( " ) or special character using String methods in AX

Static str stripStrings(str _InputString)

{

   str message;

   message =  System.Text.RegularExpressions.Regex::Replace(_InputString, @"[\W_]", "");

   return message;


}
-------------------or------------------
Hi,

Just use the below skeleton to remove the " ( double quotes ) orspecial character from the sample string.

strRem('Sample String','*');

* may be -" / or any special character

Friday 11 April 2014

Multiple Tables in field Lookup method

public void lookup()
{
  Query                   query = new Query();
  QueryBuildDataSource    qbdsPurchTable,QbdsInvntQO, qbdsInventDim;
  QueryBuildRange         qbrVendId,qbrPurchStatus,qbrPurchType;
  QueryBuildLink          qblink1, QbLink2;

  SysTableLookup  sysTableLookup = sysTableLookup::newParameters
                                             (tableNum(PurchTable), this);
  ;//breakpoint;
  qbdsPurchTable = query.addDataSource(tableNum(PurchTable));

  QbdsInvntQO = qbdsPurchTable.addDataSource(tableNum(InventQuarantineOrder));
  QbdsInvntQO.relations(false);
  QbdsInvntQO.joinMode(JoinMode::NoExistsJoin);
  qblink1 =  QbdsInvntQO.addLink(FieldNum(PurchTable,PurchId),

                                 FieldNum(InventQuarantineOrder,TransRefId));
  qbdsInventDim = QbdsInvntQO.addDataSource(tableNum(InventDim));
  qbdsInventDim.relations(false);
  qbdsInventDim.joinMode(JoinMode::NoExistsJoin);
  QbLink2 = qbdsInventDim.addLink(FieldNum(InventQuarantineOrder,InventDimId),

                                               FieldNum(InventDim,InventDimId));
  qbdsPurchTable.addRange(fieldNum(PurchTable,                                                                OrderAccount)).value(PurchTable_InvoiceAccountGrid.valueStr());
  qbdsPurchTable.addRange(FieldNum(PurchTable, PurchStatus)).

                                          value("Invoiced,Received");
  QbdsInvntQO.addRange(fieldNum(InventQuarantineOrder,                                                     Status)).value(queryValue(InventQuarantineStatus::Ended));
  qbdsInventDim.addRange(fieldNum(InventDim, InventLocationId)).value("102018");

  sysTableLookup.addLookupfield(fieldNum(PurchTable,OrderAccount));
  sysTableLookup.addLookupfield(fieldNum(PurchTable,PurchId),true);
  sysTableLookup.addLookupfield(fieldNum(PurchTable,PurchStatus));

  sysTableLookup.parmQuery(query);
  sysTableLookup.performFormLookup();
}

Thursday 10 April 2014

Dynamics AX 2012 Import HR Postions X++ code

static void ImportPosition(Args _args)
{
SysExcelApplication     application;
SysExcelWorkbooks       workbooks;
SysExcelWorkbook        workbook;
SysExcelWorksheets      worksheets;
SysExcelWorksheet       worksheet;
SysExcelCells           cells;
COMVariantType          type;
OMOperatingUnit         OMOperatingUnit;
int                     row=1;

Name                                name;
FileName                            filename;
HcmPosition                         HcmPosition;
HcmPositionDetail                   HcmPositionDetail;
HcmPositionWorkerAssignment         HcmPositionWorkerAssignment;
HcmPositionDuration                 HcmPositionDuration;
str                                 job;
OMOperatingUnitNumber               department;

;
application = SysExcelApplication::construct();
workbooks   = application.workbooks();

filename = "E:\\import\\job.xlsx";
ttsBegin;

try
{
workbooks.open(filename);
}
catch (Exception::Error)
{
throw error("File cannot be opened.");
}
workbook = workbooks.item(1);
worksheets = workbook.worksheets();
worksheet = worksheets.itemFromNum(1);
cells = worksheet.cells();
do
{
row++;

    HcmPosition.PositionId = cells.item(row, 1).value().bStr();
    HcmPosition.insert();
    department = cells.item(row, 2).value().bStr();
    job = cells.item(row, 3).value().bStr();
    select firstOnly OMOperatingUnit where OMOperatingUnit.OMOperatingUnitNumber == department;
    if(OMOperatingUnit)
    {
        HcmPositionDetail.Department    = OMOperatingUnit.RecId;
        HcmPositionDetail.Job           = HcmJob::findByJob(job).RecId;
        HcmPositionDetail.Position      = HcmPosition.RecId;

        HcmPositionDetail.Title         = HcmTitle::findByTitle(HcmJobDetail::findByJob(HcmPositionDetail.Job).Description).RecId;
        HcmPositionDetail.Description   = cells.item(row, 4).value().bStr();
        HcmPositionDetail.ValidFrom     = DateTimeUtil::newDateTime(cells.item(row, 5).value().date(),timeNow());
        HcmPositionDetail.ValidTo       = DateTimeUtil::maxValue();
        HcmPositionDetail.insert();
        HcmPositionWorkerAssignment.ValidFrom   = DateTimeUtil::newDateTime(cells.item(row, 5).value().date(),timeNow());
        HcmPositionWorkerAssignment.ValidTo     = DateTimeUtil::maxValue();
        HcmPositionWorkerAssignment.Position    = HcmPosition.RecId;
        HcmPositionWorkerAssignment.Worker      = HcmWorker::findByPersonnelNumber(cells.item(row, 6).value().bStr()).RecId;
        HcmPositionWorkerAssignment.insert();
        HcmPositionDuration.Position    = HcmPosition.RecId;
        HcmPositionDuration.ValidFrom   = HcmPositionWorkerAssignment.ValidFrom;
        HcmPositionDuration.ValidTo     = DateTimeUtil::maxValue();
        HcmPositionDuration.insert();

        type = cells.item(row+1, 1).value().variantType();
    print row;
    }
    }
while (type != COMVariantType::VT_EMPTY);
application.quit();
ttsCommit;
}

AX2012 Create Employee or Worker using csv file

 private void  krishh_employeeCreateUsingService(container _c)
        {
            HcmWorkerImportService                      hcmWorkerImportService;
            HcmWorkerImport                             hcmWorkerImport;
            HcmWorkerImport_HcmWorker                   hcmWorkerImport_HcmWorker;
            HcmWorkerImport_DirPerson_DirPerson         hcmWorkerImport_DirPerson_DirPerson;
            HcmWorkerImport_HcmPersonPrivateDetails     hcmWorkerImport_HcmPersonPrivateDetails;
            HcmWorkerImport_DirPersonName               hcmWorkerImport_DirPersonName;
            HcmWorkerImport_DirPartyPostalAddressVie    hcmWorkerImport_DirPartyPostalAddressVie;
      
            HcmWorkerImport_HcmEmployment               hcmWorkerImport_HcmEmployment;
            HcmWorkerImport_HcmEmploymentDetail         hcmWorkerImport_HcmEmploymentDetail;
            HcmWorkerImport_HcmWorkerTitle              hcmWorkerImport_HcmWorkerTitle;
            ;
        // creating the service object
            hcmWorkerImportService          = HcmWorkerImportService::construct();
            hcmWorkerImport                 = new HcmWorkerImport();
      
            hcmWorkerImport_HcmWorker       =hcmWorkerImport.createHcmWorker().addNew();
            hcmWorkerImport_HcmWorker.parmPersonnelNumber(conpeek(_c, EmployeeNumber));
      
            hcmWorkerImport_DirPerson_DirPerson =hcmWorkerImport_HcmWorker.createDirPerson().addNew();
            hcmWorkerImport_DirPerson_DirPerson.parmInitials(conpeek(_c, Initials));
            hcmWorkerImport_DirPerson_DirPerson.parmProfessionalTitle(conpeek(_c, Position));
      
            hcmWorkerImport_DirPersonName       =hcmWorkerImport_DirPerson_DirPerson.createDirPersonName().addNew();
            hcmWorkerImport_DirPersonName.parmFirstName(conpeek(_c, FirstName));
            hcmWorkerImport_DirPersonName.parmMiddleName(conpeek(_c, MiddleName));
            hcmWorkerImport_DirPersonName.parmLastName(conpeek(_c, LastName));
      
            hcmWorkerImport_HcmPersonPrivateDetails =hcmWorkerImport_DirPerson_DirPerson.createHcmPersonPrivateDetails().addNew();
           hcmWorkerImport_HcmPersonPrivateDetails.parmBirthDate(HrmImportEmployeeMasterdata::convDate(conpeek(_c, BirthDate)));
      
           hcmWorkerImport_HcmPersonPrivateDetails.parmGender(HrmImportEmployeeMasterdata::convGender(conpeek(_c, Gender)));
      
            hcmWorkerImport_DirPartyPostalAddressVie =hcmWorkerImport_DirPerson_DirPerson.createDirPartyPostalAddressView().addNew();
           hcmWorkerImport_DirPartyPostalAddressVie.parmCountryRegionId(HrmImportEmployeeMasterdata::defaultCountryRegionId());
           hcmWorkerImport_DirPartyPostalAddressVie.parmRoles(HrmImportEmployeeMasterdata::defaultRole());
            hcmWorkerImport_DirPartyPostalAddressVie.parmStreet(conpeek(_c, Address));
          hcmWorkerImport_DirPartyPostalAddressVie.parmStreetNumber(conpeek(_c, streetnum)));
            hcmWorkerImport_DirPartyPostalAddressVie.parmZipCode(conpeek(_c, PostalCode));
      
            hcmWorkerImport_HcmEmployment   =hcmWorkerImport_HcmWorker.createHcmEmployment().addNew();
            hcmWorkerImport_HcmEmployment.parmLegalEntity(curext());
      
            hcmWorkerImport_HcmEmploymentDetail =hcmWorkerImport_HcmEmployment.createHcmEmploymentDetail().addNew();
            hcmWorkerImport_HcmEmploymentDetail.parmWorkerStartDate(
                datetobeginUtcDateTime(HrmImportEmployeeMasterdata::convDate(conpeek(_c, DateOfHiring)), DateTimeUtil::getUserPreferredTimeZone()));
      
            hcmWorkerImportService.create(hcmWorkerImport);
      
        }

Tuesday 8 April 2014

if condition in ssrs expression

It is very simple in SSRS as well. It is IIF(<condition>, <truePart>, <falsePart>) in SSRS. You can also do nesting,  if need to test multiple conditions.
Below example will give you hint:


=IIF(Fields!col.Value="RED", "RED", iif(Fields!col.Value= "Yellow", "Yellow", "White"))