When creating sales invoice from delivery I want to disable mapping of sales taxes and charges. I just ovveride the function but I tried removing the sales taxes and charges in get_mapped_doc but still maps to the taxes table
//
@frappe.whitelist()
def override_make_sales_invoice(source_name, target_doc=None, args=None):
doc = frappe.get_doc(“Delivery Note”, source_name)
to_make_invoice_qty_map = {}
returned_qty_map = get_returned_qty_map(source_name)
invoiced_qty_map = get_invoiced_qty_map(source_name)
def set_missing_values(source, target):
target.run_method("set_missing_values")
target.run_method("set_po_nos")
if len(target.get("items")) == 0:
frappe.throw(_("All these items have already been Invoiced/Returned"))
# Skip adding taxes if custom_is_service_order is set to 1
if frappe.utils.cint(doc.custom_is_service_order) != 1:
if args and args.get("merge_taxes"):
merge_taxes(source.get("taxes") or [], target)
target.run_method("calculate_taxes_and_totals")
# Set company address
if source.company_address:
target.update({"company_address": source.company_address})
else:
target.update(get_company_address(target.company))
if target.company_address:
target.update(get_fetch_values("Sales Invoice", "company_address", target.company_address))
# Ensure grand_total equals total
if target.total != target.grand_total:
target.grand_total = target.total
def update_item(source_doc, target_doc, source_parent):
target_doc.qty = to_make_invoice_qty_map[source_doc.name]
if source_doc.serial_no and source_parent.per_billed > 0 and not source_parent.is_return:
target_doc.serial_no = get_delivery_note_serial_no(
source_doc.item_code, target_doc.qty, source_parent.name
)
def get_pending_qty(item_row):
pending_qty = item_row.qty - invoiced_qty_map.get(item_row.name, 0)
returned_qty = 0
if returned_qty_map.get(item_row.name, 0) > 0:
returned_qty = frappe.utils.flt(returned_qty_map.get(item_row.name, 0))
returned_qty_map[item_row.name] -= pending_qty
if returned_qty:
if returned_qty >= pending_qty:
pending_qty = 0
returned_qty -= pending_qty
else:
pending_qty -= returned_qty
returned_qty = 0
to_make_invoice_qty_map[item_row.name] = pending_qty
return pending_qty
doc = get_mapped_doc(
"Delivery Note",
source_name,
{
"Delivery Note": {
"doctype": "Sales Invoice",
"field_map": {"is_return": "is_return"},
"validation": {"docstatus": ["=", 1]},
},
"Delivery Note Item": {
"doctype": "Sales Invoice Item",
"field_map": {
"name": "dn_detail",
"parent": "delivery_note",
"so_detail": "so_detail",
"against_sales_order": "sales_order",
"serial_no": "serial_no",
"cost_center": "cost_center",
},
"postprocess": update_item,
"filter": lambda d: get_pending_qty(d) <= 0
if not doc.get("is_return")
else get_pending_qty(d) > 0,
},
# Completely remove Sales Taxes and Charges if custom_is_service_order is set to 1
"Sales Taxes and Charges": None if frappe.utils.cint(doc.custom_is_service_order) == 1 else {
"doctype": "Sales Taxes and Charges",
"reset_value": not (args and args.get("merge_taxes")),
"ignore": args.get("merge_taxes") if args else 0,
},
"Sales Team": {
"doctype": "Sales Team",
"field_map": {"incentives": "incentives"},
"add_if_empty": True,
},
},
target_doc,
set_missing_values,
)
automatically_fetch_payment_terms = frappe.utils.cint(
frappe.db.get_single_value("Accounts Settings", "automatically_fetch_payment_terms")
)
if automatically_fetch_payment_terms:
doc.set_payment_schedule()
return doc
//