0% found this document useful (0 votes)
5 views

code

The document outlines the implementation of a class for generating a Request for Quotation (RFQ) report in a reporting system. It includes methods for adding custom labels, data fields, and handling different line types such as amendments and questionnaires. The class also defines metadata for the RFQ data source and manages the generation of XML data for the report structure.

Uploaded by

Nikhil Panda
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

code

The document outlines the implementation of a class for generating a Request for Quotation (RFQ) report in a reporting system. It includes methods for adding custom labels, data fields, and handling different line types such as amendments and questionnaires. The class also defines metadata for the RFQ data source and manages the generation of XML data for the report structure.

Uploaded by

Nikhil Panda
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 11

class DocRFQSendReportDSP extends DocDataSourceProviderSrsReporting

{
PurchRFQSendTmp headerTableBuffer;
PurchRFQSendContract reportContract;
boolean amendmentLineAdded, questionnaireLineAdded;
VendRFQJour journal;
RecId journalRecId;
DocTableFieldsMetadata extensionFieldsMetadata_PurchRFQSendTmp =
DocTableFieldsMetadata::construct(tableStr(PurchRFQSendTmp));

/* Variables for custom placeholders */


str placeholder_rfqId;
date placeholder_rfqDate;
utcdatetime placeholder_rfqExpiryDate;
str placeholder_vendAccount;
str placeholder_vendName;
date placeholder_rfqStartDate;
date placeholder_rfqEndDate;

#define.RFQSendHeader('RFQSendHeader')
#define.RFQSendLines_Questionnaire('RFQSendLines_Questionnaire')
#define.RFQSendLines_Amendment('RFQSendLines_Amendment')
#define.RFQSendLines('RFQSendLines')

// This overridden method adds additional custom labels to the DDSP to use them
in template designer.
// Learn more: https://ax.docentric.com/d365-how-to-manuals/d365-
miscellaneous/d365-how-to-add-missing-labels-to-multilingual-reports/
protected void addCustomLabels(Map _labelMap)
{
super(_labelMap);

// Labels in order of appearance on document from top to bottom, left to


right.

// Pagination
_labelMap.insert(literalStr("@SYS5250"), 'Page');
_labelMap.insert(literalStr("@SYS26401"), 'of');

// Document header.
_labelMap.insert(literalStr("@SYS13864"), 'Number');
_labelMap.insert(literalStr("@SYS54367"), 'Expiration date'); // Used in
lines as well.
_labelMap.insert(literalStr("@SYS106366"), 'Your reference');
_labelMap.insert(literalStr("@SYS130195"), 'Purchase agreement order');
_labelMap.insert(literalStr("@SYS2168"), 'Start date');
_labelMap.insert(literalStr("@SYS22882"), 'End date');
_labelMap.insert(literalStr("@SYS2499"), 'Registration');

// Address information.
_labelMap.insert(literalStr("@SYS80377"), 'Delivery address');

// Reply sheet information.


_labelMap.insert(literalStr("@SYS106822"), 'Please fill in the following
general reply data:');
_labelMap.insert(literalStr("@SYS102718"), 'Reply valid from'); // Used in
reply lines as well.
_labelMap.insert(literalStr("@SYS102720"), 'Reply valid to'); // Used in
reply lines as well.
_labelMap.insert(literalStr("@SYS73476"), 'Vendor reference');
_labelMap.insert(literalStr("@SYS7572"), 'Currency');
_labelMap.insert(literalStr("@SYS16056"), 'Delivery date'); // Used in
lines and reply lines as well.
_labelMap.insert(literalStr("@SYS27703"), 'Delivery terms');
_labelMap.insert(literalStr("@SYS828"), 'Payment');
_labelMap.insert(literalStr("@SYS2654"), 'Purchase charges'); // Used in
reply lines as well.
_labelMap.insert(literalStr("@SYS22434"), 'Total discount %');
_labelMap.insert(literalStr("@SYS83850"), 'Documentation'); // Used in
reply lines as well.
_labelMap.insert(literalStr("@SYS106823"), 'Please fill in the following
reply data for each item line');

// Document lines.
_labelMap.insert(literalStr("@SYS139028"), 'Category');
_labelMap.insert(literalStr("@SYS7576"), 'Description');
_labelMap.insert(literalStr("@SYS59970"), 'Quantity'); // Used in reply
lines as well.
_labelMap.insert(literalStr("@SYS11959"), 'Unit');
_labelMap.insert(literalStr("@SYS98362"), 'Amount');

// Reply lines information.


_labelMap.insert(literalStr("@SYS14552"), 'External item number');
_labelMap.insert(literalStr("@SYS54845"), 'External item description');
_labelMap.insert(literalStr("@SYS40864"), 'Unit');
_labelMap.insert(literalStr("@SYS23884"), 'Unit price');
_labelMap.insert(literalStr("@SYS94122"), 'Discount percentage');
_labelMap.insert(literalStr("@SYS11440"), 'Multiline discount');
_labelMap.insert(literalStr("@SYS22555"), 'Multiline discount percentage');
_labelMap.insert(literalStr("@SYS14679"), 'Lead time');
_labelMap.insert(literalStr("@SYS70652"), 'Working days');

// Final cost calculation.


_labelMap.insert(literalStr("@SYS464"), 'Sales subtotal amount');
_labelMap.insert(literalStr("@SYS8371"), 'Charges');
_labelMap.insert(literalStr("@SYS22916"), 'Sales tax');
_labelMap.insert(literalStr("@SYS809"), 'Total');

// Amendment information.
_labelMap.insert(literalStr("@SYP4950122"), 'Amendment');
_labelMap.insert(literalStr("@SYS40182"), 'Notes');
_labelMap.insert(literalStr("@SYS181568"), 'Yes');
_labelMap.insert(literalStr("@SYS2048"), 'No');

// Questionnaire
_labelMap.insert(literalStr("@SYS300846"), 'Questionnaire');
_labelMap.insert(literalStr("@EPR4460063"), 'Description');
}

protected void addDataFieldsForLine(DocXmlRecord _addingRecord, PurchRFQSendTmp


_currentLine)
{
if (_currentLine.AmendmentRecId != 0)
{
this.addDataFieldsForLine_Amendment(_addingRecord, _currentLine);
amendmentLineAdded = true;
}
else if (_currentLine.QuestionnaireId != '')
{
this.addDataFieldsForLine_Questionnaire(_addingRecord, _currentLine);
questionnaireLineAdded = true;
}
else
{
this.addDataFieldsForLine_Trans(_addingRecord, _currentLine);
}
}

protected void addDataFieldsForLine_Amendment(DocXmlRecord _addingRecord,


PurchRFQSendTmp _currentLine)
{
// Rename the record from 'PurchRFQSendTmp' to 'RFQSendLines_Amendment'.
_addingRecord.setRecordName(#RFQSendLines_Amendment);
// Change the label of the record.
_addingRecord.setRecordLabel('RFQ amendments'); // NOTE: use
literalStr("@LabelID") instead.

_addingRecord.addField(fieldStr(PurchRFQSendTmp, RFQId));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, AmendmentDescription));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, AmendmentDocument));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, AmendmentName));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, AmendmentRecId));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, AmendmentNotes));
}

protected void addDataFieldsForLine_Questionnaire(DocXmlRecord _addingRecord,


PurchRFQSendTmp _currentLine)
{
// Rename the record from 'PurchRFQSendTmp' to
'RFQSendLines_Questionnaire'.
_addingRecord.setRecordName(#RFQSendLines_Questionnaire);
// Change the label of the record.
_addingRecord.setRecordLabel('RFQ questionnaire lines'); // NOTE: use
literalStr("@LabelID") instead.

_addingRecord.addField(fieldStr(PurchRFQSendTmp, RFQId));
_addingRecord.addField(fieldStr(PurchRFQSendTmp,
QuestionnaireDescription));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, QuestionnaireId));
}

protected void addDataFieldsForLine_Trans(DocXmlRecord _addingRecord,


PurchRFQSendTmp _currentLine)
{
// Rename the record from 'PurchRFQSendTmp' to 'RFQSendLines'.
_addingRecord.setRecordName(#RFQSendLines);
// Change the label of the record.
_addingRecord.setRecordLabel('RFQ lines'); // NOTE: use
literalStr("@LabelID") instead.

// Add all 'line' fields from the PurchRFQSendTmp table related to the
transaction data.
_addingRecord.addField(fieldStr(PurchRFQSendTmp, ItemId));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, ItemName));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, LineAmount));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, PurchUnit));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, PurchPrice));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, PurchQty));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, DiscPercent));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, DiscAmount));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, CategoryName));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, DeliveryDate));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, ExpiryDateTime));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, InventDimPrint));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, Notes));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, pdsCWQty));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, pdsCWUnitId));
_addingRecord.addField(fieldStr(PurchRFQSendTmp, RFQCaseLineLineNumber));

// Add Extension fields defined on PurchRFQSendTmp, if any.


// NOTE: Fields will be added to the child record named ExtensionFields.
Change the last parameter to false to add
// Extension fields on flat. If the result doesn't suit you, add your
Extension fields directly using the addField() method.

DocExtensionFieldsHelper::tryAddAllExtensionFieldsToDataRecord(_currentLine,
_addingRecord, true, extensionFieldsMetadata_PurchRFQSendTmp);

// TODO: Add here additional fields from the related VendRFQTrans table (or
some other tables).
//VendRFQTrans vendRFQTrans =
this.vendRFQTrans(_currentLine.RFQCaseLineLineNumber);
//_addingRecord.addCalculatedField('ExternalItemId',
vendRFQTrans.ExternalItemId);
}

protected void addDataFieldsForRdpTableRecord(DocXmlRecord _addingRecord,


Common _rdpTableRecord, TableName _rdpTableName)
{
if (_rdpTableName == tableStr(PurchRFQSendTmp))
{
this.addDataFieldsForLine(_addingRecord, _rdpTableRecord);
}
else
{
super(_addingRecord, _rdpTableRecord, _rdpTableName);
}
}

public ClassDescription description()


{
return 'Request for quotation DSP';
}

protected void generateXmlDataSource(DocXmlRecordBuilder _recordBuilder)


{
DocXmlRecord headerDataRecord, emptyLineDataRecord;
PurchRFQSendTmp emptyLine;

void addHeaderFields()
{
// We will skip adding the company related fields since we already have
them
// in the GeneralData data section at our disposal.
//headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
CompanyAddressLogo));
//headerDataRecord.addField(fieldStr(PurchRFQSendTmp, CompanyLogo));
//headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
CompanyNameLogo));

headerDataRecord.addField(fieldStr(PurchRFQSendTmp, RFQId));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, DeliveryName));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, RFQDate));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, RFQBalance));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, SumMarkup));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, RoundOff));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, SumTax));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, EndDisc));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, CurrencyCode));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, Amount));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, PurchId));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, PrintPriceAmount));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, VendRef));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, VendAccount));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, RFQTxt));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, RFQComment));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, DlvTerm));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, RFQUpdateType));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, PrintReplySheet));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, ValidityDateEnd));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
ValidityDateStart));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, RFQType));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, CompanyAddress));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, CompanyVATNum));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, Phone));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, EnterpriseNumber));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, Giro));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, CoRegNum));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, CompanyName));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, Address));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, DeliveryAddress));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, TeleFax));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, HeaderNotes));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, PdsEnabled));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyHeaderCurrencyCode));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyHeaderDeliveryDate));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyHeaderDlvTerm));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyHeaderDocumentation));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyHeaderEndDiscPct));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyHeaderMarkup));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyHeaderPayment));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyHeaderValidFromDate));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyHeaderValidToDate));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyHeaderVendRef));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyLineDeliveryDate));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyLineDocumentation));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyLineExternalItemFreeTxt));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyLineExternalItemId));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyLineLeadTime));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyLineLineDisc));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyLineMarkup));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyLineMultiLnDisc));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyLineMultiLnPercent));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyLinePercent));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyLinePriceUnit));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyLineQuantity));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, RFQReplyLineUnit));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyLineValidFromDate));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyLineValidToDate));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
RFQReplyLineWorkingdays));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp,
ShowCompanyVATNum));
headerDataRecord.addField(fieldStr(PurchRFQSendTmp, FormLetterTxt));
}

// (1) Add data records with fields representing the lines.


super(_recordBuilder);

// (2) Add all fields that belong to the header only once.
headerDataRecord =
_recordBuilder.addRecord(headerTableBuffer).setSingleRecord(true);
// Rename the record from 'PurchRFQSendTmp' to 'RFQSendHeader'.
headerDataRecord.setRecordName(#RFQSendHeader);
// Change the label of the record.
headerDataRecord.setRecordLabel('RFQ header'); // NOTE: use
literalStr("@LabelID") instead.
// Add all 'header' fields.
addHeaderFields();

// (3) Add Vendor primary email.


VendTable vendTable = VendTable::find(headerTableBuffer.VendAccount);
headerDataRecord.addCalculatedField('VendorEmail', vendTable.email());

// (4) Add Custom Fields defined on VendTable, if any.


// Custom Fields: https://docs.microsoft.com/en-us/dynamics365/unified-
operations/fin-and-ops/get-started/user-defined-fields
DocCustomFieldsHelper::tryAddAllCustomFieldsToDataRecord(vendTable,
headerDataRecord);

// (5) Add Extension fields defined on PurchRFQSendTmp, if any.


// NOTE: Fields will be added to the child record named ExtensionFields.
Change the last parameter to false to add
// Extension fields on flat. If the result doesn't suit you, add your
Extension fields directly using the addField() method.

DocExtensionFieldsHelper::tryAddAllExtensionFieldsToDataRecord(headerTableBuffer,
headerDataRecord, true, extensionFieldsMetadata_PurchRFQSendTmp);

// TODO: Add here additional fields (or records) to the single header
record (headerDataRecord)
// by using the related data to headerTableBuffer (PurchRFQSendTmp) or
reportContract.
// For example, get the related VendRFQJour record and add additional data
you need:
//VendRFQJour vendRFQJour = this.vendRFQJour();
//DocXmlRecord jourDataRecord =
headerDataRecord.addChildRecord(vendRFQJour);
//jourDataRecord.addField(fieldStr(VendRFQJour, VATNum)); // Vendor VAT
Number.
//jourDataRecord.addField(fieldStr(VendRFQJour, DefaultDimension));
// Or, add the vendor enterprise number:
//headerDataRecord.addCalculatedField('VendEnterpriseNumber',
//
VendTable::find(headerTableBuffer.VendAccount).getPrimaryRegistrationNumber(TaxRegi
strationTypesList::UID, vendRFQJour.DeliveryDate));

// If this is design time, add main or tax lines if they haven't been
already added.
_recordBuilder.goToTopRecord();
if (!this.isRuntime())
{
emptyLine.clear();

// Amendment lines.
if (!amendmentLineAdded)
{
emptyLineDataRecord = _recordBuilder.addRecord(emptyLine);
this.addDataFieldsForLine_Amendment(emptyLineDataRecord,
emptyLine);
_recordBuilder.goToTopRecord();
}

// Questionnaire lines.
if (!questionnaireLineAdded)
{
emptyLineDataRecord = _recordBuilder.addRecord(emptyLine);
this.addDataFieldsForLine_Questionnaire(emptyLineDataRecord,
emptyLine);
_recordBuilder.goToTopRecord();
}
}

// Check the resulting XML.


//info(_recordBuilder.exportToXmlStr());
//_recordBuilder.exportToXmlFile("ReportMainData.xml");
}

protected void onSelectedRdpTableRecord(Common _rdpTableRecord, TableName


_rdpTableName)
{
PurchRFQSendTmp currentRecord;

super(_rdpTableRecord, _rdpTableName);

if (_rdpTableName != tableStr(PurchRFQSendTmp))
{
return;
}

currentRecord = _rdpTableRecord;

if (headerTableBuffer.RecId == 0)
{
// Copy all fields from the first selected record since the majority of
them
// belong to the report header. We will add them as a separate node in
the
// generateXmlDataSource method.
buf2Buf(currentRecord, headerTableBuffer);
headerTableBuffer.RecId = currentRecord.RecId;

// Store custom placeholders' values.


placeholder_rfqId = currentRecord.RFQId;
placeholder_rfqDate = currentRecord.RFQDate;
placeholder_rfqExpiryDate = currentRecord.ExpiryDateTime;
placeholder_vendAccount = currentRecord.VendAccount;
placeholder_vendName = currentRecord.CompanyName;
placeholder_rfqStartDate = currentRecord.ValidityDateStart;
placeholder_rfqEndDate = currentRecord.ValidityDateEnd;
}
}

protected void preRunGenerateDS()


{
super();

// Initialize here the class global variables.


reportContract = this.getSrsRdpContract();
journalRecId = reportContract.parmRecordId();

amendmentLineAdded = false;
questionnaireLineAdded = false;
}

protected VendRFQJour vendRFQJour()


{
if (!journal)
{
select firstonly journal where journal.RecId == journalRecId;
}

return journal;
}

protected VendRFQTrans vendRFQTrans(int64 _rfqCaseLineLineNumber)


{
VendRFQTrans vendRFQTrans;

// Initialize the journal record.


this.vendRFQJour();

// NOTE: RFQCaseLineLineNumber is unique for a PurchRFQCaseLine.


select vendRFQTrans
where vendRFQTrans.RFQId == journal.RFQId &&
vendRFQTrans.InternalRFQId == journal.InternalRFQId &&
vendRFQTrans.RFQCaseLineLineNumber == _rfqCaseLineLineNumber;

return vendRFQTrans;
}

// List of defined custom placeholders for the report:


#define.RfqId('RfqId')
#define.RfqDate('RfqDate')
#define.RfqExpiryDate('RfqExpiryDate')
#define.RfqStartDate('RfqStartDate')
#define.RfqEndDate('RfqEndDate')
#define.RfqCaseId('RfqCaseId')
#define.RfqCaseName('RfqCaseName')
#define.VendAccount('VendAccount')
#define.VendName('VendName')
#define.VendContactName('VendContactName')

[DocPlaceholderAttribute(#RfqId, 'RFQ - Rfq ID'),


DocPlaceholderAttribute(#RfqDate, 'RFQ - Date'),
DocPlaceholderAttribute(#RfqExpiryDate, 'RFQ - Expiry Date'),
DocPlaceholderAttribute(#RfqStartDate, 'RFQ - Start Date'),
DocPlaceholderAttribute(#RfqEndDate, 'RFQ - End Date'),
DocPlaceholderAttribute(#RfqCaseId, 'RFQ - Rfq Case ID'),
DocPlaceholderAttribute(#RfqCaseName, 'RFQ - Rfq Case Name'),
DocPlaceholderAttribute(#VendAccount, 'RFQ - Vendor Account ID'),
DocPlaceholderAttribute(#VendName, 'RFQ - Vendor Name'),
DocPlaceholderAttribute(#VendContactName, 'RFQ - Vendor Contact Name')]
public DocPlaceholderManager overrideReportRunSettings(DocReportRunContext
_reportRunContext, boolean _replaceStandardPlaceholders = true)
{
// Set the report execution context record to the corresponding request for
quoutation journal. This will affect:
// (1) Standard placeholders
// (2) Saving to Attachments -> Record type: Context record
// (3) Additional Attachments -> Load from: Context record
_reportRunContext.setReportExecutionContextRecord(this.vendRFQJour());

// Replace standard placeholders.


DocPlaceholderManager placeholderMng = super(_reportRunContext,
_replaceStandardPlaceholders);

// Replace custom placeholders:


// -- Placeholder @RfqId@
placeholderMng.replacePlaceholderInCurrentPrintDest(#RfqId,
placeholder_rfqId);

// -- Placeholder @RfqDate@
placeholderMng.replacePlaceholderInCurrentPrintDest(#RfqDate,
placeholder_rfqDate);

// -- Placeholder @RfqExpiryDate@
placeholderMng.replacePlaceholderInCurrentPrintDest(#RfqExpiryDate,
placeholder_rfqExpiryDate);

// -- Placeholder @RfqStartDate@
placeholderMng.replacePlaceholderInCurrentPrintDest(#RfqStartDate,
placeholder_rfqStartDate);

// -- Placeholder @RfqEndDate@
placeholderMng.replacePlaceholderInCurrentPrintDest(#RfqEndDate,
placeholder_rfqEndDate);

// -- Placeholder @VendAccount@
placeholderMng.replacePlaceholderInCurrentPrintDest(#VendAccount,
placeholder_vendAccount);

// -- Placeholder @VendName@
placeholderMng.replacePlaceholderInCurrentPrintDest(#VendName,
placeholder_vendName);

// -- Placeholder @RfqCaseId@
PurchRFQCaseTable rfqCaseTable =
PurchRFQTable::findByRFQId(placeholder_rfqId);
placeholderMng.replacePlaceholderInCurrentPrintDest(#RfqCaseId,
rfqCaseTable.RFQCaseId);

// -- Placeholder @RfqCaseName@
placeholderMng.replacePlaceholderInCurrentPrintDest(#RfqCaseName,
rfqCaseTable.Name);

// -- Placeholder @VendContactName@
PurchRFQTable rfqTable = PurchRFQTable::find(placeholder_rfqId);
placeholderMng.replacePlaceholderInCurrentPrintDest(#VendContactName,
DocDspHelper::contactPersonName(rfqTable.ContactPerson));

// Fill the Print archive contract.

_reportRunContext.archiveContract().setVendAccount(placeholder_vendAccount);
_reportRunContext.archiveContract().setRFQCaseId(rfqCaseTable.RFQCaseId);
_reportRunContext.archiveContract().setDocument(placeholder_rfqId,
placeholder_rfqDate);
_reportRunContext.archiveContract().setJournal(this.vendRFQJour().RecId,
DocJournalType::VendRFQJour);

return placeholderMng;
}
}

You might also like