False "Row 1: Conversion Factor is mandatory" message

ERPNext: v13.36.2 (version-13)
Frappe Framework: v13.36.3 (version-13)

When trying to save a Sales Invoice, erpnext complains that there is no conversion factor set. There is:

I have tried clearing this field, setting it to 0, 1, 1.0, and various other things but it refuses to proceed.

This occurs with new invoices, previously saved invoices, and duplicates of previously submitted invoices. A lot of (previously working) auto-repeat invoices failed to create too on 31/07, so the issue seems to be internal rather than browser based.

LOGS
No logs appear in /home/erp/frappe-bench/logs/ when pressing submit and the error appears. The earlier logs all seem unrelated, e.g.:

15:36:05 default: frappe.utils.background_jobs.execute_job(event=None, is_async=True, job_name='frappe.core.doctype.scheduled_job_type.scheduled_job_type.run_scheduled_jo..., kwargs={'job_type': 'frappe.email.queue.flush'}, method='frappe.core.doctype.scheduled_job_type.scheduled_job_type.run_scheduled_jo..., site='erp', user='Administrator') (d8c90808-ea0b-43fd-aa8d-16af3c55ac5f)
15:36:05 default: Job OK (d8c90808-ea0b-43fd-aa8d-16af3c55ac5f)
15:36:05 Result is kept for 500 seconds

However, there are some related logs from the auto creation failure (from within erpnext), which failed for the same reason:

Traceback (most recent call 
last): File 
"apps/frappe/frappe/automation/doctype/auto_repeat/auto_repeat.py", line
 184, in create_documents new_doc = self.make_new_document() File 
"apps/frappe/frappe/automation/doctype/auto_repeat/auto_repeat.py", line
 199, in make_new_document new_doc.insert(ignore_permissions=True) File 
"apps/frappe/frappe/model/document.py", line 261, in insert 
self.run_before_save_methods() File 
"apps/frappe/frappe/model/document.py", line 1052, in 
run_before_save_methods self.run_method("validate") File 
"apps/frappe/frappe/model/document.py", line 941, in run_method out = 
Document.hook(fn)(self, *args, **kwargs) File 
"apps/frappe/frappe/model/document.py", line 1259, in composer return 
composed(self, method, *args, **kwargs) File 
"apps/frappe/frappe/model/document.py", line 1241, in runner 
add_to_return_value(self, fn(self, *args, **kwargs)) File 
"apps/frappe/frappe/model/document.py", line 938, in fn return 
method_object(*args, **kwargs) File 
"apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py", 
line 96, in validate super(SalesInvoice, self).validate() File 
"apps/erpnext/erpnext/controllers/selling_controller.py", line 36, in 
validate self.set_qty_as_per_stock_uom() File 
"apps/erpnext/erpnext/controllers/selling_controller.py", line 200, in 
set_qty_as_per_stock_uom frappe.throw(_("Row {0}: Conversion Factor is 
mandatory").format(d.idx)) File "apps/frappe/frappe/__init__.py", line 
504, in throw msgprint( File "apps/frappe/frappe/__init__.py", line 479,
 in msgprint _raise_exception() File "apps/frappe/frappe/__init__.py", 
line 434, in _raise_exception raise raise_exception(msg) 
frappe.exceptions.ValidationError: Row 1: Conversion Factor is mandatory

I have raised this issue here but have not yet had any traction: False "Row X: Conversion Factor is mandatory" message · Issue #31758 · frappe/erpnext · GitHub

This is a complete show-stopper as we can’t send out invoices. I’ve tried different browsers and accounts with no luck. I’ve reset the Sales Invoice Item customisation table to default (there were no customisations anyway) and that has not helped.

Short video of the issue: