I am facing an issue while creating a Sales Order using the Rest API.
Am using the below C# code to call the API.
RestRequest request = new RestRequest($“/api/resource/{DocType}”, Method.POST);
var args_text = JsonSerializerHelper.ToString(obj, true);
request.AddParameter("data", args_text);
var response = this._client.Execute(request);
The Parameter value assign to data for the RestResquest is
{
“naming_series”:“SAL-ORD-.YYYY.-”,
“customer”:“Test - 1”,
“customer_name”:“Test”,
“order_type”: “Sales”,
“delivery_date”:“31-05-2021”,
“docstatus”:1,
“items”:
[{
“name”:“TestName”,
“owner”:null,
“item_code”:“CWS800”,
“item_name”:“Dano Cool Cow Refill 800g x 12”,
“description”:null,
“item_group”:“Products”,
“qty”:1.0,
“rate”:0.0,
“amount”:0.0,
“warehouse”:“Lagos warehouse - MPL”,
“doctype”:“Item”,
“uniqueidentifier”:“00000000-0000-0000-0000-000000000000”,
“operationtype”:0,
“item_tax_template”:“7.5% Gross Retail Tax”,
“docstatus”:1,
“parentfield”:“items”,
“parenttype”:“Sales Order”
}],
“taxes”:
[{
“name”:“c3cd226bbf”,
“charge_type”:“On Net Total”,
“account_head”:“2510021 - Vat Payable - MPL”,
“description”:“Vat Payable”,
“included_in_print_rate”:1,
“cost_center”:“Not Applicable - MPL”,
“rate”:7.5,
“parentfield”:“taxes”,
“parenttype”:“Sales Order”,
“doctype”:“Sales Taxes and Charges”,
“docstatus”:1,
“item_wise_tax_detail”:“{"CWS800":[0.0,0.0]}”
}],
"set_warehouse":"Lagos warehouse - MPL",
"data":null,
"name":null,
"doctype":"Sales Order",
"uniqueidentifier":"ee20ee5d-ad77-4d78-9d0d-bd6dd5e6aa6e",
"operationtype":1,
"currency":"NGN",
"conversion_rate":1.0,
"selling_price_list":"Standard Selling",
"price_list_currency":"NGN",
"party_account_currency" :"NGN"
}
But I am getting the below error.
{“exc”:“["Traceback (most recent call last):\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/frappe/frappe/app.py\", line 67, in application\n response = frappe.api.handle()\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/frappe/frappe/api.py\", line 130, in handle\n \"data\": frappe.get_doc(data).insert().as_dict()\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/frappe/frappe/model/document.py\", line 230, in insert\n self.run_before_save_methods()\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/frappe/frappe/model/document.py\", line 900, in run_before_save_methods\n self.run_method(\"validate\")\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/frappe/frappe/model/document.py\", line 797, in run_method\n out = Document.hook(fn)(self, *args, **kwargs)\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/frappe/frappe/model/document.py\", line 1073, in composer\n return composed(self, method, *args, **kwargs)\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/frappe/frappe/model/document.py\", line 1056, in runner\n add_to_return_value(self, fn(self, *args, **kwargs))\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/frappe/frappe/model/document.py\", line 791, in \n fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py\", line 36, in validate\n super(SalesOrder, self).validate()\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/erpnext/erpnext/controllers/selling_controller.py\", line 40, in validate\n super(SellingController, self).validate()\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/erpnext/erpnext/controllers/stock_controller.py\", line 21, in validate\n super(StockController, self).validate()\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/erpnext/erpnext/controllers/accounts_controller.py\", line 80, in validate\n self.calculate_taxes_and_totals()\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/erpnext/erpnext/controllers/accounts_controller.py\", line 189, in calculate_taxes_and_totals\n calculate_taxes_and_totals(self)\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/erpnext/erpnext/controllers/taxes_and_totals.py\", line 17, in init\n self.calculate()\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/erpnext/erpnext/controllers/taxes_and_totals.py\", line 24, in calculate\n self._calculate()\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/erpnext/erpnext/controllers/taxes_and_totals.py\", line 38, in _calculate\n self.calculate_item_values()\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/erpnext/erpnext/controllers/taxes_and_totals.py\", line 96, in calculate_item_values\n self.doc.round_floats_in(item)\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/frappe/frappe/model/document.py\", line 1128, in round_floats_in\n doc.set(fieldname, flt(doc.get(fieldname), self.precision(fieldname, doc.parentfield)))\n File \"/home/frappe/benches/bench-version-12-2021-04-20/apps/frappe/frappe/model/base_document.py\", line 732, in precision\n if df.fieldtype in (\"Currency\", \"Float\", \"Percent\"):\nAttributeError: ‘NoneType’ object has no attribute ‘fieldtype’\n"]”}
Can somebody help me to find a solution. Atleast direct me where I am doing wrong.
Prasanth