Today we will learn on how to create a sales report that takes sales id as a parameter and print the sales order corresponding to the supplied sales id
Create a temporary table named TEC_SALESINVOICETMP with Tabletype: tempDB
Make 3 Classes:-
class SalesReportDC
{
RecId
recid;
}
[DataMemberAttribute("RecId")]
public RecId parmSalesRecid(RecId
_recid =recid)
{
recid
= _recid;
return recid;
}
-----------------------------------------------------------------------------
class SalesReportController extends SrsReportRunController
{
}
protected void preRunModifyContract()
{
SalesReportDC contract;
RecId recid;
;
contract =
this.parmReportContract().parmRdpContract() as
SalesReportDC;
contract.parmSalesRecid(this.parmArgs().record().RecId);
}
public static void
main(Args _args)
{
SalesReportController controller = new SalesReportController();
controller.parmReportName(ssrsReportStr(SalesReportRDP,
SalesReport)); //reportname,design
controller.parmArgs(_args);
//
controller.setRange(_args,
controller.parmReportContract().parmQueryContracts().lookup(controller.getFirstQueryContractKey()));
//if
(controller.prompt())
// {
controller.startOperation();
//}
}
-----------------------------------------------------------------
[SRSReportParameterAttribute(classStr(SalesReportDC))]
class SalesReportRDP extends
SRSReportDataProviderBase
{
TEC_SalesInvoiceTmp salesInvoiceTmp; //temptable
// SalesLine salesline;
//InventTable inventtable;
//SalesTable salestable;
CustInvoiceJour custinvoicejour;
CustInvoiceTrans custinvoicetrans;
RecId recId;
}
[SRSReportDataSetAttribute(tableStr(TEC_SalesInvoiceTmp))]
public TEC_SalesInvoiceTmp
getSalesInvoiceTmp()
{
select
salesInvoiceTmp;
return
salesInvoiceTmp;
}
private void insertData()
{
SalesTable salesTable;
// select salesTable where salesTable.SalesId == custinvoicejour.SalesId;
salesTable =
custinvoicejour.salesTable();
salesInvoiceTmp.ItemId = custinvoicetrans.ItemId;
SalesInvoiceTmp.DeliveryDate = salesTable.DeliveryDate;
SalesInvoiceTmp.SalesId = custinvoicetrans.SalesId;
SalesInvoiceTmp.SalesName = salesTable.SalesName;
SalesInvoiceTmp.Price = custinvoicetrans.SalesPrice;
SalesInvoiceTmp.NameAlias = custinvoicetrans.itemName();
SalesInvoiceTmp.insert();
}
public void processReport()
{
SalesReportDC salesReportContract =
this.parmDataContract();
Query query = new Query();
QueryBuildDataSource qbds,qbds1,qbds2;
QueryRun qr;
;
recId = salesReportContract.parmSalesRecid();
qbds = query.addDataSource(tableNum(custinvoicejour));
qbds1 = qbds.addDataSource(tableNum(custinvoicetrans));
qbds.addRange(fieldNum(CustInvoiceJour,recId)).value(queryValue(recid));
qbds1.relations(true);
qbds1.joinMode(JoinMode::InnerJoin);
qr = new
QueryRun(query);
while(qr.next())
{
custinvoicejour =
qr.get(tableNum(custinvoicejour));
custinvoicetrans =
qr.get(tableNum(custinvoicetrans));
//salestable =
qr.get(tableNum(salestable));
this.insertData();
}
// select
salesInvoiceTmp where salesInvoiceTmp.ItemId ==
salesReportContract.parmSalesRecid();
super();
}
Now
create a menu item – Output type
Drag the menu item in Menu.
Now go to visual studio and design the
report. Select precision design. And after designing add to AOT and Publish.
Now
view your report in AX.
No comments:
Post a Comment