Sunday, 18 January 2015

Deploy the all default reports [AX 2012] ,error 105: Unable to resolve the server's DNS address

Deploy the default reports [AX 2012]

Hi,
Open Windows PowerShell as an administrator by following these steps:
·         Click Start > Administrative Tools.
·         Right-click the Microsoft Dynamics AX 2012 Management Shell option.
·         Click Run as administrator.
In the Windows PowerShell
Publish-AXReport -ReportName CustTransList
Above code is to deploy specific report
Below code to deploy list of reports
Publish-AXReport -ReportName CustTransList, CustTransOpenPerDate
To deploy all reports, enter the following command:
Publish-AXReport –ReportName *

error 105: Unable to resolve the server's DNS address

Hi,

Start > All Programs > Accessories > Command Prompt. Right click on it and 'Run as Administrator'. Type the following and hit enter: ipconfig /flushdns


Wednesday, 8 January 2014


Email sending/saving PDF through class (batch job):

Email sending/saving PDF through class (batch job):
KNBEmailProcessing class:
class KNBEmailProcessing extends runbaseBatch
{
     // Packed
    PAYPeriodCode                       PeriodCode;//edit field
    HcmPersonnelNumberId                hcmPersonnelNumberId;//edit field
    DimensionDefault                    defaultDimension;//edit field
    PAYEmplGroupId                      Emplgrp;//edit field

    sysQueryrun     queryrun;
    str             PrintSlipEmplId;
    PAYPeriods      PAYPeriods;//table
    PAYParameters   PayParm;//table
    ETamount        DeservedBasicSalary;//edit field

    dialogField     dlgPeriodCode;
    dialogField     dlgEmplId;
    dialogField     dlgDimension;
    dialogField     dlgEmplgrp;
    boolean         ProjEmpl;
    //DialogRunbase       dialog;// Added by

    #define.CurrentVersion(1)
    #define.Version1(1)
    #localmacro.CurrentList
    PeriodCode,
    hcmPersonnelNumberId,
    defaultDimension,
    Emplgrp
    #endmacro
}



public boolean canGoBatch()
{
//    return false;
    return true;
}


public Object dialog()
{
     dialogRunbase   dialog = dialog::newFormnameRunbase(formstr(Approveperiod),this);//Approveperiod-form name
;
    dialog = super();
     dlgPeriodCode   = dialog.addField(extendedTypeStr(PAYPeriodCode));
    return dialog;
}



public boolean getFromDialog()
{
    boolean ret;

    ret = super();

    PeriodCode = dlgPeriodCode.value();

    // custAccount is handled via the edit method on the form

    return ret;
}



boolean getInfoNProcess(QueryRun _EmplRun)
{
  HcmWorker        hcmWorker;
  boolean ret;
  ;
  while (_EmplRun.next())
  {
      hcmWorker =_EmplRun.getNo(1);
      this.saveReportToPDF(hcmWorker);
      this.SendMail(hcmWorker);

      ret=true;
  }
  return ret;
}



public void initParmDefault()
{
    this.initQuery();

    super();
}



void initQuery()
{
    query   query = new query();
    QueryBuildDataSource QBDS1,QBDS2;
;
    QBDS1 = query.addDataSource(tablenum(HcmWorker));
   // QBDS2 = QBDS1.addDataSource(tableNum(HcmEmployment));
    //QBDS1.addRange(fieldnum(HcmWorker,PAYEmplGroupId));
   //QBDS2.addRange(fieldnum(HcmEmployment,defaultDimension));
    QBDS1.addRange(fieldnum(HcmWorker,PersonnelNumber));


    queryrun = new sysqueryrun(query);


}



public void new()
{
;
    super();

}



public container pack()
{
    return [#CurrentVersion,#CurrentList,queryRun.pack()];
}



void PrintReport(Hcmworker _hcmWorker)
{
    SrsReportRun                        reportRun;
    Query                               query;
    SRSReportPrintDestinationSettings   SRSReportPrintDestinationSettings;
    SRSPrintDestinationSettings         srsPrintSettings;
    ;
    delete_from SRSReportPrintDestinationSettings;
    reportRun = new SRSReportRun();
    reportRun.reportName("KNBAllEmplsPayslipReport.Report"); //<ReportName>.<DesignName>
    // Set printersettings
    srsPrintSettings = reportRun.printDestinationSettings();
    srsPrintSettings.printMediumType(SRSPrintMediumType::Email);
    srsPrintSettings.emailTo("a.mohamed@dynamicnetsoft.com");//
    srsPrintSettings.emailAttachmentFileFormat(SRSReportFileFormat::PDF);
    srsPrintSettings.emailSubject(strfmt("Payslip – %1",systemdateget()));
    srsPrintSettings.pack();
    reportRun.showDialog(false);
    reportRun.init();
    reportRun.run();
}



public QueryRun queryRun()
{
    return queryRun;
}



public void run()
{
  // ttsbegin;
    super();
    PAYPeriods = PAYPeriods::find();
    PayParm = PayParameters::find();
    QueryRun.query().dataSourceNo(1).addRange(fieldnum(HcmWorker,Status)).value(SysQuery::value(HRMEmplStatus::Employed));

    if(this.getInfoNProcess(QueryRun))
    {
          info("Processing is done!");
    }
    else
    {
        info("No records processed");
    }
     // Warning("Use Salary Payslip Report to print the Pay Slips");
     // this.printPaySlip(); ///TODO check
   // ttscommit;
}



void SaveReport(Hcmworker _hcmWorker)
{
    //SrsReportRun                        reportRun;
    //SRSPrintDestinationSettings         srsPrintSettings;
    //SRSReportPrintDestinationSettings   SRSReportPrintDestinationSettings;
    //;
    //delete_from SRSReportPrintDestinationSettings;
    //reportRun = new SRSReportRun();
   //reportRun.reportName("KNBAllEmplsPayslipReport.Report");  //<ReportName>.<DesignName>
    //// Set printersettings
    //reportRun.saveParameters();
//
    //srsPrintSettings = reportRun.printDestinationSettings();
    //srsPrintSettings.overwriteFile(true);
   //srsPrintSettings.printMediumType(SRSPrintMediumType::File);
    //srsPrintSettings.fileFormat(SRSReportFileFormat::PDF);
   //srsPrintSettings.fileName("\\\\DNWADY0016L\\Users\\dns.pradeepk\\Desktop\\KNBEmailFld\\Payslip.pdf");
    //// srsPrintSettings.fileName("C:\\Test.pdf");
    //srsPrintSettings.pack();
    //reportRun.showDialog(false);
    ////reportRun.saveParameters();                         //For Report parameters
    //reportRun.init();
    //reportRun.run();
}




void saveReportToPDF(Hcmworker _hcmWorker)
{
    SrsReportRun srsReportRun;
    srsReportRun = newSrsReportRun("KNBAllEmplsPayslipReport.report");

    srsReportRun.init();
    srsReportRun.reportCaption("Payslip");
   //srsReportRun.reportParameter("KNBPaySlipQry_PersonnelNumber").value("000526");
    srsReportRun.reportParameter("KNBPaySlipQry_PersonnelNumber").value(_hcmWorker.PersonnelNumber);//KNBPaySlipQry_PersonnelNumber - is visual studio parameter name(contract class parameter)

    srsReportRun.showDialog(false);

    // Print to a file named ReportExample in HTML/PDF format.
    srsReportRun.printDestinationSettings().printMediumType(SRSPrintMediumType::File);
    srsReportRun.printDestinationSettings().fileFormat(SRSReportFileFormat::PDF);
    srsReportRun.printDestinationSettings().overwriteFile(true);
    srsReportRun.printDestinationSettings().fileName(@"\\\\DNWADY0016L\\Users\\dns.pradeepk\\Desktop\\KNBEmailFld\\Payslip"+_hcmWorker.PersonnelNumber+".pdf");//computer path

    if(srsReportRun)
    {
        srsReportRun.executeReport();
    }
}





    // BP deviation documented
void SendMail(HcmWorker _hcmWorker)
{
    SysMailer mailer;
    SysEmailParameters parameters;
    InteropPermission permission;
    str subject , body ;
    email                                   emplEmailId;
    ;
  //emplEmailId = HcmWorker::findByPersonnelNumber('000526').email();
    emplEmailId = HcmWorker::findByPersonnelNumber(_hcmWorker.PersonnelNumber).email();
    //if (email == '')
    //{
        //checkFailed("From email address is missing, please specify on company information.");
        //return;
    //}
    if (emplEmailId == '')
    {
        checkFailed(strfmt("Employee email address is missing.",_hcmWorker.PersonnelNumber));//_hcmWorker.PersonnelNumber));
        return;
    }
         permission = newInteropPermission(InteropKind::ComInterop);
    Body = strfmt("Dear %1, <br/><br/> Kindly find the attached Pay slip <br/><br/> Regards <br/>,%2",_hcmWorker.name(),HcmWorker::findUserName(curuserId()));//<br/><br/>  - for new line
    Subject = strfmt("Salary Slip for Employee %1", _hcmWorker.name());

    permission.assert();

    //InteropPermission.assert() ;
    mailer = new SysMailer();
    parameters = SysEmailParameters::find();
    mailer.SMTPRelayServer(parameters.SMTPRelayServerName, parameters.SMTPPortNumber, parameters.SMTPUserName, SysEmailParameters::password(), false );

    mailer.fromAddress("hr@dynamicnetsoft.com"); // temporary created by Fasith later his will integrated with email parameter value
    //FileName = strfmt("%1_%2.pdf",vendParameters.KNBVendInvoicePath + vendInvoiceJour.InvoiceId,
    //date2str(systemdateget(),123,2,123,2,123,4));
    mailer.attachments().add("\\\\DNWADY0016L\\Users\\dns.pradeepk\\Desktop\\KNBEmailFld\\Payslip"+_hcmWorker.PersonnelNumber+".pdf");//completeFilePath);
    mailer.tos().appendAddress(emplEmailid);
    mailer.subject(subject);
    mailer.htmlBody(body);
    mailer.sendMail();


}




public boolean showQueryValues()
{
    return true;
}




public boolean unpack(container packedClass)
{
    version     version = runbase::getVersion(packedClass);
    container   queryCon;

    switch (version)
    {
        case #CurrentVersion:
            [version,#CurrentList,queryCon] = packedClass;
            if (sysQuery::isPackedOk(queryCon))
                queryRun = new queryRun(queryCon);
            else
                this.initQuery();
            break;
        default:
            return false;
    }

    return true;
}




public boolean validate (Object calledFrom = null)
{
    boolean ret;

    ret = super(calledFrom);
    if(PAYPeriods::findCertn(PeriodCode).Approved || PAYPeriods::findCertn(PeriodCode).JournalCreated)
      throw error("Period is already approved/processed !,you can not do any calculation on this period");
    return ret;
}



static void main(args args)
{
    //Code by Alfasith for email generation
    KNBEmailProcessing   KNBEmailProcessing = newKNBEmailProcessing();

    if (KNBEmailProcessing.prompt())
        KNBEmailProcessing.run();

}







Friday, 25 October 2013


find the range of query and display in to ssrs report

 this.queryRun().query().dataSourceTable(tableNum(<YourTableName>)).findRange(fieldNum(<YourTableName>, <Your_Division_FieldName>)).value()



ex:

queryRun.query().dataSourceTable(tableNum(PurchRFQTable)).findRange(fieldNum(PurchRFQTable, VendAccount)).value();



create one field in temporary table and assign in process report
as

     this.getReportParameters();
    //queryRun = new QueryRun(this.parmQuery());
    queryRun = new QueryRun(this.buildQuery(this.parmQuery(),FromDate,ToDate));
    VendEvaluationTmp.ParmVendAccount = queryRun.query().dataSourceTable(tableNum(PurchRFQTable)).findRange(fieldNum(PurchRFQTable, VendAccount)).value();//).this.queryRun().query().dataSourceTable(tableNum(PurchRFQTable)).findRange(fieldNum(PurchRFQTable, VendAccount)).value();
    while(queryRun.next())
    {






Friday, 27 September 2013


contract class validation method

public boolean validate()
{

    boolean             isValid = true;

 /*  if (!fromDate)

    {

        isValid = checkFailed("From Date should be entered");

    }

    if (!toDate)

    {

        isValid = checkFailed("To Date should be entered");

    }

    if (isValid && (fromDate > toDate))

    {

        isValid = checkFailed(strfmt("From Date should be less than or equal to To Date", date2StrUsr(fromDate, DateFlags::FormatAll), date2StrUsr(toDate, DateFlags::FormatAll)));

    }


     if (!Name)

    {

        isValid = checkFailed("Name should be entered");

    }
 */

    return isValid;

}

for validation u have to write this code in contract class class delaration method
contractclassname implements SysOperationValidatable

Wednesday, 25 September 2013


print report in pdf/html formate:

print report in pdf/html formate:
write the code in controlleer class





SrsReportRun srsReportRun;

    srsReportRun = new SrsReportRun("InventTruckTransactionReport.PrecisionDesign1");

    srsReportRun.init();
    srsReportRun.reportCaption("InventTruckTransactionReport.PrecisionDesign1");
    srsReportRun.reportParameter("TruckTransDS_JournalId").value("000161_070");
    srsReportRun.showDialog(false);

    // Print to a file named ReportExample in HTML/PDF format.
    srsReportRun.printDestinationSettings().printMediumType(SRSPrintMediumType::File);
    srsReportRun.printDestinationSettings().fileFormat(SRSReportFileFormat::PDF);
    srsReportRun.printDestinationSettings().overwriteFile(true);
    srsReportRun.printDestinationSettings().fileName(@"C:\InventTruckTransactionReport.pdf");

    if( srsReportRun )
    {
        srsReportRun.executeReport();
    }







for 2009 ssrs report:



static void SR_SaveReportToPDFFromController(Args _args)
{
    SalesInvoiceController  salesInvoiceController;
    SalesInvoiceContract    salesInvoiceContract;
    Args                    args = new Args();
    SrsReportRunImpl        srsReportRun;
    CustInvoiceJour         custInvoiceJour;
    ReportName              reportName = "SalesInvoice.Report";
    ;

    select firstOnly custInvoiceJour;
    args.record(custInvoiceJour);
   
    salesInvoiceController = new SalesInvoiceController();
    salesInvoiceController.parmReportName(reportName);
   
    salesInvoiceContract = salesInvoiceController.parmReportContract().parmRdpContract();
    salesInvoiceContract.parmRecordId(custInvoiceJour.RecId); // Record id must be passed otherwise the report will be empty
    salesInvoiceContract.parmCountryRegionISOCode(SysCountryRegionCode::countryInfo()); // comment this code if tested in pre release
    salesInvoiceController.parmArgs(args);

    srsReportRun = salesInvoiceController.parmReportRun() as SrsReportRunImpl;
   
    salesInvoiceController.parmReportRun(srsReportRun);
    salesInvoiceController.parmReportContract().parmPrintSettings().printMediumType(SRSPrintMediumType::File);
    salesInvoiceController.parmReportContract().parmPrintSettings().overwriteFile(true);
    salesInvoiceController.parmReportContract().parmPrintSettings().fileFormat(SRSReportFileFormat::PDF);
    salesInvoiceController.parmReportContract().parmPrintSettings().fileName(‘c:\\SR_SalesInvoice.pdf’);
    salesInvoiceController.runReport();
}

Thursday, 25 July 2013


Processreport() method without getparameters() method with 2 ranges:

Processreport() method without getparameters() method with 2 ranges:

[SysEntryPointAttribute(false)]
public void processReport()
{
    QueryRun queryRun;
    Query query;
    CustTable custTable;
    TestContractClass testContractClass;
    AccountNum accountNum;
    CustGroupId     custGroupId;
    QueryBuildDataSource queryBuildDataSource;
    QueryBuildRange queryBuildRange;
    query = this.parmQuery();
    TestContractClass = this.parmDataContract() as TestContractClass;
    accountNum = testContractClass.parmAccountNum();
    custGroupId = testContractClass.parmCustGroupId();
   
    // Add parameters to the query.
    queryBuildDataSource = query.dataSourceTable(tablenum(CustTable));
    if(accountNum)
      queryBuildRange = queryBuildDataSource.findRange(fieldnum(CustTable, AccountNum));
    if(custGroupId)
        queryBuildRange = queryBuildDataSource.findRange(fieldnum(CustTable, custGroup));
    if (!queryBuildRange)
    {
    queryBuildRange = queryBuildDataSource.addRange(fieldnum(CustTable, AccountNum));
        queryBuildRange = queryBuildDataSource.addRange(fieldnum(CustTable, custGroup));
    }
    // If an account number has not been set, then use the parameter value to set it.
    if(!queryBuildRange.value())
    {
    queryBuildRange.value(accountNum);
    queryBuildRange.value(custGroupId);
    }
   
    queryRun = new QueryRun(query);
    while(queryRun.next())
    {
    custTable = queryRun.get(tableNum(CustTable));
    this.insertTmpTable(CustTable);
    }

}

No comments:

Post a Comment