ARTICLE AD BOX
When I try to add inventory movement header line I get many exceptions in AX:
The value in field VoucherNumberSequenceTable is invalid
and
Data source InventDim not in query
I try to create a C# WCF service to add AX 2012 inventory movement.
AX 2012 structure - in AX 2012 side I created query with:
InventJournalTable |->InventJournalTrans (as datasource) |-->InventDim (as datasource) |->InventJournalName (as datasource)Then I create an AIF document. After that I create an inbound service:
And then I call it from this C# code:
public string AddStock(AxInventoryConnectors Connection, string JournalNameId, string Description,string MainAccount, List<Item> items, string JournalId) { if (!Connection.IsConnected) return string.Empty; try { var client = Connection.clientInventJournal; client.InnerChannel.OperationTimeout = TimeSpan.FromMinutes(30); var journalHeader = new AxdEntity_InventJournalTable() { }; journalHeader.JournalId = JournalId; journalHeader.JournalNameId = JournalNameId; journalHeader.Description = Description; journalHeader.JournalType = AxdEnum_InventJournalType.Movement; journalHeader.JournalTypeSpecified = true; journalHeader.VoucherNumberSequenceTable = new AxdEntityKey_NumberSequenceTable { NumberSequence = "Replaceme2",/*"Inve_14" */ NumberSequenceScope_DataArea = Connection.Context.Company, NumberSequenceScope_LegalEntity_DataArea = Connection.Context.Company, }; journalHeader.VoucherDraw = AxdEnum_JournalVoucherDraw.Post; journalHeader.VoucherDrawSpecified = true; journalHeader.RecId = 0; journalHeader.RecIdSpecified = true; journalHeader.action = AxdEnum_AxdEntityAction.create; journalHeader.RecVersion = 1; journalHeader.RecVersionSpecified = true; AxdEntity_InventJournalTrans[] journalLines = new AxdEntity_InventJournalTrans[items.Count]; int i = 0; foreach (var itm in items) { journalLines[i] = BuildLine(itm.itemId, itm.qty, itm.InventDimId, itm.Voucher, itm.Account, itm.TransDate, itm.CostPrice, itm.CostAmount, itm.InventLocationId, itm.InventSiteId, itm.InventSerialId, itm.InventLocationId); i++; } journalHeader.InventJournalTrans = journalLines; var InventJournalTable = new AxdEntity_InventJournalTable[] { journalHeader }; InventJournalServiceCreateRequest requestmov = new InventJournalServiceCreateRequest { CallContext = Connection.Context, InventJournal = new AxdInventJournal { InventJournalTable = InventJournalTable } }; client.create(requestmov); } catch (Exception ex) { Console.WriteLine("Error in AddStock: " + ex.Message); } return string.Empty; } private AxdEntity_InventJournalTrans BuildLine(string itemId, decimal qty, string InventDimId,string Voucher,string Account, DateTime TransDate, decimal? CostPrice, decimal? CostAmount,string InventLocationId,string InventSiteId,string InventSerialId,string LocationId)//, { var line = new AxdEntity_InventJournalTrans { ItemId = itemId, Qty = qty, QtySpecified = true, InventDimId = InventDimId, CostPrice = CostPrice, CostAmount = CostAmount, Voucher = Voucher, LineNum=1, TransDate = TransDate, LedgerDimension = new AxdType_DefaultAccount { MainAccount = Account//C0036 }, InventDim=new AxdEntity_InventDim1[] { new AxdEntity_InventDim1() { InventLocationId =InventLocationId, InventSiteId=InventSiteId, inventSerialId=InventSerialId, wMSLocationId=LocationId } } }; return line; } public class Item { public string itemId { get; set; } public decimal qty { get; set; } public string InventDimId { get; set; } public decimal? CostPrice { get; set; } public decimal? CostAmount { get; set; } public string Voucher { get; set; } public DateTime TransDate { get; set; } public string Account { get; set; } public string InventLocationId { get; set; } = "S28"; public string InventSiteId { get; set; } = "DIS"; public string InventSerialId { get; set; } = "356926093149835"; public string LocationId { get; set; } = ""; public string JournalId { get; set; } = "K01-007924"; }What is missing, or what could be a solution for this project?
