@frappe.whitelist(allow_guest=True)
def make_so():
so = frappe.get_doc(
{
"doctype": "Sales Order",
"company": "Company 1",
"customer": "Customer 1"
}
)
so.append("items",
{
"item_code": "iPhone 13",
"qty": 1,
"rate": 5,
"uom": "Box"
}
)
# set missing values for both the parent and child tables
so.set_missing_values()
for item in so.items:
item.set_missing_values()
# now the amount should be populated
print(so.items[0].amount)
for item in so.items:
item.rate = 5
frappe.model.meta.get_field("Sales Order Item", "rate").set(item, item.rate)
item.qty = 1
frappe.model.meta.get_field("Sales Order Item", "qty").set(item, item.qty)
item.uom = "Box"
frappe.model.meta.get_field("Sales Order Item", "uom").set(item, item.uom)
# now the amount should be populated
print(so.items[0].amount)