@frappe.whitelist(allow_guest=True)
def create_sales_invoice(customer='',due_date='',item_code='',qty='',rate='',amount=''):
try:
sales_invoice_doc = frappe.new_doc("Sales Invoice")
sales_invoice_doc.customer= customer
sales_invoice_doc.due_date = due_date
sales_invoice_doc = frappe.db.get_value('items'.append({
"item_code": sales_invoice_doc.item_code,
"qty": sales_invoice_doc.qty,
"rate": sales_invoice_doc.rate,
"amount": sales_invoice_doc.amount,
"uom": default_uom,
"conversion_factor": 1.0,
"item_name": sales_invoice_doc.item_name,
"description": sales_invoice_doc.item_name,
"income_expense_account_field": sales_invoice_doc.temporary_opening_account,
"cost_center": sales_invoice_doc.cost_center
}))
sales_invoice_doc.save(ignore_permissions=True)
frappe.db.commit()
return { "message":"New Sales Invoice {0} Is Created".format(customer),
"status": "success","user_message":"New Sales Invoice {0} Is Created".format(customer)}
except Exception as e:
return { "message":"New Sales Invoice {0} is not Created, Missing Some record is present".format(customer),
"status": "failed","user_message":"New Sales Invoice {0} is not Created".format(customer)}
Why?
Please elaborate query in detail.
I think it should be
sales_invoice_doc.append('items', {
"item_code": sales_invoice_doc.item_code,
"qty": sales_invoice_doc.qty,
"rate": sales_invoice_doc.rate,
"amount": sales_invoice_doc.amount,
"uom": default_uom,
"conversion_factor": 1.0,
"item_name": sales_invoice_doc.item_name,
"description": sales_invoice_doc.item_name,
"income_expense_account_field": sales_invoice_doc.temporary_opening_account,
"cost_center": sales_invoice_doc.cost_center
})
2 Likes
Thanks, But it’s not work
This one use take fields in sales invoice:-
sales_invoice_doc = frappe.new_doc(“Sales Invoice”)
sales_invoice_doc.customer= customer
sales_invoice_doc.due_date = due_date
This one take fields in Items table which is a child table in sales invoice
sales_invoice_doc = frappe.db.get_value(‘items’.append({
“item_code”: sales_invoice_doc.item_code,
“qty”: sales_invoice_doc.qty,
“rate”: sales_invoice_doc.rate,
“amount”: sales_invoice_doc.amount,
“uom”: default_uom,
"conversion_factor": 1.0,
"item_name": sales_invoice_doc.item_name,
"description": sales_invoice_doc.item_name,
"income_expense_account_field": sales_invoice_doc.temporary_opening_account,
"cost_center": sales_invoice_doc.cost_center
}))
This is the correct way to do it. You have to share the error traceback for us to help you.