From c794ca53fb15cec530ddf3bd66df603c2cd98c89 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Tue, 27 Oct 2015 16:56:22 +0530 Subject: [PATCH 1/8] [fix] delete file records created via item.py even if website_image file didn't exist --- erpnext/patches.txt | 1 + erpnext/patches/v6_6/__init__.py | 1 + erpnext/patches/v6_6/fix_website_image.py | 32 +++++++++++++++++++++++ erpnext/stock/doctype/item/item.py | 16 +++++++----- 4 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 erpnext/patches/v6_6/__init__.py create mode 100644 erpnext/patches/v6_6/fix_website_image.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index b36f74b959b..aec2f26908b 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -228,3 +228,4 @@ erpnext.patches.v6_4.set_user_in_contact erpnext.patches.v6_4.make_image_thumbnail #2015-10-20 erpnext.patches.v6_5.show_in_website_for_template_item erpnext.patches.v6_4.fix_expense_included_in_valuation +erpnext.patches.v6_6.fix_website_image diff --git a/erpnext/patches/v6_6/__init__.py b/erpnext/patches/v6_6/__init__.py new file mode 100644 index 00000000000..baffc488252 --- /dev/null +++ b/erpnext/patches/v6_6/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/erpnext/patches/v6_6/fix_website_image.py b/erpnext/patches/v6_6/fix_website_image.py new file mode 100644 index 00000000000..b3b4cab18ac --- /dev/null +++ b/erpnext/patches/v6_6/fix_website_image.py @@ -0,0 +1,32 @@ +from __future__ import unicode_literals +import frappe +from frappe.utils import encode + +def execute(): + """Fix the File records created via item.py even if the website_image file didn't exist""" + for item in frappe.db.sql_list("""select name from `tabItem` + where website_image is not null and website_image != '' + and website_image like '/files/%' + and exists ( + select name from `tabFile` + where attached_to_doctype='Item' + and attached_to_name=`tabItem`.name + and file_url=`tabItem`.website_image + and (file_name is null or file_name = '') + )"""): + + item = frappe.get_doc("Item", item) + file = frappe.get_doc("File", { + "attached_to_doctype": "Item", + "attached_to_name": item.name, + "file_url": item.website_image + }) + + try: + file.validate_file() + except IOError: + print encode(item.website_image), "does not exist" + file.delete() + item.db_set("website_image", None, update_modified=False) + + diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py index 0f1f0e08085..c62195767b0 100644 --- a/erpnext/stock/doctype/item/item.py +++ b/erpnext/stock/doctype/item/item.py @@ -104,12 +104,16 @@ class Item(WebsiteGenerator): # for CSV import if not file_doc: - file_doc = frappe.get_doc({ - "doctype": "File", - "file_url": self.website_image, - "attached_to_doctype": "Item", - "attached_to_name": self.name - }).insert() + try: + file_doc = frappe.get_doc({ + "doctype": "File", + "file_url": self.website_image, + "attached_to_doctype": "Item", + "attached_to_name": self.name + }).insert() + + except IOError: + self.website_image = None if file_doc: if not file_doc.thumbnail_url: From fd53991dfa0744a57befaac60a57343131d4930e Mon Sep 17 00:00:00 2001 From: Sambhaji Kolate Date: Tue, 27 Oct 2015 17:01:27 +0530 Subject: [PATCH 2/8] [minor] Update Help Video Links in Buying, CRM, Selling #4233 --- erpnext/config/buying.py | 15 +++++++++++++++ erpnext/config/crm.py | 5 +++++ erpnext/config/hr.py | 26 ++++++++++++++++++++++++++ erpnext/config/learn.py | 5 +++++ erpnext/config/manufacturing.py | 10 ++++++++++ erpnext/config/projects.py | 11 +++++++++++ erpnext/config/selling.py | 10 ++++++++++ erpnext/config/stock.py | 24 ++++++++++++++++++++++-- 8 files changed, 104 insertions(+), 2 deletions(-) diff --git a/erpnext/config/buying.py b/erpnext/config/buying.py index 772987202b6..79de83506b8 100644 --- a/erpnext/config/buying.py +++ b/erpnext/config/buying.py @@ -164,6 +164,21 @@ def get_data(): "label": _("Customer and Supplier"), "youtube_id": "anoGi_RpQ20" }, + { + "type": "help", + "label": _("Material Request to Purchase Order"), + "youtube_id": "4TN9kPyfIqM" + }, + { + "type": "help", + "label": _("Purchase Order to Payment"), + "youtube_id": "EK65tLdVUDk" + }, + { + "type": "help", + "label": _("Managing Subcontracting"), + "youtube_id": "ThiMCC2DtKo" + }, ] }, ] diff --git a/erpnext/config/crm.py b/erpnext/config/crm.py index 7b015c75f26..b92bf225ed1 100644 --- a/erpnext/config/crm.py +++ b/erpnext/config/crm.py @@ -146,6 +146,11 @@ def get_data(): "label": _("Lead to Quotation"), "youtube_id": "TxYX4r4JAKA" }, + { + "type": "help", + "label": _("Newsletters"), + "youtube_id": "muLKsCrrDRo" + }, ] }, ] diff --git a/erpnext/config/hr.py b/erpnext/config/hr.py index 72fe8dd90d6..39427667775 100644 --- a/erpnext/config/hr.py +++ b/erpnext/config/hr.py @@ -196,4 +196,30 @@ def get_data(): }, ] }, + { + "label": _("Help"), + "icon": "icon-facetime-video", + "items": [ + { + "type": "help", + "label": _("Setting up Employees"), + "youtube_id": "USfIUdZlUhw" + }, + { + "type": "help", + "label": _("Leave Management"), + "youtube_id": "fc0p_AXebc8" + }, + { + "type": "help", + "label": _("Expense Claims"), + "youtube_id": "5SZHJF--ZFY" + }, + { + "type": "help", + "label": _("Processing Payroll"), + "youtube_id": "apgE-f25Rm0" + }, + ] + } ] diff --git a/erpnext/config/learn.py b/erpnext/config/learn.py index e0f1c06ddd0..6557f521149 100644 --- a/erpnext/config/learn.py +++ b/erpnext/config/learn.py @@ -122,6 +122,11 @@ def get_data(): "label": _("Items and Pricing"), "youtube_id": "qXaEwld4_Ps" }, + { + "type": "help", + "label": _("Item Variants"), + "youtube_id": "OGBETlCzU5o" + }, { "type": "help", "label": _("Opening Stock Balance"), diff --git a/erpnext/config/manufacturing.py b/erpnext/config/manufacturing.py index 5b51b0f9678..1db7945c6d7 100644 --- a/erpnext/config/manufacturing.py +++ b/erpnext/config/manufacturing.py @@ -120,6 +120,16 @@ def get_data(): "label": _("Bill of Materials"), "youtube_id": "hDV0c1OeWLo" }, + { + "type": "help", + "label": _("Production Planning Tool"), + "youtube_id": "CzatSl4zJ2Y" + }, + { + "type": "help", + "label": _("Production Order"), + "youtube_id": "ZotgLyp2YFY" + }, ] } ] diff --git a/erpnext/config/projects.py b/erpnext/config/projects.py index 07149e38b64..78a78ac0519 100644 --- a/erpnext/config/projects.py +++ b/erpnext/config/projects.py @@ -70,4 +70,15 @@ def get_data(): }, ] }, + { + "label": _("Help"), + "icon": "icon-facetime-video", + "items": [ + { + "type": "help", + "label": _("Managing Projects"), + "youtube_id": "egxIGwtoKI4" + }, + ] + }, ] diff --git a/erpnext/config/selling.py b/erpnext/config/selling.py index 62dfe2326db..ba1210e5cae 100644 --- a/erpnext/config/selling.py +++ b/erpnext/config/selling.py @@ -294,6 +294,16 @@ def get_data(): "label": _("Customer and Supplier"), "youtube_id": "anoGi_RpQ20" }, + { + "type": "help", + "label": _("Sales Order to Payment"), + "youtube_id": "7AMq4lqkN4A" + }, + { + "type": "help", + "label": _("Point-of-Sale"), + "youtube_id": "4WkelWkbP_c" + }, ] }, ] diff --git a/erpnext/config/stock.py b/erpnext/config/stock.py index f5ecba0458a..dab009df3b2 100644 --- a/erpnext/config/stock.py +++ b/erpnext/config/stock.py @@ -263,6 +263,11 @@ def get_data(): "label": _("Items and Pricing"), "youtube_id": "qXaEwld4_Ps" }, + { + "type": "help", + "label": _("Item Variants"), + "youtube_id": "OGBETlCzU5o" + }, { "type": "help", "label": _("Opening Stock Balance"), @@ -270,8 +275,23 @@ def get_data(): }, { "type": "help", - "label": _("Item Variants"), - "youtube_id": "OGBETlCzU5o" + "label": _("Making Stock Entries"), + "youtube_id": "Njt107hlY3I" + }, + { + "type": "help", + "label": _("Serialized Inventory"), + "youtube_id": "gvOVlEwFDAk" + }, + { + "type": "help", + "label": _("Batch Inventory"), + "youtube_id": "J0QKl7ABPKM" + }, + { + "type": "help", + "label": _("Managing Subcontracting"), + "youtube_id": "ThiMCC2DtKo" }, ] } From 3c5df9f64c14c19809b60b92517aff308c6d7b7e Mon Sep 17 00:00:00 2001 From: Jamie Date: Tue, 27 Oct 2015 16:37:45 +0000 Subject: [PATCH 3/8] change to JavaScript --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8be3f22b1e9..00b7c5a799c 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Includes: Accounting, Inventory, CRM, Sales, Purchase, Projects, HRMS. Requires MariaDB. -ERPNext is built on the [Frappe](https://github.com/frappe/frappe) Framework, a full-stack web app framework in Python & Javascript. +ERPNext is built on the [Frappe](https://github.com/frappe/frappe) Framework, a full-stack web app framework in Python & JavaScript. - [User Guide](https://manual.erpnext.com) - [Getting Help](http://erpnext.org/getting-help.html) From 6d490e530ae7532ae145b2ee49925e07502cc62e Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 28 Oct 2015 12:43:45 +0530 Subject: [PATCH 4/8] [fix] Ignore users permission for To Warehouse field in Delivery Note --- .../stock/doctype/delivery_note_item/delivery_note_item.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json index 96e26609a0b..c1d459160c2 100644 --- a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json +++ b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json @@ -760,7 +760,7 @@ "fieldname": "target_warehouse", "fieldtype": "Link", "hidden": 0, - "ignore_user_permissions": 0, + "ignore_user_permissions": 1, "in_filter": 0, "in_list_view": 0, "label": "To Warehouse (Optional)", @@ -1162,7 +1162,7 @@ "is_submittable": 0, "issingle": 0, "istable": 1, - "modified": "2015-10-26 02:19:18.053222", + "modified": "2015-10-28 12:41:53.738462", "modified_by": "Administrator", "module": "Stock", "name": "Delivery Note Item", From 15bf4e55996da2e92fcb1b9b0c211fb91d8b16b8 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 28 Oct 2015 12:48:32 +0530 Subject: [PATCH 5/8] [patch] Deleted Item-wise Last Purchase Rate report --- erpnext/patches.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/erpnext/patches.txt b/erpnext/patches.txt index b36f74b959b..e1db7092040 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -228,3 +228,4 @@ erpnext.patches.v6_4.set_user_in_contact erpnext.patches.v6_4.make_image_thumbnail #2015-10-20 erpnext.patches.v6_5.show_in_website_for_template_item erpnext.patches.v6_4.fix_expense_included_in_valuation +execute:frappe.delete_doc_if_exists("Report", "Item-wise Last Purchase Rate") \ No newline at end of file From caa9fc033f932fc07b080d48010ec2f466985784 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Wed, 28 Oct 2015 14:33:53 +0530 Subject: [PATCH 6/8] [hotfix] vietnamese translation for Debit Note --- erpnext/translations/vi.csv | 54 ++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/erpnext/translations/vi.csv b/erpnext/translations/vi.csv index 038d7d683af..201dafc3e9e 100644 --- a/erpnext/translations/vi.csv +++ b/erpnext/translations/vi.csv @@ -674,7 +674,7 @@ The tax rate you define here will be the standard tax rate for all **Items**. If #### Description of Columns -1. Calculation Type: +1. Calculation Type: - This can be on **Net Total** (that is the sum of basic amount). - **On Previous Row Total / Amount** (for cumulative taxes or charges). If you select this option, the tax will be applied as a percentage of the previous row (in the tax table) amount or total. - **Actual** (as mentioned). @@ -685,19 +685,19 @@ The tax rate you define here will be the standard tax rate for all **Items**. If 6. Amount: Tax amount. 7. Total: Cumulative total to this point. 8. Enter Row: If based on ""Previous Row Total"" you can select the row number which will be taken as a base for this calculation (default is the previous row). -9. Is this Tax included in Basic Rate?: If you check this, it means that this tax will not be shown below the item table, but will be included in the Basic Rate in your main item table. This is useful where you want give a flat price (inclusive of all taxes) price to customers.","Mẫu thuế tiêu chuẩn có thể được áp dụng cho tất cả các giao dịch bán hàng. Mẫu này có thể chứa danh sách của người đứng đầu và thuế cũng khác người đứng đầu chi phí / thu nhập như ""Vận chuyển"", ""bảo hiểm"", ""Xử lý"" vv +9. Is this Tax included in Basic Rate?: If you check this, it means that this tax will not be shown below the item table, but will be included in the Basic Rate in your main item table. This is useful where you want give a flat price (inclusive of all taxes) price to customers.","Mẫu thuế tiêu chuẩn có thể được áp dụng cho tất cả các giao dịch bán hàng. Mẫu này có thể chứa danh sách của người đứng đầu và thuế cũng khác người đứng đầu chi phí / thu nhập như ""Vận chuyển"", ""bảo hiểm"", ""Xử lý"" vv + - #### Chú ý Các mức thuế suất bạn xác định đây sẽ là mức thuế suất tiêu chuẩn cho tất cả các mục ** **. Nếu có những mục ** ** mà có mức giá khác nhau, chúng phải được thêm vào trong các mục ** ** Thuế bảng trong mục ** ** master. - #### Mô tả Cột + #### Mô tả Cột - 1. Loại tính: + 1. Loại tính: - Điều này có thể được trên Net ** Tổng số ** (đó là tổng số tiền cơ bản). - ** Mở Row Previous Total / Số tiền ** (cho các loại thuế, phí tích lũy). Nếu bạn chọn tùy chọn này, thuế sẽ được áp dụng như là một tỷ lệ phần trăm của các dòng trước đó (theo Biểu thuế) hoặc tổng số tiền. - ** ** Thực tế (như đã đề cập). - 2. Tài khoản Head: Các tài khoản sổ cái theo đó thuế này sẽ được đặt + 2. Tài khoản Head: Các tài khoản sổ cái theo đó thuế này sẽ được đặt 3. Trung tâm chi phí: Nếu thuế / phí là một khoản thu nhập (như vận chuyển) hoặc chi phí nó cần phải được đặt trước một Trung tâm chi phí. 4. Mô tả: Mô tả về thuế (sẽ được in trên hoá đơn / dấu ngoặc kép). 5. Rate: Thuế suất. @@ -2015,7 +2015,7 @@ The tax rate you define here will be the standard tax rate for all **Items**. If #### Description of Columns -1. Calculation Type: +1. Calculation Type: - This can be on **Net Total** (that is the sum of basic amount). - **On Previous Row Total / Amount** (for cumulative taxes or charges). If you select this option, the tax will be applied as a percentage of the previous row (in the tax table) amount or total. - **Actual** (as mentioned). @@ -2027,19 +2027,19 @@ The tax rate you define here will be the standard tax rate for all **Items**. If 7. Total: Cumulative total to this point. 8. Enter Row: If based on ""Previous Row Total"" you can select the row number which will be taken as a base for this calculation (default is the previous row). 9. 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. -10. Add or Deduct: Whether you want to add or deduct the tax.","Mẫu thuế tiêu chuẩn có thể được áp dụng cho tất cả các giao dịch mua hàng. Mẫu này có thể chứa danh sách của người đứng đầu về thuế và cũng đứng đầu chi phí khác như ""Vận chuyển"", ""bảo hiểm"", ""Xử lý"" vv +10. Add or Deduct: Whether you want to add or deduct the tax.","Mẫu thuế tiêu chuẩn có thể được áp dụng cho tất cả các giao dịch mua hàng. Mẫu này có thể chứa danh sách của người đứng đầu về thuế và cũng đứng đầu chi phí khác như ""Vận chuyển"", ""bảo hiểm"", ""Xử lý"" vv + - #### Chú ý Các mức thuế bạn xác định ở đây sẽ là mức thuế suất tiêu chuẩn cho tất cả các mục ** **. Nếu có những mục ** ** mà có mức giá khác nhau, chúng phải được thêm vào trong các mục ** ** Thuế bảng trong mục ** ** master. - #### Mô tả Cột + #### Mô tả Cột - 1. Loại tính: + 1. Loại tính: - Điều này có thể được trên Net ** Tổng số ** (đó là tổng số tiền cơ bản). - ** Mở Row Previous Total / Số tiền ** (cho các loại thuế, phí tích lũy). Nếu bạn chọn tùy chọn này, thuế sẽ được áp dụng như là một tỷ lệ phần trăm của các dòng trước đó (theo Biểu thuế) hoặc tổng số tiền. - ** ** Thực tế (như đã đề cập). - 2. Tài khoản Head: Các tài khoản sổ cái theo đó thuế này sẽ được đặt + 2. Tài khoản Head: Các tài khoản sổ cái theo đó thuế này sẽ được đặt 3. Trung tâm chi phí: Nếu thuế / phí là một khoản thu nhập (như vận chuyển) hoặc chi phí nó cần phải được đặt trước một Trung tâm chi phí. 4. Mô tả: Mô tả về thuế (sẽ được in trên hoá đơn / dấu ngoặc kép). 5. Rate: Thuế suất. @@ -2225,7 +2225,7 @@ Examples: 1. Ways of addressing disputes, indemnity, liability, etc. 1. Address and Contact of your Company.","Điều khoản và Điều kiện có thể được thêm vào để bán hàng và mua tiêu chuẩn. - Ví dụ: + Ví dụ: 1. Hiệu lực của đề nghị. 1. Điều khoản thanh toán (Trong Advance, On Credit, phần trước vv). @@ -2234,7 +2234,7 @@ Examples: 1. Bảo hành nếu có. 1. Trả Policy. 1. Điều khoản vận chuyển, nếu áp dụng. - 1. Cách giải quyết tranh chấp, bồi thường, trách nhiệm pháp lý, vv + 1. Cách giải quyết tranh chấp, bồi thường, trách nhiệm pháp lý, vv 1. Địa chỉ và liên hệ của công ty của bạn." DocType: Attendance,Leave Type,Loại bỏ apps/erpnext/erpnext/controllers/stock_controller.py +172,Expense / Difference account ({0}) must be a 'Profit or Loss' account,"Chi phí tài khoản / khác biệt ({0}) phải là một ""lợi nhuận hoặc lỗ 'tài khoản" @@ -3125,7 +3125,7 @@ DocType: Accounts Settings,"If enabled, the system will post accounting entries apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +15,Brokerage,Môi giới DocType: Address,Postal Code,Mã bưu chính DocType: Production Order Operation,"in Minutes -Updated via 'Time Log'","trong Minutes +Updated via 'Time Log'","trong Minutes Cập nhật qua 'Giờ'" DocType: Customer,From Lead,Từ chì apps/erpnext/erpnext/config/manufacturing.py +19,Orders released for production.,Đơn đặt hàng phát hành để sản xuất. @@ -3302,7 +3302,7 @@ apps/erpnext/erpnext/selling/page/sales_browser/sales_browser.js +121,New {0} Na apps/erpnext/erpnext/controllers/recurring_document.py +128,Please find attached {0} #{1},{0} # Xin vui lòng tìm thấy kèm theo {1} DocType: Job Applicant,Applicant Name,Tên đơn DocType: Authorization Rule,Customer / Item Name,Khách hàng / Item Name -DocType: Product Bundle,"Aggregate group of **Items** into another **Item**. This is useful if you are bundling a certain **Items** into a package and you maintain stock of the packed **Items** and not the aggregate **Item**. +DocType: Product Bundle,"Aggregate group of **Items** into another **Item**. This is useful if you are bundling a certain **Items** into a package and you maintain stock of the packed **Items** and not the aggregate **Item**. The package **Item** will have ""Is Stock Item"" as ""No"" and ""Is Sales Item"" as ""Yes"". @@ -3444,17 +3444,17 @@ DocType: Address Template,"

Default Template

{% if phone %}Phone: {{ phone }}<br>{% endif -%} {% if fax %}Fax: {{ fax }}<br>{% endif -%} {% if email_id %}Email: {{ email_id }}<br>{% endif -%} -","

Default Template -

Sử dụng Jinja Templating và tất cả các lĩnh vực của Địa chỉ ( bao gồm Tuỳ chỉnh Fields nếu có) sẽ có sẵn -

  {{address_line1}} & lt; br & gt; 
+
","

Default Template +

Sử dụng Jinja Templating và tất cả các lĩnh vực của Địa chỉ ( bao gồm Tuỳ chỉnh Fields nếu có) sẽ có sẵn +

  {{address_line1}} & lt; br & gt;
  {% nếu address_line2%} {{address_line2}} & lt; br & gt; { endif% -%} {{
- thành phố}} & lt; br & gt; 
+ thành phố}} & lt; br & gt;
  {% nếu nhà nước%} {{}} nhà nước & lt; br & gt; {% endif -%} {
-% nếu mã pin%} PIN: {{mã pin}} & lt; br & gt; {% endif -%} 
- {{country}} & lt; br & gt; 
- {% nếu điện thoại%} Điện thoại: {{phone}} & lt; br & gt; { % endif -%} 
- {% nếu fax%} Fax: {{fax}} & lt; br & gt; {% endif -%} 
- {% nếu email_id%} Email: {{email_id}} & lt; br & gt ; {% endif -}% 
+% nếu mã pin%} PIN: {{mã pin}} & lt; br & gt; {% endif -%}
+ {{country}} & lt; br & gt;
+ {% nếu điện thoại%} Điện thoại: {{phone}} & lt; br & gt; { % endif -%}
+ {% nếu fax%} Fax: {{fax}} & lt; br & gt; {% endif -%}
+ {% nếu email_id%} Email: {{email_id}} & lt; br & gt ; {% endif -}%
   "
 DocType: Salary Slip Deduction,Default Amount,Số tiền mặc định
 apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +89,Warehouse not found in the system,Kho không tìm thấy trong hệ thống
@@ -3645,7 +3645,7 @@ apps/erpnext/erpnext/crm/doctype/newsletter_list/newsletter_list.js +40,New News
 apps/erpnext/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py +157,Start date should be less than end date for Item {0},Ngày bắt đầu phải nhỏ hơn ngày kết thúc cho hàng {0}
 apps/erpnext/erpnext/stock/doctype/item/item.js +17,Show Balance,Hiện Balance
 DocType: Item,"Example: ABCD.#####
-If series is set and Serial No is not mentioned in transactions, then automatic serial number will be created based on this series. If you always want to explicitly mention Serial Nos for this item. leave this blank.","Ví dụ:. ABCD ##### 
+If series is set and Serial No is not mentioned in transactions, then automatic serial number will be created based on this series. If you always want to explicitly mention Serial Nos for this item. leave this blank.","Ví dụ:. ABCD #####
  Nếu series được thiết lập và Serial No không được đề cập trong các giao dịch, số serial sau đó tự động sẽ được tạo ra dựa trên series này. Nếu bạn luôn muốn đề cập đến một cách rõ ràng nối tiếp Nos cho mặt hàng này. để trống này."
 DocType: Upload Attendance,Upload Attendance,Tải lên tham dự
 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +119,BOM and Manufacturing Quantity are required,BOM và Sản xuất Số lượng được yêu cầu
@@ -3776,7 +3776,7 @@ DocType: Batch,Batch,Hàng loạt
 apps/erpnext/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py +53,Balance,Balance
 DocType: Project,Total Expense Claim (via Expense Claims),Tổng số yêu cầu bồi thường chi phí (thông qua Tuyên bố Expense)
 DocType: User,Gender,Giới Tính
-DocType: Journal Entry,Debit Note,"Một lưu ghi nợ là do bên cho mượn, nợ và phục vụ như là một trong hai thông báo về một khoản nợ sẽ sớm nhận được hoá đơn hoặc một lời nhắc nhở đối với khoản nợ mà trước đây được lập hoá đơn và hiện đang nổi bật."
+DocType: Journal Entry,Debit Note,"nợ Ghi"
 DocType: Stock Entry,As per Stock UOM,Theo Cổ UOM
 apps/erpnext/erpnext/stock/doctype/batch/batch_list.js +7,Not Expired,Không hết hạn
 DocType: Journal Entry,Total Debit,Tổng số Nợ

From bdfb070ed6c9a66b8f27c366d7b37d5d73499582 Mon Sep 17 00:00:00 2001
From: Nabin Hait 
Date: Wed, 28 Oct 2015 15:38:08 +0530
Subject: [PATCH 7/8] [fix] Serial No query in Warranty Claim

---
 erpnext/public/js/controllers/transaction.js         | 12 ++++++------
 .../support/doctype/warranty_claim/warranty_claim.js |  2 +-
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index 4d33f81c5c6..f518e9c53d5 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -76,10 +76,9 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({
 		if(this.frm.doc.__islocal && !(this.frm.doc.taxes || []).length
 			&& !(this.frm.doc.__onload ? this.frm.doc.__onload.load_after_mapping : false)) {
 				this.apply_default_taxes();
-		}
-
-		if(this.frm.doc.__islocal && this.frm.doc.company && this.frm.doc["items"] && !this.frm.doc.is_pos) {
-			this.calculate_taxes_and_totals();
+		} else if(this.frm.doc.__islocal && this.frm.doc.company && this.frm.doc["items"] 
+			&& !this.frm.doc.is_pos) {
+				me.calculate_taxes_and_totals();
 		}
 		if(frappe.meta.get_docfield(this.frm.doc.doctype + " Item", "item_code")) {
 			cur_frm.get_field("items").grid.set_multiple_add("item_code", "qty");
@@ -102,7 +101,7 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({
 			me.frm.doc.name);
 
 		if(taxes_and_charges_field) {
-			frappe.call({
+			return frappe.call({
 				method: "erpnext.controllers.accounts_controller.get_default_taxes_and_charges",
 				args: {
 					"master_doctype": taxes_and_charges_field.options
@@ -110,6 +109,7 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({
 				callback: function(r) {
 					if(!r.exc) {
 						me.frm.set_value("taxes", r.message);
+						me.calculate_taxes_and_totals();
 					}
 				}
 			});
@@ -362,7 +362,7 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({
 	},
 
 	get_exchange_rate: function(from_currency, to_currency, callback) {
-		frappe.call({
+		return frappe.call({
 			method: "erpnext.setup.utils.get_exchange_rate",
 			args: {
 				from_currency: from_currency,
diff --git a/erpnext/support/doctype/warranty_claim/warranty_claim.js b/erpnext/support/doctype/warranty_claim/warranty_claim.js
index 941a80386a2..9e1c83ef35d 100644
--- a/erpnext/support/doctype/warranty_claim/warranty_claim.js
+++ b/erpnext/support/doctype/warranty_claim/warranty_claim.js
@@ -51,7 +51,7 @@ cur_frm.fields_dict['serial_no'].get_query = function(doc, cdt, cdn) {
 	var cond = [];
 	var filter = [
 		['Serial No', 'docstatus', '!=', 2],
-		['Serial No', 'status', '=', "Delivered"]
+		['Serial No', 'warehouse', '=', ""]
 	];
 	if(doc.item_code) {
 		cond = ['Serial No', 'item_code', '=', doc.item_code];

From 4757d0634a078c5d4873319b2030c3bcce41bfe5 Mon Sep 17 00:00:00 2001
From: Nabin Hait 
Date: Wed, 28 Oct 2015 16:37:13 +0600
Subject: [PATCH 8/8] bumped to version 6.6.6

---
 erpnext/__version__.py | 2 +-
 erpnext/hooks.py       | 2 +-
 setup.py               | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index 9a900fe8c84..58e8a30260f 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1,2 +1,2 @@
 from __future__ import unicode_literals
-__version__ = '6.6.5'
+__version__ = '6.6.6'
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 0d29e96d2d2..569572be550 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -29,7 +29,7 @@ blogs.
 """
 app_icon = "icon-th"
 app_color = "#e74c3c"
-app_version = "6.6.5"
+app_version = "6.6.6"
 github_link = "https://github.com/frappe/erpnext"
 
 error_report_email = "support@erpnext.com"
diff --git a/setup.py b/setup.py
index c673dc32e6b..888e3de7307 100644
--- a/setup.py
+++ b/setup.py
@@ -1,6 +1,6 @@
 from setuptools import setup, find_packages
 
-version = "6.6.5"
+version = "6.6.6"
 
 with open("requirements.txt", "r") as f:
 	install_requires = f.readlines()