Good day, I hope someone can help me. I have a requirement to create a project invoice proposal for one sales order at a time.
I found the following code on a different thread but it is not working.
I expected the tmpProjProposalTrans(PSATmpProjProposalTrans) to contain some values after proposalCreateLines.getProposalTransDisplay();
Can someone help. Am I doing this wrong or have I missed something? There are just so many different classes that seem similar.
public void createProposal(PASProjectInvoiceContract _contract) { PSATmpProjProposalTrans tmpProjProposalTrans, tmpProjProposalTransPreBill; ProjInvoiceProposalCreateLinesParams proposalCreateLinesParams = ProjInvoiceProposalCreateLinesParams::construct(); ProjInvoiceProposalCreateLines proposalCreateLines; ProjInvoiceProposalInsertLines projInvoiceProposalInsertLines; List proposalIdList; ListEnumerator proposalIdEnumerator; ProjProposalId proposalId; SalesTable salesTable; Query query; QueryBuildRange qbr; QueryBuildDataSource qbds; QueryRun queryRun; contract = _contract; TransDate fromDate = this.contract.parmFromDate(); TransDate toDate = this.contract.parmToDate(); InvoiceDate invoiceDate = this.contract.parmInvoiceDate(); query = new Query(SysOperationHelper::base64Decode(contract.parmQuery())); qbds = query.dataSourceTable(tableNum(SalesTable)); qbr = qbds.addRange(fieldnum(SalesTable, ShippingDateConfirmed)); qbr.value(strFmt('%1..%2', fromDate, toDate)); queryRun = new QueryRun(query); ttsbegin; while (queryRun.next()) { salesTable = queryRun.get(tableNum(SalesTable)) as SalesTable; proposalCreateLinesParams.parmInvoiceTypeSelection(ProjInvoiceTypeSelection::Both); proposalCreateLinesParams.parmInvoiceDate(invoiceDate); proposalCreateLinesParams.parmProjInvoiceProjId(salesTable.InvoiceAccount); proposalCreateLinesParams.parmProjId(salesTable.ProjId); proposalCreateLinesParams.parmIsQueryCostTrans(false); proposalCreateLinesParams.parmIsQueryEmplTrans(false); proposalCreateLinesParams.parmIsQueryItemTrans(false); proposalCreateLinesParams.parmIsQueryOnAccTrans(false); proposalCreateLinesParams.parmIsQueryRevenueTrans(false); proposalCreateLinesParams.parmIsQuerySalesLine(true); proposalCreateLinesParams.parmSalesUpdate(SalesUpdate::PickingListAndNonInventoried); proposalCreateLinesParams.parmStartDate(fromDate); proposalCreateLinesParams.parmEndDate(toDate); proposalCreateLines = ProjInvoiceProposalCreateLines::newStandard(proposalCreateLinesParams.pack()); proposalCreateLines.parmProposalCreateLinesParams().parmInvoiceDate(invoiceDate); proposalCreateLines.run(); tmpProjProposalTrans = proposalCreateLines.getProposalTransDisplay(); delete_from tmpProjProposalTrans where tmpProjProposalTrans.RefTableId == tableNum(SalesTable) && tmpProjProposalTrans.RefRecId != salesTable.RecId; tmpProjProposalTrans = proposalCreateLines.parmProposalTransCreate(); delete_from tmpProjProposalTrans where tmpProjProposalTrans.RefTableId == tableNum(SalesTable) && tmpProjProposalTrans.RefRecId != salesTable.RecId; tmpProjProposalTransPreBill = proposalCreateLines.getProposalTransDisplayDeduction(); delete_from tmpProjProposalTransPreBill where tmpProjProposalTrans.RefTableId == tableNum(SalesTable) && tmpProjProposalTrans.RefRecId != salesTable.RecId; if (proposalCreateLines) { projInvoiceProposalInsertLines = new ProjInvoiceProposalInsertLines(proposalCreateLines, false); projInvoiceProposalInsertLines.parmShowMessages(false); projInvoiceProposalInsertLines.parmInvoiceType(ProjInvoiceType::Invoice); projInvoiceProposalInsertLines.runOperation(); } } ttscommit; }
André Arnaud de Cal...
291,979
Super User 2025 Season 1
Martin Dráb
230,848
Most Valuable Professional
nmaenpaa
101,156