I am trying to override py method named “
calculate_item_values” is available in (erpnext=>erpnext=>controllers=>taxes_and_totals.py) erpnext
to do a calculation for an amount in sales order lines.
Below is my code, I added in my custom application by creating controllers directory but it not working.
(Path : my_custom_app=>my_custom_app=>controllers=>taxes_and_totals.py)
from frappe.utils import flt
from erpnext.controllers.taxes_and_totals import calculate_taxes_and_totals
print "\n :::My Custom App Call ::::::::::"
print "\n :::::My Custom App Method Call ::::::::::"
Please help me on this.
Thanks in advance.
Overriding individual method is not easily possible. What are you trying to achieve? (use case)?
Thank you for valuable reply.
I need to change some calculation for amount in sales order items.
I need to calculate amount (rate*stock_qty).
item.amount = flt(item.rate * item.stock_qty, precision(“amount”, item));
I really need this. anyone have an idea about it? how can I do?
Thanks in advance.
Amount is already calculated in item, right?
Yes, Amount is calculated in Sale Order Item.
Now, Amount is calculated based on item.rate*item.qty in Sales Order Item.
but I want to calculate it with item.rate*item.stock_qty.
I really need to override calculate_item_values method in my custom app.
How can I achieve this? Anyone have an idea about it?
Sorry for re-reply.
I really need this. Is there anybody have a solution for it?
You can override class methods, check this
In custom_app module_name.py
from erpnext.accounts.doctype.sales_invoice.sales_invoice import SalesInvoice
SalesInvoice.shoutout = shoutout
SalesInvoice.before_cancel = before_cancel
In : from custom_app.module_name import build_my_thing
In : build_my_thing()
In : sales_invoice = frappe.get_doc("Sales I…
We always do simple trick for such customisation.
Change label of Qty - Custom Stock Qty and hide it.
Add new field Qty (Custom Qty)
Write script on selecting item, validate to change Qty to Stock Qty and Make Qty field hidden.
Thanks for the reply, as per your suggested example I tried but still, I am not able to override class method.
my custom app have no any doctype so I override it in Path : my_custom_app=>my_custom_app=>controllers=>taxes_and_totals.py
Its not actual overriding, both method will be called, so you can use alternative way of changing field label for your customisation.
Did this work for you? I'm also trying to do the same.
Is this possible to overide a single python function in frappe …? if yes how? can u tell me .
A search turns up this
How to override method in frappe?
No, I didn’t get the right way to override the controller function.
Did you find a solution? I need make the same thing