ODATA Add Purchase Invoice Line

PatrickSmits
Member Posts: 2
Hi
I recently started using the Nav ODATA Webservices. They work fine for the sales invoices. I can add a sales invoice and add lines to the sales invoice using the ODATA POST method. However when I want to add a purchase invoice line I get errors. When I add a new Purchase Invoice, the invoice is added and I get the invoice number returned. I use that invoice number to add purchase invoice lines according to the XML as you can see below. However this returns the error:
Document No. must have a value in Purchase Line: Document Type=Invoice, Document No.=, Line No.=0. It cannot be zero or empty
This is strange because the document no is provided in the XML and line No. is not the number I entered. Is this a bug Nav?
Patrick
<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<category term="NAV.Purchase_InvoicePurchLines" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<id />
<title />
<updated>2014-06-13T08:40:50Z</updated>
<author>
<name />
</author>
<content type="application/xml">
<m:properties>
<d:Document_Type>Invoice</d:Document_Type>
<d:Document_No>1009</d:Document_No>
<d:Line_No m:type="Edm.Int32">10000</d:Line_No>
<d:Type>Item</d:Type>
<d:No>1001</d:No>
<d:Cross_Reference_No />
<d:IC_Partner_Code />
<d:IC_Partner_Ref_Type xml:space="preserve"></d:IC_Partner_Ref_Type>
<d:IC_Partner_Reference />
<d:Variant_Code />
<d:Nonstock m:type="Edm.Boolean">false</d:Nonstock>
<d:Gen_Bus_Posting_Group>EXPORT</d:Gen_Bus_Posting_Group>
<d:Gen_Prod_Posting_Group>DET.HANDEL</d:Gen_Prod_Posting_Group>
<d:VAT_Bus_Posting_Group>EXPORT</d:VAT_Bus_Posting_Group>
<d:VAT_Prod_Posting_Group>BTW19</d:VAT_Prod_Posting_Group>
<d:Description>Tourfiets</d:Description>
<d:Description_2 />
<d:Certificate_Required m:type="Edm.Boolean">false</d:Certificate_Required>
<d:Certificate_Received m:type="Edm.Boolean">false</d:Certificate_Received>
<d:Certificate_Receipt_Date m:type="Edm.DateTime">0001-01-01T00:00:00</d:Certificate_Receipt_Date>
<d:Return_Reason_Code />
<d:Location_Code />
<d:Bin_Code />
<d:Quantity m:type="Edm.Decimal">1</d:Quantity>
<d:Unit_of_Measure_Code>STUKS</d:Unit_of_Measure_Code>
<d:Unit_of_Measure>Piece</d:Unit_of_Measure>
<d:Quantity_Price_UoM m:type="Edm.Decimal">0</d:Quantity_Price_UoM>
<d:Price_Unit_of_Measure_Code />
<d:Price_Unit_of_Measure />
<d:Direct_Unit_Cost_Price_UoM m:type="Edm.Decimal">0</d:Direct_Unit_Cost_Price_UoM>
<d:Direct_Unit_Cost m:type="Edm.Decimal">0</d:Direct_Unit_Cost>
<d:Indirect_Cost_Percent m:type="Edm.Decimal">0</d:Indirect_Cost_Percent>
<d:Unit_Cost_LCY m:type="Edm.Decimal">350.595</d:Unit_Cost_LCY>
<d:Unit_Price_LCY m:type="Edm.Decimal">4000</d:Unit_Price_LCY>
<d:Line_Amount m:type="Edm.Decimal">0</d:Line_Amount>
<d:Line_Discount_Percent m:type="Edm.Decimal">0</d:Line_Discount_Percent>
<d:Line_Discount_Amount m:type="Edm.Decimal">0</d:Line_Discount_Amount>
<d:Allow_Invoice_Disc m:type="Edm.Boolean">true</d:Allow_Invoice_Disc>
<d:Inv_Discount_Amount m:type="Edm.Decimal">0</d:Inv_Discount_Amount>
<d:Amount m:type="Edm.Decimal">0</d:Amount>
<d:Amount_Including_VAT m:type="Edm.Decimal">0</d:Amount_Including_VAT>
<d:Allow_Item_Charge_Assignment m:type="Edm.Boolean">true</d:Allow_Item_Charge_Assignment>
<d:Qty_to_Assign m:type="Edm.Decimal">0</d:Qty_to_Assign>
<d:Qty_Assigned m:type="Edm.Decimal">0</d:Qty_Assigned>
<d:Job_No />
<d:Job_Task_No />
<d:Job_Line_Type xml:space="preserve"></d:Job_Line_Type>
<d:Job_Unit_Price m:type="Edm.Decimal">0</d:Job_Unit_Price>
<d:Job_Line_Amount m:type="Edm.Decimal">0</d:Job_Line_Amount>
<d:Job_Line_Discount_Amount m:type="Edm.Decimal">0</d:Job_Line_Discount_Amount>
<d:Job_Line_Discount_Percent m:type="Edm.Decimal">0</d:Job_Line_Discount_Percent>
<d:Job_Total_Price m:type="Edm.Decimal">0</d:Job_Total_Price>
<d:Job_Unit_Price_LCY m:type="Edm.Decimal">0</d:Job_Unit_Price_LCY>
<d:Job_Total_Price_LCY m:type="Edm.Decimal">0</d:Job_Total_Price_LCY>
<d:Job_Line_Amount_LCY m:type="Edm.Decimal">0</d:Job_Line_Amount_LCY>
<d:Job_Line_Disc_Amount_LCY m:type="Edm.Decimal">0</d:Job_Line_Disc_Amount_LCY>
<d:Prod_Order_No />
<d:Blanket_Order_No />
<d:Blanket_Order_Line_No m:type="Edm.Int32">0</d:Blanket_Order_Line_No>
<d:Insurance_No />
<d:Budgeted_FA_No />
<d:FA_Posting_Type xml:space="preserve"></d:FA_Posting_Type>
<d:Depreciation_Book_Code />
<d:Depr_until_FA_Posting_Date m:type="Edm.Boolean">false</d:Depr_until_FA_Posting_Date>
<d:Depr_Acquisition_Cost m:type="Edm.Boolean">false</d:Depr_Acquisition_Cost>
<d:Duplicate_in_Depreciation_Book />
<d:Use_Duplication_List m:type="Edm.Boolean">false</d:Use_Duplication_List>
<d:Appl_to_Item_Entry m:type="Edm.Int32">0</d:Appl_to_Item_Entry>
<d:Shortcut_Dimension_1_Code />
<d:Shortcut_Dimension_2_Code />
<d:ShortcutDimCode_x005B_3_x005D_ />
<d:ShortcutDimCode_x005B_4_x005D_>70</d:ShortcutDimCode_x005B_4_x005D_>
<d:ShortcutDimCode_x005B_5_x005D_ />
<d:ShortcutDimCode_x005B_6_x005D_ />
<d:ShortcutDimCode_x005B_7_x005D_ />
<d:ShortcutDimCode_x005B_8_x005D_ />
</m:properties>
</content>
</entry>
I recently started using the Nav ODATA Webservices. They work fine for the sales invoices. I can add a sales invoice and add lines to the sales invoice using the ODATA POST method. However when I want to add a purchase invoice line I get errors. When I add a new Purchase Invoice, the invoice is added and I get the invoice number returned. I use that invoice number to add purchase invoice lines according to the XML as you can see below. However this returns the error:
Document No. must have a value in Purchase Line: Document Type=Invoice, Document No.=, Line No.=0. It cannot be zero or empty
This is strange because the document no is provided in the XML and line No. is not the number I entered. Is this a bug Nav?
Patrick
<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<category term="NAV.Purchase_InvoicePurchLines" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<id />
<title />
<updated>2014-06-13T08:40:50Z</updated>
<author>
<name />
</author>
<content type="application/xml">
<m:properties>
<d:Document_Type>Invoice</d:Document_Type>
<d:Document_No>1009</d:Document_No>
<d:Line_No m:type="Edm.Int32">10000</d:Line_No>
<d:Type>Item</d:Type>
<d:No>1001</d:No>
<d:Cross_Reference_No />
<d:IC_Partner_Code />
<d:IC_Partner_Ref_Type xml:space="preserve"></d:IC_Partner_Ref_Type>
<d:IC_Partner_Reference />
<d:Variant_Code />
<d:Nonstock m:type="Edm.Boolean">false</d:Nonstock>
<d:Gen_Bus_Posting_Group>EXPORT</d:Gen_Bus_Posting_Group>
<d:Gen_Prod_Posting_Group>DET.HANDEL</d:Gen_Prod_Posting_Group>
<d:VAT_Bus_Posting_Group>EXPORT</d:VAT_Bus_Posting_Group>
<d:VAT_Prod_Posting_Group>BTW19</d:VAT_Prod_Posting_Group>
<d:Description>Tourfiets</d:Description>
<d:Description_2 />
<d:Certificate_Required m:type="Edm.Boolean">false</d:Certificate_Required>
<d:Certificate_Received m:type="Edm.Boolean">false</d:Certificate_Received>
<d:Certificate_Receipt_Date m:type="Edm.DateTime">0001-01-01T00:00:00</d:Certificate_Receipt_Date>
<d:Return_Reason_Code />
<d:Location_Code />
<d:Bin_Code />
<d:Quantity m:type="Edm.Decimal">1</d:Quantity>
<d:Unit_of_Measure_Code>STUKS</d:Unit_of_Measure_Code>
<d:Unit_of_Measure>Piece</d:Unit_of_Measure>
<d:Quantity_Price_UoM m:type="Edm.Decimal">0</d:Quantity_Price_UoM>
<d:Price_Unit_of_Measure_Code />
<d:Price_Unit_of_Measure />
<d:Direct_Unit_Cost_Price_UoM m:type="Edm.Decimal">0</d:Direct_Unit_Cost_Price_UoM>
<d:Direct_Unit_Cost m:type="Edm.Decimal">0</d:Direct_Unit_Cost>
<d:Indirect_Cost_Percent m:type="Edm.Decimal">0</d:Indirect_Cost_Percent>
<d:Unit_Cost_LCY m:type="Edm.Decimal">350.595</d:Unit_Cost_LCY>
<d:Unit_Price_LCY m:type="Edm.Decimal">4000</d:Unit_Price_LCY>
<d:Line_Amount m:type="Edm.Decimal">0</d:Line_Amount>
<d:Line_Discount_Percent m:type="Edm.Decimal">0</d:Line_Discount_Percent>
<d:Line_Discount_Amount m:type="Edm.Decimal">0</d:Line_Discount_Amount>
<d:Allow_Invoice_Disc m:type="Edm.Boolean">true</d:Allow_Invoice_Disc>
<d:Inv_Discount_Amount m:type="Edm.Decimal">0</d:Inv_Discount_Amount>
<d:Amount m:type="Edm.Decimal">0</d:Amount>
<d:Amount_Including_VAT m:type="Edm.Decimal">0</d:Amount_Including_VAT>
<d:Allow_Item_Charge_Assignment m:type="Edm.Boolean">true</d:Allow_Item_Charge_Assignment>
<d:Qty_to_Assign m:type="Edm.Decimal">0</d:Qty_to_Assign>
<d:Qty_Assigned m:type="Edm.Decimal">0</d:Qty_Assigned>
<d:Job_No />
<d:Job_Task_No />
<d:Job_Line_Type xml:space="preserve"></d:Job_Line_Type>
<d:Job_Unit_Price m:type="Edm.Decimal">0</d:Job_Unit_Price>
<d:Job_Line_Amount m:type="Edm.Decimal">0</d:Job_Line_Amount>
<d:Job_Line_Discount_Amount m:type="Edm.Decimal">0</d:Job_Line_Discount_Amount>
<d:Job_Line_Discount_Percent m:type="Edm.Decimal">0</d:Job_Line_Discount_Percent>
<d:Job_Total_Price m:type="Edm.Decimal">0</d:Job_Total_Price>
<d:Job_Unit_Price_LCY m:type="Edm.Decimal">0</d:Job_Unit_Price_LCY>
<d:Job_Total_Price_LCY m:type="Edm.Decimal">0</d:Job_Total_Price_LCY>
<d:Job_Line_Amount_LCY m:type="Edm.Decimal">0</d:Job_Line_Amount_LCY>
<d:Job_Line_Disc_Amount_LCY m:type="Edm.Decimal">0</d:Job_Line_Disc_Amount_LCY>
<d:Prod_Order_No />
<d:Blanket_Order_No />
<d:Blanket_Order_Line_No m:type="Edm.Int32">0</d:Blanket_Order_Line_No>
<d:Insurance_No />
<d:Budgeted_FA_No />
<d:FA_Posting_Type xml:space="preserve"></d:FA_Posting_Type>
<d:Depreciation_Book_Code />
<d:Depr_until_FA_Posting_Date m:type="Edm.Boolean">false</d:Depr_until_FA_Posting_Date>
<d:Depr_Acquisition_Cost m:type="Edm.Boolean">false</d:Depr_Acquisition_Cost>
<d:Duplicate_in_Depreciation_Book />
<d:Use_Duplication_List m:type="Edm.Boolean">false</d:Use_Duplication_List>
<d:Appl_to_Item_Entry m:type="Edm.Int32">0</d:Appl_to_Item_Entry>
<d:Shortcut_Dimension_1_Code />
<d:Shortcut_Dimension_2_Code />
<d:ShortcutDimCode_x005B_3_x005D_ />
<d:ShortcutDimCode_x005B_4_x005D_>70</d:ShortcutDimCode_x005B_4_x005D_>
<d:ShortcutDimCode_x005B_5_x005D_ />
<d:ShortcutDimCode_x005B_6_x005D_ />
<d:ShortcutDimCode_x005B_7_x005D_ />
<d:ShortcutDimCode_x005B_8_x005D_ />
</m:properties>
</content>
</entry>
0
Comments
-
Hi,
I think the error message is caused by the validation for one of the fields as you are trying to insert all fields at once.
Create a codeunit in NAV, and create a function e.g.
CreatePurchaseLine(DocumentType,DocumentNo,LineNo)
In that function insert only fields which are part of the primary keyPurchaseLine.Init; PurchaseLine."Document Type" := DocumentType; PurchaseLine."Document No." := DocumentNo; PurchaseLine."Line No" := LineNo; PurchaseLine.Insert;
Publish this codeunit as a Web Service.
Call this function first after that call you function but this time as MODIFY and not as insert.
I hope this helps.
Thanks.0 -
Hi Patrick,
Iam doing the same but unable to insert sales lines using Odata.
Please help me. Can u please tell me the code how u inserted sales lines .0 -
In order to use writable OData, you need to have controls on the page for all primary key fields. They do not have to be visible.
I think that some key fields are missing from the purchase order subform - as the can be filled in using Autosplitkey in the client.Best regards,
Jens Møller-Pedersen [MSFT]
This posting is provided 'AS IS' with no warranties, and confers no rights.0 -
Hi Jens,
Can u please help me how to update sales lines.
All the primary fields are available on the page .
Please Help me .No error is thrown in Visual Studio but sales lines are not being updated.
Regards,
Neetu Rawat0 -
Go to page 55
Add the two fields "Document No." and "Line No.".
Mark both as Editable false and Visible false, so they will not appear in the clients.
The page is now able to be inserted from OData.
BR
Torben“This posting is provided "AS IS" with no warranties, and confers no rights.”0 -
I recently started using the Nav ODATA Webservices. They work fine for the sales invoices. I can add a sales invoice and add lines to the sales invoice using the ODATA POST method.
Just got a question about the first section:
How did you do the OData POST method for the Sales Invoice?
I'm trying to get the POST to OData (via JSON) working, but I still get a 400 error.
Can you help me with some example code?0 -
Hi All,
Adding only one line is working fine, but cannot add multiple lines in one request. can anybody help?0 -
Hello,
I me trying to create some Order Sales Line using page 42 publish as a WS.Can you help me with this error?
{
"odata.error": {
"code": "",
"message": {
"lang": "en-US",
"value": "Primary keyvalue(s) Document_Type are missing in insert command. Make sure that all primary keys on the page are backed by a control in order to be set."
}
}
}
Resquest
POST /benNAVSTD/OData/Company('CRONUS%20Portugal%20SA')/SalesOrder(Document_Type='Order',No='1065')/SalesOrderSalesLines?$format=json HTTP/1.1
Host: hostname:40330
Content-Type: application/json
{
"Document_Type": "Order",
"Document_No": "1065",
"Line_No": 30000,
"Type": "Item",
"No": "1155"
}0 -
Hi @pereiranuno88,"Document_Type": "Order",
"Document_No": "1065",
"Line_No": 30000,
well those fields usually aren't shown in the "Sales Order Lines" Subpage - therefore the error.
As described above, you need all key attributes to be included in the published page, according to your error this also applies to subpages.
Solution 1) Add the fields to the subpage (invisible preferrably)
Solution 2) Create a new Page (maybe a Copy) to do the API operations on.
regards
/WisaAustrian NAV/BC Dev0
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions