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;
}

Report
All responses (
Answers (