mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-03 12:19:12 +00:00
Merge pull request #30089 from frappe/version-13-pre-release
Merge 'version-13-pre-release' into 'version-13'
This commit is contained in:
@@ -5,7 +5,7 @@ import frappe
|
|||||||
|
|
||||||
from erpnext.hooks import regional_overrides
|
from erpnext.hooks import regional_overrides
|
||||||
|
|
||||||
__version__ = '13.21.0'
|
__version__ = '13.21.1'
|
||||||
|
|
||||||
def get_default_company(user=None):
|
def get_default_company(user=None):
|
||||||
'''Get default company for user'''
|
'''Get default company for user'''
|
||||||
|
|||||||
@@ -439,7 +439,6 @@ class POSInvoice(SalesInvoice):
|
|||||||
self.paid_amount = 0
|
self.paid_amount = 0
|
||||||
|
|
||||||
def set_account_for_mode_of_payment(self):
|
def set_account_for_mode_of_payment(self):
|
||||||
self.payments = [d for d in self.payments if d.amount or d.base_amount or d.default]
|
|
||||||
for pay in self.payments:
|
for pay in self.payments:
|
||||||
if not pay.account:
|
if not pay.account:
|
||||||
pay.account = get_bank_cash_account(pay.mode_of_payment, self.company).get("account")
|
pay.account = get_bank_cash_account(pay.mode_of_payment, self.company).get("account")
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ def get_data():
|
|||||||
'transactions': [
|
'transactions': [
|
||||||
{
|
{
|
||||||
'label': _('Manufacture'),
|
'label': _('Manufacture'),
|
||||||
'items': ['BOM', 'Work Order', 'Job Card', 'Timesheet']
|
'items': ['BOM', 'Work Order', 'Job Card']
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ frappe.ui.form.on('Routing', {
|
|||||||
},
|
},
|
||||||
|
|
||||||
calculate_operating_cost: function(frm, child) {
|
calculate_operating_cost: function(frm, child) {
|
||||||
const operating_cost = flt(flt(child.hour_rate) * flt(child.time_in_mins) / 60, 2);
|
const operating_cost = flt(flt(child.hour_rate) * flt(child.time_in_mins) / 60, precision("operating_cost", child));
|
||||||
frappe.model.set_value(child.doctype, child.name, "operating_cost", operating_cost);
|
frappe.model.set_value(child.doctype, child.name, "operating_cost", operating_cost);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -20,7 +20,8 @@ class Routing(Document):
|
|||||||
for operation in self.operations:
|
for operation in self.operations:
|
||||||
if not operation.hour_rate:
|
if not operation.hour_rate:
|
||||||
operation.hour_rate = frappe.db.get_value("Workstation", operation.workstation, 'hour_rate')
|
operation.hour_rate = frappe.db.get_value("Workstation", operation.workstation, 'hour_rate')
|
||||||
operation.operating_cost = flt(flt(operation.hour_rate) * flt(operation.time_in_mins) / 60, 2)
|
operation.operating_cost = flt(flt(operation.hour_rate) * flt(operation.time_in_mins) / 60,
|
||||||
|
operation.precision("operating_cost"))
|
||||||
|
|
||||||
def set_routing_id(self):
|
def set_routing_id(self):
|
||||||
sequence_id = 0
|
sequence_id = 0
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ def get_data():
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
'label': _('Transaction'),
|
'label': _('Transaction'),
|
||||||
'items': ['Work Order', 'Job Card', 'Timesheet']
|
'items': ['Work Order', 'Job Card',]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'disable_create_buttons': ['BOM', 'Routing', 'Operation',
|
'disable_create_buttons': ['BOM', 'Routing', 'Operation',
|
||||||
'Work Order', 'Job Card', 'Timesheet']
|
'Work Order', 'Job Card',]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2264,13 +2264,17 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
coupon_code: function() {
|
coupon_code: function() {
|
||||||
var me = this;
|
if (this.frm.doc.coupon_code || this.frm._last_coupon_code) {
|
||||||
frappe.run_serially([
|
// reset pricing rules if coupon code is set or is unset
|
||||||
() => this.frm.doc.ignore_pricing_rule=1,
|
const _ignore_pricing_rule = this.frm.doc.ignore_pricing_rule;
|
||||||
() => me.ignore_pricing_rule(),
|
return frappe.run_serially([
|
||||||
() => this.frm.doc.ignore_pricing_rule=0,
|
() => this.frm.doc.ignore_pricing_rule=1,
|
||||||
() => me.apply_pricing_rule()
|
() => this.frm.trigger('ignore_pricing_rule'),
|
||||||
]);
|
() => this.frm.doc.ignore_pricing_rule=_ignore_pricing_rule,
|
||||||
|
() => this.frm.trigger('apply_pricing_rule'),
|
||||||
|
() => this.frm._last_coupon_code = this.frm.doc.coupon_code
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -23,9 +23,5 @@
|
|||||||
"StateCesAmt": "{item.state_cess_amount}",
|
"StateCesAmt": "{item.state_cess_amount}",
|
||||||
"StateCesNonAdvlAmt": "{item.state_cess_nadv_amount}",
|
"StateCesNonAdvlAmt": "{item.state_cess_nadv_amount}",
|
||||||
"OthChrg": "{item.other_charges}",
|
"OthChrg": "{item.other_charges}",
|
||||||
"TotItemVal": "{item.total_value}",
|
"TotItemVal": "{item.total_value}"
|
||||||
"BchDtls": {{
|
|
||||||
"Nm": "{item.batch_no}",
|
|
||||||
"ExpDt": "{item.batch_expiry_date}"
|
|
||||||
}}
|
|
||||||
}}
|
}}
|
||||||
@@ -215,8 +215,6 @@ def get_item_list(invoice):
|
|||||||
item.taxable_value = abs(item.taxable_value)
|
item.taxable_value = abs(item.taxable_value)
|
||||||
item.discount_amount = 0
|
item.discount_amount = 0
|
||||||
|
|
||||||
item.batch_expiry_date = frappe.db.get_value('Batch', d.batch_no, 'expiry_date') if d.batch_no else None
|
|
||||||
item.batch_expiry_date = format_date(item.batch_expiry_date, 'dd/mm/yyyy') if item.batch_expiry_date else None
|
|
||||||
item.is_service_item = 'Y' if item.gst_hsn_code and item.gst_hsn_code[:2] == "99" else 'N'
|
item.is_service_item = 'Y' if item.gst_hsn_code and item.gst_hsn_code[:2] == "99" else 'N'
|
||||||
item.serial_no = ""
|
item.serial_no = ""
|
||||||
|
|
||||||
|
|||||||
@@ -170,17 +170,20 @@ erpnext.PointOfSale.Payment = class {
|
|||||||
});
|
});
|
||||||
|
|
||||||
frappe.ui.form.on('POS Invoice', 'coupon_code', (frm) => {
|
frappe.ui.form.on('POS Invoice', 'coupon_code', (frm) => {
|
||||||
if (!frm.doc.ignore_pricing_rule) {
|
if (!frm.doc.ignore_pricing_rule && frm.doc.coupon_code) {
|
||||||
if (frm.doc.coupon_code) {
|
frappe.run_serially([
|
||||||
frappe.run_serially([
|
() => frm.doc.ignore_pricing_rule=1,
|
||||||
() => frm.doc.ignore_pricing_rule=1,
|
() => frm.trigger('ignore_pricing_rule'),
|
||||||
() => frm.trigger('ignore_pricing_rule'),
|
() => frm.doc.ignore_pricing_rule=0,
|
||||||
() => frm.doc.ignore_pricing_rule=0,
|
() => frm.trigger('apply_pricing_rule'),
|
||||||
() => frm.trigger('apply_pricing_rule'),
|
() => frm.save(),
|
||||||
() => frm.save(),
|
() => this.update_totals_section(frm.doc)
|
||||||
() => this.update_totals_section(frm.doc)
|
]);
|
||||||
]);
|
} else if (frm.doc.ignore_pricing_rule && frm.doc.coupon_code) {
|
||||||
}
|
frappe.show_alert({
|
||||||
|
message: __("Ignore Pricing Rule is enabled. Cannot apply coupon code."),
|
||||||
|
indicator: "orange"
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -244,7 +244,7 @@
|
|||||||
"idx": 1,
|
"idx": 1,
|
||||||
"is_tree": 1,
|
"is_tree": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2021-12-03 04:40:06.414630",
|
"modified": "2022-03-01 02:37:48.034944",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Stock",
|
"module": "Stock",
|
||||||
"name": "Warehouse",
|
"name": "Warehouse",
|
||||||
@@ -301,5 +301,7 @@
|
|||||||
"show_name_in_global_search": 1,
|
"show_name_in_global_search": 1,
|
||||||
"sort_field": "modified",
|
"sort_field": "modified",
|
||||||
"sort_order": "DESC",
|
"sort_order": "DESC",
|
||||||
"title_field": "warehouse_name"
|
"states": [],
|
||||||
|
"title_field": "warehouse_name",
|
||||||
|
"track_changes": 1
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user