Merge branch 'hotfix'
This commit is contained in:
commit
8f29159fb7
@ -5,7 +5,7 @@ import frappe
|
||||
from erpnext.hooks import regional_overrides
|
||||
from frappe.utils import getdate
|
||||
|
||||
__version__ = '10.1.23'
|
||||
__version__ = '10.1.24'
|
||||
|
||||
def get_default_company(user=None):
|
||||
'''Get default company for user'''
|
||||
|
@ -71,7 +71,7 @@ frappe.treeview_settings["Account"] = {
|
||||
|
||||
// financial statements
|
||||
for (let report of ['Trial Balance', 'General Ledger', 'Balance Sheet',
|
||||
'Profit and Loss', 'Cash Flow Statement', 'Accounts Payable', 'Accounts Receivable']) {
|
||||
'Profit and Loss Statement', 'Cash Flow Statement', 'Accounts Payable', 'Accounts Receivable']) {
|
||||
treeview.page.add_inner_button(__(report), function() {
|
||||
frappe.set_route('query-report', report, {company: get_company()});
|
||||
}, __('Financial Statements'));
|
||||
|
@ -165,7 +165,7 @@ def build_account_tree(tree, parent, all_accounts):
|
||||
tree[child.account_name] = {}
|
||||
|
||||
# assign account_type and root_type
|
||||
if child.account_type:
|
||||
if child.account_number:
|
||||
tree[child.account_name]["account_number"] = child.account_number
|
||||
if child.account_type:
|
||||
tree[child.account_name]["account_type"] = child.account_type
|
||||
@ -175,4 +175,4 @@ def build_account_tree(tree, parent, all_accounts):
|
||||
tree[child.account_name]["root_type"] = child.root_type
|
||||
|
||||
# call recursively to build a subtree for current account
|
||||
build_account_tree(tree[child.account_name], child, all_accounts)
|
||||
build_account_tree(tree[child.account_name], child, all_accounts)
|
||||
|
@ -29,11 +29,11 @@ def create_or_update_cheque_print_format(template_name):
|
||||
cheque_print.html = """
|
||||
<div style="position: relative; top:%(starting_position_from_top_edge)scm">
|
||||
<div style="width:%(cheque_width)scm;height:%(cheque_height)scm;">
|
||||
<span style="top: {{ %(acc_pay_dist_from_top_edge)s }}cm; left: {{ %(acc_pay_dist_from_left_edge)s }}cm;
|
||||
<span style="top:%(acc_pay_dist_from_top_edge)scm; left:%(acc_pay_dist_from_left_edge)scm;
|
||||
border-bottom: solid 1px;border-top:solid 1px; position: absolute;">
|
||||
%(message_to_show)s
|
||||
</span>
|
||||
<span style="top:%(date_dist_from_top_edge)s cm; left:%(date_dist_from_left_edge)scm;
|
||||
<span style="top:%(date_dist_from_top_edge)scm; left:%(date_dist_from_left_edge)scm;
|
||||
position: absolute;">
|
||||
{{ frappe.utils.formatdate(doc.reference_date) or '' }}
|
||||
</span>
|
||||
|
@ -82,36 +82,39 @@ frappe.ui.form.on("Student Group", {
|
||||
max_roll_no = d.group_roll_number;
|
||||
}
|
||||
});
|
||||
frappe.call({
|
||||
method: "erpnext.education.doctype.student_group.student_group.get_students",
|
||||
args: {
|
||||
"academic_year": frm.doc.academic_year,
|
||||
"academic_term": frm.doc.academic_term,
|
||||
"group_based_on": frm.doc.group_based_on,
|
||||
"program": frm.doc.program,
|
||||
"batch" : frm.doc.batch,
|
||||
"course": frm.doc.course
|
||||
},
|
||||
callback: function(r) {
|
||||
if(r.message) {
|
||||
$.each(r.message, function(i, d) {
|
||||
if(!in_list(student_list, d.student)) {
|
||||
var s = frm.add_child("students");
|
||||
s.student = d.student;
|
||||
s.student_name = d.student_name;
|
||||
if (d.active === 0) {
|
||||
s.active = 0;
|
||||
|
||||
if(frm.doc.academic_year) {
|
||||
frappe.call({
|
||||
method: "erpnext.education.doctype.student_group.student_group.get_students",
|
||||
args: {
|
||||
"academic_year": frm.doc.academic_year,
|
||||
"academic_term": frm.doc.academic_term,
|
||||
"group_based_on": frm.doc.group_based_on,
|
||||
"program": frm.doc.program,
|
||||
"batch" : frm.doc.batch,
|
||||
"course": frm.doc.course
|
||||
},
|
||||
callback: function(r) {
|
||||
if(r.message) {
|
||||
$.each(r.message, function(i, d) {
|
||||
if(!in_list(student_list, d.student)) {
|
||||
var s = frm.add_child("students");
|
||||
s.student = d.student;
|
||||
s.student_name = d.student_name;
|
||||
if (d.active === 0) {
|
||||
s.active = 0;
|
||||
}
|
||||
s.group_roll_number = ++max_roll_no;
|
||||
}
|
||||
s.group_roll_number = ++max_roll_no;
|
||||
}
|
||||
});
|
||||
refresh_field("students");
|
||||
frm.save();
|
||||
} else {
|
||||
frappe.msgprint(__("Student Group is already updated."))
|
||||
});
|
||||
refresh_field("students");
|
||||
frm.save();
|
||||
} else {
|
||||
frappe.msgprint(__("Student Group is already updated."))
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
} else {
|
||||
frappe.msgprint(__("Select students manually for the Activity based Group"));
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
|
||||
frappe.views.calendar["Patient Appointment"] = {
|
||||
field_map: {
|
||||
"start": "start",
|
||||
"end": "end",
|
||||
"start": "appointment_date",
|
||||
"end": "appointment_datetime",
|
||||
"id": "name",
|
||||
"title": "patient",
|
||||
"allDay": "allDay"
|
||||
|
@ -3,8 +3,8 @@
|
||||
|
||||
frappe.views.calendar["Holiday List"] = {
|
||||
field_map: {
|
||||
"start": "holiday_date",
|
||||
"end": "holiday_date",
|
||||
"start": "from_date",
|
||||
"end": "to_date",
|
||||
"id": "name",
|
||||
"title": "description",
|
||||
"allDay": "allDay"
|
||||
|
@ -774,7 +774,7 @@ class POSCart {
|
||||
});
|
||||
this.numpad.reset_value();
|
||||
} else {
|
||||
const item_code = this.selected_item.attr('data-item-code');
|
||||
const item_code = unescape(this.selected_item.attr('data-item-code'));
|
||||
const field = this.selected_item.active_field;
|
||||
const value = this.numpad.get_value();
|
||||
|
||||
@ -819,7 +819,7 @@ class POSCart {
|
||||
}
|
||||
|
||||
update_item(item) {
|
||||
const $item = this.$cart_items.find(`[data-item-code="${item.item_code}"]`);
|
||||
const $item = this.$cart_items.find(`[data-item-code="${escape(item.item_code)}"]`);
|
||||
|
||||
if(item.qty > 0) {
|
||||
const is_stock_item = this.get_item_details(item.item_code).is_stock_item;
|
||||
@ -841,7 +841,7 @@ class POSCart {
|
||||
const rate = format_currency(item.rate, this.frm.doc.currency);
|
||||
const indicator_class = (!is_stock_item || item.actual_qty >= item.qty) ? 'green' : 'red';
|
||||
return `
|
||||
<div class="list-item indicator ${indicator_class}" data-item-code="${item.item_code}" title="Item: ${item.item_name} Available Qty: ${item.actual_qty}">
|
||||
<div class="list-item indicator ${indicator_class}" data-item-code="${escape(item.item_code)}" title="Item: ${item.item_name} Available Qty: ${item.actual_qty}">
|
||||
<div class="item-name list-item__content list-item__content--flex-1.5 ellipsis">
|
||||
${item.item_name}
|
||||
</div>
|
||||
@ -883,18 +883,18 @@ class POSCart {
|
||||
}
|
||||
|
||||
exists(item_code) {
|
||||
let $item = this.$cart_items.find(`[data-item-code="${item_code}"]`);
|
||||
let $item = this.$cart_items.find(`[data-item-code="${escape(item_code)}"]`);
|
||||
return $item.length > 0;
|
||||
}
|
||||
|
||||
highlight_item(item_code) {
|
||||
const $item = this.$cart_items.find(`[data-item-code="${item_code}"]`);
|
||||
const $item = this.$cart_items.find(`[data-item-code="${escape(item_code)}"]`);
|
||||
$item.addClass('highlight');
|
||||
setTimeout(() => $item.removeClass('highlight'), 1000);
|
||||
}
|
||||
|
||||
scroll_to_item(item_code) {
|
||||
const $item = this.$cart_items.find(`[data-item-code="${item_code}"]`);
|
||||
const $item = this.$cart_items.find(`[data-item-code="${escape(item_code)}"]`);
|
||||
if ($item.length === 0) return;
|
||||
const scrollTop = $item.offset().top - this.$cart_items.offset().top + this.$cart_items.scrollTop();
|
||||
this.$cart_items.animate({ scrollTop });
|
||||
@ -909,7 +909,7 @@ class POSCart {
|
||||
'[data-action="increment"], [data-action="decrement"]', function() {
|
||||
const $btn = $(this);
|
||||
const $item = $btn.closest('.list-item[data-item-code]');
|
||||
const item_code = $item.attr('data-item-code');
|
||||
const item_code = unescape($item.attr('data-item-code'));
|
||||
const action = $btn.attr('data-action');
|
||||
|
||||
if(action === 'increment') {
|
||||
@ -932,7 +932,7 @@ class POSCart {
|
||||
this.$cart_items.on('change', '.quantity input', function() {
|
||||
const $input = $(this);
|
||||
const $item = $input.closest('.list-item[data-item-code]');
|
||||
const item_code = $item.attr('data-item-code');
|
||||
const item_code = unescape($item.attr('data-item-code'));
|
||||
events.on_field_change(item_code, 'qty', flt($input.val()));
|
||||
});
|
||||
|
||||
@ -1200,7 +1200,7 @@ class POSItems {
|
||||
var me = this;
|
||||
this.wrapper.on('click', '.pos-item-wrapper', function() {
|
||||
const $item = $(this);
|
||||
const item_code = $item.attr('data-item-code');
|
||||
const item_code = unescape($item.attr('data-item-code'));
|
||||
me.events.update_cart(item_code, 'qty', '+1');
|
||||
});
|
||||
}
|
||||
@ -1226,7 +1226,7 @@ class POSItems {
|
||||
const item_title = item_name || item_code;
|
||||
|
||||
const template = `
|
||||
<div class="pos-item-wrapper image-view-item" data-item-code="${item_code}">
|
||||
<div class="pos-item-wrapper image-view-item" data-item-code="${escape(item_code)}">
|
||||
<div class="image-view-header">
|
||||
<div>
|
||||
<a class="grey list-id" data-name="${item_code}" title="${item_title}">
|
||||
|
@ -200,13 +200,14 @@ def get_item_details(items, sle, filters):
|
||||
item_details = {}
|
||||
if not items:
|
||||
items = list(set([d.item_code for d in sle]))
|
||||
|
||||
for item in frappe.db.sql("""
|
||||
select name, item_name, description, item_group, brand, stock_uom
|
||||
from `tabItem`
|
||||
where name in ({0})
|
||||
""".format(', '.join(['"' + frappe.db.escape(i, percent=False) + '"' for i in items])), as_dict=1):
|
||||
item_details.setdefault(item.name, item)
|
||||
|
||||
if items:
|
||||
for item in frappe.db.sql("""
|
||||
select name, item_name, description, item_group, brand, stock_uom
|
||||
from `tabItem`
|
||||
where name in ({0})
|
||||
""".format(', '.join(['"' + frappe.db.escape(i, percent=False) + '"' for i in items])), as_dict=1):
|
||||
item_details.setdefault(item.name, item)
|
||||
|
||||
if filters.get('show_variant_attributes', 0) == 1:
|
||||
variant_values = get_variant_values_for(item_details.keys())
|
||||
@ -215,11 +216,14 @@ def get_item_details(items, sle, filters):
|
||||
return item_details
|
||||
|
||||
def get_item_reorder_details(items):
|
||||
item_reorder_details = frappe.db.sql("""
|
||||
select parent, warehouse, warehouse_reorder_qty, warehouse_reorder_level
|
||||
from `tabItem Reorder`
|
||||
where parent in ({0})
|
||||
""".format(', '.join(['"' + frappe.db.escape(i, percent=False) + '"' for i in items])), as_dict=1)
|
||||
item_reorder_details = frappe._dict()
|
||||
|
||||
if items:
|
||||
item_reorder_details = frappe.db.sql("""
|
||||
select parent, warehouse, warehouse_reorder_qty, warehouse_reorder_level
|
||||
from `tabItem Reorder`
|
||||
where parent in ({0})
|
||||
""".format(', '.join(['"' + frappe.db.escape(i, percent=False) + '"' for i in items])), as_dict=1)
|
||||
|
||||
return dict((d.parent + d.warehouse, d) for d in item_reorder_details)
|
||||
|
||||
|
@ -93,11 +93,14 @@ def get_item_details(items, sl_entries):
|
||||
if not items:
|
||||
items = list(set([d.item_code for d in sl_entries]))
|
||||
|
||||
if not items:
|
||||
return item_details
|
||||
|
||||
for item in frappe.db.sql("""
|
||||
select name, item_name, description, item_group, brand, stock_uom
|
||||
from `tabItem`
|
||||
where name in ({0})
|
||||
""".format(', '.join(['"' + frappe.db.escape(i,percent=False) + '"' for i in items])), as_dict=1):
|
||||
""".format(', '.join(['"' + frappe.db.escape(i,percent=False) + '"' for i in items])), as_dict=1, debug=1):
|
||||
item_details.setdefault(item.name, item)
|
||||
|
||||
return item_details
|
||||
|
@ -24,7 +24,7 @@ frappe.Leaderboard = Class.extend({
|
||||
"Item": ["total_sales_amount", "total_qty_sold", "total_purchase_amount",
|
||||
"total_qty_purchased", "available_stock_qty", "available_stock_value"],
|
||||
"Supplier": ["total_purchase_amount", "total_qty_purchased", "outstanding_amount"],
|
||||
"Sales Partner": ["total_sales_amount", "total_commision"],
|
||||
"Sales Partner": ["total_sales_amount", "total_commission"],
|
||||
"Sales Person": ["total_sales_amount"],
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user