From 3b04b030eb29d3a28c34a181968bf68fdbeb7f4c Mon Sep 17 00:00:00 2001 From: Sagar Vora Date: Wed, 17 May 2017 19:16:27 +0530 Subject: [PATCH 01/16] Fix cost center not getting pulled in DN and SINV (#8878) * Fixes for getting selling cost center instead of company's default cost center. * fix error in update_item --- .../doctype/sales_invoice/sales_invoice.py | 17 +++++++++-------- .../selling/doctype/sales_order/sales_order.py | 9 +++++++-- .../doctype/delivery_note/delivery_note.py | 3 ++- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index 285722b1ad..449a97522f 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -330,7 +330,7 @@ class SalesInvoice(SellingController): frappe.throw(_("Debit To account must be a Receivable account")) self.party_account_currency = account.account_currency - + def clear_unallocated_mode_of_payments(self): self.set("payments", self.get("payments", {"amount": ["not in", [0, None, ""]]})) @@ -551,7 +551,7 @@ class SalesInvoice(SellingController): def make_gl_entries(self, gl_entries=None, repost_future_gle=True, from_repost=False): if not self.grand_total: return - + if not gl_entries: gl_entries = self.get_gl_entries() @@ -697,7 +697,7 @@ class SalesInvoice(SellingController): else payment_mode.amount }, payment_mode_account_currency) ) - + def make_gle_for_change_amount(self, gl_entries): if cint(self.is_pos) and self.change_amount: if self.account_for_change_amount: @@ -714,7 +714,7 @@ class SalesInvoice(SellingController): "against_voucher_type": self.doctype }, self.party_account_currency) ) - + gl_entries.append( self.get_gl_dict({ "account": self.account_for_change_amount, @@ -724,7 +724,7 @@ class SalesInvoice(SellingController): ) else: frappe.throw(_("Select change amount account"), title="Mandatory Field") - + def make_write_off_gl_entry(self, gl_entries): # write off entries, applicable if only pos if self.write_off_account and self.write_off_amount: @@ -808,7 +808,7 @@ def make_delivery_note(source_name, target_doc=None): def update_item(source_doc, target_doc, source_parent): target_doc.qty = flt(source_doc.qty) - flt(source_doc.delivered_qty) target_doc.stock_qty = target_doc.qty * flt(source_doc.conversion_factor) - + target_doc.base_amount = target_doc.qty * flt(source_doc.base_rate) target_doc.amount = target_doc.qty * flt(source_doc.rate) @@ -826,7 +826,8 @@ def make_delivery_note(source_name, target_doc=None): "parent": "against_sales_invoice", "serial_no": "serial_no", "sales_order": "against_sales_order", - "so_detail": "so_detail" + "so_detail": "so_detail", + "cost_center": "cost_center" }, "postprocess": update_item, "condition": lambda doc: doc.delivered_by_supplier!=1 @@ -855,4 +856,4 @@ def make_sales_return(source_name, target_doc=None): def set_account_for_mode_of_payment(self): for data in self.payments: if not data.account: - data.account = get_bank_cash_account(data.mode_of_payment, self.company).get("account") \ No newline at end of file + data.account = get_bank_cash_account(data.mode_of_payment, self.company).get("account") diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index f5bc7dbc04..c55dc9fb3d 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -175,7 +175,7 @@ class SalesOrder(SellingController): self.update_prevdoc_status('cancel') frappe.db.set(self, 'status', 'Cancelled') - + def update_project(self): project_list = [] if self.project: @@ -183,7 +183,7 @@ class SalesOrder(SellingController): project.flags.dont_sync_tasks = True project.update_sales_costing() project.save() - project_list.append(self.project) + project_list.append(self.project) def check_credit_limit(self): from erpnext.selling.doctype.customer.customer import check_credit_limit @@ -427,6 +427,11 @@ def make_delivery_note(source_name, target_doc=None): target.amount = (flt(source.qty) - flt(source.delivered_qty)) * flt(source.rate) target.qty = flt(source.qty) - flt(source.delivered_qty) + item = frappe.db.get_value("Item", target.item_code, ["item_group", "selling_cost_center"], as_dict=1) + target.cost_center = frappe.db.get_value("Project", source_parent.project, "cost_center") \ + or item.selling_cost_center \ + or frappe.db.get_value("Item Group", item.item_group, "default_cost_center") + target_doc = get_mapped_doc("Sales Order", source_name, { "Sales Order": { "doctype": "Delivery Note", diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py index 1c730ffd08..e7bf827ae2 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.py +++ b/erpnext/stock/doctype/delivery_note/delivery_note.py @@ -398,7 +398,8 @@ def make_sales_invoice(source_name, target_doc=None): "parent": "delivery_note", "so_detail": "so_detail", "against_sales_order": "sales_order", - "serial_no": "serial_no" + "serial_no": "serial_no", + "cost_center": "cost_center" }, "postprocess": update_item, "filter": lambda d: abs(d.qty) - abs(invoiced_qty_map.get(d.name, 0))<=0 From cf7df5d10681f71e227728633bbc14581a380013 Mon Sep 17 00:00:00 2001 From: tundebabzy Date: Wed, 17 May 2017 14:47:04 +0100 Subject: [PATCH 02/16] fixes #8883 (#8885) --- erpnext/accounts/doctype/asset/asset.js | 2 +- erpnext/docs/user/manual/en/accounts/managing-fixed-assets.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/accounts/doctype/asset/asset.js b/erpnext/accounts/doctype/asset/asset.js index 664ed4da25..a1b3dd3bbf 100644 --- a/erpnext/accounts/doctype/asset/asset.js +++ b/erpnext/accounts/doctype/asset/asset.js @@ -45,7 +45,7 @@ frappe.ui.form.on('Asset', { erpnext.asset.scrap_asset(frm); }); - frm.add_custom_button("Sale Asset", function() { + frm.add_custom_button("Sell Asset", function() { erpnext.asset.make_sales_invoice(frm); }); diff --git a/erpnext/docs/user/manual/en/accounts/managing-fixed-assets.md b/erpnext/docs/user/manual/en/accounts/managing-fixed-assets.md index efbe95fb25..e82ec92772 100644 --- a/erpnext/docs/user/manual/en/accounts/managing-fixed-assets.md +++ b/erpnext/docs/user/manual/en/accounts/managing-fixed-assets.md @@ -64,7 +64,7 @@ On submission of the invoice, the "Fixed Asset Account" will be debited and paya ## Sell an Asset -To sale an asset, open the asset record and create a Sales Invoice by clicking on "Sale Asset". On submission of the Sales Invoice, following entries will take place: +To sell an asset, open the asset record and create a Sales Invoice by clicking on "Sell Asset". On submission of the Sales Invoice, following entries will take place: - "Receivable Account" (Debtors) will be debited by the sales amount. - "Fixed Asset Account" will be credited by the purchase amount of asset. From c55b805b666fd82923940a55e1dfd5d2c7cc5d4e Mon Sep 17 00:00:00 2001 From: Ayush Shukla Date: Wed, 17 May 2017 19:18:26 +0530 Subject: [PATCH 03/16] [minor] process_payroll_create salary fixed, fixes frappe/erpnext#8853 (#8881) * [minor] process_payroll_create salary fixed * [minor] indentation fix --- erpnext/hr/doctype/process_payroll/process_payroll.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/hr/doctype/process_payroll/process_payroll.py b/erpnext/hr/doctype/process_payroll/process_payroll.py index 915985ca4f..7ca94b8628 100644 --- a/erpnext/hr/doctype/process_payroll/process_payroll.py +++ b/erpnext/hr/doctype/process_payroll/process_payroll.py @@ -112,14 +112,14 @@ class ProcessPayroll(Document): def create_log(self, ss_list): - if not ss_list: + if not ss_list or len(ss_list) < 1: log = "

" + _("No employee for the above selected criteria OR salary slip already created") + "

" else: log = frappe.render_template("templates/includes/salary_slip_log.html", dict(ss_list=ss_list, keys=sorted(ss_list[0].keys()), title=_('Created Salary Slips'))) - return log + return log def get_sal_slip_list(self, ss_status, as_dict=False): """ From 76d965f340710fe628da2e20e2d716d76b05514c Mon Sep 17 00:00:00 2001 From: Ayush Shukla Date: Wed, 17 May 2017 19:18:47 +0530 Subject: [PATCH 04/16] [minor]-Changed receivable to payable (#8880) --- erpnext/buying/doctype/supplier/supplier.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/buying/doctype/supplier/supplier.json b/erpnext/buying/doctype/supplier/supplier.json index a590f372ec..746dd223e5 100644 --- a/erpnext/buying/doctype/supplier/supplier.json +++ b/erpnext/buying/doctype/supplier/supplier.json @@ -688,7 +688,7 @@ "collapsible": 0, "columns": 0, "depends_on": "", - "description": "Mention if non-standard receivable account", + "description": "Mention if non-standard payable account", "fieldname": "accounts", "fieldtype": "Table", "hidden": 0, @@ -850,7 +850,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-05-05 04:24:03.884380", + "modified": "2017-05-17 12:21:21.218428", "modified_by": "Administrator", "module": "Buying", "name": "Supplier", From 0952df29dce359242fcbc70b122b50bdd893a942 Mon Sep 17 00:00:00 2001 From: Felipe Orellana Date: Wed, 17 May 2017 09:50:01 -0400 Subject: [PATCH 05/16] Update product.py (#8877) Hi! If template_item_code is None on line 71-72 the query will return ALL "Item Price" records irrespective of item_code, potentially causing the wrong price list rate to be used. Noticed this behavior when fetching product price for a group of items without "variant_of" data. --- erpnext/shopping_cart/product.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/shopping_cart/product.py b/erpnext/shopping_cart/product.py index d7afc3bfba..1999a4aa43 100644 --- a/erpnext/shopping_cart/product.py +++ b/erpnext/shopping_cart/product.py @@ -67,7 +67,7 @@ def get_price(item_code, template_item_code, price_list, qty=1): price = frappe.get_all("Item Price", fields=["price_list_rate", "currency"], filters={"price_list": price_list, "item_code": item_code}) - if not price: + if template_item_code and not price: price = frappe.get_all("Item Price", fields=["price_list_rate", "currency"], filters={"price_list": price_list, "item_code": template_item_code}) From 3d6567411de4cf08dde1c3d933b85cbac99ca8f2 Mon Sep 17 00:00:00 2001 From: Julian Robbins Date: Wed, 17 May 2017 15:06:15 +0100 Subject: [PATCH 06/16] Spelling improvmement (#8866) --- erpnext/docs/user/manual/en/selling/setup/sales-partner.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/docs/user/manual/en/selling/setup/sales-partner.md b/erpnext/docs/user/manual/en/selling/setup/sales-partner.md index 1174969af4..b8762056fb 100644 --- a/erpnext/docs/user/manual/en/selling/setup/sales-partner.md +++ b/erpnext/docs/user/manual/en/selling/setup/sales-partner.md @@ -1,6 +1,6 @@ People who assist you in getting business are termed as Sales Partners. Sales Partners can be represented by different names in ERPNext. You can call them Channel Partner, Distributor, Dealer, Agent, Retailer, Implementation Partner, Reseller etc. -For each Sales Partner, you can define commission offer to them. When Sales Partner is selected in transactions, there commission is calculated over Net Total of Sales Order/Invoice or Delivery Note. +For each Sales Partner, you can define commission offer to them. When Sales Partner is selected in transactions, their commission is calculated over Net Total of Sales Order/Invoice or Delivery Note. You can track Sales Personwise commission in the report under Selling module. From f7a9023fda8aa51e3dd64718adb45b375512f4e3 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Wed, 17 May 2017 19:37:31 +0530 Subject: [PATCH 07/16] Show empty state when no students are found in student attendance tool (#8862) - fixes #8839 --- .../student_attendance_tool.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/erpnext/schools/doctype/student_attendance_tool/student_attendance_tool.js b/erpnext/schools/doctype/student_attendance_tool/student_attendance_tool.js index b092a3f2ee..6f8c6cd7da 100644 --- a/erpnext/schools/doctype/student_attendance_tool/student_attendance_tool.js +++ b/erpnext/schools/doctype/student_attendance_tool/student_attendance_tool.js @@ -47,7 +47,7 @@ frappe.ui.form.on('Student Attendance Tool', { frm.students_area = $('
') .appendTo(frm.fields_dict.students_html.wrapper); } - console.log(students); + students = students || []; frm.students_editor = new schools.StudentsEditor(frm, frm.students_area, students) } }); @@ -57,7 +57,11 @@ schools.StudentsEditor = Class.extend({ init: function(frm, wrapper, students) { this.wrapper = wrapper; this.frm = frm; - this.make(frm, students); + if(students.length > 0) { + this.make(frm, students); + } else { + this.show_empty_state(); + } }, make: function(frm, students) { var me = this; @@ -159,5 +163,13 @@ schools.StudentsEditor = Class.extend({ }); $(htmls.join("")).appendTo(me.wrapper); + }, + + show_empty_state: function() { + $(this.wrapper).html( + `
+ ${__("No Students in")} ${this.frm.doc.student_group} +
` + ); } }); \ No newline at end of file From f69ffeb0b46365098648bc110062deaee6751157 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Wed, 17 May 2017 19:40:40 +0530 Subject: [PATCH 08/16] [fix] if rate is greater than price_list_rate, set margin instead of discount. Fixes frappe/erpnext#6468 (#8856) --- erpnext/public/js/controllers/transaction.js | 21 +++++++++++++++++++- erpnext/selling/sales_common.js | 8 -------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index 6539530292..44bf21da3e 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -6,12 +6,31 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ this._super(); frappe.ui.form.on(this.frm.doctype + " Item", "rate", function(frm, cdt, cdn) { var item = frappe.get_doc(cdt, cdn); + var has_margin_field = frappe.meta.has_field(cdt, 'margin_type'); + frappe.model.round_floats_in(item, ["rate", "price_list_rate"]); if(item.price_list_rate) { - item.discount_percentage = flt((1 - item.rate / item.price_list_rate) * 100.0, precision("discount_percentage", item)); + if(item.rate > item.price_list_rate && has_margin_field) { + // if rate is greater than price_list_rate, set margin + // or set discount + item.discount_percentage = 0; + item.margin_type = 'Percentage'; + item.margin_rate_or_amount = flt(Math.abs(1 - item.rate / item.price_list_rate) * 100.0, + precision("discount_percentage", item)); + item.rate_with_margin = item.rate; + } else { + item.discount_percentage = flt((1 - item.rate / item.price_list_rate) * 100.0, + precision("discount_percentage", item)); + item.margin_type = ''; + item.margin_rate_or_amount = 0; + item.rate_with_margin = 0; + } } else { item.discount_percentage = 0.0; + item.margin_type = ''; + item.margin_rate_or_amount = 0; + item.rate_with_margin = 0; } cur_frm.cscript.set_gross_profit(item); diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js index da9c771b05..715434384b 100644 --- a/erpnext/selling/sales_common.js +++ b/erpnext/selling/sales_common.js @@ -337,14 +337,6 @@ erpnext.selling.SellingController = erpnext.TransactionController.extend({ }) }, - rate: function(doc, cdt, cdn){ - // if user changes the rate then set margin Rate or amount to 0 - item = locals[cdt][cdn]; - item.margin_type = ""; - item.margin_rate_or_amount = 0.0; - cur_frm.refresh_fields(); - }, - margin_rate_or_amount: function(doc, cdt, cdn) { // calculated the revised total margin and rate on margin rate changes item = locals[cdt][cdn]; From e4f80a6eaa57f6668bc649fb451143b42e8b0ad3 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 17 May 2017 19:41:39 +0530 Subject: [PATCH 09/16] Open lost opportunity again if quotation made against it (#8854) --- erpnext/controllers/status_updater.py | 2 +- .../crm/doctype/opportunity/opportunity.py | 21 ++++++++++++++----- .../selling/doctype/quotation/quotation.py | 4 +++- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py index 403430606f..cede8f4d34 100644 --- a/erpnext/controllers/status_updater.py +++ b/erpnext/controllers/status_updater.py @@ -19,7 +19,7 @@ status_map = { ["Converted", "has_customer"], ], "Opportunity": [ - ["Quotation", "has_quotation"], + ["Quotation", "has_active_quotation"], ["Converted", "has_ordered_quotation"], ["Lost", "eval:self.status=='Lost'"], ["Lost", "has_lost_quotation"], diff --git a/erpnext/crm/doctype/opportunity/opportunity.py b/erpnext/crm/doctype/opportunity/opportunity.py index 3c553a5da8..8a21e7c746 100644 --- a/erpnext/crm/doctype/opportunity/opportunity.py +++ b/erpnext/crm/doctype/opportunity/opportunity.py @@ -84,20 +84,31 @@ class Opportunity(TransactionBase): def on_trash(self): self.delete_events() - def has_quotation(self): - return frappe.db.get_value("Quotation Item", {"prevdoc_docname": self.name, "docstatus": 1}) + def has_active_quotation(self): + return frappe.db.sql(""" + select q.name + from `tabQuotation` q, `tabQuotation Item` qi + where q.name = qi.parent and q.docstatus=1 and qi.prevdoc_docname =%s + and q.status not in ('Lost', 'Closed')""", self.name) def has_ordered_quotation(self): - return frappe.db.sql("""select q.name from `tabQuotation` q, `tabQuotation Item` qi - where q.name = qi.parent and q.docstatus=1 and qi.prevdoc_docname =%s and q.status = 'Ordered'""", self.name) + return frappe.db.sql(""" + select q.name + from `tabQuotation` q, `tabQuotation Item` qi + where q.name = qi.parent and q.docstatus=1 and qi.prevdoc_docname =%s + and q.status = 'Ordered'""", self.name) def has_lost_quotation(self): - return frappe.db.sql(""" + lost_quotation = frappe.db.sql(""" select q.name from `tabQuotation` q, `tabQuotation Item` qi where q.name = qi.parent and q.docstatus=1 and qi.prevdoc_docname =%s and q.status = 'Lost' """, self.name) + if lost_quotation: + if self.has_active_quotation(): + return False + return True def validate_cust_name(self): if self.customer: diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py index b5b24f8c75..b102e1d699 100644 --- a/erpnext/selling/doctype/quotation/quotation.py +++ b/erpnext/selling/doctype/quotation/quotation.py @@ -44,7 +44,9 @@ class Quotation(SellingController): def update_opportunity(self): for opportunity in list(set([d.prevdoc_docname for d in self.get("items")])): if opportunity: - frappe.get_doc("Opportunity", opportunity).set_status(update=True) + opp = frappe.get_doc("Opportunity", opportunity) + opp.status = None + opp.set_status(update=True) def declare_order_lost(self, arg): if not self.has_sales_order(): From 85bfc05efa7a65c122601319c56d8faf3c9c9a9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Rold=C3=A1n?= Date: Wed, 17 May 2017 11:12:04 -0300 Subject: [PATCH 10/16] Fix missing translations (#8871) * Fix missing translations * Fix --- .../salary_register/salary_register.html | 4 +- erpnext/public/js/payment/pos_payment.html | 12 +++--- erpnext/public/js/pos/pos.html | 12 +++--- erpnext/public/js/pos/pos_item.html | 2 +- erpnext/public/js/pos/pos_selected_item.html | 10 ++--- erpnext/templates/generators/item_group.html | 6 +-- .../includes/navbar/navbar_items.html | 2 +- .../includes/projects/project_tasks.html | 2 +- .../includes/projects/project_timesheets.html | 2 +- erpnext/templates/pages/cart.html | 2 +- erpnext/templates/pages/task_info.html | 40 +++++++++---------- erpnext/templates/pages/timelog_info.html | 16 ++++---- 12 files changed, 55 insertions(+), 55 deletions(-) diff --git a/erpnext/hr/report/salary_register/salary_register.html b/erpnext/hr/report/salary_register/salary_register.html index 2a9cd3ebdb..d7bf6a78bc 100644 --- a/erpnext/hr/report/salary_register/salary_register.html +++ b/erpnext/hr/report/salary_register/salary_register.html @@ -2,7 +2,7 @@ {%= frappe.boot.letter_heads[filters.letter_head || frappe.defaults.get_default("letter_head")] %}

{%= __(report.report_name) %}

-
From {%= filters.date_range[0] %} to {%= filters.date_range[1] %}
+
{{ __("From") }} {%= filters.date_range[0] %} {{ __("to") }} {%= filters.date_range[1] %}

@@ -34,4 +34,4 @@ {% } %}
-

Printed On {%= dateutil.str_to_user(dateutil.get_datetime_as_string()) %}

+

{{ __("Printed On") }} {%= dateutil.str_to_user(dateutil.get_datetime_as_string()) %}

diff --git a/erpnext/public/js/payment/pos_payment.html b/erpnext/public/js/payment/pos_payment.html index 7700b24374..185d748aff 100644 --- a/erpnext/public/js/payment/pos_payment.html +++ b/erpnext/public/js/payment/pos_payment.html @@ -1,20 +1,20 @@
-

Total Amount: {%= format_currency(grand_total, currency) %}

+

{{ __("Total Amount") }}: {%= format_currency(grand_total, currency) %}

-

Paid

+

{{ __("Paid") }}

-

Outstanding

{%= format_currency(outstanding_amount, currency) %}

+

{{ __("Outstanding") }}

{%= format_currency(outstanding_amount, currency) %}

-

Change +

{{ __("Change") }}

-

Write off +

{{ __("Write off") }}

@@ -33,7 +33,7 @@
{% } %}
- +
diff --git a/erpnext/public/js/pos/pos.html b/erpnext/public/js/pos/pos.html index e356d8768e..181a41f2d5 100644 --- a/erpnext/public/js/pos/pos.html +++ b/erpnext/public/js/pos/pos.html @@ -17,7 +17,7 @@
-

Tap items to add them here

+

{{ __("Tap items to add them here") }}

@@ -68,7 +68,7 @@
@@ -97,7 +97,7 @@
-

No Customers yet!

+

{{ __("No Customers yet!") }}

@@ -112,7 +112,7 @@
diff --git a/erpnext/public/js/pos/pos_item.html b/erpnext/public/js/pos/pos_item.html index b1d75ae96c..816dc3ac2f 100644 --- a/erpnext/public/js/pos/pos_item.html +++ b/erpnext/public/js/pos/pos_item.html @@ -1,7 +1,7 @@
diff --git a/erpnext/public/js/pos/pos_selected_item.html b/erpnext/public/js/pos/pos_selected_item.html index 65e4ef18b4..a4bc49dfba 100644 --- a/erpnext/public/js/pos/pos_selected_item.html +++ b/erpnext/public/js/pos/pos_selected_item.html @@ -1,22 +1,22 @@
-
Quantity:
+
{{ __("Quantity") }}:
-
Price List Rate:
+
{{ __("Price List Rate") }}:
-
Discount:
+
{{ __("Discount") }}:
-
Price:
+
{{ __("Price") }}:
-
Amount:
+
{{ __("Amount") }}:
\ No newline at end of file diff --git a/erpnext/templates/generators/item_group.html b/erpnext/templates/generators/item_group.html index f0276447d5..d710cb0739 100644 --- a/erpnext/templates/generators/item_group.html +++ b/erpnext/templates/generators/item_group.html @@ -33,14 +33,14 @@
{% if frappe.form_dict.start|int > 0 %} - Prev + {{ __("Prev") }} {% endif %} {% if items|length > page_length %} - Next + {{ __("Next") }} {% endif %}
{% else %} -
No items listed.
+
{{ __("No items listed") }}.
{% endif %}
diff --git a/erpnext/templates/includes/navbar/navbar_items.html b/erpnext/templates/includes/navbar/navbar_items.html index 87dea8f175..faf8adf22b 100644 --- a/erpnext/templates/includes/navbar/navbar_items.html +++ b/erpnext/templates/includes/navbar/navbar_items.html @@ -4,7 +4,7 @@
{% if task.todo %} diff --git a/erpnext/templates/includes/projects/project_timesheets.html b/erpnext/templates/includes/projects/project_timesheets.html index fb44017fa8..3a9aecd251 100644 --- a/erpnext/templates/includes/projects/project_timesheets.html +++ b/erpnext/templates/includes/projects/project_timesheets.html @@ -5,7 +5,7 @@
{{ timesheet.info.name }}
- From {{ frappe.format_date(timesheet.from_time) }} to {{ frappe.format_date(timesheet.to_time) }} + {{ __("From") }} {{ frappe.format_date(timesheet.from_time) }} {{ __("to") }} {{ frappe.format_date(timesheet.to_time) }}
diff --git a/erpnext/templates/pages/cart.html b/erpnext/templates/pages/cart.html index 6cff5b13e2..fb0c05fcdd 100644 --- a/erpnext/templates/pages/cart.html +++ b/erpnext/templates/pages/cart.html @@ -60,7 +60,7 @@ {{doc.terms}}
{% endif %} diff --git a/erpnext/templates/pages/task_info.html b/erpnext/templates/pages/task_info.html index f386ce891a..6cfac28da6 100644 --- a/erpnext/templates/pages/task_info.html +++ b/erpnext/templates/pages/task_info.html @@ -19,9 +19,9 @@
+ {{ __("Update") }} - Cancel + {{ __("Cancel") }}
@@ -36,45 +36,45 @@
- +
- +
- +
- +
- +
- +
- +
@@ -83,22 +83,22 @@
-

Comments

+

{{ __("Comments") }}

{% for comment in comments %}

{{comment.sender_full_name}}: - {{comment.subject}} on {{comment.creation.strftime('%Y-%m-%d')}}

+ {{comment.subject}} {{ __("on") }} {{comment.creation.strftime('%Y-%m-%d')}}

{% endfor %}
- Add Comment + {{ __("Add Comment") }}