Hello All,
I would like to create a project using x++ in 2012 R2.
First I've made a class that create a project contract using the following code,
str ContCr(str CustAcc)
{
ProjInvoiceTable projInvoiceTable;
CustTable custTable;
CustAccount custAccount;
ProjFundingSource projFundingSource;
NumberSeq numSeq;
info("Project contract is being created");
ttsbegin;
projInvoiceTable.clear();
projInvoiceTable.initValue();
custTable = CustTable::find(CustAcc);
numSeq = NumberSeq::newGetNum(ProjParameters::numRefProjInvoiceProjId(),true,true);
projInvoiceTable.ProjInvoiceProjId = numSeq.num();
projInvoiceTable.CurrencyId = "EGP";
projInvoiceTable.Description = custTable.name();
projInvoiceTable.insert();
info("projInvoiceTable.ProjInvoiceProjId: " + projInvoiceTable.ProjInvoiceProjId);
projFundingSource.ContractId = projInvoiceTable.ProjInvoiceProjId;
projFundingSource.CustAccount = CustAcc;
projFundingSource.FundingSourceId = custTable.name();
projFundingSource.FundingType = ProjFundingType::Customer;
projFundingSource.editProjFunder(true,projFundingSource.CustAccount);
projFundingSource.insert();
projFundingRule::createDefaultFundingRule(projInvoiceTable.ProjInvoiceProjId, projInvoiceTable.RecId);
ttscommit;
return projInvoiceTable.ProjInvoiceProjId;
}
It works successfully, But as a return of this contract I'm trying to create the project itself using the following code,
void clicked()
{
ProjInvoiceTable projInvoiceTable;
ProjTableType projTableType;
NumberSeq projNumberSeq;
ProjId projIdLastSon, projectId;
ProjTable projTable;
ProjId projMask;
ProjName _projName;
Integer sonNum;
ProjType _projType;
ProjGroupId _projGroupId;
ProjInvoiceProjId _projInvoiceProjId;
ProjLinePropertyId _projInvoiceStatusId;
str ContID;
super();
ContID = this.ContCr("0006-Custom");
_projType = ProjType::TimeMaterial;
//1#
_projGroupId = 'T&M';
_projName = "Proj-Test";
//2#
_projInvoiceProjId = ContID;
projTable.ProjId = '19992';
projectId = projTable.ProjId;
projTable.Type = _projType;
projTable.ProjGroupId = _projGroupId;
projTable.Name = _projName;
projTableType = projTable.type();
projTableType.initProjTable();
projTable.ProjInvoiceProjId = _projInvoiceProjId;
projInvoiceTable = ProjInvoiceTable::find(_projInvoiceProjId);
projTable.CustAccount = projInvoiceTable.Name;
projTable.initFromInvoice(projInvoiceTable);
//projTable.Format = _numberSequenceMask;
projTable.CheckBudget = ProjGroup::find(_projGroupId).CheckBudget;
if (_projInvoiceStatusId)
{
ProjLinePropertySetup::updateLinePropertyProj(projTable.ProjId, _projInvoiceStatusId, TableGroupAll::Table, true);
}
projTable.initFromCustTable(CustTable::find(projTable.CustAccount));
if (ProjTable::exist(projTable.ProjId))
{
// Project already exists.
throw error("@SYS56494");
}
if (!projTableType.validateWrite())
throw error ("Validations failed");
projTable.insert();
if (projNumberSeq)
{
projNumberSeq.used();
}
else
{
projTable.clear();
if (projNumberSeq)
{
projNumberSeq.abort();
}
}
info (strfmt('Project %1 successfully created ', projectId));
}
Project is successfully created but all customer information is not provided to the project.
any help?
*This post is locked for comments
I have the same question (0)