Query with QBDS in RDP Report in D365fo X++
Query with QBDS in D365fo X++
Code:
public void processReport() { Query query; QueryBuildDataSource qbds; QueryBuildDataSource purchaseOrderQBDS; QueryBuildDataSource purchaseReqLineQBDS; QueryBuildDataSource purchaseOrderLineQBDS; QueryBuildDataSource vendPackingSlipJourQBDS; QueryBuildDataSource vendInvoiceJourQBDS; QueryBuildRange qbr; QueryRun queryRun; str range; dssl_contract = this.parmDataContract(); vendor = dssl_contract.parmVendor(); purchId = dssl_contract.parmPurchaseOrder(); packingSlipId = dssl_contract.parmPackingSlipId(); fromDate = dssl_contract.parmFromDate(); toDate = dssl_contract.parmToDate(); invoiceId = dssl_contract.parmInvoiceId(); voucher = dssl_contract.parmVoucher(); //Query query = new Query(this.parmQuery()); qbds = query.dataSourceTable(tableNum(PurchReqTable));//Another Way Query //query = new Query(); //custInvoiceJourQBDS = query.addDataSource(tableNum(custInvoiceJour)); if(fromDate || toDate) { utcdatetime _fromDate = DateTimeUtil::newDateTime(fromDate,0); utcdatetime _toDate = DateTimeUtil::newDateTime(toDate,86400); qbr = SysQuery::findOrCreateRange(qbds, fieldNum(PurchReqTable, CreatedDateTime)); range = SysQuery::range(_fromDate, _toDate); qbr.value(range); } purchaseReqLineQBDS = qbds.addDataSource(tableNum(PurchReqLine)); purchaseReqLineQBDS.addLink(fieldNum(PurchReqTable, RecId), fieldNum(PurchReqLine, PurchReqTable)); purchaseReqLineQBDS.joinMode(JoinMode::OuterJoin); purchaseOrderLineQBDS = purchaseReqLineQBDS.addDataSource(tableNum(PurchLine)); purchaseOrderLineQBDS.addLink(fieldNum(PurchReqLine, LineRefId), fieldNum(PurchLine, PurchReqLineRefId)); purchaseOrderLineQBDS.joinMode(JoinMode::OuterJoin); purchaseOrderQBDS = purchaseOrderLineQBDS.addDataSource(tableNum(PurchTable)); purchaseOrderQBDS.addLink(fieldNum(PurchLine, PurchId), fieldNum(PurchTable, PurchId)); purchaseOrderQBDS.joinMode(JoinMode::OuterJoin); vendPackingSlipJourQBDS = purchaseOrderQBDS.addDataSource(tableNum(VendPackingSlipJour)); vendPackingSlipJourQBDS.addLink(fieldNum(PurchTable, PurchId), fieldNum(VendPackingSlipJour, PurchId)); vendPackingSlipJourQBDS.joinMode(JoinMode::OuterJoin); vendInvoiceJourQBDS = vendPackingSlipJourQBDS.addDataSource(tableNum(VendInvoiceJour)); vendInvoiceJourQBDS.addLink(fieldNum(VendPackingSlipJour, PurchId), fieldNum(VendInvoiceJour, PurchId)); vendInvoiceJourQBDS.joinMode(JoinMode::OuterJoin); if(purchId) { query.addQueryFilter(purchaseOrderQBDS, (fieldStr(PurchTable, PurchId))).value(SysQuery::value(PurchId)); } if(vendor) { query.addQueryFilter(purchaseOrderQBDS, (fieldStr(PurchTable, OrderAccount))).value(SysQuery::value(vendor)); } if(packingSlipId) { query.addQueryFilter(purchaseOrderQBDS, (fieldStr(VendPackingSlipJour, PackingSlipId))).value(SysQuery::value(PackingSlipId)); } if(invoiceid) { query.addQueryFilter(purchaseOrderQBDS, (fieldStr(vendinvoicejour, invoiceid))).value(SysQuery::value(invoiceid)); } if(voucher) { query.addQueryFilter(purchaseOrderQBDS, (fieldStr(vendinvoicejour, LedgerVoucher))).value(SysQuery::value(voucher)); } queryRun = new QueryRun(query); while(queryRun.next()) { PurchReqTable purchReqTable; PurchReqLine purchReqLine; PurchTable PurchTable; PurchLine purchLine; VendTable vendTable; VendPackingSlipJour vendPackingSlipJour; vendinvoicejour vendinvoicejour; purchReqTable.clear(); PurchReqLine.clear(); PurchTable.clear(); PurchLine.clear(); vendPackingSlipJour.clear(); vendinvoicejour.clear(); vendTable.clear(); P2PtempTable.clear(); purchReqTable = queryRun.get(tableNum(PurchReqTable)); PurchReqLine = queryRun.get(tableNum(PurchReqLine)); PurchTable = queryRun.get(tableNum(PurchTable)); PurchLine = queryRun.get(tableNum(PurchLine)); vendPackingSlipJour = queryRun.get(tableNum(vendPackingSlipJour)); vendinvoicejour = queryRun.get(tableNum(vendinvoicejour)); vendTable = VendTable::find(PurchTable.OrderAccount); container Reqcon = this.getBulkApproverDate(purchReqTable.TableId, purchReqTable.RecId, 2); container Purchcon = this.getBulkApproverDate(PurchTable.TableId, PurchTable.RecId, 6); P2PtempTable.DSSL_VendorName = vendTable.name(); P2PtempTable.DSSL_BusinessSegmentFD = this.getDimensionDisplayValue(vendTable.DefaultDimension, "Segment"); P2PtempTable.DSSL_PurchReqId = purchReqTable.PurchReqId; P2PtempTable.DSSL_DateOfCreationByUserPR = purchReqTable.CreatedDateTime; P2PtempTable.DSSL_DateOfFirstApproverPR = conPeek(Reqcon, 1); P2PtempTable.DSSL_DateOfSecondApproverPR = conPeek(Reqcon, 2); P2PtempTable.DSSL_PurchId = PurchTable.PurchId; P2PtempTable.DSSL_DateOfCreationByUserPO = PurchTable.CreatedDateTime; P2PtempTable.DSSL_DateOfSecondApproverPO = conPeek(Purchcon, 2); P2PtempTable.DSSL_DateOfThirdApproverPO = conPeek(Purchcon, 3); P2PtempTable.DSSL_DateOfFourthApproverPO = conPeek(Purchcon, 4); P2PtempTable.DSSL_DateOfFifthApproverPO = conPeek(Purchcon, 5); P2PtempTable.DSSL_DateOfSixthApproverPO = conPeek(Purchcon, 6); P2PtempTable.DSSL_PackingSlipId = vendPackingSlipJour.PackingSlipId; P2PtempTable.DSSL_DateOfCreationByUserGRN = vendPackingSlipJour.DeliveryDate; P2PtempTable.DSSL_DateOfFinalApproverGRN = this.getFinalApproverDate(vendPackingSlipJour.TableId, vendPackingSlipJour.RecId); P2PtempTable.DSSL_InvoiceId = vendInvoiceJour.InvoiceId; P2PtempTable.DSSL_InvoiceDate = vendInvoiceJour.InvoiceDate; P2PtempTable.DSSL_PostingDate = vendInvoiceJour.DueDate; P2PtempTable.DSSL_TransDate = vendInvoiceJour.InvoiceDate; P2PtempTable.DSSL_SettlementVoucher = vendInvoiceJour.LedgerVoucher; P2PtempTable.insert(); } }
Comments
Post a Comment