There seems to be an issue with the selling/buying discount calculation. The only way I could get around this was to remove the selling and buying price on the item. It was a new item added today.
Traceback (innermost last):
File "/home/frappe/frappe-bench/apps/frappe/frappe/app.py", line 67, in application
response = frappe.handler.handle()
File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 75, in handle
execute_cmd(cmd)
File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 109, in execute_cmd
ret = frappe.call(method, **frappe.form_dict)
File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 765, in call
return fn(*args, **newargs)
File "/home/frappe/frappe-bench/apps/frappe/frappe/desk/form/save.py", line 18, in savedocs
doc.save()
File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 228, in save
self.run_before_save_methods()
File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 576, in run_before_save_methods
self.run_method("validate")
File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 538, in run_method
return Document.hook(fn)(self, *args, **kwargs)
File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 670, in composer
return composed(self, method, *args, **kwargs)
File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 653, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 532, in <lambda>
fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
File "/home/frappe/frappe-bench/apps/erpnext/erpnext/selling/doctype/quotation/quotation.py", line 17, in validate
super(Quotation, self).validate()
File "/home/frappe/frappe-bench/apps/erpnext/erpnext/controllers/selling_controller.py", line 31, in validate
super(SellingController, self).validate()
File "/home/frappe/frappe-bench/apps/erpnext/erpnext/controllers/accounts_controller.py", line 32, in validate
self.set_missing_values(for_validate=True)
File "/home/frappe/frappe-bench/apps/erpnext/erpnext/controllers/selling_controller.py", line 40, in set_missing_values
self.set_price_list_and_item_details()
File "/home/frappe/frappe-bench/apps/erpnext/erpnext/controllers/selling_controller.py", line 58, in set_price_list_and_item_details
self.set_missing_item_details()
File "/home/frappe/frappe-bench/apps/erpnext/erpnext/controllers/accounts_controller.py", line 172, in set_missing_item_details
(1.0 - (item.discount_percentage / 100.0)), item.precision("rate"))
TypeError: unsupported operand type(s) for /: 'NoneType' and 'float'