33 lines
1.2 KiB
JavaScript
33 lines
1.2 KiB
JavaScript
import { patch } from "@web/core/utils/patch";
|
|
|
|
import { accountTaxHelpers } from "@account/helpers/account_tax";
|
|
import { evaluateExpr } from "@web/core/py_js/py";
|
|
|
|
// -------------------------------------------------------------------------
|
|
// HELPERS IN BOTH PYTHON/JAVASCRIPT (account_tax.js / account_tax.py)
|
|
// -------------------------------------------------------------------------
|
|
|
|
patch(accountTaxHelpers, {
|
|
/**
|
|
* [!] Mirror of the same method in account_tax.py.
|
|
* PLZ KEEP BOTH METHODS CONSISTENT WITH EACH OTHERS.
|
|
*/
|
|
eval_tax_amount_formula(tax, raw_base, evaluation_context) {
|
|
const formula_context = {
|
|
price_unit: evaluation_context.price_unit,
|
|
quantity: evaluation_context.quantity,
|
|
product: evaluation_context.product,
|
|
base: raw_base,
|
|
};
|
|
return evaluateExpr(tax.formula_decoded_info.js_formula, formula_context);
|
|
},
|
|
|
|
/** override **/
|
|
eval_tax_amount_fixed_amount(tax, batch, raw_base, evaluation_context) {
|
|
if (tax.amount_type === "code") {
|
|
return this.eval_tax_amount_formula(tax, raw_base, evaluation_context);
|
|
}
|
|
return super.eval_tax_amount_fixed_amount(...arguments);
|
|
},
|
|
});
|