From e55831a89c7a5baaa214eebc15a0ac2abce76f8f Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 26 Feb 2018 11:38:40 +0530 Subject: [PATCH 01/50] Projected Qty in Auto reorder email --- erpnext/templates/emails/reorder_item.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/templates/emails/reorder_item.html b/erpnext/templates/emails/reorder_item.html index c1aa897038..05af3167ba 100644 --- a/erpnext/templates/emails/reorder_item.html +++ b/erpnext/templates/emails/reorder_item.html @@ -9,7 +9,7 @@ {{ _("Warehouse") }} {{ _("Quantity") }} {{ _("UOM") }} - {{ _("Balance Qty") }} + {{ _("Projected Qty") }} @@ -22,7 +22,7 @@ {{ item.warehouse }} {{ item.qty }} {{ item.uom }} - {{ item.balance_qty }} + {{ frappe.utils.flt(item.projected_qty) + frappe.utils.flt(item.qty) }} {%- endfor %} From 127c61e93007461c138afb4f689df74dc4f73a3a Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 26 Feb 2018 12:43:17 +0530 Subject: [PATCH 02/50] Fixed logic in itemwise recommended reorder level --- .../itemwise_recommended_reorder_level.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py b/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py index fdf4442797..e1249ea3cd 100644 --- a/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py +++ b/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py @@ -24,9 +24,8 @@ def execute(filters=None): data = [] for item in items: - - total_outgoing = consumed_item_map.get(item.name, 0)+delivered_item_map.get(item.name,0) - avg_daily_outgoing = flt(total_outgoing/diff, float_preceision) + total_outgoing = consumed_item_map.get(item.name, 0) + delivered_item_map.get(item.name,0) + avg_daily_outgoing = flt(total_outgoing / diff, float_preceision) reorder_level = (avg_daily_outgoing * flt(item.lead_time_days)) + flt(item.safety_stock) data.append([item.name, item.item_name, item.description, item.safety_stock, item.lead_time_days, @@ -45,12 +44,11 @@ def get_columns(): def get_item_info(): return frappe.db.sql("""select name, item_name, description, safety_stock, - lead_time_days from tabItem""", as_dict=1) + lead_time_days from tabItem""", as_dict=1) def get_consumed_items(condition): - cn_items = frappe.db.sql("""select se_item.item_code, - sum(se_item.actual_qty) as 'consume_qty' + sum(se_item.transfer_qty) as 'consume_qty' from `tabStock Entry` se, `tabStock Entry Detail` se_item where se.name = se_item.parent and se.docstatus = 1 and ifnull(se_item.t_warehouse, '') = '' %s @@ -63,17 +61,16 @@ def get_consumed_items(condition): return cn_items_map def get_delivered_items(condition): - - dn_items = frappe.db.sql("""select dn_item.item_code, sum(dn_item.qty) as dn_qty + dn_items = frappe.db.sql("""select dn_item.item_code, sum(dn_item.stock_qty) as dn_qty from `tabDelivery Note` dn, `tabDelivery Note Item` dn_item where dn.name = dn_item.parent and dn.docstatus = 1 %s group by dn_item.item_code""" % (condition), as_dict=1) - si_items = frappe.db.sql("""select si_item.item_name, sum(si_item.qty) as si_qty + si_items = frappe.db.sql("""select si_item.item_code, sum(si_item.stock_qty) as si_qty from `tabSales Invoice` si, `tabSales Invoice Item` si_item where si.name = si_item.parent and si.docstatus = 1 and - si.update_stock = 1 and si.is_pos = 1 %s - group by si_item.item_name""" % (condition), as_dict=1) + si.update_stock = 1 %s + group by si_item.item_code""" % (condition), as_dict=1) dn_item_map = {} for item in dn_items: From 3edc1019577d9b1402ea633f1a71b2501aaae845 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Mon, 26 Feb 2018 13:04:26 +0530 Subject: [PATCH 03/50] [Fix] POS discount issue --- .../page/point_of_sale/point_of_sale.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.js b/erpnext/selling/page/point_of_sale/point_of_sale.js index d1f6b7a7c2..0fa082fddc 100644 --- a/erpnext/selling/page/point_of_sale/point_of_sale.js +++ b/erpnext/selling/page/point_of_sale/point_of_sale.js @@ -257,12 +257,16 @@ erpnext.pos.PointOfSale = class PointOfSale { frappe.msgprint(__("Quantity must be positive")); value = item.qty; } else { - item[field] = value; - if (field == "serial_no" && value) { - let serial_nos = value.split("\n"); - item["qty"] = serial_nos.filter(d => { - return d!==""; - }).length; + if (in_list(["qty", "serial_no", "batch"], field)) { + item[field] = value; + if (field == "serial_no" && value) { + let serial_nos = value.split("\n"); + item["qty"] = serial_nos.filter(d => { + return d!==""; + }).length; + } + } else { + return frappe.model.set_value(item.doctype, item.name, field, value); } } @@ -1475,7 +1479,7 @@ class Payment { fieldname: p.mode_of_payment, default: p.amount, onchange: () => { - const value = this.dialog.get_value(this.fieldname); + const value = this.dialog.get_value(this.fieldname) || 0; me.update_payment_value(this.fieldname, value); } }; From 3799f8bec99d72e33223ce0cbcfc5f0d00678fae Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 26 Feb 2018 16:39:06 +0530 Subject: [PATCH 04/50] Don't validate serial nos while cancelling the transaction --- erpnext/stock/doctype/serial_no/serial_no.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py index 80c93ef434..7194ec1c70 100644 --- a/erpnext/stock/doctype/serial_no/serial_no.py +++ b/erpnext/stock/doctype/serial_no/serial_no.py @@ -187,7 +187,7 @@ def process_serial_no(sle): update_serial_nos(sle, item_det) def validate_serial_no(sle, item_det): - if item_det.has_serial_no==0: + if item_det.has_serial_no==0 and sle.is_cancelled == "No": if sle.serial_no: frappe.throw(_("Item {0} is not setup for Serial Nos. Column must be blank").format(sle.item_code), SerialNoNotRequiredError) From 51dfba749b385af8093bf920a64327e68c711cc2 Mon Sep 17 00:00:00 2001 From: Manas Solanki Date: Mon, 26 Feb 2018 14:03:37 +0530 Subject: [PATCH 05/50] filter students on basis of category and button to show fees --- .../doctype/fee_schedule/fee_schedule.js | 12 +++- .../doctype/fee_schedule/fee_schedule.json | 4 +- .../doctype/fee_schedule/fee_schedule.py | 62 +++++++++++-------- 3 files changed, 46 insertions(+), 32 deletions(-) diff --git a/erpnext/education/doctype/fee_schedule/fee_schedule.js b/erpnext/education/doctype/fee_schedule/fee_schedule.js index a36b9cbe29..c4fff77d89 100644 --- a/erpnext/education/doctype/fee_schedule/fee_schedule.js +++ b/erpnext/education/doctype/fee_schedule/fee_schedule.js @@ -38,9 +38,6 @@ frappe.ui.form.on('Fee Schedule', { if (data.reload && data.reload === 1) { frm.reload_doc(); } - if (data.progress && data.progress === "0") { - frappe.msgprint(__("Fee records will be created in the background. In case of any error the error message will be updated in the Schedule.")); - } if (data.progress) { let progress_bar = $(cur_frm.dashboard.progress_area).find(".progress-bar"); if (progress_bar) { @@ -74,6 +71,15 @@ frappe.ui.form.on('Fee Schedule', { }); }, "fa fa-play", "btn-success"); } + if (frm.doc.fee_creation_status == "Successful") { + frm.add_custom_button(__("View Fees Records"), function() { + frappe.route_options = { + fee_schedule: frm.doc.name + }; + frappe.set_route("List", "Fees"); + }); + } + }, fee_structure: function(frm) { diff --git a/erpnext/education/doctype/fee_schedule/fee_schedule.json b/erpnext/education/doctype/fee_schedule/fee_schedule.json index a77cc595ff..5aae690668 100644 --- a/erpnext/education/doctype/fee_schedule/fee_schedule.json +++ b/erpnext/education/doctype/fee_schedule/fee_schedule.json @@ -4,7 +4,7 @@ "allow_import": 1, "allow_rename": 0, "autoname": "naming_series:", - "beta": 1, + "beta": 0, "creation": "2017-07-18 15:21:21.527136", "custom": 0, "docstatus": 0, @@ -1029,7 +1029,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-12-04 13:08:27.727709", + "modified": "2018-02-26 13:59:36.560780", "modified_by": "Administrator", "module": "Education", "name": "Fee Schedule", diff --git a/erpnext/education/doctype/fee_schedule/fee_schedule.py b/erpnext/education/doctype/fee_schedule/fee_schedule.py index 59acf462d9..b6df8c58d8 100644 --- a/erpnext/education/doctype/fee_schedule/fee_schedule.py +++ b/erpnext/education/doctype/fee_schedule/fee_schedule.py @@ -56,8 +56,15 @@ class FeeSchedule(Document): self.db_set("fee_creation_status", "In Process") frappe.publish_realtime("fee_schedule_progress", {"progress": "0", "reload": 1}, user=frappe.session.user) - enqueue(generate_fee, queue='default', timeout=6000, event='generate_fee', - fee_schedule=self.name) + + total_records = sum([int(d.total_students) for d in self.student_groups]) + if total_records > 10: + frappe.msgprint(_('''Fee records will be created in the background. + In case of any error the error message will be updated in the Schedule.''')) + enqueue(generate_fee, queue='default', timeout=6000, event='generate_fee', + fee_schedule=self.name) + else: + generate_fee(self.name) def generate_fee(fee_schedule): doc = frappe.get_doc("Fee Schedule", fee_schedule) @@ -69,10 +76,7 @@ def generate_fee(fee_schedule): frappe.throw(_("Please setup Students under Student Groups")) for d in doc.student_groups: - students = frappe.db.sql(""" select sg.program, sg.batch, sgs.student, sgs.student_name - from `tabStudent Group` sg, `tabStudent Group Student` sgs - where sg.name=%s and sg.name=sgs.parent and sgs.active=1""", d.student_group, as_dict=1) - + students = get_students(d.student_group, doc.academic_year, doc.academic_term, doc.student_category) for student in students: try: fees_doc = get_mapped_doc("Fee Schedule", fee_schedule, { @@ -86,7 +90,7 @@ def generate_fee(fee_schedule): fees_doc.student = student.student fees_doc.student_name = student.student_name fees_doc.program = student.program - fees_doc.student_batch = student.batch + fees_doc.student_batch = student.student_batch_name fees_doc.send_payment_request = doc.send_email fees_doc.save() fees_doc.submit() @@ -110,6 +114,30 @@ def generate_fee(fee_schedule): {"progress": "100", "reload": 1}, user=frappe.session.user) +def get_students(student_group, academic_year, academic_term=None, student_category=None): + conditions = "" + if student_category: + conditions = " and pe.student_category='{}'".format(frappe.db.escape(student_category)) + if academic_term: + conditions = " and pe.academic_term='{}'".format(frappe.db.escape(academic_term)) + + students = frappe.db.sql(""" + select pe.student, pe.student_name, pe.program, pe.student_batch_name + from `tabStudent Group Student` sgs, `tabProgram Enrollment` pe + where + pe.student = sgs.student and pe.academic_year = %s + and sgs.parent = %s and sgs.active = 1 + {conditions} + """.format(conditions=conditions), (academic_year, student_group), as_dict=1) + return students + + +@frappe.whitelist() +def get_total_students(student_group, academic_year, academic_term=None, student_category=None): + total_students = get_students(student_group, academic_year, academic_term, student_category) + return len(total_students) + + @frappe.whitelist() def get_fee_structure(source_name,target_doc=None): fee_request = get_mapped_doc("Fee Structure", source_name, @@ -117,23 +145,3 @@ def get_fee_structure(source_name,target_doc=None): "doctype": "Fee Schedule" }}, ignore_permissions=True) return fee_request - -@frappe.whitelist() -def get_total_students(student_group, academic_year, academic_term=None, student_category=None): - conditions = "" - if student_category: - conditions = " and pe.student_category='{}'".format(frappe.db.escape(student_category)) - if academic_term: - conditions = " and pe.academic_term='{}'".format(frappe.db.escape(academic_term)) - - - return frappe.db.sql(""" - select count(pe.name) - from `tabStudent Group Student` sgs, `tabProgram Enrollment` pe - where - pe.student = sgs.student - and pe.academic_year = %s - and sgs.parent = %s - and sgs.active = 1 - {conditions} - """.format(conditions=conditions), (academic_year, student_group))[0][0] From 91fc1a8fbeeac698f41bb2cbcf43df9f695b8de7 Mon Sep 17 00:00:00 2001 From: Zarrar Date: Thu, 22 Feb 2018 10:57:49 +0530 Subject: [PATCH 06/50] Update Territory & Customer Group across all transaction (#13004) * added method for update query based on changes * patch added * updated function, moved util function --- erpnext/patches.txt | 1 + .../v10_0/update_territory_and_customer_group.py | 13 +++++++++++++ erpnext/selling/doctype/customer/customer.py | 16 ++++++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 erpnext/patches/v10_0/update_territory_and_customer_group.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index e21da22691..df795fcc7a 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -490,3 +490,4 @@ erpnext.patches.v10_0.set_default_payment_terms_based_on_company erpnext.patches.v10_0.update_sales_order_link_to_purchase_order erpnext.patches.v10_0.added_extra_gst_custom_field_in_gstr2 #2018-02-13 erpnext.patches.v10_0.set_b2c_limit +erpnext.patches.v10_0.update_territory_and_customer_group diff --git a/erpnext/patches/v10_0/update_territory_and_customer_group.py b/erpnext/patches/v10_0/update_territory_and_customer_group.py new file mode 100644 index 0000000000..52a6db2b73 --- /dev/null +++ b/erpnext/patches/v10_0/update_territory_and_customer_group.py @@ -0,0 +1,13 @@ +import frappe +from frappe.model.rename_doc import update_linked_doctypes + +def execute(): + customers = frappe.get_all('Customer') + for customer in customers: + # Update Territory across all transaction + terr = frappe.get_value('Customer', customer, 'territory') + update_linked_doctypes("Customer", "Territory", customer.name, terr) + + # Update Territory across all transaction + cust_group = frappe.get_value('Customer', customer, 'customer_group') + update_linked_doctypes("Customer", "Customer Group", customer.name, cust_group) diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py index 2284f85374..c550d06bbc 100644 --- a/erpnext/selling/doctype/customer/customer.py +++ b/erpnext/selling/doctype/customer/customer.py @@ -11,6 +11,7 @@ from frappe.desk.reportview import build_match_conditions from erpnext.utilities.transaction_base import TransactionBase from erpnext.accounts.party import validate_party_accounts, get_dashboard_info, get_timeline_data # keep this from frappe.contacts.address_and_contact import load_address_and_contact, delete_contact_and_address +from frappe.model.rename_doc import update_linked_doctypes class Customer(TransactionBase): def get_feed(self): @@ -53,6 +54,16 @@ class Customer(TransactionBase): self.flags.old_lead = self.lead_name validate_party_accounts(self) self.validate_credit_limit_on_change() + self.check_customer_group_or_territory_change() + + def check_customer_group_or_territory_change(self): + frappe.flags.customer_group, frappe.flags.territory = False, False + + if not self.get('__islocal'): + if self.customer_group != frappe.db.get_value('Customer', self.name, 'customer_group'): + frappe.flags.customer_group = True + if self.territory != frappe.db.get_value('Customer', self.name, 'territory'): + frappe.flags.territory = True def on_update(self): self.validate_name_with_customer_group() @@ -65,6 +76,11 @@ class Customer(TransactionBase): if self.flags.is_new_doc: self.create_lead_address_contact() + if frappe.flags.territory: + update_linked_doctypes("Customer", "Territory", self.name, self.territory) + if frappe.flags.customer_group: + update_linked_doctypes("Customer", "Customer Group", self.name, self.customer_group) + def create_primary_contact(self): if not self.customer_primary_contact and not self.lead_name: if self.mobile_no or self.email_id: From 96002c28bd20f257b42c30588360804d3fabb80e Mon Sep 17 00:00:00 2001 From: Zarrar Date: Fri, 23 Feb 2018 17:41:32 +0530 Subject: [PATCH 07/50] optimize patch for faster execution (#13068) --- .../update_territory_and_customer_group.py | 14 +++++++------- erpnext/selling/doctype/customer/customer.py | 18 ++++++++++-------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/erpnext/patches/v10_0/update_territory_and_customer_group.py b/erpnext/patches/v10_0/update_territory_and_customer_group.py index 52a6db2b73..56152f928c 100644 --- a/erpnext/patches/v10_0/update_territory_and_customer_group.py +++ b/erpnext/patches/v10_0/update_territory_and_customer_group.py @@ -1,13 +1,13 @@ import frappe -from frappe.model.rename_doc import update_linked_doctypes +from frappe.model.rename_doc import update_linked_doctypes, get_fetch_fields def execute(): - customers = frappe.get_all('Customer') + customers = frappe.get_all('Customer', fields=["name", "territory", "customer_group"]) + territory_fetch = get_fetch_fields('Customer', 'Territory') + customer_group_fetch = get_fetch_fields('Customer', 'Customer Group') + for customer in customers: # Update Territory across all transaction - terr = frappe.get_value('Customer', customer, 'territory') - update_linked_doctypes("Customer", "Territory", customer.name, terr) - + update_linked_doctypes(territory_fetch, customer.name, customer.territory_value) # Update Territory across all transaction - cust_group = frappe.get_value('Customer', customer, 'customer_group') - update_linked_doctypes("Customer", "Customer Group", customer.name, cust_group) + update_linked_doctypes(customer_group_fetch, customer.name, customer.customer_group_value) diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py index c550d06bbc..761c017209 100644 --- a/erpnext/selling/doctype/customer/customer.py +++ b/erpnext/selling/doctype/customer/customer.py @@ -11,7 +11,7 @@ from frappe.desk.reportview import build_match_conditions from erpnext.utilities.transaction_base import TransactionBase from erpnext.accounts.party import validate_party_accounts, get_dashboard_info, get_timeline_data # keep this from frappe.contacts.address_and_contact import load_address_and_contact, delete_contact_and_address -from frappe.model.rename_doc import update_linked_doctypes +from frappe.model.rename_doc import update_linked_doctypes, get_fetch_fields class Customer(TransactionBase): def get_feed(self): @@ -57,13 +57,13 @@ class Customer(TransactionBase): self.check_customer_group_or_territory_change() def check_customer_group_or_territory_change(self): - frappe.flags.customer_group, frappe.flags.territory = False, False + frappe.flags.customer_group_changed, frappe.flags.territory_changed = False, False if not self.get('__islocal'): if self.customer_group != frappe.db.get_value('Customer', self.name, 'customer_group'): - frappe.flags.customer_group = True + frappe.flags.customer_group_changed = True if self.territory != frappe.db.get_value('Customer', self.name, 'territory'): - frappe.flags.territory = True + frappe.flags.territory_changed = True def on_update(self): self.validate_name_with_customer_group() @@ -76,10 +76,12 @@ class Customer(TransactionBase): if self.flags.is_new_doc: self.create_lead_address_contact() - if frappe.flags.territory: - update_linked_doctypes("Customer", "Territory", self.name, self.territory) - if frappe.flags.customer_group: - update_linked_doctypes("Customer", "Customer Group", self.name, self.customer_group) + if frappe.flags.territory_changed: + territory_fetch = get_fetch_fields('Customer', 'Territory') + update_linked_doctypes(territory_fetch, self.name, self.territory) + if frappe.flags.customer_group_changed: + customer_group_fetch = get_fetch_fields('Customer', 'Customer Group') + update_linked_doctypes(customer_group_fetch, self.name, self.customer_group) def create_primary_contact(self): if not self.customer_primary_contact and not self.lead_name: From 3b43c0d160f102944ef3bb657f12b194e3975502 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Sun, 25 Feb 2018 10:45:24 +0530 Subject: [PATCH 08/50] Update territory and customer_group patch optimization (#13076) * Update territory and customer_group patch optimization * Update update_territory_and_customer_group.py --- .../update_territory_and_customer_group.py | 39 +++++++++++++++---- erpnext/selling/doctype/customer/customer.py | 13 ++++--- 2 files changed, 39 insertions(+), 13 deletions(-) diff --git a/erpnext/patches/v10_0/update_territory_and_customer_group.py b/erpnext/patches/v10_0/update_territory_and_customer_group.py index 56152f928c..3889c737e0 100644 --- a/erpnext/patches/v10_0/update_territory_and_customer_group.py +++ b/erpnext/patches/v10_0/update_territory_and_customer_group.py @@ -1,13 +1,36 @@ import frappe -from frappe.model.rename_doc import update_linked_doctypes, get_fetch_fields +from frappe.model.rename_doc import get_fetch_fields def execute(): + ignore_doctypes = ["Lead", "Opportunity", "POS Profile", "Tax Rule", "Pricing Rule"] customers = frappe.get_all('Customer', fields=["name", "territory", "customer_group"]) - territory_fetch = get_fetch_fields('Customer', 'Territory') - customer_group_fetch = get_fetch_fields('Customer', 'Customer Group') - for customer in customers: - # Update Territory across all transaction - update_linked_doctypes(territory_fetch, customer.name, customer.territory_value) - # Update Territory across all transaction - update_linked_doctypes(customer_group_fetch, customer.name, customer.customer_group_value) + territory_fetch = get_fetch_fields('Customer', 'Territory', ignore_doctypes) + customer_group_fetch = get_fetch_fields('Customer', 'Customer Group', ignore_doctypes) + + batch_size = 1000 + for i in range(0, len(customers), batch_size): + batch_customers = customers[i:i + batch_size] + for source_fieldname, linked_doctypes_info in [["customer_group", customer_group_fetch], ["territory", territory_fetch]]: + for d in linked_doctypes_info: + when_then = [] + for customer in batch_customers: + when_then.append(''' + WHEN `{master_fieldname}` = "{docname}" and {linked_to_fieldname} != "{value}" + THEN "{value}" + '''.format( + master_fieldname=d["master_fieldname"], + linked_to_fieldname=d["linked_to_fieldname"], + docname=frappe.db.escape(customer.name).encode("utf-8"), + value=frappe.db.escape(customer.get(source_fieldname)).encode("utf-8"))) + + frappe.db.sql(""" + update + `tab{doctype}` + set + {linked_to_fieldname} = CASE {when_then_cond} ELSE `{linked_to_fieldname}` END + """.format( + doctype = d['doctype'], + when_then_cond=" ".join(when_then), + linked_to_fieldname=d.linked_to_fieldname + )) diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py index 761c017209..b84a952ece 100644 --- a/erpnext/selling/doctype/customer/customer.py +++ b/erpnext/selling/doctype/customer/customer.py @@ -11,7 +11,7 @@ from frappe.desk.reportview import build_match_conditions from erpnext.utilities.transaction_base import TransactionBase from erpnext.accounts.party import validate_party_accounts, get_dashboard_info, get_timeline_data # keep this from frappe.contacts.address_and_contact import load_address_and_contact, delete_contact_and_address -from frappe.model.rename_doc import update_linked_doctypes, get_fetch_fields +from frappe.model.rename_doc import update_linked_doctypes class Customer(TransactionBase): def get_feed(self): @@ -76,12 +76,15 @@ class Customer(TransactionBase): if self.flags.is_new_doc: self.create_lead_address_contact() + self.update_territory_and_customer_groups() + + def update_territory_and_customer_groups(self): + ignore_doctypes = ["Lead", "Opportunity", "POS Profile", "Tax Rule", "Pricing Rule"] if frappe.flags.territory_changed: - territory_fetch = get_fetch_fields('Customer', 'Territory') - update_linked_doctypes(territory_fetch, self.name, self.territory) + update_linked_doctypes('Customer', self.name, 'Territory', self.territory, ignore_doctypes) if frappe.flags.customer_group_changed: - customer_group_fetch = get_fetch_fields('Customer', 'Customer Group') - update_linked_doctypes(customer_group_fetch, self.name, self.customer_group) + update_linked_doctypes('Customer', self.name, 'Customer Group', + self.customer_group, ignore_doctypes) def create_primary_contact(self): if not self.customer_primary_contact and not self.lead_name: From a310cc715659ff7ca7b9d2cd95f702a0d151338a Mon Sep 17 00:00:00 2001 From: Shreya Shah Date: Wed, 28 Feb 2018 18:59:55 +0530 Subject: [PATCH 09/50] order by modified instead of item name (#13113) --- erpnext/setup/doctype/item_group/item_group.py | 2 +- erpnext/templates/pages/product_search.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/setup/doctype/item_group/item_group.py b/erpnext/setup/doctype/item_group/item_group.py index 14a478d7e4..0ff7c2b3aa 100644 --- a/erpnext/setup/doctype/item_group/item_group.py +++ b/erpnext/setup/doctype/item_group/item_group.py @@ -102,7 +102,7 @@ def get_product_list_for_group(product_group=None, start=0, limit=10, search=Non or I.name like %(search)s)""" search = "%" + cstr(search) + "%" - query += """order by I.weightage desc, in_stock desc, I.item_name limit %s, %s""" % (start, limit) + query += """order by I.weightage desc, in_stock desc, I.modified desc limit %s, %s""" % (start, limit) data = frappe.db.sql(query, {"product_group": product_group,"search": search, "today": nowdate()}, as_dict=1) diff --git a/erpnext/templates/pages/product_search.py b/erpnext/templates/pages/product_search.py index a872f19510..f2fd60024a 100644 --- a/erpnext/templates/pages/product_search.py +++ b/erpnext/templates/pages/product_search.py @@ -35,7 +35,7 @@ def get_product_list(search=None, start=0, limit=12): search = "%" + cstr(search) + "%" # order by - query += """ order by I.weightage desc, in_stock desc, I.item_name limit %s, %s""" % (cint(start), cint(limit)) + query += """ order by I.weightage desc, in_stock desc, I.modified desc limit %s, %s""" % (cint(start), cint(limit)) data = frappe.db.sql(query, { "search": search, From 332a17ee8668aec357b0977784ceb074264a28df Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Thu, 1 Mar 2018 10:28:04 +0530 Subject: [PATCH 10/50] [Fix] Test case for serial no (#13136) --- erpnext/stock/doctype/serial_no/serial_no.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py index 7194ec1c70..4c609df297 100644 --- a/erpnext/stock/doctype/serial_no/serial_no.py +++ b/erpnext/stock/doctype/serial_no/serial_no.py @@ -187,11 +187,11 @@ def process_serial_no(sle): update_serial_nos(sle, item_det) def validate_serial_no(sle, item_det): - if item_det.has_serial_no==0 and sle.is_cancelled == "No": + if item_det.has_serial_no==0: if sle.serial_no: frappe.throw(_("Item {0} is not setup for Serial Nos. Column must be blank").format(sle.item_code), SerialNoNotRequiredError) - else: + elif sle.is_cancelled == "No": if sle.serial_no: serial_nos = get_serial_nos(sle.serial_no) if cint(sle.actual_qty) != flt(sle.actual_qty): From a645f36b2ba2c5ceb170cc68d448e30a19a55c4b Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Thu, 1 Mar 2018 10:31:24 +0530 Subject: [PATCH 11/50] Get valuation rate from historical SLE even if it is zero (#13129) * Don't overwrite start and end date comes from payroll entry * Get valuation rate from historical SLE even if it is zero, if records exists * Valid till should be autoset if not any default value * Set status of expense claim based on is_paid check --- .../hr/doctype/expense_claim/expense_claim.py | 7 +++--- erpnext/hr/doctype/salary_slip/salary_slip.py | 7 +++--- .../selling/doctype/quotation/quotation.js | 2 +- erpnext/stock/stock_ledger.py | 24 +++++++++---------- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.py b/erpnext/hr/doctype/expense_claim/expense_claim.py index 9462211c09..d0c4a46e3e 100644 --- a/erpnext/hr/doctype/expense_claim/expense_claim.py +++ b/erpnext/hr/doctype/expense_claim/expense_claim.py @@ -45,10 +45,11 @@ class ExpenseClaim(AccountsController): }[cstr(self.docstatus or 0)] paid_amount = flt(self.total_amount_reimbursed) + flt(self.total_advance_amount) - if self.total_sanctioned_amount > 0 and self.total_sanctioned_amount == paid_amount\ + if (self.is_paid or (flt(self.total_sanctioned_amount) > 0 + and flt(self.total_sanctioned_amount) == paid_amount)) \ and self.docstatus == 1 and self.approval_status == 'Approved': - self.status = "Paid" - elif self.total_sanctioned_amount > 0 and self.docstatus == 1 and self.approval_status == 'Approved': + self.status = "Paid" + elif flt(self.total_sanctioned_amount) > 0 and self.docstatus == 1 and self.approval_status == 'Approved': self.status = "Unpaid" elif self.docstatus == 1 and self.approval_status == 'Rejected': self.status = 'Rejected' diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/erpnext/hr/doctype/salary_slip/salary_slip.py index a474569603..b9371e31fb 100644 --- a/erpnext/hr/doctype/salary_slip/salary_slip.py +++ b/erpnext/hr/doctype/salary_slip/salary_slip.py @@ -156,9 +156,10 @@ class SalarySlip(TransactionBase): }) def get_date_details(self): - date_details = get_start_end_dates(self.payroll_frequency, self.start_date or self.posting_date) - self.start_date = date_details.start_date - self.end_date = date_details.end_date + if not self.end_date: + date_details = get_start_end_dates(self.payroll_frequency, self.start_date or self.posting_date) + self.start_date = date_details.start_date + self.end_date = date_details.end_date def check_sal_struct(self, joining_date, relieving_date): cond = '' diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js index 84176426be..081d4dbe9a 100644 --- a/erpnext/selling/doctype/quotation/quotation.js +++ b/erpnext/selling/doctype/quotation/quotation.js @@ -41,7 +41,7 @@ erpnext.selling.QuotationController = erpnext.selling.SellingController.extend({ var me = this; - if (doc.__islocal) { + if (doc.__islocal && !doc.valid_till) { this.frm.set_value('valid_till', frappe.datetime.add_months(doc.transaction_date, 1)) } diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index 874a382192..db9c2a682f 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -452,22 +452,22 @@ def get_valuation_rate(item_code, warehouse, voucher_type, voucher_no, where item_code = %s and valuation_rate > 0 order by posting_date desc, posting_time desc, name desc limit 1""", item_code) - valuation_rate = flt(last_valuation_rate[0][0]) if last_valuation_rate else 0 + if last_valuation_rate: + return flt(last_valuation_rate[0][0]) # as there is previous records, it might come with zero rate + + # If negative stock allowed, and item delivered without any incoming entry, + # system does not found any SLE, then take valuation rate from Item + valuation_rate = frappe.db.get_value("Item", item_code, "valuation_rate") if not valuation_rate: - # If negative stock allowed, and item delivered without any incoming entry, - # syste does not found any SLE, then take valuation rate from Item - valuation_rate = frappe.db.get_value("Item", item_code, "valuation_rate") + # try Item Standard rate + valuation_rate = frappe.db.get_value("Item", item_code, "standard_rate") if not valuation_rate: - # try Item Standard rate - valuation_rate = frappe.db.get_value("Item", item_code, "standard_rate") - - if not valuation_rate: - # try in price list - valuation_rate = frappe.db.get_value('Item Price', - dict(item_code=item_code, buying=1, currency=currency), - 'price_list_rate') + # try in price list + valuation_rate = frappe.db.get_value('Item Price', + dict(item_code=item_code, buying=1, currency=currency), + 'price_list_rate') if not allow_zero_rate and not valuation_rate \ and cint(erpnext.is_perpetual_inventory_enabled(company)): From db9fa78ee86e43da115de41ccc6511bd0fd3e530 Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Thu, 1 Mar 2018 10:32:29 +0530 Subject: [PATCH 12/50] Do not validate payment schedule for POS (#13115) --- erpnext/controllers/accounts_controller.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 472a7a3fce..1af2fdd70d 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -666,6 +666,8 @@ class AccountsController(TransactionBase): self.remove(item) def set_payment_schedule(self): + if self.doctype == 'Sales Invoice' and self.is_pos: return + posting_date = self.get("bill_date") or self.get("posting_date") or self.get("transaction_date") date = self.get("due_date") due_date = date or posting_date @@ -695,6 +697,8 @@ class AccountsController(TransactionBase): dates = [] li = [] + if self.doctype == 'Sales Invoice' and self.is_pos: return + for d in self.get("payment_schedule"): if self.doctype == "Sales Order" and getdate(d.due_date) < getdate(self.transaction_date): frappe.throw(_("Row {0}: Due Date cannot be before posting date").format(d.idx)) @@ -708,6 +712,8 @@ class AccountsController(TransactionBase): .format(list=duplicates)) def validate_payment_schedule_amount(self): + if self.doctype == 'Sales Invoice' and self.is_pos: return + if self.get("payment_schedule"): total = 0 for d in self.get("payment_schedule"): From 502af4dd67da3a70db63e5f3c840c82f86cfe091 Mon Sep 17 00:00:00 2001 From: Zarrar Date: Thu, 1 Mar 2018 10:44:47 +0530 Subject: [PATCH 13/50] display image fnd description for root BOM also (#13099) --- erpnext/manufacturing/doctype/bom/bom_tree.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/erpnext/manufacturing/doctype/bom/bom_tree.js b/erpnext/manufacturing/doctype/bom/bom_tree.js index 4ec9bef998..185b9ed4bc 100644 --- a/erpnext/manufacturing/doctype/bom/bom_tree.js +++ b/erpnext/manufacturing/doctype/bom/bom_tree.js @@ -60,5 +60,14 @@ frappe.treeview_settings["BOM"] = { condition: 'frappe.boot.user.can_create.indexOf("BOM") !== -1' } ], + onrender: function(node) { + if(node.is_root && node.data.value!="BOM") { + frappe.model.with_doc("BOM", node.data.value, function() { + var bom = frappe.model.get_doc("BOM", node.data.value); + node.data.image = bom.image || ""; + node.data.description = bom.description || ""; + }); + } + }, view_template: 'bom_item_preview' } \ No newline at end of file From f68dc69078cc51c5655d49ea56717bdfbf1a8a74 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Thu, 1 Mar 2018 10:54:24 +0530 Subject: [PATCH 14/50] Set auto created serial nos in incoming transactions in case of multi UOM (#13112) * Create user from Employee * Set auto created serial nos in incoming transactions in case of multi uom --- erpnext/hr/doctype/employee/employee.js | 2 +- erpnext/hr/doctype/employee/employee.py | 5 +- erpnext/patches.txt | 1 + ...t_auto_created_serial_no_in_stock_entry.py | 53 +++++++++++++++++++ erpnext/stock/doctype/serial_no/serial_no.py | 9 +++- 5 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 erpnext/patches/v10_0/set_auto_created_serial_no_in_stock_entry.py diff --git a/erpnext/hr/doctype/employee/employee.js b/erpnext/hr/doctype/employee/employee.js index c24a6bc30b..5e1013d6a2 100755 --- a/erpnext/hr/doctype/employee/employee.js +++ b/erpnext/hr/doctype/employee/employee.js @@ -81,7 +81,7 @@ frappe.ui.form.on('Employee',{ } frappe.call({ method: "erpnext.hr.doctype.employee.employee.create_user", - args: { employee: cur_frm.doc.name }, + args: { employee: frm.doc.name, email: frm.doc.prefered_email }, callback: function(r) { frm.set_value("user_id", r.message) diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py index 9541b775a1..25d3ec4bc9 100755 --- a/erpnext/hr/doctype/employee/employee.py +++ b/erpnext/hr/doctype/employee/employee.py @@ -263,7 +263,7 @@ def deactivate_sales_person(status = None, employee = None): frappe.db.set_value("Sales Person", sales_person, "enabled", 0) @frappe.whitelist() -def create_user(employee, user = None): +def create_user(employee, user = None, email=None): emp = frappe.get_doc("Employee", employee) employee_name = emp.employee_name.split(" ") @@ -277,6 +277,9 @@ def create_user(employee, user = None): first_name = employee_name[0] + if email: + emp.prefered_email = email + user = frappe.new_doc("User") user.update({ "name": emp.employee_name, diff --git a/erpnext/patches.txt b/erpnext/patches.txt index df795fcc7a..705d2198aa 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -490,4 +490,5 @@ erpnext.patches.v10_0.set_default_payment_terms_based_on_company erpnext.patches.v10_0.update_sales_order_link_to_purchase_order erpnext.patches.v10_0.added_extra_gst_custom_field_in_gstr2 #2018-02-13 erpnext.patches.v10_0.set_b2c_limit +erpnext.patches.v10_0.set_auto_created_serial_no_in_stock_entry erpnext.patches.v10_0.update_territory_and_customer_group diff --git a/erpnext/patches/v10_0/set_auto_created_serial_no_in_stock_entry.py b/erpnext/patches/v10_0/set_auto_created_serial_no_in_stock_entry.py new file mode 100644 index 0000000000..afc49523f6 --- /dev/null +++ b/erpnext/patches/v10_0/set_auto_created_serial_no_in_stock_entry.py @@ -0,0 +1,53 @@ +# Copyright (c) 2017, Frappe and Contributors +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import frappe + +def execute(): + serialised_items = [d.name for d in frappe.get_all("Item", filters={"has_serial_no": 1})] + + for dt in ["Stock Entry Detail", "Purchase Receipt Item", "Purchase Invoice Item"]: + cond = "" + if dt=="Purchase Invoice Item": + cond = """ and parent in (select name from `tabPurchase Invoice` + where `tabPurchase Invoice`.name = `tabPurchase Invoice Item`.parent and update_stock=1)""" + + item_rows = frappe.db.sql(""" + select name + from `tab{0}` + where conversion_factor != 1 + and docstatus = 1 + and ifnull(serial_no, '') = '' + and item_code in ({1}) + {2} + """.format(dt, ', '.join(['%s']*len(serialised_items)), cond), tuple(serialised_items)) + + if item_rows: + sle_serial_nos = dict(frappe.db.sql(""" + select voucher_detail_no, serial_no + from `tabStock Ledger Entry` + where ifnull(serial_no, '') != '' + and voucher_detail_no in (%s) + """.format(', '.join(['%s']*len(item_rows))), + tuple([d[0] for d in item_rows]))) + + batch_size = 100 + for i in range(0, len(item_rows), batch_size): + batch_item_rows = item_rows[i:i + batch_size] + when_then = [] + for item_row in batch_item_rows: + + when_then.append('WHEN `name` = "{row_name}" THEN "{value}"'.format( + row_name=item_row[0], + value=sle_serial_nos.get(item_row[0]))) + + frappe.db.sql(""" + update + `tab{doctype}` + set + serial_no = CASE {when_then_cond} ELSE `serial_no` END + """.format( + doctype = dt, + when_then_cond=" ".join(when_then) + )) \ No newline at end of file diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py index 4c609df297..00a8a9305b 100644 --- a/erpnext/stock/doctype/serial_no/serial_no.py +++ b/erpnext/stock/doctype/serial_no/serial_no.py @@ -326,11 +326,16 @@ def update_serial_nos_after_submit(controller, parentfield): update_rejected_serial_nos = True if (controller.doctype in ("Purchase Receipt", "Purchase Invoice") and d.rejected_qty) else False accepted_serial_nos_updated = False - warehouse = d.t_warehouse if controller.doctype == "Stock Entry" else d.warehouse + if controller.doctype == "Stock Entry": + warehouse = d.t_warehouse + qty = d.transfer_qty + else: + warehouse = d.warehouse + qty = d.stock_qty for sle in stock_ledger_entries: if sle.voucher_detail_no==d.name: - if not accepted_serial_nos_updated and d.qty and abs(sle.actual_qty)==d.qty \ + if not accepted_serial_nos_updated and qty and abs(sle.actual_qty)==qty \ and sle.warehouse == warehouse and sle.serial_no != d.serial_no: d.serial_no = sle.serial_no frappe.db.set_value(d.doctype, d.name, "serial_no", sle.serial_no) From 6578bc11b6e24decd9feb92e56be11f1f21e7fa8 Mon Sep 17 00:00:00 2001 From: Zarrar Date: Thu, 1 Mar 2018 10:54:55 +0530 Subject: [PATCH 15/50] wrong query formed to delete events (#13119) --- erpnext/utilities/transaction_base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/utilities/transaction_base.py b/erpnext/utilities/transaction_base.py index 0032e80f1e..341c511f4e 100644 --- a/erpnext/utilities/transaction_base.py +++ b/erpnext/utilities/transaction_base.py @@ -43,7 +43,7 @@ class TransactionBase(StatusUpdater): events = frappe.db.sql_list("""select name from `tabEvent` where ref_type=%s and ref_name=%s""", (self.doctype, self.name)) if events: - frappe.db.sql("delete from `tabEvent` where name in (%s)" + frappe.db.sql("delete from `tabEvent` where name in ({0})" .format(", ".join(['%s']*len(events))), tuple(events)) def _add_calendar_event(self, opts): From 0df95fa78121066f83eeb8a53f3321c2d61ce512 Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Thu, 1 Mar 2018 11:31:33 +0530 Subject: [PATCH 16/50] Multi-UOM for sales/purchase return (#13132) * Multi-UOM for sales/purchase return * Update sales_and_purchase_return.py --- .../controllers/sales_and_purchase_return.py | 22 +++++++++++------ .../purchase_receipt/test_purchase_receipt.py | 24 +++++++++++++++---- erpnext/utilities/transaction_base.py | 4 +++- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/erpnext/controllers/sales_and_purchase_return.py b/erpnext/controllers/sales_and_purchase_return.py index d16f063c20..4b8bbee749 100644 --- a/erpnext/controllers/sales_and_purchase_return.py +++ b/erpnext/controllers/sales_and_purchase_return.py @@ -53,8 +53,9 @@ def validate_returned_items(doc): valid_items = frappe._dict() - select_fields = "item_code, qty, rate, parenttype" if doc.doctype=="Purchase Invoice" \ - else "item_code, qty, rate, serial_no, batch_no, parenttype" + select_fields = "item_code, qty, stock_qty, rate, parenttype, conversion_factor" + if doc.doctype != 'Purchase Invoice': + select_fields += ",serial_no, batch_no" if doc.doctype in ['Purchase Invoice', 'Purchase Receipt']: select_fields += ",rejected_qty, received_qty" @@ -111,7 +112,7 @@ def validate_returned_items(doc): frappe.throw(_("Atleast one item should be entered with negative quantity in return document")) def validate_quantity(doc, args, ref, valid_items, already_returned_items): - fields = ['qty'] + fields = ['stock_qty'] if doc.doctype in ['Purchase Receipt', 'Purchase Invoice']: fields.extend(['received_qty', 'rejected_qty']) @@ -119,16 +120,19 @@ def validate_quantity(doc, args, ref, valid_items, already_returned_items): for column in fields: returned_qty = flt(already_returned_data.get(column, 0)) if len(already_returned_data) > 0 else 0 - reference_qty = ref.get(column) + reference_qty = (ref.get(column) if column == 'stock_qty' + else ref.get(column) * ref.get("conversion_factor", 1.0)) + max_returnable_qty = flt(reference_qty) - returned_qty label = column.replace('_', ' ').title() + if reference_qty: if flt(args.get(column)) > 0: frappe.throw(_("{0} must be negative in return document").format(label)) elif returned_qty >= reference_qty and args.get(column): frappe.throw(_("Item {0} has already been returned") .format(args.item_code), StockOverReturnError) - elif abs(args.get(column)) > max_returnable_qty: + elif (abs(args.get(column)) * args.get("conversion_factor", 1.0)) > max_returnable_qty: frappe.throw(_("Row # {0}: Cannot return more than {1} for Item {2}") .format(args.idx, reference_qty, args.item_code), StockOverReturnError) @@ -138,6 +142,7 @@ def get_ref_item_dict(valid_items, ref_item_row): valid_items.setdefault(ref_item_row.item_code, frappe._dict({ "qty": 0, "rate": 0, + "stock_qty": 0, "rejected_qty": 0, "received_qty": 0, "serial_no": [], @@ -145,6 +150,7 @@ def get_ref_item_dict(valid_items, ref_item_row): })) item_dict = valid_items[ref_item_row.item_code] item_dict["qty"] += ref_item_row.qty + item_dict["stock_qty"] += ref_item_row.get('stock_qty', 0) if ref_item_row.get("rate", 0) > item_dict["rate"]: item_dict["rate"] = ref_item_row.get("rate", 0) @@ -161,9 +167,10 @@ def get_ref_item_dict(valid_items, ref_item_row): return valid_items def get_already_returned_items(doc): - column = 'child.item_code, sum(abs(child.qty)) as qty' + column = 'child.item_code, sum(abs(child.qty)) as qty, sum(abs(child.stock_qty)) as stock_qty' if doc.doctype in ['Purchase Invoice', 'Purchase Receipt']: - column += ', sum(abs(child.rejected_qty)) as rejected_qty, sum(abs(child.received_qty)) as received_qty' + column += """, sum(abs(child.rejected_qty) * child.conversion_factor) as rejected_qty, + sum(abs(child.received_qty) * child.conversion_factor) as received_qty""" data = frappe.db.sql(""" select {0} @@ -180,6 +187,7 @@ def get_already_returned_items(doc): for d in data: items.setdefault(d.item_code, frappe._dict({ "qty": d.get("qty"), + "stock_qty": d.get("stock_qty"), "received_qty": d.get("received_qty"), "rejected_qty": d.get("rejected_qty") })) diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py index b656c3f0dc..29caea156a 100644 --- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py @@ -11,7 +11,7 @@ from erpnext.stock.doctype.purchase_receipt.purchase_receipt import make_purchas from erpnext import set_perpetual_inventory from erpnext.stock.doctype.serial_no.serial_no import SerialNoDuplicateError from erpnext.accounts.doctype.account.test_account import get_inventory_account - +from erpnext.stock.doctype.item.test_item import make_item class TestPurchaseReceipt(unittest.TestCase): def setUp(self): @@ -203,6 +203,22 @@ class TestPurchaseReceipt(unittest.TestCase): "delivery_document_no": return_pr.name }) + def test_purchase_return_for_multi_uom(self): + item_code = "_Test Purchase Return For Multi-UOM" + if not frappe.db.exists('Item', item_code): + item = make_item(item_code, {'stock_uom': 'Box'}) + row = item.append('uoms', { + 'uom': 'Unit', + 'conversion_factor': 0.1 + }) + row.db_update() + + pr = make_purchase_receipt(item_code=item_code, qty=1, uom="Box", conversion_factor=1.0) + return_pr = make_purchase_receipt(item_code=item_code, qty=-10, uom="Unit", + stock_uom="Box", conversion_factor=0.1, is_return=1, return_against=pr.name) + + self.assertEquals(abs(return_pr.items[0].stock_qty), 1.0) + def test_closed_purchase_receipt(self): from erpnext.stock.doctype.purchase_receipt.purchase_receipt import update_purchase_receipt_status @@ -255,7 +271,6 @@ class TestPurchaseReceipt(unittest.TestCase): def test_not_accept_duplicate_serial_no(self): from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry - from erpnext.stock.doctype.item.test_item import make_item from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note item_code = frappe.db.get_value('Item', {'has_serial_no': 1}) @@ -307,9 +322,10 @@ def make_purchase_receipt(**args): "rejected_qty": rejected_qty, "rejected_warehouse": args.rejected_warehouse or "_Test Rejected Warehouse - _TC" if rejected_qty != 0 else "", "rate": args.rate or 50, - "conversion_factor": 1.0, + "conversion_factor": args.conversion_factor or 1.0, "serial_no": args.serial_no, - "stock_uom": "_Test UOM" + "stock_uom": args.stock_uom or "_Test UOM", + "uom": args.uom or "_Test UOM" }) if not args.do_not_save: diff --git a/erpnext/utilities/transaction_base.py b/erpnext/utilities/transaction_base.py index 341c511f4e..77ba694388 100644 --- a/erpnext/utilities/transaction_base.py +++ b/erpnext/utilities/transaction_base.py @@ -71,6 +71,8 @@ class TransactionBase(StatusUpdater): validate_uom_is_integer(self, uom_field, qty_fields) def validate_with_previous_doc(self, ref): + self.exclude_fields = ["conversion_factor", "uom"] if self.get('is_return') else [] + for key, val in ref.items(): is_child = val.get("is_child_table") ref_doc = {} @@ -101,7 +103,7 @@ class TransactionBase(StatusUpdater): frappe.throw(_("Invalid reference {0} {1}").format(reference_doctype, reference_name)) for field, condition in fields: - if prevdoc_values[field] is not None: + if prevdoc_values[field] is not None and field not in self.exclude_fields: self.validate_value(field, condition, prevdoc_values[field], doc) From 855d843e55d23cee0f5cc3a5fdad6944dda4f99a Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Thu, 1 Mar 2018 13:06:01 +0530 Subject: [PATCH 17/50] [Fix] Sales invoice email prompt not working --- erpnext/accounts/doctype/sales_invoice/sales_invoice.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js index 93c22067d8..bb2d071dc2 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js @@ -106,7 +106,7 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte on_submit: function(doc, dt, dn) { var me = this; - if (frappe.get_route()[0] != 'Sales Invoice') { + if (frappe.get_route()[0] != 'Form') { return } From c10bbd6aa76434870dba004563a5557b1e783ea7 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Thu, 1 Mar 2018 13:14:14 +0530 Subject: [PATCH 18/50] Editable unallocated amount in pe (#13130) * editable unallocated amount in payment entry to handle multi currency * set unallocated amount on server side * some minor fixes * Fixes in territory patch * removed print * minor fixes --- .../doctype/payment_entry/payment_entry.js | 112 ++++++++++++------ .../doctype/payment_entry/payment_entry.json | 61 +++++++++- .../doctype/payment_entry/payment_entry.py | 29 +++-- .../payment_entry/test_payment_entry.py | 2 +- .../payment_entry_deduction.json | 2 +- .../payment_request/test_payment_request.py | 16 ++- .../update_territory_and_customer_group.py | 4 +- erpnext/stock/doctype/item/test_item.py | 1 - 8 files changed, 167 insertions(+), 60 deletions(-) diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.js b/erpnext/accounts/doctype/payment_entry/payment_entry.js index 496f41207c..9e3fa71e97 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.js +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.js @@ -145,13 +145,13 @@ frappe.ui.form.on('Payment Entry', { frm.doc.paid_amount : frm.doc.received_amount; frm.toggle_display("write_off_difference_amount", (frm.doc.difference_amount && frm.doc.party && - (frm.doc.paid_from_account_currency == frm.doc.paid_to_account_currency) && (frm.doc.total_allocated_amount > party_amount))); frm.toggle_display("set_exchange_gain_loss", (frm.doc.paid_amount && frm.doc.received_amount && frm.doc.difference_amount && - (frm.doc.paid_from_account_currency != company_currency || - frm.doc.paid_to_account_currency != company_currency))); + ((frm.doc.paid_from_account_currency != company_currency || + frm.doc.paid_to_account_currency != company_currency) && + frm.doc.paid_from_account_currency != frm.doc.paid_to_account_currency))); frm.refresh_fields(); }, @@ -300,7 +300,15 @@ frappe.ui.form.on('Payment Entry', { if(frm.doc.payment_type == "Pay") { frm.events.get_outstanding_documents(frm); } else if (frm.doc.payment_type == "Receive") { - frm.events.received_amount(frm); + if(frm.doc.paid_from_account_currency == frm.doc.paid_to_account_currency) { + if(frm.doc.source_exchange_rate) { + frm.set_value("target_exchange_rate", frm.doc.source_exchange_rate); + } + frm.set_value("received_amount", frm.doc.paid_amount); + + } else { + frm.events.received_amount(frm); + } } } ); @@ -317,26 +325,31 @@ frappe.ui.form.on('Payment Entry', { }, callback: function(r, rt) { if(r.message) { - frm.set_value(currency_field, r.message['account_currency']); - frm.set_value(balance_field, r.message['account_balance']); + frappe.run_serially([ + () => frm.set_value(currency_field, r.message['account_currency']), + () => { + frm.set_value(balance_field, r.message['account_balance']); - if(frm.doc.payment_type=="Receive" && currency_field=="paid_to_account_currency") { - frm.toggle_reqd(["reference_no", "reference_date"], - (r.message['account_type'] == "Bank" ? 1 : 0)); - if(!frm.doc.received_amount && frm.doc.paid_amount) - frm.events.paid_amount(frm); - } else if(frm.doc.payment_type=="Pay" && currency_field=="paid_from_account_currency") { - frm.toggle_reqd(["reference_no", "reference_date"], - (r.message['account_type'] == "Bank" ? 1 : 0)); + if(frm.doc.payment_type=="Receive" && currency_field=="paid_to_account_currency") { + frm.toggle_reqd(["reference_no", "reference_date"], + (r.message['account_type'] == "Bank" ? 1 : 0)); + if(!frm.doc.received_amount && frm.doc.paid_amount) + frm.events.paid_amount(frm); + } else if(frm.doc.payment_type=="Pay" && currency_field=="paid_from_account_currency") { + frm.toggle_reqd(["reference_no", "reference_date"], + (r.message['account_type'] == "Bank" ? 1 : 0)); - if(!frm.doc.paid_amount && frm.doc.received_amount) - frm.events.received_amount(frm); - } + if(!frm.doc.paid_amount && frm.doc.received_amount) + frm.events.received_amount(frm); + } + }, + () => { + if(callback_function) callback_function(frm); - if(callback_function) callback_function(frm); - - frm.events.hide_unhide_fields(frm); - frm.events.set_dynamic_labels(frm); + frm.events.hide_unhide_fields(frm); + frm.events.set_dynamic_labels(frm); + } + ]); } } }); @@ -405,7 +418,7 @@ frappe.ui.form.on('Payment Entry', { frm.set_value("base_received_amount", frm.doc.base_paid_amount); } - frm.events.set_difference_amount(frm); + frm.events.set_unallocated_amount(frm); } // Make read only if Accounts Settings doesn't allow stale rates @@ -425,7 +438,7 @@ frappe.ui.form.on('Payment Entry', { frm.set_value("base_paid_amount", frm.doc.base_received_amount); } - frm.events.set_difference_amount(frm); + frm.events.set_unallocated_amount(frm); } frm.set_paid_amount_based_on_received_amount = false; @@ -456,7 +469,7 @@ frappe.ui.form.on('Payment Entry', { if(frm.doc.payment_type == "Pay") frm.events.allocate_party_amount_against_ref_docs(frm, frm.doc.received_amount); else - frm.events.set_difference_amount(frm); + frm.events.set_unallocated_amount(frm); frm.set_paid_amount_based_on_received_amount = false; }, @@ -476,7 +489,7 @@ frappe.ui.form.on('Payment Entry', { if(frm.doc.payment_type == "Receive") frm.events.allocate_party_amount_against_ref_docs(frm, frm.doc.paid_amount); else - frm.events.set_difference_amount(frm); + frm.events.set_unallocated_amount(frm); }, get_outstanding_documents: function(frm) { @@ -565,8 +578,11 @@ frappe.ui.form.on('Payment Entry', { if(frm.doc.references.length == 0){ frm.events.get_outstanding_documents(frm); } - - frm.events.allocate_party_amount_against_ref_docs(frm, frm.doc.received_amount); + if(frm.doc.payment_type == 'Internal Transfer') { + frm.events.allocate_party_amount_against_ref_docs(frm, frm.doc.paid_amount); + } else { + frm.events.allocate_party_amount_against_ref_docs(frm, frm.doc.received_amount); + } }, allocate_party_amount_against_ref_docs: function(frm, paid_amount) { @@ -651,10 +667,10 @@ frappe.ui.form.on('Payment Entry', { frm.set_value("total_allocated_amount", Math.abs(total_allocated_amount)); frm.set_value("base_total_allocated_amount", Math.abs(base_total_allocated_amount)); - frm.events.set_difference_amount(frm); + frm.events.set_unallocated_amount(frm); }, - set_difference_amount: function(frm) { + set_unallocated_amount: function(frm) { var unallocated_amount = 0; var total_deductions = frappe.utils.sum($.map(frm.doc.deductions || [], function(d) { return flt(d.amount) })); @@ -662,17 +678,34 @@ frappe.ui.form.on('Payment Entry', { if(frm.doc.party) { var party_amount = frm.doc.payment_type=="Receive" ? frm.doc.paid_amount : frm.doc.received_amount; + var company_currency = frm.doc.company? frappe.get_doc(":Company", frm.doc.company).default_currency: ""; - if(frm.doc.total_allocated_amount < party_amount) { - if(frm.doc.payment_type == "Receive") { + if (frm.doc.party_account_currency == company_currency) { + if(frm.doc.payment_type == "Receive" && frm.doc.total_allocated_amount <= party_amount + total_deductions) { unallocated_amount = party_amount - (frm.doc.total_allocated_amount - total_deductions); - } else { + } else if (frm.doc.payment_type == "Pay" && frm.doc.total_allocated_amount <= party_amount - total_deductions) { unallocated_amount = party_amount - (frm.doc.total_allocated_amount + total_deductions); } + } else { + if(frm.doc.payment_type == "Receive" + && frm.doc.base_total_allocated_amount <= frm.doc.base_received_amount + total_deductions + && frm.doc.total_allocated_amount < frm.doc.paid_amount) { + unallocated_amount = (frm.doc.base_received_amount + total_deductions + - frm.doc.base_total_allocated_amount) / frm.doc.source_exchange_rate; + } else if (frm.doc.payment_type == "Pay" + && frm.doc.base_total_allocated_amount < frm.doc.base_paid_amount - total_deductions + && frm.doc.total_allocated_amount < frm.doc.received_amount) { + unallocated_amount = (frm.doc.base_paid_amount - (total_deductions + + frm.doc.base_total_allocated_amount)) / frm.doc.target_exchange_rate; + } } + } frm.set_value("unallocated_amount", unallocated_amount); - + frm.trigger("set_difference_amount"); + }, + + set_difference_amount: function(frm) { var difference_amount = 0; var base_unallocated_amount = flt(frm.doc.unallocated_amount) * (frm.doc.payment_type=="Receive" ? frm.doc.source_exchange_rate : frm.doc.target_exchange_rate); @@ -687,11 +720,18 @@ frappe.ui.form.on('Payment Entry', { difference_amount = flt(frm.doc.base_paid_amount) - flt(frm.doc.base_received_amount); } + var total_deductions = frappe.utils.sum($.map(frm.doc.deductions || [], + function(d) { return flt(d.amount) })); + frm.set_value("difference_amount", difference_amount - total_deductions); frm.events.hide_unhide_fields(frm); }, + unallocated_amount: function(frm) { + frm.trigger("set_difference_amount"); + }, + check_mandatory_to_fetch: function(frm) { $.each(["Company", "Party Type", "Party", "payment_type"], function(i, field) { if(!frm.doc[frappe.model.scrub(field)]) { @@ -771,7 +811,7 @@ frappe.ui.form.on('Payment Entry', { row.amount = flt(row.amount) + flt(frm.doc.difference_amount); refresh_field("deductions"); - frm.events.set_difference_amount(frm); + frm.events.set_unallocated_amount(frm); } } }) @@ -818,10 +858,10 @@ frappe.ui.form.on('Payment Entry Reference', { frappe.ui.form.on('Payment Entry Deduction', { amount: function(frm) { - frm.events.set_difference_amount(frm); + frm.events.set_unallocated_amount(frm); }, deductions_remove: function(frm) { - frm.events.set_difference_amount(frm); + frm.events.set_unallocated_amount(frm); } }) diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.json b/erpnext/accounts/doctype/payment_entry/payment_entry.json index abf4ac9b15..9e9a4f1536 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.json +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.json @@ -40,6 +40,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -71,6 +72,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 1, + "translatable": 0, "unique": 0 }, { @@ -102,6 +104,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -131,6 +134,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -162,6 +166,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -193,6 +198,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -224,6 +230,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -255,6 +262,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -288,6 +296,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -320,6 +329,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -349,6 +359,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -381,6 +392,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -411,6 +423,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -442,6 +455,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -474,6 +488,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -506,6 +521,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -538,6 +554,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -567,6 +584,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -599,6 +617,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -631,6 +650,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -663,6 +683,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -695,6 +716,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -727,6 +749,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -758,6 +781,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -790,6 +814,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -819,6 +844,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -851,6 +877,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -882,6 +909,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -914,6 +942,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -946,6 +975,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -978,6 +1008,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1010,6 +1041,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1041,6 +1073,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1072,6 +1105,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1104,6 +1138,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1134,6 +1169,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1163,6 +1199,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1188,12 +1225,13 @@ "precision": "", "print_hide": 1, "print_hide_if_no_value": 0, - "read_only": 1, + "read_only": 0, "remember_last_selected_value": 0, "report_hide": 0, "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1226,6 +1264,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1257,6 +1296,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1289,6 +1329,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1320,6 +1361,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1350,6 +1392,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1381,6 +1424,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1410,6 +1454,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1441,6 +1486,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1472,6 +1518,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1504,6 +1551,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1536,6 +1584,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1566,6 +1615,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1595,6 +1645,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1626,6 +1677,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1657,6 +1709,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1687,6 +1740,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1718,6 +1772,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1748,6 +1803,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1778,6 +1834,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 } ], @@ -1791,7 +1848,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-08-31 11:20:37.578469", + "modified": "2018-02-19 16:58:23.899015", "modified_by": "Administrator", "module": "Accounts", "name": "Payment Entry", diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py index e19295cf4c..7561b35245 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py @@ -286,17 +286,30 @@ class PaymentEntry(AccountsController): self.base_total_allocated_amount = abs(base_total_allocated_amount) def set_unallocated_amount(self): - self.unallocated_amount = 0; + self.unallocated_amount = 0 if self.party: - party_amount = self.paid_amount if self.payment_type=="Receive" else self.received_amount - total_deductions = sum([flt(d.amount) for d in self.get("deductions")]) - if self.total_allocated_amount < party_amount: - if self.payment_type == "Receive": - self.unallocated_amount = party_amount - (self.total_allocated_amount - total_deductions) - else: - self.unallocated_amount = party_amount - (self.total_allocated_amount + total_deductions) + if self.party_account_currency == self.company_currency: + if self.payment_type == "Receive" \ + and self.total_allocated_amount <= self.paid_amount + total_deductions: + self.unallocated_amount = self.paid_amount - \ + (self.total_allocated_amount - total_deductions) + elif self.payment_type == "Pay" \ + and self.total_allocated_amount <= self.received_amount - total_deductions: + self.unallocated_amount = self.received_amount - \ + (self.total_allocated_amount + total_deductions) + else: + if self.payment_type == "Receive" \ + and self.base_total_allocated_amount <= self.base_received_amount + total_deductions \ + and self.total_allocated_amount < self.paid_amount: + self.unallocated_amount = (self.base_received_amount + total_deductions - + self.base_total_allocated_amount) / self.source_exchange_rate + elif self.payment_type == "Pay" \ + and self.base_total_allocated_amount < (self.base_paid_amount - total_deductions) \ + and self.total_allocated_amount < self.received_amount: + self.unallocated_amount = (self.base_paid_amount - (total_deductions + + self.base_total_allocated_amount)) / self.target_exchange_rate def set_difference_amount(self): base_unallocated_amount = flt(self.unallocated_amount) * (flt(self.source_exchange_rate) diff --git a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py index 64cd3ad96d..9231aced3a 100644 --- a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py @@ -141,7 +141,6 @@ class TestPaymentEntry(unittest.TestCase): def test_payment_entry_retrieves_last_exchange_rate(self): from erpnext.setup.doctype.currency_exchange.test_currency_exchange import test_records, save_new_records - test_records = test_records save_new_records(test_records) pe = frappe.new_doc("Payment Entry") @@ -151,6 +150,7 @@ class TestPaymentEntry(unittest.TestCase): pe.paid_from = "_Test Bank USD - _TC" pe.paid_to = "_Test Bank - _TC" pe.paid_amount = 100 + pe.received_amount = 100 pe.reference_no = "3" pe.reference_date = "2016-01-10" pe.party_type = "Supplier" diff --git a/erpnext/accounts/doctype/payment_entry_deduction/payment_entry_deduction.json b/erpnext/accounts/doctype/payment_entry_deduction/payment_entry_deduction.json index b4d63f87e6..10e147ed08 100644 --- a/erpnext/accounts/doctype/payment_entry_deduction/payment_entry_deduction.json +++ b/erpnext/accounts/doctype/payment_entry_deduction/payment_entry_deduction.json @@ -98,7 +98,7 @@ "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2016-07-11 03:28:03.420683", + "modified": "2018-02-21 03:28:03.420683", "modified_by": "Administrator", "module": "Accounts", "name": "Payment Entry Deduction", diff --git a/erpnext/accounts/doctype/payment_request/test_payment_request.py b/erpnext/accounts/doctype/payment_request/test_payment_request.py index 8d43950102..9cdead8dfc 100644 --- a/erpnext/accounts/doctype/payment_request/test_payment_request.py +++ b/erpnext/accounts/doctype/payment_request/test_payment_request.py @@ -61,13 +61,11 @@ class TestPaymentRequest(unittest.TestCase): self.assertEquals(pr.currency, "USD") def test_payment_entry(self): - frappe.db.set_value("Company", "_Test Company", + frappe.db.set_value("Company", "_Test Company", "exchange_gain_loss_account", "_Test Exchange Gain/Loss - _TC") - frappe.db.set_value("Company", "_Test Company", - "write_off_account", "_Test Write Off - _TC") - frappe.db.set_value("Company", "_Test Company", - "cost_center", "_Test Cost Center - _TC") - + frappe.db.set_value("Company", "_Test Company", "write_off_account", "_Test Write Off - _TC") + frappe.db.set_value("Company", "_Test Company", "cost_center", "_Test Cost Center - _TC") + so_inr = make_sales_order(currency="INR") pr = make_payment_request(dt="Sales Order", dn=so_inr.name, recipient_id="saurabh@erpnext.com", mute_email=1, submit_doc=1, return_doc=1) @@ -82,15 +80,15 @@ class TestPaymentRequest(unittest.TestCase): pr = make_payment_request(dt="Sales Invoice", dn=si_usd.name, recipient_id="saurabh@erpnext.com", mute_email=1, payment_gateway="_Test Gateway - USD", submit_doc=1, return_doc=1) - + pe = pr.set_as_paid() - + expected_gle = dict((d[0], d) for d in [ ["_Test Receivable USD - _TC", 0, 5000, si_usd.name], [pr.payment_account, 6290.0, 0, None], ["_Test Exchange Gain/Loss - _TC", 0, 1290, None] ]) - + gl_entries = frappe.db.sql("""select account, debit, credit, against_voucher from `tabGL Entry` where voucher_type='Payment Entry' and voucher_no=%s order by account asc""", pe.name, as_dict=1) diff --git a/erpnext/patches/v10_0/update_territory_and_customer_group.py b/erpnext/patches/v10_0/update_territory_and_customer_group.py index 3889c737e0..f08ac68679 100644 --- a/erpnext/patches/v10_0/update_territory_and_customer_group.py +++ b/erpnext/patches/v10_0/update_territory_and_customer_group.py @@ -21,8 +21,8 @@ def execute(): '''.format( master_fieldname=d["master_fieldname"], linked_to_fieldname=d["linked_to_fieldname"], - docname=frappe.db.escape(customer.name).encode("utf-8"), - value=frappe.db.escape(customer.get(source_fieldname)).encode("utf-8"))) + docname=frappe.db.escape(frappe.as_unicode(customer.name)), + value=frappe.db.escape(frappe.as_unicode(customer.get(source_fieldname))))) frappe.db.sql(""" update diff --git a/erpnext/stock/doctype/item/test_item.py b/erpnext/stock/doctype/item/test_item.py index 8ebe757ffc..7241be3ef7 100644 --- a/erpnext/stock/doctype/item/test_item.py +++ b/erpnext/stock/doctype/item/test_item.py @@ -80,7 +80,6 @@ class TestItem(unittest.TestCase): } make_test_objects("Item Price") - print(frappe.get_all("Item Price")) details = get_item_details({ "item_code": "_Test Item", From a9427226190f5edc6f20d6ab9009c1507bae2c2b Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Thu, 1 Mar 2018 13:15:25 +0530 Subject: [PATCH 19/50] [Fix] Timeout issue while saving multilevel BOM (#13118) --- erpnext/manufacturing/doctype/bom/bom.py | 37 +++++++++++++----------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py index 8cafb9105d..5e1e52a504 100644 --- a/erpnext/manufacturing/doctype/bom/bom.py +++ b/erpnext/manufacturing/doctype/bom/bom.py @@ -47,7 +47,6 @@ class BOM(WebsiteGenerator): self.validate_currency() self.set_conversion_rate() self.validate_uom_is_interger() - self.update_stock_qty() self.set_bom_material_details() self.validate_materials() self.validate_operations() @@ -247,14 +246,12 @@ class BOM(WebsiteGenerator): set_default(self, "item") item = frappe.get_doc("Item", self.item) if item.default_bom != self.name: - item.default_bom = self.name - item.save(ignore_permissions = True) + frappe.db.set_value('Item', self.item, 'default_bom', self.name) else: frappe.db.set(self, "is_default", 0) item = frappe.get_doc("Item", self.item) if item.default_bom == self.name: - item.default_bom = None - item.save(ignore_permissions = True) + frappe.db.set_value('Item', self.item, 'default_bom', None) def clear_operations(self): if not self.with_operations: @@ -291,6 +288,8 @@ class BOM(WebsiteGenerator): m.uom = m.stock_uom m.qty = m.stock_qty + m.db_update() + def validate_uom_is_interger(self): from erpnext.utilities.transaction_base import validate_uom_is_integer validate_uom_is_integer(self, "uom", "qty", "BOM Item") @@ -333,19 +332,23 @@ class BOM(WebsiteGenerator): def check_recursion(self): """ Check whether recursion occurs in any bom""" + bom_list = self.traverse_tree() + bom_nos = frappe.get_all('BOM Item', fields=["bom_no"], + filters={'parent': ('in', bom_list), 'parenttype': 'BOM'}) - check_list = [['parent', 'bom_no', 'parent'], ['bom_no', 'parent', 'child']] - for d in check_list: - bom_list, count = [self.name], 0 - while (len(bom_list) > count ): - boms = frappe.db.sql(" select %s from `tabBOM Item` where %s = %s and parenttype='BOM'" % - (d[0], d[1], '%s'), cstr(bom_list[count])) - count = count + 1 - for b in boms: - if b[0] == self.name: - frappe.throw(_("BOM recursion: {0} cannot be parent or child of {2}").format(b[0], self.name)) - if b[0]: - bom_list.append(b[0]) + raise_exception = False + if bom_nos and self.name in [d.bom_no for d in bom_nos]: + raise_exception = True + + if not raise_exception: + bom_nos = frappe.get_all('BOM Item', fields=["parent"], + filters={'bom_no': self.name, 'parenttype': 'BOM'}) + + if self.name in [d.parent for d in bom_nos]: + raise_exception = True + + if raise_exception: + frappe.throw(_("BOM recursion: {0} cannot be parent or child of {2}").format(self.name, self.name)) def update_cost_and_exploded_items(self, bom_list=[]): bom_list = self.traverse_tree(bom_list) From 67cfa81de2693b6dab00bb737143e96bb771eb6a Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Mon, 5 Mar 2018 11:00:42 +0530 Subject: [PATCH 20/50] [Fix] Stock Ageing report does not work with group warehouse (#13151) --- erpnext/stock/report/stock_ageing/stock_ageing.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/erpnext/stock/report/stock_ageing/stock_ageing.py b/erpnext/stock/report/stock_ageing/stock_ageing.py index 86e102982b..e93957d97a 100644 --- a/erpnext/stock/report/stock_ageing/stock_ageing.py +++ b/erpnext/stock/report/stock_ageing/stock_ageing.py @@ -96,6 +96,8 @@ def get_item_conditions(filters): def get_sle_conditions(filters): conditions = [] if filters.get("warehouse"): - conditions.append("warehouse=%(warehouse)s") + lft, rgt = frappe.db.get_value('Warehouse', filters.get("warehouse"), ['lft', 'rgt']) + conditions.append("""warehouse in (select wh.name from `tabWarehouse` wh + where wh.lft >= {0} and rgt <= {1})""".format(lft, rgt)) return "and {}".format(" and ".join(conditions)) if conditions else "" From 0eb8bb2511ddb88154b43262a53f6f0734c3c01e Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Mon, 5 Mar 2018 11:03:27 +0530 Subject: [PATCH 21/50] [Fix] Wrong salary slips showing when click on view salary slips from payroll entry (#13152) --- erpnext/hr/doctype/payroll_entry/payroll_entry.js | 5 ++++- erpnext/hr/doctype/payroll_entry/payroll_entry.py | 9 +++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/erpnext/hr/doctype/payroll_entry/payroll_entry.js b/erpnext/hr/doctype/payroll_entry/payroll_entry.js index cf15846f2f..4aa4141656 100644 --- a/erpnext/hr/doctype/payroll_entry/payroll_entry.js +++ b/erpnext/hr/doctype/payroll_entry/payroll_entry.js @@ -5,7 +5,10 @@ var in_progress = false; frappe.ui.form.on('Payroll Entry', { onload: function (frm) { - frm.doc.posting_date = frappe.datetime.nowdate(); + if (!frm.doc.posting_date) { + frm.doc.posting_date = frappe.datetime.nowdate(); + } + frm.toggle_reqd(['payroll_frequency'], !frm.doc.salary_slip_based_on_timesheet); }, diff --git a/erpnext/hr/doctype/payroll_entry/payroll_entry.py b/erpnext/hr/doctype/payroll_entry/payroll_entry.py index 2a5b467845..e53a2a67fa 100644 --- a/erpnext/hr/doctype/payroll_entry/payroll_entry.py +++ b/erpnext/hr/doctype/payroll_entry/payroll_entry.py @@ -175,7 +175,7 @@ class PayrollEntry(Document): Get loan details from submitted salary slip based on selected criteria """ cond = self.get_filter_condition() - return frappe.db.sql(""" select eld.employee_loan_account, + return frappe.db.sql(""" select eld.employee_loan_account, eld.employee_loan, eld.interest_income_account, eld.principal_amount, eld.interest_amount, eld.total_payment from `tabSalary Slip` t1, `tabSalary Slip Loan` eld @@ -283,7 +283,12 @@ class PayrollEntry(Document): "account": data.employee_loan_account, "credit_in_account_currency": data.principal_amount }) - accounts.append({ + + if data.interest_amount and not data.interest_income_account: + frappe.throw(_("Select interest income account in employee loan {0}").format(data.employee_loan)) + + if data.interest_income_account and data.interest_amount: + accounts.append({ "account": data.interest_income_account, "credit_in_account_currency": data.interest_amount, "cost_center": self.cost_center, From a6a4e86dc85b3d614d6adb345ce30032e2b3889b Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Mon, 5 Mar 2018 11:03:59 +0530 Subject: [PATCH 22/50] [Fix] System only shows 20 attribute values while making variants (#13155) --- erpnext/stock/doctype/item/item.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js index 69931872f4..ff01a19be4 100644 --- a/erpnext/stock/doctype/item/item.js +++ b/erpnext/stock/doctype/item/item.js @@ -426,7 +426,9 @@ $.extend(erpnext.item, { filters: [ ["parent","=", attribute] ], - fields: ["attribute_value"] + fields: ["attribute_value"], + limit_start: 0, + limit_page_length: 500 } }).then((r) => { if(r.message) { From 1e4e0046671711153ed3fa1d9f7598d5b3566d6c Mon Sep 17 00:00:00 2001 From: Zarrar Date: Mon, 5 Mar 2018 11:05:59 +0530 Subject: [PATCH 23/50] leave application assigned by naming_series (#13158) --- .../leave_application/leave_application.json | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/erpnext/hr/doctype/leave_application/leave_application.json b/erpnext/hr/doctype/leave_application/leave_application.json index 2435d06979..8f9c3d0f1d 100644 --- a/erpnext/hr/doctype/leave_application/leave_application.json +++ b/erpnext/hr/doctype/leave_application/leave_application.json @@ -3,7 +3,7 @@ "allow_guest_to_view": 0, "allow_import": 0, "allow_rename": 0, - "autoname": "LAP/.#####", + "autoname": "naming_series:", "beta": 0, "creation": "2013-02-20 11:18:11", "custom": 0, @@ -42,6 +42,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 1, + "translatable": 0, "unique": 0 }, { @@ -72,6 +73,7 @@ "reqd": 1, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -101,6 +103,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -130,6 +133,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -159,6 +163,7 @@ "reqd": 1, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -188,6 +193,7 @@ "reqd": 1, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -217,6 +223,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -248,6 +255,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -278,6 +286,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -307,6 +316,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "50%" }, @@ -337,6 +347,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -366,6 +377,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -396,6 +408,7 @@ "reqd": 1, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -425,6 +438,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -454,6 +468,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -484,6 +499,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -514,6 +530,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -542,6 +559,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -572,6 +590,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -602,6 +621,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -632,6 +652,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 } ], @@ -646,7 +667,7 @@ "issingle": 0, "istable": 0, "max_attachments": 3, - "modified": "2018-02-12 13:10:05.766762", + "modified": "2018-03-04 18:24:04.863555", "modified_by": "Administrator", "module": "HR", "name": "Leave Application", From 89795c3f694bb26a4e144f1c22e97d1185e78f92 Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira <33246109+kennethsequeira@users.noreply.github.com> Date: Mon, 5 Mar 2018 11:06:44 +0530 Subject: [PATCH 24/50] Doc imp (#13148) * added intro, item and prices video, fixed image links in item and prices * update 2: first 5 videos added * added all videos to the user manual * updated .gitignore --- .gitignore | 1 + erpnext/docs/assets/css/docs-erp.css | 14 ++++++++++++ .../buying/supplier-new-address-contact.png | Bin 0 -> 97064 bytes .../img/buying/supplier-payable-account.png | Bin 0 -> 64904 bytes .../img/setup/users/add-user-details.png | Bin 0 -> 256458 bytes erpnext/docs/user/manual/en/CRM/customer.md | 10 +++++++++ erpnext/docs/user/manual/en/CRM/index.md | 8 +++++++ erpnext/docs/user/manual/en/CRM/newsletter.md | 5 +++++ .../en/accounts/advance-payment-entry.md | 6 ++++++ .../docs/user/manual/en/accounts/budgeting.md | 5 +++++ .../manual/en/accounts/chart-of-accounts.md | 10 +++++++++ erpnext/docs/user/manual/en/accounts/index.md | 5 +++++ .../manual/en/accounts/opening-accounts.md | 8 +++++++ .../user/manual/en/accounts/payment-terms.md | 4 ++++ .../en/accounts/tools/bank-reconciliation.md | 2 +- .../docs/user/manual/en/agriculture/index.md | 4 ++++ erpnext/docs/user/manual/en/buying/index.md | 5 +++++ .../manual/en/buying/request-for-quotation.md | 7 ++++++ .../docs/user/manual/en/buying/supplier.md | 7 ++++++ .../making-custom-reports-in-erpnext.md | 5 ++++- .../en/customize-erpnext/custom-field.md | 5 +++++ .../Assessment/assessment_criteria.md | 2 -- .../education/Assessment/assessment_group.md | 2 -- .../education/Assessment/assessment_plan.md | 2 -- .../education/Assessment/assessment_result.md | 2 -- .../Assessment/assessment_result_tool.md | 2 -- .../en/education/Assessment/grading_scale.md | 2 -- .../Attendance/student-attendance-tool.md | 2 -- .../Attendance/student-attendance.md | 2 -- .../Attendance/student-leave-application.md | 2 -- .../admission/program-enrollment-tool.md | 2 -- .../education/admission/program-enrollment.md | 1 - .../education/admission/student-applicant.md | 1 - .../education/admission/student_admission.md | 2 +- .../manual/en/education/fees/fee-structure.md | 2 -- .../en/education/schedule/course-schedule.md | 2 -- .../en/education/schedule/scheduling-tool.md | 1 - .../user/manual/en/education/setup/course.md | 4 +--- .../manual/en/education/setup/instructor.md | 2 -- .../user/manual/en/education/setup/program.md | 4 +--- .../en/human-resources/employee-advance.md | 6 +++++- .../employee-loan-management.md | 6 +++++- .../manual/en/human-resources/employee.md | 4 ++++ .../en/human-resources/expense-claim.md | 6 ++++++ .../en/human-resources/leave-application.md | 6 ++++++ .../en/human-resources/salary-and-payroll.md | 5 ++++- .../docs/user/manual/en/introduction/index.md | 6 ++++++ .../en/manufacturing/bill-of-materials.md | 6 ++++++ .../user/manual/en/manufacturing/operation.md | 5 +++++ .../en/manufacturing/production-order.md | 5 +++++ .../tools/production-planning-tool.md | 5 +++++ .../manual/en/manufacturing/workstation.md | 6 ++++++ .../docs/user/manual/en/projects/project.md | 5 +++++ erpnext/docs/user/manual/en/projects/tasks.md | 4 ++++ .../timesheet/timesheet-against-project.md | 5 +++++ .../en/selling/articles/drop-shipping.md | 7 +++++- erpnext/docs/user/manual/en/selling/index.md | 6 ++++++ .../manual/en/selling/setup/item-price.md | 20 ++++++++++++------ .../en/setting-up/email/email-account.md | 5 +++++ .../manual/en/setting-up/print/letter-head.md | 5 +++++ .../setting-up/print/print-format-builder.md | 5 +++++ .../en/setting-up/print/print-headings.md | 6 ++++++ .../manual/en/setting-up/setting-up-taxes.md | 8 +++++++ .../en/setting-up/settings/naming-series.md | 14 ++++++++++-- .../users-and-permissions/adding-users.md | 3 +++ .../setting-up/users-and-permissions/index.md | 7 ++++++ .../user/manual/en/setting-up/workflows.md | 5 +++++ .../user/manual/en/stock/articles/index.txt | 2 +- .../articles/managing-batch-wise-inventory.md | 7 ++++++ ...ce-entry-for-serialized-and-batch-item.md} | 9 +++++++- .../docs/user/manual/en/stock/item/index.md | 13 ++++++------ .../user/manual/en/stock/item/item-price.md | 19 +++++++++++------ .../manual/en/stock/item/item-variants.md | 12 +++++++++++ .../manual/en/stock/item/purchase-details.md | 4 +++- .../docs/user/manual/en/stock/item/reorder.md | 4 +++- .../user/manual/en/stock/material-request.md | 6 ++++++ .../user/manual/en/stock/opening-stock.md | 8 +++++++ .../docs/user/manual/en/stock/serial-no.md | 5 +++++ .../docs/user/manual/en/stock/stock-entry.md | 5 +++++ .../en/stock/tools/quality-inspection.md | 6 ++++++ .../en/website/add-products-to-website.md | 5 +++++ erpnext/docs/user/manual/en/website/index.md | 4 ++++ .../user/manual/en/website/shopping-cart.md | 11 ++++++++++ 83 files changed, 375 insertions(+), 66 deletions(-) create mode 100644 erpnext/docs/assets/css/docs-erp.css create mode 100644 erpnext/docs/assets/img/buying/supplier-new-address-contact.png create mode 100644 erpnext/docs/assets/img/buying/supplier-payable-account.png create mode 100644 erpnext/docs/assets/img/setup/users/add-user-details.png rename erpnext/docs/user/manual/en/stock/articles/{opening-stock-balance-entry-for-the-serialized-and-batch-item.md => opening-stock-balance-entry-for-serialized-and-batch-item.md} (91%) diff --git a/.gitignore b/.gitignore index d641ced0a8..68272c7d4d 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ dist/ erpnext/docs/current *.swp *.swo +__pycache__ *~ diff --git a/erpnext/docs/assets/css/docs-erp.css b/erpnext/docs/assets/css/docs-erp.css new file mode 100644 index 0000000000..5ac7516084 --- /dev/null +++ b/erpnext/docs/assets/css/docs-erp.css @@ -0,0 +1,14 @@ +.embed-container { + position: relative; + padding-bottom: 56.25%; + height: 0; + overflow: hidden; + max-width: 100%; } + +.embed-container iframe, .embed-container object, .embed-container embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} \ No newline at end of file diff --git a/erpnext/docs/assets/img/buying/supplier-new-address-contact.png b/erpnext/docs/assets/img/buying/supplier-new-address-contact.png new file mode 100644 index 0000000000000000000000000000000000000000..2a674e3095182c61ef9876b302098d0e17537e2e GIT binary patch literal 97064 zcmZ^|V|b>)vNjq`Y}>YN+qP}nljMzUXC}678*i+M?TImG7S7u1oc(=$)sKF<>#pjm ztGk}+E`YM46ap+REC>h)f{e7dDhLR~69@>H4>aW85r)QIM-UKfE*mj1Wf?IsVr5q+ zOB;I&5D@L}X*y8q=yFZhSu^x<+OD%aC%JB^xhUzx^jQ>P;wThRu(Igt!VnNFC?g=I zlHw}Ev818VhTD8N-#?>VpiJxV{;Sw z)4el_C_jY4I3a9fnh+NjNkqg}5Su=sKTQF6V%$lbv~7$ReeZu(NAc0|v7kW?gMS4V zw)aaz6o7-&5MqnPK!LEu%u6Kin<2+aG(%Lgi;Fr_%b_!AQ%1?3|cw|Ss1em8m1)fGJral9|Rlmi;jMK(+pGob43y5Q=gADjN%0^nV?jN1G`(90%5AP`PPj`QL|Wu z=2Kt2gMWF<(XlpgMR+p8F&7#UF8-nZv&KrfzGD5jQ<-N#rMB<4RNC+`9^dD_Qxw4Y zWhCJoF1}v7435m3n{nawd9B0Syvd;!3&C`sK%dh?tSLgJnt;BSZ7IPq}A5xrn7mZU=;xlUop<9F+_$ONcd4U7WXXX7XhI0HRCxT-r z+mxZ+M zhgew=VL4GJ%yt-|SY4slJpXTS$${U@bkk5VL$LLf_7I!>jP*?TU}J+7&W!r-TKyi* zbXzdbLv4GJw-6tohQgreC?oNxq7y~zDwO36)J#B5bcD1JTH&;!b7d-(o~SY@6|{04 zAS!N*r3hT{QR1g9z*7RM*lYpkl++#LuVMh9ctWvJ(aC%jHfjVGS=hp;wh2EoNhY~G zVJZAl)LFm2#Oy5kF&<`&#h9!yM`F_n0AZ-qB&MEY&GXXYQs9!@6Et$jWzXE%x1E6- zmXR^5GYq>=vyZS( zw~s22WthDaz7r`J(wq6k{b}(w_S;CBJehkU@lYa~3L_<3MoXGWdKX6<`w*uZI~1E0 zrxJ%3=bFvml$<%51((IqLf(SjjDN~I!zCTiPd;ltC~h)oTxof3;yc{jKRsAI-2I&= zxg)CM`zz%GJdPA5RZddac*mjdJ;psbT(m^^NH|5J1(Y24ltwy@CVdq|6^0$Q9f=*@ z1@i?yUY0`IOdLa2P4*SoCInx!LGE_6KxhEdJI)i!6A`{Yz9jwt{wqEe&$S!9>%B9s zE2JBybE})+;l}{QxWy>OY)e5^%moiuwqEvT5+9%|{hjui9*HgiQHfXybPgw@^B4FB*6S`zJ@hG@@;5|ieN=CzaY}1) zY!Yn}Zfb6-VLEe~RAP5^Yi(;CZP7IiZmD*Imk#K>sM2xHBydu2QnzBTV$b4D38g4O z6tXCr=!T{!mOH&iuWPtnzCxN`jwKl z;<)LWDTryc>AiH|Q{_|27PjWs6Q<@Z<|XDA=0p<iqB#gDbJ9PODfhYxz-AOHdae z`OZYZljod=nTKNlvu(T$xh*4LA`rc!(gPD95)kxB_J#&23W*-Z8@3uj8X*!97qKL% zDrq8FBUuoO5oa?>Fd9R-L3u`*p`cQVS^BMX$kLomtBJM=>v-^(7X^WnE*_fmX#zvzbhiTjZYE($eLMdM=-a$wI8<>3b~ zNm5cWS(0k%YfaKt>jrsHYzC!q@U7d zhh_3**=2-sVrAb-5$v%x@_RltI#u2l;Hk-o&4|^=*|^+jr%0=4av1se-xcFc6=h~u z39k8k-CkXrT&cWtFZq+k5~Zg6n&qrk_qI>Bf!jl`w6AHeRo_IuwZUS*O~D3Xe#6|} zC}}P;ozuN*-QVju_p^I8d6u}s+jOe$s|fEPZ!vEK);2!`{|X5OH$r+N=+-IK^=!|r z(UdVRRy`SdiX_Dg-R;<@ZoDIu?chs{~@;c~*w^aRnP-W}atG><0F&7jBtZ99Ma z*|*vc($~Y6Z+5CcXom`@6%cYYxD(@!<;GNNAluXI%yWEiA0++fFnG6riH=Z<5S|wi z(Ws@v_aOVVg>E&j)~K_{tK_EiX(nGUyRFl)YWEsn74N*g#IwvyJD~lcc69q1r6y^| zuk)F4hpT;8$d=dlDr7lq6X}X*2hWWFFX-^W+LYhg|JY^tU``3OfL>_EH^N8rHuubD z9c~B9gXyPXt5Ug=zPH7j?P<%yMOjKn3enDR&nr*bd;0HIdtKvBA4#9mo4nVqr01QR zGQnYg?fjYd@sGQCstKi&FV+t`>sd3$bGEC84gUqKTBfnS%0L2bXKn90hWpKX(*dvA z8wI&+xz(WdKbeM#Z-9552GW+rF59Lzdj?krh6vFT`yXJ`haqha;KpCvAmmCQ+L9oJ z4?EQ}fgI?`{{48}%Sf=PKXluCo*gL7jietjz zXDZ~DkT{Zbl(-Kn_imbjtsqZqxz>z9*HhhK{;wYe-vYin##qM?qFJSlC+DWOX4qty zB_gSFSG8AHm!OvUYC9-@ri~_J_HeevH`kWtSM>ITWSEqz6uachWZ9(X)V(sqP^GhJ z#&BBeQSur30T^TvH{wSXHD{j~6>Do9udfLS^YaZ24R;I$4SNms1U|Mt@~AyQk3-%> zYzG!MAw;!BU5ciFN+xxKMB@5VibsIc>`Z|M8g|)S6@IOcvhc6r`yZ#~7wAc;X+SBP zt4*)6cPndiR${9Qe@_|3Q^X$q^sTHstOr@I@7F6cR&z!);#g-lHk(x)H`8Bfsv+R4 zP)AefQ)#s7v>H{w%4NigRqNGkB1Az|7x(V`nt{_yCo|w3u(bR5lVO=EzNNM8F}Hg$ z@DFf|P1MS4HqKqvL&9C_xBJtMfY5fEZ_;P-qD9+Ra!8iQRMqn8wSJI?*)`@<>ssPS zUg2JQ7YbSJGyC;J!eShwK&HR9)#YNz&Ry?VM*eT1o|o#+*Dov-rZ}p0%44Ir?&~aj zUp0Z2o2%Kg)U0u@ubV5u^66wNA^+~DioLq-j{3Q$hf1UHK3RsBz^)eqm$Uwa451E9 zeoefUm6c~0VlYB-Id@Up0?k{@DQ2Wx@VOFG<=urY7SYVAHSb*hYq-E*Ww8uJ z_~K_`9yV`gNM;IVtmGVRN$tKSIp-JGbl2@8lDmz2j5{Q_8g8L7OG*u-by8swq=AG!Yj)>+HKJu_D^PTCow-VGcyD< zA2k&=M>k5i>XF8y+~w5A_L;;hi7vG#4?S4|SAv6F>RCj_w^~-m+-vOTIl?)9C-1yR z!ON5zytd`lxoM;HLD5&jTmE{XauV<7)?4H*^oDtkvtR`k1w=g z;MEs+mZ@GccQ;rXe@w+tRU_(PNhP-VoO{muc~-sAkw@^{DZTA00Nj~;XnS8_tTc#j z-eNANLC@Yg{e-7zE?B*M-LAlhY$lF+I{WU=af!<0$~B-C&x3-UCb7kPm&|d*WKR9tHwFg zpCwR4VmSIF-!lBI(E7x0%|zMZkH1Q&QEjPkBN+#x%oxqWoXxisJ{&^@@<6sx??3~% z&alNO%wU!bk5OGQrdU=KTk$TLxYOImw_N#;yU}~EK90bszCnc(LMs9M(eto!#2QOo zCO|997WvG(%`py%JKpaRU}d6LWJ6_RCWmO_DsgOU&l_>;N82rPG~-)y;+toqucHim z0+T~pih}n-7ZUGSQsC9N*nHe#U)f^Z(!Xhbt((W6*Cp{ zD7QX$*7j)+3RfRK8NV*Cwtm1ComRF-nc+nw^5PJr5)m@tX`rKF)De6&kQJ*m!u8q+ zyBax5$8jDVnU1BOvhTe-$^{T`xhmaM&rWS)bZjyh^$B+;s<$iuwx3JePw#Z&8-lEbzt@lJ(FS>dXRSsxbap1Q!er1A@f>;-&$1DheO$PyT0%=%XLHgU>S<(isCls7)TI zEwVRHSWZy!*gJ?{k9Y}n6P)wQ(bT|jd zTB-6&VbQ?IxAIXg20;h7Jn?PIo(xF+h-=BTQ6>e78Pw@I9ap{Y+C2?9)d^rqj8(t>m_S$<2i>1r+Td(TLnqQsKzL#xajD)9arMx@ESDqeE#gJ zsOvsTrX1E5F1u)3XnHAvrOrQSOL3f@<>#hPCrHgBkGCc?c6HifT)ZT|+>2CHuJhyf z0RiyuS8|F3$^zakTfO^=X%>$yxMLePQjS0ad+sIeozx9chetsh_vowNRZR{ASq6H3 z-Lp=8^By)f!gkE}x&v{OdI(}yLs(MR+XaD9K|h|o=a%Z2x+!@n0cxpdJI^mV0Ht4b z*>fKc7)Cx=yjWxzz`&1>^^Ws46d~~tgs5*8g-G2Iw~73RU_V7Yq<{XwIS!56bABQA z$N35dUQ&)bsD|N+GL%@%3!a*~3;BYQ#T6OTGC$XgSAX-Q@;{R(3Av2<0_HaHaxH#c7s7sYA{8dex-1VJ028Sr_E-&mUo*og&_J$bvZ1xM^R&$CGPjQRzlI=WaNihk)`$LRY z6<7-deEF}+9RV`xVs=jDXB1a^n}Yh7yWS5LjWpf(gbMPBzE~eTuJBHZC%rO$UJ2=@ z@77t@5^ml0p*w?S72?E(YDmN01!4kWpBwEX)kdD32P|r!tplLW*3YV>!G1_WN<;`s z>WyYd_YRD2$+nUOSyq^HSmaq%S$Q20yZ&}7b**p(sAc6$gPIZQ6~k$83HP8y@SosjTXh_{DIs!-skqE z;;J&KhPIzdzeOJ@BBsthZ|d5S5DnFO1AkM#YF=NB@SzMjN&4Ri5PAgNT2CJ>%#2Mc z$>s-o*ZwJfIeO4?tz)B=k`2aO9g@=cSiJ6s&m6hQy2ZNiBqq~VWgQFYS zzl8k1a>Om%%v^1p-EEv4iT@$j#MH^dU4WGIABz6d{$^p6=P z7Di^K|H%Fe<^RVhud!!BNU zwmz?Ovhh9ioG2FL8DMHVM+VF$SUB>WY`J|s&-S?GzxUoOv^1~l8f68~Q)iW=-K z%9a674vbv*|3ZZ*h4o`_ArR8R|7Rji1o_?r&2MAR3X=%(e|3WUTU!CdDEZ)hmdy|}hAQXiOCklXQ*U#fVLXY+{Wc(oim#;%Yl-E@#k(x0 zsWo_yP)_r5BAo#m<}dV}xq0W$F2&1wz!_6(`_tmw|Dw*&O zPV;3P6M#}Mq2g&SB6f-@^C7i>B|JdH)SYxAyRv>tCpa(7qQ11$lb;<%#a94+ z!Sb%y6_z$b`V9OX_mK{)^jQwC9Z1W3GR!*vWMmp;`cVx;y5fVy1YozEd)S$;(fjJ%!+%$7AwEG=3NQDf$_ z)ezPX%Gq`_ZkdcuZr5x=;F}`)I1$?aT221|+B}^dpGMryx4a4Hp5d=0oX1o5_Fs)L z%&QBbZa6L45r-g(27(5IdwYZ0nkf-nxDMbm5o?Vl-mvR_QId7dkC?A(c^squM$6aM>kbG^~$@=jgl@_)>ka+h9PFnaM4m? zH1w303~hkSENELI#3uj{^{BX>q`>m1cUoXtTCrnsxnS8fP_*83$d0-;ApL(!1o4~f z>f}&g55lsh$=Doq&HJbr3yUBpDLh~yI1SgUq_Td-uSyufXK>_vIz zUD(owf|8F?NCoMJ+8p0Wy|EvDy6Q4Xm>3K%(y7;Q8kNeiO=L5H9sM!#R0?@a^3O2F z9SXgsw@IF#+FmR%GU$pOG_$Ukqq4m(s;e8y|1B#X0u15tK4%m^64-v*XYF32Kz%W9 z;_T`#>_uShsKOcoP2K(u&@sB()15U5;Tm9{muR(%A~)nAn2Q&9v)++5RzIvPvvg2$1Va&jsQ$~nObpv zls~V^nLFw43EKVP5l)VgaB`GRT=ED**&XLgY8pv>eST9^hG2avn6ohP>68gheZ&s` z5sFot6gnyTC*zF1*#II#SM_?v z_fptec>&2;Lfqz?P?fOI^Yzu}p-wcpUEKuPE+H#rK0%qj~;JQ+_Cg${FN-p5O>nXY4d8(9Ye>p6FORX3(~U2sE+f(UN+ zDZb^U7&)3Z!bykBhy;KV$U&a2`?CISvn_d9A@IPra6g{`rC>S5+a_Iaf!n>Nel()D zHiTb4LBBF%rr8RN0VCrd`j_wEiw&7rug$MHo{TGBCDy~~tmce6Lm zr6*r0K~S}mUyxySA${y#@ zv7*vin4c{Q*i0mG@{lFcKKp|gs9O3o7w+pV_w&!!9uj3UOdylp1g`S^D~sVsJ3deh zR&!%606-?sJ2pBy*if2tn^X)ebd$(3QKM6ku~)kB!o`J3T^b81jYvWSCEkYl$}ZN9 zPUQD8A}rNS!|tayU7)qzV^jiL6tR<(l^nv3;cr65PJcvIQCa6lWRzPY)(z0qmY=em z9(R{y6V96Sz*tu)Jdm?msE`uyo7H?nq@Ho6^NB||3bV1SkgNYtv18F z_>1#-NKmql5z$wh|JGc2{WJ3bSz$;;N4X!!iF#Q0lwrp-%=T|E^;oNB^YbAbab845 zxYhChNb*SIg+~l2&L@;M4%N-caaFVoVm8t>(Y4x4fg(ML7Zk7-m}KB~kMg{!6%_-t zVQyKU$%8vZ!}K0i*cOx5jNSb!sv1m8Y#!s&u6h{jcvZ^O#f0!Ghd&UWC@2!tzxp-}t{popKF3(q7q=Mwfzf}$-hs=4Al=^OI zM-y-W!w_xUn*|$08<=Hkrk8*})p8KL7NsYt05;(AkNwNDI9IFWt31}hnOTLf-T>ri zPj<7Z3_KMxhq3rh&dimo(XAB8m_jO#_8--9%M^q8z?MEO>7Cz8%ue2@_$%AmZ^x_U z?!0$LR7MAocvnV#_&us_C^ynIl?IAZNSIj2H_*8Bh!0=Or@U05`tGy{W4pO+ZOw@8fU)L$o zF*#-2VzD`{sKsw~{yHzMA`HdM${&d>vb6B9>ba#CepV@@r5={nYqESH)4qJrPjB1R ze4`w|9dvG8qeo#B5PYO(Hw-76yc1heI@d3wnox5|*G(J{jl&P^vQMG0LW(310AD)8 zqdkOnRlhqEv`>4jMCrhPVicJh=AnH*KnS$sEg%dVQ|wp2t3C5kX6BHHgfssakzjp_YI2RE5iuRv>__uJ9qJz1^VyYE_b-!L2z zCYkTBxIV9fBO|F}&(k?CJB8)Jeuazn?`uS#n4IW`IX(%$gQlY}uUi!vx`-KWl!lxS zq~?$F7J=PDzNyI8@ggq1chN07I$D)BoL3e; zXd!Lq%HvSImvuhxATK^%2hO!(52v0O1WoYKIBDS`erXK@8J;1RYnuCC z%^3TSBSuAr+VS!>W5=SeMYKqh-4kP`JMH`)z(Vz24?Mw5#}R5dL{_(y&LHgZoSvU` zwIVI+q0`tol;X#LiRW%Yh2Aj45sZH(P$7Zh!u;olJm?Ie-~B)YwGHWusv#AdtmcjF z2IKd6-OEMlew4qM$D+E(|BPN#1vb-qvB~g)qb{)}=3sx1KZm`nc8V0CH^yfzm&Q*{ z_#KaXS&Je^?R88XL(k!5E+dizQR$_JJ4^vTSU=6IXuO!7x0vp!q!-I_hn)H7bQoUNW@{FGfuz@Z_v3uU{B2`7AH*e zAyZQ!^YDn032WLe)p0x%cgM};!lv1%+ww%mQZHUuTDh*l+f-I323JuM%u_iZe_SaF zepOTO!J*AgyC@^?L76zq!cH!frwvW`spSEW2XAqzsiGf?`wA#Y!QsY06mzFfhWA9V z*e0_vi~UCCx@g?EY+|R9l1oT%d2Sx1p;8QOeidiBSE_l`O<`r;k+7BZ|}a2ePO;$q=&9Xy2{!#)>P)ZHp!%Vs+6 z?A7W zSe&0RoS8I4zGKMSdbJgX7SFfQ)v+5`iS1|mq|1?2i2Bn&HZx_jz_3=X$zHkXAUy^f zok7#bfwk5;HRGT()jSKOjbQXco&Rx^R(*Ndq}rdWX~dT$KsguM_g)}zf-7~cO-QD9 zM%S}MBD_9}!`n3t+8%XG*&v`s6OZ>OaB=So7E%MRea_e+B>*w?k~)PYv5~E1XhA*f z=Tz@-!fZb6#n+F?3UeGDQM5;3BhNcTE(?RMX?<1_0d@Gepwrjz0vfxD(vcSh;deAB zEaRgcMD=Tosj^&MoRTZxFh^7S0iPbPvR*sh9AC+>2Rl}cgR6Xp0tRL)iEM8tfhkId z*&~-~%1&Fa$D^-2jxVi!e(xoQ%A9fX^x~gRg3Y`9L(ZvAg_SBV`+=1bDUz}mGZfIY zqcoJW3YGFIn}Ja!L1epIH|EX~v1_tHM<)(k@pi7sa^Rl*kd=`m=7M{4>REQ{4Q+qr zvR&78B11{!$sX`*EOOhcos$=DvcV? zttvrm`PyIui8VkL4CpX?U2k_W%XwuGZJ+ewdJo^k0mw{CkJLUvY@W=pb&Eq|Q$14q zoJ_|Hi0CG%f%h)-c=8St#H`wV(-#*QQDquyF?~SPNWkBH09n#RyzdLccs5-E_Ls{d z1NVQnX_|_E8N&i>9w{_Ao=2eG;b~_H{!*tmi}72 zYovd-_cWodYcsX*s@e`IZn3+Sc{84d#$j5ot}%UL@~8xrRzeE<@B~T|=JddfoVT_A z_icus~dzYMwN(}9}`M4z}r?y>TGEb0Z9ZV|+BW~t# z4UHgDA6Tp_E6K|3r%i8f31iQ}#BuH@CZ9D#uioETSp)|2qCABfbZ#`aHpfWFo4TU9U(Hxs+l{W= zQ=^=Sho`&*+Zq$1Va2Si8E4FpXWdTfGNuDevr;ls$?qCX&7B#y({&g&M?NWa2}?al zqdH<;bmc2(E2c<_4b}bmQOTVH<31#57;42Q>)|gMYLQjuzPCfroFs$VxzRnPavEqf(`04ofe5iS-v$qx%H^R`Y48yNPI&@bv0&iC8E>a zK)JDzn#h+Wm*dNgZuq@Q{!VXtq`A65YbE|hbuwq+fKD zsfnV6cahVg9j$ZkR?=96@z{budPz}Y>=XvyC{dVZ{1K6ESHDC5hKh^NObxeoXPFQ9QW549K6+h<}|bl(oF_lWnMw ze)Ev3LC*BX!*k=%_eQwo5P$~Ps|{$#yt>;E~gkBjl#~4 z8aR{T_PjKPpMvhidW2>$FC(E-7-b%@#+agi)Z2XbN_0A*RuuDQNjD}-;8zHtz}jw(4K+~x3jp!$ADL?19}h_d@bdT$l=TuSiK zM(l2AiAqfCkt1K9(WOUDR)wm?ck{ee@p4#?samw6ox8yMnkUnI=ZXayM$of)IHgN> zf5O548NpxoOn4<#O`sO75qi$akn zqC8GVrrW)C^W_`tRBwgYD}5-#g69o8q#zyp0nw(({TRJ89qL)_quw zG0*gMe#=x#Z@q98zDY*=4bpD)P~wX^!igE5vA%n;`bb)^yy)*Zx5yNp#hu^eDBQ=e;XGja6P=mh9$6g)^_RuwgvL;wl-M4?(tni_#&tav zdYH!7)uA0TAVX3Tg>V%tnjcv934R9sl+Ia%u)v z!4tNiNs4Lh;K|M@`@#IWB$xOy(4iyk8Lbd~inTBimY70sD&MGMI<09pn8U(^X12c_ zCOR`IzU4I~ajI6UYI;-rS-?lHhc>B8ZkUoCMeOFyxv2i0Vy3LWSl)A+vKMYYPa;-r z02ItCQqw2UGbg?hm92)a?U4!eu4)~g5T@W#aZn2FEkyRn=FT7mcYX~(E{I3bF@RcJ zZ~@e3o-eGBq~o*x(%e^eSB-5aXe*M9Pq9Of!NwULLr`_PZHdyGA9-OwW2jX{XKyRn zSct&130K@7LYP7ik-O*Jko}&gfj^!6tJTMyi`zq*5Y=H&3auSD)y~PjsSdyYi^M!E zn^}}7&ZPrKcc59D>?!I`wjyMurq6m+jKZjN!gurTT6jNkV)~{DPYT{BWFB5QNYdms z3n?DngQdhA%1thY-0tDZv;fd0Z7|Bl5t(xE-uf+%FbrY&RjsiD+r$+5W1LreH8q;aLf&Cu$*?d>ZTA5D&sKPk z8G(}I6&ab3-h1pa{e%U7S-?hs8G%LGX&g(N*M%>C*RoNkj)M0o%9DInSj&69Z3-** zU3BT!)_`2mzF`o`qdHxh-{Wr>oBbmS#RJoZwy!C$tJkV0pSh5pM(nz7&1%jLHMN-c z?E6|M|EIq}#uDjhe{%UHXaxo zvinKak|5>Z_k^BdQ*0=&jxKrJ;WYWadDd(eKg18PnOE+?Bl2&AI@)b#7&)XnP!u$n zXe)Fe5~LIh?=b~xq8Ig3IDJw4geNHKsIa9Y`SZO?O`+3PeC& zrQHRG${cZstJK5~+#Za_t*fZfA36^#1G>>ysNf|(e!zZ1HB*wuxm|CQ;2wMSoY*`! z*1WFqjm6HYVkkYa>ZcyezfZmsX!n4@W-88?eSHOxI@c;>7_Tk#z;It ztfH?X;hQYd0pFHJWWXiEp+oT)s?stwLFo|bwsbnE@j2SPl5_l(5 zR=h4Z!HL4uV%EZ8a)3x-;;WiDq&q^;QQpfSt*^!yG*Cg{uzyS?Xwf@U+ini8vGJq5 z4|5`tM;SsbFE!nBQq1sOq7WTMNmcG%Z8(pdQOo-N=r_IhY74DE7M&~|JKc1DBdY6E zhJWP4-wnOj*f7<>A&e6e;g@t#CC#Vz#StmrJRflGeu7w^xVhT#wEDBw%!TaP37KWp zVJ{imLd3Dq`EugmcgqNIXj~`Zp?Y)65aWLI^M;F+hFdl^VNK^#3#u42n~TXc-Hs6tZF!qkNLmVRs2n8Px(hB_T_k-P9D7_QzV-zO@Z;j7&| z+q>S_f@X5jO4On!uH|S83QF^68&`_Tt{v3o^J$iI!PSt?P%xmvtk;E+gWm1#D%X^z zfMVybtwLaUU9$upSRm{L(`}7!Zr(F_I1^d8FwaqhXS^ zs?Y6tvmf(3rI9&s7<-PgV>N(b&~Us4NLp0Kn8hhNEL0U+V`rQo1LM$Iu6P*ilQ7;cqmIOLSgz;)m$2=PP`9YeNfO+$LpAl~%4r zmu@8s#Ov7=O(T+y?IwtBiR$RIKxOS+E7`WTJ*vTUzs9pEYyT|&VONge>t;NT8$x30 zX{g(VMZ`hpGa2P_05w(iG-ZTwM)|!%#7mZ*(1$KSzqq}1JmI-lQ5Hx?UzLb0>ZmeD zdi?yJvO%7B(a1E3lH$cao9hoYIwjY?O+-K9ckc|`VWfDPo(!M|$f@fv1>lFbM)UR+ zo;XCwffY_|HlX_?YF=$)i8+xxTfIbvj2&(sU?S^>+Wo8YoFvg7zh5lNZK}pBzs1fl z*{Ja4c||W=rJW%`5%Y_@;eMYr!Z=fV0&q~H%Ja9-0m*SBkxilQYMI^cGFn{PEKUCe zWWuCjPp2#kfxx_5Mw~tsASC_ih+o zhUMNKSknCyG;RNwHn2?)Oa7+?&sM43HS46fJmh6*CidO2O{my#o6EXPwnvW455X$! z9PLoswh~$Ti(J#Aw3Hmi+CJfdTGShFE@CToQwW=!p=Vx2MEdJG(}oOkCh{3;^eMPM zH+Usd*s09^2CClo28|wl11br+4eh{+HUE7uY=+ORPANmkYch(-j+!(#ym@ejVoId4{2M(o0|#A1K0TsO-#3!~kSOZ!kHrz9G}rajmbd5f@)SrmU{_(SzLn(%VLjF$ zW{$9~8pons2)qtX92I9^VR7QTaB*oGFGpjz=6Ov%;{61K&eV8d=W>H70?cq2M2)*X z6tC55duscgMtfn<1HJ?ewW&5TsWeMzSxny0J05&T8g4yaZcx8IXQT68o^vdiqdoE{ zy8z{EwEYNLN7GrXkT86`sH>m2-S>m2fH-W1gKr&U6?y5?#BBy%Uw6_wci-jPO-2^~ z^a2LL7_5=80^8V42c9WoG+M*4gk?xBE%a^|yDV5?BDH5^O|*1*#Vv;+HB>SWDKKi8 zOd2EYqsN9(?$(-GaQJ$)5zG`|D?QU>UWkpyf16Lkes)Ht?yOd#Hgt=w^xhM;euBh)qz3d37eceVZs2!lLUG;ieVB z{rUY06-}{GS2X~ss2?xAvaaip6=^6l9ARz#a5$U7$vDi=^x6GYWY^$q$3aM2MTubK z*QszEMCwR7hj&G*a87J-|HG)=?XCVWB5kt1K!a;r%SVicw@ugZOof+_W{F!QM0cFa zuZPv0Va2T8UP%RVQW`6u@@t>Go~BZWa;<?=+&j~ITWEo zV+ohT^jV0Mq?@!@gb9%3*R{1%rc%2bm7*Z4;d+a$R5#48Xl2)!FjiPkYvw4{bkk_D z29xt?2ZyqcSp=)|isn#&D@HqLcILAIG*D*%kW{;16U}t{$Axb zr|gpQtR>U5HJZ8Mnahr%g^9;()3H5G)e}j<-y0!cXNVoUa7$C{QfKal;kZxZG)Mbj5pahtl-3eiw?= zMm8G!tpDj}IZ{(Amhz#@O66<89|_&*y5Na|`*R;OdH=A>dqm=7UxK$=(95(gLzbWzJ4-G;=`Vy?!$y)X{0JyjD5l3E8d1Z%^%>ag+whT z$jG}H!L_qPe87SCbnTIVG0iIXw#Bp5d=vAmy-`L2g;iiTwAj`sqSGaI&(-cFhh4;D z6<~yRohbMXjc>Is`q*SLhrON#VTmUks+^9_O1Sjv@29ySFI66k zuGRr`b*+`uGwueJ{qrk_l$V2Rm-uXT=cilr(`f#Ki}~oSWr^cIBmoQiqS3eZm~d`l zD=^${_Enr&(tGi!H9;HG<7{ISjl1(?w1x48223W>k8%ra@_gHx-sf5SNr`ZVpoX$g zj69&yYLeo#6Iho+tHH(d3k`lZ!tX*KDXxVo-2Gp(1-qYfWdh&wUQSZ3bFM%&cg-4l z(I0^!_NeY1(|Cbm)0#e=_;8;o9sr zRV5Lg1;W9IbRlOLBw3-h64iCQSdBMAmx8^7hBzC5ZZf&KfGkCSy3&V$JB}+j6{VJ? zTrX5bqAswTarY|()150Hc2bqna4jSf7(kDb=43Go9~rF0eTgMZh$!uXun&KbS<9iuh6-^A;*goq<=vnhN&c=qo1)n!UtefSu^bYIz1sUq7K4HM* z^Ei9Kd5tLcjGe%ixN;T=L(*__*OB3QVw?MMQrKZS1_a?+p+H=-nCu{_Ro+}Y3CRma zJEjW9?4;+HlM6s4UboX%W_A1L6FQRLhW!Ym#p|0t3t(M~^)onOX@@-96Tf0bcO8uS z=1YBpr$QSo?Xx=%muHMDHrocLJ@O%NvQLxdKpi-qr=_CHdCJvW0n1)L6>F+r-rtyz zoK4JObA)OpmDiuCp{@?wmd#wS)Uq|ZBvQa1`}Asc6qm#XYJtVK=N(8<+c%IyN6rC0 zcLN(0pdw+2tSaJ4_TIX?oxnCxRE&DpD?ua_*O$vm!+(Q{uYK;QXtaIrJ)^=t18SFE z3s%|5xLwh5M~4K9S5ec@*E~!+t%l7&DjSjw1F!e>(UJ_O8XT1B`IqbZRBYw}QaPcO z{=)~&g994OBhrRNVMSu)FI@-x%U*?BbNANLiLY`5QfH{$^cI~LFL@WL3?3_Nu5|&} zUYG}T^}`Q!NghS(kgasJ)lM#d$WD?loaU5}{GCBC$O}Ihl?VYnO+nLI&;7#Z zTu`g8zjht6|1=8Ex3BQniQ4iO>-xlgN&1T|oGzh*RJ;QzY4`rlZn0q;%K}anlJnT{ z8rA(pGdGHg76ao)!FB4+FA1(reLiWL_#Pp>*k@?>*QySP?fnbpVZ+#qcG&%Hz@nIL z0`$>Q?JqaJ4L58b15~#LVzR}}-_xIVFPCV2e3|#6IsTtl-8j#j`J2V{}oG9}8wP%?`bm_TuduOJV zplPsLv|tjpQjC~xcEHoK(l<*KA&!0xU3z@o!HRks!h^wNo2DNBCIXWMuSOE@zs9c-iYbjFJ`p7=-?a@6hDX=d`+ijomyJ)x?0{>wT5dL{}WAp z6#f{~?!hTuHhAb>myfb9-C@ikBucb+M}2}G!|@^ts{y)NL0R7`2k^XJoOwr#{$$Ik zJN?b-Fiz%MV3Ipsj$YvDmu=dEd8e5a+z`^ZSLw={VG#^1YB(<>o6ny=|%=UzDHmn9YEfW~5XxRm4~jcNn5ew<-%1kKp69g;WuLw(&^P!ZAs z9%Cyifi`@6;H@lKQ&NqW+; z%#lPV*$zkzy$NJ5(La10R;1R;%&Z*1Voz1tq3#^irJGwcTUX>#uj5{t+1p=|b|2k+ zN7?lN7111K-_Wk*d_lkyP%!kk^=)!#i4y6iW@;&Zif=9rx-LnmPHH>BS;rT6@7UCkyms>0KG!iEyw+vm_SJ$ul7yB@J$o%(!B;RciCwVO6&DHMU{|Kvjs=R0f7e#>I`3M2zK#nT#&d)|DfSG~6P*o3Azfyh0UO zt!etX*II0V&~^F?EsGp~waC7ihE-n=d{_UpvLdU0vVd*MT`BAdtY1OQ-F9&Mki^R? zcVp4SmklEUIcOJ`V3D{iIe(u?9K*9Cj^Xpt`!zYab}cICT2WGYkqW4}N6ivx_Nw z`Nzl}dJVi;(ER@Evcm@x?a9cRYD04hM|25XK8oxr{g0BClaE0f1TTWob*x&An*u&{ zAGTFvhaPFOzZer54}yjLlE)$-*-uyZPVkl%H5Rv1`9$_V+2F5Xp;yDhzZvYJ#SC4) zeouofcvjZISyC0KNqk-jtYC2XfGB^b65%ovZ~O`;X{xWjKbq!nuS(Miy-~C3Ev$~u z=wr(VGJynzRbCH`DC#iNev~Guevu9zv=4KQ^W2T@m+%y)Su{isq+-sg*0_bcA6=*1R=XIpr7=W=}qSq^*8icN4x$OtC zil-3fw#ft72yJi>g~h+UVG$J%lQfotNE0Z*ms61*3d$!D+_eyy7?1CuBomv91ps4!zK9N{n$so6iG+C}_(?ZXUZb z^~L6S;$StW0wx{vzTo)3FX*Q>t*S6iO)A|~uzAZg=I6in={f5m_toWns>}z65r~OEKHJR4v zR7zDY&UTtA7;$3z51M9K64aOaiV0!U69Z4(>D^jk{Cw}|4bQ)u327aE&#OzGlniRH zli>37b(=HE6ZoO2;N949S5hF)*V_R_7D6;ufHw;FVokh1jGR^r29X3N=U6% zHDGDvIi-!g36jpLUKg*I@^162jaRp6U};_?D6C;5vNx)e)Z8i!gh^IwU2RWM%fH~{ zoNdQbA@vITzBnBDNivZmukWN9TxPL6{JMB331+PFz%Si)j>8B)+~v+LBLTgNFBz{g z_)h{Y`;%F}D_ebgB0K#a?9=rSP2uYgG{a;lH0>fqzR1<7WYI~R@MLSEXxWXz7tCVg zCnHR1TO=qs46HsZcM}Zjl%*BtL)Lhgg(OIqko};i^_SNlzcvu9 z3zg#hMcy#6cXEa<1^ESj*z8O{Bq2YLDCJOU_ia?<>!qdm&ddL)Ggj_%Eds|F{);36Urv|D`-?;6LRl z|BWsL%JJ(IDq1?2Kk@&sNBsH0*b*M6m-PHfuD{2n6FT(|u)kCU3B3c84EfXOwEn-s z02dpX{mVGP1ODGAHjH@po5gb z21)+f^<%dQ|DaQ073zj1NFZ%uo70$K(`Cqg9>%}`rSlQ{I=7>(x zUn^z)rn?W17Svzp{Ce@)3;HYawBf%|05QA?Behi^{o!idXDdgHAQDPK%Ny72l@5u`JvfOc6$I1S=IhJY= zX&OX{TxNXMm{@?fU z6)Fw%Vp3wS(5l!)h2|rZ&V3FU(Ol|YC81f#IzZdoxF?Kz2O2jDG;Fcxen75ufx)|^ z?!98SsdwuC{;t=<_;T)Ybx%oS_!U=w+?vg5`n+YR!ugIknmV9Vdn1w9xvX|zZ)xQ7 zKpwAXu#`m!k!8F6&Yl<3+0@(%iOGg*-3i0#W&ZtYkMTm@ZS4Q568nQ`*==9SPVcQ~ zD$@dSotm@?H>wG&PzpIXOXlXIBp#gCh92>h7j4a}oLy&imhK4$n~sEOf(|ceKACK2 z)8}VF`WYv?pWRijcumb$hz_&`I$;pj?@xYaX>x@I+ORKJOa^!Cjc)F{m-kiLkrXx_ ziD?&JmoXv6#ubJ0suv%*;j{7WAG!ifRq!1`Cw^g!Z~Q{Y)0KHIt$@YYU?qY4gv?tj zl%eg6es6tEhxyGtSGBz=EPI&)yR-irff+BECPyQbsZnxWW;)N!Q_v++0KCjdd3ezwX{!D-yl}neDg$Z>G45UiQiy2DIvDztRZ(1gmea zuedh-m9|?24&DpdD=&-@jjN({JDGy*8utN>lc9-$I~9}A8V%X=9T9N#O>^h1K;#sj zG$#-1SFT@5#J~~_5!q|K9eUfI6D=}YZ|<;F&>js~!3u(}9W}Vl&0lDei{2+mUj5#H zxUH`4`WF60RN#FSGA0g-T#;KDlnnQHNERQ4V1_E5be-WlG0@V3b9%?3lQklzISopc z%($5yZfgH`E3{Giqbp#0{jej9YFG|{M}1H1VL-m=QmItcWpIx}+D|FR$xuiQ@ew|o z?v{?1yymr?T`NdHg&GKhQ?W*w*US$uETbpDJ8yxiPfxHoDm4`KZ1%N$F-XbE{l(Z) zV|E&7)7=k*M?PJTXkbyo?szKae=r(O>Q<*bsOd&a8Zx+3TD666SW0u^ZL_-loyTZH z>u+)KKLTVM#*2aIH03dJLrZVWLp}XG^>LVbapY7lXmVv-BlFJDO5?oLYKBX<;Qrou z{=SPOJA$Vzr0!)?!=9Ud&-GHHE0%}t(G&9kJ4_s6M~o)LP4(8KhRviHk=tCY_BYmsGw#RpW1MMYBzh`VBb}9C zw$<=5(hG5+gT}|jLz5ONpvUWEXid@Fbm{bJ{KYFf$W^4_ z5D~ibY}!kYlaTetvv3FlGAbkLD_PD{fNRC`4}62ETa$BD?r71h?A z&SfW;dvrQmp;H_qNk# zCueq&UR7V$i|Wyv_(9E0I<8J&;$C-;E!J^^YoVzQtT(r9R>`3-5)7Lc)iE=BPT46M zg9qSxs9a5 z+0&NvM)wp9UoAKtUp+lCHD5KrP#sl2cPd0^5SteMbO)HO z^ew0d1-mY~yoG_6ISvX*a=Wxz>>5i7V6CN~1mTpd&*mNb@#uWv(?Irk3i459e!~28 zIf-RVF@u$f%~dHOCmOI7EOqc))1##bvRwj*3;+;#0EY@b*&NaxkK!@ibJbGA7HJeU zCoVbiU=~NMojldygnE3!;|06IAOc+X*56PNs{VNv08P6qKD(^usz9EqLugnP8vG!= zPJV5Rj~F5nwq7&aG=UxCi+o>-iX$n85zg&=(l>&_JW7g)nOfcDA~+q6wtNbb=Uy=j zLxK!kKW`w-VeeBiDiEw1?~o~T_vjC*VR`I(NlGqRb!2R?F#2!auIln+>hnahe*=h5 zpX{47ps*?P=tTd1elGaAQGT$>C0v2A?FKU#)0iD-RiUG0i zyI03&a~>#;+S*q0HPxteWYad2#HhZZY^FdXO*pqp-4{vsqX92GCPOsiR0T6)A;~(s zuUVC#8;w}m=`BLAvT(D&R_==z5=~e64$T|_Su`>J*;mtKiJtd7*Hloxcr&H%R;;)XC12m_T>^s%$!VG2F-Wlvn)kCmB`@3)g-df(RNVZQMb?5~xO$iCa zc_iFBql&fx zKU5k&2w%GCnMy@|CzE_A8;2d)%4SKAI93R7 z3H6P|u$tRxO~$WWiK&Wj1D8QP7DmAD&+^Ut40ma)jny+DY}(P~R}am8skLH5>cI6dNJ@ z)7UPC0>b``DmpWEZFF{+xi7VbbP1&$ zN!I004CeBqJw_6^ZyW;TGzK|lzHDs_fw&!M7L`1F!KX-ILaxgehVVRDA|G)d=CEn` z9KopeTRbeoGY1sM3}--?*p5{rmlB&4 zS6EA^H)CNAwIg+?O9h!sl|Tlu-anhdJwSnPrE?RtMTqxddvt{_<)Lkua=)S8oWF^; z0$O3dx(JAM>2q!_Z88;(=DuL{U^M#PB%{l5^>u2M#uTG4Au-ed;&X!X2ch03+Pq`D zQ_L&AfV0e3jz!uoyqUa?Ooc%A(8|YFsG`-}DGc2ehB5}1Gmh%A@dt;ejv}BByc;Bd zLkn2ctFm8Job%P&tb*`#>TEaiX&>3nNQu&Ave^j`;n0_5>;P|zHr+(t?a6kcwji8s@276uZ zV_;8n_dIjC%2e~=c5^2k8-YlW*tFN>D$OSgDF(}A!>(j}pbDx&nID3er4^QVRepkHcc7{cD-&mZ>QGAr8F6#vghfJ{0P)7x5HF$&7n_E}9kalJS%@;>BH_3xAGzFA zMQI7^W+DL60}}dGBfQ)ZcR(|folnkHvwq2t>#KOV33%%s;v{9Ct^WTRKy4+S?XWYTd;Yx;kO>=*6b()i z<3zUlg~LOld_o%*bSU4vPEr>`*EzdNsy&#n_vlX|)5|cvgcN#Wadgmn33#mZi>9DB z@JN>U(h!=Y@kKPr10j^J;bkcAV=X&F-uk8$79S??<|6TWAWpENz@TFSl16kDLhG~7 z6u<{m)C3nZg!lcxEZ1t1cLK;+GRn1=$(6ouW!*8&ZgE#DQ+0ir2NR>|MHQJ%X41N2 zw3&v;jho2I)(2%Hj3?PE z*j;D4HDAf0bTAx7Q%M#>+ppb(`lLk;#WWoxSHozgz4Y#-HagctrR9Df%3ZR2cX2RM zefcW1^R;YJkOyS?nvuWYV6z5nB!^_zda0ZKFGiF1_<=WU6HNJRnzWYuK z-}_}d#(>TS!kRQ(I=%{}9Ffx)|GdrhHqG@a?DMxNZhbCCgy&qzEl7oK+MmM$NfOC~ z1JuqspCJ!*wSWlvvq+rCsVhz08g_Z|r;8DU9hAp=wId23Hc+~TK`yyev?OyNsaUJ# z);!uM)L8$SE}4#=tc0&?A<6#KN6_St2`?JP8}hd>mZiD3BqjY-WVu!XrKcpT`gla~ z7-lRyEX9JRDyy6J@vcuFo>m(0JaiZ}iD+_cx1#L##nMjZm5=nvyg2ZTFX|0u&nNS$ z*Jz#^dsnex9d|94)=Mnk)47koakf(OR9>{XPpSUHkNvm$KTHJCpcU*eZ!&8mx*~J~ zA2Xg`owp&A(agAV`nI3dE}@A>Z?N$V#Sw1^)u3aQSVx-zVFI>FJehWo-ylubfzyKT z3j;vS%HwGmRe7w7=^J!3t|45awsoQQfES4-`#IGNM>O+yXP|P!kb&sg`%1>y%HgNT z>aB`J_ywozDQ(x0kN~!wFgjGtd)3EsV!ZofDXwz^S~tLOK!hLmu^#ePWR7kMY{(81 z862HGfws%jP8Nz|zxU+|n|bvfF4JK3D33r@(1+^tWclgPM_DJT)!i-nx|pnd5!9H^ z1G;royH%NITQ8~R1CHOmkr_&M<%`xY4Nh4%jqG8Ctm-Dlf#_K)*qtk-lX$P)`Jn0# zVvxz-UF@_)UXJH=e>-Q+MDKR?RQ!STPPWJ99*JI9h<<|?JKmngBTW8aPHwgG9&R9O zQfdFQb-v&kMqfMe7GEj1{n=x|)u(ds>%RZoFi%(Uh?4r_widk;xn=6`!;{euhkvj}9Jl6kv zPMOqTuw;r{d5cBIbOk9eAOiS_i555NnX4T-TweU^Jbgkm;yaK*qmnEq#wl%erI3?`QVRR}SuvL}Ul|6su+P8Sr9(+`# zQ{KKmrczt16!KnfNP_vE%%|a4v)26KJ`Zl5+ub_m;1I#lTzxI1By%zpJ84v^QLtEz z_$c$4*Z!#n(AR`w#P;mvaO;5Kfp1EL#pXQnYT%yZcf|r&D)zVbOlQ^`HG(CYx+^(i zTo}M&2nChKqr8hks?3|{I@)U=aic?%>#Y8KGkDvAs4DzX{3vr>sOTm-s+!q~YF^oK zCZmllV5N$hGS0=bj{S^6IEq!P+OITY59X*=v&I()A>QG6{Xs0zn7yV&OLmp1qAnw*XnC$q?4JZf#Ch81n1eJ)AO1{CM1>Tr)*LKnMzd~=>mL<(1Nx8h%?3ZHv zm_{lc*X|%cFVNOrxc9BvO?)?~>ch(B$s3x!IVBd97giP z*EFp*0DM%u?n7*Qg?8%(su$qs9QCfRg<9ZK{d~~e*JHEF96R&YYlST{AiTkVvWh=C zuo1HfKy|W5eDJt$2G*IY_*T?IQ6n}$MNs3!*c~VeMFjv|IDhnHl#5Q^{&(qk#LG>U zE_p+Y8ZR1H*?cHwA1V$BVa3g%*8C%^O$SNyDRWx=@RbSP!>08jXkOlgli+nBR_ZQb zI3+)q;YFAV!68n(c-isI2>8mF7<=^3`7Hwr@!^xbBBI`44R6aU(@EtEE zDVw9q(E;aQkN14Rl_I2eG>JKC*8DYO;8h6S+5NR@_s0QTDOBLd7$EMta=kx}ig0YH z!Xd^Cinjg`w*GP$;SKgj62pj34p)E+mE=$9V;d{gD|bYD*N9VR0-g{_i@TV}1gpwP zrOtr7aV##&nzN|aC%qvuN7cAhW_QB$weW%H&Cu*23VAP?{7`=!{h853Mzx< z_7D0l&*zie5Ac|=_`t_Ba5a=IyPPI_>_INsv??LTgue*;#+($K%>AzH`fc!8DB^3# zAm!!jJp9Q(%1OGWvp2rIINzRezXtTj>_<5?Zmjp8FY5)pb5*et;#sLZo$Ry860LuD zv7S)p7A$@&pEzqY+X9U%3!N9SB!k}_3$*1i5(gm_d zT|b{!hga1SaoOYG3y<6QA~=$E03j`iC$m28dSbmx$lt!|#%qqYjqR+cg@j2o)nkD1 z{$yjwtpioM_Ja_QfeD6Rz9ur81gOIOss6!;K8Xu~NIEW*Vk`<~nbpE|jqJ$}grD6) zGIsirM$6kT=~UzFh7zIfV{11@>jCUle=*h55i7Uh9oAq%IM`ib$PIiV)Xr(QN%QUy zTuSn&d@VA*H`=G7ppv?+OvSjdd`$#$dAKf;FS%@gj^8F2cVMRHO{&zE9I7=}KsP|>pwKngO7zq{ zi&vVypWyr&d&eV*#$Y}|W2XPvKXk#b+@fRQYJNit@fz5l(R5ieZ>VLB<8g7Q^yncL zx5PtTHt87ATG0T?Zyd zqV{e1J&chO;fgn3^2!{$?XA$qio5jeYL8GFt*@WDMpT{qOsYGt8Iv5VAI_RoAGsS< z52+^id^A@a2AT@5#`U`FfKRAN@H8}K505)tSzjzSIDdA${TYnKMS*Pbnn3I!AZ!?A zPIwr{`E;NaAZP^VFNiT*5IHaQX}QGcWWONmIjj?H5Z`1H6A6cLva+TT${wv#;via( zE6|PF*Vl54(P(AT=&=1>zlk|J!UVP6tj1`GfVSEcIHj;F9`|L5@0>lUPC0+djY97B z0`k%M@T8Gu(dUE=5X^?j^W~<|@ry|vTiNZozk@V-6CHVmP79tLLwBVAdq$IvBibaC z@+kx9(*mTym*i%HZFolwUz>bPK$O;CchPZe^|JJ<;;)jt4~7MFy}?r;Ut?u`lWLtA zKI^G<%_GC1EZCSO$0mA(u+#aTIp5|p46DodRD%`YtH2x$w=xRNib@?v!OKuK$NCb47;u?+ ziyt`-{U!;)5Sak!K7U51AUi@Yo7h4=)ndDZyKCjee@!6&6Y=o$DuTuY-<%V>dej?C zJp0(0tqMXaB7JJS$TVP4q)P4a;_CF{LN~7^o=*es^WNQGH|sxg8E*N&(w#rM*y*Ig zVmPSK=#;bQ;%RK#>^oo+%YhT{>1GK^VmfUptn>FpGe5ycM(pR}Ds7ic znomRV7M>LyFeKr^^702t2T88G&0JaK(?RJ}Q5L_=R@p{{q@-5^4Iqjdkv*6H#+azO zj)m~N{X;iZ1#Wy2Faye}>F7sLU&s;%9M#_`JFi|{g+i)D?(i12uBmR}}kYF(I zo-M-vim5-^k9?jD$&$o>Cp6COlg+*BvlbXMm3B?pd35kMFw2;w`U=ch>JIW8`!Mz@W2!C|OWj9m+3E@^?<@LQ zz|{&gG4ggQ)?PwVFfek6%Qt*XTh{E|g^(|<`}bh_=Sk;~<+5>fTX3);Bon8CzE7f~sP!($5?;%6~6Z5}1 zB0+suqQXcgPW1E0{-=Ez6O#DyUYG6l|9$rdLH<9X6&i^(If>W{c|^*x?9U#YO{rbL zQB@`d`*$2-exqg5>QTZ{J-Z`j_uyJD^7^x5wzBDM#WO7TyQ$ zOld=DOtGQLpAWc>MNK#r(*__8(WXe1HI7S)x-M{$i*S~Tq4H@K3NF^jf3nAUD0srk zwam=0(8`8gIy#TTNvY%+8ZC|`XQB}<-0AOV$dl!~ zwWVIgQt|CtZ%bxkYR+tX6ZD*d>vjU1`Qmi9w|6vkRke1eypJa~Qbn4{XIe4L6LTp) z_T(vFcKj=w@2jemga9aL0TSG(}o0EePPecVj`anLaFXuad+u_z|$ksxhF@ z+zv8Jq`It{*hW`KG^LDIDpi_0@a=yRM1)cIlMb2fRijQ=1{&nP!MDN(CH7y3ZyU zufJgoJZe#4^s6Y2qnnzAd{iSfv1`BGU{Wo(btB6F4KYC7ZTBCW-corKWYWy!&&XMD z_cW&&T1p`_mSz#!E6%ALw-a z1m|4IoXSd<;i@*sze&bvBJR8_lR98*fJcL3Z>ZyzmO&v4k*mrxJxNVx6r+HFfdi4u z*gd`v#9XFZ;@i4*GBbH@Z=qc#4nLVcTqg=;uW`hB2p4jbsE3&X*qb!&jGu^~D9xZX z-K~V(o0cM~om81^Uf;~hq^&KD5g1!IU=%c+gB){SvqKGXUT-tgndRVL0k{S9RtZlQgMw1xAWi8 zv4FDh0B1)ilBbe+YAf~Cff-Vjvddk3wSs1gpa+XQwAtY|`X)V;OovQp=%D~+R}G?g zkOf|5ALqDoZ|%fQ=TRZ&9IgC;OCk}~LzNk5Zm<;A3@wLKCm0QDLh2zkZ_ilZv-|@5 z?LBX5vWHkCRcb{cLjja`{<`tFTJ2%}OPKxH3?gMQSH5vYiL%i7K`BMLd|w$n55Yutx zTML`&gYd+hC~0+KG@YMF>J8q!|7oL>_I(!65b^y39#|w%LaLc$J{6=Da{Apk8hjll znbP|1CD&!&M$P;=jnn?Rn31V0veGrNk`rJ$+&|VzIjl}E@nWF9|GX_zY1WZzWSqJ* z1fZ7^mt1`6I-tg`%_IeB)hW|dhblKIpP8iWJ}B$gY%i638v$6X!m_tnEn3*oOvH}Q z*onwAb61uEFs6V2GLPWIJ(GQ87QV79+I@9V3bV>}@l+xa*Fr%18I_<(=WZmTg*#cUWz1u( zoshOuD)Vqch~^!O#iPKS^K8{wg>9DAi(Snij5Wd7+VTRTuEAiJ9bjhPnT$j^M@E=S zyXqXsi5?`oN{}BtflW7h=v(*XDMoxaLuMr6ySj?%aK0^9vo)q()Lu;e)9&1X(S3BA zISsGy8mvhiBYExjM{r?ZdC`z57`Q*)1QlJBkxhGclLN+DTtt#tRADo`yZ9@5Qd|46CI<7s0=N8rit{1SS$pjy7XjeD*z?Ly$WYxk(~Sw5Re znY1bTW>WZJ|KXS2$9g6X1uq2KT19ocyRW!8W8O~N4@e%9BhLpS$8!6L^CSg!eKq_j z?YndvOlsRiM5=66^gT3&?94nioom@SjbM)?&4~NblTDo_mIkMDWH27mJ2Ec-DO(H{ z!d*uk&{Nq4PA@E`a!p8&w_iG71Q_FO{&AbQ}8&MX41r(O?FiE8x6162t8t1=>ou6F3gbGxR@J21O{4WO%@D< z%E%8<8eC{0z#+0W<>eKbIApIMYzh-{ST$7iR{POkaHn}CXegWB)mO)a(!tL<2yqomn{N^0i4Qda^Ocx+Xef-5V+~FbbK?2*!bqhxs3W#m+K>-s^umib zvAkD&$^-i~WKJ^m$*xTOCf5zHI*8KH{;8lRKzr@)4MoVJEB(+s$uv^FJExf-x!-ok zOFe!p%{qNnao}D!2wD{?^!q8cq*?3OaTYbD2UGlP}(6UO)^lVOY z;BLjKV||RIY|e8~{l3R^V5VFqrV6354s@tdD`Z78P)N)FP>A*2lBM8kExtWEk)eDO zCikd=2i8Zy3Pd+|Mkvp{L>v#mw4_t>8X&;v`J zNJ^*FL@5F4~lDVNLxZ;F^o;5vjj|;6$>D1y`#58(9nU- zoywVe(lR3+XM_>W%PzTkU`P14AN3fdb@I(pj`H%8bdFy$+&^u=6iMj&joS)I*2%K) z(&}8wz5^WqcpnslF^&78C9P3WkE7OLSe*+}wtwVALvL#8bRS(~9NNh<^60gEsaQ}f z;`4YE382o0{mH6iuYq*z%81Y)sUY}iL-=!?{3h_{U}IE zCBommEISLf^~5z|Z;}7Ylm+8J4g-PWn&BxP^(Ux*3fq^FmEf&@6eH8)pAzG*Zp7bv zwrf$O$dmk&zyC5oGibnOa=A|q{!b(Q&&yu&ufcL0E?e=pX7K+V?q4*1%@3a4&*I;u zbA_IHiIWz)=xLJ75wgDcg{WSEbYN<)9tl=H^ODEh9xYVLDe^}DYcBpXxz>b`N+oh| z02`TgK3{|1^8*=}A2y(eOn=+Tjtp)kOYJKCJ-0-FxyAOgQN?dt6a2xgs3Ur6zvZP~ zF)%N2w3Mm;wpCilvwbmOyM+3;oVGy>9(%&F8qIH8$-wTKBcXFuj9*Ch$E}y`4}C)V zIRE#psL1b1oCsa0gML~S{~;?s2P}9|l6_MCZEJG?*oVZ0%o8pA+a;UuW67d&=l!;I zSqR*k=>N9w_X}DYyr6qwlO}%K3Z7%)OKG9d|AW&@&g3OXA;$U5RyNL{QbhU7FU0c% z!b9IUeG>9}2C1a=&LW8SK{p2_aR%id9u4NbG%R)CbQF(*mjm|h=*m`}v%lcq-VDQb zITf}g&JQa${dsfD;xUMa8P+m4e>*Ff zy8AxAW*+6P)&JF|mfyd|%vz3E)Z=z|i`lztfS>~e5Wf!FLRJnk@C z1lY)@Qp61A)~4}BG8x%Fs?cq56BY)1uiShYZ4&OHgI8xFG<7RJca^o-4=AGG%b#k1 z;+oA9V{4MZn-*O#W!Dd;O7~^6F>()KIFm*~8h*S+h_BQKErJpXn?ku|lxzD;@nQ|g z&RWN}O3&UYZO=YV>oMW@EEgmB1QX}&SQh9EV4FHp$p;V9)G8P|O*VmdpVeveCV zS*@f^lV`Aef*A5_W~b@AK|LXMrNH2z^kDI%-bp)mZccv4+$!Q@1jZ{w6;!i1BEo(B zbf*^G5LMXvbZ?5q(aCC-;9p1c1aqpzbPMbk@(1&;&^xMu^ClL65trW$=@6lPPld`S zXn9E-&avD9lhIFcI-INXIbiE@BX_BF?w00*=tbZB&8!ZJwOZzlhIN@S!uFdD^!{@b zRm^E_k%IC8?!F`cIPE@-PN(*)>ZA2F949=MKA3E|Y>B*>{NZMaq43eF?W}f5Vd1Hf z%Iems=&|^s^}Hd=0Hcc8Aenm!FNniCZZOuv>P73B)LuWWyvPc$04~KaatEvV@-Ux2 z`i#C)`D-@(v(l(ryYwmS3KA4P+N$C#VJ8;+~b;aa;+wzVgFE8`C8KCwti6bq+ z9HSC<-Rv|0Y{r?Ex_O6u5z1D{dlxY+LFL1;skj50pKG+Ma(XVtLkC0j(z z_7()KUn*L7HS>=J_D7}S?a(@$J30@HPCA&an@)-q^rvkyN~IQtJ)8#AsvB#umk?$b zsyp|o4`ss-J9|IR)%#|Z*957FWHF`8l;@n1xJZ>U+>_*{*dkSz=Nha^qh2bBz=o%o zW_Oz#7M-+@zM+w9WjjR4FHfgUO8T?3^q^>Fy1ciodJR_2RsUo24E$m9NZAh6izt@_ z8JX>-R?J3h@VcobDtUkQ9yr?F<;re|tOsa!kb;J0+T=(M#YVrE>yLG?ioF;`G#a7@ zhMEFx!$Z>X6jv+JU7jK)dS98OK#a^BbzD%WkIJd|UVp zLunejpXtuBk>$y`f(W$Z`+n=1J9%h4S$nVHKC{N`>b_F z(9x?Z%5=e=4OcI45M(?9kY^h@W_lBCnVOBKJS80x<;oBJiw3)_0{LkBpdL+LK20TI zF$s3acG1Z85ucv|We#jqdOrWeWMG(z#t=^0m2eHP&_8(%{(Ovo;zv~E;*vw->n{lY zxRr$kZ@WsL6T3-&Rh)icrN{%;eUz+{%R2t-?Vnvl@q_gjlIZ|*$loX-{}=4v)B1mo z$e$@&Sc_r7)7<;RM2tGc&VKvzMg>;X#3{k5WV&voXbK#hy~$KAoFxnB7gmu4f15@( z4Xt)nIsHji_qY06GZDXTC=lkSrTeEANSOkb!f@4NFR}g$_z!aq#q}QPcii_*76PnO zC^aXFbpMY1z`Eud@J|r`v{#>b!I6W91bN6TAo9C*&-S-ZP`~X_kspijY zQ|%Ai{Q`e81o$eD=(S>kK;(}&La)+0_n^nS7I~#04vDEN^C;BbFsb&?29dh!Gd_*IrvHskxe6NW6c?aCV$!5F2xa+nLXPFqyRVm-V@Yf3t*rr*jG>3y_ zCM6yf3toJCvccwf&Wb0FU3`O8 z>W}^aZVBxovCBaOlX1zZSA1Q1WEmZFV}509ch}E%#@|CtG{tFDbyw@_-hc8rC548P zoF^I|XfJ@QoPo=2z8+=8P&?`jpLIq5C8RBdC~7ru7A+D{v6gDU6q@CJtzGp|Uq_Kt{#%218tNOLeJOF$y_g+<;yC+h4@X^nB* zQf*eXsw3}}ZI7~Vz#q?3xm5guwbZCvgF&s9>tLagt>-ToLLE^7Zmoh%p>`!?h=}17@g=Y$9Y+6;C9uO=JpWNp{cRyf3f$TQB7`L+vrxYBB0U)1VjWx zr1!2Ou#qmkOD9BX2rU#*6zS4?@4dH#P^5{J00{}bh_paJN+_Y^guS1A-e-^Vo^gJj zKi?P(Mh188dnJptu4~SD%{AwT*np-uUtZsXG1s`qYLnGkaRCwIGr_~q;u7f{dxM{Q zW!1QNm1y2%LdKM-{D}QYv~QeUln1rFVZIV2?r{h}_UJ@&px%9}=?9}n%{8$BSepoS zbOI`TZN|(1?^qG<#2G3suEBa<{lc11-$d=aot8frBNZv?KGEW6)97-JnFlU!wuH5w z-AOBEP64QqNk8fc-#^Lzl1B^LqJejXtJ0BY? z{-&;Y3wlskr>6->-5a3ulGVSY{3Z31@&wppV}9~6nQ(((rv}GVsIYXzMehc&bqsPrWuB0KgC*;n2$jrP9;5ID3ezo4Oo2GZ0P z*;u8Ff{o!Yt&U1F&toT5{j~NRM#MWc)NGsC<9EDe^glKcZ;lHWKz9sy*k5N_^NuF%8#)ZIx2PqOPq1j ztj0Uh@N(-Rt+#KpA4rP>dcS>2l?-ev^gsFNIe{1;*GXyw54K(?YdU!RKgwEt1GNtu zZ=U+S&0;z~86)DcZzf&&bpADFO`Wvgmlg50!ya8F9g@@ZNsaXz)PRR?0rR8;FI+7yDJOt5+y z&DGU=-3d+7l_gCbPJB{ro5j0jP2C5R2|M)vB8K9(7X&mx$!rBYn`@)z&aIKU)JU%8w+gnWWjl4>}D9HlrGf-TNc!nU%So+(>3|*;zoq zpoP80A*K+14Y=Q9zgBOTGX(>bwWS<1%w?XX6)!02keeXGN*5%Sewdr(OsAWz zHJ>LAo;T}vzWg5!CcS#kdV^-fqnqjxI~j>jp9ijspM1J=DOJ>`(KHAR|B`2CTx>H5zg6q=%mQg1D)#}_m#rl@4%bUvey zs8ZaL3Ldki_ZZBKmsLLTIxkt^bn-9{J{HvRI+N4MdNy4;G3e~Lc&Zx8&F09895^)$ z-$W~K4`WD*A$EVxNd{~~|;UTUG+ac-;WI@ z+Z+4ZC>O;&UGHe0DAf?|*`#|atX&ee<5Or6Cia*SW;f}%b)?Fe1S$E}D5<5`V=&Rr zBkZJkbF=R7QsBR=mY^^$ts_0lo@tgxN~HMfT2|bmpfe^Y z%%lcw&-1@}f0^A`v&GMb1~oNDgJw-cHuj9dgu$8fu#cL|oG~_XpG3Bo0e8g_kLzbX zW;~bj(+Z(|VMqQ?Er9Z6o!HGRcF#PR?od|EpVURXiLkqK7iyFFvSlWQ-r4-e;!MqJ z3$?V8lT>CMOyY!ih*B5YjH)?7RW1PNW*n9FoTR*5YAVL=erE@ zcb7}j`qu_{3b(Nsuu{zaYO#x^1#DAlFPaCkRTD@)zmmHo-6%JY;HWt?i*oyyIhLJ! z)5d~YzrHz?w0TP3Kc7jRbr*H0Y&@6-&N9s$)IS+YZ86&z1Z|azdFa1%UXGA7Uf(HZ zo>UXRE!CGcc6b`w=9DLoPdQr0IWH zVSqrEM0P$(xRh}E^N;)~?DGA+KH)b^0xk|nvp4^$A?mVL;o|QYmi_s7a9x1)4kd2So;9i}Yjxm}oQR+Y-0{?8~-S|}*Z-uR0K4x@QS?l5Wie`{N3 z#YuENbpO$|P84vJP;iGOoH%Qzo?btx)A4RTn|z#i@Jz`BVs+Qehps;E6MFAfT}W5=du1^5DD(-*6JO?d+kgV<%BSa>`{4dS|D~gSt$Gix zE6I_R$H}`2%pcnd#(->$p43rZkV#PNjiavPn#Vi(iM1q)Yar7``c851W&J}FW31jc z<^j$N^*rHuhm?H6s`Vq%;2#1XiCx6+NpD*A4=4}LS9HD?3jcfX|C+-8EUx!NlAyQO z?*H=D|MMCNwP?6Wfs{WV-TLpP_z##pTnHrDfTu25ckcdY%l`XainqvUjXwPMrTC!t z1Lf@O?5ak}(LWgZH`ty$d_G=!^@lc^$Bq=Czlc-NJnA^Ex%0p-ln!!A{XfqmC4WPO zbyAk&QFVWmgQeB2V*Vph1m0UXUDJeg5v|y2R!Mb1zWl=`K~K3|QF<)6eRmyJ(SF%$ ze-rbm%KN=Mc^n0)q)~S!5l8*#e|+{QTtT~eBiZqrJ0(mx_}NQYFgPAYYH}KF_`p^lHfGh%Q6+x0Sk?fAyEzH>baf zHf!~dH?vN95eblf5&uALe;E*)%vxK{ZpRzVfX%25ROd_q({TyC8YTa8^9v z!`3OrRCBEA`#2r!`47UURH$o0qX~WadJSPdAAyH%Bl_mo4lldZZ(D_6yj$FSnPH;{*ik(IBAR;Cp$k_)&r~9jvtIJqfV9C+ z;h?guz#ZCIVOuzShvDW%{X0d!o=;Ccea|pyt3h~S+RlMBK!o98 zsZXX-waBTzt`!+yH(VgTs^c|wNR9J3^lKACxVLb5V~Osdt^Q0+w0dKf-QXc7!ya$< zE7F3=9=nwfI5%SlWw8z&@1mOwR$x8S@;+)!r)LUACGcRt3e@g2d~4$t=-Ir0OH3og zdEysLfci}T;dd8yb^+287RatXIMH8kjL~$6EXw>j6Y2gy$|i|LbcGEZbz@{}yB&oD z&5w~YPhnHov>6HGk12H3Kc&1GUPz72i+VZOT$ZX3v*Mxvl&SxCzFkLrB3qv$i%^qN z>AG}Q?@>kL8AcGPu&pepoeAw)&;sM`u_?R9qTfxr@VTy(oU7B9_+&PGUjI-=Sl7}o z#$J`&9pnwadDkAS*98u*x9Q);3Km0*%45MK&?~qjVdc`pj(}%Vf|=c?uJ1cKK1fB# zVn^PJiWO8?*L|2?&+E^6B7r*3m#s5L=Ly3Az4h%p6O}O*OohYMcN>S(b1JNdbqB1z z>Pq7o{ZAHM^?;^`cnzKENiOEn<)&;H__#O40x(_75_W4??l2$F8QgMknOj9MD+5OW zF2gPtY#U~Wm=oVLiOMTzn>nu1lOZnv@HOv(npA0dGH`#L**j>OV@}K1@!f4O0BbMtIgX}S1I#6fnJ=vn?T1vOZ0|d6-pKE+ z8ezp>2mIh!b({fH(bpB;mVCgAf;ea%_6#u$i3ZL&RD4kt8c+rxny5tynBmmjZvwU! znKlOLAV6$kmWAJ|a9^3?K7L8Xd3hP7tY8oQeFCdUSGxD~D=Ks|y^D@+v0m3DUhiEu z*)|(k%OAMx>y>~~0P8k7E=zVfCCdy3ZZj+6HF}eGP+`m3dS!O6RI%|*79aB_)hu=h zbHaJtWCy8bgrTwRu!19Gu7Tq=Y*yyYLKdOiM)d*0DW z|BEBD2J(fnKOW$2D8E@+$Wz%eqTwkOtH051QDMMdcWzmssjas3koV7-LW=dG694Zt zVUp7W_epTRz_Z{gqCb$F$O%X~Y>pAwV4js&l!hIRkRy;%!k$qi$ZMDLtBT$7(=MtA zR1nwD6w_(PjD%a^4~mw?rP@i2p-uIU8x$;trt_kTypUVV?HdNjT6h7Mq+P@7_OnbQ zsXEPOIf8S7Kl{dka^?uw-#CqWj1TU%w}d_KO=Fz+0TOx|Jh*IJg-Cpi&5={zd^3!b z$1dA|UJ8F4h_h@kp7RF`hg6+fI=?MRRg(Q3U&%Z&%4dD{I?Sxt%Q;Yq)mgUOcj#oT zfPPCGb>0F!&E&@kZO;W(G|rr+XR?g;*B4uqC$adCr-Rh#-+`_;qt2+7O9xE2F9hD_ z9CsbYD93}ugcJ+HHhUdoch6DS+IXJv0|W+BF6voeVfqINPg zMuZ%3p1B=c6EOIqm5Olg0G_W1Cyn;VgpP|Pe(z?m=YyP{IA!iy=jS&wnYGpVFrF1= zv}N7QY5N<$4jT;lX2l;)nK!WmLSoTGBOCf@)WjLVr|HD!`S7fYar+UZz|1u~lO>>3 ztZ#Ts$D$d=QsIkd^?XxB9AU!q$Dtr@V_s9~I|gk#c2cvNy}PcZMsa}?Z>Z;`{s$Ja{wcknh#M8us4dsW#XFY%@1GPOZ(4way zd7`rbN3_FYy)9=+Qi&Mz^cpHL=k;Vl_V$pNu>!#olq4Xku8a*%%ePffR7y>Z7`|c* z@0ukDT3UZ7uhC&dH4HR4I5qqh7-+6q-vpdqP;uBj*A`E}2J6kKgx^K0eg3zl>Iu}+ zC0^$g*7&(_s;8jgm$1@JI-e8j*!WmW=dkp^JeEzGcg}P5NOJy}q7^;45_^s7Jgb1p z7CjMc3=9nP&Ne@`G8%SvkWmn>tJ;`U0 z=P{)2BdP|{@aV&y23%Nhv>FdRH|TIvI7#_ljwj=CD+PdqVrBgLoERfrdQ|eTdEXsOF~@esjlAj^)zV8hbtZqi+Y3^ zK&8-7PhYDMEMfE{Kvs0+0W7wpA=YCuEpWxel3)o;c{qM+SklA9I^>`mxcvFHE$22S z42)LPq5wNE@by5;Bsa!XQS3ARtoC)X+**^z^4!n;D;WzbMb!;{qPSCGb%m9Ta~61Y zA;fW~NXvkM!M5u4brJioj_4a=Dy_z0)6h4tMy}U5<7Bc7)k-B^QAY==!&|~lB?nay z+NQ~wyYJ@oH=0t(?1z-Fze3prMvPCiaZ+CkHAJHWSz8QxT}amN>&pmP_bM+C^Q9}I zwo^`1Cj<9v!7b`k=4fQ57x6k3a2=0WZh3LyNu;j* z996*2UU6AZI${#39<_sux-?a?2)~9{1op`xBo3U=f%k;Qz4px*Wvb&Iz>U{1K3>4x zSZ^~gU+EK>)Jf|Ia|YymrPSNwH?oe#_gU^szwUBjsSK<-s^V)qw#yhV{VYpNDalGc zW6c*pUX^Z`5&-l+t`J3ZMCO!LZdY19Ah{f&&s}*#KIr@916_{4!xY73@#+9S9$yX2x>(%iSWc#Bn9)nUQ_5Tkwe?wj$zgJN@?- zsr?hJn->Q&o{(RPlM$vDs?t2qf?~+E2o8jEsJJDslqGGSBkgcH{6?`bx+;% zIn!2&EvS|f7)P3Dg>y)yU6^!+o&N#z*cc71T=#lkqy=yf6^r8Iky;36#&+w153u= z>$H-?UT#bvCiXObGq|Os(cN~wq>T0ThkpY&Z>yo>qTh}1#XYGrFWaBpHFL!9j1Abx z>Y%+`~TPr zMW7=V?!%@gsi#C5j3KZPG3M0%ntuN{+!y4mlnncLdizi$??y`Cz+Au^s^I~mDYoQ; z`~|%f+;wGf=YIFwI#o)_>u@pxKmQah)0=D5l^&If|E4}*rz3}W+m>WPQOwLR**7M` zk-X4%c@hH(cZrL)8CQRE2$Yvwn2RVam~hHWV?w{o43D!;YLc_J`2`Y;v*>&(;6(hv zx~Z(b&*~a9mD(p(&unGfHI!bZDQBK*0x?TP#NCdj>ao4&v|f1Ce|r>;N9`?nq^*CN zc3+baEuno2U4b4dyS@U#c4L+}u^O6h1Z740O>I7>rM*1PaB?qff$gSlK|8mm)rWca zHuL8cz2vJPpFQHcT2l^NA#>7g3r4pteCLOk@s5N!cdzSa6-E(Qs2nDMCuUVLP)gW6 zDyv0o$anAqL#@fqa%$go(l$|Ka?eOFcYS)SnoH%`qp-M@@Vgz zG@#Ret&U2n`8N>E%gs5>92y2;$FY2#m&KT-XeX60um`E9Go~p}p|N6Bmk|fV zos%sEp~u^p+-vScz4hd>0Auk^m2?0FBD?|AF-cF8nkqu)!Gs&9br z*Re@m4|i$96YZNTR{Ch+eKqKi)R*gI^odr|2j`K;>1EB^r!#vqW}u;4YM7}ylPcsU zFGLjB==0gaAsKtMkf$d=Ka)#h-VGAFife)ijpzH<7bRqhvMZ)FrfPg+!_zLuZSJAI zv0nJ2e_T4OA+#u;#|Y1R4Ec|H4B=3FzHq-6>06LpIk@FYqcqXVY=70mmetdrs^_lY zYRSh9pUAdleYn&yHTcJPg?JJ6wR~cmLYC9eh)>?hs;}D1x=USp#PFp3*)ZlX!DFF$ zP`d5UlSy}qgC5>LhF}rw#(B=0Iln{&v6F-8Uj{)Yz%)i6s^KXhn`sWB7MhneYL>TM z4|JTxTftp*?1i@is$XqkLBlcA(C`Joa{rSD>r4 zNc@kn)H&-w4RZLO6s_3}TPFw|<74|dXZTzg!;b1jC4m42h8Jw_-&@=$pSxc~DkhMi z`V0+~e%16O37j>xZ<92|r$xCR^n)0ahZq047^_R)j9j_&%b zW^*-e=L15tB(10XxiJ*~E^FyQx`w2BVaffL!bb*L!jD~&3Qy^bSz#FT2*9$-&Vjd8dI(}^oiijPr(DvND%n=G8cD= zfr`k}O}pUW%>1T;I8<3R@d{ZK=>(U>g3V*RMu0BLyOt~r6zW-vR+J^74JlLc1`6v| zN2kf0uU-R-cl5o633te&8;bV7o`ZPFrVZUqeUf!EK*G2zq4I&D0z(dd{Mn3SNV0If zyvvuVRX>~CB=G&O#G?hWi$ei_u!LVEvT`YO&`!N_g08fR9@wCa+Q7O7ONG1x;$&#j zNBV2@zklgox-?%@Xb?1HOZ_ih^Pfi-Ke&*t`vPou{uwIh7XO`vCre3}m)Ys=cVL$M z43qy#;Ma<}oX$FMxBYT?stX_OTdup0{uxJ$mh9z+kGh%k{Q7VBn~eqMPR(dNuT5WY zz{3S`(p_hE21m9JWvmhWUgV_J_@57`r`h3HWib2r@cw^>eyIF@&pPU=wa-Nvcu%yy9OJ^FM$7&#UL=q?|P$_2du#nuPycd_RAYgM4E4>iz%v*m!l9V%`PQCT7{$as&k?5XtGlMWS_vk& zEfQX0ma3a%+wYTCKwl$fSYdi6Z=z?5^iqQ(mH!BO%AqB;S{6Hw>&Jda>`eE|-|B z05+Lj93r`5^F~*JyWw6>pQ0=^Lo-g(D@lC+hCC7^Z zqvTW@oj%j8al;S1%X(+!bsOM1r!F>_QpG8wrZNp6i+=9H&mx(EvN@xex`@1}UYXrs zrG0MSz?Ek{QT|ZwnM{^X3H_2}s zOBprE9;6)jtQ^3w+OnQHRNKD0WzE&L4@yi#+y*}q1lW+~s6~eydoGzWxr$muAf#cT zKV-j~UsM$E1Lz3!&vM;DiBm<7x7W1?l6j3XxyU;Xr;OvI&}rMEO-FuJEe`uSzQ1ED z`+_~6BVC{>#PhxQbYJz*V4_^{U5j_$^$sd`Sl3JWwp=J+?HSps7O6`afupmCjZQXZ zcoxH72lbz@l6s*fL`wrnj4yOoz`|6yy(GA9dnBE~0@!I!98;{>!y{7Ca1E@+gv<;S zlkk=;Z}Le2r@V|>R-1%A$Sa@b?yNZ+w9M=aRwsuGTE@~19_i|2w!E$pHXoPNJhS27 zC|%Jq8P|5;CIKsL19VB=SU|QtKeK+bpGp1Awq_(`hr%m@f2K0Og*f^}yq4cEY+}$o z1&2Z$w&$A^IdShyF{|{uOF-8$h;0Q#VR@JN5%Vf}Y5lAUIm4gOmqX{$ihZ1~RZS_# zFZON#kJf}>UHPyj*HtdthDtFN_-|FBW!6T!|B2kyVSiOk$S{6mzRjRZ?TzM2^Oh@J zo6>4x70IGyUz#69fVehri$nWkc`m@BhGbB9ricohk5k*u-#&S_+ja%gQ%7Js|FbiJ zu4b^biC98K#1?4EoxGGscx!5UX`s3ghz64`$%Be9+!Yt}(m-5A0>tEdkEV|bfATi# zcHluMon}V%31bCvo+yfm>a6i^%Rs^WXEr#``SFtzC)vh+-NH z*XbBA2ljm;qg6!{qbpVKkt+B7_84%b@(3`Br@d#Y8VQL&{j$GSMl!owEwVoj8KX7* zEyO8X4eisi`nY)U0fJ4&pDKJ$R3K2%ZHDbu5r6puyGVbVbok6e&3n$6TunIsHuG6n zqYpGxiX@8Q4*j-ts+ce}E}t^Z-Cs4yi)&wjih1>UW8cD$yB{*ApTr&b9=x!`&q;Vh zWWoaThuapU&MeXNB;#XN{5+80QJ!LFwFMqW8ZUurv|^#<=!Zo6Mr7&gW>C@wu1Y_} zsk-sZ#dp$8cf2TC2Vo))a!CSYEbs!YjvbFFHTV0@C7&6%k~aY6bYoVEHol+WgD10C zPwxQfBZvoq=3SOet>vPy8G7p-olFcxUM5Oj*)+EqWj@6z}A zn>~qtJGQUhlDE5-X1!Z`I5(nr;6|`Io0ijni2ZOBT>;$=1g=OSZf{5gBxQQM`&as#HjvY}%gnc9?a!)9vzK5nU!E3^jVnk{#-5Os0id1zjkQvSQ`Uxp$>Hdd zf!OFF_3HF$0&gMP;RdJM!9GXKRLbJby7%%L_D&Rx1S*R4v5ENNl1fa}*MSDb(3J;k zu6D)h7&d5EeL!8Cu*jBw4WFp^doj-AOhI=8(<31bT)1p`bq@WL(o9kWapt+KQhLSv zBY7N7HPoWQ_zLR?!s1Ld!&DM}h2}xYGz&vTBmU*`EvH;^7i>jGvs0s+@1ObSk}KS1 zn6ghd9~%x`qZAQm5U%%+K7mBjW?0YjdtOAN;TE#$@IJZE`RXB!2a+hMXeA}_I`s;Y ziG5fjQJnSef$t2KKV+>&1JcR}|-yEF@bnr0HpnMf)3Mi1X~T~{VK zAHz zGiv^$D_qW5(y9%}I7vWzL6K2Q zguHeDYTRYYExx`|QByA4Knz@Og7FtPxa=>qc(Y={%*=k~toT|gdBI>M{YF<`h4YYp z(*$gPH!EX*E7$<1@4dv@qDoHg$o94DlTG0p*_&Erv|W1q{sjk~s==!s_)bOW@lci% zlk%9w)PtrsoqZu7pRv0C;bH{GLYSpu!D;8 zD!2qD<+v4&qo>6)0mcDFeSos%q?6{;?MQXCGQ2oG3r1MiLAq}YEpM49X~ZQP3%I~5 z8xj6V4(kz3BA}1pf&A*FmJ}~yxbJ=^KMwRdsDAjPF;V$t<|Lm^6LNLZ7v0R>B||>^ zc=a>DR8G_>S(} zX6*^sjFrdDo&sR}o1pna0v-ofb6tv(3Un|i*e2>sTVouD*`t9v-&NXTOQJBvLEO)(((Q04CJrU=gcdO>O{9j`!+>Q5LJLt)EP%BV7_w< zv%Q{!N!!R|BT%g zVm~in0o|Ao?SaF!jEbVrOYFXrS<33Z8ttZpuK^J-?JIjS1_-!&Qp%QVJ$F5i>$h(& zv3i9q$&v;xa+2RRTt`yu`gZo!x56{0=TD04%nzCaLfh3VR1Gnc{3*`Lp2dX_ZFo>2 z1fk|Mmr-hNCWS5k{fE=mNLPJp_}4M{A1z`R4&=!o4=??Sc+! z4#y6YpwY-hY24Co9qXA+kzz8F>8RHlI}*B?>J>0jQA8DsoY7*~Etfn5i>_8zs^hyM z^A2{K0g>-~@<*0h65emvvRKAseAv~~m`%v0LB4(_9MGiV!2#@xnynrFg&*|E_1(zC zE~n-)Z3P$*MG@lzhT^C>~z2kf)1&u0xZWH>5C9`@K{2?-@SO)}W$>xg7nWhe;pq zTXpWAT_WdOY*Bgj{B#o_?FqD6VQ?Cfn(4|ZU|nCAXTs)T)W40ij0%sR^~Dg9>};T$ zOhAhn(N|Ful8ncvWxi6-f=q_7?{fUty7_cg*829560i$!GTkzZp}{1N)|JL9 z8GVZnW9OCP$L|zkM9kaB-#$Cm#;o~3!j5hE&{HOzzZgnWoHX`1-8L{A#coSkY(QVLI-m2hVdiF=e!~Q+9pJ4X~3*0WUTFdic737B@(_dytNflXwTngaS@hszd_?S z=#ljuTl|R&U<+1tV)``_P`8M7^Qn^*Q$pi?C`(#i{G7li!40=S$tTHe+;aWT=q=WE zWa@oXrHzs>==v2{fBlS@xMOVylXJ^Zgg&yn#NsJueM4{Hk*2KIp~S41Z=xw4id|=d ztc7ZJZK78u2Y#Icp||JpUz;>G4CMho$i@%S`78QNZ~JXBWq2KWn_-=BDRCi@=`ujwq}jS#B?ut9UU+Xi{5Qzpex!Mf7Bj88w?{Z$NPe^Y^eIp5-6^oid4y3MCv<)>U~v!{jx|qTtD>i6B1KhEIb-l6+^UTwH#@77k-gTEQwDicK=&$IU{}M$hf&Jk;3IvfZ(0nF3-ty3(@gH zRbHpp-`AaivZ$FKmr`3(<3Sm5bzd0D=w|isX2hbFGOrRRex9=xmhx3nnd)K7$ShZ# z7`&8_>16n1V8u9xQ3Z!u$kJw~M%bs%N!69izO(fs(g=@mf4?vI^4wRl@}yR~37pmd zG?VGj`Gc|MNO;BJapMhF7NO6X}T|P%!k2wsa2aS z$qMHW3DzAt?*6_mQglqL^Wt>Xqs6fjnG;m`e|}CFDAU?1F0nPv4dhj=N4aw=@)``% z@@fxW?ey=W@ZwOdaGe)Ta$ncu(V-URrll3=dGiGR#`Nn+;BX6h(sFHc&5?8#VtF`a zImNyW1YVI@O-X5-kj|@!^gG#oSamA&G|%^YModx=zmJT4g3f3ibLkL)Zq-&b8jEgu z#Yp>0Y|Hgaqh@ARy5R;OPLscg=p4f_whgWe~m?V4WLN1ky0F}>eiz{j>&Gc?!0 za7}3QYX}o^nT+1YTY@!!QXGGCs&~Px`-YT|19N4VL6F?fC%z5qVaqG<^f!#}ZgNa| zs~P`9Z4(V$_O*+uty}IvlIuiax zyGs5O@NSY#71Y6rGH1))tHbLLy2rG=WLb30)L_LizMCIu z420T3Z%%=mn+}dILlUFo>Fp_R+&ZRVMa3w77XnOrd5|kPK8T$1 zme!WghahYoR!s-%tYJ;(x7}1ou)MKqFdSgnip2lh7Ivc#Q%Y-uWMyv=pt0QILtX>>j z>ZFEW7+5P64v^#=zJE0kBq^$yaLue{**Y%j@UekL#;m-x#D|_VO*5#7PmK!IuRr_T z*Km7*zfiU-C zjadubGx;%dt5y(SOjrho@}vPQ`wV+`tpNY&qvt)L0O5ktR@EZUmjaT-4g*1Ef{raz z2L}|1UFxOQGXqUR$7Y6(OX3%0!+%}Bd_Y75zv=#2Z141i5LmGOl#R%**|{v2w-bfY z=Pk8NqY|v_5x$ow`+B(wcfWAU$k=@EoBqJ$2~mcnW--ZCPO?YZj5>WKdUW~fZJf;x zvj~?Ix}#jhd`;4m&ls0nrYQEC@uRlb9M;h$?0m(Y!HX=9*LQ&Y;odSk zi<8;YvnWydG%RI&(uc&2Ny?z3R^ndbwC+4s>`qF;PE3uAQsPqE^r9+A^7`#8Atr=j z)6$w zQv3@Ozmk*DD+G;kkKmZC8AkKVK1+|XNj?GiFWzn&YC8a`1XUGhDlUDh>xRICqgID1K9)} z)MxRiZ>THLxtH(!g)6;a4pjo!-W*U#Lmrq{bnQR+X`|e?*$;0nmcK^F5;1$`7=E~v z5%2H)jwdd4vq4l(45u{2quM0o^S*{RuO{}q&i`$_IzmI@1wk?|;Jb#AsHSHi{bWL) z9|_Zs)1G_3vbl7heH%`NBI=AM8BU%B&b&c>JR;6K;#rn9@Acg=i4$x{-aCt+;l9VJ zx7H{{|25&N6#eQ6<5D>xO#IXdz8_hcpW!y2D*W;NV9Gvrcj^%XNY}P3w@%ipKl_$a z%pW&tyf3%N%B`UHfX?7&vIp+rG8?3l|K7o5-P!ghiBjrAN`iE>3Rv0cpWgz5I+t*2 zk-nw(l?B%%rHbw*Z|QSU$*w$ebeo(?+NAT~xqQW&bM& zi|uzm#zY2H%oD&^x!2?0-_6ZLYim|Kg0+XgEA4uBQ7isy)yac_U2JA3tK zyqpwkx6S_8P8%xG-yytZW+S);`wH!naP~ucG=LvUjsBw==72?%e$P z`~{a*VV?XsM$Fct@x$EQW_{II$DIfL9UB7Dw&br_&iQV=)~sdzS8;kRfg2;$1_Feb z3Q}o#?*%f{at)QK!#Uj(CHSB$ao20Fwn&!rPg&|V{nu^JFGqj)L$k-9Cf?}(+2`S( zh6^%pFNIEU#zkTK|Me&6y4w5C@awnZf0BUqmfR(UK_fqi zz=NADQ@U4jDbJ~rtU(6hrivY;;%66?``uHX%RK7hpJJx6?uuG0`h8zrSz*xjRqqf|-fOc_TzPC;C9zYty))TT?`CdV>3mo7y?wXC$I_q-As0lK!*$z>3jNPt zJbvC~{$f+Fku=XiiqCa=w&1ta!*5PRwHSgF~;@o$0D*EBD4p=|plRpghW7eeh+0*+4EMzEeXN7eJNQ)>;B{~+;FK@Feyjr6XaYoWsNO>rN7^>*EU|(MwZuAMj4_od9RG;S77(hUCsUhaK7^Wp9)y0WKW4zXmE*4w>l z6fNv-!9M(!It~7|AZVawe)@&RkY269!*J6uwz~$32!rct9od8e%jP|}*6l-q zr{1Dds3)1`AFL_L=j$n>hGmMxWFPeY-SWdm@p+4N@aX-}h7-P}mV-ui8ybC=7P2R{ zbt3imnQ3$tZc0eoi?B%LEDbj}SW9Zpwvc5))3nkBn-77rYAbn)%u zW^YY2jc%p`t*J3JGq4xl8Z);r-FMncV173Bz%I4?$188g4VGjX-{i!`-F@Ese49$` zR2awg&*al1NZ^CS2%#jWI6|by;G*8{=h$tHqEuG5bs5~{mtBGGT%JWK>2g=(tUmw z%T%w#2+&CY9Kf3sr*%}QDe59BI*X2b=DQ>kF*qVDXKx)Rcr2lG?d)xZF!*6Zx#bIK zn~1?Rp@naqXA*HK;;l5{lo{_s(-1}XT+fc8p9A;>v3hizQq65s%&bYzA|y@ps^H$H z5|_xTj6yc#*~+g+BPj^Drm39@~Fnt{@sm~57Flk+Psj| z$N>9saV*oQ`x@E1bn$DV8lQ5{g5jQ$g#iOq3UP(kdxoO)Bbo6C-HR7{5g!n^4a>R~@W zUll%C{5i*M$j*-$GdFnIYqgMQA>g~~5j^}LLK>2kcU-=&^jwiOh(%{5XO)0bg4OTR zj2^Eg+&;Lh*5G9pd+?I-CN{uR!{Ma=0gC=gBHPC#FTgVJP%_@u!?W*qidC~PIWlYN zv$~a^e`N&Lx=4W*pK2gcbuTN2jjh);c?A7c7kGrnFKNI4reb(Y68z3E~Uzz;+v*Y(^d0W9)M#@ee zTU4JaGxoseN|X3CD_qpJ>%n&ovMAXv^bpbU6@Ev{y!)@5d`c`iv=45mv8OcsZB7_b zXIt_El?F-F@HP5oaWwT7vv1D9kdp+BzX7m+vBzX_YMQ*^DP0ZUGC&5%9QE!{(Fs$e zT~kwZz%UHI+(arKu|bL*r=1DW{E*ExmB!reM^?wD^db}Fs2nSW{l z%q7@L&}S2bPThV#jBuV^oP}22pJ&V^7VEnnxz$a^@d1mKG8A5O3O?i%WB3%4VR0AH zhN5;{^{vYLBzSAykxFJq;-J5(c)mSBEpy4u5wCdjBv*0vwX4%9CntO>SeEBVN#^P^ zg^MruyZPSH^?q8WY_F;xHz?&wUuZpQ@7jmi{tnoe} z1;fn3TRwc>XyWiwA-51_J4}^?{m3Q3b~pZ=};&#?kYJ2x#Jr_)LnT<>7A1s-ZC;j zA@TNVChpD`f>6i{#wF_+w}x$I0hzaqjh_aCEpWj5qh7VWlOj|q-7C~mDc5g6U;3jaR-F74wC5ioxl2ewq?L&y%D zFQwUMi${Emr~^gs!0_^Nfy};!+lN3kJ!Y4`Ev&IS3oH=8``?MAo{;bFe!Wf|QY&h^ z4dohvnBAATE)9r7ETBbm$^~WXi+Q8w>K>TadFDH|M&pP3SJ=KW0x0e?hZ)a@aeWV- ze1cp|+Z8)knxIJ8tc-11C@c4&-FY~;CE17_V^Wm4gi;mNO60ROqA5_EJmn4aXhRnwgsF?!9~OCExniTEBZdIhsN& z3EA@WIIQw#N_wAFWfBFILh)*Qd*v$#G>;9-X?IF??8(T6FfheaZZ{+6ITt+(auJ<< z$ss8YQVu4s@cG)b+cvgB|%^IJ92`+9C9xyaw)GnwY z8f1Bj-U{7T;_Ay4hynaF59WLN6hd;H|B%?V|(V9I0BGtI0GEI+xT&?&t zA)os(7NfeiU%q>PFX8|ni7I%nTRRa^$J~80Td4+}0 z1#D5HaQ$MkMU_ZIJ&6O<8&phSnsaik+JFujnLL;%)mS76l~&%O<4bO|+q5!&j#qHS z;vz(kTz0yeg?M7Xh?$@<%_nx^@I_ zu0hw3sKUv&L3eIby*4WSSDcm2i)Ij743L`z?lNa?V)Lnoe7zMy`(iS^?!L8C-@8rs zbZbD-oeXJPem=|;S^wiabG~V^a0Ht-O{N3vOjkR7c!`~cdWAMK)Vo}WlKL?75OiH) zhxpy#xVxxQcSf`M5Yq}umJ>|3sYfKshz5TVI7~aj#>U~xPg%~ht{=0-!VnK2^RL94 zSZ$$X)ZkIv*o6jKl_n@=QIAdXUwXYnj#qt8yhrXdslbdhQKn`NNW#XEun*+Jy)lT$2ml2U9| z$IIkaWP{u0AaWR8lfPo@>K+Ci=x0l09c6=Z7`+n3ooMvsl1$KagHb$=de==!WqUut zDW~;*xuas*j!l%_{n3IL{h7VeEeEy7Q*-yG%f-PZkIfMu?}i>9OB1$BnZ0P3Gu1xZ zRPZsophV0B4`L~pQuZDL+>9BxNqtfKG^Cbk^A74Lz3v0i$|=>5*L07PME-0eYly1C z7aCA$ojW2{LL$)TX14i!I)pMeH<=KC+cOpk#iF!_WLrCoQ2b2pNTD!2xM!+B&ho|0 zH6(r-g8nwrk>~;=G== zVQaOHF8rn`zDAXhH7=hVLcg=Qi(}Ej#OsyS&Q(3G(L6RWI+iu4OEOKL#Y|QVXxDyj zZ1Jl}HJ%%19#~*?2UxZhu$e<_T(gInVkV$YOFbqo-Zi$xK<74TOe|eoQ+xEV zN4j!A%C#mleMZnPVKRYRkGwTFLi{VF$NF6JJqyhvdaGJCYDmsuz(gImzz6C+y-2eF z*5Ea|MW54T$6nJTcFbnE9VNFdTaD@LF|) zG6f+V*={PEM9k$XhPqHg#|N$s3?b=+0$Q4$gHgTbZa`=lq%i~H7Sor zm~|V9bfG*wh06iz{kGP(LS2RU^)S^Xis!B{nXem&1*!+kpX{v6Jnw`3H+%MeXN&~ra+*$kw|m-YKWz**b$v-ACYi56W4bcQ_r3T3wN}>7 zi87qD633)T7tX}zRqff~{o5kx1;{F)eA({y4%VvBS|%nfKvhcU&JUQ0=XCogD9xb_ z{~*VKe<8=^DofV;x~|nJixJTk!d^yVHT?x^oakLQH=X)6KIA5*OR#9W&PH?tv6_9k z!c;ZoFU}y^dIRMeF3}Ex%{}n2Xl4uCv-mW}b+X>02`a^|g@)=Q67*@B?d=1tch;3; zMt3npXX6}OGL;Lp%tTCfdm6e0L(a1SiYd+?22(n%3m$jeR$iT|)t~TMaah3KaO0?{ z_kzTtDGML7ZKM&sDb<-Yx5>Few=i;a_e+fQWh=62p28lr?>tv>F-0Ik(pVQw>utUi ztqHTtJ0UjO&E@12T?R02in+#`tahC4f`q(wPvWo0d~%I@#QO`HO*z_R?!m7E)fd0` zGFD+TVce%i)#5da8gfAzF97{3>fs4e$;U%C7@Hb04DfQ!9N}4>7x||OG{_Xu%Vv%> z=8xfK%rtV1tG2ehcGw|W)~=pk~Bh3$&HLq5;bStJf}jaLX`nedxR97ryHFFrv+6SWZLWIGpX zT0Otw9jx4QV`q~14o$j~Rl-;P)!GyIZY&r25 z;fsZ{nZuHle!VIE`Wk=^oz0@Sb$xwH&h8^6*qMDA=8*<109oi1;mJ{~`|3pa_)rAH z3&UrA!w8$LJxaX63OiE#TULfccnyc@v*H|L@6GAXuHCJ%k(AsnJ`1@=R8l%4+K}l% z?A)my2VeQsA<`-5W zjtt8{|9#*8@brNiC_FZ>NK0c`Jo9jtGE`Tu{E4_?1eM0~tF zak{1Uf|k`yzm9~-sA0)Jmv)Ns#M_~4`jO2B^nj1`}xGd_@0LncUB@6@-&sAfW#2gO92 zh6ruu9w3Ct*drLXX!oDHGU?siJ}nZ+Tm(zkC*K5OJoO45Kr0(A3ct5P0e-Zty)jcg zwPHa;j&{mC`a!JLy++2n*LG4Iw+MUvsr8kPoSkTL+X>YT3Bewfq)Kb9W%gdBQGgaO zC{K_Ja4&qPuQ0#g4@{aToiOpOK#FP;a=bHlxPh5*z zqoX2WAgog^IFHPB-?OW9!UpL+|5-;%6hPafno==rN|ntxA|%9LFrctRGVWSFipiG# zY~P+cJ$@&c3hX^9EOXkqLYjwu^hJU&1GaX3_*&zPG`ix{t0EtI`)d>@E3{tP_lb@H zb7yp<%PBJn$9Y9H#)ww`ND_5eTBDBw(U!6G#x4_UyXiG2^^$@E-YW z@ea;&0omIqbcNduA^S$NXH74be}iZkmfz$QLzZ1v(DR(>UF*LvJ_Ai;%8u*Y>4uyx zX}COcS{;W6u$BLOAa;G&p*3N(i$ZPPm%XBQ;e7*e)su?aEWtNb>m~;ojaWe*C6ZUu zf(_Og%6LYKI>-b5Le?GgL0-Hja)=8X6?hs3$2!HI>l+Oj(Wy=OB+I11(N|P4s#L<2 zDOANVCz{vfVcJ?ZnN?dhvTj}Vu`U;!$9fYJJVxm4vse91N_4*IiwCk+!nHLrbqS8` zmmB5{U<^lbJ3rzdID0|5 zOu#x#u|c~yh9aC&N0+v*&T;G1*Q5zkgehGs9C{3KD9gFpp>ZhU<%qdAtIB~V?;#HH`0#CM*lA%9w5E;wpSl3JXwb-O~r13uZ_09fsZN>5u2&s)*mZ==7jtlr^`1gwm?@fNFkji(9TxKDH6x zHBTrZ+zdSSGMsV^Iiv%^AoB)2DS)MNAL%Ir?S5Q{XZu2ZNXRL@qE^=Ui20=H0SY?8j|cG(;9>RD zxU$gMT@U_bPa@rCXg#6L5oo8nD9lV$Kar#wR?=S; zT;&15c{C+^d$|n&ah*0%T9<0gw6or2YT>w|Rl-iL2(>%5ZAa`g;->k=L$wX1@g6|^ zM!^7qAw-au_e3|8qk`%kfchv9v)Ut@8F<*cL{!ZpI6k9K;7IOIGPOwwK;fPR;8@c@ z2H~!L>UkEtflr_sRZQ8v;}CPO^dHnMumsXS2r_IVJ+IbV(othT1@^5wk&HK2p{%&K zeV{H|G)2eA`SCJk>^QROt>7lGG32BZQEk&kJho+o6mHh?Tz(L4tVCvHqyrmu^8wZ7nOKO+4Y1!;YDiJk^TW-zkjGxn zd%U4?D*+4F8hti$evwOo;Cmv<(K7~6Tp>ZMT2$V|Fog@^-wk3w# zqR-MkDV0|B9%jF4^z3C4Z|13M%pZM{&(jH(%(@)5x;q^?U7yeb=X%&eu)W6iaoDn% zpU0YX)#y%gla_*Xu!If_sF`OYWMUg-gQ5HS8uqN|pIyWhZxpV>j;x)hfAya7KFxd| z%7d<(JcxZ~3=4>vE?>a^L1%pC5In{@6R5>Oxh%q)>16-Zd%kV9v$DsgBHsWC zB=n}E!%&a`l?^maDnjnotoXu1o&)^zKA4H-z=ioWbBY$uqHa{iLampogqCeP!#y({ zs+CLp=Jfr60?magY-;YSf<`h5^{o+g+qATjrCRbj9*Ir=6ywD&jZ!HI&`w8H+JOGt zUamqsHL(p2d%g?Ib?Z`B>LnliQ7n8-ENG?*l|YzH6-Kxc3*BCY8=@f$z6`x{WV9EI zja#NI7Q%BB$M!`bSNsa7G9)ElJ5^;$;KmpC0{si(x)+U&bE{}nXFY;=QTaK9_w5w< z=%eAMy2@AnmYd~o3~7Cg$-;IbzK{Ud{4Jc*-bK8IyE$%j^%=u`<@^PiDpSY7EJCu zw5E_s5N7sx>thgo5+pyxDr?L9S>(_t$u*ZMl6f4#@HO)mptI8>Am&>?RI1+CpZIbv zFmbTH;vUQV?HfECnsuNDc9>MXEgPh^eQHG^%YotoTDrT6QbR5H@L3XTC_PXJk9BcY z_2et4^kOEjcyvl=S00IS~zm3ZyY10*SSPHr^S`I-?S8-p#nz5S1Y;xYL7a zQXa;3{M;Vyb%`~R9Y)&-v@WeVI|*>;>9+@B=Ff7|m_Ph9eR!rTL+3bS^<}uDLw%S1F9X0;UaR1fzo*H(I zZ;`a(2gdD1X-Ks^11qOWtU2RbZfYZFfvc@X8mCn3K{(tbCm$M3~xyp*M2i# zp9I@cVE~97UH%KgUJEs3ns+MgjST*G)mfiP;uUij(_3|E9Ne_ZM35q*9?DzLXhqGS z40y-Pp9nLHS+NvCEW%tHk+jV32pm$Ya>+Kt4K31fO^E*rzOH4$M(D+dS-cTgKGRAR zAPv4a?l{|33a-dHP!Z@v4U`ib9pHgz-a&VDiXN~SG)AefR>oCz>)l}4S>_RvXwO8@ zISMovhYfzJOu#aj(C@cl@i>E#Gs+3e&K*)J_Nnblb2bQI@x7!EYn(so+ugW`slQKz zE|=*$`I$pW1zXl!{#m;}_-h^Xu~_G@2hzaag8e(t6ATDINV9q_p2J1!>dfA;a_}(W z<)IFhOhbz|Y6E}BH%|gRU_mb(mhWekr3BG{b@aWXg)OP^b~J7;Q}!L?3Sz2kn_6{$ zrK`a*iqIWK{Kz~)nI^w5U2Q>p#nI=5PeT38M7$wlM9YV35SP~4HulFuKbsCh2TPmv z(guIFS{p12@LjQwpjgCZQ)AdGN6EHsiyLFErGtOFbBDR79|7$Wp3X#MvHkg1>@T;Dr^SGqYE(fK%5C zG?u%Q7Q@Cq0c4>sXBx zq3vEBI>KUV|DS|y>X|jdsdb^{$w9JCB3o?eKY~JE>rI>#knddl9 zG%);ihp+ZBjk1x7pewsWANzy4Q#0j?&8W^Upu2anGN(5x0#TaXN?L}+nh0Y+k*#_#JU0jb(`eM1Ajz!3FX_0>JiyyIgdChRkr?9xt5r@RV!sp z%&`Co>RuCchoMucUCM{K`#QZcGqMNTuWz0cD@l7!J*z=4{F|8*>N%VhRm9Mf(K(Uu zc&&GJX_Q%mt7pCKQ%J+*E1G<}R(V8&=wgqxvYI1dOHPoS#13@tIqFz zn=}N%#;^4Kh1?#DCXUSRg`%Hl^N`K8n6i%rv zr3ibT?`-zwP^fuMrUm#Rqmr4Ss8Ozcu6{)i>~Fx*ZJipQHQKpYRY4d0lsqEew+k!E zxcBAeMWD^^@eEfoF(d-$_GTNF*C+G>F+5XR&ESRq0>i^tw-8zqKFX=nC6d3_E2*`oW-v z=)E$0e>KVJ#;}5o<9Ou~2&#}_>|{hDSS!SOMd;eY`f8zBjKvX|=yfgt8jD==6hcW9 z_Ek5ekr{xJs<7y+#`JU^GQn@vAuSAi3f;vSveML(ibd9o*=|$+F(wFFGWno}V};nV zVB2GD#?4MrU(degddF%MjcQso4>NzLLo#*Ys}CkE4AZZcI7^DkZ4rK83O2zi0cK$?}_aK6GXTT(CJ&kz+|GLA{qDN#7ZnA z*i;7zE4772Il)Pg=8|>ietmJmdpp-9&3;r~3(%E7RSo&$43!0bLPEPqr+VKRQGlgvuuw<4&0L~~N7U95d8q0^dv^LuSlsc=D35>Xf|uIyIk6`o(|l3R$1i;E}H7}3+R zC>XnGwOUh}I@k+`Q4Hz0f-%_W_m5NKp=gUKH})~1ZR9i;R|=@Rq4ueeyO$I7l25D^ z;7YxcbgCjrF>}*9Y^D~N3*4J-A&E0p31@S+S#wzK8>CQ08*d_KWYyaE~zaA5v&P{N>5bBX7t+oIT6zkOt1|oh5y*#;el8jA#+_ z{Iy;2bA6x>(uC1R>RYr>hvr&iBdA5!0INbEdFmSM#nsFl4XQ|wH*9=*niE$U z5dg)eoS?y{Q&=d{}I_d!^9Gn+Iav-dfwu)Ry5}`1GE+#Ht59%o!4WmKl-&l62!M z>*^C40|kW=&F`$nI>>CRpZtzu=)Pk0O#!@E#ki-LVp)uy?Qan{)JVNSp_furu|V>% zxs|lWLy=Vk>`hKn4T#-_iDB8`{mPp2Wzt1_J0{Abd6kPW^T#@N`xXLia5jt8Eo74~ z?nlhtWQ0=RAhvGq5&$`F4bz!db3;@Y#qj`|jU>DytpI0@k#_UYUJYfavs2}20pf29 zxCNmi z9~21vrV=Pn`RzUY_kr66Ye}sNB){DSAOyX|FV+y&*3mw+h0lNazgT?0LI6Jkcn(ne z_}3T!@8f?QJRKweh_2&Qr#9lBH~ag>8SmgTw94MulPCXDCVzJIe?xszX8`L#@$4~y z3J_SWrvW|>fNTr!d5p3;_0=JuUe8@|JOx&Y`q$+%+TSkRZcl|F08IF<>qE$yss9Rv zy9gNHgnxGW?&6*0G0px@)4%aI>z;b#aL#A$&Y!_`rt+13NYC<5<+m*K5;gide?RTt zA2K}OuI_11nGA?E;(~+-YhTfCEG^X3$AAhAr(LrUSk-Mp8p+74qW__yQ4}CxPozp5 zyp~DCYneevKhjYe;^RYI?G3@g68sJa{^xCEcmfy{Wu6YS$pDfi?hU67i#>LWzV`-b zt-JNl9c(GiOQyRUUY+v|lcRfRWHab0fR~4d&FxN)V_{@uq0=ay^wNnJVzDeiG5cd1 z_J|!Tdw@}GE>y$J@7v%Rwc%1FyE}4t+weiaN^3uPTVH}CpleL=WFRlyMmx$3+e6rD z2!@O|`Rg>ytcl&V#UymH#OlutYZ(Lbcg=Wzp-yiw=dYvR0mN`_$U$Ae7cdO#uRLU6 zZT8c!Y##B`Qt^%l6vcnx993N_>z;54Hl@UIew5uJt8sVQ=PW7pX{M#*aKSf3_?G9u zln2*<#HY#sKp14(xh;{N=k7y{T^N8sQVJe?8?uT2htC3C;*hpC2LSSg*X$GL9;*{m zt#626C{A70ZC)->XQ7tGYux5p0zF1%wDbBy5`u~5 z&EYT{pFZ(l1NqO0qCtYTgiG>&?Mx0_;KJq67CxG(75b0Ql|*asxh8&! z59j3+%dHq8n!amEj=M;L@G)P+D{wQae8l5h*feY#v-PA9!C0DRx=15g#exI<@rcpN zAn#GB4!8*DVrdK9Nd?kcp&2M(Zb2D6$MB`9I&4TwWWSCb&F)M0X2mMNz5d>YTc3f$ z*uV(;7s&+K7a6yzcBIsQ^Phmfv@#KqDBB66^=QTjssFbS;b|q5YSguQvbv<>zXvu0KK0W6Rup20gGIYu3 z*SBNI4Ag`TyF;`5e89m3iSy}np7H!SBsVw6^hM=BAsdk|D^9zbRh8h;ZUJ2Hx3I%q zg>$TwgP7+-zI%RvI$!!63U*%#CztSBy7ItDwG7B-ugFppeUxjuaMl5AqC?KF&j2ZK zlJ2S06{RQH$m^^4?PPXfkA!5PP%$V{EUtafE$dexJ9MZVkkcoAJ|}CF*M=Fnp`Dh| z7UbO#oY@c2h#cNBMRYWq$z20nB7n_zc9H1VQ3G5kPl*p^_QNniH%_7OU*UQs0aFU;^6KFMWRU}m{s*N zG%|MnG2=vC-psgwy7X;&wz;H*quF(}Q>eS?6)=F0EXHqVSMDm00rC3D;GA+w6=bk3 z$DDC+k61K>0+DwO9LE*58eM(M;|j1=2%>oZrJKB5MczVvl6H9ufM*T&Y~Np{&XTwm z3D3yAlFzqmQnVLMKO5KHT7&fVK9bipi5L>ltCV2oWuh6Ilch1c7dw#J7PuUbDc5@2y+)n7@$U%(#w_yE`JW2ro$%&U*i)4VY)j z{QDMveu-cO=zaR#F1deA*kAImKl)9OM=yWL`Hv?0TjBlwfNS$csTuVz09-WugO}q{ zSSa6j0NvgM;mW~Ml?zQXF_03L;^H0S9qm zcCm+aYR%TNp#B64+YvaFJpQ8CmQ!!kdJClz1Z_8%bh=^nErz)_jTY@XilQy_IM`)# zz%=#)K9dChZO*Dm15yvx<(IsS*5G|Nk>Ls{S6chfnw1?59okw4z9Nks@;})$|7}(9 z0NX>1>x@yO6Tb-*OkmKX+v`4QRO$YibLw@)yCCT@M=I6(3vj4Eb%4wZa-dLP zaRpk~-V+;Mn`6$xJg0`;p`Ip7AmI=`MrO}I*A@`8ossTR=ZgiGB97IjuEuBtY})bc3^Su z-G{awwBkm(f6mkI^`i{PNTH$lA_nmD`d2}^+06%i__Q-Fdp_xD`TI9dAn(mv;30Xl4u=p}EU|BdFIKtx0 zgSD_F2LP#8E6&D`wru<_#PgV@>pq2L98|sB0UeSPkXE&rwy}qqN%PbR%E~1nsNfbq z$knjZ_1rpP5LAQ3O zdIsgJ${vHSz&_6eSGRqoDoA&LHYIDBie(C29MDGt_Uc)|$}q-dr&TO%SM^!bFF=+h zZvl9Fu(&vmxA}q6-_-CHLV7MaCPc9Y;}Ykb81jf7ZvDF1D*yJfmh3MqizgQ(gx=?w zfTlR=WW^VK$Ib!-5p6aYkvilxK(Q5l=Qr8y4SNAdiTjeid_ZKLrxpTrW2)r>7fk!A zgECphqV68FBe^z1Ak|r_R=vkexGE*e1lC*anx06n!IX}Ho}7hb$XYtPUO|Pfdq~1@ zJCl0WjV-#;6JZH`&+U z?TebCPeTGIzDhLf585dd3uksyB3xnN-(iNV)!ujVk$kh4(XzET56M3#TscyMc+3@R zAIM)63V`Y}Y%?RB$^D!bJ2gBML{)C%g2;*-A}>hL({c)GKUC0M;j7U#gp?lf^PFXk z{oSV@r4U?HmLvxs@d3_*is|TMoKb)?~>2@I-d{j7UvS*CO{QHJbvXT=Wo zcQ5PD>zmJMaS2Bc#7qwf@x%Jk3W}4Tik#KI-nQc@k>?=wKy?&>@?Ag6UPUThR_%i< zwZm~GnO=`oVF8~zc~B430BijZ5e)c>D+?SXT`Fcn3xLJeDu^u~>VorSTVzUUr2x+J z(aqT*(^90{ZTEOCMWFVA7kWXFSVYVH6z6qNgRZ5q8Pm|gk7B(B3*-G}f?p%=F9Yc$ zz_&3Ad3qdeyGK$@n{N6lJzbQB@=M+DxD!Vt1Kil2P;8e5{)n9nuzx{zEI= zfU7BUBd1w}cIaJiIUFK|m#rLz(2Oos_HxYeaI_|G1|zFGXSBGgIJlx@?;QVx&TA}l zzEZS$Iz(_19Cc&#d-FZswAR`>EI@{?Tju;z%{gv?AiB|q^sbJZ9JI>WVVumNKgbX* z-;N9f;(S|rDMIDcgSIzU3mnUH+$<|o%;?*Yy(MC&d+dRW46O?EAL`Wc2S^a6rk@_ST9vE;hr0$75Y<9!wwr$Olk}(`7<|`k_GG)A zJ`C&oms=}`J2MWGD6N3@samc(GHTXXF`^s7T%1Rgmfo?xqA~dxqI!Pmod$&j#zrD@ z4;v8Xnx%rns_UJmN_S9K;9Z@W$5aOO6|6?^NM{0gf}1t*wh@(mn4b5R$@7b6gRSzY z-)5R7J)KxwmMdp7RQec9k}2)xqN5Ap{_^3xT;G!LT$h~WQvacgOd(KvC=H6|AgVx{ zeW0RAHc`&kL|xRCxv^W>UtnRH(3I$Q+*0Ofv8vhveM;q&yZJ2yVpMuzLpj^JH}lN= z8TmA|uY@tBg0jU5rov$Y6+7XIVtBfYsS66NjHgf@nIOLy1wKDdzJpxE4qNw%F4q?E z=niJqJY3UJap!*}ap$xG-+p)yO@b-ZTnY~~8STuxc-2z4byi8k(*YjeO4OFhy3JNR zW0J#QfG$FjY;URy*B*~Lt>G|E_A`U&I-|>FlMC;d*`P~^#4LID#~X^^0m6%L)}_V` z)&Bes`)19GDC5ZrYl0`%(<@A? zvfaDaI5+6!5Mh=_m+z<(5*uJF@2t2DMYT31umykGj7Y7J_aV}XAoCYMk{AGLf}OLp zQo)OJrTE2Nn`CU*lGUmFyLwM!Y&W77txMCGH@q57qIUy1}~#a*I+J zd7}Gg+jaBG|X+0c`aMPPO9(=62sxdJ7|)zz;!xok{{x)%t8l_^KydY&EarU zUl}QKz46v4j$giaMXXkT$GX$`!Gymz9FQ)}-)b z)mCyjpP`$=VEBjyBhj^PqbPN|NLsxox0vfmmQVQQ<|>${`CvOf(n|7Rk>*hWvW|(zjHN|9dxgW+_aZsPygJB$+1{{GmW-_r;KKF37z}@i=H$ z99x=rLAGHI%EWjSMG2-TN86vhp79P)%D}kf9Yd%%V7QJ)5UA7{0AL3|dK#4kdUBg4 zwS8QZU4p0aeBYI)UA_u^jJH`~AoA|_4!-yEtT1&Ojwfn3Bnj`UE)pIeHfXdq{3bWP zWKp~Goa@|vy!b+7Pkox{bS>{(f|k|x1Z-0K8m2%q^(B@0Kxg@44AyxbV#FlRqeFgc zp3Rc(CG@#XO|oZubl(n@-j>K*)NLfE_0pptmu*td))Jmz!$X&wi*82Gk=3w~Jdijz zWg_J?+=81|=m$G;*@M{Rb1>d@=97`9bV;@l-qVHu3b}Y-Q&2udUCm>)b#Wr@E!SKNsQ`U4~7s7EWOMSeDkd_oN;Fn#JCGCEhZ4M6h~m($H_B5q?SQk8w8DTXJ% z_YNjq&-XX&!X%ji{jX}&yVLPEc zLh zrr$Hoz)ubol!QG2OqO2~J>wfJ0A@!D$t_2ElK|d-xxz4fwsG{+jms2GdWmD^emK#uS>F34>`0vi%w+C5Wk?yRkRv*}86jo6JlHnAe!OU(O?^-r zd;db0pcB{nXb?7>_j)bV#Yi?ViwxUqUdsCqihY6WwdCqPLWSuHKk^%DUyDSb-3vA3 zbYe@IF7Y9!YWl;GKo$z<%xyct|7L}oR;K#?nk}q%V>UQDg5&f@3;LLfKf$7#^y0OV zoas>@bmhCfr|TF_x1T$^oPXIi^1y7nS+~0Hs%Ej})2eO;+Vk^};l0z;y;C?d(Yg)D z`EI{0#_(Q;{AE;f@Oz3{UCKE~p#dyRe_@_$cv6dN5!&N62WmEGzkpRs4Kgrhj52nV z_`I#FmMiFy375Do(dH{t8k|K8zyApgzgakNa2b6o1i&N4fXTcd_9Ee@5}a+c&RS($ zs;1jQgFHtg#q?cMWDIbdtLl>w)O_N3=O=gc5g-<8t?%e zs=#jEcyE5Y!>~a;`Q!T@%uhX!s-<`hA=;es<3GyZr%ZbuJdn8D`S?4v&YHhjYco|Es%vh@_Q zc~Of3u?NaM7315&Eq~1unW}3%pGEqs_w17uOF1ejQQodIz*YAn1z=Eb##eZdCtqZz zkXYkmej&x#bw0;0k^#V7<8dc!m$kaoDU&vMtM*`hDVO=kg>;L}Lewwp5{4|Av3vna zh>A&w6TiN|-wpEi;Es?02&bT4zzX%XFCySalS8JT(=rASzuyJE@25@fi!4c~%ipgO z;PqNx-ZR$qPw3Fp^;f+SSvZ7oO#qRXT8R*6CmA>L-;UT>0<2W1ltftJY{SE!M5H%+ zu^t|fvKDSKR<-plO+-T@dp032^~;nMV19hU!G{BLiUrEhwg zvfFUr!kbOMzd)N0?eeM-D?^|KHO4z5R+*!Tf}HT{`wc1+K%obNcu$~5vqi`|A1viI zxsXLiV)p(ac>R6(_AWp~Xr;?w7#;9X*1?|Zz`ZWDd^%%wCF$4%aqE>Uy5NnK#)xe0 zR@8OXLs~5!o9(0)45#BrC0mm}^gJ*d9Tx?9p^jkA;_mQR49wHTwF@)w4iJ0m%njnE zAB(-@&ZF|@RoW$A(C{18H!iQsxH)<|o-+nzUSD*N1!rao*?ARjWPGDnw;+)vKIf)eDtg zdJinfOx0VSH>N#a-Ll^^*S*AAi%!t?f+f3C(jM7zSW&3yMwtv>yq~N8mggS1+O0LH zEsU~k(469V&X*^&I;W=Xle%3e9ZZWVv(bg(=2Pn~3Iz5ci0I|U$o5**D+=qWT-B^A zON+GG0gw2E!-AZ2-&_A!U=dEX!sArIG<^c5&wjY4HTYHN0m}4f8E!?iP0*;JD&VUE zy{w#ez`rI9@@>+@6s6z*lLjW@gmLVGacEA5uJbA6i1I-cpKCE9VO0ZNR-;lyjd1Xv}r+#+4_+PxfL5a zf5mmGs`zi=bS7ra>*j0zSgRYxx!869bl}jtWrEE4-FbcaEsWeTCu*o#Fi>NZAzGVt|@Dlr4WsOzL`GIRI-cSo!jRKU;n>sX3v4 z;mS~?h7OVCvU#4q5!`^&J}3xVr6!X{>_39UGC9tfuu zAU~)j^x8|BTbn8J`Obkn{Jm)FL`agzQF?tr49_ky<2q@U+5w{g7-{_vNuR7&gjFQx z530ANof%QSB?9Bcx+)AC{}KjUL~np{&PoO~Kv2Q>dJU z&Xu#kTBx&!aeWFibb>ON&Div*$)7SHWbzT?T})oxXmQv{hE(%&ObLhT3g2ckF~WJi zB^Q8EFG33x+h)qz9*5Y#WBDuJKWVtTYLS-G5t%7h<%@~@2>Q6cW=9PR2ImM_pcR?R zA(?~N{((E7ocT)M(Yp9M9ho4oBzctuPlO~e(Dv+*{WcGNoG@0B7yd;Q`D{$7icL#f ziyeJx#PH{iSH6wl8mT4B=m|yTaAs+CEp}p>`9RIiu=Sz!=t#9~EIB)58un*R77~qU z4{W6$Xu{KajiHNTJ>u~O#q{!g`<|ySJ>St%dx9md3#-(AC+0g?`E*pu&86rf>g1WF zpew-Zz48h(H%|Ag!8=37>CJNcrgpqEM3*ZUc*VsA1y=l2Z^m{z`>{2dM^~;-JedXe zmlN~1h{mOXBaMoW$$Xn|!m|vB{7+`DfR0jyBr$v&*OtSd7Cf7-o2A7=Bs_w=s2c{~ zg_y4L6xsKm3CyuRr=Xr{bcK3@5v{(vbGRA*`B0Yd{gmA`#DeDLJ4sXqqHz!_9|z;+ zR1?8U&k`^9dhV83oV7sR$(gzOtem+V#ZgMV@=eR-*BWOH@YH=T8OH8I>SMinZxcGJ zjZ@@slR$y5{AyoJ2Y%8va`^rnl`y<>w;O(8fGwhs{5tv3p@RL}chq6eFL^re!mW*R zjBX1Z78(K$$M-RH(M<3|a+cO|ou8D;FzzZR4WABXK8P0ga+u(E?zsExdnmRageRLs z-fW=-$97Thf7I&8)w|P=E_f2vm}X=uoYl2Dk7IwZV-b){q-lH&<^;;7`_ZRcym%ab zafg8cR@`2N1%Wcs@mDQ?_tKgVTO#Q1HG-JP@YG`k&S=fQj%5zP(k~$d8nkt0P|aqL zwlmVraPF&N)@ZoGd$_eAcz4+we~6}NgF=b4I2}~UeXhLGrT>=##byFXCTu3H!8Zh4 z9ym!_7*e8-!8`iB#>G)ER@b7TD1&@@9lYJ3(zOlgr6$B`9K(4(`wK}SL%}z3+4qI( z5|wGP?7I-;u4qn=GU6%uQ(q z8ZfV8wL#?yP5V_lVnX*Tp4WQa4emP09nnMKB>wWCPKcT z1FEt}28#)M)binSoxV1+<~42sD(|h7gpT{BmY7up01B=Ey?5xr{Wh?h1Sc0-M{;_# z6;9jsRn$~z9%j4elZ?l@Ni`;FfK>SOo=OL4)4~9kKOb?%b#Q6Yox}HDEqOtYl*sK~ z-!bam&M$fuKV-#gK)VY`UXUBJ&t>8#^Z}`xMYx93j$&x&0WhFP@S6teVn@@ko2`_f z%ycWutj)0R+sJ(GD{sDBA!y21prEm84${F+|$P=YT*g|&%`hu>bIg2 z@qiA?fQTfA8Xy2XKw`+)e4yK$AXjm+t6$`gP&h*tWTUuI99g)V*r+6**Z7W@FU~DV zVx~qv!jm9nZRf=2N1pSVzi^pyG=Q*aIoz!(HnN91WE6hnruk)~<3?XnEx8=rTT|@3 zds6V}JASB}<&Po5Xf+)W=aOekvy|h+HdDQ%pt%?Mmh-2vn68g>Yn%kVEQ=H;mf+2C zX`W@4moeK#aTNT5q9G4d0^>MPw9PY8pAQP?M&*+>Ht|1IkWr$m8^`dPozDf!Hzd;V z)6s+?`#E&d47j_}?d?tvL{YAOK3|w6sW7>PJ+xL&{#x<644a)n;8(I7BE927f%pE$ zMsAYV#qDI9Fxd20sw#)9iFv40_Sh~zoKaj}NEbBtp)dM{4^Dpp?thz^PCoB$=Y|Nd zcp2YJ6J#%X?2$D~7VzY7!S&h~2Tbr3&r1=kW;Ftx_nCz)2eFF1*>rE^D#OZ23HLTF zP0hKRZ$@RzEV%e@&M?+l-+{?ug+$gaYhS_ZWJ@bvz0NlwwC5MPgm1PDNPvR?`|vYC zR6=aDX58LWHKa~&hnyPEV5~ypOjW6$9ZzM$ynJ=wxc2%u zLSS1*<<37VzET)`%DD)!V8;L>dX9A`WOIa>aKxXCygxADG{{2rMXC(jZh_MDAKiC& zOc1{HXqY6!J$SzZ4kcL&{Cr#dskri!tjU)zm4%!|9a|L?mq#<_TZ`96CHIY+UM|=9 ztT&FJdyyV5b4v)L8nn)|>GOca>sW(^j}BuzW}?A(otFv+qv^h=stZbb+` z$SGC|`FEn0CsV*Q30e6~UIHf97R#o_TRX-=Vjot{MV|>TA0O72>sa|Y($<|1dLC2# zd8Uf9Yh&Q4T+9-qwGN`&rsSASHi(j#kD<*HEoj~`9fESZD=0pu6KI1*78NjqI8yu+v5w0m`7*9CE?`C81OCn5$lNtXRB+}3Cyt9 z$hh5=-a}ugAiL8t4phM;RTsruwdB9s9*rk~aBx-C>N7>x5)q6$9^0i801F9 zCsp8oZJEWw0R-&gzbk0;-?#g_PnXJ9&vuRA^2uMttN(Rte-fT=r)N*3q3?i?RoaVE z?mxw}G!0A7rPfF{1-Txp{5Xbe{hCbA+|O+@?Q*CIm<&UFa|M|9MWls0&+vNT|T3}!+p|@2hO|e!qu5izAa-w;dhR`^ms&N9zm}8LF zi)Ot++rp(+2`>vT?nWdMc)JJggr0YTT&nkY#eLu}D>=U8a2k!JZkFsYDTwZ{tAoz9 zuE2SH5Y9kL#mmn+uX1-)W;;(rvp+`Dnz8A^H0B{#Xwl}TU+PCH51|Fhw8#EB)y%#T zn*fVtgQg!q_;+`)x6dzP3ExPJ4zBq-0?VS~|13qJmv7 zR`oR)P!~A2_@?Y(%Gg8T`6pZ?orm$o0{cWOsZ9`AB+4|7SO9Gd= z>uq|C{jFDf13cC1qD7$sw)^YEexVA+-g039@AKm!WYhO?(-llkj&UHmgrHr7kXIu3$UH&HJk=RfQw6F$HZNkIo*Cy$2=y z$-s6=Oeas#y>7R{oR5HraCFUZ@zr9+7ox)-V6Qof7WfG}2OZSB~rneRiF9yz6{&lQoYFBF}J2La(*V*ksL+m)tMGKBaJ6$*1Hf=U{?t)28 zJhxrVj8y+~jU1pqr{BtTpi9C!Q)*q(o8 zHqj(DzH0uyZlJmGR{nD5Wa9s^_vYbHxBdU{6-uZmN!h!EqA2?|Xe0YNWG^!IErzVq zv?*E2nz3g$#>Chelp^~&#!h4`gNZRF!|;4u_xHN)x_|d^JkLMRKfmMqpD}ap@8$L0 z&a;6^_9qP*F0ykDZjL-v$699PhR_1xZSD0w1F@Sw$4=6AFfd#b%%^d0 zXH$xDyHS0nYJAA}EMLFh3m3^w`ZwX=A7W_1W18UOAj8dlMjn(}0re!K;=Vo8* z{w3ZUo29{E3p!2icpY6Vcy4KWDbAMcKd!L1#$JWpU<+GVbqc;WK%#UA?;}B&{UTqO zotw_6?qd>8aCoynGjs3tUJywsc)LAwNh*_+&}LmyDUM&u>ePR_L+qY(Xw5A0R^6yM zhv%|VrK1t|pCl|TOlR9i>AY!^v4MrpYVq7-$R>yXV8e3AT$gJ4X-Hp9ItHTkNmaDk z6ffIS-V#2i<=ETE8cB%S7Vrv$-s)AQ$=HUqf$G-n-EpKBnM)0fneOpRH-pwhSKB8{ z=1G^t`vm3|Jf=>e#<4mnPrVi9>g~gl8$2Wv={c=>!FSQSD>^9J&%@pRlG$6aR72~S zVfC&CVA%V?oA3}h^=fI4CiheoSc@ENEF3k>F@c`98rV_BuCI{%_fJ|=ngi+An-C(} zf4wdC59cE+0EcfXK6Myit(3#csk)BSa`2i!}yWHRFeJ`Jwkm$9E=go{O z?pM$oXjAwp(XGIKOljlO>+T{|?51{#C`jQpC+!O&5pF?bU*{4vb>4|rdioq+n*acpUIho={{ky2+ii3ma49I-XaV%z)&nIH1B zf0xk+L!kltyly>aASuGJpTvP;bBxQi@VuSl^WYD2Z`cCG&SE=6Hkaq?{i2q}@Bw zeNzJhfXeN2uHXd|X@h~Ho}wZv=ML%`kH5MihSrVojA*zou*adQrn097{#eP%+c;?D ze0Wj=Q$4-wSIv~Z*BqwYQX<8p35l0$bYT3x12)+A3E z=hSzadNnzSn>`qa*hKY)9q$fXWzZMBZ~>{6H*O7^Ub*DGW`$uj4*prnOYspxV^QC( zjt4ojtyTM9^jjGI-bkBOF{dEA-qE_!c~=KxcNCNT>uVp~{!OtV>;W}SP8|fWi)_y0 zXzGOvHHY5cbXC+cOyLTiYus`7175G-oN1S#qUv{y#2dP+)TTblP;+%EZOtchvG=FuUN27P`N{8ff2^aBgG<+Ov@CU6&QX5ZOP2O{_)vI=cTu!&P63I z5#?&Yo9TPo$vmO6r=xlO${nV!CZmE4`i_g%P*a@=#J6OJ&DYiB+}FAlo};NWcPE&> z{PhnVF%YMFeS~%M+jCD$==E=VE+Ezs&`8>zuJ@7$70yS9n=5CMfndO-z`3sUwo>zB zqZ5BTxFa3$E69ATfnf#eT_N-N*8srfb%+-b8-6+ad%=YAetklwttWW@%2d-vk0wIz z57%vp{XTyT1X=1?TdOds&yKZ#sw*kL-dnB`yqs=ZQ`SrkQ~RvTF@IjBuVA>Ue_p~? zUF>AZ>Q3Ff5=PG8PGdIa1D&_^3#W#JrC_X|kDD*`6G{D*`*%g{bp$z$$cr$+(Cb0< zul0mH^BZM?khPbg4MD~3g6ZcL`d<%nzq`gQ5jZwTi(k;dEz493enfBC!2*cyuJuji zc*o0oN=R#o1kZm0q=F3L$@c_-Wp9BSv(p`kebC2SlHq3dr=fic8T7Ka0`+WUBQ;I3 zo&=#}?y1;P<^uIN$XY#4NRU?Q<21kF~6J=4CFfgIGP(D6pZnr(V%33p3w>ni;H&tS^Gviu>tYr#_!fwfYI2@5@ z(p4B-jOOi+)zJ>$UST|6xn91yM-q%Ongv>_e?& z(@z~3p}F_j$vNnLb9Hx%*sh~`U8XDc`@J(w)%%JgxO_fU1G%}dJMP|y2a;^zU)ohe zKY{9&ZtYvO^o47ssgS1>?>cvHv##m>XzUXCBmgxoc>0{qPZ0b42pAXyGDoelY!SEq zfXn~+!J+#Izl^`p>&@XRkgB7`>k3C?xEMv&9;@uK`IC?DuFBo1 zG#Ml-r|GA(%H;GhuJHRbV}i{XPibuBP~eCD;MK$w@I&cjnmH-OqO+URu}LPV=v6ai zxVA;vC6&d)+(ufvcM@t79o&L97Pd}jp`Z)iE|m6UyghV?Y3#KIWH|rKPK<|CYZT{S zPz(Oz=z%qLe9767;Pl1L(ai*S=j~S6W0p^H1aZ{M>mXg1F`ZW$u4^I|pu&Kw_70yz zScXleKh9FdbStPNWSNM|CVvy4(YPd}6s+s@jik??$4&75n0c!4j7M6|mQM&Lu4WGTJ{t~*Naa4w$A@) z3@2~^HroG(<-%Jz@94d>NWqUk;xajSu@>k)`og`Y%oXZs-oMA~i#sq$O){%aYGj$i zy=;};cS^BLR5$SKg@d1H_^|=n=LDIakTh0Xo0<>$do@`I4Vy~g6Trs6%`fy}-HSuj zTy^&hI42~$Z-a6q{u*r6vbl5!a~&(-TC|!1FZ&;pSVQ7q{;Z;KNuc`&hjz3$VT!l6 zz8(8}M*rFbjU6uFX2LBMY82mp*@Ud)2Z!1cuZ90_mh>1J*!ur%3UJW>f7_&Cv%{|} z3_J!sEIC8g-oefn7nUSUI;*H2iq(pI9Sx3n_GmOr{%>me7sJA6 zTm$#K=-zmtt}Fh_IDd^uIVJSLLP}H`c(x9C>IYge^;gLUs2v%e^6{>PlMrT|V{*1rur z!s`NJ;4-i{vrBfi`Y=DkD6dMmkKVF3_2Px-`xfsH4oSItik3RFZ_majo)xtSZF?}- zKlEYY(*v>J&0~N!KLCAxDt`k!neKUe20tC9StWZW9bCKN9hZ5-UB}CA?Kt z?a+gZ{S)5PcPnR0Rf!PZ^C~ zj*1*6+UMKVBfNJ51&3Fp9_GemG;f~@+xTgi?#C%fZ?sF_dak-WqwZ`js1^V``}|-a zHl4g*DRBrJ6ueU~9T3x7zZsxU9~j~qiIiDTMsj(oFt=T}trOU}{vYl&jxb;)@4XGq zon%b+y@OHqI>z(cX?mUcqA zuOO3@EW4?o1OfV_H|1x|UF-(5HWYF{V^V(4F)m!mJ3jp9%mt9bl81gu{S@rewq+My()gg3v($1axb1Ft9>(!%dKIb>we)@8(-Xgk5Hqhgdn zH6$g6gncjl+;Bl4{Cd~Q?*wjqQRAKzt61Xs^L=(qp{_ap(}Gg?{J`*>AVS>4&tk5J zCP8c59h;l@UhmApy``tnslc`PUTUJ69mcRlG~@lJT3vmOE+l%&9xaO*AYo%YvbCNbo?%>tTeUquI^^UW$R>^#i%%wo7#XSYPv6gQw{3Ny=UYtqgddxoMyex$_+Wl#| z*&i>pn0Q!;Hm8&`grgz?QZ+J8?NV{%q#cXz+oytwe3)6U$*J;U9nkz+skms8(p^{4 zg?%+DqP6ajrgvEb3xE1XSZ}?)Usu!nU5~Ks4M9pO^ImDTsn{ixI+d;B*3sV`I2bs-$U*kV*(&$rUuMUd#$qP!{pA`7pmOHDn|R|Q3Z92Y?i3`@ShEmb>GfhfeOUE zEpe3O&)UxP>|0MhCNp2>KGFUPL7z9U4f@!3HB^K)`~0>zhzj%Hs$E!IdBy2ZtL0vT zdGX{r^>!QG*9p{@{aDW&PKn!yj7$U)X=%e1o*R@O?{uN@axS4_Sn9Y~SBpvj@)7wV zXk%u)r$y$(3)&Ne-clY?-!?wu-Ruy!;Tz{<7_K|`wtXDK@$ zwAY)Gj-wK_0%4t(LMOYqCFZ_x=^QOt!@QEugc0AnXYM>7o?eILm*UfMvlqgx75Jtn zR|1E7(R?Vo@F@7SJfOT z$LrtKcRj+kH`~m}$R_yWmm3|A=C6n=B+t;KoQ^AvE=Jg)@k}cdDg-dPvC0qUM~iI$ z3|ze?_hCrecQzYyJ{xJ1U>||~aJRNx#H-xjak%H*ERp?i&r9;=E0qbVtAL`GVY%?` zkGtJ{cTMF4E)_bDBUf!|_HLcf9J}`X%E|K}8@qx3!0KalK;YJ$D0653ze2@404fG3 ztsdj~{aF9f%~_}el==VO6kc_nLy&u1UU{rF_?0_v>eaf}ze1Fww>W^>x0CnoXaeyS z?!`A8B>(sC%S}|9c780h%mKB>j`MW_;n73C;Tk~d{ff*F@xIhCsQ3tiJw^|ArTy-Q z18`nCi_ax5l~kV>zYqMc&E()eP@Rqf=MMiTo&n^nh6*PDvwB3+zWuIt{w0iWMF88g z_)bgnznNBjJqP#+!{S`?ACmiD;u`>FQp$w4#=oEFzkXUF1DH;$9-q!h{v12TK>cxLhCI^aP)z_Fcc~+BHpW^##)b4MVyj2O%bYX_wk%+(l^9zLn%>iD4 zLe3q$X8#`y`B=jYkO!}qmz;e5&+qEv)(^I2XL<$yWW0g zV1Byz9!Y>J8LatLC=s!7m|*XltNdq@M+4^<1HmmhyXQmCexom04WZIQLG1@-4R8VR zk`;(NyC8nTt7l5aZ*{OwFN-VUpybWXC#+#RRV+Hj+4*V;`cq}h#PV|% z-J!M^`DBYk-#`ai^Z=bxt2SZ}f7Owww0qW8Js`JO?Oo?EaTF$HzFTMtCA&UNduZub zu(+zv@4w^8i9BYmms+A!U%!-*+9uKdJyNz57>KgTZ2gpWGUvKjX0Aj`x6i;ZVz2kd zF{Fk4{8I5aNp&P5ODBEuPS_h(+5J^2<;zxi@t+_qfdbyPV`$|bD_K)-^n^7u?cJ22 zf}L8GTZ8y`Zndb?zzcd~u_~ihMhUX@SU?O=zbW*3J$&Pflk!5VyR7)=9L(EeDa$&_ zv0CFy!9=J`TcClFfvulqji!|T-i>kOY|Ja=xmh-Uoy-_;m;>`~qQk`vUfd*@T6cc= zzz=ZZcJm9EroN)CSir0PwFzACLc9lvs*|!-dq0iy^M)DXt4?xb-Tm3CK{~s-)p7N? zO8U=L@U^MDr)1$Z^Qq~f$RyP8PZnlIZ!YC59dGdG*7mvG51xnR>#a+lw#f(ejbJvT zPi4k6C`GQaVc-b$?&tMf(B|Hw2Fuj2i$w5KbDv{ zU9rlIJtH+Z_V%glg&tufx9lxzFb=Y_9Mi_qE)t-4)&G{-88Gf~9#Z5Ld2 znR_L6*XP1OV+3`1^q57 zqxxx2lSkSM=%PFMg?3Jm=`E4*;DK40%-+O|L0798fezAiAy=&j5rI?|kzk6qQ8Ek;$ z0Kg+{RjUydOkK;Vki^P88d3}+J%Ni>#TNvn(uqGkezf9?>S_Ku7Nm@@G+5Cq(RYw4 zp9SSQV{QzOSN|3xkKzUWsg=u~4|VvaVlNc1gK(8v#Vl)|FHUZaZ(h1md-GW&-BDN0 zkyjZ~5+hw(i3f_?G6PUFCy8eB<7_Vo!d|OY2-UGmk#4)Q&_o z!e!1OqEn>UCC9Gk$_3u#0T0H7+>6eHBE;-_KSB;q8#$gumNFXR^b5Akx~e=0B}<+? z51oR;l<8x-a^(fSF~r=H&h{lTo{vfKc?JU2_G@PKZQtyu&QgP2%^{Z*4Xk%;&WL-X z4I8~Chtx+a;zo42?VyNOfoUllPKplTiQTn@!{C3|V_D;V^AwF8sKfvu-CqEJvPLH> zu1Z$zUmSgH!p2HZo^EYz?Z7}$`MsIwbAAiU=~Oi{gOvSK`n)6SD`W4`cxSim;(4n^ zNO~m0%_)pqv<_$z+CN%Q6suG5VD+P}IezSkb|k4DllsB80O(x z3b)0@{9Yq|XGwjO`)e5_T`e7CK~i>FaO){vd3pQKt?c)oo}F~`Uon<14D?Z1`_u^~ zpOgQ3xAYWeg^I(^H&4a7?eLDRL>O9S-16;RONaMw2+}ieA&HJZ0yeKL4eSlL!Lc*s z?43l&ZTqg~`^w%LanjB`z6|vQ)M;O&T5`I7*Bdi(qjgT3-PL4Gsh_uqtb@>v!t)Uo zR=vlUgSuo#U4u zDl;lRmXGd---HEy1B149wZ;Te-^(ywN0&$`Aj;b#fvhc-{LGAr8Sry$9&brd)%fEw z$He=RITUXSfATqfo00(&PXBxERY_~8=|YdIUEUrg`hQ67nop}elL{*=THBS)4b4-~ zZc9_QqwC+JQkLusrOWmzH{~RblNwhp@J~zKR>6A>4FygOPeZ~+-w@Ipyo`DUjx7!j zZaY(1)+`VI<^wL&%~G=v$AOs_0AmbJ;Ji3>fp=qB@UETHQ~kzpEn+d5U2XBxYSjM3 zwYm_8uSx(P=dtJo1rQeP_uG?9!SiRroYrEU1xsd%WU22Zrb*^=4Qr!b!?Z7=&r7}* z!-NX0oZyVS2D}f)E*>|$3a|Zaz%zn2%-Z9pNq3gsiMmFOPZi0ub#;F7*dDTq`-3X* zkY5?maE(X#D@^@*L5Fgyh>D~kLXsC2kdC|?lrs%Lbn;&tKT zCofNK3=cEQoZ#)UsYcz(Il>qE^>gEd-h5$!=GN=vXq4xahosgC)tS$(c~`AFtId}e zv(G_FSBhJ1ID-i;QhFdReA>k_`eGnNE%XSBH+OSvkK0YQpc%?`3us%)>e+=)4 zc3#FsGMTo03?D82a8|iWMa<_VF}Ur1J0$5%KjA z$^}2it9ELGRMKWLx;sHsn`?Hz+Py+%0D>+&+6I`H9ZV-&s#!V`5O2COR*9QyD{{qm zR!YeXha?wndhDxlC36*jBH9NfjbtO^CJd`PmJcbbC_2m8I2eXiFJEUq9846H=@M`3 z=7CzNQ+WEo8HRZGHQFAJdQEc2hK2hu{(n8OxAzbsU-S?d+t%IcJ6tSLM~*wT@l?lzhr^iLT}* zcxehsV5!lq$lDQ$mWN|&a$<&s$PcD1(M{-Fi8j|aET17#JI$)+Y9~tUR6nY#hjlsC z(yU0AJBFYH*LrQI@y)3SUcDc(woh-A@P93BTS^tKUTl(}rl_VPJ%mZ8UDr0Bj}7@{ zt<`*0%~mQk8(%dI2fcz!Gr98CP_#+;rRgf*#PXd)(WCXydKUBY-))%6qct$vaNKhs z|;2~ts5Oo62~>)#{(50n%W;^O6{%|tSw zt|GtHr9ZS1y641}x19Snoni&a52AUfFJyRe26hdV1d%H|GMWb7d13u0Q?}H6_OA4l zl#f^b%v^=39Rrlc7U~~>WY%#ct$=2qo=^%G_Zrhn7(z#oG z3X&iZpT3(G6OW4RGIxunXuaPx5dP1CBG+&&_1m#3vBRFuEB$1)dmz{YBxcrAP?IqkaN)-q>3^q3<5Hx= zW!`}w*HcLr9ybt{(H5YnGl_Gat=AKiR-gh2Z{H1o!G_`|yqW~IzC0iAcGKqc*SltT z;)Dt)Pkf}_FcAX1kFX3H`DvXO$rhNx{Nyvzub}iie7My+n&(&k&I*8U{iM2&s6Tge zp1lmHpFRVot}xO-mwHtz_Z^+J_qpG#mQfL5Z3d!Q7P?&0M6yZ!kj-%m_qRvVE0V?W zxQHX*JCNV(?yTz!TXmOz6XXA0v5O;MFOQ8p>$m-_&EKJ|l0V>}DdzuXEg!A84!D3k zeFhe#e^rwI*xXE8kJ$hD@M{NsM*zop=7^@B*Pg_qTKxFc!$<{^v*YAM^GXB?@{OB_<@TfPF2UDl1&n3onkNHH}dh!LB)G{)@8#m)}-JMr!gn=N`H9 zdp!FI;DgORR(F(kzbro&Uf)zn?fw`yfLwIVF-Hem6dOV z5rt)0?5P;uK3+ZQRyyy0Lxpyx?7y|ks8*Zl z*LF5kHBPn*jx^!XUi?~Cu=t+EQBJkr(QTqAF~~_rP{u&L;gOkeW#2nog4>h|Sq^II z>uBz_9BEOqea;!iM>xal-dN?pc> zO;aG#+PelHR;x={oAp?gcx{Y^-}GO5_ie1)1^!TvFp}p-fp`hp%I;kdDKe5cbGe@z z;*{H4p+fr}?|-97w#XrMDs!h&nYxrkvG+7BQVI+OXX=TFj0Oj;v3g2wx;7Uc5@(Bf zk@$U?epn&_i_~MWty_vJD{wa|Py`cTc}txENWXFm%Tc@Zpw;I*aW#gzgz)$C+ak*k zqC(6O%_cLR#-26?Flih}7|fgGZC*Aj`~8_Iv_oUiqW-zN%y~l@2)h5x`W)1(ylJ51 zHo4-@pvR?(@;6hv`Cyy408@(+TFluZvZm8JE4uZ3Pc-e`97Kl7JT&>!)?;_2wh#HN zrAdr2kqLXti#XF@z3OMzPjYbzc0 zLjJgFU2BMf%f;WK_!=^-9~{u<%3N6w+)qN9OGN^ncN^Y|yO@-(xr_bb^mx>ni&OI+b6p4qDk8eU`kr9B;2{krWEbwX?p7gn$T#;3c3Vr8B%lh)bOHPp$5 zR|;d?bwI-}IBNPW{6! z5ZZ6ook?ljFL&^UH%=v>4`+JFhv~#SlOzWV*b|&A{J|ary8D*7XmSS*>&)yFR<5H2 zLBypAc{D0jYji3k6OVEVZGQLcw?^+sg-MQMZW0wd`;$do#%p!or^K3c!#wj@mewJfuuNn9@9Rsz$5lK!l4H8=L^9S1JT@;>&%W0<-1 zQLnj_MU#O!W#Kp?XnH`u^rk?iQJmRC6iaayf8xy1dbN?jSpx03TBe!Kx`Bn+#U{ zHD0TCn|^u>=Xq1zUXovKoqYy9QILC5Y^h2n=Ap@eeF#`k(jKKN9aGh>4m~Glu8=<5 zn#?y?CKUU5}%;1TM2}D(AI(6!j?ll>tKW zdd{rdk*zfL?>^8Zh-~*oU5?|5Y5zdE+)&rJWTYM$m?)IkZWzNeR$3m_>%#&`7G1g2D z*TG196qjF2Sy0C~L1V2J02Jv+$a@^lu<5~FZM(6iQKcLp{qiQwQdp&)rkN}yJn zq!R5YRD5FzadL8Kn#BbyzL(c-RVHuIakh{Z>t=!6xQ(gfL#=GT0(4mn;3|Y1DNq9FuCVzKbWug8P4t0le;h>_+7%vF zHeE2-oflg#=DZ^z(W!9#1Shjq<*nEh*cxGd<(hj}T1|3XJ(TrA+r|DBu;TR#rmaU_ zop|=@bc(Y6S*@k8ki#9?AR0m!E<;WeNZ=#4F+xe zN_tu;GmGU*B$pH=d@c1PP}A&;!2X$-lF600Rd9UeONaHloF&YeVxgCXA$cJjIT;WN z0+X^c^(959WKw?NETu+rnKWV1cj3a89K7z!o{)!4IV(neIKfiT0@Yk`7M%P6fqPh5 ztg;3N&lwCfPx;b1F5hKq`f^c`WQ^ske3)7*tKxO*v%FUNg#DnsJrYVdwOTVDv;h?? zJTJOvf^p8~QU{jZ$f-7;0{i7}!($zWeav; zE8W?C*H2&xYpoldc2KqRH#&oho<2%0aN?}e!~r%Vr`{ zCWTj+489hh*ImprHHnkO*=)J??wnGV=xz{=Rt8V2Hbz)x6Z|Aau8hl^?|edg-99TDlV;5^GKBGYd=kb7!-ZS86xjIHp3Xi)l}Kb_RDB zp2ChSR4#d?v$z)JXLO5K&Kqhbus3lR5jpQ34`6{#*p&DdYFtqedL=?>}09)KBi{u z-ENp{I%+w>aI!w|jTEwL8s_{sPh5JzGb2(z(~VGU%j2{0O4<9RrAYFA*`87x)6kO+ zm7RQ>8sFq3;Buhtg~_5Z`nLqMSrJQLt>$wPC*?PY;+nCs73o_~9fub&y=ulc!t-KO zVYy44;bB)PY<}B57Pi6NmzI-f`y&CdwfwO z?fBl+>e{37Cf49Nb{^C9DI2cO0fCafTc~Nl2R22M*3}oQ#!o7L@+T7GPPGlWwlbBj zs#5N(J{WLF+q|oC#&5ua03$_^(Mjg6)0~L}*z15OaJuu~Q86p{<2KHp>?l;0ls^z- zLD)ApHN4**&$|uq^i75>_T8k36^HE4_uDQ`mUvisW{9iIRLtoGcBCh|?S)hNn!T=# zZR1!`GRSQQi9nZOiNVcTF<#_WZ6>|Lhb$v>*amy zw7^bVs+DbA@qJ;tCH+9ZV%RnUw`S`WjhFPUlKo&%gEjgyMXhX>Qr59fmY1({>(UrH(yX& zCdITz!Fp-2l&CZndgsBlLmDoL#_;$fL9fWhRbjA-6eVFRwBY5wJImi)`_sM$~{a6L09vH zH_=7NO`62sI`k@Xv2kfa=0n|6Po+np-+~8--yNZ5Rp;<3-tMK{9H}L2J!d@wX8kt{ zy{xJprP@96t!fNgxE0M?t}}?gjEg5^nkc8#qYisR!Y8zkW+3gvmW$ukZxT9i!4Oo+ zhiAFP&9)9OKTBve%1WLD8g0|}H&95v!@U~F@baVF4z;^RN>Qh`vA#$3?Ch2J2j=$> zTdeMo5*=-MZn1hz7A&)}=GN>Kz}L`S4iVI@O~%Kkbn2E2cWH*dn>}h*$f6gtk0??x z#&#EDcQqsoJ`CEhVtt0|ty~5jOl8;0%X-c}UAVdtB5m}RY+`K<^3O}5a<4Y1%qb+> zq+YWHl~-RHwVqbZX;!@osm$n>ZiT2g47Drwt1jMbiyl-OpT?<@-@MZ+czO`uCht0` zNZ)*#^xc928a)CPwi)9iPQ>;WjrFnjEl%lD`Vm~gbsxG));6c@ulghbS2X?V?)l`=Kr4C3$I%JnrVFj%a=Q zb9PME16z({7ltUXk3HJ>A_blD#JfH_2QFLkZhJ%3$d&JWcxFk81aaT2#P0|)nc&!A z^=}ujrR2THWokwVwshbW`Q917Aa8xN4n`b(_Z1;LR?dSD=0|G2>h+e0n~0huLo*;4LWgBLr90|24jG+bO}$(9UXtcIODmY^J34~ zqWB&a_@?L^7e2(sSNlGL4#fqX^pN5;?kYN5n^v=R2HPW2ExPACTc^EzmN0(B zCiSnRh!PX>hgVT=vNAkTr2#}`63Lf76<>)@JiVE928LSey$g-ANIX`k~C52B3z{&>B{JN2+J6_z|J~T@&DEF)aS%a-Y;BIv|IZHfLvC* zfOGmat-L?%TaA@a#{h%%ABX@s`ErxWl)NO*rXDTib5I&}A|>X@(Fy_h9s5twqb&rN zoNGI}w!aKr!3@to(J(Vc6n^ADNL{yipqWKsku~o_l`Xr5-Pk<(%Y+uWUvBP%I+j#npbDCxes#7e z4mjbUYGjvC@v`|m%Prb_wcL&;ta4!Nb^QbP*uTfQa$#n#5mp0Ns?O-U&*z2BruYKx z-Qx$jkXNN13Ii8)yluS2JCM>^m~(#h?Qc21R8ZtPV|>Lhp42(PyCFPu*Zt|f%Haq=J+m-@v6r=x5xX8`P^#9 z##|$n-Q8pT{yjxNI9q02d+NJJqD7b#TnV{2|7UEJ%uyjDd%$r{N&Higq5JYoc$t6> zCc<>s6J2~FBa#^R<8Q(P`T=TG3Tf$}LW>CAdl;yI4!@WEi98P@>ger1;73@2IS8E{ zJqZ-CQFYgi#@vd^BL?uagwfgpjry&%c)Yb;=F0cqGP^CB=X|L=yTOWw>RK+1&%~Hy z;f`Jq{fx9u?pdCatHf;?>)D2cqi5{=^bPd<*y-v4uFedEn(m zpF;a^$`y;uP)a+e?;rX;@4Kw~nJP_0ej%ZL365QrFi(kviO|aVG95}cw|H>j{0-u_ znpKtrU*0@Ox-3v0*rD%u^clBL)8?nlactD6N(HQXQZPmr{g>ohR-7E z1fmdD?`Q`>@mB5`O#Qlk(aA$hr?=qT*-dQ`Y_p@P-v(~#Pu4BRE7W*|5!oeM)BqRd zK`A*M_4SnolEbITh&Y&XCrCK29y$!2>Tdh()}D$J@R{jv!iT3PRI?X^^CEaHfen^0 zFFa$jnTh*qo`D+09-$3q;R|r)P?4P=0ocTnutd z6H-$=Voy$entzpWMsgC>k>R&r>)P;Z&awuP%LfKS6REp>CvSBKUINvGhHWq{I13(P z;<10s6%y^O6MeMerACbuuCJnRt}o_=iud5Byoe;v$hjns`b({Yr=bo*r;CSP0fIsn z^+)EUK2dk|;D(_Yu7EWX>7#3@ZjIl!0gv!hfzlJzl0aNNYyKb>waeG{G(d7D{MB%) zkwu2j!p*@Ov6EXs&$@o(dNiedjsP067}xZx@GGRdAD_SKb{wN22uM}<3l?At4#dr4 z4JiB$ylQ4TbrLw}iLnVkFS}H)!6&i8d9~1?h0riE6Tbbo6VG9-vCoaLcC87%0gUFE zO3}syO~4|?4Lg2~ZZ&^nd$t3bLg9{g)CNsBhN#&fQUwrFKNW2RQiuDlnCu)!MeG7B zWcxT|1x%ee3WuEZX&PD{yz3d%lFp{j7HDIE00|-r)WSsAf1&)N6=@oar1k8!D(7$E zz3lpIpcu0re%G4awc0-Xi|@y;bY26f^E7b%mOiHmhYKgew?>YegD0pX&yS+o^u0GM z7^0w@j%L*-l@4}cShU$W@UMHiG*Y>bR)6X_(V-s*%Z&B+Adji8ZTqyn9q>>F{PY!R z0I4Qn3Y?hSxO|#ITbx(}C1p`nb2EM)cRqT8^HQaNdZT5V#aEhYzy(?@d)#08AaS#f zH{+L8C9j}MWDKpp8rkO{9E;5EfAj*2+qDR<3#1P*-Yd@&##<;6Jo z9%Itk_vorW(^A*+pQ{A))>4K7_#|WXG1e}VduHK4C4%Weae&+XWvv+wfI7d>&K&O+ zTv9Zt8#kySdoIPsf>Z*FYu-bI2KY0@B(=5tN#6yk#_>;9dN+rkbZ;DC+2oPeNzRbH zaPj$Hu~T3ljNT~Oqr)0I{X27V#O&S=*0)txNt#m%-e1(xHUHj$_j}X&V6#-`z>ee5 z656B&RGafA`1L+Nvgje8a77U)MjG_YsEhH;7^~{rsGOhY14=X+flX^s$UVZu18%0r zMVq-UZqo#q7ucq%SBIc{l7_i^a*(=JprZa0jzmtBaGry#B1H-pq$~O|gS5S?bUQH6@q(xlpLwZEntK~SOQtS@ z*;=r$xhL^yx<1vRdl`@iXI$F`z~a~7*za^D1jxCzoNd>gc50x`^;3{@k>L|9Yc<&P z_bcWkxGgvVd-Hj|scpouewH$o&2WN1!E4Zqr~$5mV?`a~fp_XUFxBGIX56V``kYd- z&@Vx`^i(|+iQ=(W`b#B#l8P2u0Y_cM@D+}wX#pK}K1l&xnc2M?opLh?*OXy*42v$B zqV?p$NN-AcOV1*|w?w=@0*GM%1FcM#P;N6@`py{ zEufa`$a(ArDR)=vNcDDtO)_Pn6V+PQuUD9%aRy4>X_}Aliji_SGT02*x=k}3QzH)a!v9=#;-JEPbZ_=} zUg4^ZZP3lmy0$gsmFYhEjQrEiBLxccjoV?lR+++;PCF2CfF9Azeb38Q#l`x5_6fyp z_C4RzMN?I8?Cgd2@9LPaSR&}O&D1rjJU^CqiyrLjGrcQ zd`+znc&&5}t!P^MzIjN_ugt6ILB$yZx(zQ@?Mr~3Id`I~g)!h!+yTDW-Fy=;JCEE< zra$^}CVdpgw~*{MSI4&6xn!^cLUcGJeVH=(R!yo*MAiZ!LYfP%2Po zxSw8a$CaOJ?PU>=v}c-LpXG8QjD#kU#+&T9GE4?DbrQWM zv$17cGE)VS9dz1*bv%z+`He4xk)}iy$_o3?$vfW<12V)|NcNsHGJp}f)))qbWd@SR z=YV68t&U1<6Hs`-hLWi9@LYI8E{pwx0SX8^x2bA75G zw}n^hojj`DI~~b#ILP>MFBKCNFSSgTwV@6huswY_ddSXQC$P<~Np00sJ0(o8wb&wg zL}C;v-^^*?|^02O)KRC+q7HKC$ug112kNmRBan%oC_u~M;;(KDLx>iyCin^Yq;dQtUEj`D& zHME3Vt;ZsCKL^^GvZwokNKT(RMZTVTv;urcVdl(k6RJ-(WF>=LjoWJ)`eA#LEPv&v z;v@CVH0#DjbT+-%TWJF*UxxxV1P-KlBTF05U8pf}^cBOKJ%<;d)Jco+#(GlYk%C$} zn;Q38Xs&E^Xbu(-Oe0O=Zqptx_C2JCcV#FPZ>_73S}+4e@A4ZM$JO@Mp&M?DvvtVT zEC+vY=6u*KVx~=yQr&@FTUuInAeu8n{X6)KwuV8<%0GalfxR$3znxnS7|om4wr~q_ zFs3nSQUArw&I+eJblc0DP)aJX&v4_PNBip!>;&7MuLsjarO64H)Errjz7&#an6M@ zk37x>k&uP{%f8AjKmn!8=|c*Okp1cNa~m3lp+bxtg@p zGc>DA)odr=UI6%027=*5AmhqKmtpI5@8lDzr`3klNc#T&qWWh1-qC zX*9%f?$W!hD(i~pZd+z9;g;AoX+vMe1Z(L1@br4{?DxV1e95y4s{3;4R9>;(?L4e` zHQ|gT6h9maYmMU{bA1xrL$F0ZH!zaYE-+NI*!No#@;hfybHygQj7R=*cYDKHyxwTN z;uq?YlwURIAP-DP{BS@?$2Iq@-SNG!9jCpJ7cerHn^VUA;F#!l?~Q4E&s581OAxuz z2Rd_K8=5v=39W8wjFk5CMNKLfT1PO#>5Ssns`WpN$IL!lklT%Y(@T8Q^8W;92AKKq zWk^K;fkP2+e;;>WZ5_e;?s0J4_Po2f`|fLS{%~n-IbIP!pmhp_|2wL6_LW{C&@Kgn zzg%kr2+rs3yRWvKyC3@M*6F4P=XK5n1^3*%HSz?XXvBTnr{I1?s@lmD$Q$%KOU>-| zWL3U{zueT!*mhFtYvdnMf=)cKx4xdgMWs1w_553TO7Bpiyq)`<(;bIqsLOx^bz7LH zT@|}DdB*$dT3Mv+Hn8VO*1*ml?FlsuJvOT|Tx0uc{~g%2PA^Q|qPXG`bDt*DREI7a zoD{32_Pn`QQ}%|hwJtZ$Tn=WB19KiI>yEGb9Q)My$bRbZ`A+ROm+snaz)=6nKIecR z2q1t!D;ID-+v?ZNBCX1{w;b^4$g?ic_`d!}1g)MoLksiD%+qnRHD-7ZDL2=Awy)Hi z^S7BxYIkav`FKq1&`+lgspZ^o^R(LBY?W_WrO9))$g{J+`JDFk=%Jpz&dTp7{eOE` z_uEDh#DD&_6B9#2oraJ)bxkNjsv@d3twa#0Gzd|6LGAyLm-2t{-bxYT1&Js6geZcR zB&9Kh1ju*%5yy6C&K`GrzB^w`9lLZ!y3Fi+?C$*>@A>xTc2_p5xO?Xg9*xwoPBN3# ze`CBi$7mVHgK^3qpgvb<^Ng>**~AAQUB*~QH_!0*nX8u~;EjM}+KHF-9i)O}-Lc*- zv(D}(K2jgs?K+MV5<8bo*{Lis$`t`cp!Wy_t1ej=y>D7uPy`f#qaq*|V~#UrvmPhC z=5Co_)gALnQ@3z~A< z+{XG2-Nc0wxboSDmM$1=JP)!z6$*zKhX^7LdElwB6aqU16s`Ng1m@mpy2K>$&baP{+eAj0BA^KT-w-(X3#%o5@R7v1=A<5< z;@MmybNO)nPwbt#h)>UrT4%nIZ%pb%UQ6Tii)Rq@vYmVn*Ds7&8PnTqw2mo_(~*%h zzPLJL)ipgcMY(%K)iO=$)$j^W))DdO8wxcCWEqz&%hNxRi5$+3u(5{iHOkm-?z;Qb zLnTE(5$F~H`8_UN>M_f9S$vqY&52ve<{!I{X%ks|q^w*KPz3seKwxQUsh-Vd`_sC% zstCL!2>7|^x%rs-qsZdx#u<9CnX;*4{ZIE-@a|hvELvo@i@q29-h+q8O-**JI(E2; zpYwZ2PGoR;$Rit|_&4t5_mO%tgOg!-kEvtz1MTqJ!&P4xwVy;8TmNj)9b5>}9i{b3nvbfXxVC+^3`Deky+_m_Xibe126D|sQnIGumHKl4mK{<_?^w!JXvr7gU;xQK;?g62Ui^>~z4fU9HYaUPG7 zF_ImKe)p7i_sJ^&zSlX9{yX&IxvTtQ)ZTCusnK*x?Sw}n&KY&xW7T*VTu1q!M0gJ& z8jrQ(9*iMMADC17tJvvX-n^jv0{ zk6Nu}9a64TD&WKPmH1xsL)yKS+wMd`#E~8jA-`3^#s+07xKe!@C3DYho__Ti%9?g002ovPDHLkV1n*Q1=;`r literal 0 HcmV?d00001 diff --git a/erpnext/docs/assets/img/buying/supplier-payable-account.png b/erpnext/docs/assets/img/buying/supplier-payable-account.png new file mode 100644 index 0000000000000000000000000000000000000000..ce35ef816fffcf9e8abc7739fc335aff468819ea GIT binary patch literal 64904 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 AO8@`> literal 0 HcmV?d00001 diff --git a/erpnext/docs/assets/img/setup/users/add-user-details.png b/erpnext/docs/assets/img/setup/users/add-user-details.png new file mode 100644 index 0000000000000000000000000000000000000000..e9cbede1371b81b1b3534ed0140f775f176f87f7 GIT binary patch literal 256458 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�D1$*jA!XFf3(hC+D@-(On}rO7wdJN}?0 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 _*uEyy!c~(5DPhKBr)SPTZBYE!4bIt-q4$8k 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

3(wpK3?3kS;3(a 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%0AiJ*0*je%Q$0^a_8b%9y^T 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 literal 0 HcmV?d00001 diff --git a/erpnext/docs/user/manual/en/CRM/customer.md b/erpnext/docs/user/manual/en/CRM/customer.md index 780881bd6f..5c158d1658 100644 --- a/erpnext/docs/user/manual/en/CRM/customer.md +++ b/erpnext/docs/user/manual/en/CRM/customer.md @@ -69,6 +69,16 @@ identify which Customers are profitable and which are not. Territories will help you set sales targets for the respective territories. You can also mention [Sales Person](/docs/user/manual/en/CRM/setup/sales-person.html) against a customer. + +

+ ### Sales Partner A Sales Partner is a third party distributor / dealer / commission agent / diff --git a/erpnext/docs/user/manual/en/CRM/index.md b/erpnext/docs/user/manual/en/CRM/index.md index 2cc7e98dc0..d5a79b3d2c 100644 --- a/erpnext/docs/user/manual/en/CRM/index.md +++ b/erpnext/docs/user/manual/en/CRM/index.md @@ -5,4 +5,12 @@ ERPNext helps you track business **Opportunities** from **Leads** and The CRM Module helps maintain Leads, Oppurtunities and Customers. +
+
+ +
+
+ + {index} \ No newline at end of file diff --git a/erpnext/docs/user/manual/en/CRM/newsletter.md b/erpnext/docs/user/manual/en/CRM/newsletter.md index e41ba1fc52..50453ffda8 100644 --- a/erpnext/docs/user/manual/en/CRM/newsletter.md +++ b/erpnext/docs/user/manual/en/CRM/newsletter.md @@ -18,4 +18,9 @@ send the email to all the intended receipients by clicking on the send button. Newsletter - Test +
+ +
+ {next} diff --git a/erpnext/docs/user/manual/en/accounts/advance-payment-entry.md b/erpnext/docs/user/manual/en/accounts/advance-payment-entry.md index 4ae0a5ce09..6d822f1124 100644 --- a/erpnext/docs/user/manual/en/accounts/advance-payment-entry.md +++ b/erpnext/docs/user/manual/en/accounts/advance-payment-entry.md @@ -59,4 +59,10 @@ advance in the advances table. The accounting will be adjusted accordingly. Save and submit the Sales Invoice. + +
+ +
+ {next} diff --git a/erpnext/docs/user/manual/en/accounts/budgeting.md b/erpnext/docs/user/manual/en/accounts/budgeting.md index 66021106ad..679c38e3e0 100644 --- a/erpnext/docs/user/manual/en/accounts/budgeting.md +++ b/erpnext/docs/user/manual/en/accounts/budgeting.md @@ -55,4 +55,9 @@ Accounts > Budget and Cost Center > Budget Variance Report Budget Variance Report +
+ +
+ {next} diff --git a/erpnext/docs/user/manual/en/accounts/chart-of-accounts.md b/erpnext/docs/user/manual/en/accounts/chart-of-accounts.md index 79bc1c1ff2..5f9e611790 100644 --- a/erpnext/docs/user/manual/en/accounts/chart-of-accounts.md +++ b/erpnext/docs/user/manual/en/accounts/chart-of-accounts.md @@ -155,4 +155,14 @@ Typically, you might want to create Accounts for * Types of Sales (for example, Product Sales, Service Sales etc.) under Income. * Types of Assets (building, machinery, furniture etc.) under Fixed Assets. + +
+
+ +
+
+ + + {next} diff --git a/erpnext/docs/user/manual/en/accounts/index.md b/erpnext/docs/user/manual/en/accounts/index.md index d9e94c0d84..531775e0e7 100644 --- a/erpnext/docs/user/manual/en/accounts/index.md +++ b/erpnext/docs/user/manual/en/accounts/index.md @@ -10,6 +10,11 @@ In ERPNext, your accounting operations consists of 3 main transactions: * Purchase Invoice: Bills that your Suppliers give you for their products or services. * Journal Entries: For accounting entries, like payments, credit and other types. +
+ +
+ ### Topics {index} diff --git a/erpnext/docs/user/manual/en/accounts/opening-accounts.md b/erpnext/docs/user/manual/en/accounts/opening-accounts.md index 3261ccfd1c..99fb02e9fa 100644 --- a/erpnext/docs/user/manual/en/accounts/opening-accounts.md +++ b/erpnext/docs/user/manual/en/accounts/opening-accounts.md @@ -104,4 +104,12 @@ Here, select the company and type of invoice (sales or purchase) and add a line Opening Invoice Creation Tool + +
+
+ +
+
+ {next} diff --git a/erpnext/docs/user/manual/en/accounts/payment-terms.md b/erpnext/docs/user/manual/en/accounts/payment-terms.md index 4f28d0da17..ff1346698c 100644 --- a/erpnext/docs/user/manual/en/accounts/payment-terms.md +++ b/erpnext/docs/user/manual/en/accounts/payment-terms.md @@ -10,6 +10,10 @@ The documents you can attach Payment Terms to are: Note that the introduction of Payment Terms removes "Credit Days" and "Credit Days Based On" fields in Customer/Supplier master. Payment Term contains the same information and makes it more flexible to use. +
+ +
+ ## Payment Terms Navigate to the Payment Term list page and click "New". > Accounts > Payment Term > New Payment Term diff --git a/erpnext/docs/user/manual/en/accounts/tools/bank-reconciliation.md b/erpnext/docs/user/manual/en/accounts/tools/bank-reconciliation.md index 2f0ebaaa11..2d9acbbd7b 100644 --- a/erpnext/docs/user/manual/en/accounts/tools/bank-reconciliation.md +++ b/erpnext/docs/user/manual/en/accounts/tools/bank-reconciliation.md @@ -4,7 +4,7 @@ If you are receiving payments or making payments via cheques, the bank statements will not accurately match the dates of your entry, this is because the bank usually takes time to “clear” these payments. Also you may have mailed a cheque to your Supplier and it may be a few days before it is received and deposited by the Supplier. In ERPNext you can synchronise your bank statements and your Journal Entries using the “Bank Reconciliation” tool. -The Bank Reconciliation Report provide the difference between the bank balance shown in an organisation's bank statement, as provided by the ban against amount shown in the companies Chart of Accounts. +The Bank Reconciliation Report provide the difference between the bank balance shown in an organisation's bank statement, as provided by the bank against amount shown in the companies Chart of Accounts. ####Bank Reconciliation Statement diff --git a/erpnext/docs/user/manual/en/agriculture/index.md b/erpnext/docs/user/manual/en/agriculture/index.md index c49d1f20eb..932bb95948 100644 --- a/erpnext/docs/user/manual/en/agriculture/index.md +++ b/erpnext/docs/user/manual/en/agriculture/index.md @@ -17,6 +17,10 @@ The Agriculture module in ERPNext helps you keep track of your farming operation Task +
+ +
+ ### Topics {index} \ No newline at end of file diff --git a/erpnext/docs/user/manual/en/buying/index.md b/erpnext/docs/user/manual/en/buying/index.md index 55589ad43d..456dd6835c 100644 --- a/erpnext/docs/user/manual/en/buying/index.md +++ b/erpnext/docs/user/manual/en/buying/index.md @@ -10,6 +10,11 @@ profitability. ERPNext contains a set of transactions that will make your buying process as efficient and seamless as possible. +
+ +
+ ### Topics {index} diff --git a/erpnext/docs/user/manual/en/buying/request-for-quotation.md b/erpnext/docs/user/manual/en/buying/request-for-quotation.md index 2241ed60c6..660addc5c4 100644 --- a/erpnext/docs/user/manual/en/buying/request-for-quotation.md +++ b/erpnext/docs/user/manual/en/buying/request-for-quotation.md @@ -8,6 +8,11 @@ In ERPNext, You can create Request for Quotation directly by going to: After creation of Request for Quotation, there are two ways to generate Supplier Quotation from Request for Quotation. +
+ +
+ #### For User @@ -52,3 +57,5 @@ __Step 4:__ On submission, system will create Supplier Quotation (draft mode) ag If a supplier indicates that they will not provide a quotation for the item, this can be indicated in the RFQ document by checking the 'No Quote' box after the Request for Quotation has been submitted. ![Request For Quotation]({{docs_base_url}}/assets/img/buying/request-for-quotation.gif) + + diff --git a/erpnext/docs/user/manual/en/buying/supplier.md b/erpnext/docs/user/manual/en/buying/supplier.md index 7ff645f0c5..baf0fed525 100644 --- a/erpnext/docs/user/manual/en/buying/supplier.md +++ b/erpnext/docs/user/manual/en/buying/supplier.md @@ -8,6 +8,13 @@ You can create a new Supplier from: Supplier Master +
+
+ +
+
+ ### Contacts and Addresses Contacts and Addresses in ERPNext are stored separately so that you can create multiple Contacts and Addresses for a Suppliers. Once Supplier is saved, you will find option to create Contact and Address for that Supplier. diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/making-custom-reports-in-erpnext.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/making-custom-reports-in-erpnext.md index 5ef4248722..c35c86e70f 100644 --- a/erpnext/docs/user/manual/en/customize-erpnext/articles/making-custom-reports-in-erpnext.md +++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/making-custom-reports-in-erpnext.md @@ -6,7 +6,10 @@ There are three kind of reports in ERPNext. Report Builder is an in-built report customization tool in ERPNext. This allows you to define specific fields of the form which shall be added in the report. Also you can set required filters, sorting and give preferred name to report. - +
+ +
### 2. Query Report diff --git a/erpnext/docs/user/manual/en/customize-erpnext/custom-field.md b/erpnext/docs/user/manual/en/customize-erpnext/custom-field.md index ec6c2229c8..dc4846b4fd 100644 --- a/erpnext/docs/user/manual/en/customize-erpnext/custom-field.md +++ b/erpnext/docs/user/manual/en/customize-erpnext/custom-field.md @@ -71,4 +71,9 @@ After inserting required details for the Custom Field, Update Customize Form. On Given a permission, user will be able to delete Custom Fields. Incase Custom Field is deleted by mistake, if you add another Custom Field with same name. Then you shall see new field auto-mapped with old-deleted Custom Field. +
+ +
+ {next} diff --git a/erpnext/docs/user/manual/en/education/Assessment/assessment_criteria.md b/erpnext/docs/user/manual/en/education/Assessment/assessment_criteria.md index 8b35e8d378..c5740ca363 100644 --- a/erpnext/docs/user/manual/en/education/Assessment/assessment_criteria.md +++ b/erpnext/docs/user/manual/en/education/Assessment/assessment_criteria.md @@ -15,8 +15,6 @@ Assessment Criteria is be used when scheduling Assessment Plan for Student Group
-
diff --git a/erpnext/docs/user/manual/en/education/Assessment/assessment_group.md b/erpnext/docs/user/manual/en/education/Assessment/assessment_group.md index b1ad745ee9..b7599b84f3 100644 --- a/erpnext/docs/user/manual/en/education/Assessment/assessment_group.md +++ b/erpnext/docs/user/manual/en/education/Assessment/assessment_group.md @@ -15,8 +15,6 @@ On the same lines, you can also define multiple Assessment Group bases on assess
-
diff --git a/erpnext/docs/user/manual/en/education/Assessment/assessment_plan.md b/erpnext/docs/user/manual/en/education/Assessment/assessment_plan.md index 0bb7e6b36d..de13c80f7c 100644 --- a/erpnext/docs/user/manual/en/education/Assessment/assessment_plan.md +++ b/erpnext/docs/user/manual/en/education/Assessment/assessment_plan.md @@ -21,8 +21,6 @@ To schedule an assessment/examination for a Student Group, for specific Course,
-
diff --git a/erpnext/docs/user/manual/en/education/Assessment/assessment_result.md b/erpnext/docs/user/manual/en/education/Assessment/assessment_result.md index 4ca91a710b..a83a890463 100644 --- a/erpnext/docs/user/manual/en/education/Assessment/assessment_result.md +++ b/erpnext/docs/user/manual/en/education/Assessment/assessment_result.md @@ -8,8 +8,6 @@ Assessment Result is a log of marks/grades earned by the student for specific As
-
diff --git a/erpnext/docs/user/manual/en/education/Assessment/assessment_result_tool.md b/erpnext/docs/user/manual/en/education/Assessment/assessment_result_tool.md index f57fc182c1..39783258c9 100644 --- a/erpnext/docs/user/manual/en/education/Assessment/assessment_result_tool.md +++ b/erpnext/docs/user/manual/en/education/Assessment/assessment_result_tool.md @@ -11,8 +11,6 @@ As you go on entering marks for a Student, and switch to next student, in the ba
-
diff --git a/erpnext/docs/user/manual/en/education/Assessment/grading_scale.md b/erpnext/docs/user/manual/en/education/Assessment/grading_scale.md index 3d8f2e9ce3..790b04aa48 100644 --- a/erpnext/docs/user/manual/en/education/Assessment/grading_scale.md +++ b/erpnext/docs/user/manual/en/education/Assessment/grading_scale.md @@ -9,8 +9,6 @@ In the Grading Scale, you can define various grades and threshold for them. Base
-
diff --git a/erpnext/docs/user/manual/en/education/Attendance/student-attendance-tool.md b/erpnext/docs/user/manual/en/education/Attendance/student-attendance-tool.md index cc526b5f6c..4ad2ab8861 100644 --- a/erpnext/docs/user/manual/en/education/Attendance/student-attendance-tool.md +++ b/erpnext/docs/user/manual/en/education/Attendance/student-attendance-tool.md @@ -17,8 +17,6 @@ Student detials will be autofetched and you can mark the attendance of the given
-
diff --git a/erpnext/docs/user/manual/en/education/Attendance/student-attendance.md b/erpnext/docs/user/manual/en/education/Attendance/student-attendance.md index 0ebb65cd48..c9aba9fef1 100644 --- a/erpnext/docs/user/manual/en/education/Attendance/student-attendance.md +++ b/erpnext/docs/user/manual/en/education/Attendance/student-attendance.md @@ -17,8 +17,6 @@ Select the **Student, Course Schedule and Student Group** for which attendance i
-
diff --git a/erpnext/docs/user/manual/en/education/Attendance/student-leave-application.md b/erpnext/docs/user/manual/en/education/Attendance/student-leave-application.md index 406c20db3e..907dc8eaa6 100644 --- a/erpnext/docs/user/manual/en/education/Attendance/student-leave-application.md +++ b/erpnext/docs/user/manual/en/education/Attendance/student-leave-application.md @@ -15,8 +15,6 @@ Once a Leave Application is recorded for a student it will not be recorded in th
-
diff --git a/erpnext/docs/user/manual/en/education/admission/program-enrollment-tool.md b/erpnext/docs/user/manual/en/education/admission/program-enrollment-tool.md index fa2e09a7d8..e464d45b44 100644 --- a/erpnext/docs/user/manual/en/education/admission/program-enrollment-tool.md +++ b/erpnext/docs/user/manual/en/education/admission/program-enrollment-tool.md @@ -22,8 +22,6 @@ For promoting the students, the new academic year, academic term and program can
-
diff --git a/erpnext/docs/user/manual/en/education/admission/program-enrollment.md b/erpnext/docs/user/manual/en/education/admission/program-enrollment.md index 54bf98b521..8acff83e75 100644 --- a/erpnext/docs/user/manual/en/education/admission/program-enrollment.md +++ b/erpnext/docs/user/manual/en/education/admission/program-enrollment.md @@ -21,7 +21,6 @@ Student Category: For the Institutions having multiple Fees Structure, this fiel
-
diff --git a/erpnext/docs/user/manual/en/education/admission/student-applicant.md b/erpnext/docs/user/manual/en/education/admission/student-applicant.md index 2f725424e9..ec8184d644 100644 --- a/erpnext/docs/user/manual/en/education/admission/student-applicant.md +++ b/erpnext/docs/user/manual/en/education/admission/student-applicant.md @@ -32,7 +32,6 @@ the system shall create a student against that applicant and redirect you to the
-
diff --git a/erpnext/docs/user/manual/en/education/admission/student_admission.md b/erpnext/docs/user/manual/en/education/admission/student_admission.md index ff98a923e2..ede45a80f6 100644 --- a/erpnext/docs/user/manual/en/education/admission/student_admission.md +++ b/erpnext/docs/user/manual/en/education/admission/student_admission.md @@ -4,7 +4,7 @@ The admission process begins with filling the admission form. The Student Admiss To create a Student Admission record go to : -**education** >> **Admissions** >> **Student Admission** >> +> **education** > **Admissions** > **Student Admission** > Student Applicant diff --git a/erpnext/docs/user/manual/en/education/fees/fee-structure.md b/erpnext/docs/user/manual/en/education/fees/fee-structure.md index f502b93220..3218f17d34 100644 --- a/erpnext/docs/user/manual/en/education/fees/fee-structure.md +++ b/erpnext/docs/user/manual/en/education/fees/fee-structure.md @@ -24,8 +24,6 @@ If you are going to use this in the Fee Schedule, you must select the Accounts c
-
diff --git a/erpnext/docs/user/manual/en/education/schedule/course-schedule.md b/erpnext/docs/user/manual/en/education/schedule/course-schedule.md index eeccae456c..342e4c9c9b 100644 --- a/erpnext/docs/user/manual/en/education/schedule/course-schedule.md +++ b/erpnext/docs/user/manual/en/education/schedule/course-schedule.md @@ -9,8 +9,6 @@ You can see the overall course schedule in the Calendar view.
-
diff --git a/erpnext/docs/user/manual/en/education/schedule/scheduling-tool.md b/erpnext/docs/user/manual/en/education/schedule/scheduling-tool.md index 65dd95bd3a..6b306037fd 100644 --- a/erpnext/docs/user/manual/en/education/schedule/scheduling-tool.md +++ b/erpnext/docs/user/manual/en/education/schedule/scheduling-tool.md @@ -23,7 +23,6 @@ This tool can be used to create 'Course Schedules'. #### Video Tutorial on Scheduling Tool
-
diff --git a/erpnext/docs/user/manual/en/education/setup/course.md b/erpnext/docs/user/manual/en/education/setup/course.md index 609cac4c70..d55dbae3a3 100644 --- a/erpnext/docs/user/manual/en/education/setup/course.md +++ b/erpnext/docs/user/manual/en/education/setup/course.md @@ -14,9 +14,7 @@ The Course form is further linked to **Program, Student Group and Assessment Pla -
- +
diff --git a/erpnext/docs/user/manual/en/education/setup/instructor.md b/erpnext/docs/user/manual/en/education/setup/instructor.md index 9f4dbdca2c..32e5e215c7 100644 --- a/erpnext/docs/user/manual/en/education/setup/instructor.md +++ b/erpnext/docs/user/manual/en/education/setup/instructor.md @@ -20,8 +20,6 @@ Further, the log for the Instructor can be entered in the Instructor Log table w
-
diff --git a/erpnext/docs/user/manual/en/education/setup/program.md b/erpnext/docs/user/manual/en/education/setup/program.md index e9fb091164..5e476d2599 100644 --- a/erpnext/docs/user/manual/en/education/setup/program.md +++ b/erpnext/docs/user/manual/en/education/setup/program.md @@ -19,9 +19,7 @@ The Program Doctype is further linked to the **Student applicant**, **Program en #### Video Tutorial on Program and Courses -
- +
diff --git a/erpnext/docs/user/manual/en/human-resources/employee-advance.md b/erpnext/docs/user/manual/en/human-resources/employee-advance.md index 49f22e8c6e..46620f2e8b 100644 --- a/erpnext/docs/user/manual/en/human-resources/employee-advance.md +++ b/erpnext/docs/user/manual/en/human-resources/employee-advance.md @@ -29,4 +29,8 @@ On submission of payment entry, the paid amount and status will be updated in Em ### Adjust advances on Expense Claim Later when employee claims the expense and advance record can be fetched in Expense Claim and linked to the claim record. -Employee Advance Payment via Payment Entry \ No newline at end of file +Employee Advance Payment via Payment Entry + +
+ +
\ No newline at end of file diff --git a/erpnext/docs/user/manual/en/human-resources/employee-loan-management.md b/erpnext/docs/user/manual/en/human-resources/employee-loan-management.md index b76a2260c7..e85b5d6fa4 100644 --- a/erpnext/docs/user/manual/en/human-resources/employee-loan-management.md +++ b/erpnext/docs/user/manual/en/human-resources/employee-loan-management.md @@ -52,5 +52,9 @@ To auto deduct the Loan repayment from Salary, check "Repay from Salary" in Empl Salary Slip +
+ +
- \ No newline at end of file +{nex} \ No newline at end of file diff --git a/erpnext/docs/user/manual/en/human-resources/employee.md b/erpnext/docs/user/manual/en/human-resources/employee.md index 32e332a804..092d11d672 100644 --- a/erpnext/docs/user/manual/en/human-resources/employee.md +++ b/erpnext/docs/user/manual/en/human-resources/employee.md @@ -8,4 +8,8 @@ To create new Employee go to: Employee +
+ +
+ {next} \ No newline at end of file diff --git a/erpnext/docs/user/manual/en/human-resources/expense-claim.md b/erpnext/docs/user/manual/en/human-resources/expense-claim.md index 655935b59a..9f53da1372 100644 --- a/erpnext/docs/user/manual/en/human-resources/expense-claim.md +++ b/erpnext/docs/user/manual/en/human-resources/expense-claim.md @@ -11,6 +11,12 @@ To make a new Expense Claim, go to: Set the Employee ID, date and the list of expenses that are to be claimed and “Submit” the record. +
+ +
+ + ### Set Account for Employee Set employee's expense account on the employee form, system books an expense amount of an employee under this account. Expense Claim diff --git a/erpnext/docs/user/manual/en/human-resources/leave-application.md b/erpnext/docs/user/manual/en/human-resources/leave-application.md index b9855ab1c5..c735a6bae6 100644 --- a/erpnext/docs/user/manual/en/human-resources/leave-application.md +++ b/erpnext/docs/user/manual/en/human-resources/leave-application.md @@ -23,4 +23,10 @@ settings. See the earlier discussion on [Setting Up Permissions](/docs/user/manu for more info. You assign Leaves aginast an Employee check [Leave Allocation](/docs/user/manual/en/human-resources/leave.html) + +
+ +
+ {next} \ No newline at end of file diff --git a/erpnext/docs/user/manual/en/human-resources/salary-and-payroll.md b/erpnext/docs/user/manual/en/human-resources/salary-and-payroll.md index eff40efbf2..7e7aab12f8 100644 --- a/erpnext/docs/user/manual/en/human-resources/salary-and-payroll.md +++ b/erpnext/docs/user/manual/en/human-resources/salary-and-payroll.md @@ -169,6 +169,9 @@ created. Process Payroll - +
+ +
{next} diff --git a/erpnext/docs/user/manual/en/introduction/index.md b/erpnext/docs/user/manual/en/introduction/index.md index fcaf43e82a..05f8956f82 100644 --- a/erpnext/docs/user/manual/en/introduction/index.md +++ b/erpnext/docs/user/manual/en/introduction/index.md @@ -41,6 +41,12 @@ Among other things, ERPNext will help you to: And a lot lot lot more. +
+
+ +
+
### Topics diff --git a/erpnext/docs/user/manual/en/manufacturing/bill-of-materials.md b/erpnext/docs/user/manual/en/manufacturing/bill-of-materials.md index 11a7cac7bf..0557d2cf75 100644 --- a/erpnext/docs/user/manual/en/manufacturing/bill-of-materials.md +++ b/erpnext/docs/user/manual/en/manufacturing/bill-of-materials.md @@ -5,6 +5,12 @@ The **BOM** is a list of all materials (either bought or made) and operations that go into a finished product or sub-Item. In ERPNext, the component could have its own BOM hence forming a tree of Items with multiple levels. +
+ +
+ + To make accurate Purchase Requests, you must always maintain correct BOMs. To make a new BOM: diff --git a/erpnext/docs/user/manual/en/manufacturing/operation.md b/erpnext/docs/user/manual/en/manufacturing/operation.md index 75066aa606..bc94579c6a 100644 --- a/erpnext/docs/user/manual/en/manufacturing/operation.md +++ b/erpnext/docs/user/manual/en/manufacturing/operation.md @@ -10,4 +10,9 @@ You can also create a Operation by: Operation +
+ +
+ {next} \ No newline at end of file diff --git a/erpnext/docs/user/manual/en/manufacturing/production-order.md b/erpnext/docs/user/manual/en/manufacturing/production-order.md index 4ceb4fc480..4e2c129389 100644 --- a/erpnext/docs/user/manual/en/manufacturing/production-order.md +++ b/erpnext/docs/user/manual/en/manufacturing/production-order.md @@ -15,6 +15,11 @@ by: Production Order +
+ +
+ ### Creating Production Orders * Select the Item to be produced. diff --git a/erpnext/docs/user/manual/en/manufacturing/tools/production-planning-tool.md b/erpnext/docs/user/manual/en/manufacturing/tools/production-planning-tool.md index 9f253d6384..0887a8f1c9 100644 --- a/erpnext/docs/user/manual/en/manufacturing/tools/production-planning-tool.md +++ b/erpnext/docs/user/manual/en/manufacturing/tools/production-planning-tool.md @@ -3,6 +3,11 @@ Production Planning Tool helps you plan production and purchase of Items for a period (usually a week or a month). +
+ +
+ This list of Items can be generated from the open Sales Orders or pending Material Requests that can be Manufactured in the system and will generate: diff --git a/erpnext/docs/user/manual/en/manufacturing/workstation.md b/erpnext/docs/user/manual/en/manufacturing/workstation.md index 80654f43e3..7388e16ebc 100644 --- a/erpnext/docs/user/manual/en/manufacturing/workstation.md +++ b/erpnext/docs/user/manual/en/manufacturing/workstation.md @@ -18,4 +18,10 @@ While scheduling Production Order, system will check for the availability of the > Note : You can enable overtime for your workstation in [Manufacturing Settings](/docs/user/manual/en/manufacturing/setup/manufacturing-settings.html) + +
+ +
+ {next} \ No newline at end of file diff --git a/erpnext/docs/user/manual/en/projects/project.md b/erpnext/docs/user/manual/en/projects/project.md index 25f28d5878..82f0e6dd6f 100644 --- a/erpnext/docs/user/manual/en/projects/project.md +++ b/erpnext/docs/user/manual/en/projects/project.md @@ -4,6 +4,11 @@ Project management in ERPNext is Task driven. You can create Project and assign Project +
+ +
+ You can also track % Completion of a Project using different methods. 1. Task Completion diff --git a/erpnext/docs/user/manual/en/projects/tasks.md b/erpnext/docs/user/manual/en/projects/tasks.md index cae54f4194..0e529aaa4a 100644 --- a/erpnext/docs/user/manual/en/projects/tasks.md +++ b/erpnext/docs/user/manual/en/projects/tasks.md @@ -58,4 +58,8 @@ The system shall update the total amount from expense claims in the costing sect Task - Total Expense Claim +
+ +
+ {next} diff --git a/erpnext/docs/user/manual/en/projects/timesheet/timesheet-against-project.md b/erpnext/docs/user/manual/en/projects/timesheet/timesheet-against-project.md index 1524677d48..68b2a2f523 100644 --- a/erpnext/docs/user/manual/en/projects/timesheet/timesheet-against-project.md +++ b/erpnext/docs/user/manual/en/projects/timesheet/timesheet-against-project.md @@ -4,6 +4,11 @@ Timesheets can be tracked against Project and Tasks so that you can get reports Sales Invoice +
+ +
+ + ####Billable Timesheet To bill Customer based on Timesheet, check "Is Billable" in the Timesheet created against Project and Task. To learn more about billing Customer from Timesheet, click [here](/docs/user/manual/en/projects/timesheet/sales-invoice-from-timesheet.html). diff --git a/erpnext/docs/user/manual/en/selling/articles/drop-shipping.md b/erpnext/docs/user/manual/en/selling/articles/drop-shipping.md index 2d12ff4a21..d645ab1040 100644 --- a/erpnext/docs/user/manual/en/selling/articles/drop-shipping.md +++ b/erpnext/docs/user/manual/en/selling/articles/drop-shipping.md @@ -43,4 +43,9 @@ You can notify, Suppliers by sending a email after submitting Purchase Order by ###Video Help on Drop Ship - \ No newline at end of file +
+ +
+ +{next} \ No newline at end of file diff --git a/erpnext/docs/user/manual/en/selling/index.md b/erpnext/docs/user/manual/en/selling/index.md index 36a99d2173..3fa3dcc0c1 100644 --- a/erpnext/docs/user/manual/en/selling/index.md +++ b/erpnext/docs/user/manual/en/selling/index.md @@ -9,3 +9,9 @@ organized and searchable manner. ### Topics {index} + + +
+ +
diff --git a/erpnext/docs/user/manual/en/selling/setup/item-price.md b/erpnext/docs/user/manual/en/selling/setup/item-price.md index adeeee453f..a8215a389b 100644 --- a/erpnext/docs/user/manual/en/selling/setup/item-price.md +++ b/erpnext/docs/user/manual/en/selling/setup/item-price.md @@ -4,11 +4,11 @@ Item Price is the record in which you can log sellig and buying rate of an item. There are two ways to reach to new Item Price form. -> Selling/Buying/Stock >> Setup >> Item Price >> New Item Price +> Selling/Buying/Stock > Setup > Item Price > New Item Price Or -> Item >> Add/Edit Prices >> Click on "+" >> New Item Price +> Item > Add/Edit Prices > Click on "+" >> New Item Price Following are the steps to create new Item Price. @@ -16,7 +16,7 @@ Step 1: Select Price List You can create multiple Price List in ERPNext to track Selling and Buying Price List of an item separtely. Also if item's selling prices id changing based on territory, or due to other criteria, you can create multiple selling Price List for it. -+Item Price list +Item Price list On selection of Price List, its currency and for selling or buying property will be fetched as well. @@ -26,20 +26,28 @@ Step 2: Select Item Select item for which Item Price record is to be created. On selection of Item Code, Item Name and Description will be fetched as well. -+Item Price list +Item Price list Step 3: Enter Rate Enter selling/buying rate of an item in Price List currency. -+Item Price list +Item Price list Step 4: Save Item Price To check all Item Price together, go to: -Stock >> Main Report >> Itemwise Price List Rate +> Stock > Main Report > Itemwise Price List Rate You will find option to create new Item Price record (+) in this report as well. +div> + +
+ +
+
+ {next} diff --git a/erpnext/docs/user/manual/en/setting-up/email/email-account.md b/erpnext/docs/user/manual/en/setting-up/email/email-account.md index d5aca1a006..62b8e87e72 100644 --- a/erpnext/docs/user/manual/en/setting-up/email/email-account.md +++ b/erpnext/docs/user/manual/en/setting-up/email/email-account.md @@ -42,4 +42,9 @@ If you would like ERPNext to notify you if an email is unreplied for a certain a Incoming EMail + +
+ +
+ {next} diff --git a/erpnext/docs/user/manual/en/setting-up/print/letter-head.md b/erpnext/docs/user/manual/en/setting-up/print/letter-head.md index 72b79e1ad9..4a92965ac3 100644 --- a/erpnext/docs/user/manual/en/setting-up/print/letter-head.md +++ b/erpnext/docs/user/manual/en/setting-up/print/letter-head.md @@ -4,6 +4,11 @@ Each company has default Letter Head for their company. This Letter Head values In the Letter Head master, you can track Header and Footer details of the company. These details will appear in the Print Format of the transactions like Sales Order, Sales Invoice, Salary Slip, Purchase Order etc. +
+ +
+ ####Step 1: Go to Setup `Explore > Setup > Printing > Letter Head > New Letter Head` diff --git a/erpnext/docs/user/manual/en/setting-up/print/print-format-builder.md b/erpnext/docs/user/manual/en/setting-up/print/print-format-builder.md index f9799279af..039b4706d2 100644 --- a/erpnext/docs/user/manual/en/setting-up/print/print-format-builder.md +++ b/erpnext/docs/user/manual/en/setting-up/print/print-format-builder.md @@ -8,6 +8,11 @@ You can create a new Print Format either by going to: or Open the document for which you want to make a print format. Click the Printer icon, or go to Menu > Print and click on the **Edit** button. Note: You must have System Manager permission to do this. +
+ +
+ ### Step 1: Make a new Format Send Email diff --git a/erpnext/docs/user/manual/en/setting-up/print/print-headings.md b/erpnext/docs/user/manual/en/setting-up/print/print-headings.md index 7cf9b54c14..39b2657c1e 100644 --- a/erpnext/docs/user/manual/en/setting-up/print/print-headings.md +++ b/erpnext/docs/user/manual/en/setting-up/print/print-headings.md @@ -16,4 +16,10 @@ Example of a change in print heading is shown below: Print Heading + +
+ +
+ {next} diff --git a/erpnext/docs/user/manual/en/setting-up/setting-up-taxes.md b/erpnext/docs/user/manual/en/setting-up/setting-up-taxes.md index 5a8b2d272e..2886c0573a 100644 --- a/erpnext/docs/user/manual/en/setting-up/setting-up-taxes.md +++ b/erpnext/docs/user/manual/en/setting-up/setting-up-taxes.md @@ -97,5 +97,13 @@ Consider Tax or Charge for: In this section you can specify if the tax / charge is only for valuation (not a part of total) or only for total (does not add value to the item) or for both. + +
+
+ +
+
+ {next} diff --git a/erpnext/docs/user/manual/en/setting-up/settings/naming-series.md b/erpnext/docs/user/manual/en/setting-up/settings/naming-series.md index 086a272821..652a6874c3 100644 --- a/erpnext/docs/user/manual/en/setting-up/settings/naming-series.md +++ b/erpnext/docs/user/manual/en/setting-up/settings/naming-series.md @@ -44,9 +44,8 @@ See how to set the naming series Naming Series -{next} - ### 4. Custom Field in Naming Series + Some companies prefers to make use of "short-codes" for suppliers, i.e. WN for company "Web Notes" that later can be used in naming series for quick identification. #### Example: @@ -55,3 +54,14 @@ See how to set the naming series Then under Naming Series, we should allow something like PO-.YY.MM.-.vendor_id.-.##### Resulting in "PO-1503-WN-00001" + + +
+
+ +
+
+ + +{next} diff --git a/erpnext/docs/user/manual/en/setting-up/users-and-permissions/adding-users.md b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/adding-users.md index 6fb64df37e..65cf77c277 100644 --- a/erpnext/docs/user/manual/en/setting-up/users-and-permissions/adding-users.md +++ b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/adding-users.md @@ -20,9 +20,12 @@ To add a new user, click on "New" Add user details such as First Name, Last Name, Email etc. +Add User Details + The user's Email will become the user id. Mobile No can also be used to log in if you check the Allow Login using Mobile No checkbox under the Security section in System Settings. While Mobile No will be unique, it will not be treated as a user id. Email Login + Mobile No Login After adding these details, save the user. diff --git a/erpnext/docs/user/manual/en/setting-up/users-and-permissions/index.md b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/index.md index dcfd77649c..6c07761bbb 100644 --- a/erpnext/docs/user/manual/en/setting-up/users-and-permissions/index.md +++ b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/index.md @@ -8,6 +8,13 @@ roles and permissions. The most important role is the "System Manager". Any user having this role can add other users and set roles to all users. +
+
+ +
+
+ ### Topics {index} diff --git a/erpnext/docs/user/manual/en/setting-up/workflows.md b/erpnext/docs/user/manual/en/setting-up/workflows.md index 06c47d7aa4..731fb3d48b 100644 --- a/erpnext/docs/user/manual/en/setting-up/workflows.md +++ b/erpnext/docs/user/manual/en/setting-up/workflows.md @@ -59,4 +59,9 @@ When the Leave Approver opens the Leave Application page, he can finally "Approv Workflow +
+ +
+ {next} diff --git a/erpnext/docs/user/manual/en/stock/articles/index.txt b/erpnext/docs/user/manual/en/stock/articles/index.txt index acf1375214..4875de51e7 100644 --- a/erpnext/docs/user/manual/en/stock/articles/index.txt +++ b/erpnext/docs/user/manual/en/stock/articles/index.txt @@ -5,7 +5,7 @@ maintain-stock-field-frozen-in-item-master manage-rejected-finished-goods-items managing-batch-wise-inventory managing-fractions-in-uom -opening-stock-balance-entry-for-the-serialized-and-batch-item +opening-stock-balance-entry-for-serialized-and-batch-item repack-entry serial-no-naming stock-entry-purpose diff --git a/erpnext/docs/user/manual/en/stock/articles/managing-batch-wise-inventory.md b/erpnext/docs/user/manual/en/stock/articles/managing-batch-wise-inventory.md index 82408bd4e3..f66c8132aa 100644 --- a/erpnext/docs/user/manual/en/stock/articles/managing-batch-wise-inventory.md +++ b/erpnext/docs/user/manual/en/stock/articles/managing-batch-wise-inventory.md @@ -33,3 +33,10 @@ To check batch-wise stock balance report, go to: Stock > Standard Reports > Batch-wise Balance History Batchwise Stock Balance + +
+ +
+ +{next} \ No newline at end of file diff --git a/erpnext/docs/user/manual/en/stock/articles/opening-stock-balance-entry-for-the-serialized-and-batch-item.md b/erpnext/docs/user/manual/en/stock/articles/opening-stock-balance-entry-for-serialized-and-batch-item.md similarity index 91% rename from erpnext/docs/user/manual/en/stock/articles/opening-stock-balance-entry-for-the-serialized-and-batch-item.md rename to erpnext/docs/user/manual/en/stock/articles/opening-stock-balance-entry-for-serialized-and-batch-item.md index 6ed111b99a..0661a2e12a 100644 --- a/erpnext/docs/user/manual/en/stock/articles/opening-stock-balance-entry-for-the-serialized-and-batch-item.md +++ b/erpnext/docs/user/manual/en/stock/articles/opening-stock-balance-entry-for-serialized-and-batch-item.md @@ -1,4 +1,4 @@ -#Opening Stock Balance Entry for the Serialized and Batch Item +#Opening Stock Balance Entry for Serialized and Batch Item Items for which Serial No. and Batch No. is maintained, opening stock balance entry for them is update via Stock Entry. [Click here to learn how serialized inventory is managed in ERPNext](/docs/user/manual/en/stock/serial-no.html). @@ -57,4 +57,11 @@ As per perpetual inventory valuation system, accounting entry is created for eve On submission of Stock Entry, stock ledger posting will be posted, and opening balance will be updated for the items on a given Posting Date. +
+
+ +
+
+ \ No newline at end of file diff --git a/erpnext/docs/user/manual/en/stock/item/index.md b/erpnext/docs/user/manual/en/stock/item/index.md index 5b57c60ca1..b12a174a38 100644 --- a/erpnext/docs/user/manual/en/stock/item/index.md +++ b/erpnext/docs/user/manual/en/stock/item/index.md @@ -4,6 +4,13 @@ An Item is your companys' product or a service. The term Item is applicable to t ERPNext is optimised for itemised management of your sales and purchase. If you are in services, you can create an Item for each services that your offer. Completing the Item Master is very essential for successful implementation of ERPNext. +
+
+ +
+
+ ## Item Properties * **Item Name:** Item name is the actual name of your product or service. @@ -83,16 +90,10 @@ Inspection Criteria: If a Quality Inspection is prepared for this Item, then thi * **Default Income Account:** Income account selected here will be fetched automatically in sales invoice for this item. -Sales details - -Sales details - ***Cost Centre:** Cost center selected here will be fetched automatically in sales invoice for this item. ***Customer Codes:** Track Item Code assigned by the Customers for this Item. This will help you in searching item while creating Sales Order based on the Item Code in the Customer's Purchase Order. -Sales details - ### Manufacturing And Website Manufaturing details diff --git a/erpnext/docs/user/manual/en/stock/item/item-price.md b/erpnext/docs/user/manual/en/stock/item/item-price.md index 52850c2822..ce1a60ab4c 100644 --- a/erpnext/docs/user/manual/en/stock/item/item-price.md +++ b/erpnext/docs/user/manual/en/stock/item/item-price.md @@ -4,11 +4,11 @@ Item Price is the record in which you can log selling and buying rate of an item There are two ways to reach to new Item Price form. -> Selling/Buying/Stock >> Setup >> Item Price >> New Item Price +> Selling/Buying/Stock > Setup > Item Price > New Item Price Or -> Item >> Add/Edit Prices >> Click on "+" >> New Item Price +> Item > Add/Edit Prices > Click on "+" > New Item Price Following are the steps to create new Item Price. @@ -16,7 +16,7 @@ Step 1: Select Price List You can create multiple Price List in ERPNext to track Selling and Buying Price List of an item separtely. Also if item's selling prices id changing based on territory, or due to other criteria, you can create multiple selling Price List for it. -![Item Price list](/docs/assets/old_images/erpnext/item-price-list.png) +![Item Price list](/assets/img/stock/item-price-1.png) On selection of Price List, its currency and for selling or buying property will be fetched as well. @@ -26,20 +26,27 @@ Step 2: Select Item Select item for which Item Price record is to be created. On selection of Item Code, Item Name and Description will be fetched as well. -![Item Price Item](/docs/assets/old_images/erpnext/item-price-item.png) +![Item Price Item](/assets/img/stock/item-price-2.png) Step 3: Enter Rate Enter selling/buying rate of an item in Price List currency. -![Item Price Rate](/docs/assets/old_images/erpnext/item-price-rate.png) +![Item Price Rate](/assets/img/stock/item-price-3.png) Step 4: Save Item Price To check all Item Price together, go to: -Stock >> Main Report >> Itemwise Price List Rate +> Stock > Main Report > Itemwise Price List Rate You will find option to create new Item Price record (+) in this report as well. +
+
+ +
+
+ {next} diff --git a/erpnext/docs/user/manual/en/stock/item/item-variants.md b/erpnext/docs/user/manual/en/stock/item/item-variants.md index 08f88557d3..b5824279bd 100644 --- a/erpnext/docs/user/manual/en/stock/item/item-variants.md +++ b/erpnext/docs/user/manual/en/stock/item/item-variants.md @@ -56,3 +56,15 @@ To update the value in the variants items from the template item, select the res To set the fields Goto Stock > Item Variant Settings Item Variant Settings + +
+ +
+ +
+ +
+ +{next} diff --git a/erpnext/docs/user/manual/en/stock/item/purchase-details.md b/erpnext/docs/user/manual/en/stock/item/purchase-details.md index 134d551d46..cd695b8db6 100644 --- a/erpnext/docs/user/manual/en/stock/item/purchase-details.md +++ b/erpnext/docs/user/manual/en/stock/item/purchase-details.md @@ -4,4 +4,6 @@ To track a warranty period, it is necessary that the Item is a serialized Item. A warranty means a guarantee or a promise which provides assurance by one party to the other party which allows for a legal remedy if that promise is not true or followed. A warranty period is a time period in which a purchased product may be returned or exchanged. -Item Warranty \ No newline at end of file +Item Warranty + +{next} \ No newline at end of file diff --git a/erpnext/docs/user/manual/en/stock/item/reorder.md b/erpnext/docs/user/manual/en/stock/item/reorder.md index 548a8a9ad0..cd914125b4 100644 --- a/erpnext/docs/user/manual/en/stock/item/reorder.md +++ b/erpnext/docs/user/manual/en/stock/item/reorder.md @@ -10,4 +10,6 @@ For example, you can set your reorder level of Motherboard at 10. When there are For example, If reorder level is 100 items, your reorder quantity may not necessarily be 100 items. The Reorder quantity can be greater than or equal to reorder level. It may depend upon lead time, discount, transportation and average daily consumption. -Item Reorder \ No newline at end of file +Item Reorder + +{next} \ No newline at end of file diff --git a/erpnext/docs/user/manual/en/stock/material-request.md b/erpnext/docs/user/manual/en/stock/material-request.md index 96b9cea7e4..1c2eb9dcb6 100644 --- a/erpnext/docs/user/manual/en/stock/material-request.md +++ b/erpnext/docs/user/manual/en/stock/material-request.md @@ -32,4 +32,10 @@ The User can also raise a [Request For Quotation](/docs/user/manual/en/buying/re > Info: Material Request is not mandatory. It is ideal if you have centralized buying so that you can collect this information from various departments. + +
+ +
+ {next} diff --git a/erpnext/docs/user/manual/en/stock/opening-stock.md b/erpnext/docs/user/manual/en/stock/opening-stock.md index ea77999fe0..ff5384c766 100644 --- a/erpnext/docs/user/manual/en/stock/opening-stock.md +++ b/erpnext/docs/user/manual/en/stock/opening-stock.md @@ -12,4 +12,12 @@ If you are not making opening Stock Entry, you can select "Stock Adjustment" acc To understand Opening Stock for serialized Items visit [Stock Reconciliation](/docs/user/manual/en/setting-up/stock-reconciliation-for-non-serialized-item.html) + +
+
+ +
+
+ {next} diff --git a/erpnext/docs/user/manual/en/stock/serial-no.md b/erpnext/docs/user/manual/en/stock/serial-no.md index 015812497c..89bf734962 100644 --- a/erpnext/docs/user/manual/en/stock/serial-no.md +++ b/erpnext/docs/user/manual/en/stock/serial-no.md @@ -15,6 +15,11 @@ If your Item is _serialized_ you will have to enter the Serial Nos in the related column with each Serial No in a new line. You can maintain single units of serialized items using Serial Number. +
+ +
+ ### Serial Nos and Inventory Inventory of an Item can only be affected if the Serial No is transacted via a diff --git a/erpnext/docs/user/manual/en/stock/stock-entry.md b/erpnext/docs/user/manual/en/stock/stock-entry.md index e931b88a98..f04c6c3725 100644 --- a/erpnext/docs/user/manual/en/stock/stock-entry.md +++ b/erpnext/docs/user/manual/en/stock/stock-entry.md @@ -23,6 +23,11 @@ In the Stock Entry you have to update the Items table with all your transactions. For each row, you must enter a “Source Warehouse” or a “Target Warehouse” or both (if you are recording a movement). +
+ +
+ **Additional Costs:** If the stock entry is an incoming entry i.e any item is receiving at a target warehouse, you can add related additional costs (like Shipping Charges, Customs Duty, Operating Costs etc) associated with the process. The additional costs will be considered to calculate valuation rate of the items. diff --git a/erpnext/docs/user/manual/en/stock/tools/quality-inspection.md b/erpnext/docs/user/manual/en/stock/tools/quality-inspection.md index 3d0331a589..6ba39a96d7 100644 --- a/erpnext/docs/user/manual/en/stock/tools/quality-inspection.md +++ b/erpnext/docs/user/manual/en/stock/tools/quality-inspection.md @@ -7,4 +7,10 @@ Inspection. To enable ERPNext to perform this function, go to : Quality Inspection + +
+ +
+ {next} \ No newline at end of file diff --git a/erpnext/docs/user/manual/en/website/add-products-to-website.md b/erpnext/docs/user/manual/en/website/add-products-to-website.md index bb5106f525..5d02083546 100644 --- a/erpnext/docs/user/manual/en/website/add-products-to-website.md +++ b/erpnext/docs/user/manual/en/website/add-products-to-website.md @@ -5,6 +5,11 @@ ERPNext will populate your website with products out of your Item Master. The html code will be generated automatically. +
+ +
+ #### Step 1: Edit Item For this example we will add a rocking chair to our catalog to sell on our website. diff --git a/erpnext/docs/user/manual/en/website/index.md b/erpnext/docs/user/manual/en/website/index.md index 2ac49558a8..817285f812 100644 --- a/erpnext/docs/user/manual/en/website/index.md +++ b/erpnext/docs/user/manual/en/website/index.md @@ -27,6 +27,10 @@ HTML / CSS or hire the services of a professional. The good part is that once this is setup, you can add and edit content, blogs and products directly from your ERP. +
+ +
+ ### Topics {index} diff --git a/erpnext/docs/user/manual/en/website/shopping-cart.md b/erpnext/docs/user/manual/en/website/shopping-cart.md index 26284f5237..09129bd9c3 100644 --- a/erpnext/docs/user/manual/en/website/shopping-cart.md +++ b/erpnext/docs/user/manual/en/website/shopping-cart.md @@ -8,6 +8,11 @@ the items you intend to buy. This software displays the price of the product . It also displays shipping and handling charges, along with taxes, if applicable. +
+ +
+ ### Shopping Cart Setup To set up a shopping cart, go to the website module. @@ -53,4 +58,10 @@ on "Place Order" to place the order. Website Specifications + +
+ +
+ {next} From 4417cb00063082959e125f1ad565915ec0e2b694 Mon Sep 17 00:00:00 2001 From: Zarrar Date: Mon, 5 Mar 2018 11:08:15 +0530 Subject: [PATCH 25/50] improve multiple add dialog, populate parent's depends on with child tasks (#13142) --- erpnext/projects/doctype/task/task.py | 23 ++++++++++++----- erpnext/projects/doctype/task/task_tree.js | 30 +++++++++++++++++----- 2 files changed, 40 insertions(+), 13 deletions(-) diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py index 76c34db1e9..e418845f3f 100644 --- a/erpnext/projects/doctype/task/task.py +++ b/erpnext/projects/doctype/task/task.py @@ -69,6 +69,7 @@ class Task(NestedSet): self.reschedule_dependent_tasks() self.update_project() self.unassign_todo() + self.populate_depends_on() def unassign_todo(self): if self.status == "Closed" or self.status == "Cancelled": @@ -137,6 +138,16 @@ class Task(NestedSet): if project_user: return True + def populate_depends_on(self): + if self.parent_task: + parent = frappe.get_doc('Task', self.parent_task) + parent.append("depends_on", { + "doctype": "Task Depends On", + "task": self.name, + "subject": self.subject + }) + parent.save() + def on_trash(self): if check_if_child_exists(self.name): throw(_("Child Task exists for this Task. You can not delete this Task.")) @@ -216,12 +227,12 @@ def add_node(): @frappe.whitelist() def add_multiple_tasks(data, parent): - data = json.loads(data)['tasks'] - tasks = data.split('\n') - new_doc = {'doctype': 'Task', 'parent_task': parent} - new_doc['project'] = frappe.db.get_value('Task', {"name": parent}, 'project') + data = json.loads(data) + new_doc = {'doctype': 'Task', 'parent_task': parent if parent!="All Tasks" else ""} + new_doc['project'] = frappe.db.get_value('Task', {"name": parent}, 'project') or "" - for d in tasks: - new_doc['subject'] = d + for d in data: + if not d.get("subject"): continue + new_doc['subject'] = d.get("subject") new_task = frappe.get_doc(new_doc) new_task.insert() diff --git a/erpnext/projects/doctype/task/task_tree.js b/erpnext/projects/doctype/task/task_tree.js index 3ff00f6fc5..d1d872f28a 100644 --- a/erpnext/projects/doctype/task/task_tree.js +++ b/erpnext/projects/doctype/task/task_tree.js @@ -44,23 +44,39 @@ frappe.treeview_settings['Task'] = { return node.expandable; }, click: function(node) { - var d = new frappe.ui.Dialog({ - 'fields': [ - {'fieldname': 'tasks', 'label': 'Tasks', 'fieldtype': 'Text'}, + this.data = []; + const dialog = new frappe.ui.Dialog({ + title: __("Add Multiple Tasks"), + fields: [ + { + fieldname: "multiple_tasks", fieldtype: "Table", + in_place_edit: true, data: this.data, + get_data: () => { + return this.data; + }, + fields: [{ + fieldtype:'Data', + fieldname:"subject", + in_list_view: 1, + reqd: 1, + label: __("Subject") + }] + }, ], primary_action: function() { - d.hide(); + dialog.hide(); return frappe.call({ method: "erpnext.projects.doctype.task.task.add_multiple_tasks", args: { - data: d.get_values(), + data: dialog.get_values()["multiple_tasks"], parent: node.data.value }, callback: function() { } }); - } + }, + primary_action_label: __('Create') }); - d.show(); + dialog.show(); } } ], From 35b665cb2639f6aa1666985a12b016e5215b605f Mon Sep 17 00:00:00 2001 From: Vishal Dhayagude Date: Mon, 5 Mar 2018 11:10:01 +0530 Subject: [PATCH 26/50] [new] Create multiple warehouse address and fetch address to stock entry (#13109) * [new] Create multiple warehouse address and fetch address to stock entry * [fix] Deleted unwanted field and added patch to link warehouse details to Address * [fix] Codacy fixed * [fix] Modified patch for warehouse address * [fix] Modified patch for warehouse address * [fix] Patch updated and removed contact details from stock entry * [fix] Patch Updated --- erpnext/patches.txt | 1 + .../v10_0/update_warehouse_address_details.py | 37 +++++ .../stock/doctype/stock_entry/stock_entry.js | 8 ++ .../doctype/stock_entry/stock_entry.json | 126 +++++++++++++++++- erpnext/stock/doctype/warehouse/warehouse.js | 9 ++ .../stock/doctype/warehouse/warehouse.json | 121 ++++++++++++++++- erpnext/stock/doctype/warehouse/warehouse.py | 5 +- 7 files changed, 302 insertions(+), 5 deletions(-) create mode 100644 erpnext/patches/v10_0/update_warehouse_address_details.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 705d2198aa..a963b53f11 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -492,3 +492,4 @@ erpnext.patches.v10_0.added_extra_gst_custom_field_in_gstr2 #2018-02-13 erpnext.patches.v10_0.set_b2c_limit erpnext.patches.v10_0.set_auto_created_serial_no_in_stock_entry erpnext.patches.v10_0.update_territory_and_customer_group +erpnext.patches.v10_0.update_warehouse_address_details \ No newline at end of file diff --git a/erpnext/patches/v10_0/update_warehouse_address_details.py b/erpnext/patches/v10_0/update_warehouse_address_details.py new file mode 100644 index 0000000000..b982b9a662 --- /dev/null +++ b/erpnext/patches/v10_0/update_warehouse_address_details.py @@ -0,0 +1,37 @@ +# Copyright (c) 2017, Frappe and Contributors +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import frappe + +def execute(): + warehouse = frappe.db.sql("""select name, email_id, phone_no, mobile_no, address_line_1, + address_line_2, city, state, pin from `tabWarehouse` where ifnull(address_line_1, '') != '' + or ifnull(mobile_no, '') != '' + or ifnull(email_id, '') != '' """, as_dict=1) + + for d in warehouse: + try: + address = frappe.new_doc('Address') + address.name = d.name + address.address_title = d.name + address.address_line1 = d.address_line_1 + address.city = d.city + address.state = d.state + address.pincode = d.pin + address.db_insert() + address.append('links',{'link_doctype':'Warehouse','link_name':d.name}) + address.links[0].db_insert() + if d.name and (d.email_id or d.mobile_no or d.phone_no): + contact = frappe.new_doc('Contact') + contact.name = d.name + contact.first_name = d.name + contact.mobile_no = d.mobile_no + contact.email_id = d.email_id + contact.phone = d.phone_no + contact.db_insert() + contact.append('links',{'link_doctype':'Warehouse','link_name':d.name}) + contact.links[0].db_insert() + except frappe.DuplicateEntryError: + pass + \ No newline at end of file diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js index 9093946d31..d4be6b4755 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.js +++ b/erpnext/stock/doctype/stock_entry/stock_entry.js @@ -278,6 +278,14 @@ frappe.ui.form.on('Stock Entry', { frm.set_value("total_additional_costs", flt(total_additional_costs, precision("total_additional_costs"))); }, + + source_warehouse_address: function(frm) { + erpnext.utils.get_address_display(frm, 'source_warehouse_address', 'source_address_display', false); + }, + + target_warehouse_address: function(frm) { + erpnext.utils.get_address_display(frm, 'target_warehouse_address', 'target_address_display', false); + }, }) frappe.ui.form.on('Stock Entry Detail', { diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.json b/erpnext/stock/doctype/stock_entry/stock_entry.json index f68690cf8f..f6709baf19 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.json +++ b/erpnext/stock/doctype/stock_entry/stock_entry.json @@ -737,6 +737,68 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "depends_on": "from_warehouse", + "fieldname": "source_warehouse_address", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Source Warehouse Address", + "length": 0, + "no_copy": 0, + "options": "Address", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "source_address_display", + "fieldtype": "Small Text", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Source Warehouse Address", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, { "allow_bulk_edit": 0, "allow_on_submit": 0, @@ -797,6 +859,68 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "depends_on": "to_warehouse", + "fieldname": "target_warehouse_address", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Target Warehouse Name", + "length": 0, + "no_copy": 0, + "options": "Address", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "target_address_display", + "fieldtype": "Small Text", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Target Warehouse Address", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, { "allow_bulk_edit": 0, "allow_on_submit": 0, @@ -1739,7 +1863,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-06-13 14:28:47.818067", + "modified": "2018-03-01 12:27:12.884611", "modified_by": "Administrator", "module": "Stock", "name": "Stock Entry", diff --git a/erpnext/stock/doctype/warehouse/warehouse.js b/erpnext/stock/doctype/warehouse/warehouse.js index 5c23a9729a..1bfa416bdf 100644 --- a/erpnext/stock/doctype/warehouse/warehouse.js +++ b/erpnext/stock/doctype/warehouse/warehouse.js @@ -5,6 +5,15 @@ frappe.ui.form.on("Warehouse", { refresh: function(frm) { frm.toggle_display('warehouse_name', frm.doc.__islocal); + frm.toggle_display(['address_html','contact_html'], !frm.doc.__islocal); + + + if(!frm.doc.__islocal) { + frappe.contacts.render_address_and_contact(frm); + + } else { + frappe.contacts.clear_address_and_contact(frm); + } frm.add_custom_button(__("Stock Balance"), function() { frappe.set_route("query-report", "Stock Balance", {"warehouse": frm.doc.name}); diff --git a/erpnext/stock/doctype/warehouse/warehouse.json b/erpnext/stock/doctype/warehouse/warehouse.json index b6307a4633..82d0d0c4fb 100644 --- a/erpnext/stock/doctype/warehouse/warehouse.json +++ b/erpnext/stock/doctype/warehouse/warehouse.json @@ -226,6 +226,125 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "address_and_contact", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Address and Contact", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "address_html", + "fieldtype": "HTML", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Address HTML", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "column_break_10", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "contact_html", + "fieldtype": "HTML", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Contact HTML", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, { "allow_bulk_edit": 0, "allow_on_submit": 0, @@ -699,7 +818,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2018-01-23 16:45:45.546649", + "modified": "2018-02-28 09:15:33.463838", "modified_by": "Administrator", "module": "Stock", "name": "Warehouse", diff --git a/erpnext/stock/doctype/warehouse/warehouse.py b/erpnext/stock/doctype/warehouse/warehouse.py index 5186408721..0eee6baddd 100644 --- a/erpnext/stock/doctype/warehouse/warehouse.py +++ b/erpnext/stock/doctype/warehouse/warehouse.py @@ -7,6 +7,7 @@ from frappe.utils import cint, validate_email_add from frappe import throw, _ from frappe.utils.nestedset import NestedSet from erpnext.stock import get_warehouse_account +from frappe.contacts.address_and_contact import load_address_and_contact class Warehouse(NestedSet): nsm_parent_field = 'parent_warehouse' @@ -25,10 +26,8 @@ class Warehouse(NestedSet): if account: self.set_onload('account', account) + load_address_and_contact(self) - def validate(self): - if self.email_id: - validate_email_add(self.email_id, True) def on_update(self): self.update_nsm_model() From 5fd7b3bb807ce8462844058994475ba5b2bf358c Mon Sep 17 00:00:00 2001 From: Manas Solanki Date: Mon, 5 Mar 2018 11:28:29 +0530 Subject: [PATCH 27/50] Fix status updater (#13033) * fix the status updater for multiple sources * patch for updating the status * patch for updating the sales order item * Update update_status_for_multiple_source_in_po.py --- .../doctype/purchase_order/purchase_order.py | 17 +++++---- erpnext/controllers/status_updater.py | 4 +- erpnext/patches.txt | 1 + ...update_status_for_multiple_source_in_po.py | 38 +++++++++++++++++++ .../doctype/sales_order/sales_order.py | 1 + .../material_request/material_request.py | 3 +- .../material_request_item.json | 34 ++++++++++++++++- 7 files changed, 86 insertions(+), 12 deletions(-) create mode 100644 erpnext/patches/v10_0/update_status_for_multiple_source_in_po.py diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py index e879f40c37..9e890f6bcc 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/purchase_order.py @@ -30,8 +30,7 @@ class PurchaseOrder(BuyingController): 'target_parent_field': 'per_ordered', 'target_ref_field': 'stock_qty', 'source_field': 'stock_qty', - 'percent_join_field': 'material_request', - 'overflow_type': 'order' + 'percent_join_field': 'material_request' }] def onload(self): @@ -232,12 +231,16 @@ class PurchaseOrder(BuyingController): pass def update_status_updater(self): - self.status_updater[0].update({ - "target_parent_dt": "Sales Order", - "target_dt": "Sales Order Item", + self.status_updater.append({ + 'source_dt': 'Purchase Order Item', + 'target_dt': 'Sales Order Item', 'target_field': 'ordered_qty', - "join_field": "sales_order_item", - "target_parent_field": '' + 'target_parent_dt': 'Sales Order', + 'target_parent_field': '', + 'join_field': 'sales_order_item', + 'source_dt': 'Purchase Order Item', + 'target_ref_field': 'stock_qty', + 'source_field': 'stock_qty' }) def update_delivered_qty_in_sales_order(self): diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py index 2f54fc0175..b46c752aa6 100644 --- a/erpnext/controllers/status_updater.py +++ b/erpnext/controllers/status_updater.py @@ -250,7 +250,7 @@ class StatusUpdater(Document): if args['detail_id']: if not args.get("extra_cond"): args["extra_cond"] = "" - + frappe.db.sql("""update `tab%(target_dt)s` set %(target_field)s = ( (select ifnull(sum(%(source_field)s), 0) @@ -275,7 +275,7 @@ class StatusUpdater(Document): """Update percent field in parent transaction""" self._update_modified(args, update_modified) - + if args.get('target_parent_field'): frappe.db.sql("""update `tab%(target_parent_dt)s` set %(target_parent_field)s = round( diff --git a/erpnext/patches.txt b/erpnext/patches.txt index a963b53f11..dd707dafa0 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -490,6 +490,7 @@ erpnext.patches.v10_0.set_default_payment_terms_based_on_company erpnext.patches.v10_0.update_sales_order_link_to_purchase_order erpnext.patches.v10_0.added_extra_gst_custom_field_in_gstr2 #2018-02-13 erpnext.patches.v10_0.set_b2c_limit +erpnext.patches.v10_0.update_status_for_multiple_source_in_po erpnext.patches.v10_0.set_auto_created_serial_no_in_stock_entry erpnext.patches.v10_0.update_territory_and_customer_group erpnext.patches.v10_0.update_warehouse_address_details \ No newline at end of file diff --git a/erpnext/patches/v10_0/update_status_for_multiple_source_in_po.py b/erpnext/patches/v10_0/update_status_for_multiple_source_in_po.py new file mode 100644 index 0000000000..1de9d976f8 --- /dev/null +++ b/erpnext/patches/v10_0/update_status_for_multiple_source_in_po.py @@ -0,0 +1,38 @@ +# Copyright (c) 2017, Frappe and Contributors +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import frappe + +def execute(): + + + # update the sales order item in the material request + frappe.reload_doc('stock', 'doctype', 'material_request_item') + frappe.db.sql('''update `tabMaterial Request Item` mri set sales_order_item = (select name from + `tabSales Order Item` soi where soi.parent=mri.sales_order and soi.item_code=mri.item_code) where docstatus = 1 and + ifnull(mri.sales_order, "")!="" + ''') + + # update the sales order item in the purchase order + frappe.db.sql('''update `tabPurchase Order Item` poi set sales_order_item = (select name from + `tabSales Order Item` soi where soi.parent=poi.sales_order and soi.item_code=poi.item_code) where docstatus = 1 and + ifnull(poi.sales_order, "")!="" + ''') + + # Update the status in material request and sales order + po_list = frappe.db.sql(''' + select parent from `tabPurchase Order Item` where ifnull(material_request, "")!="" and + ifnull(sales_order, "")!="" and docstatus=1 + ''',as_dict=1) + + for po in list(set([d.get("parent") for d in po_list if d.get("parent")])): + try: + po_doc = frappe.get_doc("Purchase Order", po) + + # update the so in the status updater + po_doc.update_status_updater() + po_doc.update_qty(update_modified=False) + + except Exception: + pass diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index f1b56d9bd8..2f413072d6 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -435,6 +435,7 @@ def make_material_request(source_name, target_doc=None): "Sales Order Item": { "doctype": "Material Request Item", "field_map": { + "name": "sales_order_item", "parent": "sales_order", "stock_uom": "uom", "stock_qty": "qty" diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py index defce62e2e..8f0a25dc43 100644 --- a/erpnext/stock/doctype/material_request/material_request.py +++ b/erpnext/stock/doctype/material_request/material_request.py @@ -241,7 +241,8 @@ def make_purchase_order(source_name, target_doc=None): ["parent", "material_request"], ["uom", "stock_uom"], ["uom", "uom"], - ["sales_order", "sales_order"] + ["sales_order", "sales_order"], + ["sales_order_item", "sales_order_item"] ], "postprocess": update_item, "condition": lambda doc: doc.ordered_qty < doc.stock_qty diff --git a/erpnext/stock/doctype/material_request_item/material_request_item.json b/erpnext/stock/doctype/material_request_item/material_request_item.json index ef2e7fc8b4..4ec5ed86de 100644 --- a/erpnext/stock/doctype/material_request_item/material_request_item.json +++ b/erpnext/stock/doctype/material_request_item/material_request_item.json @@ -670,6 +670,36 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "sales_order_item", + "fieldtype": "Data", + "hidden": 1, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Sales Order Item", + "length": 0, + "no_copy": 1, + "permlevel": 0, + "precision": "", + "print_hide": 1, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "unique": 0 + }, { "allow_bulk_edit": 0, "allow_on_submit": 0, @@ -898,8 +928,8 @@ "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2017-12-15 16:29:18.902085", - "modified_by": "nabinhait@gmail.com", + "modified": "2018-02-12 05:51:39.954530", + "modified_by": "Administrator", "module": "Stock", "name": "Material Request Item", "owner": "Administrator", From 950fff0ba10f53754226a432514334a40b88f4c2 Mon Sep 17 00:00:00 2001 From: Zarrar Date: Mon, 5 Mar 2018 11:30:53 +0530 Subject: [PATCH 28/50] changes according to the workflow (#13160) --- .../doctype/leave_application/leave_application.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py index 22fd0e5f98..eb739466d6 100755 --- a/erpnext/hr/doctype/leave_application/leave_application.py +++ b/erpnext/hr/doctype/leave_application/leave_application.py @@ -34,14 +34,13 @@ class LeaveApplication(Document): self.validate_salary_processed_days() self.validate_attendance() + if hasattr(self, "workflow_state") and self.workflow_state == "Rejected": + # notify leave applier about rejection + self.notify_employee() + def on_submit(self): - self.validate_back_dated_application() - def on_cancel(self): - # notify leave applier about cancellation - self.notify_employee("cancelled") - def validate_dates(self): if self.from_date and self.to_date and (getdate(self.to_date) < getdate(self.from_date)): frappe.throw(_("To date cannot be before from date")) @@ -217,7 +216,8 @@ class LeaveApplication(Document): # for post in messages "message": _get_message(url=True), "message_to": employee.user_id, - "subject": (_("Leave Application") + ": %s - %s") % (self.name) + "subject": (_("Leave Application") + ": %s - %s") % (self.name, + self.workflow_state if hasattr(self, "workflow_state") else "") }) def _get_message(url=False): From 2550180a0524c1c5ec495197d05f5dc99e4928dc Mon Sep 17 00:00:00 2001 From: Zarrar Date: Mon, 5 Mar 2018 12:32:41 +0530 Subject: [PATCH 29/50] remove updating territory for customers on change (#13162) --- .../update_territory_and_customer_group.py | 48 +++++++++---------- erpnext/selling/doctype/customer/customer.py | 14 ++---- 2 files changed, 28 insertions(+), 34 deletions(-) diff --git a/erpnext/patches/v10_0/update_territory_and_customer_group.py b/erpnext/patches/v10_0/update_territory_and_customer_group.py index f08ac68679..a4a562c0d5 100644 --- a/erpnext/patches/v10_0/update_territory_and_customer_group.py +++ b/erpnext/patches/v10_0/update_territory_and_customer_group.py @@ -3,34 +3,32 @@ from frappe.model.rename_doc import get_fetch_fields def execute(): ignore_doctypes = ["Lead", "Opportunity", "POS Profile", "Tax Rule", "Pricing Rule"] - customers = frappe.get_all('Customer', fields=["name", "territory", "customer_group"]) + customers = frappe.get_all('Customer', fields=["name", "customer_group"]) - territory_fetch = get_fetch_fields('Customer', 'Territory', ignore_doctypes) customer_group_fetch = get_fetch_fields('Customer', 'Customer Group', ignore_doctypes) batch_size = 1000 for i in range(0, len(customers), batch_size): batch_customers = customers[i:i + batch_size] - for source_fieldname, linked_doctypes_info in [["customer_group", customer_group_fetch], ["territory", territory_fetch]]: - for d in linked_doctypes_info: - when_then = [] - for customer in batch_customers: - when_then.append(''' - WHEN `{master_fieldname}` = "{docname}" and {linked_to_fieldname} != "{value}" - THEN "{value}" - '''.format( - master_fieldname=d["master_fieldname"], - linked_to_fieldname=d["linked_to_fieldname"], - docname=frappe.db.escape(frappe.as_unicode(customer.name)), - value=frappe.db.escape(frappe.as_unicode(customer.get(source_fieldname))))) - - frappe.db.sql(""" - update - `tab{doctype}` - set - {linked_to_fieldname} = CASE {when_then_cond} ELSE `{linked_to_fieldname}` END - """.format( - doctype = d['doctype'], - when_then_cond=" ".join(when_then), - linked_to_fieldname=d.linked_to_fieldname - )) + for d in customer_group_fetch: + when_then = [] + for customer in batch_customers: + when_then.append(''' + WHEN `{master_fieldname}` = "{docname}" and {linked_to_fieldname} != "{value}" + THEN "{value}" + '''.format( + master_fieldname=d["master_fieldname"], + linked_to_fieldname=d["linked_to_fieldname"], + docname=frappe.db.escape(frappe.as_unicode(customer.name)), + value=frappe.db.escape(frappe.as_unicode(customer.get("customer_group"))))) + + frappe.db.sql(""" + update + `tab{doctype}` + set + {linked_to_fieldname} = CASE {when_then_cond} ELSE `{linked_to_fieldname}` END + """.format( + doctype = d['doctype'], + when_then_cond=" ".join(when_then), + linked_to_fieldname=d.linked_to_fieldname + )) diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py index b84a952ece..0ea1119c76 100644 --- a/erpnext/selling/doctype/customer/customer.py +++ b/erpnext/selling/doctype/customer/customer.py @@ -54,16 +54,14 @@ class Customer(TransactionBase): self.flags.old_lead = self.lead_name validate_party_accounts(self) self.validate_credit_limit_on_change() - self.check_customer_group_or_territory_change() + self.check_customer_group_change() - def check_customer_group_or_territory_change(self): - frappe.flags.customer_group_changed, frappe.flags.territory_changed = False, False + def check_customer_group_change(self): + frappe.flags.customer_group_changed = False if not self.get('__islocal'): if self.customer_group != frappe.db.get_value('Customer', self.name, 'customer_group'): frappe.flags.customer_group_changed = True - if self.territory != frappe.db.get_value('Customer', self.name, 'territory'): - frappe.flags.territory_changed = True def on_update(self): self.validate_name_with_customer_group() @@ -76,12 +74,10 @@ class Customer(TransactionBase): if self.flags.is_new_doc: self.create_lead_address_contact() - self.update_territory_and_customer_groups() + self.update_customer_groups() - def update_territory_and_customer_groups(self): + def update_customer_groups(self): ignore_doctypes = ["Lead", "Opportunity", "POS Profile", "Tax Rule", "Pricing Rule"] - if frappe.flags.territory_changed: - update_linked_doctypes('Customer', self.name, 'Territory', self.territory, ignore_doctypes) if frappe.flags.customer_group_changed: update_linked_doctypes('Customer', self.name, 'Customer Group', self.customer_group, ignore_doctypes) From 2cfcbf933d612952f4178ecca5a92673aa7764ad Mon Sep 17 00:00:00 2001 From: Saurabh Date: Mon, 5 Mar 2018 13:01:15 +0530 Subject: [PATCH 30/50] Patches fixes (#13163) * [fix] if serialised items not found then return * [fix] unicode encoding in patch --- ...t_auto_created_serial_no_in_stock_entry.py | 3 +++ .../update_territory_and_customer_group.py | 23 ++++++++----------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/erpnext/patches/v10_0/set_auto_created_serial_no_in_stock_entry.py b/erpnext/patches/v10_0/set_auto_created_serial_no_in_stock_entry.py index afc49523f6..c6470f21d7 100644 --- a/erpnext/patches/v10_0/set_auto_created_serial_no_in_stock_entry.py +++ b/erpnext/patches/v10_0/set_auto_created_serial_no_in_stock_entry.py @@ -7,6 +7,9 @@ import frappe def execute(): serialised_items = [d.name for d in frappe.get_all("Item", filters={"has_serial_no": 1})] + if not serialised_items: + return + for dt in ["Stock Entry Detail", "Purchase Receipt Item", "Purchase Invoice Item"]: cond = "" if dt=="Purchase Invoice Item": diff --git a/erpnext/patches/v10_0/update_territory_and_customer_group.py b/erpnext/patches/v10_0/update_territory_and_customer_group.py index a4a562c0d5..afbbccf2ad 100644 --- a/erpnext/patches/v10_0/update_territory_and_customer_group.py +++ b/erpnext/patches/v10_0/update_territory_and_customer_group.py @@ -13,22 +13,17 @@ def execute(): for d in customer_group_fetch: when_then = [] for customer in batch_customers: + value = frappe.db.escape(frappe.as_unicode(customer.get("customer_group"))) + when_then.append(''' - WHEN `{master_fieldname}` = "{docname}" and {linked_to_fieldname} != "{value}" - THEN "{value}" - '''.format( - master_fieldname=d["master_fieldname"], - linked_to_fieldname=d["linked_to_fieldname"], - docname=frappe.db.escape(frappe.as_unicode(customer.name)), - value=frappe.db.escape(frappe.as_unicode(customer.get("customer_group"))))) + WHEN `%s` = "%s" and %s != "%s" + THEN "%s" + '''%(d["master_fieldname"], frappe.db.escape(frappe.as_unicode(customer.name)), + d["linked_to_fieldname"], value, value)) frappe.db.sql(""" update - `tab{doctype}` + `tab%s` set - {linked_to_fieldname} = CASE {when_then_cond} ELSE `{linked_to_fieldname}` END - """.format( - doctype = d['doctype'], - when_then_cond=" ".join(when_then), - linked_to_fieldname=d.linked_to_fieldname - )) + %s = CASE %s ELSE `%s` END + """%(d['doctype'], d.linked_to_fieldname, " ".join(when_then), d.linked_to_fieldname)) From 491ce05b8d0aa45b1963b79c51acdcabc2593789 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 5 Mar 2018 15:17:18 +0600 Subject: [PATCH 31/50] bumped to version 10.1.5 --- erpnext/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index fd0f5c1936..6ec290c5e5 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -5,7 +5,7 @@ import frappe from erpnext.hooks import regional_overrides from frappe.utils import getdate -__version__ = '10.1.4' +__version__ = '10.1.5' def get_default_company(user=None): '''Get default company for user''' From 78064b7a45aaf8ad200a38b38c1c1733246f9224 Mon Sep 17 00:00:00 2001 From: Achilles Rasquinha Date: Mon, 5 Mar 2018 17:53:23 +0530 Subject: [PATCH 32/50] Update patches.txt --- erpnext/patches.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/patches.txt b/erpnext/patches.txt index ec5da3042e..c2c565d544 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -507,4 +507,4 @@ erpnext.patches.v11_0.make_quality_inspection_template erpnext.patches.v10_0.update_status_for_multiple_source_in_po erpnext.patches.v10_0.set_auto_created_serial_no_in_stock_entry erpnext.patches.v10_0.update_territory_and_customer_group -erpnext.patches.v10_0.update_warehouse_address_detailss \ No newline at end of file +erpnext.patches.v10_0.update_warehouse_address_details From a65b28772fd043b4303300da161aa5b4f9b37600 Mon Sep 17 00:00:00 2001 From: Saurabh Date: Tue, 6 Mar 2018 18:01:01 +0530 Subject: [PATCH 33/50] [fix] setup_party_account_field on init --- erpnext/accounts/doctype/payment_entry/payment_entry.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py index 7561b35245..305c08babd 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py @@ -20,6 +20,11 @@ class InvalidPaymentEntry(ValidationError): class PaymentEntry(AccountsController): + def __init__(self, *args, **kwargs): + super(PaymentEntry, self).__init__(*args, **kwargs) + if not self.is_new(): + self.setup_party_account_field() + def setup_party_account_field(self): self.party_account_field = None self.party_account = None @@ -287,6 +292,7 @@ class PaymentEntry(AccountsController): def set_unallocated_amount(self): self.unallocated_amount = 0 + if self.party: total_deductions = sum([flt(d.amount) for d in self.get("deductions")]) From 1fa992564a446079567c1f8c4ebc3e893d51ef38 Mon Sep 17 00:00:00 2001 From: Manas Solanki Date: Wed, 7 Mar 2018 12:08:52 +0530 Subject: [PATCH 34/50] fix the desktop icon for course schedule --- erpnext/config/desktop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/config/desktop.py b/erpnext/config/desktop.py index 6bc4104221..6d4fe02360 100644 --- a/erpnext/config/desktop.py +++ b/erpnext/config/desktop.py @@ -200,7 +200,7 @@ def get_data(): "color": "#fd784f", "icon": "octicon octicon-calendar", "label": _("Course Schedule"), - "link": "Calendar/Course Schedule", + "link": "List/Course Schedule/Calendar", "_doctype": "Course Schedule", "type": "list", "hidden": 1 From ca6e2236944f9a6ff475d17135f0ce3e5e8a35dc Mon Sep 17 00:00:00 2001 From: Saurabh Date: Mon, 5 Mar 2018 17:03:05 +0530 Subject: [PATCH 35/50] [fix] use join instead of subquery --- .../update_status_for_multiple_source_in_po.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/erpnext/patches/v10_0/update_status_for_multiple_source_in_po.py b/erpnext/patches/v10_0/update_status_for_multiple_source_in_po.py index 1de9d976f8..fd3be08b89 100644 --- a/erpnext/patches/v10_0/update_status_for_multiple_source_in_po.py +++ b/erpnext/patches/v10_0/update_status_for_multiple_source_in_po.py @@ -9,15 +9,17 @@ def execute(): # update the sales order item in the material request frappe.reload_doc('stock', 'doctype', 'material_request_item') - frappe.db.sql('''update `tabMaterial Request Item` mri set sales_order_item = (select name from - `tabSales Order Item` soi where soi.parent=mri.sales_order and soi.item_code=mri.item_code) where docstatus = 1 and - ifnull(mri.sales_order, "")!="" + frappe.db.sql('''update `tabMaterial Request Item` mri, `tabSales Order Item` soi + set mri.sales_order_item = soi.name + where ifnull(mri.sales_order, "")!="" and soi.parent=mri.sales_order + and soi.item_code=mri.item_code and mri.docstatus=1 ''') # update the sales order item in the purchase order - frappe.db.sql('''update `tabPurchase Order Item` poi set sales_order_item = (select name from - `tabSales Order Item` soi where soi.parent=poi.sales_order and soi.item_code=poi.item_code) where docstatus = 1 and - ifnull(poi.sales_order, "")!="" + frappe.db.sql('''update `tabPurchase Order Item` poi, `tabSales Order Item` soi + set poi.sales_order_item = soi.name + where ifnull(poi.sales_order, "")!="" and soi.parent=poi.sales_order + and soi.item_code=poi.item_code and poi.docstatus = 1 ''') # Update the status in material request and sales order From 6193b92b7008a4d42375fd62028b7262e7a357c0 Mon Sep 17 00:00:00 2001 From: Raghavendra Kamath Date: Wed, 7 Mar 2018 12:39:38 +0530 Subject: [PATCH 36/50] Add new logo in splash image and optimise pngs (#13206) --- .../public/images/YouTube-icon-full_color.png | Bin 13530 -> 11042 bytes erpnext/public/images/erp-icon.svg | 126 +++++++++++------- erpnext/public/images/erpnext-footer.png | Bin 2491 -> 1937 bytes erpnext/public/images/erpnext-grey.png | Bin 42511 -> 0 bytes erpnext/public/images/erpnext-logo.jpg | Bin 5608 -> 2776 bytes erpnext/public/images/favicon.png | Bin 4026 -> 1696 bytes erpnext/public/images/splash.png | Bin 11328 -> 10615 bytes 7 files changed, 80 insertions(+), 46 deletions(-) delete mode 100644 erpnext/public/images/erpnext-grey.png diff --git a/erpnext/public/images/YouTube-icon-full_color.png b/erpnext/public/images/YouTube-icon-full_color.png index 5322e65a92a0f509155e204cea1af452d3169f02..d3403841ee071dd25aba149d6bdce60856025e9a 100644 GIT binary patch literal 11042 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 -t8sU)-uX zRKxN6sdrm;m0mnZz-Tzm24xt&n(!EgT?E4pnHH~{foa?$ z9~G|mNl59g#2Xtt@6fm`e&w5E0zr1H3UK5uURRK*xC_#oT(}T<1Ha3`?}Scm-@cV%{gem8Y5GHT88d=^-od$sybY6d zm$r(2T`>(h`u-Cxis-N?2t^$!dEHcYD;=8L27`m|tayL?B?Vze?@JQ5p4=O|##0|U z^bckH4YtK*#gYXNSm{ z!QA{1Y}A`7yAJ3Tg{FSyzT`v2S-M8p zFqy7jd{YH<@fZ0HINCBbiN>gW0RRwZ4cuHd@>>6vqQf$k19sZpftVpky=k&{4{lgT z{@@#rbSchJ6~T#{mTIGW`ed`^n-|~-A>`|ft(p%LDv37X^I8or8?m9&7ZImmTi}uS zgAL5%uBn51J;dzh;?Dhy71@sAx~+zv{5>IbEw&R5=fpVa2_d)w#~!S5-pDJFRAoXZ zz{fs(h3Sw!1KLGT_UNHi(`7*C!|;Jt)*KN`f!K=FEq_d{c$mEX(YgYUH1s z&L8i{wZb{0#oqDgNH=bAbNQbZQbw&X%Ia0A#k~^5>B}IU2sPNi_k#v%Y2=H`BUZob zTwL|(OPVH{?+brju^6U8Ez6#8SQKmcJ^(yG>JcSRW5!vQV&%S5wqmwI04Lz_~JGR&>XHZ8V$p z`2+zgqt-0vEZ;DYuYi$yHd4n?Sx4Li_?rI00*^EOIv3tbIz5W5M)=1TMbR27i_uj<3+0mtnw&-I>9nmuds z3N#S!Jx4BIm^XfJh^d70CGGF!db20zYExz`SPtFOeDU^FQ@*Py4o%|o6RoC`GuYqF z0l>s3`CZRe&SMxW8F#^))_pgv6i2c0>3>-TgZy(9=x^g(B(tVmbIQ+jxW~M zF=XElm!HDCFRWL>+Jd&W*zEb+inFH$#LXl>t|8*z?t6S;?Us)1pglhvaAzL4#Lb<| zNK;aa#}ICzRL9a@vlCx4dVq8J)2DU zMMl{D=-MJb*22Jovkv^T>ad8Z@cGBlw=lFzw!HL)wjvOgc;WQWMr5xAqwOy6U7xq! zAdG;It0KW<5mpGtuJbcRRShf9+PAk)F_*e(8GsR5-M1j-n_hqUW2y-GS(ZkIq4AD{ z)sZhv)!DeFyd8CCy;;tRtbI$!tC6pmCu=7i%a^@6+rDkuvZrb{7W?3gy6So;oKw{1 zFFGg(Tp;{MEgo*4rr~Y{ypa;AkL~h^&M^<$CH^E!uPT2Rtl$b?`f*XUzD{q(#)W;^ ze;+fOL86y<%SK=`k;q@}p@2zk8b4dVo8Owr(VbB5w_Z`+kZLEXTvnas5SM7?f%dhe>hE1wsyhV zXA4D=58r0zCaY=GlOM^gnALkMIs0Dj`u){zAJ3UNn(tj3Z?>mQGW&7o>D4vfOV!5K zNFn;S*1V^kL(F=lr>?&Jgmv?PXhHD2f?$h(mQWCL`Mn^=Z9~IHCo=s#J&q1(sjFKw zMW)@$z1U>J;*CTLA#077L5`26O9dQ$oKfb+KD{jzzPEfVKRsC}Nu^KpXVZR7O=U!1 zBswvx*|^2mY>cR$A>u158yTi3RkCK?nW{hHUtVaRHdn6!B^EJ)%a;$|6B#(y8>k3N z)jKt7344Xu&s9@ zi-5LKonAk+U-E8EG>{=HdwtD`is-vsqi^*~=2zUjQ`7fDx$qatTw8MFeCGYUm_|Sw z{xqsS+`Dqwz4Vg!*OJ|h`;IQi{-R2L?TJOe*O@Mprg96m9rg-U#;J+cT3DH<{K@?1 F{{d9JfE54$ literal 13530 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 diff --git a/erpnext/public/images/erp-icon.svg b/erpnext/public/images/erp-icon.svg index b4e2a24b4e..387e94dda4 100644 --- a/erpnext/public/images/erp-icon.svg +++ b/erpnext/public/images/erp-icon.svg @@ -1,46 +1,80 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +image/svg+xml \ No newline at end of file diff --git a/erpnext/public/images/erpnext-footer.png b/erpnext/public/images/erpnext-footer.png index 4b36fa120c5f0a0324bd03b2d05e50269935c326..ffff7756b7794c22794636846f8feacddd31cb7e 100644 GIT binary patch delta 822 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 diff --git a/erpnext/public/images/erpnext-logo.jpg b/erpnext/public/images/erpnext-logo.jpg index 811eca833efc7b2168cbb96d127aec0832709a6c..b5acc5af1a1df1ea1948ef3c97dea380ae8b384a 100644 GIT binary patch literal 2776 zcmb7GdpuOz7vE=|n86G)lr(1YxRf+Ap2=fIQ6V)*7$A`PtbNu#Yk$|?-*x6Y=lcP{)n&a4 zfFK0G!41sIz-oX*AQTD<3Rbid8jV7sRj^o$5?%$5$Eo0Os%jbpRW+g-4oA=;5H(3; zG8wO~y+Dh!K!ZdkDHef{un!8Yj7BSyRB@`L|6At8fT#q5KoAll0t6945~2A(!~#3lgTYYxiJZ_PL# zTeJ>dS2;c1tv=!A#m-2CxhTEp!?H2xq$x$7(k9i~m_~rx;(q6E$}& z>8lE%%Hhv4r(J`I+l&nd6S-uYQ{2z(UmC`PZ0xEV4z{3MOo<)NodXJ+WF>9%zBZn* z=-L9(Vx8Y^pLP$-$m}p%9Z)XXBvdc<`mFV$veGMjoVhklDxaBn^sYm%l8XkJ9bYIe zLF2a31(L=l-4Atze?Hk5Ff{RGqfeAcPE|>k(FW#R{w!BJth)UbcjvQNZ=Jav9VAni z`@;77-dkLjkLT1^CYvsUw@ro5350^v|6l&$Q%%&+q$6oe0*mo&&+x1x6miALyTEmb z-D6*H;*;L5X!jboHL!+}q>qLvNlk6~?x%2?#To7P$I~9~Ch2d~tIRFG8_3^a7h4=> z#h;np(W2!mlz85OF8yz}7c)Ow{Hk8FLaotNZGfCE8umuk{{}~6K?DE|A#n&4_Inl} z1bmx_WV!~4#<1Xcdhv^-1c4?yP)J>(&ty3ze2WmFh_IyXQ023T$uIXqESi10LmHU3 zd~@A)u>DUrZ{pu%-ryZ=qIWS{xhrxEy7{gVgK?OPGsSByi+!IOjH~xNjQlAt_O*Gl z-Tlvu!u7B9em@b^@x+Pinb!2V-zR+auoF}HQRc7v%xQ<#^!5Zuts}H8HuN?gAr2OL z1-B*mb*Yysebn^0e1CdD{m#+fLYI8W5XaOdFO~QCS@{SG=X9Pl#jGAeKy1VIlN}i{CQ$Aks0*Cg+4=fcdv&vt1V2m3w^pCQ$)^i=#k++*Cl@9XQPXqT> zgl-?V*P2u}m)d$23o7b5t<$s)WdBvywbMDMye;;cMPFIAv)S3T7V#3gpLp|%se;MI zJ-DnqdGK{Ip}O49$MhO0OZ+G9<-M2u$?N`YM#rBU@cJuyb?1TCv;9}+u9Wq1rZ;ZB zQ#@99&Dk({?TgNb_hirOxQUU-epeoS9^{=O|9UyP3GnIV#|$ zL|?~fxNM9PVYxrU)KGwgEa!rHbxbdqoE);5ii7w5t>^#+M1&j}uSUQV$#~T=MSm+P zOC$@4lk-HK@m4aPFup=0+YQ@Aw?tO5ayOnlLGjjk*wDF7F;H-d9uWpzQT~1~93avI z2{bB$&tiXrT0wAxF8%j5f{|*fA31%^wb6vM)(r-*3Z1Ib8%M!R0IkYsER@=jx@q}2 zqo%M8gZA~z@MZM;eRRk2gXy9_u6V?_)A ziG_*wUtUuro)JiAbNC4jqkBeXQofv$G?i`PV0> zbE?H<`$JXsPdXse#(NgAdMhXNmby`tEh&APoDXuvXKH zD|cws3s$d5Hovu0=M^hfD+9$b?_QZ~s7uhTJ~|IVcVFOYW~%ti)W!r@C~*er#x-3w zi67IK)e3zWHc(kZv}{{`@Dz-fK0#4vk*FU(EfA3g7;HKxkWWn@u;haOt_Y!y_R6Qr z!;9L#q+2D%KXanW4)taTgJ_&>D*;jW%s8@8-8cB85YB*&%W<)7vG8P2v4k}m#-J(} zN>-7!b$s%QH#A^!GX3^wuYQIyj;U}|Zo8sAEn238={dCLoTS@-F*x9HP!G?4xXU%l zDlqnm?J7gL>cV97nf^FtkmwmMeVVYprM0tGO0sl+uRc_?9x!coq0epvrJ+%q@|`4No$o# zPUDH9>Fo}he?49LUi~U>)3JP~WAtD$DeCM8>yVqtai*uXK_ly$QX7v9GZDK~HKcEP ze%8sOc$^a*MsE>b8=*Ze~3yI8hqNa=ZRKsf}dSqo`>TMRjkCluOj{*md Ju4Bf0*WVV!XQTiC literal 5608 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 CVps_P diff --git a/erpnext/public/images/favicon.png b/erpnext/public/images/favicon.png index 62c328536a4e9ed73d0fed1018b1c426c3786b14..b6948856f88b93a5de936e256b09845680fa0ff7 100644 GIT binary patch delta 1680 zcmV;B25UyL177{GtucjnIOR#~m3 z>cKWhbRTGfw&DRHk)WF3#h>=APt=1|5(!4a1Bnn+<6lA$5%HiZBpxK{UwP10O8kqy zXoW`XwtLsTGkz&pAF3$6Ng;@OhGm{kJ#CY&(*~>G(LeV0i#xsNLCiC5}A; z_w_H})!D?)D12nZ4Xf}PaBisyb}u_bx#^Kd9}CN!W&2%s zxNBQ?Oljd8H@d5EYyph7)ViD8I#xgWsJwe2xN&g3DQ>3Kw-ck)A=gSY0tL67a(kr5KC~_+g0x^E;hI4>5n* zSW2K=f^g3S;hqV?Jrjg`CJ6UT5bl{E+%u8yfN>00Tmk1Thk*f*S??Pt2j^gP6n1Nmbu;l{xF^>D_J&!|%oDL&{+FN2|_@PF(xkY)bjdo3xeR&`c(D?>xDVx`}h zUWG3k_8INS7+&T#o>$@XD>zJc+&sVWdj2Y9|9-#mdRn-1@Y$z+V|u?VtP0k`mMySn zkKeeJ5?-&vSG&rOGdc!4cffDIl^?5>N(ukt4|wyo(aM|6NGyv2=`17?wKImGeNj#f^g4Ns;41p8rClC6KSE_Jp9cgO$vyoG;XN-=zGQ%AeV`G+s2UF@3InAae&&$oRttZVabL5#N z&5NI|CHGxBh2i0f+^;anuAPo7bCBgUC%1`!F-jB(Q6w0nZJVNgOv1Cwk!6-Nv)J5C z6Wq#&ALd-RLOJtH&lBut;fEg_+kdv@)3!SYS!Sn936CPdL`p3xK8T}5Hr_dxrWq1R zEotVk_P_u8#W7rSjp4!-%EE=xk;M&u|J|{DyXBp&`B5!yAOcaOL^Y)r393i_N6abQ z0cmP!HVe^#=|quGiw$w4$Q)3=@rRe~^}Z*bh~7H%`?P-MhFjBn8cqA4bF)8!Juo*SxLTwSZGYNayLZa=nO?kM zLw0rAv~T3O^St(OcVJZNV)Ta1o1=GI_suwX_2iS$JBv@Noe;<7nQ+N?M8RQ$iIG1 a`4=Mz#192al*s@900{s|MNUMnLSTZS^e`&` literal 4026 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 Z^w9crAFxHfx9AVGowXD3yro~ve*r%$UBmzY diff --git a/erpnext/public/images/splash.png b/erpnext/public/images/splash.png index 45255937aea180698dd59a993b54ddae24872242..8e5d055c660ab4f316cc1cb3f7b6e9f7dd2f4a7c 100644 GIT binary patch literal 10615 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 a;FvxakH}_neuKx15#*$lCCk4U1^yqOq<=I3 literal 11328 zcmeHtbx>VflkY)7a1HM62X}{qYjAgWIk-b`36kK15G({I=)r>q3GSAJK(OGhvvcpA znLGE*S2cgUSFc{xJ5{Il+P%7WukPL5YxS>ooQ9e_1}X_E2n51VRDfs#*K-gEP8t~r z7%`*dk^vV)J1JEu5UB1Y+MUG{;GW7#K~oh33Sa<%!d`$tHvlPY8wB#^1c7$VK_KBQ z5Qxw{5B6LXm_Tt?Fz^C_(C~i$;XpZgL?94?f`hg`R9{s^*vicXY+>zYX#@6iaR<0T zAW=VIVCZ54wV?8Iad!0*_7kJ|gF_e?|0Z+LQ2oIIbrPe|SJj}Bar3mH;sf)7IcdaE zsi>$#J*{npH6e0;i34|HH1<%ayD$fbudgrImj~?TX~)4OBqYSa$<4vd%?@y|d-=OU zE&SMBy=eb@$iF`aV&i4y>EI4^aC4>l{ag!6H*csI4b5*w|MB~4oi6VGp~%(iFRK9i zIQ%T!Ik>=_9RHmV)WP;Ym-kJICLIf7>Cf?&)9yIQX|4#R2yJh4xQ=O&c#aXYb$aI<5{-aqhoF{z3ky zl#H8;yQhtp*KaL+e~J8^_Ba0DZW8{(4t6|Dng=U+VeW%wLkC9KU1jZ?X4hVE;h{B3m34@c6%Hi8yNgydM+9q)sn;- zyBmI6W0S!KhyhIl#P$vz{skn>`i1A0DJ{@urI^`e+u`}y+349BbbMv!GXDcg@a@3i zn;JLaOP}JHG`;nK}c9}DJFLKD{4v2vPx+K zG8#!ut*5b)!`M{iTDpa7m^f7B

Ze8|0K3<_Zmh7~nbsN0Y*hsIdD=hbch@P`?ZM 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 From 12d7bfb6584ea9388e64867721b1eff82a7b47eb Mon Sep 17 00:00:00 2001 From: Manas Solanki Date: Wed, 7 Mar 2018 12:52:31 +0530 Subject: [PATCH 37/50] allow renaming of the guardian --- erpnext/education/doctype/guardian/guardian.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/education/doctype/guardian/guardian.json b/erpnext/education/doctype/guardian/guardian.json index d8722e2c90..191e92a0f9 100644 --- a/erpnext/education/doctype/guardian/guardian.json +++ b/erpnext/education/doctype/guardian/guardian.json @@ -2,7 +2,7 @@ "allow_copy": 0, "allow_guest_to_view": 0, "allow_import": 1, - "allow_rename": 0, + "allow_rename": 1, "autoname": "GARD.####", "beta": 0, "creation": "2016-07-21 15:32:51.163292", @@ -507,7 +507,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-12-06 18:17:38.090252", + "modified": "2018-03-07 12:51:06.941609", "modified_by": "Administrator", "module": "Education", "name": "Guardian", From 36b4faab48ea8c2e215ae6d64eea463232fef09a Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 7 Mar 2018 13:39:05 +0600 Subject: [PATCH 38/50] bumped to version 10.1.6 --- erpnext/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index 6ec290c5e5..99981bd713 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -5,7 +5,7 @@ import frappe from erpnext.hooks import regional_overrides from frappe.utils import getdate -__version__ = '10.1.5' +__version__ = '10.1.6' def get_default_company(user=None): '''Get default company for user''' From bbd9b71547a23e6ee5fb4f05b201533b487784f5 Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Wed, 7 Mar 2018 15:39:40 +0530 Subject: [PATCH 39/50] Provision to include exploded items while making transfer entry of raw materials for subcontrtacted item (#13043) --- .../purchase_invoice_item.json | 104 +++++++++++- .../purchase_order_item.json | 156 +++++++++++++++++- erpnext/controllers/buying_controller.py | 38 +++-- .../purchase_receipt_item.json | 107 +++++++++++- 4 files changed, 387 insertions(+), 18 deletions(-) diff --git a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json index 6646506e74..d1f99ab3eb 100755 --- a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json +++ b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json @@ -42,6 +42,7 @@ "reqd": 0, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -70,6 +71,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -101,6 +103,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -131,6 +134,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -163,6 +167,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "300px" }, @@ -194,6 +199,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -225,6 +231,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -254,6 +261,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -284,6 +292,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -315,6 +324,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -345,6 +355,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -376,6 +387,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -404,6 +416,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -435,6 +448,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -465,6 +479,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -495,6 +510,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -523,6 +539,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -553,6 +570,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -583,6 +601,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -611,6 +630,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -641,6 +661,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -669,6 +690,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -701,6 +723,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -733,6 +756,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -761,6 +785,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -793,6 +818,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -825,6 +851,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -855,6 +882,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -884,6 +912,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -915,6 +944,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -946,6 +976,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -975,6 +1006,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1006,6 +1038,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1037,6 +1070,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1067,6 +1101,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1097,6 +1132,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1127,6 +1163,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1156,6 +1193,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1187,6 +1225,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1217,6 +1256,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1249,6 +1289,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1280,6 +1321,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1312,6 +1354,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1343,6 +1386,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1373,6 +1417,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1403,6 +1448,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1433,6 +1479,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1462,6 +1509,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1495,6 +1543,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "120px" }, @@ -1524,6 +1573,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1554,6 +1604,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1589,6 +1640,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "120px" }, @@ -1619,6 +1671,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1649,6 +1702,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1680,6 +1734,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1713,6 +1768,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1745,6 +1801,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1776,6 +1833,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "150px" }, @@ -1809,6 +1867,7 @@ "reqd": 0, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1840,6 +1899,39 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "depends_on": "eval:parent.is_subcontracted == 'Yes'", + "fieldname": "include_exploded_items", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Include Exploded Items", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1868,6 +1960,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1898,6 +1991,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1930,6 +2024,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1961,6 +2056,7 @@ "reqd": 0, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1993,6 +2089,7 @@ "reqd": 0, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -2022,6 +2119,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -2053,6 +2151,7 @@ "reqd": 0, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -2083,6 +2182,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -2113,6 +2213,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -2143,6 +2244,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 } ], @@ -2156,7 +2258,7 @@ "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2017-11-30 14:21:00.962126", + "modified": "2018-02-22 15:15:25.297672", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice Item", diff --git a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json index 1a2842ac83..4927d06180 100755 --- a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json +++ b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json @@ -43,6 +43,7 @@ "reqd": 1, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -73,6 +74,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -104,6 +106,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -133,6 +136,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -164,6 +168,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -194,6 +199,7 @@ "reqd": 0, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -224,6 +230,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -256,6 +263,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "300px" }, @@ -285,6 +293,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -315,6 +324,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -346,6 +356,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -375,6 +386,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -407,6 +419,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "60px" }, @@ -441,6 +454,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -471,6 +485,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -504,6 +519,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -538,6 +554,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -567,6 +584,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -597,6 +615,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -627,6 +646,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -655,6 +675,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -686,6 +707,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -716,6 +738,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -744,6 +767,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -776,6 +800,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -808,6 +833,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -836,6 +862,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -870,6 +897,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -903,6 +931,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -933,6 +962,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -962,6 +992,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -993,6 +1024,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1024,6 +1056,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1053,6 +1086,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1084,6 +1118,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1115,6 +1150,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1145,6 +1181,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1175,6 +1212,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1205,6 +1243,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1234,6 +1273,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1265,6 +1305,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1294,6 +1335,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1326,6 +1368,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1356,6 +1399,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1389,6 +1433,7 @@ "reqd": 0, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "120px" }, @@ -1421,6 +1466,7 @@ "reqd": 0, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1452,6 +1498,7 @@ "reqd": 0, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1482,6 +1529,7 @@ "reqd": 0, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1512,6 +1560,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1542,6 +1591,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1572,6 +1622,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1600,6 +1651,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1633,6 +1685,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1665,6 +1718,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1696,6 +1750,70 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "default": "1", + "depends_on": "eval:parent.is_subcontracted == 'Yes'", + "fieldname": "include_exploded_items", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Include Exploded Items", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "section_break_56", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1728,6 +1846,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -1760,6 +1879,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1791,6 +1911,37 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "column_break_60", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1821,6 +1972,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1853,6 +2005,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1884,6 +2037,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 } ], @@ -1897,7 +2051,7 @@ "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2017-12-14 09:36:40.837027", + "modified": "2018-02-22 15:43:18.746731", "modified_by": "Administrator", "module": "Buying", "name": "Purchase Order Item", diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py index b141455b19..ff0f0c2b21 100644 --- a/erpnext/controllers/buying_controller.py +++ b/erpnext/controllers/buying_controller.py @@ -195,7 +195,11 @@ class BuyingController(StockController): self.set('supplied_items', []) def update_raw_materials_supplied(self, item, raw_material_table): - bom_items = self.get_items_from_bom(item.item_code, item.bom) + exploded_item = 1 + if hasattr(item, 'include_exploded_items'): + exploded_item = item.get('include_exploded_items') + + bom_items = get_items_from_bom(item.item_code, item.bom, exploded_item) raw_materials_cost = 0 items = list(set([d.item_code for d in bom_items])) item_wh = frappe._dict(frappe.db.sql("""select item_code, default_warehouse @@ -276,20 +280,6 @@ class BuyingController(StockController): if d not in delete_list: self.append(raw_material_table, d) - def get_items_from_bom(self, item_code, bom): - bom_items = frappe.db.sql("""select t2.item_code, - t2.stock_qty / ifnull(t1.quantity, 1) as qty_consumed_per_unit, - t2.rate, t2.stock_uom, t2.name, t2.description, t2.source_warehouse - from `tabBOM` t1, `tabBOM Item` t2, tabItem t3 - where t2.parent = t1.name and t1.item = %s - and t1.docstatus = 1 and t1.is_active = 1 and t1.name = %s - and t2.item_code = t3.name and t3.is_stock_item = 1""", (item_code, bom), as_dict=1) - - if not bom_items: - msgprint(_("Specified BOM {0} does not exist for Item {1}").format(bom, item_code), raise_exception=1) - - return bom_items - @property def sub_contracted_items(self): if not hasattr(self, "_sub_contracted_items"): @@ -456,3 +446,21 @@ class BuyingController(StockController): else: frappe.throw(_("Please enter Reqd by Date")) +def get_items_from_bom(item_code, bom, exploded_item=1): + doctype = "BOM Item" if not exploded_item else "BOM Explosion Item" + + bom_items = frappe.db.sql("""select t2.item_code, t2.name, + t2.rate, t2.stock_uom, t2.source_warehouse, t2.description, + t2.stock_qty / ifnull(t1.quantity, 1) as qty_consumed_per_unit + from + `tabBOM` t1, `tab{0}` t2, tabItem t3 + where + t2.parent = t1.name and t1.item = %s + and t1.docstatus = 1 and t1.is_active = 1 and t1.name = %s + and t2.item_code = t3.name and t3.is_stock_item = 1""".format(doctype), + (item_code, bom), as_dict=1) + + if not bom_items: + msgprint(_("Specified BOM {0} does not exist for Item {1}").format(bom, item_code), raise_exception=1) + + return bom_items \ No newline at end of file diff --git a/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json b/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json index 1b4cfd9e49..754bd71879 100755 --- a/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json +++ b/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json @@ -40,6 +40,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -69,6 +70,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -102,6 +104,7 @@ "reqd": 1, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -133,6 +136,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -162,6 +166,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -193,6 +198,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -223,6 +229,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -255,6 +262,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "300px" }, @@ -284,6 +292,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -314,6 +323,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -345,6 +355,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -374,6 +385,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -406,6 +418,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -439,6 +452,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -472,6 +486,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -502,6 +517,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -536,6 +552,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -570,6 +587,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -604,6 +622,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -636,6 +655,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -668,6 +688,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -697,6 +718,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -727,6 +749,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -757,6 +780,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -785,6 +809,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -815,6 +840,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -843,6 +869,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -876,6 +903,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -909,6 +937,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -937,6 +966,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -970,6 +1000,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -1004,6 +1035,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -1035,6 +1067,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1064,6 +1097,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1095,6 +1129,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1126,6 +1161,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1155,6 +1191,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1186,6 +1223,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1217,6 +1255,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1247,6 +1286,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1277,6 +1317,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1307,6 +1348,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1336,6 +1378,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1367,6 +1410,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1396,6 +1440,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1429,6 +1474,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -1463,6 +1509,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -1497,6 +1544,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1526,6 +1574,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1559,6 +1608,7 @@ "reqd": 0, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "150px" }, @@ -1591,6 +1641,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1623,6 +1674,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "100px" }, @@ -1653,6 +1705,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1684,6 +1737,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1716,6 +1770,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1746,6 +1801,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1775,6 +1831,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1804,6 +1861,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1834,6 +1892,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1866,6 +1925,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1898,6 +1958,7 @@ "reqd": 0, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "150px" }, @@ -1927,6 +1988,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1957,6 +2019,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -1988,6 +2051,39 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "depends_on": "eval:parent.is_subcontracted == 'Yes'", + "fieldname": "include_exploded_items", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Include Exploded Items", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -2018,6 +2114,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -2047,6 +2144,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -2079,6 +2177,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -2112,6 +2211,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -2145,6 +2245,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "150px" }, @@ -2179,6 +2280,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "150px" }, @@ -2213,6 +2315,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0, "width": "80px" }, @@ -2246,6 +2349,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -2277,6 +2381,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 } ], @@ -2290,7 +2395,7 @@ "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2017-12-06 13:50:08.201145", + "modified": "2018-02-22 15:15:38.793425", "modified_by": "Administrator", "module": "Stock", "name": "Purchase Receipt Item", From c3bf1fa0093a1c756daf2dc0ed2a4c9f66dbba64 Mon Sep 17 00:00:00 2001 From: Shreya Shah Date: Wed, 7 Mar 2018 16:27:30 +0530 Subject: [PATCH 40/50] [Fixes] Chapter DocType (#13213) * fetch chapter head from member doctype instead of user * add enabled in grid view and set default as 1 --- .../doctype/chapter/templates/chapter.html | 7 ++++--- .../doctype/chapter_member/chapter_member.json | 12 +++++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/erpnext/non_profit/doctype/chapter/templates/chapter.html b/erpnext/non_profit/doctype/chapter/templates/chapter.html index 04a715886b..0110950cb9 100644 --- a/erpnext/non_profit/doctype/chapter/templates/chapter.html +++ b/erpnext/non_profit/doctype/chapter/templates/chapter.html @@ -46,17 +46,18 @@

Chapter Head

+ {% set doc = frappe.get_doc('Member',chapter_head) %} - + - + - +
Name{{ frappe.db.get_value('User', chapter_head, 'full_name') }}{{ doc.member_name }}
Email{{ frappe.db.get_value('User', chapter_head, 'email') or '' }}{{ frappe.db.get_value('User', doc.email, 'email') or '' }}
Phone{{ frappe.db.get_value('User', chapter_head, 'phone') or '' }}{{ frappe.db.get_value('User', doc.email, 'phone') or '' }}

Address

diff --git a/erpnext/non_profit/doctype/chapter_member/chapter_member.json b/erpnext/non_profit/doctype/chapter_member/chapter_member.json index 0b8f5a77c4..478bfd9331 100644 --- a/erpnext/non_profit/doctype/chapter_member/chapter_member.json +++ b/erpnext/non_profit/doctype/chapter_member/chapter_member.json @@ -41,6 +41,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -71,6 +72,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -101,6 +103,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -108,7 +111,8 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, - "columns": 0, + "columns": 2, + "default": "1", "fieldname": "enabled", "fieldtype": "Check", "hidden": 0, @@ -116,7 +120,7 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_global_search": 0, - "in_list_view": 0, + "in_list_view": 1, "in_standard_filter": 0, "label": "Enabled", "length": 0, @@ -131,6 +135,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -161,6 +166,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 } ], @@ -174,7 +180,7 @@ "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2018-01-12 12:16:10.591039", + "modified": "2018-03-07 05:36:51.664816", "modified_by": "Administrator", "module": "Non Profit", "name": "Chapter Member", From 470977fa133a37555fa9dad2081638ba4df18809 Mon Sep 17 00:00:00 2001 From: lasalesi Date: Thu, 8 Mar 2018 06:49:56 +0100 Subject: [PATCH 41/50] corrected setup wizard tax rates for Switzerland 2018 (#13220) (#13221) --- .../setup_wizard/data/country_wise_tax.json | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/erpnext/setup/setup_wizard/data/country_wise_tax.json b/erpnext/setup/setup_wizard/data/country_wise_tax.json index 0e4ba6bc92..19318df38e 100644 --- a/erpnext/setup/setup_wizard/data/country_wise_tax.json +++ b/erpnext/setup/setup_wizard/data/country_wise_tax.json @@ -1230,14 +1230,18 @@ }, "Switzerland": { - "Switzerland VAT 8%": { - "account_name": "VAT 8%", - "tax_rate": 8.00, + "Switzerland normal VAT": { + "account_name": "VAT 7.7%", + "tax_rate": 7.70, "default": 1 }, - "Switzerland VAT 2.4%": { - "account_name": "VAT 2.4%", - "tax_rate": 2.40 + "Switzerland reduced VAT": { + "account_name": "VAT 2.5%", + "tax_rate": 2.50 + }, + "Switzerland lodging VAT": { + "account_name": "VAT 3.7%", + "tax_rate": 3.70 } }, From 1bfa24319016a95c74cb0c8a66bf14b2369d11e8 Mon Sep 17 00:00:00 2001 From: theopen-institute Date: Thu, 8 Mar 2018 12:50:40 +0700 Subject: [PATCH 42/50] fix patch that causes error on bench update (#13222) --- erpnext/patches/v10_0/item_barcode_childtable_migrate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/patches/v10_0/item_barcode_childtable_migrate.py b/erpnext/patches/v10_0/item_barcode_childtable_migrate.py index e925952c48..c939dd5d33 100644 --- a/erpnext/patches/v10_0/item_barcode_childtable_migrate.py +++ b/erpnext/patches/v10_0/item_barcode_childtable_migrate.py @@ -7,7 +7,7 @@ import frappe def execute(): - items_barcode = frappe.get_list('Item', ['name', 'barcode'], { 'barcode': ('!=', '') }) + items_barcode = frappe.get_all('Item', ['name', 'barcode'], { 'barcode': ('!=', '') }) frappe.reload_doc("stock", "doctype", "item") frappe.reload_doc("stock", "doctype", "item_barcode") From 9050998e06dad9a805c116a88b46aff4abaeec71 Mon Sep 17 00:00:00 2001 From: Achilles Rasquinha Date: Thu, 8 Mar 2018 12:55:41 +0530 Subject: [PATCH 43/50] [FIX] use text_type instead of unicode, use cmp from past.builtins --- erpnext/accounts/doctype/tax_rule/tax_rule.py | 1 + erpnext/accounts/report/financial_statements.py | 2 +- erpnext/controllers/accounts_controller.py | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/erpnext/accounts/doctype/tax_rule/tax_rule.py b/erpnext/accounts/doctype/tax_rule/tax_rule.py index 028fa723dd..ddef65799b 100644 --- a/erpnext/accounts/doctype/tax_rule/tax_rule.py +++ b/erpnext/accounts/doctype/tax_rule/tax_rule.py @@ -3,6 +3,7 @@ # For license information, please see license.txt from __future__ import unicode_literals +from past.builtins import cmp import frappe from frappe import _ from frappe.model.document import Document diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py index f3e52031ed..ffe860e8ec 100644 --- a/erpnext/accounts/report/financial_statements.py +++ b/erpnext/accounts/report/financial_statements.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals import re - +from past.builtins import cmp import functools import frappe diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 08460a03c7..c6d911a26f 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -11,6 +11,7 @@ from erpnext.utilities.transaction_base import TransactionBase from erpnext.controllers.sales_and_purchase_return import validate_return from erpnext.accounts.party import get_party_account_currency, validate_party_frozen_disabled from erpnext.exceptions import InvalidCurrency +from six import text_type force_item_fields = ("item_group", "brand", "stock_uom") @@ -932,7 +933,7 @@ def get_payment_terms(terms_template, posting_date=None, grand_total=None, bill_ @frappe.whitelist() def get_payment_term_details(term, posting_date=None, grand_total=None, bill_date=None): term_details = frappe._dict() - if isinstance(term, unicode): + if isinstance(term, text_type): term = frappe.get_doc("Payment Term", term) else: term_details.payment_term = term.payment_term From 665b48773f042f4dc4a0c55631f4814637e5f150 Mon Sep 17 00:00:00 2001 From: Jamsheer Date: Thu, 8 Mar 2018 13:08:35 +0530 Subject: [PATCH 44/50] Healthcare - Patient Appointment - Service unit based scheduling and booking (#13211) * New Document - Patient Service Unit * Physician - schedule based on patient service unit * Consultation - Remove validation on submit * Consultation - Label changed from Drug Prescription to Medication * Availability check and book appointment based on service unit, appointment invoice creation optimized * patch fixes * Patient Service Unit - field - overlap_appointments * Patient Appointment - Service Unit based scheduling and booking * Patient Appointment - issue fixed #13016 Healthcare Patient Appointment Save Button Issue - remove validation on save and enable save on book appointment * Codacy fixes on PR #13211 * Codacy fixes on PR #13211 * Fee validity test -fixes * Fee Validity - test - fixes --- erpnext/config/healthcare.py | 5 + .../doctype/consultation/consultation.json | 6 +- .../doctype/consultation/consultation.py | 5 - .../doctype/fee_validity/test_fee_validity.py | 25 +- .../patient_appointment.js | 93 +++-- .../patient_appointment.json | 269 ++++++++----- .../patient_appointment.py | 108 +++--- .../doctype/patient_service_unit/__init__.py | 0 .../patient_service_unit.js | 15 + .../patient_service_unit.json | 358 ++++++++++++++++++ .../patient_service_unit.py | 14 + .../patient_service_unit_tree.js | 3 + .../test_patient_service_unit.js | 23 ++ .../test_patient_service_unit.py | 8 + .../healthcare/doctype/physician/physician.js | 7 + .../doctype/physician/physician.json | 70 +--- .../healthcare/doctype/physician/physician.py | 10 - .../doctype/physician/test_physician.py | 17 - .../__init__.py | 0 .../physician_service_unit_schedule.json | 103 +++++ .../physician_service_unit_schedule.py | 9 + erpnext/patches.txt | 1 + .../remove_and_copy_fields_in_physician.py | 12 + 23 files changed, 878 insertions(+), 283 deletions(-) create mode 100644 erpnext/healthcare/doctype/patient_service_unit/__init__.py create mode 100644 erpnext/healthcare/doctype/patient_service_unit/patient_service_unit.js create mode 100644 erpnext/healthcare/doctype/patient_service_unit/patient_service_unit.json create mode 100644 erpnext/healthcare/doctype/patient_service_unit/patient_service_unit.py create mode 100644 erpnext/healthcare/doctype/patient_service_unit/patient_service_unit_tree.js create mode 100644 erpnext/healthcare/doctype/patient_service_unit/test_patient_service_unit.js create mode 100644 erpnext/healthcare/doctype/patient_service_unit/test_patient_service_unit.py create mode 100644 erpnext/healthcare/doctype/physician_service_unit_schedule/__init__.py create mode 100644 erpnext/healthcare/doctype/physician_service_unit_schedule/physician_service_unit_schedule.json create mode 100644 erpnext/healthcare/doctype/physician_service_unit_schedule/physician_service_unit_schedule.py create mode 100644 erpnext/patches/v10_0/remove_and_copy_fields_in_physician.py diff --git a/erpnext/config/healthcare.py b/erpnext/config/healthcare.py index 34a9b70c51..4e8bb483a2 100644 --- a/erpnext/config/healthcare.py +++ b/erpnext/config/healthcare.py @@ -86,6 +86,11 @@ def get_data(): "type": "doctype", "name": "Medical Code", "label": _("Medical Code"), + }, + { + "type": "doctype", + "name": "Patient Service Unit", + "label": _("Patient Service Unit") } ] }, diff --git a/erpnext/healthcare/doctype/consultation/consultation.json b/erpnext/healthcare/doctype/consultation/consultation.json index 184f484e24..c1bd37a3d2 100644 --- a/erpnext/healthcare/doctype/consultation/consultation.json +++ b/erpnext/healthcare/doctype/consultation/consultation.json @@ -767,7 +767,7 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "Drug Prescription", + "label": "Medication", "length": 0, "no_copy": 0, "permlevel": 0, @@ -797,7 +797,7 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "Drug Prescription", + "label": "Medication", "length": 0, "no_copy": 0, "options": "Drug Prescription", @@ -945,7 +945,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-12-28 11:25:35.256848", + "modified": "2018-02-19 11:35:13.826577", "modified_by": "Administrator", "module": "Healthcare", "name": "Consultation", diff --git a/erpnext/healthcare/doctype/consultation/consultation.py b/erpnext/healthcare/doctype/consultation/consultation.py index 7d41afe65e..451c4914b0 100755 --- a/erpnext/healthcare/doctype/consultation/consultation.py +++ b/erpnext/healthcare/doctype/consultation/consultation.py @@ -4,7 +4,6 @@ from __future__ import unicode_literals import frappe -from frappe import _ from frappe.model.document import Document from frappe.utils import getdate import json @@ -19,10 +18,6 @@ class Consultation(Document): def after_insert(self): insert_consultation_to_medical_record(self) - def on_submit(self): - if not self.diagnosis or not self.symptoms: - frappe.throw(_("Diagnosis and Complaints cannot be left blank")) - def on_cancel(self): if(self.appointment): frappe.db.set_value("Patient Appointment", self.appointment, "status", "Open") diff --git a/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py b/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py index 53f82e034c..7ad673d535 100644 --- a/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py +++ b/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py @@ -5,7 +5,7 @@ from __future__ import unicode_literals import frappe import unittest -from erpnext.healthcare.doctype.patient_appointment.patient_appointment import create_invoice +from erpnext.healthcare.doctype.patient_appointment.patient_appointment import invoice_appointment from frappe.utils.make_random import get_random from frappe.utils import nowdate, add_days # test_records = frappe.get_test_records('Fee Validity') @@ -14,6 +14,7 @@ class TestFeeValidity(unittest.TestCase): def test_fee_validity(self): patient = get_random("Patient") physician = get_random("Physician") + department = get_random("Medical Department") if not patient: patient = frappe.new_doc("Patient") @@ -22,33 +23,43 @@ class TestFeeValidity(unittest.TestCase): patient.save(ignore_permissions=True) patient = patient.name + if not department: + medical_department = frappe.new_doc("Medical Department") + medical_department.department = "Test Medical Department" + medical_department.save(ignore_permissions=True) + department = medical_department.name + if not physician: physician = frappe.new_doc("Physician") physician.first_name = "Amit Jain" + physician.department = department physician.save(ignore_permissions=True) physician = physician.name + + frappe.db.set_value("Healthcare Settings", None, "max_visit", 2) frappe.db.set_value("Healthcare Settings", None, "valid_days", 7) - appointment = create_appointment(patient, physician, nowdate()) + appointment = create_appointment(patient, physician, nowdate(), department) invoice = frappe.db.get_value("Patient Appointment", appointment.name, "sales_invoice") self.assertEqual(invoice, None) - create_invoice(frappe.defaults.get_global_default("company"), physician, patient, appointment.name, appointment.appointment_date) - appointment = create_appointment(patient, physician, add_days(nowdate(), 4)) + invoice_appointment(appointment) + appointment = create_appointment(patient, physician, add_days(nowdate(), 4), department) invoice = frappe.db.get_value("Patient Appointment", appointment.name, "sales_invoice") self.assertTrue(invoice) - appointment = create_appointment(patient, physician, add_days(nowdate(), 5)) + appointment = create_appointment(patient, physician, add_days(nowdate(), 5), department) invoice = frappe.db.get_value("Patient Appointment", appointment.name, "sales_invoice") self.assertEqual(invoice, None) - appointment = create_appointment(patient, physician, add_days(nowdate(), 10)) + appointment = create_appointment(patient, physician, add_days(nowdate(), 10), department) invoice = frappe.db.get_value("Patient Appointment", appointment.name, "sales_invoice") self.assertEqual(invoice, None) -def create_appointment(patient, physician, appointment_date): +def create_appointment(patient, physician, appointment_date, department): appointment = frappe.new_doc("Patient Appointment") appointment.patient = patient appointment.physician = physician + appointment.department = department appointment.appointment_date = appointment_date appointment.save(ignore_permissions=True) return appointment diff --git a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js index 89121573f6..f34f7cfe1a 100644 --- a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js +++ b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js @@ -15,6 +15,20 @@ frappe.ui.form.on('Patient Appointment', { filters: {"disabled": 0} }; }); + frm.set_query("physician", function() { + return { + filters: { + 'department': frm.doc.department + } + }; + }); + frm.set_query("service_unit", function(){ + return { + filters: { + "is_group": false, + } + }; + }); if(frm.doc.patient){ frm.add_custom_button(__('Medical Record'), function() { frappe.route_options = {"patient": frm.doc.patient}; @@ -83,11 +97,10 @@ frappe.ui.form.on('Patient Appointment', { date: appointment_date }, callback: (r) => { - // console.log(r); var data = r.message; - if(data.available_slots.length > 0) { + if(data.slot_details.length > 0){ show_availability(data); - } else { + }else{ show_empty_state(); } } @@ -108,48 +121,71 @@ frappe.ui.form.on('Patient Appointment', { primary_action_label: __("Book"), primary_action: function() { // book slot - frm.set_value('appointment_time', selected_slot); - frm.set_value('duration', data.time_per_appointment); + var btn_selected = $wrapper.find('button.btn-selected-slot'); + frm.set_value('appointment_time', btn_selected.attr('data-name')); + frm.set_value('service_unit', btn_selected.attr('data-service-unit') || ''); + frm.set_value('duration', btn_selected.attr('data-duration')); d.hide(); frm.save(); + frm.enable_save(); } }); var $wrapper = d.fields_dict.available_slots.$wrapper; - var selected_slot = null; // disable dialog action initially d.get_primary_btn().attr('disabled', true); - // make buttons for each slot - var slot_html = data.available_slots.map(slot => { - return ``; - }).join(""); + var slot_details = data.slot_details; + var slot_html = ""; + $.each(slot_details, function(i, slot_detail){ + slot_html = slot_html + ``; + slot_html = slot_html + `
` + slot_detail['avail_slot'].map(slot => { + let disabled = ''; + let start_str = slot.from_time; + let start_time = moment(slot.from_time, 'HH:mm:ss'); + let to_time = moment(slot.to_time, 'HH:mm:ss'); + let interval = (to_time - start_time)/60000 | 0; + // iterate in all booked appointments, update the start time and duration + slot_detail['appointments'].forEach(function(booked) { + let booked_moment = moment(booked.appointment_time, 'HH:mm:ss'); + if(booked_moment.isSame(start_time) || booked_moment.isBetween(start_time, to_time)){ + if(booked.duration == 0){ + disabled = 'disabled="disabled"'; + return false; + } + start_time = booked_moment; + let end_time = booked_moment.add(booked.duration, 'minutes'); + if(end_time.isSameOrAfter(to_time)){ + disabled = 'disabled="disabled"'; + return false; + }else{ + start_str = end_time.format('HH:mm:ss'); + } + } + }); + return ``; + }).join(""); + slot_html = slot_html + `
`; + }); $wrapper .css('margin-bottom', 0) .addClass('text-center') .html(slot_html); - // disable buttons for which appointments are booked - data.appointments.map(slot => { - if(slot.status == "Scheduled" || slot.status == "Open" || slot.status == "Closed"){ - $wrapper - .find(`button[data-name="${slot.appointment_time}"]`) - .attr('disabled', true); - } - }); - // blue button when clicked $wrapper.on('click', 'button', function() { var $btn = $(this); $wrapper.find('button').removeClass('btn-primary'); + $wrapper.find('button').removeClass('btn-selected-slot'); $btn.addClass('btn-primary'); - selected_slot = $btn.attr('data-name'); - + $btn.addClass('btn-selected-slot'); // enable dialog action d.get_primary_btn().attr('disabled', null); }); @@ -209,12 +245,9 @@ var btn_update_status = function(frm, status){ }; var btn_invoice_consultation = function(frm){ - var doc = frm.doc; frappe.call({ - method: - "erpnext.healthcare.doctype.patient_appointment.patient_appointment.create_invoice", - args: {company: doc.company, physician:doc.physician, patient: doc.patient, - appointment_id: doc.name, appointment_date:doc.appointment_date }, + doc: frm.doc, + method:"create_invoice", callback: function(data){ if(!data.exc){ if(data.message){ diff --git a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.json b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.json index 1dcdbb57f1..022a9d6d49 100644 --- a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.json +++ b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.json @@ -42,6 +42,39 @@ "reqd": 1, "search_index": 1, "set_only_once": 1, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "department", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 1, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Department", + "length": 0, + "no_copy": 0, + "options": "Medical Department", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 1, + "set_only_once": 1, + "translatable": 0, "unique": 0 }, { @@ -73,6 +106,7 @@ "reqd": 1, "search_index": 1, "set_only_once": 1, + "translatable": 0, "unique": 0 }, { @@ -103,6 +137,71 @@ "reqd": 1, "search_index": 1, "set_only_once": 1, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "appointment_time", + "fieldtype": "Time", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Time", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "depends_on": "eval:!doc.__islocal", + "description": "In Minutes", + "fieldname": "duration", + "fieldtype": "Int", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Duration", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -134,6 +233,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -151,8 +251,42 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, + "label": "", "length": 0, "no_copy": 0, + "options": "", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "service_unit", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Service Unit", + "length": 0, + "no_copy": 0, + "options": "Patient Service Unit", "permlevel": 0, "precision": "", "print_hide": 0, @@ -162,7 +296,8 @@ "report_hide": 0, "reqd": 0, "search_index": 0, - "set_only_once": 0, + "set_only_once": 1, + "translatable": 0, "unique": 0 }, { @@ -195,6 +330,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -226,6 +362,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -257,6 +394,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -271,7 +409,7 @@ "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, - "in_filter": 0, + "in_filter": 1, "in_global_search": 0, "in_list_view": 1, "in_standard_filter": 0, @@ -289,6 +427,7 @@ "reqd": 0, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -319,7 +458,8 @@ "report_hide": 0, "reqd": 0, "search_index": 0, - "set_only_once": 1, + "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -349,68 +489,8 @@ "report_hide": 0, "reqd": 0, "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, - { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "appointment_time", - "fieldtype": "Time", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Time", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, "set_only_once": 1, - "unique": 0 - }, - { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "description": "In Minutes", - "fieldname": "duration", - "fieldtype": "Int", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Duration", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -441,6 +521,7 @@ "reqd": 0, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -470,37 +551,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, - "unique": 0 - }, - { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "department", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 1, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 1, - "label": "Department", - "length": 0, - "no_copy": 0, - "options": "Medical Department", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 1, - "set_only_once": 1, + "translatable": 0, "unique": 0 }, { @@ -532,6 +583,7 @@ "reqd": 0, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -563,6 +615,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -593,6 +646,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -623,6 +677,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -654,6 +709,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 1, + "translatable": 0, "unique": 0 }, { @@ -685,6 +741,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 } ], @@ -698,7 +755,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-12-28 11:26:20.262978", + "modified": "2018-02-26 12:44:33.756124", "modified_by": "Administrator", "module": "Healthcare", "name": "Patient Appointment", @@ -744,6 +801,26 @@ "share": 1, "submit": 0, "write": 1 + }, + { + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Nursing User", + "set_user_permissions": 0, + "share": 1, + "submit": 0, + "write": 1 } ], "quick_entry": 0, diff --git a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py index 90d4d0ea20..626774bd58 100755 --- a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py +++ b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py @@ -6,7 +6,7 @@ from __future__ import unicode_literals import frappe from frappe.model.document import Document import json -from frappe.utils import getdate, cint +from frappe.utils import getdate from frappe import _ import datetime from frappe.core.doctype.sms_settings.sms_settings import send_sms @@ -40,13 +40,8 @@ class PatientAppointment(Document): frappe.msgprint(_("{0} has fee validity till {1}").format(appointment.patient, fee_validity.valid_till)) confirm_sms(self) - def save(self, *args, **kwargs): - # duration is the only changeable field in the document - if not self.is_new(): - self.db_set('duration', cint(self.duration)) - else: - super(PatientAppointment, self).save(*args, **kwargs) - + def create_invoice(self): + return invoice_appointment(self) def appointment_cancel(appointment_id): appointment = frappe.get_doc("Patient Appointment", appointment_id) @@ -79,9 +74,9 @@ def get_availability_data(date, physician): weekday = date.strftime("%A") available_slots = [] - physician_schedule_name = None + slot_details = [] physician_schedule = None - time_per_appointment = None + employee = None physician_obj = frappe.get_doc("Physician", physician) @@ -112,43 +107,56 @@ def get_availability_data(date, physician): frappe.throw(_("Dr {0} on Leave on {1}").format(physician, date)) # get physicians schedule - physician_schedule_name = frappe.db.get_value("Physician", physician, "physician_schedule") - if physician_schedule_name: - physician_schedule = frappe.get_doc("Physician Schedule", physician_schedule_name) - time_per_appointment = frappe.db.get_value("Physician", physician, "time_per_appointment") + if physician_obj.physician_schedules: + for schedule in physician_obj.physician_schedules: + if schedule.schedule: + physician_schedule = frappe.get_doc("Physician Schedule", schedule.schedule) + else: + frappe.throw(_("Dr {0} does not have a Physician Schedule. Add it in Physician master".format(physician))) + + if physician_schedule: + available_slots = [] + for t in physician_schedule.time_slots: + if weekday == t.day: + available_slots.append(t) + + if available_slots: + appointments = [] + if schedule.service_unit: + slot_name = schedule.schedule+" - "+schedule.service_unit + allow_overlap = frappe.get_value('Patient Service Unit', schedule.service_unit, 'overlap_appointments') + if allow_overlap: + # fetch all appointments to physician by service unit + appointments = frappe.get_all( + "Patient Appointment", + filters={"physician": physician, "service_unit": schedule.service_unit, "appointment_date": date, "status": ["not in",["Cancelled"]]}, + fields=["name", "appointment_time", "duration", "status"]) + else: + # fetch all appointments to service unit + appointments = frappe.get_all( + "Patient Appointment", + filters={"service_unit": schedule.service_unit, "appointment_date": date, "status": ["not in",["Cancelled"]]}, + fields=["name", "appointment_time", "duration", "status"]) + else: + slot_name = schedule.schedule + # fetch all appointments to physician without service unit + appointments = frappe.get_all( + "Patient Appointment", + filters={"physician": physician, "service_unit": '', "appointment_date": date, "status": ["not in",["Cancelled"]]}, + fields=["name", "appointment_time", "duration", "status"]) + + slot_details.append({"slot_name":slot_name, "service_unit":schedule.service_unit, + "avail_slot":available_slots, 'appointments': appointments}) + else: frappe.throw(_("Dr {0} does not have a Physician Schedule. Add it in Physician master".format(physician))) - if physician_schedule: - for t in physician_schedule.time_slots: - if weekday == t.day: - available_slots.append(t) - - # `time_per_appointment` should never be None since validation in `Patient` is supposed to prevent - # that. However, it isn't impossible so we'll prepare for that. - if not time_per_appointment: - frappe.throw(_('"Time Per Appointment" hasn"t been set for Dr {0}. Add it in Physician master.').format(physician)) - - # if physician not available return - if not available_slots: + if not available_slots and not slot_details: # TODO: return available slots in nearby dates frappe.throw(_("Physician not available on {0}").format(weekday)) - # if physician on leave return - - # if holiday return - # if is_holiday(weekday): - - # get appointments on that day for physician - appointments = frappe.get_all( - "Patient Appointment", - filters={"physician": physician, "appointment_date": date}, - fields=["name", "appointment_time", "duration", "status"]) - return { - "available_slots": available_slots, - "appointments": appointments, - "time_per_appointment": time_per_appointment + "slot_details": slot_details } @@ -182,25 +190,25 @@ def confirm_sms(doc): @frappe.whitelist() -def create_invoice(company, physician, patient, appointment_id, appointment_date): - if not appointment_id: +def invoice_appointment(appointment_doc): + if not appointment_doc.name: return False sales_invoice = frappe.new_doc("Sales Invoice") - sales_invoice.customer = frappe.get_value("Patient", patient, "customer") - sales_invoice.appointment = appointment_id + sales_invoice.customer = frappe.get_value("Patient", appointment_doc.patient, "customer") + sales_invoice.appointment = appointment_doc.name sales_invoice.due_date = getdate() sales_invoice.is_pos = '0' - sales_invoice.debit_to = get_receivable_account(company) + sales_invoice.debit_to = get_receivable_account(appointment_doc.company) - fee_validity = get_fee_validity(physician, patient, appointment_date) - create_invoice_items(appointment_id, physician, company, sales_invoice) + fee_validity = get_fee_validity(appointment_doc.physician, appointment_doc.patient, appointment_doc.appointment_date) + create_invoice_items(appointment_doc.physician, appointment_doc.company, sales_invoice) sales_invoice.save(ignore_permissions=True) - frappe.db.sql("""update `tabPatient Appointment` set sales_invoice=%s where name=%s""", (sales_invoice.name, appointment_id)) + frappe.db.sql("""update `tabPatient Appointment` set sales_invoice=%s where name=%s""", (sales_invoice.name, appointment_doc.name)) frappe.db.set_value("Fee Validity", fee_validity.name, "ref_invoice", sales_invoice.name) consultation = frappe.db.exists({ "doctype": "Consultation", - "appointment": appointment_id}) + "appointment": appointment_doc.name}) if consultation: frappe.db.set_value("Consultation", consultation[0][0], "invoice", sales_invoice.name) return sales_invoice.name @@ -247,7 +255,7 @@ def create_fee_validity(physician, patient, date): return fee_validity -def create_invoice_items(appointment_id, physician, company, invoice): +def create_invoice_items(physician, company, invoice): item_line = invoice.append("items") item_line.item_name = "Consulting Charges" item_line.description = "Consulting Charges: " + physician diff --git a/erpnext/healthcare/doctype/patient_service_unit/__init__.py b/erpnext/healthcare/doctype/patient_service_unit/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/healthcare/doctype/patient_service_unit/patient_service_unit.js b/erpnext/healthcare/doctype/patient_service_unit/patient_service_unit.js new file mode 100644 index 0000000000..197b4e5dbc --- /dev/null +++ b/erpnext/healthcare/doctype/patient_service_unit/patient_service_unit.js @@ -0,0 +1,15 @@ +// Copyright (c) 2017, earthians and contributors +// For license information, please see license.txt + +frappe.ui.form.on('Patient Service Unit', { +}); + +// get query select patient service unit +cur_frm.fields_dict['parent_patient_service_unit'].get_query = function(doc) { + return{ + filters:[ + ['Patient Service Unit', 'is_group', '=', 1], + ['Patient Service Unit', 'name', '!=', doc.patient_service_unit_name] + ] + }; +}; diff --git a/erpnext/healthcare/doctype/patient_service_unit/patient_service_unit.json b/erpnext/healthcare/doctype/patient_service_unit/patient_service_unit.json new file mode 100644 index 0000000000..0ca1a53e76 --- /dev/null +++ b/erpnext/healthcare/doctype/patient_service_unit/patient_service_unit.json @@ -0,0 +1,358 @@ +{ + "allow_copy": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 1, + "autoname": "field:patient_service_unit_name", + "beta": 1, + "creation": "2016-09-21 13:48:14.731437", + "custom": 0, + "description": "Patinet Service Unit", + "docstatus": 0, + "doctype": "DocType", + "document_type": "Setup", + "editable_grid": 1, + "fields": [ + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "patient_service_unit_name", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 1, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Service Unit", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 1, + "collapsible": 0, + "columns": 0, + "fieldname": "parent_patient_service_unit", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 1, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Parent Service Unit", + "length": 0, + "no_copy": 0, + "options": "Patient Service Unit", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 1, + "collapsible": 0, + "columns": 0, + "fieldname": "is_group", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Is Group", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 1, + "collapsible": 0, + "columns": 0, + "fieldname": "overlap_appointments", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Allow Overlap", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "company", + "fieldtype": "Link", + "hidden": 1, + "ignore_user_permissions": 1, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Company", + "length": 0, + "no_copy": 1, + "options": "Company", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 1, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "lft", + "fieldtype": "Int", + "hidden": 1, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "lft", + "length": 0, + "no_copy": 1, + "permlevel": 0, + "precision": "", + "print_hide": 1, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "rgt", + "fieldtype": "Int", + "hidden": 1, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "rgt", + "length": 0, + "no_copy": 1, + "permlevel": 0, + "precision": "", + "print_hide": 1, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "old_parent", + "fieldtype": "Link", + "hidden": 1, + "ignore_user_permissions": 1, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Old Parent", + "length": 0, + "no_copy": 1, + "options": "Patient Service Unit", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 1, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + } + ], + "has_web_view": 0, + "hide_heading": 0, + "hide_toolbar": 0, + "idx": 0, + "image_view": 0, + "in_create": 0, + "is_submittable": 0, + "issingle": 0, + "istable": 0, + "max_attachments": 0, + "modified": "2018-03-07 13:25:51.163029", + "modified_by": "Administrator", + "module": "Healthcare", + "name": "Patient Service Unit", + "name_case": "", + "owner": "Administrator", + "permissions": [ + { + "amend": 0, + "apply_user_permissions": 1, + "cancel": 0, + "create": 0, + "delete": 0, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Nursing User", + "set_user_permissions": 0, + "share": 1, + "submit": 0, + "user_permission_doctypes": "[\"Service Unit\"]", + "write": 0 + }, + { + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Medical Administrator", + "set_user_permissions": 0, + "share": 1, + "submit": 0, + "write": 1 + }, + { + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 1, + "delete": 0, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Physician", + "set_user_permissions": 0, + "share": 1, + "submit": 0, + "write": 1 + } + ], + "quick_entry": 1, + "read_only": 0, + "read_only_onload": 0, + "restrict_to_domain": "Healthcare", + "search_fields": "patient_service_unit_name", + "show_name_in_global_search": 0, + "sort_field": "modified", + "sort_order": "DESC", + "title_field": "patient_service_unit_name", + "track_changes": 1, + "track_seen": 0 +} \ No newline at end of file diff --git a/erpnext/healthcare/doctype/patient_service_unit/patient_service_unit.py b/erpnext/healthcare/doctype/patient_service_unit/patient_service_unit.py new file mode 100644 index 0000000000..6c177d82d2 --- /dev/null +++ b/erpnext/healthcare/doctype/patient_service_unit/patient_service_unit.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2017, earthians and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals + +from frappe.utils.nestedset import NestedSet + +class PatientServiceUnit(NestedSet): + nsm_parent_field = 'parent_patient_service_unit' + + def on_update(self): + super(PatientServiceUnit, self).on_update() + self.validate_one_root() diff --git a/erpnext/healthcare/doctype/patient_service_unit/patient_service_unit_tree.js b/erpnext/healthcare/doctype/patient_service_unit/patient_service_unit_tree.js new file mode 100644 index 0000000000..0b03f2db8b --- /dev/null +++ b/erpnext/healthcare/doctype/patient_service_unit/patient_service_unit_tree.js @@ -0,0 +1,3 @@ +frappe.treeview_settings["Patient Service Unit"] = { + ignore_fields:["parent_patient_service_unit"] +}; diff --git a/erpnext/healthcare/doctype/patient_service_unit/test_patient_service_unit.js b/erpnext/healthcare/doctype/patient_service_unit/test_patient_service_unit.js new file mode 100644 index 0000000000..320388a1fd --- /dev/null +++ b/erpnext/healthcare/doctype/patient_service_unit/test_patient_service_unit.js @@ -0,0 +1,23 @@ +/* eslint-disable */ +// rename this file from _test_[name] to test_[name] to activate +// and remove above this line + +QUnit.test("test: Patient Service Unit", function (assert) { + let done = assert.async(); + + // number of asserts + assert.expect(1); + + frappe.run_serially([ + // insert a new Patient Service Unit + () => frappe.tests.make('Patient Service Unit', [ + // values to be set + {key: 'value'} + ]), + () => { + assert.equal(cur_frm.doc.key, 'value'); + }, + () => done() + ]); + +}); diff --git a/erpnext/healthcare/doctype/patient_service_unit/test_patient_service_unit.py b/erpnext/healthcare/doctype/patient_service_unit/test_patient_service_unit.py new file mode 100644 index 0000000000..ceb49fd4c6 --- /dev/null +++ b/erpnext/healthcare/doctype/patient_service_unit/test_patient_service_unit.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2017, earthians and Contributors +# See license.txt +from __future__ import unicode_literals +import unittest + +class TestPatientServiceUnit(unittest.TestCase): + pass diff --git a/erpnext/healthcare/doctype/physician/physician.js b/erpnext/healthcare/doctype/physician/physician.js index c224b5d36e..6ce01991f3 100755 --- a/erpnext/healthcare/doctype/physician/physician.js +++ b/erpnext/healthcare/doctype/physician/physician.js @@ -19,6 +19,13 @@ frappe.ui.form.on('Physician', { if(!frm.is_new()) { frappe.contacts.render_address_and_contact(frm); } + frm.set_query("service_unit", "physician_schedules", function(){ + return { + filters: { + "is_group": false, + } + }; + }); } }); diff --git a/erpnext/healthcare/doctype/physician/physician.json b/erpnext/healthcare/doctype/physician/physician.json index 1d9794e6de..e29561e91e 100644 --- a/erpnext/healthcare/doctype/physician/physician.json +++ b/erpnext/healthcare/doctype/physician/physician.json @@ -435,45 +435,14 @@ "set_only_once": 0, "unique": 0 }, - { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 1, - "collapsible": 0, - "columns": 0, - "fieldname": "physician_schedule", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 1, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Physician Schedule", - "length": 0, - "no_copy": 0, - "options": "Physician Schedule", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, { "allow_bulk_edit": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, "columns": 0, - "fieldname": "column_break_17", - "fieldtype": "Column Break", + "fieldname": "physician_schedules", + "fieldtype": "Table", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, @@ -481,39 +450,10 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, + "label": "Physician Schedules", "length": 0, "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, - { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "description": "In minutes", - "fieldname": "time_per_appointment", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Time per Appointment", - "length": 0, - "no_copy": 0, + "options": "Physician Service Unit Schedule", "permlevel": 0, "precision": "", "print_hide": 0, @@ -811,7 +751,7 @@ "istable": 0, "max_attachments": 0, "modified": "2018-01-19 15:25:43.166877", - "modified_by": "jams@hcf.com", + "modified_by": "Administrator", "module": "Healthcare", "name": "Physician", "name_case": "", diff --git a/erpnext/healthcare/doctype/physician/physician.py b/erpnext/healthcare/doctype/physician/physician.py index 4d035d39f6..eb03083a49 100644 --- a/erpnext/healthcare/doctype/physician/physician.py +++ b/erpnext/healthcare/doctype/physician/physician.py @@ -20,7 +20,6 @@ class Physician(Document): [cstr(self.get(f)).strip() for f in ["first_name","middle_name","last_name"]])) def validate(self): - self.validate_schedule_and_time() validate_party_accounts(self) if self.user_id: @@ -37,15 +36,6 @@ class Physician(Document): frappe.permissions.remove_user_permission( "Physician", self.name, existing_user_id) - def validate_schedule_and_time(self): - if (self.physician_schedule or self.time_per_appointment) and \ - not (self.physician_schedule and self.time_per_appointment): - frappe.msgprint( - _('Both "Physician Schedule" and Time Per Appointment" must be set for Dr {0}').format( - self.first_name), - title='Error', raise_exception=1, indicator='red' - ) - def on_update(self): if self.user_id: frappe.permissions.add_user_permission("Physician", self.name, self.user_id) diff --git a/erpnext/healthcare/doctype/physician/test_physician.py b/erpnext/healthcare/doctype/physician/test_physician.py index 4bd497a4e9..2fbf5741cf 100644 --- a/erpnext/healthcare/doctype/physician/test_physician.py +++ b/erpnext/healthcare/doctype/physician/test_physician.py @@ -12,23 +12,6 @@ class TestPhysician(unittest.TestCase): def tearDown(self): frappe.delete_doc_if_exists('Physician', '_Testdoctor2', force=1) - def test_schedule_and_time(self): - physician = frappe.new_doc('Physician') - physician.first_name = '_Testdoctor2' - physician.physician_schedule = '_Testdoctor2 Schedule' - - self.assertRaises(frappe.ValidationError, physician.insert) - - physician.physician_schedule = '' - physician.time_per_appointment = 15 - - self.assertRaises(frappe.ValidationError, physician.insert) - - physician.physician_schedule = '_Testdoctor2 Schedule' - physician.time_per_appointment = 15 - - physician.insert() - def test_new_physician_without_schedule(self): physician = frappe.new_doc('Physician') physician.first_name = '_Testdoctor2' diff --git a/erpnext/healthcare/doctype/physician_service_unit_schedule/__init__.py b/erpnext/healthcare/doctype/physician_service_unit_schedule/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/healthcare/doctype/physician_service_unit_schedule/physician_service_unit_schedule.json b/erpnext/healthcare/doctype/physician_service_unit_schedule/physician_service_unit_schedule.json new file mode 100644 index 0000000000..69fe7b3104 --- /dev/null +++ b/erpnext/healthcare/doctype/physician_service_unit_schedule/physician_service_unit_schedule.json @@ -0,0 +1,103 @@ +{ + "allow_copy": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 0, + "beta": 1, + "creation": "2017-11-16 12:19:17.163786", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "editable_grid": 1, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "schedule", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Schedule", + "length": 0, + "no_copy": 0, + "options": "Physician Schedule", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "service_unit", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Service Unit", + "length": 0, + "no_copy": 0, + "options": "Patient Service Unit", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + } + ], + "has_web_view": 0, + "hide_heading": 0, + "hide_toolbar": 0, + "idx": 0, + "image_view": 0, + "in_create": 0, + "is_submittable": 0, + "issingle": 0, + "istable": 1, + "max_attachments": 0, + "modified": "2017-12-27 10:57:42.301295", + "modified_by": "Administrator", + "module": "Healthcare", + "name": "Physician Service Unit Schedule", + "name_case": "", + "owner": "Administrator", + "permissions": [], + "quick_entry": 1, + "read_only": 0, + "read_only_onload": 0, + "show_name_in_global_search": 0, + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1, + "track_seen": 0 +} \ No newline at end of file diff --git a/erpnext/healthcare/doctype/physician_service_unit_schedule/physician_service_unit_schedule.py b/erpnext/healthcare/doctype/physician_service_unit_schedule/physician_service_unit_schedule.py new file mode 100644 index 0000000000..7aaec4de13 --- /dev/null +++ b/erpnext/healthcare/doctype/physician_service_unit_schedule/physician_service_unit_schedule.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +from frappe.model.document import Document + +class PhysicianServiceUnitSchedule(Document): + pass diff --git a/erpnext/patches.txt b/erpnext/patches.txt index c2c565d544..e049a81d29 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -504,6 +504,7 @@ execute:frappe.delete_doc('DocType', 'Production Planning Tool', ignore_missing= erpnext.patches.v10_0.migrate_daily_work_summary_settings_to_daily_work_summary_group erpnext.patches.v10_0.add_default_cash_flow_mappers erpnext.patches.v11_0.make_quality_inspection_template +erpnext.patches.v10_0.remove_and_copy_fields_in_physician erpnext.patches.v10_0.update_status_for_multiple_source_in_po erpnext.patches.v10_0.set_auto_created_serial_no_in_stock_entry erpnext.patches.v10_0.update_territory_and_customer_group diff --git a/erpnext/patches/v10_0/remove_and_copy_fields_in_physician.py b/erpnext/patches/v10_0/remove_and_copy_fields_in_physician.py new file mode 100644 index 0000000000..bf286449c4 --- /dev/null +++ b/erpnext/patches/v10_0/remove_and_copy_fields_in_physician.py @@ -0,0 +1,12 @@ +import frappe + +def execute(): + if frappe.db.exists("DocType", "Physician"): + frappe.reload_doc("healthcare", "doctype", "physician") + frappe.reload_doc("healthcare", "doctype", "physician_service_unit_schedule") + if frappe.db.has_column('Physician', 'physician_schedule'): + for doc in frappe.get_all('Physician'): + _doc = frappe.get_doc('Physician', doc.name) + if _doc.physician_schedule: + _doc.append('physician_schedules', {'schedule': _doc.physician_schedule}) + _doc.save() From 908289d40ab033e416c154d70951d7dbe650de26 Mon Sep 17 00:00:00 2001 From: Achilles Rasquinha Date: Thu, 8 Mar 2018 13:10:51 +0530 Subject: [PATCH 45/50] [FIX] filter to list --- erpnext/accounts/general_ledger.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py index 03a06cc5f2..0199e7d48a 100644 --- a/erpnext/accounts/general_ledger.py +++ b/erpnext/accounts/general_ledger.py @@ -65,6 +65,8 @@ def merge_similar_entries(gl_map): # filter zero debit and credit entries merged_gl_map = filter(lambda x: flt(x.debit, 9)!=0 or flt(x.credit, 9)!=0, merged_gl_map) + merged_gl_map = list(merged_gl_map) + return merged_gl_map def check_if_in_list(gle, gl_map): From 987934d8ee9992d4a432d8da14227a486d2022b8 Mon Sep 17 00:00:00 2001 From: Achilles Rasquinha Date: Thu, 8 Mar 2018 13:16:08 +0530 Subject: [PATCH 46/50] fixed tabs --- .../doctype/patient_appointment/patient_appointment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py index 626774bd58..c715b1b24a 100755 --- a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py +++ b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py @@ -334,4 +334,4 @@ def get_events(start, end, filters=None): {"start": start, "end": end}, as_dict=True, update={"allDay": 0}) for item in data: item.end = item.start + datetime.timedelta(minutes = item.duration) - return data + return data \ No newline at end of file From e96a5770f228668354146303c886a5978b1c6c69 Mon Sep 17 00:00:00 2001 From: Achilles Rasquinha Date: Thu, 8 Mar 2018 13:16:29 +0530 Subject: [PATCH 47/50] fixed tabs --- .../doctype/patient_appointment/patient_appointment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py index 90d4d0ea20..58794e4044 100755 --- a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py +++ b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py @@ -326,4 +326,4 @@ def get_events(start, end, filters=None): {"start": start, "end": end}, as_dict=True, update={"allDay": 0}) for item in data: item.end = item.start + datetime.timedelta(minutes = item.duration) - return data + return data \ No newline at end of file From 9efd6e80d2734d3bdced47d0ddf85a0a81eb65f3 Mon Sep 17 00:00:00 2001 From: Achilles Rasquinha Date: Thu, 8 Mar 2018 13:20:48 +0530 Subject: [PATCH 48/50] fixed tabs --- .../doctype/patient_appointment/patient_appointment.py | 1 + 1 file changed, 1 insertion(+) diff --git a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py index c715b1b24a..b083302659 100755 --- a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py +++ b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py @@ -122,6 +122,7 @@ def get_availability_data(date, physician): if available_slots: appointments = [] + if schedule.service_unit: slot_name = schedule.schedule+" - "+schedule.service_unit allow_overlap = frappe.get_value('Patient Service Unit', schedule.service_unit, 'overlap_appointments') From d2eec91b2cf2b81eac8c8e9d43d073f3b3e2abf2 Mon Sep 17 00:00:00 2001 From: Ameya Shenoy Date: Thu, 8 Mar 2018 13:27:11 +0530 Subject: [PATCH 49/50] indentation fix --- .../doctype/patient_appointment/patient_appointment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py index b083302659..926dc28373 100755 --- a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py +++ b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py @@ -123,7 +123,7 @@ def get_availability_data(date, physician): if available_slots: appointments = [] - if schedule.service_unit: + if schedule.service_unit: slot_name = schedule.schedule+" - "+schedule.service_unit allow_overlap = frappe.get_value('Patient Service Unit', schedule.service_unit, 'overlap_appointments') if allow_overlap: From 87dab14576f4fde8e8fc59d5271f463a9900359a Mon Sep 17 00:00:00 2001 From: Achilles Rasquinha Date: Thu, 8 Mar 2018 14:21:48 +0530 Subject: [PATCH 50/50] removed has_key --- erpnext/controllers/taxes_and_totals.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py index 008ce6e1e3..047ef4a40e 100644 --- a/erpnext/controllers/taxes_and_totals.py +++ b/erpnext/controllers/taxes_and_totals.py @@ -157,7 +157,7 @@ class calculate_taxes_and_totals(object): return current_tax_fraction def _get_tax_rate(self, tax, item_tax_map): - if item_tax_map.has_key(tax.account_head): + if tax.account_head in item_tax_map: return flt(item_tax_map.get(tax.account_head), self.doc.precision("rate", tax)) else: return tax.rate