Hey Max! It’s been a while.
Here’s something I’ve done to create quote lines from a configurator using a BO method.
There’s a UD method named “CreateLines” that calls “CreateQuoteLine” to create a new line.
In CreateQuoteLine I added the reference for Erp.Contracts.BO.Quote.dll:
Here’s the text of UD method CreateQuoteLine:
returnVal = "Start create";
DateTime shipDate = new DateTime();
if (quoteNum > 0 && partNum.Length > 0)
{
Erp.Contracts.QuoteSvcContract quote;
quote = Ice.Assemblies.ServiceRenderer.GetService<Erp.Contracts.QuoteSvcContract>(Db);
Erp.Tablesets.QuoteTableset quoteTableset;
quoteTableset = quote.GetByID(quoteNum);
quote.GetNewQuoteDtl(ref quoteTableset, quoteNum);
var quoteDtl_xRow = (from quoteDtl_Row in quoteTableset.QuoteDtl
select quoteDtl_Row).LastOrDefault();
bool lSubstitutePartsExist = false;
string uomCode = "";
int year = 0;
if(quoteDtl_xRow != null)
{
quoteDtl_xRow.PartNum = partNum;
if(reqQty > 0)
quoteDtl_xRow.SellingExpectedQty = reqQty;
quoteDtl_xRow.OrderQty = reqQty;
if(shipDate != null && shipDate >= DateTime.Today)
quoteDtl_xRow.ReqShipDate = shipDate;
returnVal = "Quote Num: " + Convert.ToString(quoteDtl_xRow.QuoteNum);
returnVal += " - part Num: " + quoteDtl_xRow.PartNum;
}
quote.ChangePartNum(ref quoteTableset, lSubstitutePartsExist, uomCode);
returnVal += " - uomCode " + uomCode;
returnVal += " - Part Desc: " + quoteDtl_xRow.LineDesc;
quote.Update(ref quoteTableset);
returnVal += " - Quote Line: " + Convert.ToString(quoteDtl_xRow.QuoteLine);
quote = null;
quoteTableset = null;
}
And the UD method CreateLines that calls it:
string returnVal = "";
string partNum = SummaryPartNum;
decimal reqQty = SummaryQty;
if (Context.Entity == "OrderDtl")
{
int orderNum = Context.OrderNumber;
CreateSOLine(ref returnVal, ref orderNum, ref partNum, ref reqQty);
}
else if (Context.Entity == "QuoteDtl")
{
int quoteNum = 0;
quoteNum = Context.QuoteNumber;
**CreateQuoteLine(ref returnVal, ref quoteNum, ref partNum, ref reqQty);**
}
Note that there is a similar UD method CreateSOLine for operating within an order.
Caveat: This was running in 10.1.500 Test environment, I think. In order to use the import feature to load this into another environment I had to go into the XML and delete the assembly reference. It likely had to do with where the assemblies were stored on the new environment.
Something like this:
Delete this from the exported XML
<PcAssembly>
<Company>GL</Company>
<ConfigID>CFG-TEST</ConfigID>
<AssemblyName>Erp.Contracts.BO.Quote.dll</AssemblyName>
<Alias />
**<Path>D:\Epicor\WebSites\Epicor102Test\Server\Assemblies</Path>**
<IncludeIn>1</IncludeIn>
<ExternalAssembly>false</ExternalAssembly>
<SysRevID>78692614</SysRevID>
<SysRowID>6419fec0-8b06-4fa3-aebb-d1a0c8b6f730</SysRowID>
</PcAssembly>
<PcAssembly>
<Company>GL</Company>
<ConfigID>CFG-TEST</ConfigID>
<AssemblyName>Erp.Contracts.BO.SalesOrder.dll</AssemblyName>
<Alias />
**<Path>D:\Epicor\WebSites\Epicor102Test\Server\Assemblies</Path>**
<IncludeIn>1</IncludeIn>
<ExternalAssembly>false</ExternalAssembly>
<SysRevID>78692615</SysRevID>
<SysRowID>937f4b60-5a9a-457f-96d6-1e39dac33495</SysRowID>
</PcAssembly>
After the import I just added the references again.
See if that helps.
Your mileage may vary.
Joe