//Sales Project Quotation Sent/Confirm & transfer in X++
static void SalesProjQuotation(Args _args)
{
SalesQuotationLine salesQuotationLine;
CustQuotationJour custQuotationJour;
CustQuotationTrans locCustQuotationTrans;
SalesQuotationTable salesQuotationTable;
SalesQuotationProjLinkWizard salesQuotationProjLinkWizard;
ProjTable projTable;
CustQuotationConfirmJour custQuotationConfirmJour;
SalesQuotationTransferToProject salesQuotationTransferToProject;
#AviFiles
SysOperationProgress progress = new SysOperationProgress();
int i;
//Function to send Project Quotation
void salesProjectQuotationSent(Common _record, DocumentStatus _documentStatus, QuotationDocNum _quotationDocNum = '')
{
#define.project('Project')
SalesQuotationTable salesQuotationTable;
SalesQuotationParmTable salesQuotationParmTable;
SalesQuotationEditLinesForm salesQuotationEditLinesForm = SalesQuotationEditLinesForm::construct(_documentStatus, #project, true);
ParmId parmId = salesQuotationEditLinesForm.parmId();
if (_record)
{
if (_record.TableId == tableNum(SalesQuotationTable))
{
salesQuotationTable = _record;
salesQuotationEditLinesForm.initParmSalesQuotationTable(salesQuotationTable);
}
salesQuotationEditLinesForm.createParmUpdate();
salesQuotationEditLinesForm.createParmTable(salesQuotationParmTable, salesQuotationTable);
salesQuotationParmTable.insert();
salesQuotationEditLinesForm.callerModuleAxapta(SalesQuotationEditLinesForm::getCallerModuleFromParm(#project));
salesQuotationEditLinesForm.parmId(parmId);
salesQuotationEditLinesForm.parmTransDate(systemDateGet());
salesQuotationEditLinesForm.prePromptInit();
salesQuotationEditLinesForm.run();
}
}
;
// Approve Sales Quotations
ttsBegin;
update_recordSet salesQuotationTable
setting QuotationStatus = SalesQuotationStatus::Approved
where salesQuotationTable.QuotationStatus == SalesQuotationStatus::Created;
ttsCommit;
info("Updated to Approved successfully.");
// Send the Quotation
ttsBegin;
while select forUpdate salesQuotationTable
where salesQuotationTable.QuotationStatus == SalesQuotationStatus::Approved
{
salesProjectQuotationSent(salesQuotationTable, DocumentStatus::Quotation);
}
ttsCommit;
info("Updated to Sent successfully.");
// Confirm and Transfering to Project
salesQuotationTransferToProject = new SalesQuotationTransferToProject();
salesQuotationProjLinkWizard = new SalesQuotationProjLinkWizard ();
progress = SysOperationProgress::newGeneral(#aviUpdate, 'Confirming Sales Project Quotation.', 1000);
while select salesQuotationTable
where salesQuotationTable.QuotationStatus == SalesQuotationStatus::Sent
{
infolog.clear();
projTable.clear();
salesQuotationLine.clear();
custQuotationJour.clear();
custQuotationConfirmJour.clear();
projTable = ProjTable::find(salesQuotationTable.ProjIdRef, true);
select firstOnly forUpdate custQuotationJour
where custQuotationJour.ProjIdRef == salesQuotationTable.ProjIdRef;
if(projTable.status().validateConfirmAndTransfer())
{
salesQuotationProjLinkWizard.parmProjTable(projTable);
salesQuotationProjLinkWizard.parmSalesQuotationTable(salesQuotationTable);
salesQuotationProjLinkWizard.linkQuotationToProject(projTable.ProjId, projTable.ProjInvoiceProjId);
salesQuotationProjLinkWizard.linkConfirmationToProject(projTable.ProjId, projTable.ProjInvoiceProjId);
ttsBegin;
// update the Sales project Quotation
salesQuotationProjLinkWizard.parmModelId(ProjParameters::find().ModelId);
salesQuotationProjLinkWizard.transferForecastToProject();
salesQuotationProjLinkWizard.transferItemReq();
salesQuotationProjLinkWizard.updateTransferredToProject(true, true);
ttsCommit;
}
i++;
progress.incCount();
progress.setText(strfmt("Sales Project Quotation confirmed: %1", i));
sleep(100);
}
}
static void SalesProjQuotation(Args _args)
{
SalesQuotationLine salesQuotationLine;
CustQuotationJour custQuotationJour;
CustQuotationTrans locCustQuotationTrans;
SalesQuotationTable salesQuotationTable;
SalesQuotationProjLinkWizard salesQuotationProjLinkWizard;
ProjTable projTable;
CustQuotationConfirmJour custQuotationConfirmJour;
SalesQuotationTransferToProject salesQuotationTransferToProject;
#AviFiles
SysOperationProgress progress = new SysOperationProgress();
int i;
//Function to send Project Quotation
void salesProjectQuotationSent(Common _record, DocumentStatus _documentStatus, QuotationDocNum _quotationDocNum = '')
{
#define.project('Project')
SalesQuotationTable salesQuotationTable;
SalesQuotationParmTable salesQuotationParmTable;
SalesQuotationEditLinesForm salesQuotationEditLinesForm = SalesQuotationEditLinesForm::construct(_documentStatus, #project, true);
ParmId parmId = salesQuotationEditLinesForm.parmId();
if (_record)
{
if (_record.TableId == tableNum(SalesQuotationTable))
{
salesQuotationTable = _record;
salesQuotationEditLinesForm.initParmSalesQuotationTable(salesQuotationTable);
}
salesQuotationEditLinesForm.createParmUpdate();
salesQuotationEditLinesForm.createParmTable(salesQuotationParmTable, salesQuotationTable);
salesQuotationParmTable.insert();
salesQuotationEditLinesForm.callerModuleAxapta(SalesQuotationEditLinesForm::getCallerModuleFromParm(#project));
salesQuotationEditLinesForm.parmId(parmId);
salesQuotationEditLinesForm.parmTransDate(systemDateGet());
salesQuotationEditLinesForm.prePromptInit();
salesQuotationEditLinesForm.run();
}
}
;
// Approve Sales Quotations
ttsBegin;
update_recordSet salesQuotationTable
setting QuotationStatus = SalesQuotationStatus::Approved
where salesQuotationTable.QuotationStatus == SalesQuotationStatus::Created;
ttsCommit;
info("Updated to Approved successfully.");
// Send the Quotation
ttsBegin;
while select forUpdate salesQuotationTable
where salesQuotationTable.QuotationStatus == SalesQuotationStatus::Approved
{
salesProjectQuotationSent(salesQuotationTable, DocumentStatus::Quotation);
}
ttsCommit;
info("Updated to Sent successfully.");
// Confirm and Transfering to Project
salesQuotationTransferToProject = new SalesQuotationTransferToProject();
salesQuotationProjLinkWizard = new SalesQuotationProjLinkWizard ();
progress = SysOperationProgress::newGeneral(#aviUpdate, 'Confirming Sales Project Quotation.', 1000);
while select salesQuotationTable
where salesQuotationTable.QuotationStatus == SalesQuotationStatus::Sent
{
infolog.clear();
projTable.clear();
salesQuotationLine.clear();
custQuotationJour.clear();
custQuotationConfirmJour.clear();
projTable = ProjTable::find(salesQuotationTable.ProjIdRef, true);
select firstOnly forUpdate custQuotationJour
where custQuotationJour.ProjIdRef == salesQuotationTable.ProjIdRef;
if(projTable.status().validateConfirmAndTransfer())
{
salesQuotationProjLinkWizard.parmProjTable(projTable);
salesQuotationProjLinkWizard.parmSalesQuotationTable(salesQuotationTable);
salesQuotationProjLinkWizard.linkQuotationToProject(projTable.ProjId, projTable.ProjInvoiceProjId);
salesQuotationProjLinkWizard.linkConfirmationToProject(projTable.ProjId, projTable.ProjInvoiceProjId);
ttsBegin;
// update the Sales project Quotation
salesQuotationProjLinkWizard.parmModelId(ProjParameters::find().ModelId);
salesQuotationProjLinkWizard.transferForecastToProject();
salesQuotationProjLinkWizard.transferItemReq();
salesQuotationProjLinkWizard.updateTransferredToProject(true, true);
ttsCommit;
}
i++;
progress.incCount();
progress.setText(strfmt("Sales Project Quotation confirmed: %1", i));
sleep(100);
}
}
No comments:
Post a Comment