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
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())
{
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
{
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