Showing posts with label SSRS. Show all posts
Showing posts with label SSRS. Show all posts
Friday, 27 March 2020
Friday, 22 March 2019
Having query in dialog form get the query values by using contract class
I am using query for dialog
need to get the values of that query
Create a query.
action type menu item
add to controller class
form controller class getting the service class
here in service class we are getting contract class.
here in attribute of contact class we are passing our query
contract class:
/// <summary>
/// Contract class for releasing sales order
/// </summary>
[DataContractAttribute]
class FBHSalesReleaseOrderContract
{
str packedQuery;
[DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', querystr(FBHSalesAgreementFollowUp))]
/// <summary>
/// Parm method to return and set parameters.
/// </summary>
/// <param name="_packedQuery">
/// </param>
/// <returns>
/// Returnd the parameter passed.
/// </returns>
public str parmQuery(str _packedQuery = packedQuery)
{
packedQuery = _packedQuery;
return packedQuery;
}
/// <summary>
/// Method to return query.
/// </summary>
/// <returns>
/// Returnd the query.
/// </returns>
public Query getQuery()
{
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
/// <summary>
/// Method to set the query.
/// </summary>
/// <param name="_query">
/// </param>
public void setQuery(Query _query)
{
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
}
Controller class:
/// <summary>
/// Controller class for release order
/// </summary>
class FBHSalesReleaseOrderController extends SysOperationServiceController
{
/// <summary>
/// Construct for calling service class
/// </summary>
/// <param name = "_args">Argument</param>
/// <returns></returns>
public static FBHSalesReleaseOrderController construct(SysOperationExecutionMode _executionMode=SysOperationExecutionMode::Synchronous)
{
FBHSalesReleaseOrderController FBHSalesReleaseOrderController = new FBHSalesReleaseOrderController(classStr(FBHSalesReleaseOrderService),methodStr(FBHSalesReleaseOrderService,process),_executionMode);
return FBHSalesReleaseOrderController;
}
/// <summary>
/// Main method for controller class
/// </summary>
/// <param name = "_args"></param>
public static void main(Args _args)
{
FBHSalesReleaseOrderController FBHSalesReleaseOrderController;
FBHSalesReleaseOrderController = FBHSalesReleaseOrderController::construct();
FBHSalesReleaseOrderController.startOperation();
}
/// <summary>
/// To set the dialog caption
/// </summary>
/// <param name = "_dialogCaption"></param>
/// <returns></returns>
public LabelType parmDialogCaption(LabelType _dialogCaption = "")
{
return "@FBH:FBH50718";
}
/// <summary>
///
/// </summary>
/// <returns></returns>
protected boolean canRunInNewSession()
{
boolean ret;
ret = super();
ret = true;
return ret;
}
}
Service class:
/// <summary>
/// Service class for releasing sales order
/// </summary>
class FBHSalesReleaseOrderService
{
/// <summary>
/// Method to run the query and apply validations.
/// </summary>
/// <param name="_FBHSalesReleaseOrderContract">
/// FBHSalesReleaseOrderContract contract class parameter
/// </param>
public void process(FBHSalesReleaseOrderContract _FBHSalesReleaseOrderContract)
{
Query query;
QueryRun queryRun;
query = _FBHSalesReleaseOrderContract.getQuery();
queryRun = new QueryRun(query);
query = queryRun.query();
QueryBuildDataSource qbds = query.dataSourceTable(tableNum(AgreementLine));
QueryFilter filter = query.findQueryFilter(qbds, fieldId2Name(tableNum(AgreementLine), fieldNum(AgreementLine, FBHReleaseDate)));
if (filter == null)
{
filter = query.addQueryFilter(qbds, fieldId2Name(tableNum(AgreementLine), fieldNum(AgreementLine, FBHReleaseDate)));
}
if (filter && filter.value() == "")
{
filter.value(queryValue(DateTimeUtil::getToday(DateTimeUtil::getUserPreferredTimeZone())));
}
SalesAgreementHeader salesAgreementHeader;
while(queryRun.next())
{
if (queryRun.changed(tableNum(SalesAgreementHeader)) )
{
salesAgreementHeader = queryRun.get(TableNum(SalesAgreementHeader)) as SalesAgreementHeader;
salesAgreementHeader = SalesAgreementHeader::findAgreementId(SalesAgreementHeader.SalesNumberSequence);
if(( SalesAgreementHeader.LatestLineExpirationDate
&& SalesAgreementHeader.LatestLineExpirationDate
<= DateTimeUtil::getSystemDate(DateTimeUtil::getUserPreferredTimeZone()))
||!SalesAgreementHeader::hasdeliverySchedule(SalesAgreementHeader))
{
continue;
}
try
{
ttsbegin;
FBHSalesReleaseOrderService::releaseOrderFromAgreement(SalesAgreementHeader,query);
ttscommit;
}
catch(Exception::Error)
{
continue;
}
}
}
}
/// <summary>
/// Release order from agreement
/// </summary>
/// <param name = "salesAgreementHeader">sales agreement from which order is to be released</param>
/// <param name = "_query">passing selected query from dialog</param>
public static void releaseOrderFromAgreement(SalesAgreementHeader salesAgreementHeader,Query _query = new Query())
{
salesCreateReleaseOrderTableTmp salesCreateReleaseOrderTabletmp;
salesCreateReleaseOrderLineTmp salesCreateReleaseOrderLineTmp;
SalesAgreementHeader.Currency = Ledger::accountingCurrency(CompanyInfo::current());
FBHSalesAgreementGenerateReleaseOrder salesAgreementGenerateReleaseOrder
= FBHSalesAgreementGenerateReleaseOrder::construct();
salesAgreementGenerateReleaseOrder.parmSalesAgreementHeader(salesAgreementHeader);
salesAgreementGenerateReleaseOrder.parmisBatch(NoYes::Yes);
salesAgreementGenerateReleaseOrder.parmQuery(_query);
salesAgreementGenerateReleaseOrder.createReleaseOrderTable(salesCreateReleaseOrderTableTmp);
salesAgreementGenerateReleaseOrder.createReleaseOrderLine(salesCreateReleaseOrderLineTmp);
salesAgreementGenerateReleaseOrder.parmReleaseOrderTable(salesCreateReleaseOrderTableTmp);
salesAgreementGenerateReleaseOrder.parmReleaseOrderLine(SalesCreateReleaseOrderLineTmp);
if (salesAgreementGenerateReleaseOrder.check())
{
ttsbegin;
SalesAutoCreate salesAutoCreate = SalesAutoCreate::construct(salesAgreementGenerateReleaseOrder.getreleaseorderline(), null,salesAgreementGenerateReleaseOrder.getreleaseordertable());
salesAutoCreate.create();
ttscommit;
}
}
}
need to get the values of that query
Create a query.
action type menu item
add to controller class
form controller class getting the service class
here in service class we are getting contract class.
here in attribute of contact class we are passing our query
contract class:
/// <summary>
/// Contract class for releasing sales order
/// </summary>
[DataContractAttribute]
class FBHSalesReleaseOrderContract
{
str packedQuery;
[DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', querystr(FBHSalesAgreementFollowUp))]
/// <summary>
/// Parm method to return and set parameters.
/// </summary>
/// <param name="_packedQuery">
/// </param>
/// <returns>
/// Returnd the parameter passed.
/// </returns>
public str parmQuery(str _packedQuery = packedQuery)
{
packedQuery = _packedQuery;
return packedQuery;
}
/// <summary>
/// Method to return query.
/// </summary>
/// <returns>
/// Returnd the query.
/// </returns>
public Query getQuery()
{
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
/// <summary>
/// Method to set the query.
/// </summary>
/// <param name="_query">
/// </param>
public void setQuery(Query _query)
{
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
}
Controller class:
/// <summary>
/// Controller class for release order
/// </summary>
class FBHSalesReleaseOrderController extends SysOperationServiceController
{
/// <summary>
/// Construct for calling service class
/// </summary>
/// <param name = "_args">Argument</param>
/// <returns></returns>
public static FBHSalesReleaseOrderController construct(SysOperationExecutionMode _executionMode=SysOperationExecutionMode::Synchronous)
{
FBHSalesReleaseOrderController FBHSalesReleaseOrderController = new FBHSalesReleaseOrderController(classStr(FBHSalesReleaseOrderService),methodStr(FBHSalesReleaseOrderService,process),_executionMode);
return FBHSalesReleaseOrderController;
}
/// <summary>
/// Main method for controller class
/// </summary>
/// <param name = "_args"></param>
public static void main(Args _args)
{
FBHSalesReleaseOrderController FBHSalesReleaseOrderController;
FBHSalesReleaseOrderController = FBHSalesReleaseOrderController::construct();
FBHSalesReleaseOrderController.startOperation();
}
/// <summary>
/// To set the dialog caption
/// </summary>
/// <param name = "_dialogCaption"></param>
/// <returns></returns>
public LabelType parmDialogCaption(LabelType _dialogCaption = "")
{
return "@FBH:FBH50718";
}
/// <summary>
///
/// </summary>
/// <returns></returns>
protected boolean canRunInNewSession()
{
boolean ret;
ret = super();
ret = true;
return ret;
}
}
Service class:
/// <summary>
/// Service class for releasing sales order
/// </summary>
class FBHSalesReleaseOrderService
{
/// <summary>
/// Method to run the query and apply validations.
/// </summary>
/// <param name="_FBHSalesReleaseOrderContract">
/// FBHSalesReleaseOrderContract contract class parameter
/// </param>
public void process(FBHSalesReleaseOrderContract _FBHSalesReleaseOrderContract)
{
Query query;
QueryRun queryRun;
query = _FBHSalesReleaseOrderContract.getQuery();
queryRun = new QueryRun(query);
query = queryRun.query();
QueryBuildDataSource qbds = query.dataSourceTable(tableNum(AgreementLine));
QueryFilter filter = query.findQueryFilter(qbds, fieldId2Name(tableNum(AgreementLine), fieldNum(AgreementLine, FBHReleaseDate)));
if (filter == null)
{
filter = query.addQueryFilter(qbds, fieldId2Name(tableNum(AgreementLine), fieldNum(AgreementLine, FBHReleaseDate)));
}
if (filter && filter.value() == "")
{
filter.value(queryValue(DateTimeUtil::getToday(DateTimeUtil::getUserPreferredTimeZone())));
}
SalesAgreementHeader salesAgreementHeader;
while(queryRun.next())
{
if (queryRun.changed(tableNum(SalesAgreementHeader)) )
{
salesAgreementHeader = queryRun.get(TableNum(SalesAgreementHeader)) as SalesAgreementHeader;
salesAgreementHeader = SalesAgreementHeader::findAgreementId(SalesAgreementHeader.SalesNumberSequence);
if(( SalesAgreementHeader.LatestLineExpirationDate
&& SalesAgreementHeader.LatestLineExpirationDate
<= DateTimeUtil::getSystemDate(DateTimeUtil::getUserPreferredTimeZone()))
||!SalesAgreementHeader::hasdeliverySchedule(SalesAgreementHeader))
{
continue;
}
try
{
ttsbegin;
FBHSalesReleaseOrderService::releaseOrderFromAgreement(SalesAgreementHeader,query);
ttscommit;
}
catch(Exception::Error)
{
continue;
}
}
}
}
/// <summary>
/// Release order from agreement
/// </summary>
/// <param name = "salesAgreementHeader">sales agreement from which order is to be released</param>
/// <param name = "_query">passing selected query from dialog</param>
public static void releaseOrderFromAgreement(SalesAgreementHeader salesAgreementHeader,Query _query = new Query())
{
salesCreateReleaseOrderTableTmp salesCreateReleaseOrderTabletmp;
salesCreateReleaseOrderLineTmp salesCreateReleaseOrderLineTmp;
SalesAgreementHeader.Currency = Ledger::accountingCurrency(CompanyInfo::current());
FBHSalesAgreementGenerateReleaseOrder salesAgreementGenerateReleaseOrder
= FBHSalesAgreementGenerateReleaseOrder::construct();
salesAgreementGenerateReleaseOrder.parmSalesAgreementHeader(salesAgreementHeader);
salesAgreementGenerateReleaseOrder.parmisBatch(NoYes::Yes);
salesAgreementGenerateReleaseOrder.parmQuery(_query);
salesAgreementGenerateReleaseOrder.createReleaseOrderTable(salesCreateReleaseOrderTableTmp);
salesAgreementGenerateReleaseOrder.createReleaseOrderLine(salesCreateReleaseOrderLineTmp);
salesAgreementGenerateReleaseOrder.parmReleaseOrderTable(salesCreateReleaseOrderTableTmp);
salesAgreementGenerateReleaseOrder.parmReleaseOrderLine(SalesCreateReleaseOrderLineTmp);
if (salesAgreementGenerateReleaseOrder.check())
{
ttsbegin;
SalesAutoCreate salesAutoCreate = SalesAutoCreate::construct(salesAgreementGenerateReleaseOrder.getreleaseorderline(), null,salesAgreementGenerateReleaseOrder.getreleaseordertable());
salesAutoCreate.create();
ttscommit;
}
}
}
Friday, 20 November 2015
class for To get the printer names lookup in ax and dialog override method and last dialog values store next time dialog opens:
To get the printer names lookup in ax and dialog override method and last dialog values store next time dialog opens:
/// <summary>
/// to show the printer name lookup
/// </summary>
class MSSpindleLabelLookup extends RunBase
{
dialog dialog;
dialogGroup dialogGroup;
dialogField dialogField;
PrinterName getPrinterName;
container _dialogValues;
}
/// <summary>
/// to get the dialog
/// </summary>
/// <returns>
/// returns printer name what you selected
/// </returns>
/// <remarks>
/// to get the dialog
/// </remarks>
/// <exception cref="Exception::Error">
/// if user cancel the printing
/// </exception>
protected Object dialog()
{
FormStringControl systemprinterNames;
;
dialog = new Dialog("@MPR5759");
dialogGroup = dialog.addGroup("@SYS62708");
dialogField = dialog.addField(extendedTypeStr(PrinterName));
systemprinterNames = dialogField.fieldControl();
systemprinterNames.registerOverrideMethod(methodStr(FormStringControl, lookup), MethodStr(MSSpindleLabelLookup, msprinterLookup), this);
systemprinterNames.mandatory(true);
//Get the previouse values
_dialogValues = xSysLastValue::getValue(curExt(), curUserId(), UtilElementType::Job, "@SYS62708");
//Check if we have previouse values
if(_dialogValues != conNull())
{
dialogField.value(conPeek(_dialogValues, 1));
}
if (dialog.run())
{
//Save the user choices
_dialogValues = conNull();
_dialogValues += dialogField.value();
xSysLastValue::putValue(_dialogValues, curExt(), curUserId(), UtilElementType::Job, "@SYS62708");
}
if(dialog.closedOk() == false)
throw error("@MPR5760");
return Dialog;
}
/// <summary>
/// get the lookup
/// </summary>
/// <param name="_formControl">
/// passing string control
/// </param>
public void msprinterLookup(FormStringControl _formControl )
{
SysTableLookup sysTableLookup;
TmpTableFieldLookup tmpTableFieldLookup;
Enumerator en;
List entitylist = new list(types::String);
Map printerMap;
MapEnumerator enumerator;
PrinterName printerName;
printerMap = MSSpindleLabelLookup::printerMap();//If above method was created in Global class else call specific class
enumerator = printerMap.getEnumerator();
while (enumerator.moveNext())
{
printerName = enumerator.currentValue();
entitylist.addend(printerName);
}
en = entityList.getEnumerator();
while (en.moveNext())
{
tmpTableFieldLookup.MSprinterName = en.current();
tmpTableFieldLookup.insert();
}
sysTableLookup = SysTableLookup::newParameters(tableNum(tmpTableFieldLookup), _formControl);
sysTableLookup.addLookupfield(fieldNum(TmpTableFieldLookup, MSprinterName));
sysTableLookup.setLabel("@SYS62708");
//BP Deviation documented
sysTableLookup.parmTmpBuffer(tmpTableFieldLookup);
sysTableLookup.performFormLookup();
}
/// <summary>
/// run the dialog
/// </summary>
/// <returns>
/// get the printer name
/// </returns>
public PrinterName runPrinterLookup()
{
this.dialog();
getPrinterName = dialogField.value();
return getPrinterName;
}
public static MSSpindleLabelLookup construct()
{
return new MSSpindleLabelLookup();
}
public static void main(Args args)
{
MSSpindleLabelLookup MSSpindleLabelLookup = MSSpindleLabelLookup::construct();
MSSpindleLabelLookup.runPrinterLookup();
}
//This method loads all available printers to a Map object
static Map printerMap()
{
Microsoft.Dynamics.AX.Framework.Reporting.Shared.PrinterHelper printerHelper;
Microsoft.Dynamics.AX.Framework.Reporting.Shared.PrinterInfo printerInfo;
System.Collections.ArrayList names;
System.Collections.IEnumerator enumerator;
Map printerMap;
str name;
int printerStatus;
str driverName;
str portName;
str comments;
int jobCountSinceLastReset;
if(!printerMap)
{
printerMap = new Map(Types::String, Types::Container);
// BP Deviation documented
printerHelper = new Microsoft.Dynamics.AX.Framework.Reporting.Shared.PrinterHelper();
names = printerHelper.get_PrinterNames();
if (names != null)
{
enumerator = names.GetEnumerator();
while (enumerator.MoveNext())
{
name = enumerator.get_Current();
printerInfo = printerHelper.GetPrinterInfo(name);
// BP Deviation documented
printerStatus = CLRInterop::getAnyTypeForObject(printerInfo.get_PrinterStatus());
// BP Deviation documented
driverName = CLRInterop::getAnyTypeForObject(printerInfo.get_DriverName());
// BP Deviation documented
portName = CLRInterop::getAnyTypeForObject(printerInfo.get_PortName());
// BP Deviation documented
comments = CLRInterop::getAnyTypeForObject(printerInfo.get_Comment());
// BP Deviation documented
jobCountSinceLastReset = CLRInterop::getAnyTypeForObject(printerInfo.get_JobCountSinceLastReset());
printerMap.insert(name, [name, printerStatus, driverName, portName, comments, jobCountSinceLastReset]);
}
}
}
return printerMap;
}
Tuesday, 17 November 2015
ui builder class lookup in one parameter depends on other parameters(passing range in parameters)
lookup in one parameter depends on other parameters:
here in we selected production id in parameter
that production having 4 Opr no parameter
here in i selected one opr no. parameter
for that production having 3 job identfication parameters
selected one job identification parameter
having 2 route card journal parameters
passing the range depends on above parameter we are showing lookup in other parametes
public class MSTravelCardUIBuilder extends SysOperationAutomaticUIBuilder
{
DialogField dialogProdId,dialogOprNum;
DialogField dialogProdJobId,dialogProdJournalRoute;
MSTravelCardContract contract;
}
public void build()
{
Dialog dialogLocal = this.dialog();
MSTravelCardContract contractLocal = this.dataContractObject();
//dialogLocal.addGroup(“Parameters”);
this.addDialogField(methodStr(MSTravelCardContract,parmProdId), contractLocal);
this.addDialogField(methodStr(MSTravelCardContract,parmOprNum), contractLocal);
this.addDialogField(methodStr(MSTravelCardContract,parmProdJobId), contractLocal);
this.addDialogField(methodStr(MSTravelCardContract,parmProdJournalIdRoute), contractLocal);
}
here in we selected production id in parameter
that production having 4 Opr no parameter
here in i selected one opr no. parameter
for that production having 3 job identfication parameters
selected one job identification parameter
having 2 route card journal parameters
passing the range depends on above parameter we are showing lookup in other parametes
public class MSTravelCardUIBuilder extends SysOperationAutomaticUIBuilder
{
DialogField dialogProdId,dialogOprNum;
DialogField dialogProdJobId,dialogProdJournalRoute;
MSTravelCardContract contract;
}
public void build()
{
Dialog dialogLocal = this.dialog();
MSTravelCardContract contractLocal = this.dataContractObject();
//dialogLocal.addGroup(“Parameters”);
this.addDialogField(methodStr(MSTravelCardContract,parmProdId), contractLocal);
this.addDialogField(methodStr(MSTravelCardContract,parmOprNum), contractLocal);
this.addDialogField(methodStr(MSTravelCardContract,parmProdJobId), contractLocal);
this.addDialogField(methodStr(MSTravelCardContract,parmProdJournalIdRoute), contractLocal);
}
public void getFromDialog()
{
contract = this.dataContractObject();
super();
}
public void initializeFields()
{
contract = this.dataContractObject();
}
public void lookupOprNum(FormStringControl _control)
{
Query query = new Query();
SysTableLookup sysTablelookup;
sysTablelookup =SysTableLookup::newParameters(tableNum(ProdJournalRoute),_control);
sysTablelookup.addLookupfield(fieldNum(ProdJournalRoute,OprNum));
sysTablelookup.addLookupfield(fieldnum(ProdJournalRoute,ProdId));
query.addDataSource(tableNum(ProdJournalRoute));
query.dataSourceTable(tableNum(ProdJournalRoute)).addRange(fieldNum(ProdJournalRoute, ProdId)).value(queryValue(dialogProdId.value()));
sysTablelookup.parmQuery(query);
sysTablelookup.performFormLookup();
}
public void lookupProdJobId(FormStringControl _control)
{
Query query = new Query();
QueryBuildDataSource qbdsJournalRoute,qbdsRouteTrans;
SysTableLookup sysTablelookup;
sysTablelookup =SysTableLookup::newParameters(tableNum(ProdJournalRoute),_control);
sysTablelookup.addLookupfield(fieldNum(ProdJournalRoute,JobId));
sysTablelookup.addLookupfield(fieldNum(ProdJournalRoute,OprNum));
sysTablelookup.addLookupfield(fieldnum(ProdJournalRoute,ProdId));
qbdsJournalRoute = query.addDataSource(tableNum(ProdJournalRoute));
qbdsJournalRoute.addRange(fieldNum(ProdJournalRoute, ProdId)).value(queryValue(dialogProdId.value()));
qbdsJournalRoute.addRange(fieldNum(ProdJournalRoute, OprNum)).value(queryValue(dialogOprNum.value()));
qbdsJournalRoute.addRange(fieldNum(ProdJournalRoute, QtyGood)).value(queryValue('>0'));
qbdsRouteTrans = qbdsJournalRoute.addDataSource(tableNum(ProdRouteTrans));
qbdsRouteTrans.addLink(fieldNum(ProdJournalRoute,ProdId),fieldNum(ProdRouteTrans,TransRefId));
qbdsRouteTrans.addLink(fieldNum(ProdJournalRoute,JobId),fieldNum(ProdRouteTrans,JobId));
qbdsRouteTrans.joinMode(joinmode::ExistsJoin);
qbdsRouteTrans.addRange(fieldNum(ProdRouteTrans,TransType)).value(queryValue(ProdRouteTransType::Qty));
qbdsRouteTrans.addRange(fieldNum(ProdRouteTrans,QtyGood)).value(queryValue('>0'));
sysTablelookup.parmQuery(query);
sysTablelookup.performFormLookup();
}
public void lookupProdJournalRoute(FormStringControl _control)
{
Query query = new Query();
QueryBuildDataSource qbdsJournalRoute,qbdsRouteTrans;
SysTableLookup sysTablelookup;
sysTablelookup =SysTableLookup::newParameters(tableNum(ProdJournalRoute),_control);
sysTablelookup.addLookupfield(fieldNum(ProdJournalRoute,JournalId),true);
sysTablelookup.addLookupfield(fieldNum(ProdJournalRoute,JobId));
sysTablelookup.addLookupfield(fieldNum(ProdJournalRoute,OprNum));
sysTablelookup.addLookupfield(fieldnum(ProdJournalRoute,ProdId));
qbdsJournalRoute = query.addDataSource(tableNum(ProdJournalRoute));
qbdsJournalRoute.addRange(fieldNum(ProdJournalRoute, ProdId)).value(queryValue(dialogProdId.value()));
qbdsJournalRoute.addRange(fieldNum(ProdJournalRoute, OprNum)).value(queryValue(dialogOprNum.value()));
qbdsJournalRoute.addRange(fieldNum(ProdJournalRoute, QtyGood)).value(queryValue('>0'));
qbdsRouteTrans = qbdsJournalRoute.addDataSource(tableNum(ProdRouteTrans));
qbdsRouteTrans.addLink(fieldNum(ProdJournalRoute,ProdId),fieldNum(ProdRouteTrans,TransRefId));
qbdsRouteTrans.addLink(fieldNum(ProdJournalRoute,JobId),fieldNum(ProdRouteTrans,JobId));
qbdsRouteTrans.joinMode(joinmode::ExistsJoin);
qbdsRouteTrans.addRange(fieldNum(ProdRouteTrans,TransType)).value(queryValue(ProdRouteTransType::Qty));
qbdsRouteTrans.addRange(fieldNum(ProdRouteTrans,QtyGood)).value(queryValue('>0'));
qbdsRouteTrans.addRange(fieldNum(ProdRouteTrans,JobId)).value(queryValue(dialogProdJobId.value()));
sysTablelookup.parmQuery(query);
sysTablelookup.performFormLookup();
}
public void postBuild()
{
;
super();
dialogProdId = this.bindInfo().getDialogField(
this.dataContractObject(),
methodStr(MSTravelCardContract,parmProdId));
dialogOprNum = this.bindInfo().getDialogField(
this.dataContractObject(),
methodStr(MSTravelCardContract,parmOprNum));
dialogOprNum.registerOverrideMethod(methodStr(FormStringControl, lookup),methodStr(MSTravelCardUIBuilder, lookupOprNum), this);
if (dialogOprNum)
{
dialogOprNum.lookupButton(2);
}
dialogProdJobId = this.bindInfo().getDialogField(
this.dataContractObject(),
methodStr(MSTravelCardContract,parmProdJobId));
dialogProdJobId.registerOverrideMethod(methodStr(FormStringControl, lookup),methodStr(MSTravelCardUIBuilder, lookupProdJobId), this);
if (dialogProdJobId)
{
dialogProdJobId.lookupButton(2);
}
dialogProdJournalRoute = this.bindInfo().getDialogField(
this.dataContractObject(),
methodStr(MSTravelCardContract,parmProdJournalIdRoute));
dialogProdJournalRoute.registerOverrideMethod(methodStr(FormStringControl, lookup),methodStr(MSTravelCardUIBuilder, lookupProdJournalRoute), this);
if (dialogProdJournalRoute)
{
dialogProdJournalRoute.lookupButton(2);
}
}
public void postRun()
{
super();
}
public boolean transTypeModified(FormStringControl _control)
{
dialogProdId.value(_control.valueStr());
dialogOprNum.value("");
dialogProdJobId.value("");
dialogProdJournalRoute.value("");
return true;
}
Friday, 23 October 2015
UI Builder class overwrite Build method for group wise parameters
if you are using UI builder class then in contract class what ever you added parameters group by
it will not show group by for that we need to overwrite build method with this things
we need to add
DialogGroup groupDate, groupType, groupWarehouse;
Section group by Date
groupDate = dialog.addGroup("@SYS80056");
groupDate.columns(1);
groupDate.caption("@SYS80056");
Example:
/// <summary>
/// to build the parameters
/// </summary>
public void build()
{
DialogGroup groupDate, groupType, groupWarehouse;
Dialog dialogLocal = this.dialog();
MSMasteringRejectsContract = this.dataContractObject();
//Section group by Date
groupDate = dialog.addGroup("@SYS80056");
groupDate.columns(1);
groupDate.caption("@SYS80056");
this.addDialogField(methodStr(MSMasteringRejectsContract,parmInventJournalType), MSMasteringRejectsContract);
this.addDialogField(methodStr(MSMasteringRejectsContract,parmmprBaseItemType), MSMasteringRejectsContract);
//Section group by Type
groupType = dialog.addGroup("@PSA1497");
groupType.columns(1);
groupType.caption("@PSA1497");
this.addDialogField(methodStr(MSMasteringRejectsContract,parmFromDate),MSMasteringRejectsContract);
this.addDialogField(methodStr(MSMasteringRejectsContract,parmToDate),MSMasteringRejectsContract);
//Section group by Warehouse
groupWarehouse = dialog.addGroup("@SYS6437");
groupWarehouse.columns(1);
groupWarehouse.caption("@SYS6437");
this.addDialogField(methodStr(MSMasteringRejectsContract,parminventLocationIdOutBound),MSMasteringRejectsContract);
this.addDialogField(methodStr(MSMasteringRejectsContract,parminventLocationIdInBound),MSMasteringRejectsContract);
}
it will not show group by for that we need to overwrite build method with this things
we need to add
DialogGroup groupDate, groupType, groupWarehouse;
Section group by Date
groupDate = dialog.addGroup("@SYS80056");
groupDate.columns(1);
groupDate.caption("@SYS80056");
Example:
/// <summary>
/// to build the parameters
/// </summary>
public void build()
{
DialogGroup groupDate, groupType, groupWarehouse;
Dialog dialogLocal = this.dialog();
MSMasteringRejectsContract = this.dataContractObject();
//Section group by Date
groupDate = dialog.addGroup("@SYS80056");
groupDate.columns(1);
groupDate.caption("@SYS80056");
this.addDialogField(methodStr(MSMasteringRejectsContract,parmInventJournalType), MSMasteringRejectsContract);
this.addDialogField(methodStr(MSMasteringRejectsContract,parmmprBaseItemType), MSMasteringRejectsContract);
//Section group by Type
groupType = dialog.addGroup("@PSA1497");
groupType.columns(1);
groupType.caption("@PSA1497");
this.addDialogField(methodStr(MSMasteringRejectsContract,parmFromDate),MSMasteringRejectsContract);
this.addDialogField(methodStr(MSMasteringRejectsContract,parmToDate),MSMasteringRejectsContract);
//Section group by Warehouse
groupWarehouse = dialog.addGroup("@SYS6437");
groupWarehouse.columns(1);
groupWarehouse.caption("@SYS6437");
this.addDialogField(methodStr(MSMasteringRejectsContract,parminventLocationIdOutBound),MSMasteringRejectsContract);
this.addDialogField(methodStr(MSMasteringRejectsContract,parminventLocationIdInBound),MSMasteringRejectsContract);
}
Wednesday, 20 May 2015
Printer settings in ax 2012 (Print management in ax 2012)
Printer settings in ax 2012 (Print management in ax 2012):
public client static void main(Args _args, container _con)
{
SRSPrintDestinationSettings printSettings;
SRSPrintMediumType printMediumType;
SRSReportFileFormat printFileFormat;
FilePath path;
MSRouteCardController controller = new MSRouteCardController();
controller.parmReportName(#ReportName);
printMediumType = conPeek(_con,3);
printFileFormat = conPeek(_con,21);
path = conPeek(_con,20);
controller.setRange(_args, controller.parmReportContract().parmQueryContracts().lookup(controller.getFirstQueryContractKey()));
printSettings = controller.parmReportContract().parmPrintSettings();
switch(printMediumType)
{
case SRSPrintMediumType::Archive:
case SRSPrintMediumType::Screen:
printSettings.printMediumType(printMediumType);
break;
case SRSPrintMediumType::Printer:
printSettings.printMediumType(printMediumType);
printSettings.printAllPages(true);
printSettings.fileName(@path);
printSettings.printerName(conPeek(_con,4));
break;
case SRSPrintMediumType::File:
printSettings.printMediumType(printMediumType);
printSettings.fileFormat(printFileFormat);
printSettings.overwriteFile(true);
printSettings.fileName(@path);
break;
case SRSPrintMediumType::Email:
printSettings.printMediumType(printMediumType);
printSettings.emailTo(conPeek(_con,15));
printSettings.emailCc(conPeek(_con,16));
printSettings.emailSubject(conPeek(_con,17));
printSettings.emailAttachmentFileFormat(conPeek(_con,18));
printSettings.emailAttachmentImageFileFormat(conPeek(_con,19));
break;
}
//controller.parmArgs(_args);
//controller.setRange(_args, controller.parmReportContract().parmQueryContracts().lookup(controller.getFirstQueryContractKey()));
controller.parmShowDialog(true);
controller.startOperation();
}
Note : here in container (_con) i am inserting values(print desination settings values ex :printer , email,file..etc ) in form level and passing that as parmeter to main method of controller
ex:
added a button in form level like
here setup(d) is the button. here i added clicked method of this button as
clicked method:
void clicked()
{
SRSPrintDestinationSettings printJobSettings;
;
super();
printJobSettings = new SRSPrintDestinationSettings(prodParmRelease.SetupPrintDigitopiaRoutecard);
SrsReportRunUtil::showSettingsDialog(printJobSettings);
prodParmRelease.SetupPrintDigitopiaRoutecard = printJobSettings.pack();
}
here in this prodparmRelease is my table here i added the one container field as "SetupPrintDigitopiaRoutecard "
and this field is extended from "PrintJobSettingsPacked:
Tuesday, 31 March 2015
command for create new line in ssrs report
command for create new line in ssrs report:
VbCrlf
ex:
field1.value & vbcrlf & field2.value
=Fields!ItemId.Value & VbCrlf & Fields!ItemName.Value
Thursday, 3 July 2014
Through controller class selecting the design
public class DNGRMDashUnitStatusEachDateController extends
SrsReportRunController
{
#define.ReportName(‘DNGRMDashUnitStatusEachDateReport.DNGRMDashUnitStatusEachDateDesignPercent′)
DNGRMDashUnitStatusEachDateContract dNGRMDashUnitStatusEachDateContract;
boolean isPercent;
}
protected void preRunModifyContract()
{
SrsReportDataContract dataContract = this.parmReportContract();
SrsReportRdlDataContract
contract = dataContract.parmRdlContract();
;
if
(!dNGRMDashUnitStatusEachDateContract)
{
dNGRMDashUnitStatusEachDateContract =
this.parmReportContract().parmRdpContract();
}
isPercent =
dNGRMDashUnitStatusEachDateContract.parmIsPercent();
if(isPercent)
{
dataContract.parmReportName('DNGRMDashUnitStatusEachDateReport.DNGRMDashUnitStatusEachDateDesignPercent');
}
else
{
dataContract.parmReportName('DNGRMDashUnitStatusEachDateReport.DNGRMDashUnitStatusEachDateDesignNumber');
}
super();
}
public client static void main(Args _args)
{
DNGRMDashUnitStatusEachDateController controller = new
DNGRMDashUnitStatusEachDateController ();
controller.parmReportName('DNGRMDashUnitStatusEachDateReport.DNGRMDashUnitStatusEachDateDesignPercent');
controller.parmArgs(_args);
controller.startOperation();
}
Tuesday, 28 January 2014
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
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 = new SrsReportRun("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 = new
InteropPermission(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 = new KNBEmailProcessing();
if
(KNBEmailProcessing.prompt())
KNBEmailProcessing.run();
}
Subscribe to:
Posts (Atom)