I'm trying to create a sales order in x++ 2012 r2 and invoice. I can get it to invoice fine, but i want to be able to set the Document Date: which sales its set in SalesParmTable.
I can set the parameters below for salesparm but it doesn't actually work. I tried to use CustInvoiceTable as well but doesn't seem to work. When I was creating purchase orders i had to use VendInvoiceInfoTable in order to set these parameters because purchParmTable wouldn't work for that either.
Does anyone know how to invoice and set document date for sales orders? thanks
static void ColtsSalesOrder(Args _args) { //declaring variables InventDimId _inventDimId; SalesTable salesTable; SalesLine salesLine; NumberSeq numberSeq; SalesFormLetter salesFormLetter; SalesParmTable salesParmTable; recId dimensionId; DimensionAttributeValueSetStorage storage; DimensionAttribute dimensionAttribute; DimensionAttributeValue dimensionAttributeValue; SalesParmUpdate salesParmUpdate; SalesFormletterParmData salesFormLetterParmData; CustInvoiceTable custInvoiceTable; CustInvoiceTrans custInvoiceTrans; // CustInvoiceLine custINvoiceLine; VendInvoiceInfoTable vendInvoiceInfoTable; CustInvoiceJour custInvoiceJourNew; AxSalesTable axsalesTable; SalesInvoiceJournalCreateBase SalesInvoiceJournalCreateBase; Date myDate; str test; container ledgerDimensions; DimensionDefault dimensionDefault; str InvoiceNum; changeCompany("MYCOMPANY") //Inserts into specified company { ttsBegin; //creating sales order header //getting sales order id from number sequence _inventDimId="someID"; test="12/15/2018"; myDate=str2Date(test,213); /* inventDim.InventSiteId = "1"; inventDim = InventDim::findOrCreate(inventDim); salesLine.InventDimId = inventDim.inventDimId; */ numberSeq = NumberSeq::newGetNum(SalesParameters::numRefSalesId()); numberSeq.used(); //salesTable.initFromSalesTable(salesTable); salesTable.initValue(); salesTable.SalesId = numberSeq.num(); salesTable.CustAccount = "SOMEACCOUNT"; // salesTable.initFromSalesTable(salesTable); salesTable.initFromCustTable(); // salesTable.ShippingDateRequested=myDate; // salesTable.InvoiceAccount="adsf"; // salesTable.CurrencyCode="CAD"; // salesTable.LanguageId="EN"; //salesTable.CustGroup="adsf"; //validate if (!salesTable.validateWrite()) { throw Exception::Error; } salesTable.insert(); //creating sales order line salesLine.clear(); salesLine.SalesId = salesTable.SalesId; //salesLine.initValue(salesTable.SalesType); //salesLine.initFromSalesTable(salesTable); //salesLine.initFromInventTable(InventTable::find('SOMEID')); //salesLine.setInventDimId(_inventDimId); //salesLine.InventDimId="SOMEID"; //salesLine.ShippingDateRequested=myDate; //salesLine.CurrencyCode="CAD"; //salesLine.LanguageId="EN"; //salesLine.CustGroup="adsf"; //salesLine.CustomerCode="asdf"; salesLine.ItemId = "SOMEID"; salesLine.SalesQty = 1; salesLine.SalesPrice=1; //salesLine.initFromItemOrCategory(salesLine.ItemId, salesLine.SalesCategory, ""); salesLine.LineAmount=5; storage = new DimensionAttributeValueSetStorage(); dimensionAttribute = AxdDimensionUtil::validateFinancialDimension("ItemGroup"); dimensionAttributeValue = AxdDimensionUtil::validateFinancialDimensionValue(dimensionAttribute, "SUMP"); // Add attribute storage.addItem(dimensionAttributeValue); dimensionId = storage.save(); salesLine.DefaultDimension=dimensionId; salesLine.createLine(true, // Validate true, // initFromSalesTable false, // initFromInventTable true, // calcInventQty true, // searchMarkup false // searchPrice); ttsCommit; //confirm sales order InvoiceNum=SalesTable.SalesID; salesFormLetterParmData = SalesFormletterParmData::newData( DocumentStatus::Invoice, VersioningUpdateType::Initial); salesFormLetterParmData.parmOnlyCreateParmUpdate(true); salesFormLetterParmData.createData(false); salesParmUpdate = salesFormLetterParmData.parmParmUpdate(); salesParmTable.clear(); salesParmTable.initValue(); salesParmTable.TransDate = SystemDateGet(); salesParmTable.DocumentDate = myDate; salesParmTable.Ordering = DocumentStatus::Invoice; salesParmTable.ParmJobStatus = ParmJobStatus::Waiting; salesParmTable.SalesID = salesTable.SalesID; salesParmTable.SalesName = salesTable.SalesName; salesParmTable.DeliveryName = salesTable.DeliveryName; salesParmTable.DeliveryPostalAddress = salesTable.DeliveryPostalAddress; salesParmTable.CustAccount = salesTable.CustAccount; salesParmTable.CurrencyCode = salesTable.CurrencyCode; salesParmTable.InvoiceAccount = salesTable.InvoiceAccount; salesParmTable.ParmId = salesParmUpdate.ParmId; // if (salesParmTable.validateWrite()) salesParmTable.insert(); //else // throw Exception::Error; custInvoiceTable.initValue(); custInvoiceTable.SalesId=salesTable.SalesID; custInvoiceTable.DocumentDate=myDate; custInvoiceTable.InvoiceDate=myDate; custInvoiceTable.OrderAccount="003-000009"; custInvoiceTable.insert(); // Set PurchParmLine table while select salesLine where salesLine.SalesId == salesTable.SalesId { custInvoiceTrans.clear(); custInvoiceTrans.initFromSalesLine(salesLine); //custInvoiceTrans.InventNow = 1; custInvoiceTrans.LineAmount = salesLine.LineAmount; //custInvoiceTrans.ship //custInvoiceTrans.ReceiveNow = salesLine.PurchQty; custInvoiceTrans.RemainBefore = 1; //custInvoiceTrans.RemainBeforeInvent = 1; //custInvoiceTrans.TableRefId = custInvoiceTable.TableRefId; custInvoiceTrans.insert(); } salesFormLetter = salesFormLetter::construct(DocumentStatus::Confirmation); salesFormLetter.update(salesTable, // Purchase record Buffer systemdateget()); // Transaction date salesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice); salesFormLetter.salesTable(salesTable); salesFormLetter.initParmDefault(); salesFormLetter.transDate(systemDateGet()); salesFormLetter.proforma(false); salesFormLetter.printFormLetter(false); salesFormLetter.specQty(SalesUpdate::All); salesFormLetter.parmId(salesParmTable.ParmId); salesFormLetter.salesParmUpdate(salesFormLetterParmData.parmParmUpdate()); salesFormLetter.initParameters(salesFormLetter.salesParmUpdate(), Printout::Current); // salesFormLetter.initLinesQuery(); salesFormLetter.update(salesTable, systemdateget()); // salesFormLetter.run(); // custInvoiceJourNew = salesFormLetter.getOutputContract().parmJournal(); // //displaying sales order id info(salesTable.SalesId); } }