From 9e5f319d80bf822570cca44d8daee1de6902b7dd Mon Sep 17 00:00:00 2001 From: ankitjavalkarwork Date: Mon, 6 Oct 2014 12:19:40 +0530 Subject: [PATCH 01/56] [#2253] Rearrange To/From fields and depend on is_recurring in SI,SO,PI,PO --- .../purchase_invoice/purchase_invoice.json | 62 ++++++++-------- .../doctype/sales_invoice/sales_invoice.json | 72 +++++++++---------- .../purchase_order/purchase_order.json | 62 ++++++++-------- .../doctype/sales_order/sales_order.json | 62 ++++++++-------- 4 files changed, 132 insertions(+), 126 deletions(-) diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json index d91c53ceaa..153b8d89e4 100755 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json @@ -142,24 +142,6 @@ "reqd": 0, "search_index": 1 }, - { - "allow_on_submit": 1, - "description": "Start date of current invoice's period", - "fieldname": "from_date", - "fieldtype": "Date", - "label": "From Date", - "no_copy": 1, - "permlevel": 0 - }, - { - "allow_on_submit": 1, - "description": "End date of current invoice's period", - "fieldname": "to_date", - "fieldtype": "Date", - "label": "To Date", - "no_copy": 1, - "permlevel": 0 - }, { "fieldname": "amended_from", "fieldtype": "Link", @@ -798,6 +780,26 @@ "permlevel": 0, "print_hide": 1 }, + { + "allow_on_submit": 1, + "depends_on": "eval:doc.is_recurring==1", + "description": "Start date of current invoice's period", + "fieldname": "from_date", + "fieldtype": "Date", + "label": "From Date", + "no_copy": 1, + "permlevel": 0 + }, + { + "allow_on_submit": 1, + "depends_on": "eval:doc.is_recurring==1", + "description": "End date of current invoice's period", + "fieldname": "to_date", + "fieldtype": "Date", + "label": "To Date", + "no_copy": 1, + "permlevel": 0 + }, { "allow_on_submit": 1, "depends_on": "eval:doc.is_recurring==1", @@ -821,17 +823,6 @@ "permlevel": 0, "print_hide": 1 }, - { - "depends_on": "eval:doc.is_recurring==1", - "description": "The date on which next invoice will be generated. It is generated on submit.", - "fieldname": "next_date", - "fieldtype": "Date", - "label": "Next Date", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 1 - }, { "allow_on_submit": 1, "depends_on": "eval:doc.is_recurring==1", @@ -850,6 +841,17 @@ "print_hide": 1, "width": "50%" }, + { + "depends_on": "eval:doc.is_recurring==1", + "description": "The date on which next invoice will be generated. It is generated on submit.", + "fieldname": "next_date", + "fieldtype": "Date", + "label": "Next Date", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 1 + }, { "depends_on": "eval:doc.is_recurring==1", "description": "The unique id for tracking all recurring invoices. It is generated on submit.", @@ -876,7 +878,7 @@ "icon": "icon-file-text", "idx": 1, "is_submittable": 1, - "modified": "2014-09-18 03:12:51.994059", + "modified": "2014-10-06 12:57:32.064210", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice", diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json index 4462ac6566..21c96e745d 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json @@ -168,30 +168,6 @@ "reqd": 1, "search_index": 0 }, - { - "allow_on_submit": 1, - "depends_on": "", - "description": "Start date of current invoice's period", - "fieldname": "from_date", - "fieldtype": "Date", - "label": "From Date", - "no_copy": 1, - "permlevel": 0, - "print_hide": 0, - "read_only": 0 - }, - { - "allow_on_submit": 1, - "depends_on": "", - "description": "End date of current invoice's period", - "fieldname": "to_date", - "fieldtype": "Date", - "label": "To Date", - "no_copy": 1, - "permlevel": 0, - "print_hide": 0, - "read_only": 0 - }, { "fieldname": "currency_section", "fieldtype": "Section Break", @@ -1095,6 +1071,30 @@ "print_hide": 1, "read_only": 0 }, + { + "allow_on_submit": 1, + "depends_on": "eval:doc.is_recurring==1", + "description": "End date of current invoice's period", + "fieldname": "to_date", + "fieldtype": "Date", + "label": "To Date", + "no_copy": 1, + "permlevel": 0, + "print_hide": 0, + "read_only": 0 + }, + { + "allow_on_submit": 1, + "depends_on": "eval:doc.is_recurring==1", + "description": "Start date of current invoice's period", + "fieldname": "from_date", + "fieldtype": "Date", + "label": "From Date", + "no_copy": 1, + "permlevel": 0, + "print_hide": 0, + "read_only": 0 + }, { "allow_on_submit": 1, "depends_on": "eval:doc.is_recurring==1", @@ -1120,17 +1120,6 @@ "print_hide": 1, "read_only": 0 }, - { - "depends_on": "eval:doc.is_recurring==1", - "description": "The date on which next invoice will be generated. It is generated on submit.\n", - "fieldname": "next_date", - "fieldtype": "Date", - "label": "Next Date", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 1 - }, { "allow_on_submit": 1, "depends_on": "eval:doc.is_recurring==1", @@ -1152,6 +1141,17 @@ "read_only": 0, "width": "50%" }, + { + "depends_on": "eval:doc.is_recurring==1", + "description": "The date on which next invoice will be generated. It is generated on submit.\n", + "fieldname": "next_date", + "fieldtype": "Date", + "label": "Next Date", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 1 + }, { "depends_on": "eval:doc.is_recurring==1", "description": "The unique id for tracking all recurring invoices.\u00a0It is generated on submit.", @@ -1192,7 +1192,7 @@ "icon": "icon-file-text", "idx": 1, "is_submittable": 1, - "modified": "2014-09-18 03:17:54.976732", + "modified": "2014-10-06 12:54:42.549361", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice", diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json index 142781c2bd..8380e864c6 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.json +++ b/erpnext/buying/doctype/purchase_order/purchase_order.json @@ -101,24 +101,6 @@ "reqd": 1, "search_index": 1 }, - { - "allow_on_submit": 1, - "description": "Start date of current order's period", - "fieldname": "from_date", - "fieldtype": "Date", - "label": "From Date", - "no_copy": 1, - "permlevel": 0 - }, - { - "allow_on_submit": 1, - "description": "End date of current order's period", - "fieldname": "to_date", - "fieldtype": "Date", - "label": "To Date", - "no_copy": 1, - "permlevel": 0 - }, { "fieldname": "amended_from", "fieldtype": "Link", @@ -695,6 +677,26 @@ "permlevel": 0, "print_hide": 1 }, + { + "allow_on_submit": 1, + "depends_on": "eval:doc.is_recurring==1", + "description": "Start date of current order's period", + "fieldname": "from_date", + "fieldtype": "Date", + "label": "From Date", + "no_copy": 1, + "permlevel": 0 + }, + { + "allow_on_submit": 1, + "depends_on": "eval:doc.is_recurring==1", + "description": "End date of current order's period", + "fieldname": "to_date", + "fieldtype": "Date", + "label": "To Date", + "no_copy": 1, + "permlevel": 0 + }, { "allow_on_submit": 1, "depends_on": "eval:doc.is_recurring==1", @@ -716,17 +718,6 @@ "permlevel": 0, "print_hide": 1 }, - { - "depends_on": "eval:doc.is_recurring==1", - "description": "The date on which next invoice will be generated. It is generated on submit.", - "fieldname": "next_date", - "fieldtype": "Date", - "label": "Next Date", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 1 - }, { "allow_on_submit": 1, "depends_on": "eval:doc.is_recurring==1", @@ -745,6 +736,17 @@ "permlevel": 0, "print_hide": 1 }, + { + "depends_on": "eval:doc.is_recurring==1", + "description": "The date on which next invoice will be generated. It is generated on submit.", + "fieldname": "next_date", + "fieldtype": "Date", + "label": "Next Date", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 1 + }, { "depends_on": "eval:doc.is_recurring==1", "fieldname": "recurring_id", @@ -770,7 +772,7 @@ "icon": "icon-file-text", "idx": 1, "is_submittable": 1, - "modified": "2014-09-18 03:16:06.299317", + "modified": "2014-10-06 12:16:44.453946", "modified_by": "Administrator", "module": "Buying", "name": "Purchase Order", diff --git a/erpnext/selling/doctype/sales_order/sales_order.json b/erpnext/selling/doctype/sales_order/sales_order.json index c22ed3f48d..5af9a26ed9 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.json +++ b/erpnext/selling/doctype/sales_order/sales_order.json @@ -169,24 +169,6 @@ "search_index": 1, "width": "160px" }, - { - "allow_on_submit": 1, - "description": "Start date of current order's period", - "fieldname": "from_date", - "fieldtype": "Date", - "label": "From Date", - "no_copy": 1, - "permlevel": 0 - }, - { - "allow_on_submit": 1, - "description": "End date of current order's period", - "fieldname": "to_date", - "fieldtype": "Date", - "label": "To Date", - "no_copy": 1, - "permlevel": 0 - }, { "description": "Customer's Purchase Order Number", "fieldname": "po_no", @@ -939,6 +921,26 @@ "permlevel": 0, "print_hide": 1 }, + { + "allow_on_submit": 1, + "depends_on": "eval:doc.is_recurring==1", + "description": "Start date of current order's period", + "fieldname": "from_date", + "fieldtype": "Date", + "label": "From Date", + "no_copy": 1, + "permlevel": 0 + }, + { + "allow_on_submit": 1, + "depends_on": "eval:doc.is_recurring==1", + "description": "End date of current order's period", + "fieldname": "to_date", + "fieldtype": "Date", + "label": "To Date", + "no_copy": 1, + "permlevel": 0 + }, { "allow_on_submit": 1, "depends_on": "eval:doc.is_recurring==1", @@ -962,17 +964,6 @@ "permlevel": 0, "print_hide": 1 }, - { - "depends_on": "eval:doc.is_recurring==1", - "description": "The date on which next invoice will be generated. It is generated on submit.", - "fieldname": "next_date", - "fieldtype": "Date", - "label": "Next Date", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 1 - }, { "allow_on_submit": 1, "depends_on": "eval:doc.is_recurring==1", @@ -991,6 +982,17 @@ "permlevel": 0, "print_hide": 1 }, + { + "depends_on": "eval:doc.is_recurring==1", + "description": "The date on which next invoice will be generated. It is generated on submit.", + "fieldname": "next_date", + "fieldtype": "Date", + "label": "Next Date", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 1 + }, { "depends_on": "eval:doc.is_recurring==1", "fieldname": "recurring_id", @@ -1018,7 +1020,7 @@ "idx": 1, "is_submittable": 1, "issingle": 0, - "modified": "2014-09-18 03:17:33.241162", + "modified": "2014-10-06 12:16:41.256013", "modified_by": "Administrator", "module": "Selling", "name": "Sales Order", From 9974b16c320b09c0c873f101a0a72e011f49d560 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 7 Oct 2014 10:52:05 +0530 Subject: [PATCH 02/56] [fix] packing slip --- erpnext/stock/doctype/packing_slip/packing_slip.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/erpnext/stock/doctype/packing_slip/packing_slip.py b/erpnext/stock/doctype/packing_slip/packing_slip.py index 63657b75ab..bd79835d58 100644 --- a/erpnext/stock/doctype/packing_slip/packing_slip.py +++ b/erpnext/stock/doctype/packing_slip/packing_slip.py @@ -162,8 +162,7 @@ def item_details(doctype, txt, searchfield, start, page_len, filters): from erpnext.controllers.queries import get_match_cond return frappe.db.sql("""select name, item_name, description from `tabItem` where name in ( select item_code FROM `tabDelivery Note Item` - where parent= %s - and ifnull(qty, 0) > ifnull(packed_qty, 0)) + where parent= %s) and %s like "%s" %s limit %s, %s """ % ("%s", searchfield, "%s", get_match_cond(doctype), "%s", "%s"), From b70712dbba2791bdb14fd97e2e39a7d6874a723c Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 7 Oct 2014 11:32:37 +0530 Subject: [PATCH 03/56] Voucher dynamic link in general ledger report --- .../accounts/report/general_ledger/general_ledger.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py index 362f42e5e5..e7180ae5fa 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.py +++ b/erpnext/accounts/report/general_ledger/general_ledger.py @@ -35,7 +35,7 @@ def validate_filters(filters, account_details): def get_columns(): return [_("Posting Date") + ":Date:100", _("Account") + ":Link/Account:200", _("Debit") + ":Float:100", - _("Credit") + ":Float:100", _("Voucher Type") + "::120", _("Voucher No") + "::160", _("Link") + "::20", + _("Credit") + ":Float:100", _("Voucher Type") + "::120", _("Voucher No") + ":Dynamic Link/Voucher Type:160", _("Against Account") + "::120", _("Cost Center") + ":Link/Cost Center:100", _("Remarks") + "::400"] def get_result(filters, account_details): @@ -162,15 +162,6 @@ def get_result_as_list(data): for d in data: result.append([d.get("posting_date"), d.get("account"), d.get("debit"), d.get("credit"), d.get("voucher_type"), d.get("voucher_no"), - get_voucher_link(d.get("voucher_type"), d.get("voucher_no")), d.get("against"), d.get("cost_center"), d.get("remarks")]) return result - -def get_voucher_link(voucher_type, voucher_no): - icon = "" - if voucher_type and voucher_no: - icon = """ - """ % ("/".join(["#Form", voucher_type, voucher_no])) - - return icon From 099ad0f5e160913ab8cda4b228b30243307f1762 Mon Sep 17 00:00:00 2001 From: pdvyas Date: Tue, 7 Oct 2014 17:35:32 +0600 Subject: [PATCH 04/56] bumped to version 4.5.2 --- 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 ef6eca3066..d04f92aa34 100644 --- a/erpnext/__version__.py +++ b/erpnext/__version__.py @@ -1 +1 @@ -__version__ = '4.5.1' +__version__ = '4.5.2' diff --git a/erpnext/hooks.py b/erpnext/hooks.py index a8e5732752..bda5c80678 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -4,7 +4,7 @@ app_publisher = "Web Notes Technologies Pvt. Ltd. and Contributors" app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations" app_icon = "icon-th" app_color = "#e74c3c" -app_version = "4.5.1" +app_version = "4.5.2" error_report_email = "support@erpnext.com" diff --git a/setup.py b/setup.py index 681b6f7e44..8b037432f4 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages import os -version = "4.5.1" +version = "4.5.2" with open("requirements.txt", "r") as f: install_requires = f.readlines() From b96c014daf77aea33afdd9cf4de16f69453902ee Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 7 Oct 2014 11:25:04 +0530 Subject: [PATCH 05/56] Stock Reconciliation logic simplified --- erpnext/public/js/stock_analytics.js | 14 +- erpnext/startup/report_data_map.py | 3 +- erpnext/stock/doctype/bin/bin.py | 33 ++--- .../stock_ledger_entry/stock_ledger_entry.py | 2 +- .../stock_reconciliation.py | 120 +++--------------- .../stock/page/stock_balance/stock_balance.js | 9 +- erpnext/stock/stock_ledger.py | 19 ++- 7 files changed, 75 insertions(+), 125 deletions(-) diff --git a/erpnext/public/js/stock_analytics.js b/erpnext/public/js/stock_analytics.js index d4f43e98b9..84c0386c57 100644 --- a/erpnext/public/js/stock_analytics.js +++ b/erpnext/public/js/stock_analytics.js @@ -138,9 +138,17 @@ erpnext.StockAnalytics = erpnext.StockGridReport.extend({ item.valuation_method : sys_defaults.valuation_method; var is_fifo = valuation_method == "FIFO"; - var diff = me.get_value_diff(wh, sl, is_fifo); + if(sl.voucher_type=="Stock Reconciliation") { + var diff = (sl.qty_after_transaction * sl.valuation_rate) - item.closing_qty_value; + } else { + var diff = me.get_value_diff(wh, sl, is_fifo); + } } else { - var diff = sl.qty; + if(sl.voucher_type=="Stock Reconciliation") { + var diff = sl.qty_after_transaction - item.closing_qty_value; + } else { + var diff = sl.qty; + } } if(posting_datetime < from_date) { @@ -150,6 +158,8 @@ erpnext.StockAnalytics = erpnext.StockGridReport.extend({ } else { break; } + + item.closing_qty_value += diff; } } }, diff --git a/erpnext/startup/report_data_map.py b/erpnext/startup/report_data_map.py index ce71310ad9..81d378cd18 100644 --- a/erpnext/startup/report_data_map.py +++ b/erpnext/startup/report_data_map.py @@ -78,7 +78,8 @@ data_map = { "Stock Ledger Entry": { "columns": ["name", "posting_date", "posting_time", "item_code", "warehouse", "actual_qty as qty", "voucher_type", "voucher_no", "project", - "ifnull(incoming_rate,0) as incoming_rate", "stock_uom", "serial_no"], + "ifnull(incoming_rate,0) as incoming_rate", "stock_uom", "serial_no", + "qty_after_transaction", "valuation_rate"], "order_by": "posting_date, posting_time, name", "links": { "item_code": ["Item", "name"], diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py index 3f74c5c7d3..0244213a96 100644 --- a/erpnext/stock/doctype/bin/bin.py +++ b/erpnext/stock/doctype/bin/bin.py @@ -11,27 +11,27 @@ class Bin(Document): def validate(self): if self.get("__islocal") or not self.stock_uom: self.stock_uom = frappe.db.get_value('Item', self.item_code, 'stock_uom') - + self.validate_mandatory() - + self.projected_qty = flt(self.actual_qty) + flt(self.ordered_qty) + \ flt(self.indented_qty) + flt(self.planned_qty) - flt(self.reserved_qty) - + def validate_mandatory(self): qf = ['actual_qty', 'reserved_qty', 'ordered_qty', 'indented_qty'] for f in qf: - if (not getattr(self, f, None)) or (not self.get(f)): + if (not getattr(self, f, None)) or (not self.get(f)): self.set(f, 0.0) - + def update_stock(self, args): self.update_qty(args) - + if args.get("actual_qty"): from erpnext.stock.stock_ledger import update_entries_after - + if not args.get("posting_date"): args["posting_date"] = nowdate() - + # update valuation and qty after transaction for post dated entry update_entries_after({ "item_code": self.item_code, @@ -39,21 +39,24 @@ class Bin(Document): "posting_date": args.get("posting_date"), "posting_time": args.get("posting_time") }) - + def update_qty(self, args): # update the stock values (for current quantities) - - self.actual_qty = flt(self.actual_qty) + flt(args.get("actual_qty")) + if args.get("voucher_type")=="Stock Reconciliation": + self.actual_qty = args.get("qty_after_transaction") + else: + self.actual_qty = flt(self.actual_qty) + flt(args.get("actual_qty")) + self.ordered_qty = flt(self.ordered_qty) + flt(args.get("ordered_qty")) self.reserved_qty = flt(self.reserved_qty) + flt(args.get("reserved_qty")) self.indented_qty = flt(self.indented_qty) + flt(args.get("indented_qty")) self.planned_qty = flt(self.planned_qty) + flt(args.get("planned_qty")) - + self.projected_qty = flt(self.actual_qty) + flt(self.ordered_qty) + \ flt(self.indented_qty) + flt(self.planned_qty) - flt(self.reserved_qty) - + self.save() - + def get_first_sle(self): sle = frappe.db.sql(""" select * from `tabStock Ledger Entry` @@ -62,4 +65,4 @@ class Bin(Document): order by timestamp(posting_date, posting_time) asc, name asc limit 1 """, (self.item_code, self.warehouse), as_dict=1) - return sle and sle[0] or None \ No newline at end of file + return sle and sle[0] or None diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py index 0e92b5d471..1bb189bd74 100644 --- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py @@ -44,7 +44,7 @@ class StockLedgerEntry(Document): formatdate(self.posting_date), self.posting_time)) def validate_mandatory(self): - mandatory = ['warehouse','posting_date','voucher_type','voucher_no','actual_qty','company'] + mandatory = ['warehouse','posting_date','voucher_type','voucher_no','company'] for k in mandatory: if not self.get(k): frappe.throw(_("{0} is required").format(self.meta.get_label(k))) diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py index 40a980debb..f39829de98 100644 --- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py @@ -129,7 +129,6 @@ class StockReconciliation(StockController): def insert_stock_ledger_entries(self): """ find difference between current and expected entries and create stock ledger entries based on the difference""" - from erpnext.stock.utils import get_valuation_method from erpnext.stock.stock_ledger import get_previous_sle row_template = ["item_code", "warehouse", "qty", "valuation_rate"] @@ -141,105 +140,27 @@ class StockReconciliation(StockController): for row_num, row in enumerate(data[data.index(self.head_row)+1:]): row = frappe._dict(zip(row_template, row)) row["row_num"] = row_num - previous_sle = get_previous_sle({ - "item_code": row.item_code, - "warehouse": row.warehouse, - "posting_date": self.posting_date, - "posting_time": self.posting_time - }) - # check valuation rate mandatory - if row.qty not in ["", None] and not row.valuation_rate and \ - flt(previous_sle.get("qty_after_transaction")) <= 0: + if row.qty in ("", None) or row.valuation_rate in ("", None): + previous_sle = get_previous_sle({ + "item_code": row.item_code, + "warehouse": row.warehouse, + "posting_date": self.posting_date, + "posting_time": self.posting_time + }) + + if row.qty in ("", None): + row.qty = previous_sle.get("qty_after_transaction") + + if row.valuation_rate in ("", None): + row.valuation_rate = previous_sle.get("valuation_rate") + + if row.qty and not row.valuation_rate: frappe.throw(_("Valuation Rate required for Item {0}").format(row.item_code)) - change_in_qty = row.qty not in ["", None] and \ - (flt(row.qty) - flt(previous_sle.get("qty_after_transaction"))) + self.insert_entries(row) - change_in_rate = row.valuation_rate not in ["", None] and \ - (flt(row.valuation_rate) - flt(previous_sle.get("valuation_rate"))) - - if get_valuation_method(row.item_code) == "Moving Average": - self.sle_for_moving_avg(row, previous_sle, change_in_qty, change_in_rate) - - else: - self.sle_for_fifo(row, previous_sle, change_in_qty, change_in_rate) - - def sle_for_moving_avg(self, row, previous_sle, change_in_qty, change_in_rate): - """Insert Stock Ledger Entries for Moving Average valuation""" - def _get_incoming_rate(qty, valuation_rate, previous_qty, previous_valuation_rate): - if previous_valuation_rate == 0: - return flt(valuation_rate) - else: - if valuation_rate in ["", None]: - valuation_rate = previous_valuation_rate - return (qty * valuation_rate - previous_qty * previous_valuation_rate) \ - / flt(qty - previous_qty) - - if change_in_qty: - # if change in qty, irrespective of change in rate - incoming_rate = _get_incoming_rate(flt(row.qty), flt(row.valuation_rate), - flt(previous_sle.get("qty_after_transaction")), flt(previous_sle.get("valuation_rate"))) - - row["voucher_detail_no"] = "Row: " + cstr(row.row_num) + "/Actual Entry" - self.insert_entries({"actual_qty": change_in_qty, "incoming_rate": incoming_rate}, row) - - elif change_in_rate and flt(previous_sle.get("qty_after_transaction")) > 0: - # if no change in qty, but change in rate - # and positive actual stock before this reconciliation - incoming_rate = _get_incoming_rate( - flt(previous_sle.get("qty_after_transaction"))+1, flt(row.valuation_rate), - flt(previous_sle.get("qty_after_transaction")), - flt(previous_sle.get("valuation_rate"))) - - # +1 entry - row["voucher_detail_no"] = "Row: " + cstr(row.row_num) + "/Valuation Adjustment +1" - self.insert_entries({"actual_qty": 1, "incoming_rate": incoming_rate}, row) - - # -1 entry - row["voucher_detail_no"] = "Row: " + cstr(row.row_num) + "/Valuation Adjustment -1" - self.insert_entries({"actual_qty": -1}, row) - - def sle_for_fifo(self, row, previous_sle, change_in_qty, change_in_rate): - """Insert Stock Ledger Entries for FIFO valuation""" - previous_stock_queue = json.loads(previous_sle.get("stock_queue") or "[]") - previous_stock_qty = sum((batch[0] for batch in previous_stock_queue)) - previous_stock_value = sum((batch[0] * batch[1] for batch in \ - previous_stock_queue)) - - def _insert_entries(): - if previous_stock_queue != [[row.qty, row.valuation_rate]]: - # make entry as per attachment - if flt(row.qty): - row["voucher_detail_no"] = "Row: " + cstr(row.row_num) + "/Actual Entry" - self.insert_entries({"actual_qty": row.qty, - "incoming_rate": flt(row.valuation_rate)}, row) - - # Make reverse entry - if previous_stock_qty: - row["voucher_detail_no"] = "Row: " + cstr(row.row_num) + "/Reverse Entry" - self.insert_entries({"actual_qty": -1 * previous_stock_qty, - "incoming_rate": previous_stock_qty < 0 and - flt(row.valuation_rate) or 0}, row) - - - if change_in_qty: - if row.valuation_rate in ["", None]: - # dont want change in valuation - if previous_stock_qty > 0: - # set valuation_rate as previous valuation_rate - row.valuation_rate = previous_stock_value / flt(previous_stock_qty) - - _insert_entries() - - elif change_in_rate and previous_stock_qty > 0: - # if no change in qty, but change in rate - # and positive actual stock before this reconciliation - - row.qty = previous_stock_qty - _insert_entries() - - def insert_entries(self, opts, row): + def insert_entries(self, row): """Insert Stock Ledger Entries""" args = frappe._dict({ "doctype": "Stock Ledger Entry", @@ -253,9 +174,10 @@ class StockReconciliation(StockController): "stock_uom": frappe.db.get_value("Item", row.item_code, "stock_uom"), "voucher_detail_no": row.voucher_detail_no, "fiscal_year": self.fiscal_year, - "is_cancelled": "No" + "is_cancelled": "No", + "qty_after_transaction": row.qty, + "valuation_rate": row.valuation_rate }) - args.update(opts) self.make_sl_entries([args]) # append to entries @@ -295,7 +217,7 @@ class StockReconciliation(StockController): if not self.expense_account: msgprint(_("Please enter Expense Account"), raise_exception=1) - elif not frappe.db.sql("""select * from `tabStock Ledger Entry`"""): + elif not frappe.db.sql("""select name from `tabStock Ledger Entry` limit 1"""): if frappe.db.get_value("Account", self.expense_account, "report_type") == "Profit and Loss": frappe.throw(_("Difference Account must be a 'Liability' type account, since this Stock Reconciliation is an Opening Entry")) diff --git a/erpnext/stock/page/stock_balance/stock_balance.js b/erpnext/stock/page/stock_balance/stock_balance.js index 1083414725..c2ffc3701b 100644 --- a/erpnext/stock/page/stock_balance/stock_balance.js +++ b/erpnext/stock/page/stock_balance/stock_balance.js @@ -104,8 +104,13 @@ erpnext.StockBalance = erpnext.StockAnalytics.extend({ item.valuation_method : sys_defaults.valuation_method; var is_fifo = valuation_method == "FIFO"; - var qty_diff = sl.qty; - var value_diff = me.get_value_diff(wh, sl, is_fifo); + if(sl.voucher_type=="Stock Reconciliation") { + var qty_diff = sl.qty_after_trasaction - item.closing_qty; + var value_diff = (sl.valuation_rate * sl.qty_after_trasaction) - item.closing_value; + } else { + var qty_diff = sl.qty; + var value_diff = me.get_value_diff(wh, sl, is_fifo); + } if(sl_posting_date < from_date) { item.opening_qty += qty_diff; diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index 3717bf1595..03bbf2f138 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -95,14 +95,23 @@ def update_entries_after(args, verbose=1): qty_after_transaction += flt(sle.actual_qty) continue + if sle.serial_no: valuation_rate = get_serialized_values(qty_after_transaction, sle, valuation_rate) - elif valuation_method == "Moving Average": - valuation_rate = get_moving_average_values(qty_after_transaction, sle, valuation_rate) - else: - valuation_rate = get_fifo_values(qty_after_transaction, sle, stock_queue) + qty_after_transaction += flt(sle.actual_qty) - qty_after_transaction += flt(sle.actual_qty) + else: + if sle.voucher_type=="Stock Reconciliation": + valuation_rate = sle.valuation_rate + qty_after_transaction = sle.qty_after_transaction + stock_queue = [[qty_after_transaction, valuation_rate]] + else: + if valuation_method == "Moving Average": + valuation_rate = get_moving_average_values(qty_after_transaction, sle, valuation_rate) + else: + valuation_rate = get_fifo_values(qty_after_transaction, sle, stock_queue) + + qty_after_transaction += flt(sle.actual_qty) # get stock value if sle.serial_no: From bfa7f171bddf771ece6167788d588b137215ef74 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 7 Oct 2014 12:17:31 +0530 Subject: [PATCH 06/56] Stock reconciliation sl entries --- erpnext/stock/doctype/bin/bin.py | 12 +++++++++++- .../doctype/stock_ledger_entry/stock_ledger_entry.py | 3 +++ .../stock_reconciliation/stock_reconciliation.py | 1 - erpnext/stock/report/stock_ledger/stock_ledger.py | 7 ++----- erpnext/stock/stock_ledger.py | 2 +- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py index 0244213a96..d094bc2fce 100644 --- a/erpnext/stock/doctype/bin/bin.py +++ b/erpnext/stock/doctype/bin/bin.py @@ -43,7 +43,17 @@ class Bin(Document): def update_qty(self, args): # update the stock values (for current quantities) if args.get("voucher_type")=="Stock Reconciliation": - self.actual_qty = args.get("qty_after_transaction") + if args.get('is_cancelled') == 'No': + self.actual_qty = args.get("qty_after_transaction") + else: + qty_after_transaction = frappe.db.get_value("""select qty_after_transaction + from `tabStock Ledger Entry` + where item_code=%s and warehouse=%s + and not (voucher_type='Stock Reconciliation' and voucher_no=%s) + order by posting_date desc limit 1""", + (self.item_code, self.warehouse, args.get('voucher_no'))) + + self.actual_qty = flt(qty_after_transaction[0][0]) if qty_after_transaction else 0.0 else: self.actual_qty = flt(self.actual_qty) + flt(args.get("actual_qty")) diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py index 1bb189bd74..7fdd440f2e 100644 --- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py @@ -49,6 +49,9 @@ class StockLedgerEntry(Document): if not self.get(k): frappe.throw(_("{0} is required").format(self.meta.get_label(k))) + if self.voucher_type != "Stock Reconciliation" and not self.actual_qty: + frappe.throw(_("Actual Qty is mandatory")) + def validate_item(self): item_det = frappe.db.sql("""select name, has_batch_no, docstatus, is_stock_item from tabItem where name=%s""", self.item_code, as_dict=True)[0] diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py index f39829de98..2aa9ab61c6 100644 --- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py @@ -172,7 +172,6 @@ class StockReconciliation(StockController): "voucher_no": self.name, "company": self.company, "stock_uom": frappe.db.get_value("Item", row.item_code, "stock_uom"), - "voucher_detail_no": row.voucher_detail_no, "fiscal_year": self.fiscal_year, "is_cancelled": "No", "qty_after_transaction": row.qty, diff --git a/erpnext/stock/report/stock_ledger/stock_ledger.py b/erpnext/stock/report/stock_ledger/stock_ledger.py index 4c5458dbb2..44f32c9751 100644 --- a/erpnext/stock/report/stock_ledger/stock_ledger.py +++ b/erpnext/stock/report/stock_ledger/stock_ledger.py @@ -13,16 +13,13 @@ def execute(filters=None): data = [] for sle in sl_entries: item_detail = item_details[sle.item_code] - voucher_link_icon = """""" \ - % ("/".join(["#Form", sle.voucher_type, sle.voucher_no]),) data.append([sle.date, sle.item_code, item_detail.item_name, item_detail.item_group, item_detail.brand, item_detail.description, sle.warehouse, item_detail.stock_uom, sle.actual_qty, sle.qty_after_transaction, (sle.incoming_rate if sle.actual_qty > 0 else 0.0), sle.valuation_rate, sle.stock_value, sle.voucher_type, sle.voucher_no, - voucher_link_icon, sle.batch_no, sle.serial_no, sle.company]) + sle.batch_no, sle.serial_no, sle.company]) return columns, data @@ -31,7 +28,7 @@ def get_columns(): _("Brand") + ":Link/Brand:100", _("Description") + "::200", _("Warehouse") + ":Link/Warehouse:100", _("Stock UOM") + ":Link/UOM:100", _("Qty") + ":Float:50", _("Balance Qty") + ":Float:100", _("Incoming Rate") + ":Currency:110", _("Valuation Rate") + ":Currency:110", _("Balance Value") + ":Currency:110", - _("Voucher Type") + "::110", _("Voucher #") + "::100", _("Link") + "::30", _("Batch") + ":Link/Batch:100", + _("Voucher Type") + "::110", _("Voucher #") + ":Dynamic Link/Voucher Type:100", _("Batch") + ":Link/Batch:100", _("Serial #") + ":Link/Serial No:100", _("Company") + ":Link/Company:100"] def get_stock_ledger_entries(filters): diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index 03bbf2f138..db65cd4a29 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -27,7 +27,7 @@ def make_sl_entries(sl_entries, is_amended=None): if sle.get('is_cancelled') == 'Yes': sle['actual_qty'] = -flt(sle['actual_qty']) - if sle.get("actual_qty"): + if sle.get("actual_qty") or sle.voucher_type=="Stock Reconciliation": sle_id = make_entry(sle) args = sle.copy() From bb19b91ef988303e95b41fa024b71ed57b828984 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 7 Oct 2014 15:02:58 +0530 Subject: [PATCH 07/56] stock reco fixes --- erpnext/stock/doctype/bin/bin.py | 2 +- .../stock_reconciliation.json | 5 +- .../stock/report/stock_ageing/stock_ageing.py | 51 +++++++++++-------- erpnext/stock/stock_ledger.py | 1 - 4 files changed, 33 insertions(+), 26 deletions(-) diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py index d094bc2fce..e3269e87e2 100644 --- a/erpnext/stock/doctype/bin/bin.py +++ b/erpnext/stock/doctype/bin/bin.py @@ -26,7 +26,7 @@ class Bin(Document): def update_stock(self, args): self.update_qty(args) - if args.get("actual_qty"): + if args.get("actual_qty") or args.get("voucher_type") == "Stock Reconciliation": from erpnext.stock.stock_ledger import update_entries_after if not args.get("posting_date"): diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json index daba967a58..8434f600d1 100644 --- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json +++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json @@ -1,5 +1,5 @@ { - "allow_copy": 1, + "allow_copy": 1, "autoname": "SR/.######", "creation": "2013-03-28 10:35:31", "description": "This tool helps you to update or fix the quantity and valuation of stock in the system. It is typically used to synchronise the system values and what actually exists in your warehouses.", @@ -7,6 +7,7 @@ "doctype": "DocType", "fields": [ { + "default": "Today", "fieldname": "posting_date", "fieldtype": "Date", "in_filter": 0, @@ -118,7 +119,7 @@ "idx": 1, "is_submittable": 1, "max_attachments": 1, - "modified": "2014-05-26 03:05:54.024413", + "modified": "2014-10-07 12:43:52.825575", "modified_by": "Administrator", "module": "Stock", "name": "Stock Reconciliation", diff --git a/erpnext/stock/report/stock_ageing/stock_ageing.py b/erpnext/stock/report/stock_ageing/stock_ageing.py index fc4786123e..fb5e9f9bfd 100644 --- a/erpnext/stock/report/stock_ageing/stock_ageing.py +++ b/erpnext/stock/report/stock_ageing/stock_ageing.py @@ -4,10 +4,10 @@ from __future__ import unicode_literals import frappe from frappe import _ -from frappe.utils import date_diff +from frappe.utils import date_diff, flt def execute(filters=None): - + columns = get_columns() item_details = get_fifo_queue(filters) to_date = filters["to_date"] @@ -16,35 +16,40 @@ def execute(filters=None): fifo_queue = item_dict["fifo_queue"] details = item_dict["details"] if not fifo_queue: continue - + average_age = get_average_age(fifo_queue, to_date) earliest_age = date_diff(to_date, fifo_queue[0][1]) latest_age = date_diff(to_date, fifo_queue[-1][1]) - - data.append([item, details.item_name, details.description, details.item_group, + + data.append([item, details.item_name, details.description, details.item_group, details.brand, average_age, earliest_age, latest_age, details.stock_uom]) - + return columns, data - + def get_average_age(fifo_queue, to_date): batch_age = age_qty = total_qty = 0.0 for batch in fifo_queue: batch_age = date_diff(to_date, batch[1]) age_qty += batch_age * batch[0] total_qty += batch[0] - + return (age_qty / total_qty) if total_qty else 0.0 - + def get_columns(): - return [_("Item Code") + ":Link/Item:100", _("Item Name") + "::100", _("Description") + "::200", - _("Item Group") + ":Link/Item Group:100", _("Brand") + ":Link/Brand:100", _("Average Age") + ":Float:100", + return [_("Item Code") + ":Link/Item:100", _("Item Name") + "::100", _("Description") + "::200", + _("Item Group") + ":Link/Item Group:100", _("Brand") + ":Link/Brand:100", _("Average Age") + ":Float:100", _("Earliest") + ":Int:80", _("Latest") + ":Int:80", _("UOM") + ":Link/UOM:100"] - + def get_fifo_queue(filters): item_details = {} + prev_qty = 0.0 for d in get_stock_ledger_entries(filters): item_details.setdefault(d.name, {"details": d, "fifo_queue": []}) fifo_queue = item_details[d.name]["fifo_queue"] + + if d.voucher_type == "Stock Reconciliation": + d.actual_qty = flt(d.qty_after_transaction) - flt(prev_qty) + if d.actual_qty > 0: fifo_queue.append([d.actual_qty, d.posting_date]) else: @@ -52,7 +57,7 @@ def get_fifo_queue(filters): while qty_to_pop: batch = fifo_queue[0] if fifo_queue else [0, None] if 0 < batch[0] <= qty_to_pop: - # if batch qty > 0 + # if batch qty > 0 # not enough or exactly same qty in current batch, clear batch qty_to_pop -= batch[0] fifo_queue.pop(0) @@ -61,12 +66,14 @@ def get_fifo_queue(filters): batch[0] -= qty_to_pop qty_to_pop = 0 + prev_qty = d.qty_after_transaction + return item_details - + def get_stock_ledger_entries(filters): - return frappe.db.sql("""select - item.name, item.item_name, item_group, brand, description, item.stock_uom, - actual_qty, posting_date + return frappe.db.sql("""select + item.name, item.item_name, item_group, brand, description, item.stock_uom, + actual_qty, posting_date, voucher_type, qty_after_transaction from `tabStock Ledger Entry` sle, (select name, item_name, description, stock_uom, brand, item_group from `tabItem` {item_conditions}) item @@ -77,19 +84,19 @@ def get_stock_ledger_entries(filters): order by posting_date, posting_time, sle.name"""\ .format(item_conditions=get_item_conditions(filters), sle_conditions=get_sle_conditions(filters)), filters, as_dict=True) - + def get_item_conditions(filters): conditions = [] if filters.get("item_code"): conditions.append("item_code=%(item_code)s") if filters.get("brand"): conditions.append("brand=%(brand)s") - + return "where {}".format(" and ".join(conditions)) if conditions else "" - + def get_sle_conditions(filters): conditions = [] if filters.get("warehouse"): conditions.append("warehouse=%(warehouse)s") - - return "and {}".format(" and ".join(conditions)) if conditions else "" \ No newline at end of file + + return "and {}".format(" and ".join(conditions)) if conditions else "" diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index db65cd4a29..b7c2074003 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -83,7 +83,6 @@ def update_entries_after(args, verbose=1): entries_to_fix = get_sle_after_datetime(previous_sle or \ {"item_code": args["item_code"], "warehouse": args["warehouse"]}, for_update=True) - valuation_method = get_valuation_method(args["item_code"]) stock_value_difference = 0.0 From adeb976a1bc693b75dc44423cdaa8ac88c1f5a31 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 6 Oct 2014 11:53:52 +0530 Subject: [PATCH 08/56] Block negative stock in perpetual inventory --- .../accounts_settings/accounts_settings.py | 3 ++ .../doctype/sales_invoice/sales_invoice.py | 14 +++--- erpnext/accounts/general_ledger.py | 3 +- erpnext/controllers/stock_controller.py | 50 +++++++++++++++---- .../stock_reconciliation.py | 4 +- .../doctype/stock_settings/stock_settings.py | 14 ++++-- erpnext/stock/stock_ledger.py | 4 +- 7 files changed, 63 insertions(+), 29 deletions(-) diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py index f0890dd439..7280322a68 100644 --- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py +++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py @@ -14,6 +14,9 @@ class AccountsSettings(Document): frappe.db.set_default("auto_accounting_for_stock", self.auto_accounting_for_stock) if cint(self.auto_accounting_for_stock): + if cint(frappe.db.get_value("Stock Settings", None, "allow_negative_stock")): + frappe.throw(_("Negative stock is not allowed in case of Perpetual Inventory, please disable it from Stock Settings")) + # set default perpetual account in company for company in frappe.db.sql("select name from tabCompany"): frappe.get_doc("Company", company[0]).save() diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index a2bf78c449..31f7113c37 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -7,7 +7,7 @@ import frappe.defaults from frappe.utils import cint, cstr, flt from frappe import _, msgprint, throw from erpnext.accounts.party import get_party_account, get_due_date -from erpnext.controllers.stock_controller import update_gl_entries_after +from erpnext.controllers.stock_controller import update_gl_entries_after, block_negative_stock from frappe.model.mapper import get_mapped_doc from erpnext.controllers.selling_controller import SellingController @@ -456,8 +456,8 @@ class SalesInvoice(SellingController): self.make_sl_entries(sl_entries) - def make_gl_entries(self, repost_future_gle=True): - gl_entries = self.get_gl_entries() + def make_gl_entries(self, repost_future_gle=True, allow_negative_stock=False): + gl_entries = self.get_gl_entries(allow_negative_stock=allow_negative_stock) if gl_entries: from erpnext.accounts.general_ledger import make_gl_entries @@ -476,7 +476,7 @@ class SalesInvoice(SellingController): items, warehouses = self.get_items_and_warehouses() update_gl_entries_after(self.posting_date, self.posting_time, warehouses, items) - def get_gl_entries(self, warehouse_account=None): + def get_gl_entries(self, warehouse_account=None, allow_negative_stock=False): from erpnext.accounts.general_ledger import merge_similar_entries gl_entries = [] @@ -485,7 +485,7 @@ class SalesInvoice(SellingController): self.make_tax_gl_entries(gl_entries) - self.make_item_gl_entries(gl_entries) + self.make_item_gl_entries(gl_entries, allow_negative_stock) # merge gl entries before adding pos entries gl_entries = merge_similar_entries(gl_entries) @@ -520,7 +520,7 @@ class SalesInvoice(SellingController): }) ) - def make_item_gl_entries(self, gl_entries): + def make_item_gl_entries(self, gl_entries, allow_negative_stock=False): # income account gl entries for item in self.get("entries"): if flt(item.base_amount): @@ -537,7 +537,7 @@ class SalesInvoice(SellingController): # expense account gl entries if cint(frappe.defaults.get_global_default("auto_accounting_for_stock")) \ and cint(self.update_stock): - gl_entries += super(SalesInvoice, self).get_gl_entries() + gl_entries += super(SalesInvoice, self).get_gl_entries(allow_negative_stock=allow_negative_stock) def make_pos_gl_entries(self, gl_entries): if cint(self.is_pos) and self.cash_bank_account and self.paid_amount: diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py index 211476822f..073ef8a5af 100644 --- a/erpnext/accounts/general_ledger.py +++ b/erpnext/accounts/general_ledger.py @@ -97,8 +97,7 @@ def validate_account_for_auto_accounting_for_stock(gl_map): for entry in gl_map: if entry.account in aii_accounts: - frappe.throw(_("Account: {0} can only be updated via \ - Stock Transactions").format(entry.account), StockAccountInvalidTransaction) + frappe.throw(_("Account: {0} can only be updated via Stock Transactions").format(entry.account), StockAccountInvalidTransaction) def delete_gl_entries(gl_entries=None, voucher_type=None, voucher_no=None, diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index 575525399f..304ded2390 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -8,10 +8,10 @@ from frappe import msgprint, _ import frappe.defaults from erpnext.controllers.accounts_controller import AccountsController -from erpnext.accounts.general_ledger import make_gl_entries, delete_gl_entries +from erpnext.accounts.general_ledger import make_gl_entries, delete_gl_entries, process_gl_map class StockController(AccountsController): - def make_gl_entries(self, repost_future_gle=True): + def make_gl_entries(self, repost_future_gle=True, allow_negative_stock=False): if self.docstatus == 2: delete_gl_entries(voucher_type=self.doctype, voucher_no=self.name) @@ -19,16 +19,19 @@ class StockController(AccountsController): warehouse_account = get_warehouse_account() if self.docstatus==1: - gl_entries = self.get_gl_entries(warehouse_account) + gl_entries = self.get_gl_entries(warehouse_account, allow_negative_stock) make_gl_entries(gl_entries) if repost_future_gle: items, warehouses = self.get_items_and_warehouses() - update_gl_entries_after(self.posting_date, self.posting_time, warehouses, items, warehouse_account) + update_gl_entries_after(self.posting_date, self.posting_time, warehouses, items, + warehouse_account, allow_negative_stock) def get_gl_entries(self, warehouse_account=None, default_expense_account=None, - default_cost_center=None): - from erpnext.accounts.general_ledger import process_gl_map + default_cost_center=None, allow_negative_stock=False): + + block_negative_stock(allow_negative_stock) + if not warehouse_account: warehouse_account = get_warehouse_account() @@ -46,12 +49,17 @@ class StockController(AccountsController): self.check_expense_account(detail) + stock_value_difference = flt(sle.stock_value_difference, 2) + if not stock_value_difference: + valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse, sle.posting_date) + stock_value_difference = flt(sle.qty)*flt(valuation_rate) + gl_list.append(self.get_gl_dict({ "account": warehouse_account[sle.warehouse], "against": detail.expense_account, "cost_center": detail.cost_center, "remarks": self.get("remarks") or "Accounting Entry for Stock", - "debit": flt(sle.stock_value_difference, 2) + "debit": stock_value_difference })) # to target warehouse / expense account @@ -60,7 +68,7 @@ class StockController(AccountsController): "against": warehouse_account[sle.warehouse], "cost_center": detail.cost_center, "remarks": self.get("remarks") or "Accounting Entry for Stock", - "credit": flt(sle.stock_value_difference, 2) + "credit": stock_value_difference })) elif sle.warehouse not in warehouse_with_no_account: warehouse_with_no_account.append(sle.warehouse) @@ -214,7 +222,8 @@ class StockController(AccountsController): return serialized_items -def update_gl_entries_after(posting_date, posting_time, for_warehouses=None, for_items=None, warehouse_account=None): +def update_gl_entries_after(posting_date, posting_time, for_warehouses=None, for_items=None, + warehouse_account=None, allow_negative_stock=False): def _delete_gl_entries(voucher_type, voucher_no): frappe.db.sql("""delete from `tabGL Entry` where voucher_type=%s and voucher_no=%s""", (voucher_type, voucher_no)) @@ -228,12 +237,12 @@ def update_gl_entries_after(posting_date, posting_time, for_warehouses=None, for for voucher_type, voucher_no in future_stock_vouchers: existing_gle = gle.get((voucher_type, voucher_no), []) voucher_obj = frappe.get_doc(voucher_type, voucher_no) - expected_gle = voucher_obj.get_gl_entries(warehouse_account) + expected_gle = voucher_obj.get_gl_entries(warehouse_account, allow_negative_stock) if expected_gle: if not existing_gle or not compare_existing_and_expected_gle(existing_gle, expected_gle): _delete_gl_entries(voucher_type, voucher_no) - voucher_obj.make_gl_entries(repost_future_gle=False) + voucher_obj.make_gl_entries(repost_future_gle=False, allow_negative_stock=allow_negative_stock) else: _delete_gl_entries(voucher_type, voucher_no) @@ -285,3 +294,22 @@ def get_warehouse_account(): warehouse_account = dict(frappe.db.sql("""select master_name, name from tabAccount where account_type = 'Warehouse' and ifnull(master_name, '') != ''""")) return warehouse_account + +def block_negative_stock(allow_negative_stock=False): + if cint(frappe.defaults.get_global_default("auto_accounting_for_stock")) and not allow_negative_stock: + if cint(frappe.db.get_value("Stock Settings", None, "allow_negative_stock")): + frappe.throw(_("Negative stock is not allowed in case of Perpetual Inventory, please disable it from Stock Settings")) + +def get_valuation_rate(item_code, warehouse, posting_date): + last_valuation_rate = frappe.db.sql("""select valuation_rate + from `tabStock Ledger Entry` + where item_code = %s and warehouse = %s + and ifnull(qty_after_transaction, 0) > 0 and posting_date < %s + order by posting_date desc limit 1""", (item_code, warehouse, posting_date)) + + valuation_rate = flt(last_valuation_rate[0][0]) if last_valuation_rate else 0 + + if not valuation_rate: + valuation_rate = frappe.db.get_value("Item Price", {"item_code": item_code, "buying": 1}, "price") + + return valuation_rate diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py index 2aa9ab61c6..8e837e275c 100644 --- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py @@ -203,12 +203,12 @@ class StockReconciliation(StockController): "posting_time": self.posting_time }) - def get_gl_entries(self, warehouse_account=None): + def get_gl_entries(self, warehouse_account=None, allow_negative_stock=False): if not self.cost_center: msgprint(_("Please enter Cost Center"), raise_exception=1) return super(StockReconciliation, self).get_gl_entries(warehouse_account, - self.expense_account, self.cost_center) + self.expense_account, self.cost_center, allow_negative_stock=allow_negative_stock) def validate_expense_account(self): if not cint(frappe.defaults.get_global_default("auto_accounting_for_stock")): diff --git a/erpnext/stock/doctype/stock_settings/stock_settings.py b/erpnext/stock/doctype/stock_settings/stock_settings.py index b505394f1b..95ace86b79 100644 --- a/erpnext/stock/doctype/stock_settings/stock_settings.py +++ b/erpnext/stock/doctype/stock_settings/stock_settings.py @@ -6,18 +6,20 @@ from __future__ import unicode_literals import frappe from frappe import _ - +from frappe.utils import cint from frappe.model.document import Document class StockSettings(Document): def validate(self): - for key in ["item_naming_by", "item_group", "stock_uom", - "allow_negative_stock"]: + if cint(self.allow_negative_stock) and cint(frappe.defaults.get_global_default("auto_accounting_for_stock")): + frappe.throw(_("Negative stock is not allowed in case of Perpetual Inventory")) + + for key in ["item_naming_by", "item_group", "stock_uom", "allow_negative_stock"]: frappe.db.set_default(key, self.get(key, "")) - + from erpnext.setup.doctype.naming_series.naming_series import set_by_naming_series - set_by_naming_series("Item", "item_code", + set_by_naming_series("Item", "item_code", self.get("item_naming_by")=="Naming Series", hide_name_field=True) stock_frozen_limit = 356 @@ -25,3 +27,5 @@ class StockSettings(Document): if submitted_stock_frozen > stock_frozen_limit: self.stock_frozen_upto_days = stock_frozen_limit frappe.msgprint (_("`Freeze Stocks Older Than` should be smaller than %d days.") %stock_frozen_limit) + + diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index b7c2074003..e8a84c2ab1 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -36,9 +36,9 @@ def make_sl_entries(sl_entries, is_amended=None): "is_amended": is_amended }) update_bin(args) + if cancel: - delete_cancelled_entry(sl_entries[0].get('voucher_type'), - sl_entries[0].get('voucher_no')) + delete_cancelled_entry(sl_entries[0].get('voucher_type'), sl_entries[0].get('voucher_no')) def set_as_cancel(voucher_type, voucher_no): frappe.db.sql("""update `tabStock Ledger Entry` set is_cancelled='Yes', From 6c48ef781b2e5647bdfa8fc0d7e7c476633f9b87 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 8 Oct 2014 11:00:38 +0530 Subject: [PATCH 09/56] Utility: Repost stock ledger entries and gl entries for all stock transactions --- erpnext/controllers/stock_controller.py | 13 ++++----- .../landed_cost_voucher.py | 4 +-- .../purchase_receipt/purchase_receipt.py | 11 +++++--- .../stock/doctype/stock_entry/stock_entry.py | 2 +- .../stock_reconciliation.py | 8 +++--- .../stock/page/stock_balance/stock_balance.js | 6 +++-- erpnext/utilities/repost_stock.py | 27 +++++++++++++++++++ 7 files changed, 52 insertions(+), 19 deletions(-) diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index 304ded2390..8c5bcac407 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -19,7 +19,7 @@ class StockController(AccountsController): warehouse_account = get_warehouse_account() if self.docstatus==1: - gl_entries = self.get_gl_entries(warehouse_account, allow_negative_stock) + gl_entries = self.get_gl_entries(warehouse_account, allow_negative_stock=allow_negative_stock) make_gl_entries(gl_entries) if repost_future_gle: @@ -30,7 +30,7 @@ class StockController(AccountsController): def get_gl_entries(self, warehouse_account=None, default_expense_account=None, default_cost_center=None, allow_negative_stock=False): - block_negative_stock(allow_negative_stock) + # block_negative_stock(allow_negative_stock) if not warehouse_account: warehouse_account = get_warehouse_account() @@ -52,7 +52,7 @@ class StockController(AccountsController): stock_value_difference = flt(sle.stock_value_difference, 2) if not stock_value_difference: valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse, sle.posting_date) - stock_value_difference = flt(sle.qty)*flt(valuation_rate) + stock_value_difference = flt(sle.actual_qty)*flt(valuation_rate) gl_list.append(self.get_gl_dict({ "account": warehouse_account[sle.warehouse], @@ -126,7 +126,8 @@ class StockController(AccountsController): def get_stock_ledger_details(self): stock_ledger = {} - for sle in frappe.db.sql("""select warehouse, stock_value_difference, voucher_detail_no + for sle in frappe.db.sql("""select warehouse, stock_value_difference, + voucher_detail_no, item_code, posting_date, actual_qty from `tabStock Ledger Entry` where voucher_type=%s and voucher_no=%s""", (self.doctype, self.name), as_dict=True): stock_ledger.setdefault(sle.voucher_detail_no, []).append(sle) @@ -237,7 +238,7 @@ def update_gl_entries_after(posting_date, posting_time, for_warehouses=None, for for voucher_type, voucher_no in future_stock_vouchers: existing_gle = gle.get((voucher_type, voucher_no), []) voucher_obj = frappe.get_doc(voucher_type, voucher_no) - expected_gle = voucher_obj.get_gl_entries(warehouse_account, allow_negative_stock) + expected_gle = voucher_obj.get_gl_entries(warehouse_account, allow_negative_stock=allow_negative_stock) if expected_gle: if not existing_gle or not compare_existing_and_expected_gle(existing_gle, expected_gle): @@ -310,6 +311,6 @@ def get_valuation_rate(item_code, warehouse, posting_date): valuation_rate = flt(last_valuation_rate[0][0]) if last_valuation_rate else 0 if not valuation_rate: - valuation_rate = frappe.db.get_value("Item Price", {"item_code": item_code, "buying": 1}, "price") + valuation_rate = frappe.db.get_value("Item Price", {"item_code": item_code, "buying": 1}, "price_list_rate") return valuation_rate diff --git a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py index b4fa9712f9..3046c5e921 100644 --- a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py +++ b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py @@ -97,10 +97,10 @@ class LandedCostVoucher(Document): # update stock & gl entries for cancelled state of PR pr.docstatus = 2 - pr.update_stock() + pr.update_stock_ledger() pr.make_gl_entries_on_cancel() # update stock & gl entries for submit state of PR pr.docstatus = 1 - pr.update_stock() + pr.update_stock_ledger() pr.make_gl_entries() diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py index a7fa6bb88e..fc35222bb0 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py @@ -130,7 +130,7 @@ class PurchaseReceipt(BuyingController): if not d.prevdoc_docname: frappe.throw(_("Purchase Order number required for Item {0}").format(d.item_code)) - def update_stock(self): + def update_stock_ledger(self): sl_entries = [] stock_items = self.get_stock_items() @@ -234,7 +234,7 @@ class PurchaseReceipt(BuyingController): self.update_ordered_qty() - self.update_stock() + self.update_stock_ledger() from erpnext.stock.doctype.serial_no.serial_no import update_serial_nos_after_submit update_serial_nos_after_submit(self, "purchase_receipt_details") @@ -267,7 +267,7 @@ class PurchaseReceipt(BuyingController): self.update_ordered_qty() - self.update_stock() + self.update_stock_ledger() self.update_prevdoc_status() pc_obj.update_last_purchase_rate(self, 0) @@ -283,8 +283,11 @@ class PurchaseReceipt(BuyingController): def get_rate(self,arg): return frappe.get_doc('Purchase Common').get_rate(arg,self) - def get_gl_entries(self, warehouse_account=None): + def get_gl_entries(self, warehouse_account=None, allow_negative_stock=False): from erpnext.accounts.general_ledger import process_gl_map + from erpnext.controllers.stock_controller import block_negative_stock + + block_negative_stock(allow_negative_stock) stock_rbnb = self.get_company_default("stock_received_but_not_billed") expenses_included_in_valuation = self.get_company_default("expenses_included_in_valuation") diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 4f3480c0bb..4cc96bfec7 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -527,7 +527,7 @@ class StockEntry(StockController): } }, bom_no=self.bom_no) - self.get_stock_and_rate() + self.e() def get_bom_raw_materials(self, qty): from erpnext.manufacturing.doctype.bom.bom import get_bom_items_as_dict diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py index 8e837e275c..6c3c395d88 100644 --- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py @@ -22,7 +22,7 @@ class StockReconciliation(StockController): self.validate_expense_account() def on_submit(self): - self.insert_stock_ledger_entries() + self.update_stock_ledger() self.make_gl_entries() def on_cancel(self): @@ -126,7 +126,7 @@ class StockReconciliation(StockController): except Exception, e: self.validation_messages.append(_("Row # ") + ("%d: " % (row_num)) + cstr(e)) - def insert_stock_ledger_entries(self): + def update_stock_ledger(self): """ find difference between current and expected entries and create stock ledger entries based on the difference""" from erpnext.stock.stock_ledger import get_previous_sle @@ -155,8 +155,8 @@ class StockReconciliation(StockController): if row.valuation_rate in ("", None): row.valuation_rate = previous_sle.get("valuation_rate") - if row.qty and not row.valuation_rate: - frappe.throw(_("Valuation Rate required for Item {0}").format(row.item_code)) + # if row.qty and not row.valuation_rate: + # frappe.throw(_("Valuation Rate required for Item {0}").format(row.item_code)) self.insert_entries(row) diff --git a/erpnext/stock/page/stock_balance/stock_balance.js b/erpnext/stock/page/stock_balance/stock_balance.js index c2ffc3701b..7405227116 100644 --- a/erpnext/stock/page/stock_balance/stock_balance.js +++ b/erpnext/stock/page/stock_balance/stock_balance.js @@ -105,12 +105,14 @@ erpnext.StockBalance = erpnext.StockAnalytics.extend({ var is_fifo = valuation_method == "FIFO"; if(sl.voucher_type=="Stock Reconciliation") { - var qty_diff = sl.qty_after_trasaction - item.closing_qty; - var value_diff = (sl.valuation_rate * sl.qty_after_trasaction) - item.closing_value; + var qty_diff = sl.qty_after_transaction - (item.temp_closing_qty || 0.0); + var value_diff = (sl.valuation_rate * sl.qty_after_transaction) - (item.temp_closing_value || 0.0); } else { var qty_diff = sl.qty; var value_diff = me.get_value_diff(wh, sl, is_fifo); } + item.temp_closing_qty += qty_diff; + item.temp_closing_value += value_diff; if(sl_posting_date < from_date) { item.opening_qty += qty_diff; diff --git a/erpnext/utilities/repost_stock.py b/erpnext/utilities/repost_stock.py index 4c145487d8..9c3bf1d0e9 100644 --- a/erpnext/utilities/repost_stock.py +++ b/erpnext/utilities/repost_stock.py @@ -209,3 +209,30 @@ def reset_serial_no_status_and_warehouse(serial_nos=None): frappe.db.sql("""update `tabSerial No` set warehouse='' where status in ('Delivered', 'Purchase Returned')""") +def repost_all_stock_vouchers(): + vouchers = frappe.db.sql("""select distinct voucher_type, voucher_no + from `tabStock Ledger Entry` order by posting_date, posting_time, name""") + + rejected = [] + i = 0 + for voucher_type, voucher_no in vouchers: + i += 1 + print voucher_type, voucher_no + try: + for dt in ["Stock Ledger Entry", "GL Entry"]: + frappe.db.sql("""delete from `tab%s` where voucher_type=%s and voucher_no=%s"""% + (dt, '%s', '%s'), (voucher_type, voucher_no)) + + doc = frappe.get_doc(voucher_type, voucher_no) + if voucher_type=="Stock Entry" and doc.purpose in ["Manufacture", "Repack"]: + doc.get_stock_and_rate(force=1) + doc.update_stock_ledger() + doc.make_gl_entries() + if i%100 == 0: + frappe.db.commit() + except: + rejected.append([voucher_type, voucher_no]) + pass + + print rejected + From 8923801881285375ef520b2f412e83c6b8afe629 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 8 Oct 2014 13:20:31 +0530 Subject: [PATCH 10/56] Update stock_entry.py --- erpnext/stock/doctype/stock_entry/stock_entry.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 4cc96bfec7..4f3480c0bb 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -527,7 +527,7 @@ class StockEntry(StockController): } }, bom_no=self.bom_no) - self.e() + self.get_stock_and_rate() def get_bom_raw_materials(self, qty): from erpnext.manufacturing.doctype.bom.bom import get_bom_items_as_dict From 074e73a0ddc43d214b9314a0e35111f850177e7c Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Wed, 8 Oct 2014 14:16:33 +0530 Subject: [PATCH 11/56] [translations] updated via translator --- erpnext/translations/ar.csv | 70 ++-- erpnext/translations/el.csv | 10 +- erpnext/translations/es.csv | 780 ++++++++++++++++++------------------ erpnext/translations/fr.csv | 231 +++++------ erpnext/translations/hi.csv | 26 +- erpnext/translations/ja.csv | 2 +- erpnext/translations/th.csv | 26 +- erpnext/translations/tr.csv | 2 +- 8 files changed, 577 insertions(+), 570 deletions(-) diff --git a/erpnext/translations/ar.csv b/erpnext/translations/ar.csv index b942f4c1be..c031928b66 100644 --- a/erpnext/translations/ar.csv +++ b/erpnext/translations/ar.csv @@ -34,7 +34,7 @@ "Add / Edit"," إضافة / تحرير < / A>" "

Default Template

Uses Jinja Templating and all the fields of Address (including Custom Fields if any) will be available

{{ address_line1 }}<br>{% if address_line2 %}{{ address_line2 }}<br>{% endif -%}{{ city }}<br>{% if state %}{{ state }}<br>{% endif -%}{% if pincode %} PIN:  {{ pincode }}<br>{% endif -%}{{ country }}<br>{% if phone %}Phone: {{ phone }}<br>{% endif -%}{% if fax %}Fax: {{ fax }}<br>{% endif -%}{% if email_id %}Email: {{ email_id }}<br>{% endif -%}
","

افتراضي قالب

ويستخدم جنجا القولبة و كافة الحقول من العنوان ( بما في ذلك الحقول المخصصة إن وجدت) وسوف تكون متاحة

 على  {{}} address_line1 
{٪ إذا address_line2٪} {{}} address_line2
{ ENDIF٪ -٪} {{المدينة}}
{٪ إذا الدولة٪} {{الدولة}} {
٪ ENDIF -٪} {٪ إذا كان الرقم السري٪} PIN: {{}} الرقم السري {
٪ ENDIF -٪} {{البلد}}
{٪ إذا كان الهاتف٪} الهاتف: {{هاتف}} {
ENDIF٪ -٪} {٪ إذا الفاكس٪} فاكس: {{}} الفاكس
{٪ ENDIF -٪} {٪٪ إذا email_id} البريد الإلكتروني: {{}} email_id
؛ {٪ ENDIF -٪} " A Customer Group exists with same name please change the Customer name or rename the Customer Group,يوجد مجموعة العملاء مع نفس الاسم الرجاء تغيير اسم العميل أو إعادة تسمية المجموعة العملاء -A Customer exists with same name,العملاء من وجود نفس الاسم مع +A Customer exists with same name,يوجد في قائمة العملاء عميل بنفس الاسم A Lead with this email id should exist,وينبغي أن يكون هذا المعرف الرصاص مع البريد الإلكتروني موجود A Product or Service,منتج أو خدمة A Supplier exists with same name,وهناك مورد موجود مع نفس الاسم @@ -47,7 +47,7 @@ Absent,غائب Acceptance Criteria,معايير القبول Accepted,مقبول Accepted + Rejected Qty must be equal to Received quantity for Item {0},يجب أن يكون مقبول مرفوض + الكمية مساوية ل كمية تلقى القطعة ل {0} -Accepted Quantity,قبلت الكمية +Accepted Quantity,كمية مقبولة Accepted Warehouse,قبلت مستودع Account,حساب Account Balance,رصيد حسابك @@ -65,12 +65,12 @@ Account with child nodes cannot be converted to ledger,حساب مع العقد Account with existing transaction can not be converted to group.,حساب مع الصفقة الحالية لا يمكن تحويلها إلى المجموعة. Account with existing transaction can not be deleted,حساب مع الصفقة الحالية لا يمكن حذف Account with existing transaction cannot be converted to ledger,حساب مع الصفقة الحالية لا يمكن تحويلها إلى دفتر الأستاذ -Account {0} cannot be a Group,حساب {0} لا يمكن أن تكون المجموعة -Account {0} does not belong to Company {1},حساب {0} لا تنتمي إلى شركة {1} +Account {0} cannot be a Group,حساب {0} لا يمكن أن يكون مجموعة +Account {0} does not belong to Company {1},حساب {0} لا ينتمي إلى شركة {1} Account {0} does not belong to company: {1},حساب {0} لا تنتمي إلى الشركة: {1} Account {0} does not exist,حساب {0} غير موجود Account {0} has been entered more than once for fiscal year {1},حساب {0} تم إدخال أكثر من مرة للعام المالي {1} -Account {0} is frozen,حساب {0} يتم تجميد +Account {0} is frozen,حساب {0} مجمد Account {0} is inactive,حساب {0} غير نشط Account {0} is not valid,حساب {0} غير صالح Account {0} must be of type 'Fixed Asset' as Item {1} is an Asset Item,"حساب {0} يجب أن تكون من النوع ' الأصول الثابتة ""كما البند {1} هو البند الأصول" @@ -85,7 +85,7 @@ Accounting,المحاسبة "Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.",قيد محاسبي المجمدة تصل إلى هذا التاريخ، لا أحد يمكن أن تفعل / تعديل إدخال باستثناء دور المحددة أدناه. Accounting journal entries.,المحاسبة إدخالات دفتر اليومية. Accounts,حسابات -Accounts Browser,حسابات متصفح +Accounts Browser,متصفح الحسابات Accounts Frozen Upto,حسابات مجمدة لغاية Accounts Payable,ذمم دائنة Accounts Receivable,حسابات القبض @@ -95,13 +95,13 @@ Active: Will extract emails from ,نشط: سيتم استخراج رسائل ا Activity,نشاط Activity Log,سجل النشاط Activity Log:,النشاط المفتاح: -Activity Type,النشاط نوع +Activity Type,نوع النشاط Actual,فعلي Actual Budget,الميزانية الفعلية Actual Completion Date,تاريخ الإنتهاء الفعلي -Actual Date,تاريخ الفعلية +Actual Date,التاريخ الفعلي Actual End Date,تاريخ الإنتهاء الفعلي -Actual Invoice Date,الفعلي تاريخ الفاتورة +Actual Invoice Date,التاريخ الفعلي للفاتورة Actual Posting Date,تاريخ النشر الفعلي Actual Qty,الكمية الفعلية Actual Qty (at source/target),الكمية الفعلية (في المصدر / الهدف) @@ -112,7 +112,7 @@ Actual Start Date,تاريخ البدء الفعلي Add,إضافة Add / Edit Taxes and Charges,إضافة / تعديل الضرائب والرسوم Add Child,إضافة الطفل -Add Serial No,إضافة رقم المسلسل +Add Serial No,إضافة رقم تسلسلي Add Taxes,إضافة الضرائب Add Taxes and Charges,إضافة الضرائب والرسوم Add or Deduct,إضافة أو خصم @@ -131,7 +131,7 @@ Address Line 2,العنوان سطر 2 Address Template,قالب عنوان Address Title,عنوان عنوان Address Title is mandatory.,عنوان عنوانها إلزامية. -Address Type,عنوان نوع +Address Type,نوع العنوان Address master.,عنوان رئيسي. Administrative Expenses,المصاريف الإدارية Administrative Officer,موظف إداري @@ -217,7 +217,7 @@ Amount to Bill,تصل إلى بيل An Customer exists with same name,موجود على العملاء مع نفس الاسم "An Item Group exists with same name, please change the item name or rename the item group",وجود فريق المدينة مع نفس الاسم، الرجاء تغيير اسم العنصر أو إعادة تسمية المجموعة البند "An item exists with same name ({0}), please change the item group name or rename the item",عنصر موجود مع نفس الاسم ( {0} ) ، الرجاء تغيير اسم المجموعة البند أو إعادة تسمية هذا البند -Analyst,المحلل +Analyst,محلل Annual,سنوي Another Period Closing Entry {0} has been made after {1},دخول أخرى الفترة الإنتهاء {0} أحرز بعد {1} Another Salary Structure {0} is active for employee {0}. Please make its status 'Inactive' to proceed.,"هيكل الرواتب أخرى {0} نشطة للموظف {0} . يرجى التأكد مكانتها ""غير نشطة "" والمضي قدما." @@ -266,15 +266,15 @@ Atleast one of the Selling or Buying must be selected,يجب تحديد الاق Atleast one warehouse is mandatory,واحدة على الاقل مستودع إلزامي Attach Image,إرفاق صورة Attach Letterhead,نعلق رأسية -Attach Logo,نعلق شعار -Attach Your Picture,نعلق صورتك +Attach Logo,إرفاق صورة الشعار/العلامة التجارية +Attach Your Picture,إرفاق صورتك Attendance,الحضور Attendance Date,تاريخ الحضور Attendance Details,تفاصيل الحضور Attendance From Date,الحضور من تاريخ Attendance From Date and Attendance To Date is mandatory,الحضور من التسجيل والحضور إلى تاريخ إلزامي Attendance To Date,الحضور إلى تاريخ -Attendance can not be marked for future dates,لا يمكن أن تكون علامة لحضور تواريخ مستقبلية +Attendance can not be marked for future dates,لا يمكن أن ىكون تاريخ الحضور تاريخ مستقبلي Attendance for employee {0} is already marked,الحضور للموظف {0} تم وضع علامة بالفعل Attendance record.,سجل الحضور. Authorization Control,إذن التحكم @@ -287,13 +287,13 @@ Automatically extract Job Applicants from a mail box , Automatically extract Leads from a mail box e.g.,استخراج الشراء تلقائيا من صندوق البريد على سبيل المثال Automatically updated via Stock Entry of type Manufacture/Repack,تحديثها تلقائيا عن طريق إدخال الأسهم الصنع نوع / أعد حزم Automotive,السيارات -Autoreply when a new mail is received,عندما رد تلقائي تلقي بريد جديد +Autoreply when a new mail is received,رد تلقائي عند تلقي بريد جديد Available,متاح Available Qty at Warehouse,الكمية المتاحة في مستودع Available Stock for Packing Items,الأسهم المتاحة للتعبئة وحدات "Available in BOM, Delivery Note, Purchase Invoice, Production Order, Purchase Order, Purchase Receipt, Sales Invoice, Sales Order, Stock Entry, Timesheet",المتاحة في BOM ، تسليم مذكرة ، شراء الفاتورة ، ترتيب الإنتاج، طلب شراء ، شراء استلام ، فاتورة المبيعات ، ترتيب المبيعات ، اسهم الدخول و الجدول الزمني Average Age,متوسط ​​العمر -Average Commission Rate,متوسط ​​سعر جنة +Average Commission Rate,متوسط ​​العمولة Average Discount,متوسط ​​الخصم Awesome Products,المنتجات رهيبة Awesome Services,خدمات رهيبة @@ -331,9 +331,9 @@ Bank Clearance Summary,بنك ملخص التخليص Bank Draft,البنك مشروع Bank Name,اسم البنك Bank Overdraft Account,حساب السحب على المكشوف المصرفي -Bank Reconciliation,البنك المصالحة -Bank Reconciliation Detail,البنك المصالحة تفاصيل -Bank Reconciliation Statement,بيان التسويات المصرفية +Bank Reconciliation,تسوية البنك +Bank Reconciliation Detail,تفاصيل تسوية البنك +Bank Reconciliation Statement,بيان تسوية البنك Bank Voucher,البنك قسيمة Bank/Cash Balance,بنك / النقد وما في حكمه Banking,مصرفي @@ -405,8 +405,8 @@ Bundle items at time of sale.,حزمة البنود في وقت البيع. Business Development Manager,مدير تطوير الأعمال Buying,شراء Buying & Selling,شراء وبيع -Buying Amount,شراء المبلغ -Buying Settings,شراء إعدادات +Buying Amount,مبلغ الشراء +Buying Settings,إعدادات الشراء "Buying must be checked, if Applicable For is selected as {0}",يجب أن يتم التحقق الشراء، إذا تم تحديد مطبق للك {0} C-Form,نموذج C- C-Form Applicable,C-نموذج قابل للتطبيق @@ -1025,7 +1025,7 @@ Extract Emails,استخراج رسائل البريد الإلكتروني FCFS Rate,FCFS قيم Failed: ,فشل: Family Background,الخلفية العائلية -Fax,بالفاكس +Fax,فاكس Features Setup,ميزات الإعداد Feed,أطعم Feed Type,إطعام نوع @@ -1041,7 +1041,7 @@ Financial / accounting year.,المالية / المحاسبة العام. Financial Analytics,تحليلات مالية Financial Services,الخدمات المالية Financial Year End Date,تاريخ نهاية السنة المالية -Financial Year Start Date,السنة المالية تاريخ بدء +Financial Year Start Date,تاريخ بدء السنة المالية Finished Goods,السلع تامة الصنع First Name,الاسم الأول First Responded On,أجاب أولا على @@ -1059,7 +1059,7 @@ Food,غذاء For Company,لشركة For Employee,لموظف For Employee Name,لاسم الموظف -For Price List,ل ائحة الأسعار +For Price List,لائحة الأسعار For Production,للإنتاج For Reference Only.,للإشارة فقط. For Sales Invoice,لفاتورة المبيعات @@ -1823,7 +1823,7 @@ Notify by Email on creation of automatic Material Request,إبلاغ عن طري Number Format,عدد تنسيق Offer Date,عرض التسجيل Office,مكتب -Office Equipments,معدات المكاتب +Office Equipments,أدوات المكتب Office Maintenance Expenses,مصاريف صيانة المكاتب Office Rent,مكتب للإيجار Old Parent,العمر الرئيسي @@ -1840,7 +1840,7 @@ Open Production Orders,أوامر مفتوحة الانتاج Open Tickets,تذاكر مفتوحة Opening (Cr),افتتاح (الكروم ) Opening (Dr),افتتاح ( الدكتور ) -Opening Date,فتح تاريخ +Opening Date,تاريخ الفتح Opening Entry,فتح دخول Opening Qty,فتح الكمية Opening Time,يفتح من الساعة @@ -1854,7 +1854,7 @@ Operation {0} is repeated in Operations Table,عملية {0} يتكرر في ج Operation {0} not present in Operations Table,عملية {0} غير موجودة في جدول العمليات Operations,عمليات Opportunity,فرصة -Opportunity Date,الفرصة تاريخ +Opportunity Date,تاريخ الفرصة Opportunity From,فرصة من Opportunity Item,فرصة السلعة Opportunity Items,فرصة الأصناف @@ -1914,9 +1914,9 @@ Packing Slip,زلة التعبئة Packing Slip Item,التعبئة الإغلاق زلة Packing Slip Items,التعبئة عناصر زلة Packing Slip(s) cancelled,زلة التعبئة (ق ) إلغاء -Page Break,الصفحة استراحة -Page Name,الصفحة اسم -Paid Amount,دفع المبلغ +Page Break,فاصل الصفحة +Page Name,اسم الصفحة +Paid Amount,المبلغ المدفوع Paid amount + Write Off Amount can not be greater than Grand Total,المبلغ المدفوع + شطب المبلغ لا يمكن أن يكون أكبر من المجموع الكلي Pair,زوج Parameter,المعلمة @@ -3128,7 +3128,7 @@ Users with this role are allowed to create / modify accounting entry before froz Users with this role are allowed to set frozen accounts and create / modify accounting entries against frozen accounts,يسمح للمستخدمين مع هذا الدور لضبط الحسابات المجمدة و إنشاء / تعديل القيود المحاسبية على حسابات مجمدة Utilities,خدمات Utility Expenses,مصاريف فائدة -Valid For Territories,صالحة للالأقاليم +Valid For Territories,صالحة للأقاليم Valid From,صالحة من Valid Upto,صالحة لغاية Valid for Territories,صالحة للالأقاليم @@ -3237,7 +3237,7 @@ Write Off Voucher,شطب قسيمة Wrong Template: Unable to find head row.,قالب الخطأ: تعذر العثور على صف الرأس. Year,عام Year Closed,مغلق العام -Year End Date,نهاية التاريخ العام +Year End Date,تاريخ نهاية العام Year Name,اسم العام Year Start Date,تاريخ بدء العام Year of Passing,اجتياز سنة @@ -3261,8 +3261,8 @@ You have entered duplicate items. Please rectify and try again.,لقد دخلت You may need to update: {0},قد تحتاج إلى تحديث : {0} You must Save the form before proceeding,يجب حفظ النموذج قبل الشروع Your Customer's TAX registration numbers (if applicable) or any general information,عميلك أرقام التسجيل الضريبي (إن وجدت) أو أي معلومات عامة -Your Customers,الزبائن -Your Login Id,تسجيل الدخول اسم المستخدم الخاص بك +Your Customers,العملاء +Your Login Id,تسجيل الدخول - اسم المستخدم الخاص بك Your Products or Services,المنتجات أو الخدمات الخاصة بك Your Suppliers,لديك موردون Your email address,عنوان البريد الإلكتروني الخاص بك diff --git a/erpnext/translations/el.csv b/erpnext/translations/el.csv index d918cf0266..4e1e05f8a7 100644 --- a/erpnext/translations/el.csv +++ b/erpnext/translations/el.csv @@ -41,8 +41,8 @@ A Product or Service,Ένα Προϊόν ή Υπηρεσία A Supplier exists with same name,Ένας προμηθευτής υπάρχει με το ίδιο όνομα A symbol for this currency. For e.g. $,Ένα σύμβολο για το νόμισμα αυτό. Για παράδειγμα $ AMC Expiry Date,AMC Ημερομηνία Λήξης -Abbr,Abbr -Abbreviation cannot have more than 5 characters,Συντομογραφία δεν μπορεί να έχει περισσότερα από 5 χαρακτήρες +Abbr,Συντ. +Abbreviation cannot have more than 5 characters,Μια συντομογραφία δεν μπορεί να έχει περισσότερα από 5 χαρακτήρες Above Value,Πάνω Value Absent,Απών Acceptance Criteria,Κριτήρια αποδοχής @@ -50,9 +50,9 @@ Accepted,Δεκτός Accepted + Rejected Qty must be equal to Received quantity for Item {0},Αποδεκτές + Απορρίπτεται Ποσότητα πρέπει να είναι ίση με Ελήφθη ποσότητα για τη θέση {0} Accepted Quantity,ΠΟΣΟΤΗΤΑ Accepted Warehouse,Αποδεκτές αποθήκη -Account,λογαριασμός -Account Balance,Υπόλοιπο λογαριασμού -Account Created: {0},Ο λογαριασμός Δημιουργήθηκε : {0} +Account,Λογαριασμός +Account Balance,Υπόλοιπο Λογαριασμού +Account Created: {0},Ο λογαριασμός δημιουργήθηκε : {0} Account Details,Στοιχεία Λογαριασμού Account Head,Επικεφαλής λογαριασμού Account Name,Όνομα λογαριασμού diff --git a/erpnext/translations/es.csv b/erpnext/translations/es.csv index 192e373f8a..356691928d 100644 --- a/erpnext/translations/es.csv +++ b/erpnext/translations/es.csv @@ -59,10 +59,10 @@ Account Name,Nombre de la Cuenta Account Type,Tipo de Cuenta "Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'","Balance de la cuenta ya en Crédito, no le está permitido establecer 'Balance Debe Ser' como 'Débito'" "Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'","Balance de la cuenta ya en Débito, no le está permitido establecer ""Balance Debe Ser"" como ""Crédito""" -Account for the warehouse (Perpetual Inventory) will be created under this Account.,Cuenta para el almacén ( inventario permanente ) se creará en esta Cuenta. +Account for the warehouse (Perpetual Inventory) will be created under this Account.,Cuenta para el almacén ( Inventario Permanente ) se creará en esta Cuenta. Account head {0} created,Cabeza de cuenta {0} creado Account must be a balance sheet account,La cuenta debe ser una cuenta de balance -Account with child nodes cannot be converted to ledger,Cuenta con nodos hijos no se puede convertir en el libro mayor +Account with child nodes cannot be converted to ledger,Cuenta con nodos hijos no se puede convertir a cuentas del libro mayor Account with existing transaction can not be converted to group.,Cuenta con transacción existente no se puede convertir al grupo. Account with existing transaction can not be deleted,Cuenta con transacción existente no se puede eliminar Account with existing transaction cannot be converted to ledger,Cuenta con la transacción existente no se puede convertir en el libro mayor @@ -74,7 +74,7 @@ Account {0} has been entered more than once for fiscal year {1},Cuenta {0} se ha Account {0} is frozen,Cuenta {0} está congelada Account {0} is inactive,Cuenta {0} está inactiva Account {0} is not valid,Cuenta {0} no es válida -Account {0} must be of type 'Fixed Asset' as Item {1} is an Asset Item,Cuenta {0} debe ser de tipo 'Activos Fijos' como Artículo {1} es un Elemento de Activo +Account {0} must be of type 'Fixed Asset' as Item {1} is an Asset Item,Cuenta {0} debe ser de tipo 'Activos Fijos' porque Artículo {1} es un Elemento de Activo Fijo Account {0}: Parent account {1} can not be a ledger,Cuenta {0}: Cuenta Padre {1} no puede ser un libro de contabilidad Account {0}: Parent account {1} does not belong to company: {2},Cuenta {0}: Cuenta Padre {1} no pertenece a la compañía: {2} Account {0}: Parent account {1} does not exist,Cuenta {0}: Cuenta Padre {1} no existe @@ -83,7 +83,7 @@ Account: {0} can only be updated via \ Stock Transactions,Cuenta: {0} sólo Accountant,Contador Accounting,Contabilidad "Accounting Entries can be made against leaf nodes, called","Los comentarios de Contabilidad se pueden hacer contra los nodos hoja , llamada" -"Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.","Asiento contable congelado hasta la fecha , nadie puede hacer / modificar la entrada , excepto el papel se especifica a continuación ." +"Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.","Asiento contable congelado hasta la fecha , nadie puede hacer / modificar la entrada , excepto el roll que se especifica a continuación ." Accounting journal entries.,Entradas de diario de contabilidad. Accounts,Cuentas Accounts Browser,Navegador de Cuentas @@ -111,7 +111,7 @@ Actual Qty: Quantity available in the warehouse.,Cantidad Actual: Cantidad dispo Actual Quantity,Cantidad Real Actual Start Date,Fecha de Comienzo Real Add,Añadir -Add / Edit Taxes and Charges,Añadir / Editar las tasas y cargos +Add / Edit Taxes and Charges,Añadir / Editar Impuestos y Cargos Add Child,Añadir Hijo Add Serial No,Añadir Serial No Add Taxes,Añadir impuestos @@ -379,11 +379,11 @@ Birthday,Cumpleaños Block Date,Bloquear Fecha Block Days,Bloquear Días Block leave applications by department.,Bloquee aplicaciones de permiso por departamento. -Blog Post,Blog -Blog Subscriber,Blog suscriptor +Blog Post,Entrada al Blog +Blog Subscriber,Suscriptor del Blog Blood Group,Grupos Sanguíneos -Both Warehouse must belong to same Company,Tanto Almacén debe pertenecer a una misma empresa -Box,caja +Both Warehouse must belong to same Company,Ambos Almacenes deben pertenecer a una misma empresa +Box,Caja Branch,Rama Brand,Marca Brand Name,Marca @@ -391,7 +391,7 @@ Brand master.,Master Marca . Brands,Marcas Breakdown,desglose Broadcasting,radiodifusión -Brokerage,corretaje +Brokerage,Corretaje Budget,Presupuesto Budget Allocated,Presupuesto asignado Budget Detail,Detalle del Presupuesto @@ -399,9 +399,9 @@ Budget Details,Presupuesto detalles Budget Distribution,Presupuesto de Distribución Budget Distribution Detail,Detalle Presupuesto Distribución Budget Distribution Details,Detalles Presupuesto de Distribución -Budget Variance Report,Presupuesto Varianza Reportar +Budget Variance Report,Informe de Varianza en el Presupuesto Budget cannot be set for Group Cost Centers,El presupuesto no se puede establecer para Centros de costes del Grupo -Build Report,Informe Construir +Build Report,Construir Informe Bundle items at time of sale.,Agrupe elementos en el momento de la venta. Business Development Manager,Gerente de Desarrollo de Negocios Buying,Compra @@ -423,16 +423,16 @@ CENVAT Service Tax Cess 2,Servicio CENVAT Impuesto Cess 2 Calculate Based On,Calcular basado en Calculate Total Score,Calcular Puntaje Total Calendar Events,Calendario de Eventos -Call,llamada -Calls,llamadas -Campaign,campaña +Call,Llamada +Calls,Llamadas +Campaign,Campaña Campaign Name,Nombre de la campaña -Campaign Name is required,El nombre es necesario Campaña -Campaign Naming By,Naming Campaña Por -Campaign-.####,Campaña . # # # # +Campaign Name is required,Es necesario ingresar el nombre de la Campaña +Campaign Naming By,Nombramiento de la Campaña Por +Campaign-.####,Campaña-.#### Can be approved by {0},Puede ser aprobado por {0} "Can not filter based on Account, if grouped by Account","No se puede filtrar en función de la cuenta , si se agrupan por cuenta" -"Can not filter based on Voucher No, if grouped by Voucher","No se puede filtrar en función de la hoja no , si agrupados por Bono" +"Can not filter based on Voucher No, if grouped by Voucher","No se puede filtrar en función del número de hoja, si agrupados por Bono" Can refer row only if the charge type is 'On Previous Row Amount' or 'Previous Row Total',"Puede referirse fila sólo si el tipo de carga es 'On anterior Importe Fila ""o"" Anterior Fila Total """ Cancel Material Visit {0} before cancelling this Customer Issue,Cancelar material Visita {0} antes de cancelar esta edición al Cliente Cancel Material Visits {0} before cancelling this Maintenance Visit,Cancelar Visitas Materiales {0} antes de cancelar el Mantenimiento Visita @@ -460,7 +460,7 @@ Cannot select charge type as 'On Previous Row Amount' or 'On Previous Row Total' Cannot select charge type as 'On Previous Row Amount' or 'On Previous Row Total' for valuation. You can select only 'Total' option for previous row amount or previous row total,"No se puede seleccionar el tipo de carga como 'On Fila Anterior Importe ' o ' En Fila Anterior Total "" para la valoración. Sólo puede seleccionar la opción ""Total"" para la cantidad fila anterior o siguiente de filas total" Cannot set as Lost as Sales Order is made.,No se puede definir tan perdido como está hecha de órdenes de venta . Cannot set authorization on basis of Discount for {0},No se puede establecer la autorización sobre la base de Descuento para {0} -Capacity,capacidad +Capacity,Capacidad Capacity Units,Unidades de Capacidad Capital Account,cuenta de Capital Capital Equipments,Equipos de capitales @@ -468,8 +468,8 @@ Carry Forward,llevar adelante Carry Forwarded Leaves,Llevar Hojas reenviados Case No(s) already in use. Try from Case No {0},Case No. (s ) ya en uso. Trate de Caso n {0} Case No. cannot be 0,Caso No. No puede ser 0 -Cash,efectivo -Cash In Hand,Efectivo disponible +Cash,Efectivo +Cash In Hand,Efectivo Disponible Cash Voucher,Bono Cash Cash or Bank Account is mandatory for making payment entry,Dinero en efectivo o cuenta bancaria es obligatoria para la toma de entrada de pago Cash/Bank Account,Cuenta de Caja / Banco @@ -479,11 +479,11 @@ Change UOM for an Item.,Cambie UOM para un artículo . Change the starting / current sequence number of an existing series.,Cambie el inicio / número de secuencia actual de una serie existente . Channel Partner,Channel Partner Charge of type 'Actual' in row {0} cannot be included in Item Rate,Cargo del tipo ' real ' en la fila {0} no puede ser incluido en el Punto de Cambio -Chargeable,cobrable +Chargeable,Cobrable Charity and Donations,Caridad y Donaciones Chart Name,Nombre del diagrama Chart of Accounts,Plan General de Contabilidad -Chart of Cost Centers,Gráfico de Centros de Coste +Chart of Cost Centers,Gráfico de Centros de Costos Check how the newsletter looks in an email by sending it to your email.,Comprobar cómo el boletín se ve en un correo electrónico mediante el envío a su correo electrónico . "Check if recurring invoice, uncheck to stop recurring or put proper End Date","Compruebe si se repite la factura , desmarque para detener recurrente o poner fin propio Fecha" "Check if you need automatic recurring invoices. After submitting any sales invoice, Recurring section will be visible.","Compruebe si necesita facturas recurrentes automáticos. Después de la presentación de cualquier factura de venta , sección recurrente será visible." @@ -493,45 +493,45 @@ Check this if you want to show in website,Seleccione esta opción si desea que a Check this to disallow fractions. (for Nos),Active esta opción para no permitir fracciones. ( para refs ) Check this to pull emails from your mailbox,Active esta opción para tirar de correos electrónicos de su buzón Check to activate,Compruebe para activar -Check to make Shipping Address,Revise para asegurarse de dirección del envío +Check to make Shipping Address,Seleccione para hacer ésta la de dirección de envío Check to make primary address,Verifique que la dirección primaria -Chemical,químico +Chemical,Químico Cheque,Cheque Cheque Date,Cheque Fecha Cheque Number,Número de Cheque Child account exists for this account. You can not delete this account.,Cuenta Child existe para esta cuenta. No es posible eliminar esta cuenta. -City,ciudad +City,Ciudad City/Town,Ciudad / Pueblo Claim Amount,Reclamación Importe Claims for company expense.,Las reclamaciones por los gastos de la empresa. Class / Percentage,Clase / Porcentaje -Classic,clásico +Classic,Clásico Clear Table,Borrar la tabla Clearance Date,Liquidación Fecha Clearance Date not mentioned,Liquidación La fecha no se menciona Clearance date cannot be before check date in row {0},Fecha de Liquidación no puede ser antes de la fecha de verificación de la fila {0} Click on 'Make Sales Invoice' button to create a new Sales Invoice.,"Haga clic en el botón ' Hacer la factura de venta ""para crear una nueva factura de venta ." Click on a link to get options to expand get options , -Client,cliente +Client,Cliente Close Balance Sheet and book Profit or Loss.,Cerrar Balance General y el libro de pérdidas y ganancias . -Closed,cerrado +Closed,Cerrado Closing (Cr),Cierre (Cr) Closing (Dr),Cierre (Dr) Closing Account Head,Cierre Head Cuenta Closing Account {0} must be of type 'Liability',Cuenta {0} de cierre debe ser de tipo ' Responsabilidad ' -Closing Date,fecha tope +Closing Date,Fecha de Cierre Closing Fiscal Year,Cerrando el Año Fiscal Closing Qty,Cantidad de Clausura Closing Value,Valor de Cierre CoA Help,CoA Ayuda -Code,código +Code,Código Cold Calling,Llamadas en frío -Color,color +Color,Color Column Break,Salto de columna Comma separated list of email addresses,Lista separada por comas de direcciones de correo electrónico separados -Comment,comentario +Comment,Comentario Comments,Comentarios -Commercial,comercial +Commercial,Comercial Commission,comisión Commission Rate,Comisión de Tarifas Commission Rate (%),Comisión de Cambio (% ) @@ -542,14 +542,14 @@ Communication HTML,Comunicación HTML Communication History,Historia de Comunicación Communication log.,Registro de Comunicación. Communications,Comunicaciones -Company,empresa +Company,Empresa Company (not Customer or Supplier) master.,Company (no cliente o proveedor ) maestro. Company Abbreviation,Abreviatura de la empresa Company Details,Datos de la empresa Company Email,Empresa Email "Company Email ID not found, hence mail not sent","Empresa Email ID no se encuentra, por lo tanto, no envíe por correo enviado" Company Info,Información de la empresa -Company Name,nombre de compañía +Company Name,Nombre de compañía Company Settings,Configuración de la compañía Company is missing in warehouses {0},Compañía no se encuentra en los almacenes {0} Company is required,Se requiere Compañía @@ -557,14 +557,16 @@ Company registration numbers for your reference. Example: VAT Registration Numbe Company registration numbers for your reference. Tax numbers etc.,"Los números de registro de la empresa para su referencia . Números fiscales, etc" "Company, Month and Fiscal Year is mandatory","Company, mes y del año fiscal es obligatoria" Compensatory Off,compensatorio -Complete,completo +Complete,Completar Complete Setup,Instalación completa Completed,terminado Completed Production Orders,Órdenes de fabricación completadas -Completed Qty,Completado Cantidad +Completed Qty,"Cantidad Completada +" Completion Date,Fecha de Terminación Completion Status,Estado de finalización -Computer,ordenador +Computer,"Computador +" Computers,Computadoras Confirmation Date,Confirmación Fecha Confirmed orders from Customers.,Pedidos en firme de los clientes. @@ -572,30 +574,31 @@ Consider Tax or Charge for,Considere impuesto ni un cargo por Considered as Opening Balance,Considerado como balance de apertura Considered as an Opening Balance,Considerado como un saldo inicial Consultant,consultor -Consulting,Consulting +Consulting,Consuloría Consumable,consumible Consumable Cost,Costo de consumibles Consumable cost per hour,Costo de consumibles por hora Consumed Qty,consumido Cantidad Consumer Products,Productos de Consumo -Contact,contacto +Contact,Contacto Contact Control,Contactar con el Control Contact Desc,Contactar con la descripción -Contact Details,Datos de contacto +Contact Details,Datos del Contacto Contact Email,Correo electrónico de contacto -Contact HTML,Contactar con HTML -Contact Info,Contacto +Contact HTML,"HTML del Contacto +" +Contact Info,Información del Contacto Contact Mobile No,Contacto Móvil No Contact Name,Nombre de contacto Contact No.,Contacto No. Contact Person,persona de Contacto Contact Type,Tipo de contacto -Contact master.,Contacto amo. +Contact master.,Contacto (principal). Contacts,Contactos -Content,contenido +Content,Contenido Content Type,Tipo de contenido Contra Voucher,Contra Voucher -Contract,contrato +Contract,Contrato Contract End Date,Fin del contrato Fecha Contract End Date must be greater than Date of Joining,Fin del contrato Fecha debe ser mayor que Fecha de acceso Contribution (%),Contribución (% ) @@ -611,8 +614,9 @@ Convert to Ledger,Convertir a Ledger Converted,convertido Copy From Item Group,Copiar de Grupo Tema Cosmetics,productos cosméticos -Cost Center,Centro de Costo -Cost Center Details,Centro de coste detalles +Cost Center,Centro de Costos +Cost Center Details,"Detalles del Centro de Costos +" Cost Center Name,Costo Nombre del centro Cost Center is required for 'Profit and Loss' account {0},"Se requiere de centros de coste para la cuenta "" Pérdidas y Ganancias "" {0}" Cost Center is required in row {0} in Taxes table for type {1},Se requiere de centros de coste en la fila {0} en la tabla Impuestos para el tipo {1} @@ -621,14 +625,14 @@ Cost Center with existing transactions can not be converted to ledger,Centro de Cost Center {0} does not belong to Company {1},Centro de coste {0} no pertenece a la empresa {1} Cost of Goods Sold,Costo de las Ventas Costing,Costeo -Country,país +Country,País Country Name,Nombre del país Country wise default Address Templates,Plantillas País sabia dirección predeterminada "Country, Timezone and Currency","País , Zona horaria y moneda" Create Bank Voucher for the total salary paid for the above selected criteria,Cree Banco Vale para el salario total pagado por los criterios seleccionados anteriormente Create Customer,Crear cliente Create Material Requests,Crear solicitudes de material -Create New,Crear nuevo +Create New,Crear Nuevo Create Opportunity,Crear Oportunidad Create Production Orders,Crear órdenes de producción Create Quotation,Cree Cotización @@ -639,12 +643,12 @@ Create Stock Ledger Entries when you submit a Sales Invoice,Crear Ledger entrada Create rules to restrict transactions based on values.,Crear reglas para restringir las transacciones basadas en valores . Created By,Creado por Creates salary slip for above mentioned criteria.,Crea nómina de los criterios antes mencionados. -Creation Date,Fecha de creación +Creation Date,Fecha de Creación Creation Document No,Creación del documento No Creation Document Type,Tipo de creación de documentos Creation Time,Momento de la creación Credentials,cartas credenciales -Credit,crédito +Credit,Crédito Credit Amt,crédito Amt Credit Card,Tarjeta de Crédito Credit Card Voucher,Vale la tarjeta de crédito @@ -653,7 +657,7 @@ Credit Days,días de Crédito Credit Limit,Límite de Crédito Credit Note,Nota de Crédito Credit To,crédito Para -Currency,moneda +Currency,Divisa Currency Exchange,Cambio de divisas Currency Name,Nombre de Divisa Currency Settings,Configuración de Moneda @@ -669,10 +673,10 @@ Current Liabilities,pasivo exigible Current Stock,Stock actual Current Stock UOM,Stock actual UOM Current Value,Valor actual -Custom,costumbre +Custom,Personalizar Custom Autoreply Message,Mensaje de autorespuesta personalizado Custom Message,Mensaje personalizado -Customer,cliente +Customer,Cliente Customer (Receivable) Account,Cliente ( por cobrar ) Cuenta Customer / Item Name,Nombre del cliente / artículo Customer / Lead Address,Cliente / Dirección de plomo @@ -695,7 +699,7 @@ Customer Issue,Problema al Cliente Customer Issue against Serial No.,Problema al cliente contra el número de serie Customer Name,Nombre del cliente Customer Naming By,Naming Cliente Por -Customer Service,servicio al cliente +Customer Service,Servicio al Cliente Customer database.,Base de datos de clientes . Customer is required,Se requiere al Cliente Customer master.,Maestro de clientes . @@ -713,11 +717,11 @@ Customize,Personalizar Customize the Notification,Personalice la Notificación Customize the introductory text that goes as a part of that email. Each transaction has a separate introductory text.,Personalizar el texto de introducción que va como una parte de ese correo electrónico. Cada transacción tiene un texto introductorio separada. DN Detail,Detalle DN -Daily,diario +Daily,Diario Daily Time Log Summary,Resumen diario Hora de registro Database Folder ID,Base de Datos de Identificación de carpetas Database of potential customers.,Base de datos de clientes potenciales. -Date,fecha +Date,Fecha Date Format,Formato de la fecha Date Of Retirement,Fecha de la jubilación Date Of Retirement must be greater than Date of Joining,Fecha de la jubilación debe ser mayor que Fecha de acceso @@ -777,10 +781,10 @@ Default settings for accounting transactions.,Los ajustes por defecto para las t Default settings for buying transactions.,Ajustes por defecto para la compra de las transacciones . Default settings for selling transactions.,Los ajustes por defecto para la venta de las transacciones . Default settings for stock transactions.,Los ajustes por defecto para las transacciones bursátiles. -Defense,defensa +Defense,Defensa "Define Budget for this Cost Center. To set budget action, see
Company Master","Definir Presupuesto para este centro de coste . Para configurar la acción presupuestaria, ver Company Maestro < / a>" -Del,Del -Delete,borrar +Del,Sup. +Delete,Eliminar Delete {0} {1}?,Eliminar {0} {1} ? Delivered,liberado Delivered Items To Be Billed,Material que se adjunta a facturar @@ -807,37 +811,37 @@ Department,departamento Department Stores,Tiendas por Departamento Depends on LWP,Depende LWP Depreciation,depreciación -Description,descripción +Description,Descripción Description HTML,Descripción HTML Designation,designación Designer,diseñador Detailed Breakup of the totals,Breakup detallada de los totales Details,Detalles -Difference (Dr - Cr),Diferencia ( Dr - Cr) -Difference Account,cuenta Diferencia +Difference (Dr - Cr),Diferencia ( Db - Cr) +Difference Account,Cuenta para la Diferencia "Difference Account must be a 'Liability' type account, since this Stock Reconciliation is an Opening Entry","Cuenta diferencia debe ser una cuenta de tipo ' Responsabilidad ' , ya que esta Stock reconciliación es una entrada de Apertura" Different UOM for items will lead to incorrect (Total) Net Weight value. Make sure that Net Weight of each item is in the same UOM.,UOM diferente para elementos dará lugar a incorrecto ( Total) Valor neto Peso . Asegúrese de que peso neto de cada artículo esté en la misma UOM . -Direct Expenses,gastos directos -Direct Income,Ingreso directo -Disable,inhabilitar -Disable Rounded Total,Desactivar Total redondeado +Direct Expenses,Gastos Directos +Direct Income,Ingreso Directo +Disable,Inhabilitar +Disable Rounded Total,Desactivar Total Redondeado Disabled,discapacitado Discount %,Descuento% Discount %,Descuento% Discount (%),Descuento (% ) Discount Amount,Cantidad de Descuento "Discount Fields will be available in Purchase Order, Purchase Receipt, Purchase Invoice","Los campos descuento estará disponible en orden de compra, recibo de compra , factura de compra" -Discount Percentage,Descuento de porcentaje +Discount Percentage,Porcentaje de Descuento Discount Percentage can be applied either against a Price List or for all Price List.,Porcentaje de descuento puede ser aplicado ya sea en contra de una lista de precios o para toda la lista de precios. Discount must be less than 100,El descuento debe ser inferior a 100 Discount(%),Descuento (% ) Dispatch,despacho Display all the individual items delivered with the main items,Ver todas las partidas individuales se suministran con los elementos principales Distribute transport overhead across items.,Distribuir por encima transporte a través de artículos. -Distribution,distribución +Distribution,Distribución Distribution Id,Id Distribución -Distribution Name,Distribución Nombre -Distributor,distribuidor +Distribution Name,Nombre del Distribución +Distributor,Distribuidor Divorced,divorciado Do Not Contact,No entre en contacto Do not show any symbol like $ etc next to currencies.,No volver a mostrar cualquier símbolo como $ etc junto a monedas. @@ -850,30 +854,30 @@ Do you really want to UNSTOP this Material Request?,¿De verdad quiere destapar Do you really want to stop production order: , Doc Name,Nombre del documento Doc Type,Tipo Doc. -Document Description,documento Descripción -Document Type,Tipo de documento +Document Description,Descripción del Documento +Document Type,Tipo de Documento Documents,Documentos -Domain,dominio +Domain,Dominio Don't send Employee Birthday Reminders,No envíe Empleado Birthday Reminders -Download Materials Required,Descarga Materiales necesarios -Download Reconcilation Data,Descarga reconciliación de datos +Download Materials Required,Descargar Materiales Necesarios +Download Reconcilation Data,Descarga Reconciliación de Datos Download Template,Descargar Plantilla Download a report containing all raw materials with their latest inventory status,Descargar un informe con todas las materias primas con su estado actual inventario "Download the Template, fill appropriate data and attach the modified file.","Descarga la plantilla , rellenar los datos correspondientes y adjuntar el archivo modificado." -"Download the Template, fill appropriate data and attach the modified file.All dates and employee combination in the selected period will come in the template, with existing attendance records","Descarga la plantilla, rellenar los datos correspondientes y adjuntar el archivo modificado. Todas las fechas y combinación empleado en el período seleccionado vendrán en la plantilla, con los registros de asistencia existentes" -Draft,borrador +"Download the Template, fill appropriate data and attach the modified file.All dates and employee combination in the selected period will come in the template, with existing attendance records","Descarga la plantilla, rellenar los datos correspondientes y adjuntar el archivo modificado. Todas las fechas y combinaciones de empleados en el período seleccionado vendrán en la plantilla, con los registros de asistencia existentes" +Draft,Borrador Dropbox,Dropbox Dropbox Access Allowed,Dropbox Acceso mascotas -Dropbox Access Key,Dropbox clave de acceso -Dropbox Access Secret,Dropbox Acceso Secreto +Dropbox Access Key,Clave de Acceso de Dropbox +Dropbox Access Secret,Acceso Secreto de Dropbox Due Date,Fecha de vencimiento Due Date cannot be after {0},Fecha de vencimiento no puede ser posterior a {0} Due Date cannot be before Posting Date,Fecha de vencimiento no puede ser anterior Fecha de publicación Duplicate Entry. Please check Authorization Rule {0},"Duplicate Entry. Por favor, consulte Autorización Rule {0}" Duplicate Serial No entered for Item {0},Duplicar Serial No entró a la partida {0} -Duplicate entry,Duplicate entry +Duplicate entry,Entrada Duplicada Duplicate row {0} with same {1},Duplicar fila {0} con el mismo {1} -Duties and Taxes,Derechos e impuestos +Duties and Taxes,Derechos e Impuestos ERPNext Setup,Configuración ERPNext Earliest,Primeras Earnest Money,dinero Earnest @@ -885,7 +889,7 @@ Edit,editar Edu. Cess on Excise,Edu. Cess sobre Impuestos Especiales Edu. Cess on Service Tax,Edu. Impuesto sobre el Servicio de Impuestos Edu. Cess on TDS,Edu. Impuesto sobre el TDS -Education,educación +Education,Educación Educational Qualification,Capacitación para la Educación Educational Qualification Details,Educational Qualification Detalles Eg. smsgateway.com/api/send_sms.cgi,Eg . smsgateway.com / api / send_sms.cgi @@ -943,9 +947,9 @@ End Date,Fecha de finalización End Date can not be less than Start Date,Fecha de finalización no puede ser inferior a Fecha de Inicio End date of current invoice's period,Fecha de finalización del periodo de facturación actual End of Life,Final de la Vida -Energy,energía -Engineer,ingeniero -Enter Verification Code,Ingrese el código de verificación +Energy,Energía +Engineer,Ingeniero +Enter Verification Code,Ingrese el Código de Verificación Enter campaign name if the source of lead is campaign.,Ingrese nombre de la campaña si la fuente del plomo es la campaña . Enter department to which this Contact belongs,Introduzca departamento al que pertenece este Contacto Enter designation of this Contact,Introduzca designación de este contacto @@ -957,8 +961,8 @@ Enter the company name under which Account Head will be created for this Supplie Enter url parameter for message,Introduzca el parámetro url para el mensaje Enter url parameter for receiver nos,Introduzca el parámetro url para el receptor nos Entertainment & Leisure,Entretenimiento y Ocio -Entertainment Expenses,gastos de Entretenimiento -Entries,entradas +Entertainment Expenses,Gastos de Entretenimiento +Entries,Entradas Entries against , Entries are not allowed against this Fiscal Year if the year is closed.,"Las entradas no están permitidos en contra de este año fiscal , si el año está cerrado." Equity,equidad @@ -1026,12 +1030,12 @@ Extract Emails,extraer correos electrónicos FCFS Rate,FCFS Cambio Failed: ,Error: Family Background,antecedentes familiares -Fax,fax +Fax,Fax Features Setup,Características del programa de instalación -Feed,pienso -Feed Type,Tipo de alimentación +Feed,Fuente +Feed Type,Tipo de Fuente Feedback,feedback -Female,femenino +Female,Femenino Fetch exploded BOM (including sub-assemblies),Fetch BOM explotado (incluyendo subconjuntos ) "Field available in Delivery Note, Quotation, Sales Invoice, Sales Order","El campo disponible en la nota de entrega , la cita , la factura de venta , órdenes de venta" Files Folder ID,Carpeta de archivos ID @@ -1046,15 +1050,15 @@ Financial Year Start Date,Ejercicio Fecha de Inicio Finished Goods,productos terminados First Name,Nombre First Responded On,Primero respondió el -Fiscal Year,año fiscal +Fiscal Year,Año Fiscal Fiscal Year Start Date and Fiscal Year End Date are already set in Fiscal Year {0},Año fiscal Fecha de Inicio y Fin de ejercicio Fecha ya están establecidas en el Año Fiscal {0} Fiscal Year Start Date and Fiscal Year End Date cannot be more than a year apart.,Año fiscal Fecha de Inicio y Fin de ejercicio La fecha no puede ser más que un año de diferencia. Fiscal Year Start Date should not be greater than Fiscal Year End Date,Año fiscal Fecha de inicio no debe ser mayor de Fin de ejercicio Fecha -Fixed Asset,activos Fijos +Fixed Asset,Activos Fijos Fixed Assets,Activos Fijos Follow via Email,Siga a través de correo electrónico "Following table will show values if items are sub - contracted. These values will be fetched from the master of ""Bill of Materials"" of sub - contracted items.","La siguiente tabla se muestran los valores si los artículos son sub - contratado. Estos valores se pueden recuperar desde el maestro de la "" Lista de materiales "" de los sub - elementos contratados." -Food,comida +Food,Comida "Food, Beverage & Tobacco","Alimentos, Bebidas y Tabaco" "For 'Sales BOM' items, Warehouse, Serial No and Batch No will be considered from the 'Packing List' table. If Warehouse and Batch No are same for all packing items for any 'Sales BOM' item, those values can be entered in the main Item table, values will be copied to 'Packing List' table.","Para los artículos 'BOM Ventas', bodega, Número de Serie y Lote No se considerará a partir de la tabla de ""Packing List"". Si Almacén y lotes No son las mismas para todos los elementos de embalaje para cualquier artículo 'BOM Sales', esos valores se pueden introducir en el cuadro principal del artículo, los valores se copiarán a la mesa ""Packing List""." For Company,Para la empresa @@ -1077,8 +1081,8 @@ Fraction Units,Unidades de fracciones Freeze Stock Entries,Helada Stock comentarios Freeze Stocks Older Than [Days],Congele Acciones Older Than [ días ] Freight and Forwarding Charges,Freight Forwarding y Cargos -Friday,viernes -From,desde +Friday,Viernes +From,Desde From Bill of Materials,De la lista de materiales From Company,De Compañía From Currency,De moneda @@ -1091,11 +1095,11 @@ From Date must be before To Date,Desde la fecha debe ser antes de la fecha From Date should be within the Fiscal Year. Assuming From Date = {0},De fecha debe estar dentro del año fiscal. Suponiendo Desde Fecha = {0} From Delivery Note,De la nota de entrega From Employee,De Empleado -From Lead,De plomo +From Lead,De la iniciativa From Maintenance Schedule,Desde Programa de mantenimiento From Material Request,Desde Solicitud de material From Opportunity,De Oportunidades -From Package No.,Del N º Paquete +From Package No.,Del Paquete N º From Purchase Order,De la Orden de Compra From Purchase Receipt,Desde recibo de compra From Quotation,desde la cotización @@ -1107,7 +1111,7 @@ From and To dates required,Desde y Hasta la fecha solicitada From value must be less than to value in row {0},De valor debe ser inferior al valor de la fila {0} Frozen,congelado Frozen Accounts Modifier,Frozen Accounts modificador -Fulfilled,cumplido +Fulfilled,Cumplido Full Name,Nombre Completo Full-time,De jornada completa Fully Billed,Totalmente Facturad @@ -1178,15 +1182,15 @@ HR Manager,Gerente de Recursos Humanos HR Settings,Configuración de recursos humanos HTML / Banner that will show on the top of product list.,HTML / Banner que aparecerá en la parte superior de la lista de productos. Half Day,Medio Día -Half Yearly,semestral +Half Yearly,Semestral Half-yearly,Semestral Happy Birthday!,¡Feliz cumpleaños! -Hardware,hardware +Hardware,Hardware Has Batch No,Tiene lotes No Has Child Node,Tiene Nodo Niño Has Serial No,Tiene de serie n Head of Marketing and Sales,Director de Marketing y Ventas -Header,encabezamiento +Header,Encabezado Health Care,Cuidado de la Salud Health Concerns,Preocupaciones de salud Health Details,Detalles de la Salud @@ -1203,11 +1207,11 @@ Holiday,fiesta Holiday List,Lista de vacaciones Holiday List Name,Lista de nombres de vacaciones Holiday master.,Master de vacaciones . -Holidays,vacaciones -Home,casa +Holidays,Vacaciones +Home,Casa Host,anfitrión "Host, Email and Password required if emails are to be pulled","Host , correo electrónico y la contraseña requerida si los correos electrónicos son para ser tirado" -Hour,hora +Hour,Hora Hour Rate,Hora de Cambio Hour Rate Labour,Hora Cambio del Trabajo Hours,Horas @@ -1243,7 +1247,7 @@ If you have Sales Team and Sale Partners (Channel Partners) they can be tagged "If you have created a standard template in Sales Taxes and Charges Master, select one and click on the button below.","Si ha creado un modelo estándar de las tasas y cargos de venta principales, seleccione uno y haga clic en el botón de abajo ." "If you have long print formats, this feature can be used to split the page to be printed on multiple pages with all headers and footers on each page","Si usted tiene formatos de impresión largos , esta característica puede ser utilizada para dividir la página que se imprimirá en varias páginas con todos los encabezados y pies de página en cada página" If you involve in manufacturing activity. Enables Item 'Is Manufactured',Si usted involucra en la actividad manufacturera . Permite artículo ' está fabricado ' -Ignore,pasar por alto +Ignore,Pasar por Alto Ignore Pricing Rule,No haga caso de la Regla Precios Ignored: ,Ignorado: Image,imagen @@ -1252,7 +1256,7 @@ Implementation Partner,socio de implementación Import Attendance,Asistencia de importación Import Failed!,Import Error ! Import Log,Importar registro -Import Successful!,Importación correcta ! +Import Successful!,¡Importación correcta! Imports,Importaciones In Hours,En Horas In Process,En proceso @@ -1271,9 +1275,9 @@ In Words will be visible once you save the Sales Order.,En palabras serán visib Incentives,Incentivos Include Reconciled Entries,Incluya los comentarios conciliadas Include holidays in Total no. of Working Days,Incluya vacaciones en total no. de días laborables -Income,ingresos +Income,Ingresos Income / Expense,Ingresos / gastos -Income Account,cuenta de Ingresos +Income Account,Cuenta de Ingresos Income Booked,Ingresos Reservados Income Tax,Impuesto sobre la Renta Income Year to Date,Ingresos Año a la Fecha @@ -1287,7 +1291,7 @@ Indicates that the package is a part of this delivery (Only Draft),Indica que el Indirect Expenses,gastos indirectos Indirect Income,Ingresos Indirectos Individual,individual -Industry,industria +Industry,Industria Industry Type,Tipo de Industria Inspected By,Inspección realizada por Inspection Criteria,Criterios de Inspección @@ -1304,11 +1308,11 @@ Installation record for a Serial No.,Registro de la instalación para un número Installed Qty,Cantidad instalada Instructions,instrucciones Integrate incoming support emails to Support Ticket,Integrar los correos electrónicos de apoyo recibidas de Apoyo Ticket -Interested,interesado -Intern,interno -Internal,interno +Interested,Interesado +Intern,Interno +Internal,Interno Internet Publishing,Internet Publishing -Introduction,introducción +Introduction,Introducción Invalid Barcode,Código de barras no válido Invalid Barcode or Serial No,Código de barras de serie no válido o No Invalid Mail Server. Please rectify and try again.,Servidor de correo válida . Por favor rectifique y vuelva a intentarlo . @@ -1318,23 +1322,23 @@ Invalid quantity specified for item {0}. Quantity should be greater than 0.,Cant Inventory,inventario Inventory & Support,Soporte de Inventario y Investment Banking,Banca de Inversión -Investments,inversiones +Investments,Inversiones Invoice Date,Fecha de la factura -Invoice Details,detalles de la factura -Invoice No,Factura no -Invoice Number,Número de factura +Invoice Details,Detalles de la Factura +Invoice No,Factura N º +Invoice Number,Número de la Factura Invoice Period From,Factura Periodo Del Invoice Period From and Invoice Period To dates mandatory for recurring invoice,Factura Periodo Del Período y Factura Para las fechas obligatorias para la factura recurrente Invoice Period To,Período Factura Para -Invoice Type,Tipo Factura -Invoice/Journal Voucher Details,Factura / Diario Vale Detalles -Invoiced Amount (Exculsive Tax),Cantidad facturada ( Impuesto exculsive ) -Is Active,está activo +Invoice Type,Tipo de Factura +Invoice/Journal Voucher Details,Detalles de Factura / Comprobante de Diario +Invoiced Amount (Exculsive Tax),Cantidad facturada ( Impuesto exclusive ) +Is Active,Está Activo Is Advance,Es Avance Is Cancelled,CANCELADO Is Carry Forward,Es llevar adelante Is Default,Es por defecto -Is Encash,es convertirá en efectivo +Is Encash,Se convertirá en efectivo Is Fixed Asset Item,Es partidas del activo inmovilizado Is LWP,es LWP Is Opening,está abriendo @@ -1347,7 +1351,7 @@ Is Service Item,Es servicio de Artículo Is Stock Item,Es Stock Artículo Is Sub Contracted Item,Es subcontratación artículo Is Subcontracted,se subcontrata -Is this Tax included in Basic Rate?,¿Este Impuestos incluidos en la tarifa básica ? +Is this Tax included in Basic Rate?,¿Está incluido este Impuesto la tarifa básica ? Issue,cuestión Issue Date,Fecha de Emisión Issue Details,Detalles del problema @@ -1365,30 +1369,30 @@ Item Code is mandatory because Item is not automatically numbered,Código del ar Item Code required at Row No {0},Código del artículo requerido en la fila n {0} Item Customer Detail,Elemento Detalle Cliente Item Description,Descripción del Artículo -Item Desription,Desription artículo +Item Desription,Desription del Artículo Item Details,Detalles del artículo Item Group,Grupo de artículos Item Group Name,Nombre del grupo de artículos Item Group Tree,Artículo Grupo Árbol Item Group not mentioned in item master for item {0},Grupo El artículo no se menciona en maestro de artículos para el elemento {0} Item Groups in Details,Grupos de componentes en detalles -Item Image (if not slideshow),Item Image (si no presentación de diapositivas) +Item Image (if not slideshow),"Imagen del Artículo (si no, presentación de diapositivas)" Item Name,Nombre del elemento Item Naming By,Artículo Naming Por -Item Price,artículo Precio -Item Prices,artículo precios +Item Price,Precio del Artículo +Item Prices,Precios de los Artículos Item Quality Inspection Parameter,Artículo Calidad de parámetros de Inspección Item Reorder,artículo reorden Item Serial No,Artículo N º de serie -Item Serial Nos,Artículo de serie n +Item Serial Nos,N º de serie de los Artículo Item Shortage Report,Artículo Escasez Reportar -Item Supplier,artículo Proveedor -Item Supplier Details,Detalles del artículo Proveedor -Item Tax,Impuesto artículo -Item Tax Amount,Total de impuestos de artículos +Item Supplier,Proveedor del Artículo +Item Supplier Details,Detalles del Proveedor del artículo +Item Tax,Impuesto del artículo +Item Tax Amount,Total de impuestos de los artículos Item Tax Rate,Artículo Tasa de Impuesto Item Tax Row {0} must have account of type Tax or Income or Expense or Chargeable,Artículo Impuesto Row {0} debe tener en cuenta el tipo de impuestos o ingresos o de gastos o Imponible -Item Tax1,Tax1 artículo +Item Tax1,Impuesto1 del artículo Item To Manufacture,Artículo Para Fabricación Item UOM,artículo UOM Item Website Specification,Artículo Website Especificación @@ -1399,7 +1403,7 @@ Item is required,Se requiere de artículos Item is updated,Artículo se actualiza Item master.,Maestro de artículos . "Item must be a purchase item, as it is present in one or many Active BOMs","El artículo debe ser un artículo de la compra , ya que está presente en una o varias listas de materiales activos" -Item or Warehouse for row {0} does not match Material Request,Artículo o de almacenes para la fila {0} no coincide Solicitud de material +Item or Warehouse for row {0} does not match Material Request,Artículo o Bodega para la fila {0} no coincide Solicitud de material Item table can not be blank,Tabla de artículos no puede estar en blanco Item to be manufactured or repacked,Artículo a fabricar o embalados de nuevo Item valuation updated,Valoración Artículo actualizado @@ -1458,10 +1462,10 @@ Jobs Email Settings,Trabajos Email Journal Entries,entradas de diario Journal Entry,Entrada de diario Journal Voucher,Comprobante de Diario -Journal Voucher Detail,Detalle Diario Voucher -Journal Voucher Detail No,Detalle Diario Voucher No +Journal Voucher Detail,Detalle del Asiento de Diario +Journal Voucher Detail No,Detalle del Asiento de Diario No Journal Voucher {0} does not have account {1} or already matched,Comprobante de Diario {0} no tiene cuenta {1} o ya emparejado -Journal Vouchers {0} are un-linked,Documentos preliminares {0} están vinculados a la ONU +Journal Vouchers {0} are un-linked,Asientos de Diario {0} no están vinculados. Keep a track of communication related to this enquiry which will help for future reference.,Mantenga un registro de la comunicación en relación con esta investigación que ayudará para futuras consultas. Keep it web friendly 900px (w) by 100px (h),Manténgalo web 900px mascotas ( w ) por 100px ( h ) Key Performance Area,Área clave de rendimiento @@ -1469,29 +1473,29 @@ Key Responsibility Area,Área de Responsabilidad Clave Kg,kg LR Date,LR Fecha LR No,LR No -Label,etiqueta +Label,Etiqueta Landed Cost Item,Landed Cost artículo Landed Cost Items,Landed Partidas de gastos Landed Cost Purchase Receipt,Landed Cost recibo de compra Landed Cost Purchase Receipts,Landed Cost Recibos de compra Landed Cost Wizard,Asistente Landed Cost Landed Cost updated successfully,Landed Cost actualizado correctamente -Language,idioma -Last Name,apellido +Language,Idioma +Last Name,Apellido Last Purchase Rate,Última Compra Cambio -Latest,más reciente -Lead,plomo -Lead Details,CONTENIDO -Lead Id,Id plomo -Lead Name,Nombre de plomo -Lead Owner,propietario de plomo -Lead Source,Fuente de plomo -Lead Status,Estado de plomo +Latest,Más Reciente +Lead,Iniciativa +Lead Details,Detalle de la Iniciativa +Lead Id,Iniciativa ID +Lead Name,Nombre de la Iniciativa +Lead Owner,Propietario de la Iniciativa +Lead Source,Fuente de de la Iniciativa +Lead Status,Estado de la Iniciativa Lead Time Date,Plazo de ejecución Fecha Lead Time Days,Tiempo de Entrega Días Lead Time days is number of days by which this item is expected in your warehouse. This days is fetched in Material Request when you select this item.,Plomo día Tiempo es el número de días en que se espera que este artículo en su almacén. Este día es descabellada en Solicitud de materiales cuando se selecciona este elemento . -Lead Type,Tipo plomo -Lead must be set if Opportunity is made from Lead,El plomo se debe establecer si la oportunidad está hecha de plomo +Lead Type,Tipo de Iniciativa +Lead must be set if Opportunity is made from Lead,La iniciativa se debe establecer si la oportunidad está hecha de plomo Leave Allocation,Deja Asignación Leave Allocation Tool,Deja Herramienta de Asignación Leave Application,Deja Aplicación @@ -1505,7 +1509,7 @@ Leave Block List Date,Deja Lista de bloqueo Fecha Leave Block List Dates,Deja lista Fechas Bloque Leave Block List Name,Agregar Nombre Lista de bloqueo Leave Blocked,Deja Bloqueado -Leave Control Panel,Deja Panel de control +Leave Control Panel,Salir del Panel de Control Leave Encashed?,Deja cobrados ? Leave Encashment Amount,Deja Cobro Monto Leave Type,Deja Tipo @@ -1523,14 +1527,14 @@ Leave of type {0} cannot be longer than {1},Dejar de tipo {0} no puede tener má Leaves Allocated Successfully for {0},Hojas distribuidos con éxito para {0} Leaves for type {0} already allocated for Employee {1} for Fiscal Year {0},Hojas para el tipo {0} ya asignado para Empleado {1} para el Año Fiscal {0} Leaves must be allocated in multiples of 0.5,"Las hojas deben ser asignados en múltiplos de 0,5" -Ledger,libro mayor +Ledger,Libro Mayor Ledgers,Libros de contabilidad -Left,izquierda -Legal,legal -Legal Expenses,gastos legales -Letter Head,Cabeza Carta -Letter Heads for print templates.,Jefes de letras para las plantillas de impresión. -Level,nivel +Left,Izquierda +Legal,Legal +Legal Expenses,Gastos Legales +Letter Head,Membrete +Letter Heads for print templates.,Membretes para las plantillas de impresión. +Level,Nivel Lft,Lft Liability,responsabilidad List a few of your customers. They could be organizations or individuals.,Enumere algunos de sus clientes. Pueden ser organizaciones o individuos. @@ -1543,20 +1547,20 @@ Loading...,Loading ... Loans (Liabilities),Préstamos (pasivos ) Loans and Advances (Assets),Préstamos y anticipos (Activos ) Local,local -Login,login +Login,Iniciar Sesión Login with your new User ID,Acceda con su nuevo ID de usuario -Logo,logo -Logo and Letter Heads,Logo y Carta Jefes -Lost,perdido -Lost Reason,Razón perdido -Low,bajo -Lower Income,Ingreso bajo +Logo,Logo +Logo and Letter Heads,Logo y Membrete +Lost,Perdido +Lost Reason,Razón de la pérdida +Low,Bajo +Lower Income,Ingreso Bajo MTN Details,MTN Detalles -Main,principal +Main,Principal Main Reports,Informes principales Maintain Same Rate Throughout Sales Cycle,Mantener mismo ritmo durante todo el ciclo de ventas Maintain same rate throughout purchase cycle,Mantener mismo ritmo durante todo el ciclo de compra -Maintenance,mantenimiento +Maintenance,Mantenimiento Maintenance Date,Mantenimiento Fecha Maintenance Details,Detalles Mantenimiento Maintenance Schedule,Programa de mantenimiento @@ -1574,7 +1578,7 @@ Maintenance Visit Purpose,Mantenimiento Visita Propósito Maintenance Visit {0} must be cancelled before cancelling this Sales Order,Mantenimiento Visita {0} debe ser cancelado antes de cancelar el pedido de ventas Maintenance start date can not be before delivery date for Serial No {0},Mantenimiento fecha de inicio no puede ser antes de la fecha de entrega para la serie n {0} Major/Optional Subjects,Principales / Asignaturas optativas -Make , +Make ,Hacer Make Accounting Entry For Every Stock Movement,Hacer asiento contable para cada movimiento de acciones Make Bank Voucher,Hacer Banco Voucher Make Credit Note,Hacer Nota de Crédito @@ -1599,31 +1603,31 @@ Make Sales Invoice,Hacer la factura de venta Make Sales Order,Asegúrese de órdenes de venta Make Supplier Quotation,Hacer cita Proveedor Make Time Log Batch,Haga la hora de lotes sesión -Male,masculino +Male,Masculino Manage Customer Group Tree.,Gestione Grupo de Clientes Tree. Manage Sales Partners.,Administrar Puntos de ventas. Manage Sales Person Tree.,Gestione Sales Person árbol . Manage Territory Tree.,Gestione Territorio Tree. Manage cost of operations,Gestione costo de las operaciones Management,administración -Manager,gerente +Manager,Gerente "Mandatory if Stock Item is ""Yes"". Also the default warehouse where reserved quantity is set from Sales Order.","Obligatorio si Stock Item es "" Sí"" . También el almacén por defecto en que la cantidad reservada se establece a partir de órdenes de venta ." Manufacture against Sales Order,Fabricación contra pedido de ventas Manufacture/Repack,Fabricación / Repack Manufactured Qty,Fabricado Cantidad Manufactured quantity will be updated in this warehouse,Fabricado cantidad se actualizará en este almacén Manufactured quantity {0} cannot be greater than planned quanitity {1} in Production Order {2},Cantidad Fabricado {0} no puede ser mayor que quanitity planeado {1} en la orden de producción {2} -Manufacturer,fabricante +Manufacturer,Fabricante Manufacturer Part Number,Número de pieza Manufacturing,fabricación Manufacturing Quantity,Fabricación Cantidad Manufacturing Quantity is mandatory,Fabricación Cantidad es obligatorio -Margin,margen -Marital Status,estado civil -Market Segment,sector de mercado -Marketing,mercadeo +Margin,Margen +Marital Status,Estado Civil +Market Segment,Sector de Mercado +Marketing,Mercadeo Marketing Expenses,gastos de comercialización -Married,casado +Married,Casado Mass Mailing,Mass Mailing Master Name,Maestro Nombre Master Name is mandatory if account type is Warehouse,Maestro nombre es obligatorio si el tipo de cuenta es Almacén @@ -1657,10 +1661,10 @@ Maximum Amount,Importe máximo Maximum allowed credit is {0} days after posting date,Crédito máximo permitido es {0} días después de la fecha de publicar Maximum {0} rows allowed,Máximo {0} filas permitidos Maxiumm discount for Item {0} is {1}%,Descuento Maxiumm de elemento {0} es {1}% -Medical,médico -Medium,medio +Medical,Médico +Medium,Medio "Merging is only possible if following properties are same in both records. Group or Ledger, Root Type, Company",La fusión sólo es posible si las propiedades son las mismas en ambos registros. -Message,mensaje +Message,Mensaje Message Parameter,Parámetro Mensaje Message Sent,Mensaje enviado Message updated,Mensaje actualizado @@ -1676,33 +1680,33 @@ Min Qty,Qty del minuto Min Qty can not be greater than Max Qty,Qty del minuto no puede ser mayor que Max Und Minimum Amount,Volumen mínimo de Minimum Order Qty,Mínimo Online con su nombre -Minute,minuto +Minute,Minuto Misc Details,Otros Detalles Miscellaneous Expenses,gastos varios Miscelleneous,Miscelleneous Mobile No,Mobile No -Mobile No.,número Móvil +Mobile No.,Número Móvil Mode of Payment,Modo de Pago -Modern,moderno -Monday,lunes -Month,mes -Monthly,mensual +Modern,Moderno +Monday,Lunes +Month,Mes +Monthly,Mensual Monthly Attendance Sheet,Hoja de Asistencia Mensual Monthly Earning & Deduction,Ingresos mensuales y Deducción Monthly Salary Register,Salario mensual Registrarse -Monthly salary statement.,Nómina mensual . +Monthly salary statement.,Nómina Mensual. More Details,Más detalles More Info,Más información Motion Picture & Video,Motion Picture & Video Moving Average,media Móvil Moving Average Rate,Mover Tarifa media Mr,Sr. -Ms,ms +Ms,Sra. Multiple Item prices.,Precios de los artículos múltiples. "Multiple Price Rule exists with same criteria, please resolve \ conflict by assigning priority. Price Rules: {0}","Múltiple Precio Regla existe con los mismos criterios, por favor resuelva \ conflicto mediante la asignación de prioridad. Reglas Precio: {0}" -Music,música +Music,Música Must be Whole Number,Debe ser un número entero -Name,nombre +Name,Nombre Name and Description,Nombre y descripción Name and Employee ID,Nombre y ID de empleado "Name of new Account. Note: Please don't create accounts for Customers and Suppliers, they are created automatically from the Customer and Supplier master","Nombre de la nueva cuenta . Nota : Por favor no crear cuentas para clientes y proveedores , se crean automáticamente desde el cliente y el proveedor principal" @@ -1895,19 +1899,21 @@ P L A - Cess Portion,PLA - Porción Cess PL or BS,PL o BS PO Date,PO Fecha PO No,PO No -POP3 Mail Server,POP3 Mail Server +POP3 Mail Server,Servidor de Correo POP3 POP3 Mail Settings,Configuración de Mensajes POP3 -POP3 mail server (e.g. pop.gmail.com),Servidor de correo POP3 (por ejemplo pop.gmail.com ) +POP3 mail server (e.g. pop.gmail.com),Servidor de Correo POP3 (por ejemplo pop.gmail.com ) POP3 server e.g. (pop.gmail.com),Por ejemplo el servidor POP3 ( pop.gmail.com ) POS Setting,POS Ajuste POS Setting required to make POS Entry,POS de ajuste necesario para hacer la entrada POS POS Setting {0} already created for user: {1} and company {2},POS Ajuste {0} ya creado para el usuario: {1} y {2} empresa POS View,POS Ver PR Detail,Detalle PR -Package Item Details,Artículo Detalles del paquete -Package Items,paquete de +Package Item Details,"Detalles del Contenido del Paquete +" +Package Items,"Contenido del Paquete +" Package Weight Details,Peso del paquete Detalles -Packed Item,Embalado artículo +Packed Item,Artículo Empacado Packed quantity must equal quantity for Item {0} in row {1},Embalado cantidad debe ser igual a la cantidad de elemento {0} en la fila {1} Packing Details,Detalles del embalaje Packing List,Lista de embalaje @@ -1916,16 +1922,16 @@ Packing Slip Item,Packing Slip artículo Packing Slip Items,Albarán Artículos Packing Slip(s) cancelled,Slip ( s ) de Embalaje cancelado Page Break,Salto de página -Page Name,Nombre de la página +Page Name,Nombre de la Página Paid Amount,Cantidad pagada Paid amount + Write Off Amount can not be greater than Grand Total,Cantidad pagada + Escribir Off La cantidad no puede ser mayor que Gran Total -Pair,par -Parameter,parámetro -Parent Account,cuenta primaria +Pair,Par +Parameter,Parámetro +Parent Account,Cuenta Primaria Parent Cost Center,Centro de Costo de Padres Parent Customer Group,Padres Grupo de Clientes Parent Detail docname,DocNombre Detalle de Padres -Parent Item,artículo Padre +Parent Item,Artículo Padre Parent Item Group,Grupo de Padres del artículo Parent Item {0} must be not Stock Item and must be a Sales Item,Artículo Padre {0} debe estar Stock punto y debe ser un elemento de Ventas Parent Party Type,Tipo Partido Padres @@ -1934,26 +1940,26 @@ Parent Territory,Territorio de Padres Parent Website Page,Sitio web Padres Page Parent Website Route,Padres Website Ruta Parenttype,ParentType -Part-time,A media jornada -Partially Completed,Completó parcialmente +Part-time,Medio Tiempo +Partially Completed,Completó Parcialmente Partly Billed,Parcialmente Anunciado Partly Delivered,Parcialmente Entregado Partner Target Detail,Detalle Target Socio -Partner Type,Tipos de Partner +Partner Type,Tipos de Socios Partner's Website,Sitio Web del Socio Party,Parte Party Account,Cuenta Party Party Type,Tipo del partido Party Type Name,Tipo del partido Nombre -Passive,pasivo +Passive,Pasivo Passport Number,Número de pasaporte -Password,contraseña +Password,Contraseña Pay To / Recd From,Pagar a / Recd Desde -Payable,pagadero -Payables,Cuentas por pagar +Payable,Pagadero +Payables,Cuentas por Pagar Payables Group,Deudas Grupo -Payment Days,días de pago -Payment Due Date,Pago Fecha de vencimiento +Payment Days,Días de Pago +Payment Due Date,Pago Fecha de Vencimiento Payment Period Based On Invoice Date,Período de pago basado en Fecha de la factura Payment Reconciliation,Reconciliación Pago Payment Reconciliation Invoice,Factura Reconciliación Pago @@ -1969,40 +1975,40 @@ Payments Received,Los pagos recibidos Payments made during the digest period,Los pagos efectuados durante el período de digestión Payments received during the digest period,Los pagos recibidos durante el período de digestión Payroll Settings,Configuración de Nómina -Pending,pendiente -Pending Amount,Pendiente Monto +Pending,Pendiente +Pending Amount,Monto Pendiente Pending Items {0} updated,Elementos Pendientes {0} actualizado Pending Review,opinión pendiente Pending SO Items For Purchase Request,A la espera de SO Artículos A la solicitud de compra Pension Funds,Fondos de Pensiones -Percent Complete,Porcentaje completado +Percent Complete,Porcentaje Completado Percentage Allocation,Porcentaje de asignación de Percentage Allocation should be equal to 100%,Porcentaje de asignación debe ser igual al 100 % Percentage variation in quantity to be allowed while receiving or delivering this item.,La variación porcentual de la cantidad que se le permita al recibir o entregar este artículo. Percentage you are allowed to receive or deliver more against the quantity ordered. For example: If you have ordered 100 units. and your Allowance is 10% then you are allowed to receive 110 units.,"Porcentaje que se les permite recibir o entregar más en contra de la cantidad pedida . Por ejemplo : Si se ha pedido 100 unidades. y el subsidio es de 10 %, entonces se le permite recibir 110 unidades." -Performance appraisal.,La evaluación del desempeño . -Period,período +Performance appraisal.,Evaluación del Desempeño . +Period,Período Period Closing Voucher,Vale Período de Cierre -Periodicity,periodicidad -Permanent Address,Dirección permanente +Periodicity,Periodicidad +Permanent Address,Dirección Permanente Permanent Address Is,Dirección permanente es -Permission,permiso -Personal,personal +Permission,Permiso +Personal,Personal Personal Details,Datos Personales -Personal Email,Correo electrónico personal -Pharmaceutical,farmacéutico +Personal Email,Correo Electrónico Personal +Pharmaceutical,Farmacéutico Pharmaceuticals,Productos farmacéuticos -Phone,teléfono +Phone,Teléfono Phone No,Teléfono No Piecework,trabajo a destajo Pincode,pincode Place of Issue,Lugar de emisión Plan for maintenance visits.,Plan para las visitas de mantenimiento . -Planned Qty,Planificada Cantidad +Planned Qty,Cantidad Planificada "Planned Qty: Quantity, for which, Production Order has been raised, but is pending to be manufactured.","Planificada Cantidad : Cantidad , para lo cual, orden de producción se ha elevado , pero está a la espera de ser fabricados ." -Planned Quantity,Cantidad planificada -Planning,planificación -Plant,planta +Planned Quantity,Cantidad Planificada +Planning,Planificación +Plant,Planta Plant and Machinery,Instalaciones técnicas y maquinaria Please Enter Abbreviation or Short Name properly as it will be added as Suffix to all Account Heads.,"Por favor, introduzca Abreviatura o Nombre corto correctamente ya que se añadirá como sufijo a todos los Jefes de Cuenta." Please Update SMS Settings,Por favor actualizar la configuración de SMS @@ -2111,8 +2117,8 @@ Plot By,Terreno Por Point of Sale,Punto de Venta Point-of-Sale Setting,Point -of -Sale Marco Post Graduate,Postgrado -Postal,postal -Postal Expenses,gastos postales +Postal,Postal +Postal Expenses,Gastos Postales Posting Date,Fecha de publicación Posting Time,Hora de publicación Posting date and posting time is mandatory,Fecha de publicación y el envío tiempo es obligatorio @@ -2120,16 +2126,16 @@ Posting timestamp must be after {0},Fecha y hora de publicación deberá ser pos Potential opportunities for selling.,Posibles oportunidades para vender . Preferred Billing Address,Preferida Dirección de Facturación Preferred Shipping Address,Preferida Dirección Envío -Prefix,prefijo -Present,presente +Prefix,Prefijo +Present,Presente Prevdoc DocType,DocType Prevdoc Prevdoc Doctype,Doctype Prevdoc -Preview,avance -Previous,anterior +Preview,Vista Previa +Previous,Anterior Previous Work Experience,Experiencia laboral previa -Price,precio +Price,Precio Price / Discount,Precio / Descuento -Price List,Lista de precios +Price List,Lista de Precios Price List Currency,Lista de precios de divisas Price List Currency not selected,Lista de precios de divisas no seleccionado Price List Exchange Rate,Lista de precios Tipo de Cambio @@ -2141,8 +2147,8 @@ Price List must be applicable for Buying or Selling,Lista de precios debe ser ap Price List not selected,Lista de precios no seleccionado Price List {0} is disabled,Lista de precios {0} está deshabilitado Price or Discount,Precio o Descuento -Pricing Rule,Regla Precios -Pricing Rule Help,Regla precios Ayuda +Pricing Rule,Regla de Precios +Pricing Rule Help,Ayuda de Regla de Precios "Pricing Rule is first selected based on 'Apply On' field, which can be Item, Item Group or Brand.","Regla precios se selecciona por primera vez basado en 'Aplicar On' de campo, que puede ser elemento, elemento de grupo o Marca." "Pricing Rule is made to overwrite Price List / define discount percentage, based on some criteria.","Regla de precios está sobrescribir Precio de lista / definir porcentaje de descuento, sobre la base de algunos criterios." Pricing Rules are further filtered based on quantity.,Reglas de las tarifas se filtran más basado en la cantidad. @@ -2151,20 +2157,20 @@ Print Heading,Imprimir Rubro Print Without Amount,Imprimir sin Importe Print and Stationary,Impresión y Papelería Printing and Branding,Prensa y Branding -Priority,prioridad +Priority,Prioridad Private Equity,Private Equity Privilege Leave,Privilege Dejar Probation,libertad condicional -Process Payroll,nómina de Procesos -Produced,producido +Process Payroll,Nómina de Procesos +Produced,Producido Produced Quantity,Cantidad producida Product Enquiry,Consulta de producto -Production,producción +Production,Producción Production Order,Orden de Producción Production Order status is {0},Estado de la orden de producción es de {0} Production Order {0} must be cancelled before cancelling this Sales Order,Orden de producción {0} debe ser cancelado antes de cancelar esta orden Ventas Production Order {0} must be submitted,Orden de producción {0} debe ser presentado -Production Orders,órdenes de Producción +Production Orders,Órdenes de Producción Production Orders in Progress,Órdenes de producción en Construcción Production Plan Item,Plan de Producción de artículos Production Plan Items,Elementos del Plan de Producción @@ -2175,41 +2181,41 @@ Products,Productos "Products will be sorted by weight-age in default searches. More the weight-age, higher the product will appear in the list.","Los productos se clasifican por peso-edad en las búsquedas por defecto. Más del peso-edad , más alto es el producto aparecerá en la lista." Professional Tax,Profesional de Impuestos Profit and Loss,Pérdidas y Ganancias -Profit and Loss Statement,Ganancias y Pérdidas -Project,proyecto +Profit and Loss Statement,Estado de Pérdidas y Ganancias +Project,Proyecto Project Costing,Proyecto de Costos Project Details,Detalles del Proyecto Project Manager,Gerente de Proyectos -Project Milestone,Proyecto Milestone +Project Milestone,Hito del Proyecto Project Milestones,Hitos del Proyecto Project Name,Nombre del proyecto -Project Start Date,Proyecto Fecha de inicio +Project Start Date,Fecha de inicio del Proyecto Project Type,Tipo de Proyecto Project Value,Valor del Proyecto -Project activity / task.,Actividad del proyecto / tarea. +Project activity / task.,Actividad del Proyecto / Tarea. Project master.,Master de Proyectos. Project will get saved and will be searchable with project name given,Proyecto conseguirá guardará y se podrá buscar con el nombre de proyecto determinado Project wise Stock Tracking,Sabio proyecto Stock Tracking Project-wise data is not available for Quotation,Datos del proyecto - sabio no está disponible para la cita -Projected,proyectado -Projected Qty,proyectado Cantidad +Projected,Proyectado +Projected Qty,Cantidad Projectada Projects,Proyectos Projects & System,Proyectos y Sistema Prompt for Email on Submission of,Preguntar por el correo electrónico en la presentación de Proposal Writing,Redacción de Propuestas Provide email id registered in company,Proporcionar correo electrónico de identificación registrado en la compañía -Provisional Profit / Loss (Credit),Beneficio Provisional / Pérdida (Crédito) -Public,público +Provisional Profit / Loss (Credit),Beneficio / Pérdida (Crédito) Provisional +Public,Público Published on website at: {0},Publicado en el sitio web en: {0} -Publishing,publicación +Publishing,Publicación Pull sales orders (pending to deliver) based on the above criteria,Tire de las órdenes de venta (pendiente de entregar ) sobre la base de los criterios anteriores -Purchase,compra +Purchase,Compra Purchase / Manufacture Details,Detalles de compra / Fábricas -Purchase Analytics,Compra Analytics -Purchase Common,Compra común -Purchase Details,compra Detalles -Purchase Discounts,Compra Descuentos -Purchase Invoice,Compra factura +Purchase Analytics,Analitico de Compras +Purchase Common,Compra Común +Purchase Details,Detalles de Compra +Purchase Discounts,Descuentos sobre Compra +Purchase Invoice,Factura de Compra Purchase Invoice Advance,Compra Factura Anticipada Purchase Invoice Advances,Avances Compra Factura Purchase Invoice Item,Factura de compra del artículo @@ -2230,7 +2236,7 @@ Purchase Order number required for Item {0},Número de orden de compra se requie Purchase Order {0} is 'Stopped',Orden de Compra {0} ' Detenido ' Purchase Order {0} is not submitted,Orden de Compra {0} no se presenta Purchase Orders given to Suppliers.,Órdenes de Compra otorgados a Proveedores . -Purchase Receipt,recibo de compra +Purchase Receipt,Recibo de Compra Purchase Receipt Item,Recibo de compra del artículo Purchase Receipt Item Supplied,Recibo de compra del artículo suministrado Purchase Receipt Item Supplieds,Compra de recibos Supplieds artículo @@ -2246,10 +2252,10 @@ Purchase Return,Compra retorno Purchase Returned,compra vuelta Purchase Taxes and Charges,Impuestos de Compra y Cargos Purchase Taxes and Charges Master,Impuestos de Compra y Cargos Maestro -Purchse Order number required for Item {0},Número de orden purchse requiere para el elemento {0} -Purpose,propósito +Purchse Order number required for Item {0},Número de Orden de Compra se requiere para el elemento {0} +Purpose,Propósito Purpose must be one of {0},Propósito debe ser uno de {0} -QA Inspection,QA Inspección +QA Inspection,Control de Calidad Qty,Cantidad Qty Consumed Per Unit,Cantidad consumida por unidad Qty To Manufacture,Cant. Para Fabricación @@ -2259,14 +2265,14 @@ Qty to Order,Cantidad de pedido Qty to Receive,Cantidad a Recibir Qty to Transfer,Cantidad de Transferencia Qualification,calificación -Quality,calidad +Quality,Calidad Quality Inspection,Inspección de Calidad Quality Inspection Parameters,Parámetros de Inspección de Calidad Quality Inspection Reading,Inspección Reading Quality Quality Inspection Readings,Lecturas de Inspección de Calidad Quality Inspection required for Item {0},Inspección de la calidad requerida para el punto {0} Quality Management,Gestión de la Calidad -Quantity,cantidad +Quantity,Cantidad Quantity Requested for Purchase,Cantidad solicitada para la compra Quantity and Rate,Cantidad y Cambio Quantity and Warehouse,Cantidad y Almacén @@ -2275,10 +2281,10 @@ Quantity for Item {0} must be less than {1},Cantidad de elemento {0} debe ser me Quantity in row {0} ({1}) must be same as manufactured quantity {2},Cantidad en la fila {0} ({1} ) debe ser la misma que la cantidad fabricada {2} Quantity of item obtained after manufacturing / repacking from given quantities of raw materials,Cantidad del punto obtenido después de la fabricación / reempaque de cantidades determinadas de materias primas Quantity required for Item {0} in row {1},Cantidad requerida para el punto {0} en la fila {1} -Quarter,trimestre -Quarterly,trimestral +Quarter,Trimestre +Quarterly,Trimestral Quick Help,Ayuda Rápida -Quotation,cita +Quotation,Nota Quotation Item,Cotización del artículo Quotation Items,Cotización Artículos Quotation Lost Reason,Cita Perdida Razón @@ -2316,19 +2322,19 @@ Re-Order Qty,Re- Online con su nombre Re-order,Reordenar Re-order Level,Reordenar Nivel Re-order Qty,Reordenar Cantidad -Read,leer -Reading 1,lectura 1 -Reading 10,lectura 10 -Reading 2,lectura 2 -Reading 3,lectura 3 -Reading 4,Reading 4 -Reading 5,Reading 5 -Reading 6,lectura 6 -Reading 7,lectura 7 -Reading 8,lectura 8 -Reading 9,lectura 9 +Read,Lectura +Reading 1,Lectura 1 +Reading 10,Lectura 10 +Reading 2,Lectura 2 +Reading 3,Lectura 3 +Reading 4,Lectura 4 +Reading 5,Lectura 5 +Reading 6,Lectura 6 +Reading 7,Lectura 7 +Reading 8,Lectura 8 +Reading 9,Lectura 9 Real Estate,Bienes Raíces -Reason,razón +Reason,Razón Reason for Leaving,Razones para dejar el Reason for Resignation,Motivo de la renuncia Reason for losing,Razón por la pérdida de @@ -2400,36 +2406,36 @@ Reqd by Date,Reqd Fecha Request Type,Tipo de solicitud Request for Information,Solicitud de Información Request for purchase.,Solicitar a la venta. -Requested,requerido -Requested For,solicitados para +Requested,Requerido +Requested For,Solicitados para Requested Items To Be Ordered,Artículos solicitados será condenada Requested Items To Be Transferred,Artículos solicitados para ser transferido -Requested Qty,Solicitado Cantidad +Requested Qty,Cant. Solicitada "Requested Qty: Quantity requested for purchase, but not ordered.","Solicitado Cantidad : Cantidad solicitada para la compra, pero no ordenado ." Requests for items.,Las solicitudes de artículos. -Required By,Requerido por la -Required Date,Fecha requerida -Required Qty,Cantidad necesaria +Required By,Requerido por +Required Date,Fecha Requerida +Required Qty,Cant. Necesaria Required only for sample item.,Sólo es necesario para el artículo de muestra . Required raw materials issued to the supplier for producing a sub - contracted item.,Las materias primas necesarias emitidas al proveedor para la producción de un sub - ítem contratado . -Research,investigación +Research,Investigación Research & Development,Investigación y Desarrollo -Researcher,investigador +Researcher,Investigador Reseller,Reseller -Reserved,reservado -Reserved Qty,reservados Cantidad +Reserved,Reservado +Reserved Qty,Cant. Reservada "Reserved Qty: Quantity ordered for sale, but not delivered.","Reservados Cantidad : Cantidad a pedir a la venta , pero no entregado." -Reserved Quantity,Cantidad reservada -Reserved Warehouse,Almacén Reserved +Reserved Quantity,Cantidad Reservada +Reserved Warehouse,Almacén Reservado Reserved Warehouse in Sales Order / Finished Goods Warehouse,Almacén reservado en ventas por pedido / Finalizado Productos Almacén Reserved Warehouse is missing in Sales Order,Almacén Reservado falta de órdenes de venta Reserved Warehouse required for stock Item {0} in row {1},Almacén Reservado requerido para la acción del artículo {0} en la fila {1} Reserved warehouse required for stock item {0},Almacén Reservado requerido para la acción del artículo {0} Reserves and Surplus,Reservas y Superávit -Reset Filters,restablecer los filtros -Resignation Letter Date,Carta de renuncia Fecha -Resolution,resolución -Resolution Date,Resolución Fecha +Reset Filters,Restablecer los Filtros +Resignation Letter Date,Fecha de Carta de Renuncia +Resolution,Resolución +Resolution Date,Fecha de Resolución Resolution Details,Detalles de la resolución Resolved By,Resuelto por Rest Of The World,Resto del mundo @@ -2478,7 +2484,7 @@ SMS Settings,Ajustes de SMS SO Date,SO Fecha SO Pending Qty,SO Pendiente Cantidad SO Qty,SO Cantidad -Salary,salario +Salary,Salario Salary Information,La información sobre sueldos Salary Manager,Administrador de Salario Salary Mode,Modo Salario @@ -2486,28 +2492,28 @@ Salary Slip,Slip Salario Salary Slip Deduction,Deducción nómina Salary Slip Earning,Ganar nómina Salary Slip of employee {0} already created for this month,Nómina de empleado {0} ya creado para este mes -Salary Structure,Estructura salarial +Salary Structure,Estructura Salarial Salary Structure Deduction,Estructura salarial Deducción Salary Structure Earning,Estructura salarial Earning Salary Structure Earnings,Estructura salarial Ganancias Salary breakup based on Earning and Deduction.,Ruptura Salario basado en la ganancia y la deducción. Salary components.,Componentes salariales. Salary template master.,Plantilla maestra Salario . -Sales,venta -Sales Analytics,análisis de ventas +Sales,Venta +Sales Analytics,Análisis de Ventas Sales BOM,BOM Ventas Sales BOM Help,BOM Ventas Ayuda Sales BOM Item,BOM Sales Item Sales BOM Items,BOM Ventas Artículos Sales Browser,Navegador de Ventas -Sales Details,Detalles Ventas -Sales Discounts,Descuentos sobre ventas +Sales Details,Detalles de Ventas +Sales Discounts,Descuentos sobre Ventas Sales Email Settings,Configuración de Ventas Email -Sales Expenses,gastos de ventas +Sales Expenses,Gastos de Ventas Sales Extras,Extras Ventas Sales Funnel,Embudo de Ventas -Sales Invoice,factura de venta -Sales Invoice Advance,Factura anticipadas +Sales Invoice,Factura de Venta +Sales Invoice Advance,Factura Anticipadas Sales Invoice Item,La factura de venta de artículos Sales Invoice Items,Artículos factura de venta Sales Invoice Message,Factura Mensaje @@ -2515,7 +2521,7 @@ Sales Invoice No,Factura de venta No Sales Invoice Trends,Ventas Tendencias Factura Sales Invoice {0} has already been submitted,Factura {0} ya se ha presentado Sales Invoice {0} must be cancelled before cancelling this Sales Order,Factura {0} debe ser cancelado antes de cancelar esta orden Ventas -Sales Order,órdenes de venta +Sales Order,Ordenes de Venta Sales Order Date,Órdenes de venta Fecha Sales Order Item,Solicitar Sales Item Sales Order Items,Solicitar Sales Artículos @@ -2541,16 +2547,16 @@ Sales Return,Volver Ventas Sales Returned,Obtenidos Ventas Sales Taxes and Charges,Los impuestos y cargos de venta Sales Taxes and Charges Master,Los impuestos y cargos de venta Maestro -Sales Team,equipo de ventas +Sales Team,Equipo de Ventas Sales Team Details,Detalles del equipo de ventas Sales Team1,Team1 Ventas -Sales and Purchase,Venta y Compra +Sales and Purchase,Ventas y Compras Sales campaigns.,Campañas de ventas. -Salutation,saludo +Salutation,Saludo Sample Size,Tamaño de la muestra Sanctioned Amount,importe sancionado -Saturday,sábado -Schedule,horario +Saturday,Sábado +Schedule,Horario Schedule Date,Horario Fecha Schedule Details,Agenda Detalles Scheduled,Programado @@ -2564,7 +2570,7 @@ Score Earned,puntuación obtenida Score must be less than or equal to 5,Puntuación debe ser menor o igual a 5 Scrap %,Scrap % Seasonality for setting budgets.,Estacionalidad de establecer presupuestos. -Secretary,secretario +Secretary,Secretario Secured Loans,Préstamos Garantizados Securities & Commodity Exchanges,Valores y Bolsas de Productos Securities and Deposits,Valores y Depósitos @@ -2603,10 +2609,10 @@ Select your home country and check the timezone and currency.,Seleccione su paí "Selecting ""Yes"" will allow you to create Bill of Material showing raw material and operational costs incurred to manufacture this item.","Al seleccionar "" Sí"" le permitirá crear la lista de materiales que muestran la materia prima y los costos operativos incurridos en la fabricación de este artículo." "Selecting ""Yes"" will allow you to make a Production Order for this item.","Al seleccionar "" Sí "" permitirá que usted haga una orden de producción por este concepto." "Selecting ""Yes"" will give a unique identity to each entity of this item which can be viewed in the Serial No master.","Al seleccionar "" Sí"" le dará una identidad única a cada entidad de este artículo que se puede ver en la serie No amo." -Selling,de venta +Selling,Ventas Selling Settings,La venta de Ajustes "Selling must be checked, if Applicable For is selected as {0}","Selling debe comprobar, si se selecciona aplicable Para que {0}" -Send,enviar +Send,Enviar Send Autoreply,Enviar Respuesta automática Send Email,Enviar Email Send From,Enviar Desde @@ -2618,7 +2624,7 @@ Send To Type,Enviar a Teclear Send mass SMS to your contacts,Enviar SMS masivo a sus contactos Send to this list,Enviar a esta lista Sender Name,Nombre del remitente -Sent On,enviado Por +Sent On,Enviado Por Separate production order will be created for each finished good item.,Para la producción por separado se crea para cada buen artículo terminado. Serial No,No de orden Serial No / Batch,N º de serie / lote @@ -2642,16 +2648,16 @@ Serial Nos Required for Serialized Item {0},Serie n Necesario para artículo ser Serial Number Series,Número de Serie Serie Serial number {0} entered more than once,Número de serie {0} entraron más de una vez Serialized Item {0} cannot be updated \ using Stock Reconciliation,Artículo Serialized {0} no se puede actualizar \ mediante Stock Reconciliación -Series,serie +Series,Serie Series List for this Transaction,Lista de series para esta transacción Series Updated,Series Actualizado Series Updated Successfully,Serie actualizado correctamente Series is mandatory,Serie es obligatorio Series {0} already used in {1},Serie {0} ya se utiliza en {1} -Service,servicio +Service,Servicio Service Address,Dirección del Servicio Service Tax,Impuestos de Servicio -Services,servicios +Services,Servicios Set,conjunto "Set Default Values like Company, Currency, Current Fiscal Year, etc.","Establecer valores predeterminados , como empresa , vigencia actual año fiscal , etc" Set Item Group-wise budgets on this Territory. You can also include seasonality by setting the Distribution.,Establecer presupuestos - Grupo sabio artículo en este Territorio. También puede incluir la estacionalidad mediante el establecimiento de la Distribución . @@ -2666,20 +2672,20 @@ Setting up...,Configuración ... Settings,Configuración Settings for HR Module,Ajustes para el Módulo de Recursos Humanos "Settings to extract Job Applicants from a mailbox e.g. ""jobs@example.com""","Ajustes para extraer los solicitantes de empleo de un buzón por ejemplo, "" jobs@example.com """ -Setup,disposición -Setup Already Complete!!,Configuración ya completo ! -Setup Complete,Instalación completa +Setup,Configuración +Setup Already Complete!!,Configuración completa ! +Setup Complete,Configuración completa Setup SMS gateway settings,Configuración de puerta de enlace de configuración de SMS Setup Series,Serie de configuración Setup Wizard,Asistente de configuración Setup incoming server for jobs email id. (e.g. jobs@example.com),Configuración del servidor de correo entrante para los trabajos de identificación del email . (por ejemplo jobs@example.com ) Setup incoming server for sales email id. (e.g. sales@example.com),Configuración del servidor de correo entrante de correo electrónico de identificación de las ventas. (por ejemplo sales@example.com ) Setup incoming server for support email id. (e.g. support@example.com),Configuración del servidor de correo entrante para el apoyo de id de correo electrónico. (por ejemplo support@example.com ) -Share,cuota +Share,Cuota Share With,Comparte con Shareholders Funds,Accionistas Fondos Shipments to customers.,Los envíos a los clientes . -Shipping,envío +Shipping,Envío Shipping Account,cuenta Envíos Shipping Address,Dirección de envío Shipping Amount,Importe del envío @@ -2698,19 +2704,19 @@ Show in Website,Mostrar en Sitio Web Show rows with zero values,Mostrar filas con valores de cero Show this slideshow at the top of the page,Mostrar esta presentación de diapositivas en la parte superior de la página Sick Leave,baja por enfermedad -Signature,firma +Signature,Firma Signature to be appended at the end of every email,Firma que se adjunta al final de cada correo electrónico Single,solo Single unit of an Item.,Una sola unidad de un elemento . Sit tight while your system is being setup. This may take a few moments.,Estar tranquilos mientras el sistema está siendo configuración. Esto puede tomar un momento . Slideshow,Presentación Soap & Detergent,Jabón y Detergente -Software,software -Software Developer,desarrollador de Software +Software,Software +Software Developer,Desarrollador de Software "Sorry, Serial Nos cannot be merged","Lo sentimos , Nos de serie no se puede fusionar" "Sorry, companies cannot be merged","Lo sentimos , las empresas no se pueden combinar" -Source,fuente -Source File,archivo de origen +Source,Fuente +Source File,Archivo de Origen Source Warehouse,fuente de depósito Source and target warehouse cannot be same for row {0},Fuente y el almacén de destino no pueden ser la misma para la fila {0} Source of Funds (Liabilities),Fuente de los fondos ( Pasivo ) @@ -2735,7 +2741,7 @@ Start,comienzo Start Date,Fecha de inicio Start date of current invoice's period,Fecha del período de facturación actual Inicie Start date should be less than end date for Item {0},La fecha de inicio debe ser menor que la fecha de finalización para el punto {0} -State,estado +State,Estado Statement of Account,Estado de cuenta Static Parameters,Parámetros estáticos Status,estado @@ -2791,17 +2797,17 @@ Stub,talón Sub Assemblies,Asambleas Sub "Sub-currency. For e.g. ""Cent""","Sub -moneda. Por ejemplo, "" Cent """ Subcontract,subcontrato -Subject,sujeto +Subject,Sujeto Submit Salary Slip,Presentar nómina Submit all salary slips for the above selected criteria,Presentar todas las nóminas para los criterios seleccionados anteriormente Submit this Production Order for further processing.,Enviar esta Orden de Producción para su posterior procesamiento . Submitted,Enviado -Subsidiary,filial +Subsidiary,Filial Successful: ,Con éxito: Successfully Reconciled,Con éxito Reconciled Suggestions,Sugerencias -Sunday,domingo -Supplier,proveedor +Sunday,Domingo +Supplier,Proveedor Supplier (Payable) Account,Proveedor (A pagar ) Cuenta Supplier (vendor) name as entered in supplier master,Proveedor (vendedor ) nombre que ingresó en el maestro de proveedores Supplier > Supplier Type,Proveedor> Tipo de Proveedor @@ -2839,7 +2845,7 @@ Symbol,símbolo Sync Support Mails,Sync Soporte Mails Sync with Dropbox,Sincronización con Dropbox Sync with Google Drive,Sincronización con Google Drive -System,sistema +System,Sistema System Settings,Configuración del sistema "System User (login) ID. If set, it will become default for all HR forms.","Usuario del sistema (login ) de diámetro. Si se establece , será por defecto para todas las formas de recursos humanos." TDS (Advertisement),TDS (Publicidad) @@ -2858,10 +2864,10 @@ Target Qty,Target Cantidad Target Warehouse,destino de depósito Target warehouse in row {0} must be same as Production Order,Almacenes de destino de la fila {0} debe ser la misma que la producción del pedido Target warehouse is mandatory for row {0},Almacenes Target es obligatorio para la fila {0} -Task,tarea +Task,Tarea Task Details,Detalles de la tarea Tasks,Tareas -Tax,impuesto +Tax,Impuesto Tax Amount After Discount Amount,Total de impuestos Después Cantidad de Descuento Tax Assets,Activos por Impuestos Tax Category can not be 'Valuation' or 'Valuation and Total' as all items are non-stock items,"Categoría de impuesto no puede ser ' Valoración ' o ' de Valoración y Total ""como todos los artículos son no-acción" @@ -2870,7 +2876,7 @@ Tax and other salary deductions.,Tributaria y otras deducciones salariales. Tax detail table fetched from item master as a string and stored in this field.Used for Taxes and Charges,Tabla de detalles de impuestos recoger del maestro de artículos en forma de cadena y se almacena en este campo. Se utiliza para las tasas y cargos Tax template for buying transactions.,Plantilla de impuestos para la compra de las transacciones. Tax template for selling transactions.,Plantilla Tributaria para la venta de las transacciones. -Taxable,imponible +Taxable,Imponible Taxes,Impuestos Taxes and Charges,Impuestos y Cargos Taxes and Charges Added,Impuestos y cargos adicionales @@ -2880,10 +2886,10 @@ Taxes and Charges Deducted,Impuestos y gastos deducidos Taxes and Charges Deducted (Company Currency),Impuestos y gastos deducidos ( Compañía de divisas ) Taxes and Charges Total,Los impuestos y cargos totales Taxes and Charges Total (Company Currency),Impuestos y Cargos total ( Compañía de divisas ) -Technology,tecnología +Technology,Tecnología Telecommunications,Telecomunicaciones Telephone Expenses,gastos por servicios telefónicos -Television,televisión +Television,Televisión Template,Plantilla Template for performance appraisals.,Plantilla para las evaluaciones de desempeño . Template of terms or contract.,Plantilla de términos o contrato. @@ -2892,24 +2898,24 @@ Temporary Accounts (Liabilities),Cuentas Temporales ( Pasivo ) Temporary Assets,Activos temporales Temporary Liabilities,Pasivos temporales Term Details,Detalles plazo -Terms,condiciones +Terms,Condiciones Terms and Conditions,Términos y Condiciones Terms and Conditions Content,Términos y Condiciones de contenido -Terms and Conditions Details,Términos y Condiciones Detalles -Terms and Conditions Template,Términos y Condiciones de plantilla +Terms and Conditions Details,Detalle de Términos y Condiciones +Terms and Conditions Template,Plantilla de Términos y Condiciones Terms and Conditions1,Términos y Condiciones 1 -Terretory,Terretory -Territory,territorio +Terretory,Territorio +Territory,Territorio Territory / Customer,Localidad / Cliente Territory Manager,Gerente de Territorio Territory Name,Nombre Territorio Territory Target Variance Item Group-Wise,Territorio Target Varianza Artículo Group- Wise Territory Targets,Objetivos Territorio -Test,prueba +Test,Prueba Test Email Id,Prueba de Identificación del email Test the Newsletter,Pruebe el Boletín The BOM which will be replaced,La lista de materiales que será sustituido -The First User: You,La Primera Usuario: +The First User: You,El Primer Usuario: Usted "The Item that represents the Package. This Item must have ""Is Stock Item"" as ""No"" and ""Is Sales Item"" as ""Yes""","El artículo que representa el paquete . Este artículo debe haber "" Es Stock Item"" como "" No"" y ""¿ Punto de venta"" como "" Sí""" The Organization,La Organización "The account head under Liability, in which Profit/Loss will be booked","El director cuenta con la responsabilidad civil , en el que será reservado Ganancias / Pérdidas" @@ -2947,7 +2953,7 @@ This is an example website auto-generated from ERPNext,Este es un sitio web ejem This is the number of the last created transaction with this prefix,Este es el número de la última transacción creado con este prefijo This will be used for setting rule in HR module,Esto se utiliza para ajustar la regla en el módulo HR Thread HTML,HTML Tema -Thursday,jueves +Thursday,Jueves Time Log,Hora de registro Time Log Batch,Lote Hora de registro Time Log Batch Detail,Detalle de lotes Hora de registro @@ -2957,20 +2963,20 @@ Time Log Status must be Submitted.,Hora de registro de estado debe ser presentad Time Log for tasks.,Hora de registro para las tareas. Time Log is not billable,Hora de registro no es facturable Time Log {0} must be 'Submitted',Hora de registro {0} debe ser ' Enviado ' -Time Zone,huso horario +Time Zone,Huso Horario Time Zones,Husos horarios Time and Budget,Tiempo y Presupuesto Time at which items were delivered from warehouse,Momento en que los artículos fueron entregados desde el almacén Time at which materials were received,Momento en que se recibieron los materiales -Title,título +Title,Título Titles for print templates e.g. Proforma Invoice.,"Títulos para plantillas de impresión , por ejemplo, Factura proforma ." To,a -To Currency,Para moneda +To Currency,Para la moneda To Date,Hasta la fecha To Date should be same as From Date for Half Day leave,Hasta la fecha debe ser igual a partir de la fecha para la licencia de medio día To Date should be within the Fiscal Year. Assuming To Date = {0},Hasta la fecha debe estar dentro del año fiscal. Asumiendo la fecha = {0} To Discuss,Para Discuta -To Do List,Para hacer la lista +To Do List,Lista para hacer To Package No.,Al paquete No. To Produce,Producir To Time,Para Tiempo @@ -2979,7 +2985,7 @@ To Warehouse,Para Almacén "To add child nodes, explore tree and click on the node under which you want to add more nodes.","Para agregar nodos secundarios , explorar el árbol y haga clic en el nodo en el que desea agregar más nodos." "To assign this issue, use the ""Assign"" button in the sidebar.","Para asignar este problema, utilice el botón "" Assign"" en la barra lateral ." To create a Bank Account,Para crear una Cuenta Bancaria -To create a Tax Account,Para crear una cuenta de impuestos +To create a Tax Account,Para crear una Cuenta de impuestos "To create an Account Head under a different company, select the company and save customer.","Para crear un Jefe de Cuenta bajo una compañía diferente , seleccione la empresa y salvar a los clientes." To date cannot be before from date,Hasta la fecha no puede ser antes de la fecha de To enable Point of Sale features,Para activar punto de venta características @@ -2995,8 +3001,8 @@ To track item in sales and purchase documents based on their serial nos. This is To track items in sales and purchase documents with batch nos
Preferred Industry: Chemicals etc,Para realizar un seguimiento de los elementos de las ventas y la compra de los documentos con lotes nos
Industria preferido: Productos químicos etc < / b > To track items using barcode. You will be able to enter items in Delivery Note and Sales Invoice by scanning barcode of item.,Para realizar un seguimiento de elementos mediante código de barras. Usted será capaz de entrar en los elementos de la nota de entrega y la factura de venta mediante el escaneo de código de barras del artículo. Too many columns. Export the report and print it using a spreadsheet application.,Hay demasiadas columnas. Exportar el informe e imprimirlo mediante una aplicación de hoja de cálculo. -Tools,instrumentos -Total,total +Tools,Herramientas +Total,Total Total ({0}),Total ({0}) Total Advance,Avance total Total Amount,Importe total @@ -3005,15 +3011,15 @@ Total Amount in Words,Monto total de Palabras Total Billing This Year: ,Facturación total de este año: Total Characters,Total Jugadores Total Claimed Amount,Total Reclamado -Total Commission,total Comisión +Total Commission,Total Comisión Total Cost,Coste total -Total Credit,total del Crédito -Total Debit,débito total +Total Credit,Crédito Total +Total Debit,Débito Total Total Debit must be equal to Total Credit. The difference is {0},Débito total debe ser igual al crédito total . Total Deduction,Deducción total Total Earning,Ganar total Total Experience,Experiencia total -Total Hours,total de horas +Total Hours,Total de Horas Total Hours (Expected),Total de horas (Esperada ) Total Invoiced Amount,Total facturado Total Leave Days,Total Dejar días @@ -3035,30 +3041,30 @@ Total in words,Total en palabras Total points for all goals should be 100. It is {0},Total de puntos para todos los objetivos deben ser 100 . Es {0} Total valuation for manufactured or repacked item(s) can not be less than total valuation of raw materials,Valoración total para cada elemento (s) de la empresa o embalados de nuevo no puede ser inferior al valor total de las materias primas Total weightage assigned should be 100%. It is {0},Weightage total asignado debe ser de 100 %. Es {0} -Totals,totales +Totals,Totales Track Leads by Industry Type.,Pista conduce por tipo de industria . Track this Delivery Note against any Project,Seguir este albarán en contra de cualquier proyecto Track this Sales Order against any Project,Seguir este de órdenes de venta en contra de cualquier proyecto -Transaction,transacción +Transaction,Transacción Transaction Date,Fecha de Transacción Transaction not allowed against stopped Production Order {0},La transacción no permitida contra detenido Orden Producción {0} -Transfer,transferencia +Transfer,Transferencia Transfer Material,transferencia de material Transfer Raw Materials,Transferencia de Materias Primas -Transferred Qty,Transferido Cantidad -Transportation,transporte +Transferred Qty,Cantidad Transferida +Transportation,Transporte Transporter Info,Información Transporter -Transporter Name,transportista Nombre +Transporter Name,Nombre del Transportista Transporter lorry number,Número de camiones Transportador -Travel,viajes -Travel Expenses,gastos de Viaje +Travel,Viajes +Travel Expenses,Gastos de Viaje Tree Type,Tipo de árbol Tree of Item Groups.,Árbol de los grupos de artículos . Tree of finanial Cost Centers.,Árbol de Centros de Coste finanial . Tree of finanial accounts.,Árbol de las cuentas finanial . Trial Balance,balance de Comprobación -Tuesday,martes -Type,tipo +Tuesday,Martes +Type,Tipo Type of document to rename.,Tipo de documento para cambiar el nombre. "Type of leaves like casual, sick etc.","Tipo de hojas como casual, etc enfermo" Types of Expense Claim.,Tipos de Reclamación de Gastos . @@ -3156,13 +3162,13 @@ Voucher No,vale No Voucher Type,Tipo de Vales Voucher Type and Date,Tipo Bono y Fecha Walk In,Walk In -Warehouse,almacén -Warehouse Contact Info,Almacén Contacto +Warehouse,Almacén +Warehouse Contact Info,Información de Contacto del Almacén Warehouse Detail,Detalle de almacenes -Warehouse Name,Nombre de almacenes +Warehouse Name,Nombre del Almacén Warehouse and Reference,Almacén y Referencia Warehouse can not be deleted as stock ledger entry exists for this warehouse.,Almacén no se puede suprimir porque hay una entrada en registro de acciones para este almacén. -Warehouse can only be changed via Stock Entry / Delivery Note / Purchase Receipt,Depósito sólo se puede cambiar a través de la entrada Stock / nota de entrega / recibo de compra +Warehouse can only be changed via Stock Entry / Delivery Note / Purchase Receipt,Depósito sólo se puede cambiar a través de la Entrada de Almacén / Nota de Entrega / Recibo de Compra Warehouse cannot be changed for Serial No.,Almacén no se puede cambiar para el N º de serie Warehouse is mandatory for stock Item {0} in row {1},Warehouse es obligatoria para la acción del artículo {0} en la fila {1} Warehouse is missing in Purchase Order,Almacén falta en la Orden de Compra @@ -3185,33 +3191,33 @@ Warning: Sales Order {0} already exists against same Purchase Order number,Adver Warning: System will not check overbilling since amount for Item {0} in {1} is zero,Advertencia : El sistema no comprobará sobrefacturación desde monto para el punto {0} en {1} es cero Warranty / AMC Details,Garantía / AMC Detalles Warranty / AMC Status,Garantía / AMC Estado -Warranty Expiry Date,Garantía de caducidad Fecha +Warranty Expiry Date,Fecha de caducidad de la Garantía Warranty Period (Days),Período de garantía ( Días) Warranty Period (in days),Período de garantía ( en días) We buy this Item,Compramos este artículo We sell this Item,Vendemos este artículo -Website,sitio web -Website Description,Sitio Web Descripción +Website,Sitio Web +Website Description,Descripción del Sitio Web Website Item Group,Group Website artículo Website Item Groups,Grupos Sitios Web item Website Settings,Configuración del sitio web Website Warehouse,Almacén Web -Wednesday,miércoles -Weekly,semanal +Wednesday,Miércoles +Weekly,Semanal Weekly Off,Semanal Off Weight UOM,Peso UOM "Weight is mentioned,\nPlease mention ""Weight UOM"" too","El peso se ha mencionado, \ nPor favor, menciona "" Peso UOM "" demasiado" Weightage,weightage Weightage (%),Coeficiente de ponderación (% ) -Welcome,bienvenido -Welcome to ERPNext. Over the next few minutes we will help you setup your ERPNext account. Try and fill in as much information as you have even if it takes a bit longer. It will save you a lot of time later. Good Luck!,"Bienvenido a ERPNext . En los próximos minutos vamos a ayudarle a configurar su cuenta ERPNext . Trate de llenar toda la información que usted tiene , incluso si se necesita un poco más largo. Esto le ahorrará mucho tiempo después. ¡Buena suerte!" +Welcome,Bienvenido +Welcome to ERPNext. Over the next few minutes we will help you setup your ERPNext account. Try and fill in as much information as you have even if it takes a bit longer. It will save you a lot of time later. Good Luck!,"Bienvenido a ERPNext . En los próximos minutos vamos a ayudarle a configurar su cuenta ERPNext . Trate de llenar toda la información que usted tiene , incluso si se necesita un poco más de tiempo ahora. Esto le ahorrará mucho tiempo después. ¡Buena suerte!" Welcome to ERPNext. Please select your language to begin the Setup Wizard.,Bienvenido a ERPNext . Por favor seleccione su idioma para iniciar el asistente de configuración. What does it do?,¿Qué hace? "When any of the checked transactions are ""Submitted"", an email pop-up automatically opened to send an email to the associated ""Contact"" in that transaction, with the transaction as an attachment. The user may or may not send the email.","Cuando alguna de las operaciones controladas son "" Enviado "" , un e-mail emergente abre automáticamente al enviar un email a la asociada "" Contacto"" en esa transacción , la transacción como un archivo adjunto. El usuario puede o no puede enviar el correo electrónico." "When submitted, the system creates difference entries to set the given stock and valuation on this date.","Cuando presentado , el sistema crea asientos de diferencia para definir las acciones y la valoración dada en esta fecha." Where items are stored.,¿Dónde se almacenan los artículos . Where manufacturing operations are carried out.,Cuando las operaciones de elaboración se lleven a cabo . -Widowed,viudo +Widowed,Viudo Will be calculated automatically when you enter the details,Se calcularán automáticamente cuando entras en los detalles Will be updated after Sales Invoice is Submitted.,Se actualizará después de la factura de venta se considera sometida . Will be updated when batched.,Se actualizará cuando por lotes. @@ -3236,14 +3242,14 @@ Write Off Cost Center,Escribe Off Center Costo Write Off Outstanding Amount,Escribe Off Monto Pendiente Write Off Voucher,Escribe Off Voucher Wrong Template: Unable to find head row.,Plantilla incorrecto : no se puede encontrar la fila cabeza. -Year,año +Year,Año Year Closed,Año Cerrado Year End Date,Año Fecha de finalización -Year Name,Nombre Año +Year Name,Nombre de Año Year Start Date,Año Fecha de inicio -Year of Passing,Año de fallecimiento -Yearly,anual -Yes,sí +Year of Passing,Año de Fallecimiento +Yearly,Anual +Yes,Sí You are not authorized to add or update entries before {0},No tiene permisos para agregar o actualizar las entradas antes de {0} You are not authorized to set Frozen value,Usted no está autorizado para fijar el valor congelado You are the Expense Approver for this record. Please Update the 'Status' and Save,Usted es el aprobador de gastos para este registro. Actualice el 'Estado' y Save @@ -3279,7 +3285,7 @@ Your support email id - must be a valid email - this is where your emails will c and,y are not allowed.,no están permitidos. assigned by,asignado por -cannot be greater than 100,no puede ser mayor que 100 +cannot be greater than 100,No puede ser mayor que 100 "e.g. ""Build tools for builders""","por ejemplo "" Construir herramientas para los constructores """ "e.g. ""MC""","por ejemplo ""MC """ "e.g. ""My Company LLC""","por ejemplo ""Mi Company LLC """ diff --git a/erpnext/translations/fr.csv b/erpnext/translations/fr.csv index 99a9158398..2d3af178b7 100644 --- a/erpnext/translations/fr.csv +++ b/erpnext/translations/fr.csv @@ -35,41 +35,42 @@ "
Add / Edit"," Ajouter / Modifier < / a>" "

Default Template

Uses Jinja Templating and all the fields of Address (including Custom Fields if any) will be available

{{ address_line1 }}<br>{% if address_line2 %}{{ address_line2 }}<br>{% endif -%}{{ city }}<br>{% if state %}{{ state }}<br>{% endif -%}{% if pincode %} PIN:  {{ pincode }}<br>{% endif -%}{{ country }}<br>{% if phone %}Phone: {{ phone }}<br>{% endif -%}{% if fax %}Fax: {{ fax }}<br>{% endif -%}{% if email_id %}Email: {{ email_id }}<br>{% endif -%}
","

modèle par défaut

Utilise Jinja création de modèles et tous les domaines de l'Adresse ( y compris les champs personnalisés cas échéant) sera disponible

  {{}} address_line1 Photos  {% si address_line2%} {{}} address_line2 
{ % endif -%} {{ville}} Photos {% si l'état%} {{état}} {% endif Photos -%} {% if%} code PIN PIN: {{code PIN}} {% endif Photos -%} {{pays}} Photos {% si le téléphone%} Téléphone: {{phone}} {
% endif -%} {% if%} fax Fax: {{fax}} {% endif Photos -%} {% if%} email_id Email: {{}} email_id Photos ; {% endif -%} " A Customer Group exists with same name please change the Customer name or rename the Customer Group,BOM récursivité : {0} ne peut pas être le parent ou l'enfant de {2} -A Customer exists with same name,Une clientèle existe avec le même nom -A Lead with this email id should exist,Un responsable de cette id e-mail doit exister -A Product or Service,Nouveau N ° de série ne peut pas avoir d'entrepôt . Entrepôt doit être réglé par Stock entrée ou ticket de caisse -A Supplier exists with same name,Un Fournisseur existe avec le même nom -A symbol for this currency. For e.g. $,Un symbole de cette monnaie. Pour exemple $ +A Customer exists with same name,Un client existe avec le même nom +A Lead with this email id should exist,Un responsable de cet identifiant de courriel doit exister +A Product or Service,Un produit ou service +A Supplier exists with same name,Un fournisseur existe avec ce même nom +A symbol for this currency. For e.g. $,Un symbole pour cette monnaie. Par exemple $ AMC Expiry Date,AMC Date d'expiration Abbr,Abbr -Abbreviation cannot have more than 5 characters,Compte avec la transaction existante ne peut pas être converti en groupe. +Abbreviation cannot have more than 5 characters,L'abbréviation ne peut pas avoir plus de 5 caractères Above Value,Au-dessus de la valeur Absent,Absent Acceptance Criteria,Critères d'acceptation Accepted,Accepté -Accepted + Rejected Qty must be equal to Received quantity for Item {0},Compte {0} doit être SAMES comme débit pour tenir compte de la facture de vente en ligne {0} +Accepted + Rejected Qty must be equal to Received quantity for Item {0},"La quantité acceptée + rejetée doit être égale à la quantité reçue pour l'Item {0} +Compte {0} doit être SAMES comme débit pour tenir compte de la facture de vente en ligne {0}" Accepted Quantity,Quantité acceptés -Accepted Warehouse,Entrepôt acceptés +Accepted Warehouse,Entrepôt acceptable Account,compte Account Balance,Solde du compte Account Created: {0},Compte créé : {0} Account Details,Détails du compte -Account Head,Chef du compte +Account Head,Responsable du compte Account Name,Nom du compte Account Type,Type de compte "Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'","Le solde du compte déjà en crédit, vous n'êtes pas autorisé à mettre en 'équilibre doit être' comme 'débit'" "Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'","Le solde du compte déjà en débit, vous n'êtes pas autorisé à définir 'équilibre doit être' comme 'Crédit'" Account for the warehouse (Perpetual Inventory) will be created under this Account.,Compte de l'entrepôt ( de l'inventaire permanent ) sera créé sous ce compte . -Account head {0} created,Employé soulagé sur {0} doit être défini comme «gauche» -Account must be a balance sheet account,arrhes +Account head {0} created,Responsable du compte {0} a été crée +Account must be a balance sheet account,Le compte doit être un bilan Account with child nodes cannot be converted to ledger,Liste des prix non sélectionné Account with existing transaction can not be converted to group.,{0} n'est pas un congé approbateur valide Account with existing transaction can not be deleted,Compte avec la transaction existante ne peut pas être supprimé Account with existing transaction cannot be converted to ledger,Compte avec la transaction existante ne peut pas être converti en livre Account {0} cannot be a Group,Compte {0} ne peut pas être un groupe -Account {0} does not belong to Company {1},{0} créé +Account {0} does not belong to Company {1},Compte {0} n'appartient pas à la société {1} Account {0} does not belong to company: {1},Compte {0} n'appartient pas à l'entreprise: {1} -Account {0} does not exist,Votre adresse e-mail +Account {0} does not exist,Compte {0} n'existe pas Account {0} has been entered more than once for fiscal year {1},S'il vous plaît entrer « Répétez le jour du Mois de la« valeur de champ Account {0} is frozen,Attention: Commande {0} existe déjà contre le même numéro de bon de commande Account {0} is inactive,dépenses directes @@ -80,13 +81,13 @@ Account {0}: Parent account {1} does not belong to company: {2},Compte {0}: comp Account {0}: Parent account {1} does not exist,Compte {0}: compte de Parent {1} n'existe pas Account {0}: You can not assign itself as parent account,Compte {0}: Vous ne pouvez pas lui attribuer que compte parent Account: {0} can only be updated via \ Stock Transactions,Compte: {0} ne peut être mise à jour via \ Transactions de stock -Accountant,comptable +Accountant,Comptable Accounting,Comptabilité "Accounting Entries can be made against leaf nodes, called","Écritures comptables peuvent être faites contre nœuds feuilles , appelé" "Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.","Saisie comptable gelé jusqu'à cette date, personne ne peut faire / modifier entrée sauf rôle spécifié ci-dessous." Accounting journal entries.,Les écritures comptables. Accounts,Comptes -Accounts Browser,comptes navigateur +Accounts Browser,Navigateur des comptes Accounts Frozen Upto,Jusqu'à comptes gelés Accounts Payable,Comptes à payer Accounts Receivable,Débiteurs @@ -113,28 +114,28 @@ Actual Start Date,Date de début réelle Add,Ajouter Add / Edit Taxes and Charges,Ajouter / Modifier Taxes et frais Add Child,Ajouter un enfant -Add Serial No,Ajouter N ° de série +Add Serial No,Ajouter Numéro de série Add Taxes,Ajouter impôts Add Taxes and Charges,Ajouter Taxes et frais Add or Deduct,Ajouter ou déduire -Add rows to set annual budgets on Accounts.,Ajoutez des lignes d'établir des budgets annuels des comptes. -Add to Cart,ERP open source construit pour le web -Add to calendar on this date,Ajouter au calendrier à cette date +Add rows to set annual budgets on Accounts.,Ajoutez des lignes pour établir des budgets annuels sur des comptes. +Add to Cart,Ajouter au panier +Add to calendar on this date,Ajouter cette date au calendrier Add/Remove Recipients,Ajouter / supprimer des destinataires Address,Adresse Address & Contact,Adresse et coordonnées -Address & Contacts,Adresse & Contacts +Address & Contacts,Adresse & Coordonnées Address Desc,Adresse Desc Address Details,Détails de l'adresse Address HTML,Adresse HTML Address Line 1,Adresse ligne 1 Address Line 2,Adresse ligne 2 Address Template,Adresse modèle -Address Title,Titre Adresse +Address Title,Titre de l'adresse Address Title is mandatory.,Vous n'êtes pas autorisé à imprimer ce document Address Type,Type d'adresse -Address master.,Ou créés par -Administrative Expenses,applicabilité +Address master.,Adresse principale +Administrative Expenses,Dépenses administratives Administrative Officer,de l'administration Advance Amount,Montant de l'avance Advance amount,Montant de l'avance @@ -142,7 +143,7 @@ Advances,Avances Advertisement,Publicité Advertising,publicité Aerospace,aérospatial -After Sale Installations,Après Installations Vente +After Sale Installations,Installations Après Vente Against,Contre Against Account,Contre compte Against Bill {0} dated {1},Courriel invalide : {0} @@ -197,7 +198,7 @@ Allocated amount can not greater than unadusted amount,Montant alloué ne peut p Allow Bill of Materials,Laissez Bill of Materials Allow Bill of Materials should be 'Yes'. Because one or many active BOMs present for this item,Commande {0} n'est pas valide Allow Children,permettre aux enfants -Allow Dropbox Access,Autoriser l'accès Dropbox +Allow Dropbox Access,Autoriser l'accès au Dropbox Allow Google Drive Access,Autoriser Google Drive accès Allow Negative Balance,Laissez solde négatif Allow Negative Stock,Laissez Stock Négatif @@ -219,7 +220,7 @@ An Customer exists with same name,Il existe un client avec le même nom "An Item Group exists with same name, please change the item name or rename the item group","Un groupe d'objet existe avec le même nom , s'il vous plaît changer le nom de l'élément ou de renommer le groupe de l'article" "An item exists with same name ({0}), please change the item group name or rename the item",Le compte doit être un compte de bilan Analyst,analyste -Annual,Nomenclature +Annual,Annuel Another Period Closing Entry {0} has been made after {1},Point Wise impôt Détail Another Salary Structure {0} is active for employee {0}. Please make its status 'Inactive' to proceed.,Le taux de conversion ne peut pas être égal à 0 ou 1 "Any other comments, noteworthy effort that should go in the records.","D'autres commentaires, l'effort remarquable qui devrait aller dans les dossiers." @@ -288,20 +289,20 @@ Automatically extract Job Applicants from a mail box , Automatically extract Leads from a mail box e.g.,Extraire automatiquement des prospects à partir d'une boîte aux lettres par exemple Automatically updated via Stock Entry of type Manufacture/Repack,Automatiquement mis à jour via l'entrée de fabrication de type Stock / Repack Automotive,automobile -Autoreply when a new mail is received,Autoreply quand un nouveau message est reçu +Autoreply when a new mail is received,Réponse automatique lorsqu'un nouveau message est reçu Available,disponible Available Qty at Warehouse,Qté disponible à l'entrepôt Available Stock for Packing Items,Disponible en stock pour l'emballage Articles "Available in BOM, Delivery Note, Purchase Invoice, Production Order, Purchase Order, Purchase Receipt, Sales Invoice, Sales Order, Stock Entry, Timesheet","Disponible en nomenclature , bon de livraison , facture d'achat , ordre de production, bon de commande , bon de réception , la facture de vente , Sales Order , Stock entrée , des feuilles de temps" -Average Age,moyen âge -Average Commission Rate,Taux moyen Commission -Average Discount,D'actualisation moyen -Awesome Products,"Pour suivre le nom de la marque dans la note qui suit documents de livraison , Opportunité , Demande de Matériel , article , bon de commande, bon d'achat, l'acheteur réception , offre , facture de vente , ventes BOM , Sales Order , No de série" -Awesome Services,Restrictions d'autorisation de l'utilisateur -BOM Detail No,Détail BOM Non +Average Age,âge moyen +Average Commission Rate,Taux moyen de la commission +Average Discount,Remise moyenne +Awesome Products,Produits impressionnants +Awesome Services,Services impressionnants +BOM Detail No,Numéro du détail BOM BOM Explosion Item,Article éclatement de la nomenclature BOM Item,Article BOM -BOM No,Aucune nomenclature +BOM No,Numéro BOM BOM No. for a Finished Good Item,N ° nomenclature pour un produit fini Bonne BOM Operation,Opération BOM BOM Operations,Opérations de nomenclature @@ -314,50 +315,50 @@ BOM {0} for Item {1} in row {2} is inactive or not submitted,Dépenses de voyage BOM {0} is not active or not submitted,Eléments requis BOM {0} is not submitted or inactive BOM for Item {1},BOM {0} n'est pas soumis ou inactif nomenclature pour objet {1} Backup Manager,Gestionnaire de sauvegarde -Backup Right Now,Sauvegarde Right Now +Backup Right Now,Sauvegarder immédiatement Backups will be uploaded to,Les sauvegardes seront téléchargées sur -Balance Qty,solde Quantité -Balance Sheet,Fournisseur Type maître . -Balance Value,Valeur de balance -Balance for Account {0} must always be {1},Point {0} avec Serial Non {1} est déjà installé -Balance must be,avec des grands livres -"Balances of Accounts of type ""Bank"" or ""Cash""",Date de vieillissement est obligatoire pour l'ouverture d'entrée +Balance Qty,Qté soldée +Balance Sheet,Bilan +Balance Value,Valeur du solde +Balance for Account {0} must always be {1},Solde pour le compte {0} doit toujours être {1} +Balance must be,Solde doit être +"Balances of Accounts of type ""Bank"" or ""Cash""","Solde du compte de type ""Banque"" ou ""Espèces""" Bank,Banque -Bank / Cash Account,Banque / Compte de trésorerie -Bank A/C No.,Bank A / C No. +Bank / Cash Account,Compte en Banque / trésorerie +Bank A/C No.,No. de compte bancaire Bank Account,Compte bancaire -Bank Account No.,N ° de compte bancaire +Bank Account No.,No. de compte bancaire Bank Accounts,Comptes bancaires -Bank Clearance Summary,Banque Résumé de dégagement +Bank Clearance Summary,Résumé de l'approbation de la banque Bank Draft,Projet de la Banque Bank Name,Nom de la banque -Bank Overdraft Account,Inspection de la qualité requise pour objet {0} +Bank Overdraft Account,Compte du découvert bancaire Bank Reconciliation,Rapprochement bancaire -Bank Reconciliation Detail,Détail de rapprochement bancaire -Bank Reconciliation Statement,État de rapprochement bancaire -Bank Voucher,Bon Banque -Bank/Cash Balance,Banque / Balance trésorerie -Banking,bancaire +Bank Reconciliation Detail,Détail du rapprochement bancaire +Bank Reconciliation Statement,Énoncé de rapprochement bancaire +Bank Voucher,Coupon de la banque +Bank/Cash Balance,Solde de la banque / trésorerie +Banking,Bancaire Barcode,Barcode -Barcode {0} already used in Item {1},Lettre d'information a déjà été envoyé +Barcode {0} already used in Item {1},Le code barre {0} est déjà utilisé dans l'article {1} Based On,Basé sur Basic,de base Basic Info,Informations de base Basic Information,Renseignements de base Basic Rate,Taux de base -Basic Rate (Company Currency),Taux de base (Société Monnaie) +Basic Rate (Company Currency),Taux de base (Monnaie de la Société ) Batch,Lot -Batch (lot) of an Item.,Batch (lot) d'un élément. -Batch Finished Date,Date de lot fini -Batch ID,ID du lot -Batch No,Aucun lot -Batch Started Date,Date de démarrage du lot +Batch (lot) of an Item.,Lot d'une article. +Batch Finished Date,La date finie d'un lot +Batch ID,Identifiant du lot +Batch No,Numéro du lot +Batch Started Date,Date de début du lot Batch Time Logs for billing.,Temps de lots des journaux pour la facturation. Batch-Wise Balance History,Discontinu Histoire de la balance Batched for Billing,Par lots pour la facturation Better Prospects,De meilleures perspectives -Bill Date,Bill Date -Bill No,Le projet de loi no +Bill Date,Date de la facture +Bill No,Numéro de la facture Bill No {0} already booked in Purchase Invoice {1},Centre de coûts de transactions existants ne peut pas être converti en livre Bill of Material,De la valeur doit être inférieure à la valeur à la ligne {0} Bill of Material to be considered for manufacturing,Bill of Material être considéré pour la fabrication @@ -386,22 +387,22 @@ Both Warehouse must belong to same Company,Les deux Entrepôt doit appartenir à Box,boîte Branch,Branche Brand,Marque -Brand Name,Nom de marque +Brand Name,La marque Brand master.,Marque maître. Brands,Marques Breakdown,Panne -Broadcasting,radiodiffusion +Broadcasting,Diffusion Brokerage,courtage Budget,Budget Budget Allocated,Budget alloué Budget Detail,Détail du budget Budget Details,Détails du budget Budget Distribution,Répartition du budget -Budget Distribution Detail,Détail Répartition du budget +Budget Distribution Detail,Détail de la répartition du budget Budget Distribution Details,Détails de la répartition du budget -Budget Variance Report,Rapport sur les écarts de budget +Budget Variance Report,Rapport sur les écarts du budget Budget cannot be set for Group Cost Centers,Imprimer et stationnaire -Build Report,construire Rapport +Build Report,Créer un rapport Bundle items at time of sale.,Regrouper des envois au moment de la vente. Business Development Manager,Directeur du développement des affaires Buying,Achat @@ -501,7 +502,7 @@ Cheque Date,Date de chèques Cheque Number,Numéro de chèque Child account exists for this account. You can not delete this account.,Les matières premières ne peut pas être le même que l'article principal City,Ville -City/Town,Ville / +City/Town,Ville Claim Amount,Montant réclamé Claims for company expense.,Les réclamations pour frais de la société. Class / Percentage,Classe / Pourcentage @@ -561,11 +562,11 @@ Complete,Compléter Complete Setup,congé de maladie Completed,Terminé Completed Production Orders,Terminé les ordres de fabrication -Completed Qty,Complété Quantité +Completed Qty,Quantité complétée Completion Date,Date d'achèvement Completion Status,L'état d'achèvement Computer,ordinateur -Computers,Informatique +Computers,Ordinateurs Confirmation Date,date de confirmation Confirmed orders from Customers.,Confirmé commandes provenant de clients. Consider Tax or Charge for,Prenons l'impôt ou charge pour @@ -715,7 +716,7 @@ Customize the introductory text that goes as a part of that email. Each transact DN Detail,Détail DN Daily,Quotidien Daily Time Log Summary,Daily Time Sommaire du journal -Database Folder ID,Database ID du dossier +Database Folder ID,Identifiant du dossier de la base de données Database of potential customers.,Base de données de clients potentiels. Date,Date Date Format,Format de date @@ -745,7 +746,7 @@ Deductions,Déductions Default,Par défaut Default Account,Compte par défaut Default Address Template cannot be deleted,Adresse par défaut modèle ne peut pas être supprimé -Default Amount,Montant en défaut +Default Amount,Montant par défaut Default BOM,Nomenclature par défaut Default Bank / Cash account will be automatically updated in POS Invoice when this mode is selected.,Par défaut Banque / argent compte sera automatiquement mis à jour dans la facture POS lorsque ce mode est sélectionné. Default Bank Account,Compte bancaire par défaut @@ -779,18 +780,18 @@ Default settings for selling transactions.,principal Default settings for stock transactions.,minute Defense,défense "Define Budget for this Cost Center. To set budget action, see
Company Master","Définir le budget pour ce centre de coûts. Pour définir l'action budgétaire, voir Maître Société" -Del,Eff -Delete,Effacer +Del,Suppr +Delete,Supprimer Delete {0} {1}?,Supprimer {0} {1} ? Delivered,Livré -Delivered Items To Be Billed,Les articles livrés être facturé +Delivered Items To Be Billed,Les items livrés à être facturés Delivered Qty,Qté livrée Delivered Serial No {0} cannot be deleted,médical Delivery Date,Date de livraison Delivery Details,Détails de la livraison Delivery Document No,Pas de livraison de documents Delivery Document Type,Type de document de livraison -Delivery Note,Remarque livraison +Delivery Note,Bon de livraison Delivery Note Item,Point de Livraison Delivery Note Items,Articles bordereau de livraison Delivery Note Message,Note Message de livraison @@ -800,9 +801,9 @@ Delivery Note Trends,Bordereau de livraison Tendances Delivery Note {0} is not submitted,Livraison Remarque {0} n'est pas soumis Delivery Note {0} must not be submitted,Pas de clients ou fournisseurs Comptes trouvé Delivery Notes {0} must be cancelled before cancelling this Sales Order,Quantité en ligne {0} ( {1} ) doit être la même que la quantité fabriquée {2} -Delivery Status,Delivery Status -Delivery Time,Délai de livraison -Delivery To,Pour livraison +Delivery Status,Statut de la livraison +Delivery Time,L'heure de la livraison +Delivery To,Livrer à Department,Département Department Stores,Grands Magasins Depends on LWP,Dépend de LWP @@ -822,8 +823,8 @@ Direct Income,Choisissez votre langue Disable,"Groupe ajoutée, rafraîchissant ..." Disable Rounded Total,Désactiver totale arrondie Disabled,Handicapé -Discount %,% De réduction -Discount %,% De réduction +Discount %,% Remise +Discount %,% Remise Discount (%),Remise (%) Discount Amount,S'il vous plaît tirer des articles de livraison Note "Discount Fields will be available in Purchase Order, Purchase Receipt, Purchase Invoice","Les champs d'actualisation sera disponible en commande, reçu d'achat, facture d'achat" @@ -1464,8 +1465,8 @@ Journal Voucher {0} does not have account {1} or already matched,Journal Bon {0} Journal Vouchers {0} are un-linked,Date de livraison prévue ne peut pas être avant ventes Date de commande Keep a track of communication related to this enquiry which will help for future reference.,Gardez une trace de la communication liée à cette enquête qui aidera pour référence future. Keep it web friendly 900px (w) by 100px (h),Gardez web 900px amical ( w) par 100px ( h ) -Key Performance Area,Zone de performance clé -Key Responsibility Area,Secteur de responsabilité clé +Key Performance Area,Section de performance clé +Key Responsibility Area,Section à responsabilité importante Kg,kg LR Date,LR Date LR No,LR Non @@ -1723,9 +1724,9 @@ Net Weight UOM,Emballage Poids Net Net Weight of each Item,Poids net de chaque article Net pay cannot be negative,Landed Cost correctement mis à jour Never,Jamais -New , +New ,Nouveau New Account,nouveau compte -New Account Name,Nouveau compte Nom +New Account Name,Nom du nouveau compte New BOM,Nouvelle nomenclature New Communications,Communications Nouveau- New Company,nouvelle entreprise @@ -1761,11 +1762,11 @@ Newspaper Publishers,Éditeurs de journaux Next,Nombre purchse de commande requis pour objet {0} Next Contact By,Suivant Par Next Contact Date,Date Contact Suivant -Next Date,Date d' +Next Date,Date suivante Next email will be sent on:,Email sera envoyé le: -No,Aucun +No,Non No Customer Accounts found.,Aucun client ne représente trouvés. -No Customer or Supplier Accounts found,Encaisse +No Customer or Supplier Accounts found,Aucun compte client ou fournisseur trouvé No Expense Approvers. Please assign 'Expense Approver' Role to atleast one user,Compte {0} est inactif No Item with Barcode {0},Bon de commande {0} ' arrêté ' No Item with Serial No {0},non autorisé @@ -1775,13 +1776,13 @@ No Permission,Aucune autorisation No Production Orders created,Section de base No Supplier Accounts found. Supplier Accounts are identified based on 'Master Type' value in account record.,Aucun fournisseur ne représente trouvés. Comptes fournisseurs sont identifiés sur la base de la valeur «Maître Type ' dans le compte rendu. No accounting entries for the following warehouses,Pas d'entrées comptables pour les entrepôts suivants -No addresses created,Aucune adresse créés +No addresses created,Aucune adresse créée No contacts created,Pas de contacts créés No default Address Template found. Please create a new one from Setup > Printing and Branding > Address Template.,Aucune valeur par défaut Adresse modèle trouvé. S'il vous plaît créer un nouveau à partir de Configuration> Presse et Branding> Adresse modèle. No default BOM exists for Item {0},services impressionnants No description given,Le jour (s ) sur lequel vous postulez pour congé sont les vacances . Vous n'avez pas besoin de demander l'autorisation . -No employee found,Aucun employé -No employee found!,Aucun employé ! +No employee found,Aucun employé trouvé +No employee found!,Aucun employé trouvé! No of Requested SMS,Pas de SMS demandés No of Sent SMS,Pas de SMS envoyés No of Visits,Pas de visites @@ -1816,14 +1817,14 @@ Note: This Cost Center is a Group. Cannot make accounting entries against groups Note: {0},Compte avec des nœuds enfants ne peut pas être converti en livre Notes,Remarques Notes:,notes: -Nothing to request,Rien à demander +Nothing to request,Pas de requête à demander Notice (days),Avis ( jours ) Notification Control,Contrôle de notification Notification Email Address,Adresse e-mail de notification Notify by Email on creation of automatic Material Request,Notification par courriel lors de la création de la demande de matériel automatique Number Format,Format numérique -Offer Date,offre date -Office,Fonction +Offer Date,Date de l'offre +Office,Bureau Office Equipments,Équipement de bureau Office Maintenance Expenses,Date d'adhésion doit être supérieure à Date de naissance Office Rent,POS Global Setting {0} déjà créé pour la compagnie {1} @@ -1970,7 +1971,7 @@ Payments made during the digest period,Les paiements effectués au cours de la p Payments received during the digest period,Les paiements reçus au cours de la période digest Payroll Settings,Paramètres de la paie Pending,En attendant -Pending Amount,Montant attente +Pending Amount,Montant en attente Pending Items {0} updated,Machines et installations Pending Review,Attente d'examen Pending SO Items For Purchase Request,"Articles en attente Donc, pour demande d'achat" @@ -2097,11 +2098,11 @@ Please set {0},S'il vous plaît mettre {0} Please setup Employee Naming System in Human Resource > HR Settings,S'il vous plaît configuration Naming System employés en ressources humaines> Paramètres RH Please setup numbering series for Attendance via Setup > Numbering Series,S'il vous plaît configuration série de numérotation à la fréquentation via Configuration> Série de numérotation Please setup your chart of accounts before you start Accounting Entries,S'il vous plaît configurer votre plan de comptes avant de commencer Écritures comptables -Please specify,S'il vous plaît spécifier +Please specify,Veuillez spécifier Please specify Company,S'il vous plaît préciser Company Please specify Company to proceed,Veuillez indiquer Société de procéder Please specify Default Currency in Company Master and Global Defaults,N ° de série {0} n'existe pas -Please specify a,S'il vous plaît spécifier une +Please specify a,Veuillez spécifier un Please specify a valid 'From Case No.',S'il vous plaît indiquer une valide »De Affaire n ' Please specify a valid Row ID for {0} in row {1},Il s'agit d'un site d'exemple généré automatiquement à partir de ERPNext Please specify either Quantity or Valuation Rate or both,S'il vous plaît spécifier Quantité ou l'évaluation des taux ou à la fois @@ -2205,7 +2206,7 @@ Publishing,édition Pull sales orders (pending to deliver) based on the above criteria,Tirez les ordres de vente (en attendant de livrer) sur la base des critères ci-dessus Purchase,Acheter Purchase / Manufacture Details,Achat / Fabrication Détails -Purchase Analytics,Achat Analytics +Purchase Analytics,Les analyses des achats Purchase Common,Achat commune Purchase Details,Conditions de souscription Purchase Discounts,Rabais sur l'achat @@ -2256,7 +2257,7 @@ Qty To Manufacture,Quantité à fabriquer Qty as per Stock UOM,Qté en stock pour Emballage Qty to Deliver,Quantité à livrer Qty to Order,Quantité à commander -Qty to Receive,Quantité pour recevoir +Qty to Receive,Quantité à recevoir Qty to Transfer,Quantité de Transfert Qualification,Qualification Quality,Qualité @@ -2278,11 +2279,11 @@ Quantity required for Item {0} in row {1},Quantité requise pour objet {0} à la Quarter,Trimestre Quarterly,Trimestriel Quick Help,Aide rapide -Quotation,Citation +Quotation,Devis Quotation Item,Article devis Quotation Items,Articles de devis Quotation Lost Reason,Devis perdu la raison -Quotation Message,Devis message +Quotation Message,Message du devis Quotation To,Devis Pour Quotation Trends,Devis Tendances Quotation {0} is cancelled,Devis {0} est annulée @@ -2296,8 +2297,8 @@ Random,Aléatoire Range,Gamme Rate,Taux Rate ,Taux -Rate (%),S'il vous plaît entrer la date soulager . -Rate (Company Currency),Taux (Société Monnaie) +Rate (%),Taux (%) +Rate (Company Currency),Taux (Monnaie de la société) Rate Of Materials Based On,Taux de matériaux à base Rate and Amount,Taux et le montant Rate at which Customer Currency is converted to customer's base currency,Vitesse à laquelle la devise du client est converti en devise de base du client @@ -2318,15 +2319,15 @@ Re-order Level,Re-order niveau Re-order Qty,Re-order Quantité Read,Lire Reading 1,Lecture 1 -Reading 10,Lecture le 10 +Reading 10,Lecture 10 Reading 2,Lecture 2 Reading 3,Reading 3 Reading 4,Reading 4 Reading 5,Reading 5 Reading 6,Lecture 6 -Reading 7,Lecture le 7 +Reading 7,Lecture 7 Reading 8,Lecture 8 -Reading 9,Lectures suggérées 9 +Reading 9,Lecture 9 Real Estate,Immobilier Reason,Raison Reason for Leaving,Raison du départ @@ -2345,7 +2346,7 @@ Received and Accepted,Reçus et acceptés Receiver List,Liste des récepteurs Receiver List is empty. Please create Receiver List,Soit quantité de cible ou le montant cible est obligatoire . Receiver Parameter,Paramètre récepteur -Recipients,Récipiendaires +Recipients,Destinataires Reconcile,réconcilier Reconciliation Data,Données de réconciliation Reconciliation HTML,Réconciliation HTML @@ -2383,7 +2384,7 @@ Remarks,Remarques Remarks Custom,Remarques sur commande Rename,rebaptiser Rename Log,Renommez identifiez-vous -Rename Tool,Renommer l'outil +Rename Tool,Outils de renommage Rent Cost,louer coût Rent per hour,Louer par heure Rented,Loué @@ -2419,8 +2420,8 @@ Reseller,Revendeur Reserved,réservé Reserved Qty,Quantité réservés "Reserved Qty: Quantity ordered for sale, but not delivered.","Réservés Quantité: Quantité de commande pour la vente , mais pas livré ." -Reserved Quantity,Quantité réservés -Reserved Warehouse,Réservé Entrepôt +Reserved Quantity,Quantité réservée +Reserved Warehouse,Entrepôt réservé Reserved Warehouse in Sales Order / Finished Goods Warehouse,Entrepôt réservé à des commandes clients / entrepôt de produits finis Reserved Warehouse is missing in Sales Order,Réservé entrepôt est manquant dans l'ordre des ventes Reserved Warehouse required for stock Item {0} in row {1},Centre de coûts par défaut de vente @@ -3158,8 +3159,8 @@ Voucher Type and Date,Type de chèques et date Walk In,Walk In Warehouse,entrepôt Warehouse Contact Info,Entrepôt Info Contact -Warehouse Detail,Détail d'entrepôt -Warehouse Name,Nom d'entrepôt +Warehouse Detail,Détail de l'entrepôt +Warehouse Name,Nom de l'entrepôt Warehouse and Reference,Entrepôt et référence Warehouse can not be deleted as stock ledger entry exists for this warehouse.,Descendre : {0} Warehouse can only be changed via Stock Entry / Delivery Note / Purchase Receipt,Entrepôt ne peut être modifié via Stock Entrée / bon de livraison / reçu d'achat @@ -3177,15 +3178,15 @@ Warehouse {0}: Parent account {1} does not bolong to the company {2},Entrepôt { Warehouse-Wise Stock Balance,Warehouse-Wise Stock Solde Warehouse-wise Item Reorder,Warehouse-sage Réorganiser article Warehouses,Entrepôts -Warehouses.,applicable +Warehouses.,Entrepôts. Warn,Avertir Warning: Leave application contains following block dates,Attention: la demande d'autorisation contient les dates de blocs suivants Warning: Material Requested Qty is less than Minimum Order Qty,Attention: Matériel requis Quantité est inférieure Quantité minimum à commander Warning: Sales Order {0} already exists against same Purchase Order number,S'il vous plaît vérifier ' Est Advance' contre compte {0} si c'est une entrée avance . Warning: System will not check overbilling since amount for Item {0} in {1} is zero,Attention : Le système ne vérifie pas la surfacturation depuis montant pour objet {0} dans {1} est nulle -Warranty / AMC Details,Garantie / AMC Détails -Warranty / AMC Status,Garantie / AMC Statut -Warranty Expiry Date,Date d'expiration de garantie +Warranty / AMC Details,Garantie / Détails AMC +Warranty / AMC Status,Garantie / Statut AMC +Warranty Expiry Date,Date d'expiration de la garantie Warranty Period (Days),Période de garantie (jours) Warranty Period (in days),Période de garantie (en jours) We buy this Item,Nous achetons cet article @@ -3237,7 +3238,7 @@ Write Off Outstanding Amount,Ecrire Off Encours Write Off Voucher,Ecrire Off Bon Wrong Template: Unable to find head row.,Modèle tort: ​​Impossible de trouver la ligne de tête. Year,Année -Year Closed,L'année Fermé +Year Closed,L'année est fermée Year End Date,Fin de l'exercice Date de Year Name,Nom Année Year Start Date,Date de début Année diff --git a/erpnext/translations/hi.csv b/erpnext/translations/hi.csv index 63e2323a98..e1092492ac 100644 --- a/erpnext/translations/hi.csv +++ b/erpnext/translations/hi.csv @@ -38,30 +38,30 @@ A Customer Group exists with same name please change the Customer name or rename A Customer exists with same name,यह नाम से दूसरा ग्राहक मौजूद हैं A Lead with this email id should exist,इस ईमेल आईडी के साथ एक लीड मौजूद होना चाहिए A Product or Service,उत्पाद या सेवा -A Supplier exists with same name,सप्लायर एक ही नाम के साथ मौजूद है -A symbol for this currency. For e.g. $,इस मुद्रा के लिए एक प्रतीक है. उदाहरण के लिए $ +A Supplier exists with same name,यह नाम से दूसरा आपूर्तिकर्ता मौजूद है +A symbol for this currency. For e.g. $,इस मुद्रा के लिए एक प्रतीक. उदाहरण के लिए $ AMC Expiry Date,एएमसी समाप्ति तिथि -Abbr,Abbr -Abbreviation cannot have more than 5 characters,संक्षिप्त 5 से अधिक वर्ण नहीं हो सकता -Above Value,मूल्य से ऊपर +Abbr,संक्षिप्त +Abbreviation cannot have more than 5 characters,संक्षिप्त 5 से अधिक वर्ण की नहीं हो सकती +Above Value,ऊपर मूल्य Absent,अनुपस्थित -Acceptance Criteria,स्वीकृति मानदंड +Acceptance Criteria,स्वीकृति मापदंड Accepted,स्वीकार किया Accepted + Rejected Qty must be equal to Received quantity for Item {0},स्वीकृत + अस्वीकृत मात्रा मद के लिए प्राप्त मात्रा के बराबर होना चाहिए {0} Accepted Quantity,स्वीकार किए जाते हैं मात्रा -Accepted Warehouse,स्वीकार किए जाते हैं वेअरहाउस +Accepted Warehouse,स्वीकार किए जाते हैं गोदाम Account,खाता -Account Balance,खाता शेष -Account Created: {0},खाता बनाया : {0} +Account Balance,खाते की शेष राशि +Account Created: {0},खाता बन गया : {0} Account Details,खाता विवरण Account Head,लेखाशीर्ष Account Name,खाते का नाम Account Type,खाता प्रकार -"Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'","खाता शेष राशि पहले से ही क्रेडिट में, आप सेट करने की अनुमति नहीं है 'डेबिट' के रूप में 'बैलेंस होना चाहिए'" -"Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'","पहले से ही डेबिट में खाता शेष, आप के रूप में 'क्रेडिट' 'बैलेंस होना चाहिए' स्थापित करने के लिए अनुमति नहीं है" +"Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'","खाते की शेष राशि पहले से ही क्रेडिट में है, कृपया आप शेष राशि को डेबिट के रूप में ही रखें " +"Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'","खाते की शेष राशि पहले से ही डेबिट में है, कृपया आप शेष राशि को क्रेडिट के रूप में ही रखें" Account for the warehouse (Perpetual Inventory) will be created under this Account.,गोदाम ( सदा सूची ) के लिए खाते में इस खाते के तहत बनाया जाएगा . -Account head {0} created,लेखा शीर्ष {0} बनाया -Account must be a balance sheet account,खाता एक वित्तीय स्थिति विवरण खाता होना चाहिए +Account head {0} created,लेखाशीर्ष {0} बनाया +Account must be a balance sheet account,खाता एक वित्तीय स्थिति विवरण का खाता होना चाहिए Account with child nodes cannot be converted to ledger,बच्चे नोड्स के साथ खाता लेजर को परिवर्तित नहीं किया जा सकता है Account with existing transaction can not be converted to group.,मौजूदा लेन - देन के साथ खाता समूह को नहीं बदला जा सकता . Account with existing transaction can not be deleted,मौजूदा लेन - देन के साथ खाता हटाया नहीं जा सकता diff --git a/erpnext/translations/ja.csv b/erpnext/translations/ja.csv index a6e14611b1..4b2a0157df 100644 --- a/erpnext/translations/ja.csv +++ b/erpnext/translations/ja.csv @@ -44,7 +44,7 @@ AMC Expiry Date,AMCの有効期限日 Abbr,略称 Abbreviation cannot have more than 5 characters,略語は、5つ以上の文字を使用することはできません Above Value,値を上回る -Absent,ない +Absent,いんない Acceptance Criteria,合否基準 Accepted,承認済 Accepted + Rejected Qty must be equal to Received quantity for Item {0},一般に認められた+拒否数量、アイテムの受信量と等しくなければなりません{0} diff --git a/erpnext/translations/th.csv b/erpnext/translations/th.csv index 47462b7ff5..8043ecaa12 100644 --- a/erpnext/translations/th.csv +++ b/erpnext/translations/th.csv @@ -1559,9 +1559,9 @@ Maintain same rate throughout purchase cycle,รักษาอัตราเ Maintenance,การบำรุงรักษา Maintenance Date,วันที่การบำรุงรักษา Maintenance Details,รายละเอียดการบำรุงรักษา -Maintenance Schedule,ตารางการบำรุงรักษา -Maintenance Schedule Detail,รายละเอียดตารางการบำรุงรักษา -Maintenance Schedule Item,รายการตารางการบำรุงรักษา +Maintenance Schedule,กำหนดการซ่อมบำรุง +Maintenance Schedule Detail,รายละเอียดกำหนดการซ่อมบำรุง +Maintenance Schedule Item,รายการกำหนดการซ่อมบำรุง Maintenance Schedule is not generated for all the items. Please click on 'Generate Schedule',ตาราง การบำรุงรักษา ที่ไม่ได้ สร้างขึ้นสำหรับ รายการทั้งหมด กรุณา คลิกที่ 'สร้าง ตาราง ' Maintenance Schedule {0} exists against {0},ตาราง การบำรุงรักษา {0} อยู่ กับ {0} Maintenance Schedule {0} must be cancelled before cancelling this Sales Order,ตาราง การบำรุงรักษา {0} ต้อง ถูกยกเลิก ก่อนที่จะ ยกเลิกการ สั่งซื้อการขาย นี้ @@ -1574,7 +1574,7 @@ Maintenance Visit Purpose,วัตถุประสงค์ชมการบ Maintenance Visit {0} must be cancelled before cancelling this Sales Order,การบำรุงรักษา ไปที่ {0} ต้อง ถูกยกเลิก ก่อนที่จะ ยกเลิกการ สั่งซื้อการขาย นี้ Maintenance start date can not be before delivery date for Serial No {0},วันที่เริ่มต้น การบำรุงรักษา ไม่สามารถ ก่อนวัน ส่งสำหรับ อนุกรม ไม่มี {0} Major/Optional Subjects,วิชาเอก / เสริม -Make , +Make ,สร้าง Make Accounting Entry For Every Stock Movement,ทำให้ รายการ บัญชี สำหรับ ทุก การเคลื่อนไหวของ หุ้น Make Bank Voucher,ทำให้บัตรของธนาคาร Make Credit Note,ให้ เครดิต หมายเหตุ @@ -1587,7 +1587,7 @@ Make Invoice,ทำให้ ใบแจ้งหนี้ Make Maint. Schedule,ทำให้ Maint ตารางเวลา Make Maint. Visit,ทำให้ Maint เยือน Make Maintenance Visit,ทำให้ การบำรุงรักษา เยี่ยมชม -Make Packing Slip,ให้ บรรจุ สลิป +Make Packing Slip,สร้าง รายการบรรจุภัณฑ์ Make Payment,ชำระเงิน Make Payment Entry,ทำ รายการ ชำระเงิน Make Purchase Invoice,ให้ ซื้อ ใบแจ้งหนี้ @@ -1628,7 +1628,7 @@ Mass Mailing,จดหมายมวล Master Name,ชื่อปริญญาโท Master Name is mandatory if account type is Warehouse,ชื่อ ปริญญาโท มีผลบังคับใช้ ถ้าชนิด บัญชี คลังสินค้า Master Type,ประเภทหลัก -Masters,โท +Masters,ข้อมูลหลัก Match non-linked Invoices and Payments.,ตรงกับใบแจ้งหนี้ไม่ได้เชื่อมโยงและการชำระเงิน Material Issue,ฉบับวัสดุ Material Receipt,ใบเสร็จรับเงินวัสดุ @@ -2465,7 +2465,7 @@ Row {0}:Start Date must be before End Date,แถว {0}: วันที่ เ Rules for adding shipping costs.,กฎระเบียบ สำหรับการเพิ่ม ค่าใช้จ่ายใน การจัดส่งสินค้า Rules for applying pricing and discount.,กฎระเบียบ สำหรับการใช้ การกำหนดราคาและ ส่วนลด Rules to calculate shipping amount for a sale,กฎระเบียบในการคำนวณปริมาณการขนส่งสินค้าสำหรับการขาย -S.O. No.,S.O. เลขที่ +S.O. No.,เลขที่ใบสั่งขาย SHE Cess on Excise,SHE Cess บนสรรพสามิต SHE Cess on Service Tax,SHE Cess กับภาษีบริการ SHE Cess on TDS,SHE Cess ใน TDS @@ -2550,7 +2550,7 @@ Salutation,ประณม Sample Size,ขนาดของกลุ่มตัวอย่าง Sanctioned Amount,จำนวนตามทำนองคลองธรรม Saturday,วันเสาร์ -Schedule,กำหนด +Schedule,กำหนดการ Schedule Date,กำหนดการ วันที่ Schedule Details,รายละเอียดตาราง Scheduled,กำหนด @@ -2564,7 +2564,7 @@ Score Earned,คะแนนที่ได้รับ Score must be less than or equal to 5,คะแนน ต้องน้อยกว่า หรือ เท่ากับ 5 Scrap %,เศษ% Seasonality for setting budgets.,ฤดูกาลสำหรับงบประมาณการตั้งค่า -Secretary,เลขานุการ +Secretary,เลขา Secured Loans,เงินให้กู้ยืม ที่มีหลักประกัน Securities & Commodity Exchanges,หลักทรัพย์และ การแลกเปลี่ยน สินค้าโภคภัณฑ์ Securities and Deposits,หลักทรัพย์และ เงินฝาก @@ -2603,14 +2603,14 @@ Select your home country and check the timezone and currency.,เลือกป "Selecting ""Yes"" will allow you to create Bill of Material showing raw material and operational costs incurred to manufacture this item.",เลือก "ใช่" จะช่วยให้คุณสามารถสร้างบิลของวัสดุแสดงวัตถุดิบและต้นทุนการดำเนินงานที่เกิดขึ้นในการผลิตรายการนี​​้ "Selecting ""Yes"" will allow you to make a Production Order for this item.",เลือก "ใช่" จะช่วยให้คุณที่จะทำให้การสั่งซื้อการผลิตสำหรับรายการนี​​้ "Selecting ""Yes"" will give a unique identity to each entity of this item which can be viewed in the Serial No master.",เลือก "Yes" จะให้เอกลักษณ์เฉพาะของแต่ละองค์กรเพื่อรายการนี​​้ซึ่งสามารถดูได้ในหลักหมายเลขเครื่อง -Selling,ขาย -Selling Settings,การขายการตั้งค่า +Selling,การขาย +Selling Settings,ตั้งค่าระบบการขาย "Selling must be checked, if Applicable For is selected as {0}",ขายจะต้องตรวจสอบถ้าใช้สำหรับการถูกเลือกเป็น {0} Send,ส่ง Send Autoreply,ส่ง autoreply Send Email,ส่งอีเมล์ -Send From,ส่งเริ่มต้นที่ -Send Notifications To,ส่งการแจ้งเตือนไป +Send From,ส่งจาก +Send Notifications To,แจ้งเตือนไปให้ Send Now,ส่งเดี๋ยวนี้ Send SMS,ส่ง SMS Send To,ส่งให้ diff --git a/erpnext/translations/tr.csv b/erpnext/translations/tr.csv index 0d9fb014e2..67b2c24a6c 100644 --- a/erpnext/translations/tr.csv +++ b/erpnext/translations/tr.csv @@ -38,7 +38,7 @@ A Customer Group exists with same name please change the Customer name or rename A Customer exists with same name,Bir Müşteri aynı adla A Lead with this email id should exist,Bu e-posta kimliği ile bir Kurşun bulunmalıdır A Product or Service,Bir Ürün veya Hizmet -A Supplier exists with same name,A Tedarikçi aynı adla +A Supplier exists with same name,Bu Tedarikçi mevcut A symbol for this currency. For e.g. $,Bu para için bir sembol. Örneğin $ için AMC Expiry Date,AMC Son Kullanma Tarihi Abbr,Kısaltma From 1b2944e87161ef5fd4eb5549119258f3e2c24b46 Mon Sep 17 00:00:00 2001 From: ankitjavalkarwork Date: Wed, 8 Oct 2014 14:24:58 +0530 Subject: [PATCH 12/56] Rearrange To/From, Recurring Type field for better UX --- .../purchase_invoice/purchase_invoice.json | 26 +++++++++---------- .../doctype/sales_invoice/sales_invoice.json | 24 ++++++++--------- .../purchase_order/purchase_order.json | 22 ++++++++-------- .../doctype/sales_order/sales_order.json | 26 +++++++++---------- 4 files changed, 49 insertions(+), 49 deletions(-) diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json index 153b8d89e4..7e374002f2 100755 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json @@ -780,6 +780,18 @@ "permlevel": 0, "print_hide": 1 }, + { + "allow_on_submit": 1, + "depends_on": "eval:doc.is_recurring==1", + "description": "Select the period when the invoice will be generated automatically", + "fieldname": "recurring_type", + "fieldtype": "Select", + "label": "Recurring Type", + "no_copy": 1, + "options": "Monthly\nQuarterly\nHalf-yearly\nYearly", + "permlevel": 0, + "print_hide": 1 + }, { "allow_on_submit": 1, "depends_on": "eval:doc.is_recurring==1", @@ -800,18 +812,6 @@ "no_copy": 1, "permlevel": 0 }, - { - "allow_on_submit": 1, - "depends_on": "eval:doc.is_recurring==1", - "description": "Select the period when the invoice will be generated automatically", - "fieldname": "recurring_type", - "fieldtype": "Select", - "label": "Recurring Type", - "no_copy": 1, - "options": "Monthly\nQuarterly\nHalf-yearly\nYearly", - "permlevel": 0, - "print_hide": 1 - }, { "allow_on_submit": 1, "depends_on": "eval:doc.is_recurring==1", @@ -878,7 +878,7 @@ "icon": "icon-file-text", "idx": 1, "is_submittable": 1, - "modified": "2014-10-06 12:57:32.064210", + "modified": "2014-10-08 14:23:20.234176", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice", diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json index 21c96e745d..e9bb996f76 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json @@ -1074,13 +1074,14 @@ { "allow_on_submit": 1, "depends_on": "eval:doc.is_recurring==1", - "description": "End date of current invoice's period", - "fieldname": "to_date", - "fieldtype": "Date", - "label": "To Date", + "description": "Select the period when the invoice will be generated automatically", + "fieldname": "recurring_type", + "fieldtype": "Select", + "label": "Recurring Type", "no_copy": 1, + "options": "\nMonthly\nQuarterly\nHalf-yearly\nYearly", "permlevel": 0, - "print_hide": 0, + "print_hide": 1, "read_only": 0 }, { @@ -1098,14 +1099,13 @@ { "allow_on_submit": 1, "depends_on": "eval:doc.is_recurring==1", - "description": "Select the period when the invoice will be generated automatically", - "fieldname": "recurring_type", - "fieldtype": "Select", - "label": "Recurring Type", + "description": "End date of current invoice's period", + "fieldname": "to_date", + "fieldtype": "Date", + "label": "To Date", "no_copy": 1, - "options": "\nMonthly\nQuarterly\nHalf-yearly\nYearly", "permlevel": 0, - "print_hide": 1, + "print_hide": 0, "read_only": 0 }, { @@ -1192,7 +1192,7 @@ "icon": "icon-file-text", "idx": 1, "is_submittable": 1, - "modified": "2014-10-06 12:54:42.549361", + "modified": "2014-10-08 14:23:05.034326", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice", diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json index 8380e864c6..f072b65a46 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.json +++ b/erpnext/buying/doctype/purchase_order/purchase_order.json @@ -677,6 +677,16 @@ "permlevel": 0, "print_hide": 1 }, + { + "allow_on_submit": 1, + "depends_on": "eval:doc.is_recurring==1", + "fieldname": "recurring_type", + "fieldtype": "Select", + "label": "Recurring Type", + "no_copy": 1, + "options": "Monthly\nQuarterly\nHalf-yearly\nYearly", + "permlevel": 0 + }, { "allow_on_submit": 1, "depends_on": "eval:doc.is_recurring==1", @@ -697,16 +707,6 @@ "no_copy": 1, "permlevel": 0 }, - { - "allow_on_submit": 1, - "depends_on": "eval:doc.is_recurring==1", - "fieldname": "recurring_type", - "fieldtype": "Select", - "label": "Recurring Type", - "no_copy": 1, - "options": "Monthly\nQuarterly\nHalf-yearly\nYearly", - "permlevel": 0 - }, { "allow_on_submit": 1, "depends_on": "eval:doc.is_recurring==1", @@ -772,7 +772,7 @@ "icon": "icon-file-text", "idx": 1, "is_submittable": 1, - "modified": "2014-10-06 12:16:44.453946", + "modified": "2014-10-08 14:23:29.718779", "modified_by": "Administrator", "module": "Buying", "name": "Purchase Order", diff --git a/erpnext/selling/doctype/sales_order/sales_order.json b/erpnext/selling/doctype/sales_order/sales_order.json index 5af9a26ed9..69693a7bed 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.json +++ b/erpnext/selling/doctype/sales_order/sales_order.json @@ -921,6 +921,18 @@ "permlevel": 0, "print_hide": 1 }, + { + "allow_on_submit": 1, + "depends_on": "eval:doc.is_recurring==1", + "description": "Select the period when the invoice will be generated automatically", + "fieldname": "recurring_type", + "fieldtype": "Select", + "label": "Recurring Type", + "no_copy": 1, + "options": "\nMonthly\nQuarterly\nHalf-yearly\nYearly", + "permlevel": 0, + "print_hide": 1 + }, { "allow_on_submit": 1, "depends_on": "eval:doc.is_recurring==1", @@ -941,18 +953,6 @@ "no_copy": 1, "permlevel": 0 }, - { - "allow_on_submit": 1, - "depends_on": "eval:doc.is_recurring==1", - "description": "Select the period when the invoice will be generated automatically", - "fieldname": "recurring_type", - "fieldtype": "Select", - "label": "Recurring Type", - "no_copy": 1, - "options": "\nMonthly\nQuarterly\nHalf-yearly\nYearly", - "permlevel": 0, - "print_hide": 1 - }, { "allow_on_submit": 1, "depends_on": "eval:doc.is_recurring==1", @@ -1020,7 +1020,7 @@ "idx": 1, "is_submittable": 1, "issingle": 0, - "modified": "2014-10-06 12:16:41.256013", + "modified": "2014-10-08 14:22:44.717108", "modified_by": "Administrator", "module": "Selling", "name": "Sales Order", From e96e83d557048a58f5ab261317802aa1deb424be Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 8 Oct 2014 18:06:14 +0530 Subject: [PATCH 13/56] stock reco and repost vouchers --- erpnext/controllers/buying_controller.py | 17 +++++++-- erpnext/controllers/stock_controller.py | 10 ++--- erpnext/public/js/stock_analytics.js | 3 ++ erpnext/public/js/stock_grid_report.js | 38 +++++++++---------- .../stock/doctype/stock_entry/stock_entry.py | 2 +- .../stock_reconciliation.py | 5 --- .../stock/page/stock_balance/stock_balance.js | 3 ++ erpnext/utilities/repost_stock.py | 17 +++++---- 8 files changed, 53 insertions(+), 42 deletions(-) diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py index 69ab661616..3cb6bf7fbb 100644 --- a/erpnext/controllers/buying_controller.py +++ b/erpnext/controllers/buying_controller.py @@ -256,8 +256,6 @@ class BuyingController(StockController): rm.required_qty = required_qty rm.conversion_factor = item.conversion_factor - rm.rate = bom_item.rate - rm.amount = required_qty * flt(bom_item.rate) rm.idx = rm_supplied_idx if self.doctype == "Purchase Receipt": @@ -268,7 +266,20 @@ class BuyingController(StockController): rm_supplied_idx += 1 - raw_materials_cost += required_qty * flt(bom_item.rate) + # get raw materials rate + from erpnext.stock.utils import get_incoming_rate + item_rate = get_incoming_rate({ + "item_code": bom_item.item_code, + "warehouse": self.supplier_warehouse, + "posting_date": self.posting_date, + "posting_time": self.posting_time, + "qty": -1 * required_qty, + "serial_no": rm.serial_no + }) + rm.rate = item_rate + rm.amount = required_qty * flt(item_rate) + + raw_materials_cost += flt(rm.amount) if self.doctype == "Purchase Receipt": item.rm_supp_cost = raw_materials_cost diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index 8c5bcac407..20eb40c418 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -30,7 +30,7 @@ class StockController(AccountsController): def get_gl_entries(self, warehouse_account=None, default_expense_account=None, default_cost_center=None, allow_negative_stock=False): - # block_negative_stock(allow_negative_stock) + block_negative_stock(allow_negative_stock) if not warehouse_account: warehouse_account = get_warehouse_account() @@ -51,7 +51,7 @@ class StockController(AccountsController): stock_value_difference = flt(sle.stock_value_difference, 2) if not stock_value_difference: - valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse, sle.posting_date) + valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse) stock_value_difference = flt(sle.actual_qty)*flt(valuation_rate) gl_list.append(self.get_gl_dict({ @@ -301,12 +301,12 @@ def block_negative_stock(allow_negative_stock=False): if cint(frappe.db.get_value("Stock Settings", None, "allow_negative_stock")): frappe.throw(_("Negative stock is not allowed in case of Perpetual Inventory, please disable it from Stock Settings")) -def get_valuation_rate(item_code, warehouse, posting_date): +def get_valuation_rate(item_code, warehouse): last_valuation_rate = frappe.db.sql("""select valuation_rate from `tabStock Ledger Entry` where item_code = %s and warehouse = %s - and ifnull(qty_after_transaction, 0) > 0 and posting_date < %s - order by posting_date desc limit 1""", (item_code, warehouse, posting_date)) + and ifnull(qty_after_transaction, 0) > 0 + order by posting_date desc, posting_time desc, name desc limit 1""", (item_code, warehouse)) valuation_rate = flt(last_valuation_rate[0][0]) if last_valuation_rate else 0 diff --git a/erpnext/public/js/stock_analytics.js b/erpnext/public/js/stock_analytics.js index 84c0386c57..a86d7ade95 100644 --- a/erpnext/public/js/stock_analytics.js +++ b/erpnext/public/js/stock_analytics.js @@ -140,6 +140,9 @@ erpnext.StockAnalytics = erpnext.StockGridReport.extend({ if(sl.voucher_type=="Stock Reconciliation") { var diff = (sl.qty_after_transaction * sl.valuation_rate) - item.closing_qty_value; + wh.fifo_stack.push([sl.qty_after_transaction, sl.valuation_rate, sl.posting_date]); + wh.balance_qty = sl.qty_after_transaction; + wh.balance_value = sl.valuation_rate * sl.qty_after_transaction; } else { var diff = me.get_value_diff(wh, sl, is_fifo); } diff --git a/erpnext/public/js/stock_grid_report.js b/erpnext/public/js/stock_grid_report.js index f58c1ab613..726852f7ce 100644 --- a/erpnext/public/js/stock_grid_report.js +++ b/erpnext/public/js/stock_grid_report.js @@ -9,8 +9,8 @@ erpnext.StockGridReport = frappe.views.TreeGridReport.extend({ }; return this.item_warehouse[item][warehouse]; }, - - get_value_diff: function(wh, sl, is_fifo) { + + get_value_diff: function(wh, sl, is_fifo) { // value if(sl.qty > 0) { // incoming - rate is given @@ -30,9 +30,9 @@ erpnext.StockGridReport = frappe.views.TreeGridReport.extend({ } else { var value_diff = (rate * add_qty); } - + if(add_qty) - wh.fifo_stack.push([add_qty, sl.incoming_rate, sl.posting_date]); + wh.fifo_stack.push([add_qty, sl.incoming_rate, sl.posting_date]); } else { // called everytime for maintaining fifo stack var fifo_value_diff = this.get_fifo_value_diff(wh, sl); @@ -44,13 +44,13 @@ erpnext.StockGridReport = frappe.views.TreeGridReport.extend({ var value_diff = fifo_value_diff; } else { // average rate for weighted average - var rate = (wh.balance_qty.toFixed(2) == 0.00 ? 0 : + var rate = (wh.balance_qty.toFixed(2) == 0.00 ? 0 : flt(wh.balance_value) / flt(wh.balance_qty)); - + // no change in value if negative qty if((wh.balance_qty + sl.qty).toFixed(2) >= 0.00) var value_diff = (rate * sl.qty); - else + else var value_diff = -wh.balance_value; } } @@ -58,7 +58,6 @@ erpnext.StockGridReport = frappe.views.TreeGridReport.extend({ // update balance (only needed in case of valuation) wh.balance_qty += sl.qty; wh.balance_value += value_diff; - return value_diff; }, get_fifo_value_diff: function(wh, sl) { @@ -66,19 +65,19 @@ erpnext.StockGridReport = frappe.views.TreeGridReport.extend({ var fifo_stack = (wh.fifo_stack || []).reverse(); var fifo_value_diff = 0.0; var qty = -sl.qty; - + for(var i=0, j=fifo_stack.length; i= qty) { batch[0] = batch[0] - qty; fifo_value_diff += (qty * batch[1]); - + qty = 0.0; if(batch[0]) { // batch still has qty put it back fifo_stack.push(batch); } - + // all qty found break; } else { @@ -87,35 +86,34 @@ erpnext.StockGridReport = frappe.views.TreeGridReport.extend({ qty = qty - batch[0]; } } - // reset the updated stack wh.fifo_stack = fifo_stack.reverse(); return -fifo_value_diff; }, - + get_serialized_value_diff: function(sl) { var me = this; - + var value_diff = 0.0; - + $.each(sl.serial_no.trim().split("\n"), function(i, sr) { if(sr) { value_diff += flt(me.serialized_buying_rates[sr.trim().toLowerCase()]); } }); - + return value_diff; }, - + get_serialized_buying_rates: function() { var serialized_buying_rates = {}; - + if (frappe.report_dump.data["Serial No"]) { $.each(frappe.report_dump.data["Serial No"], function(i, sn) { serialized_buying_rates[sn.name.toLowerCase()] = flt(sn.incoming_rate); }); } - + return serialized_buying_rates; }, -}); \ No newline at end of file +}); diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 4cc96bfec7..4f3480c0bb 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -527,7 +527,7 @@ class StockEntry(StockController): } }, bom_no=self.bom_no) - self.e() + self.get_stock_and_rate() def get_bom_raw_materials(self, qty): from erpnext.manufacturing.doctype.bom.bom import get_bom_items_as_dict diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py index 6c3c395d88..b67090d137 100644 --- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py @@ -16,8 +16,6 @@ class StockReconciliation(StockController): self.head_row = ["Item Code", "Warehouse", "Quantity", "Valuation Rate"] def validate(self): - self.entries = [] - self.validate_data() self.validate_expense_account() @@ -179,9 +177,6 @@ class StockReconciliation(StockController): }) self.make_sl_entries([args]) - # append to entries - self.entries.append(args) - def delete_and_repost_sle(self): """ Delete Stock Ledger Entries related to this voucher and repost future Stock Ledger Entries""" diff --git a/erpnext/stock/page/stock_balance/stock_balance.js b/erpnext/stock/page/stock_balance/stock_balance.js index 7405227116..ecd1108bc6 100644 --- a/erpnext/stock/page/stock_balance/stock_balance.js +++ b/erpnext/stock/page/stock_balance/stock_balance.js @@ -107,6 +107,9 @@ erpnext.StockBalance = erpnext.StockAnalytics.extend({ if(sl.voucher_type=="Stock Reconciliation") { var qty_diff = sl.qty_after_transaction - (item.temp_closing_qty || 0.0); var value_diff = (sl.valuation_rate * sl.qty_after_transaction) - (item.temp_closing_value || 0.0); + wh.fifo_stack.push([sl.qty_after_transaction, sl.valuation_rate, sl.posting_date]); + wh.balance_qty = sl.qty_after_transaction; + wh.balance_value = sl.valuation_rate * sl.qty_after_transaction; } else { var qty_diff = sl.qty; var value_diff = me.get_value_diff(wh, sl, is_fifo); diff --git a/erpnext/utilities/repost_stock.py b/erpnext/utilities/repost_stock.py index 9c3bf1d0e9..51b472e155 100644 --- a/erpnext/utilities/repost_stock.py +++ b/erpnext/utilities/repost_stock.py @@ -214,9 +214,8 @@ def repost_all_stock_vouchers(): from `tabStock Ledger Entry` order by posting_date, posting_time, name""") rejected = [] - i = 0 + # vouchers = [["Purchase Receipt", "GRN00062"]] for voucher_type, voucher_no in vouchers: - i += 1 print voucher_type, voucher_no try: for dt in ["Stock Ledger Entry", "GL Entry"]: @@ -226,13 +225,15 @@ def repost_all_stock_vouchers(): doc = frappe.get_doc(voucher_type, voucher_no) if voucher_type=="Stock Entry" and doc.purpose in ["Manufacture", "Repack"]: doc.get_stock_and_rate(force=1) + # elif voucher_type=="Purchase Receipt": + # doc.create_raw_materials_supplied("pr_raw_material_details") + doc.update_stock_ledger() - doc.make_gl_entries() - if i%100 == 0: - frappe.db.commit() - except: + doc.make_gl_entries(repost_future_gle=False, allow_negative_stock=True) + frappe.db.commit() + except Exception, e: + print frappe.get_traceback() rejected.append([voucher_type, voucher_no]) - pass + frappe.db.rollback() print rejected - From fce2881de66584d870a96fbe6ba36f5550316a46 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 8 Oct 2014 18:38:27 +0530 Subject: [PATCH 14/56] minor fix --- erpnext/controllers/buying_controller.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py index 3cb6bf7fbb..3d25c213ed 100644 --- a/erpnext/controllers/buying_controller.py +++ b/erpnext/controllers/buying_controller.py @@ -267,18 +267,20 @@ class BuyingController(StockController): rm_supplied_idx += 1 # get raw materials rate - from erpnext.stock.utils import get_incoming_rate - item_rate = get_incoming_rate({ - "item_code": bom_item.item_code, - "warehouse": self.supplier_warehouse, - "posting_date": self.posting_date, - "posting_time": self.posting_time, - "qty": -1 * required_qty, - "serial_no": rm.serial_no - }) - rm.rate = item_rate - rm.amount = required_qty * flt(item_rate) + if self.doctype == "Purchase Receipt": + from erpnext.stock.utils import get_incoming_rate + rm.rate = get_incoming_rate({ + "item_code": bom_item.item_code, + "warehouse": self.supplier_warehouse, + "posting_date": self.posting_date, + "posting_time": self.posting_time, + "qty": -1 * required_qty, + "serial_no": rm.serial_no + }) + else: + rm.rate = bom_item.rate + rm.amount = required_qty * flt(rm.rate) raw_materials_cost += flt(rm.amount) if self.doctype == "Purchase Receipt": From e435592d64dbd4f75a7cc9d1ac8bb17ab4177a2b Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Thu, 9 Oct 2014 11:22:12 +0530 Subject: [PATCH 15/56] [minor] Fix default website style patch (reload doc) --- erpnext/patches/v4_2/default_website_style.py | 1 + 1 file changed, 1 insertion(+) diff --git a/erpnext/patches/v4_2/default_website_style.py b/erpnext/patches/v4_2/default_website_style.py index 5fbbd48c5b..6f375b9ab5 100644 --- a/erpnext/patches/v4_2/default_website_style.py +++ b/erpnext/patches/v4_2/default_website_style.py @@ -2,6 +2,7 @@ import frappe from frappe.templates.pages.style_settings import default_properties def execute(): + frappe.reload_doc('website', 'doctype', 'style_settings') style_settings = frappe.get_doc("Style Settings", "Style Settings") if not style_settings.apply_style: style_settings.update(default_properties) From 4d742161472ac5228d100c7aab4994c8fc40fdaa Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Thu, 9 Oct 2014 19:25:03 +0530 Subject: [PATCH 16/56] Maintain negative stock balance if balance qty is negative --- erpnext/controllers/buying_controller.py | 3 +- erpnext/controllers/stock_controller.py | 8 ++- .../doctype/stock_entry/test_stock_entry.py | 66 +++++++++++++++--- .../test_stock_reconciliation.py | 12 ++-- .../stock/page/stock_balance/stock_balance.js | 1 + erpnext/stock/stock_ledger.py | 68 +++++++++++-------- erpnext/stock/utils.py | 3 +- erpnext/utilities/repost_stock.py | 7 +- 8 files changed, 118 insertions(+), 50 deletions(-) diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py index 3d25c213ed..66d5792e2d 100644 --- a/erpnext/controllers/buying_controller.py +++ b/erpnext/controllers/buying_controller.py @@ -269,7 +269,7 @@ class BuyingController(StockController): # get raw materials rate if self.doctype == "Purchase Receipt": from erpnext.stock.utils import get_incoming_rate - rm.rate = get_incoming_rate({ + item_rate = get_incoming_rate({ "item_code": bom_item.item_code, "warehouse": self.supplier_warehouse, "posting_date": self.posting_date, @@ -277,6 +277,7 @@ class BuyingController(StockController): "qty": -1 * required_qty, "serial_no": rm.serial_no }) + rm.rate = item_rate or bom_item.rate else: rm.rate = bom_item.rate diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index 20eb40c418..ad553d8c83 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -305,9 +305,15 @@ def get_valuation_rate(item_code, warehouse): last_valuation_rate = frappe.db.sql("""select valuation_rate from `tabStock Ledger Entry` where item_code = %s and warehouse = %s - and ifnull(qty_after_transaction, 0) > 0 + and ifnull(valuation_rate, 0) > 0 order by posting_date desc, posting_time desc, name desc limit 1""", (item_code, warehouse)) + if not last_valuation_rate: + last_valuation_rate = frappe.db.sql("""select valuation_rate + from `tabStock Ledger Entry` + where item_code = %s and ifnull(valuation_rate, 0) > 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 not valuation_rate: diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py index 038606cc1d..7654cbcccd 100644 --- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py @@ -9,14 +9,64 @@ from erpnext.stock.doctype.serial_no.serial_no import * from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import set_perpetual_inventory from erpnext.stock.doctype.stock_ledger_entry.stock_ledger_entry import StockFreezeError +def get_sle(**args): + condition, values = "", [] + for key, value in args.iteritems(): + condition += " and " if condition else " where " + condition += "`{0}`=%s".format(key) + values.append(value) + + return frappe.db.sql("""select * from `tabStock Ledger Entry` %s + order by timestamp(posting_date, posting_time) desc, name desc limit 1"""% condition, + values, as_dict=1) + +def make_zero(item_code, warehouse): + sle = get_sle(item_code = item_code, warehouse = warehouse) + qty = sle[0].qty_after_transaction if sle else 0 + if qty < 0: + make_stock_entry(item_code, None, warehouse, abs(qty), incoming_rate=10) + elif qty > 0: + make_stock_entry(item_code, warehouse, None, qty, incoming_rate=10) + class TestStockEntry(unittest.TestCase): - def tearDown(self): frappe.set_user("Administrator") set_perpetual_inventory(0) if hasattr(self, "old_default_company"): frappe.db.set_default("company", self.old_default_company) + def test_fifo(self): + frappe.db.set_default("allow_negative_stock", 1) + item_code = "_Test Item 2" + warehouse = "_Test Warehouse - _TC" + make_zero(item_code, warehouse) + + make_stock_entry(item_code, None, warehouse, 1, incoming_rate=10) + sle = get_sle(item_code = item_code, warehouse = warehouse)[0] + + self.assertEqual([[1, 10]], eval(sle.stock_queue)) + + # negative qty + make_zero(item_code, warehouse) + make_stock_entry(item_code, warehouse, None, 1, incoming_rate=10) + sle = get_sle(item_code = item_code, warehouse = warehouse)[0] + + self.assertEqual([[-1, 10]], eval(sle.stock_queue)) + + # further negative + make_stock_entry(item_code, warehouse, None, 1) + sle = get_sle(item_code = item_code, warehouse = warehouse)[0] + + self.assertEqual([[-2, 10]], eval(sle.stock_queue)) + + # move stock to positive + make_stock_entry(item_code, None, warehouse, 3, incoming_rate=10) + sle = get_sle(item_code = item_code, warehouse = warehouse)[0] + + self.assertEqual([[1, 10]], eval(sle.stock_queue)) + + frappe.db.set_default("allow_negative_stock", 0) + def test_auto_material_request(self): frappe.db.sql("""delete from `tabMaterial Request Item`""") frappe.db.sql("""delete from `tabMaterial Request`""") @@ -821,19 +871,19 @@ class TestStockEntry(unittest.TestCase): se = frappe.copy_doc(test_records[0]).insert() self.assertRaises (StockFreezeError, se.submit) frappe.db.set_value("Stock Settings", None, "stock_frozen_upto_days", 0) - + def test_production_order(self): - bom_no = frappe.db.get_value("BOM", {"item": "_Test FG Item 2", + bom_no = frappe.db.get_value("BOM", {"item": "_Test FG Item 2", "is_default": 1, "docstatus": 1}) - + production_order = frappe.new_doc("Production Order") production_order.update({ "company": "_Test Company", - "fg_warehouse": "_Test Warehouse 1 - _TC", - "production_item": "_Test FG Item 2", + "fg_warehouse": "_Test Warehouse 1 - _TC", + "production_item": "_Test FG Item 2", "bom_no": bom_no, "qty": 1.0, - "stock_uom": "Nos", + "stock_uom": "Nos", "wip_warehouse": "_Test Warehouse - _TC" }) production_order.insert() @@ -889,5 +939,3 @@ def make_stock_entry(item, source, target, qty, incoming_rate=None): s.insert() s.submit() return s - -test_records = frappe.get_test_records('Stock Entry') diff --git a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py index 183e3e51d2..91775d9087 100644 --- a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py +++ b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py @@ -28,7 +28,7 @@ class TestStockReconciliation(unittest.TestCase): [20, "", "2012-12-26", "12:05", 16000, 15, 18000], [10, 2000, "2012-12-26", "12:10", 20000, 5, 6000], [1, 1000, "2012-12-01", "00:00", 1000, 11, 13200], - [0, "", "2012-12-26", "12:10", 0, -5, 0] + [0, "", "2012-12-26", "12:10", 0, -5, -6000] ] for d in input_data: @@ -63,16 +63,16 @@ class TestStockReconciliation(unittest.TestCase): input_data = [ [50, 1000, "2012-12-26", "12:00", 50000, 45, 48000], [5, 1000, "2012-12-26", "12:00", 5000, 0, 0], - [15, 1000, "2012-12-26", "12:00", 15000, 10, 12000], + [15, 1000, "2012-12-26", "12:00", 15000, 10, 11500], [25, 900, "2012-12-26", "12:00", 22500, 20, 22500], [20, 500, "2012-12-26", "12:00", 10000, 15, 18000], [50, 1000, "2013-01-01", "12:00", 50000, 65, 68000], [5, 1000, "2013-01-01", "12:00", 5000, 20, 23000], - ["", 1000, "2012-12-26", "12:05", 15000, 10, 12000], + ["", 1000, "2012-12-26", "12:05", 15000, 10, 11500], [20, "", "2012-12-26", "12:05", 18000, 15, 18000], - [10, 2000, "2012-12-26", "12:10", 20000, 5, 6000], - [1, 1000, "2012-12-01", "00:00", 1000, 11, 13200], - [0, "", "2012-12-26", "12:10", 0, -5, 0] + [10, 2000, "2012-12-26", "12:10", 20000, 5, 7600], + [1, 1000, "2012-12-01", "00:00", 1000, 11, 12512.73], + [0, "", "2012-12-26", "12:10", 0, -5, -5142.86] ] diff --git a/erpnext/stock/page/stock_balance/stock_balance.js b/erpnext/stock/page/stock_balance/stock_balance.js index ecd1108bc6..198d317824 100644 --- a/erpnext/stock/page/stock_balance/stock_balance.js +++ b/erpnext/stock/page/stock_balance/stock_balance.js @@ -126,6 +126,7 @@ erpnext.StockBalance = erpnext.StockAnalytics.extend({ && this.stock_entry_map[sl.voucher_no].purpose=="Material Transfer"; if(!ignore_inflow_outflow) { + if(qty_diff < 0) { item.outflow_qty += Math.abs(qty_diff); } else { diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index e8a84c2ab1..f1ba94efab 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -106,18 +106,19 @@ def update_entries_after(args, verbose=1): stock_queue = [[qty_after_transaction, valuation_rate]] else: if valuation_method == "Moving Average": - valuation_rate = get_moving_average_values(qty_after_transaction, sle, valuation_rate) + if flt(sle.actual_qty) > 0: + valuation_rate = get_moving_average_values(qty_after_transaction, sle, valuation_rate) else: valuation_rate = get_fifo_values(qty_after_transaction, sle, stock_queue) + qty_after_transaction += flt(sle.actual_qty) # get stock value if sle.serial_no: stock_value = qty_after_transaction * valuation_rate elif valuation_method == "Moving Average": - stock_value = (qty_after_transaction > 0) and \ - (qty_after_transaction * valuation_rate) or 0 + stock_value = qty_after_transaction * valuation_rate else: stock_value = sum((flt(batch[0]) * flt(batch[1]) for batch in stock_queue)) @@ -256,64 +257,73 @@ def get_moving_average_values(qty_after_transaction, sle, valuation_rate): actual_qty = flt(sle.actual_qty) if not incoming_rate: - # In case of delivery/stock issue in_rate = 0 or wrong incoming rate + # If wrong incoming rate incoming_rate = valuation_rate - elif qty_after_transaction < 0: + elif qty_after_transaction < 0 and not valuation_rate: # if negative stock, take current valuation rate as incoming rate valuation_rate = incoming_rate - new_stock_qty = qty_after_transaction + actual_qty - new_stock_value = qty_after_transaction * valuation_rate + actual_qty * incoming_rate + new_stock_qty = abs(qty_after_transaction) + actual_qty + new_stock_value = (abs(qty_after_transaction) * valuation_rate) + (actual_qty * incoming_rate) - if new_stock_qty > 0 and new_stock_value > 0: + if new_stock_qty: valuation_rate = new_stock_value / flt(new_stock_qty) - elif new_stock_qty <= 0: - valuation_rate = 0.0 - # NOTE: val_rate is same as previous entry if new stock value is negative - - return valuation_rate + return abs(valuation_rate) def get_fifo_values(qty_after_transaction, sle, stock_queue): incoming_rate = flt(sle.incoming_rate) actual_qty = flt(sle.actual_qty) - if not stock_queue: - stock_queue.append([0, 0]) + + intialize_stock_queue(stock_queue, sle.item_code, sle.warehouse) if actual_qty > 0: if stock_queue[-1][0] > 0: stock_queue.append([actual_qty, incoming_rate]) else: qty = stock_queue[-1][0] + actual_qty - stock_queue[-1] = [qty, qty > 0 and incoming_rate or 0] + if qty == 0: + stock_queue.pop(-1) + else: + stock_queue[-1] = [qty, incoming_rate] else: - incoming_cost = 0 qty_to_pop = abs(actual_qty) while qty_to_pop: - if not stock_queue: - stock_queue.append([0, 0]) + intialize_stock_queue(stock_queue, sle.item_code, sle.warehouse) batch = stock_queue[0] - if 0 < batch[0] <= qty_to_pop: - # if batch qty > 0 - # not enough or exactly same qty in current batch, clear batch - incoming_cost += flt(batch[0]) * flt(batch[1]) - qty_to_pop -= batch[0] + # print qty_to_pop, batch + + if qty_to_pop >= batch[0]: + # consume current batch + qty_to_pop = qty_to_pop - batch[0] stock_queue.pop(0) + if not stock_queue and qty_to_pop: + # stock finished, qty still remains to be withdrawn + # negative stock, keep in as a negative batch + stock_queue.append([-qty_to_pop, batch[1]]) + break + else: - # all from current batch - incoming_cost += flt(qty_to_pop) * flt(batch[1]) - batch[0] -= qty_to_pop + # qty found in current batch + # consume it and exit + batch[0] = batch[0] - qty_to_pop qty_to_pop = 0 stock_value = sum((flt(batch[0]) * flt(batch[1]) for batch in stock_queue)) stock_qty = sum((flt(batch[0]) for batch in stock_queue)) - valuation_rate = stock_qty and (stock_value / flt(stock_qty)) or 0 + valuation_rate = (stock_value / flt(stock_qty)) if stock_qty else 0 - return valuation_rate + return abs(valuation_rate) + +def intialize_stock_queue(stock_queue, item_code, warehouse): + if not stock_queue: + from erpnext.controllers.stock_controller import get_valuation_rate + estimated_val_rate = get_valuation_rate(item_code, warehouse) + stock_queue.append([0, estimated_val_rate]) def _raise_exceptions(args, verbose=1): deficiency = min(e["diff"] for e in _exceptions) diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py index 7264f360b9..b444e84193 100644 --- a/erpnext/stock/utils.py +++ b/erpnext/stock/utils.py @@ -5,7 +5,6 @@ import frappe from frappe import _ import json from frappe.utils import flt, cstr, nowdate, add_days, cint -from frappe.defaults import get_global_default from frappe.utils.email_lib import sendmail from erpnext.accounts.utils import get_fiscal_year, FiscalYearError @@ -94,7 +93,7 @@ def get_valuation_method(item_code): """get valuation method from item or default""" val_method = frappe.db.get_value('Item', item_code, 'valuation_method') if not val_method: - val_method = get_global_default('valuation_method') or "FIFO" + val_method = frappe.db.get_value("Stock Settings", None, "valuation_method") or "FIFO" return val_method def get_fifo_rate(previous_stock_queue, qty): diff --git a/erpnext/utilities/repost_stock.py b/erpnext/utilities/repost_stock.py index 51b472e155..b5eec231d7 100644 --- a/erpnext/utilities/repost_stock.py +++ b/erpnext/utilities/repost_stock.py @@ -213,10 +213,13 @@ def repost_all_stock_vouchers(): vouchers = frappe.db.sql("""select distinct voucher_type, voucher_no from `tabStock Ledger Entry` order by posting_date, posting_time, name""") + print len(vouchers) rejected = [] - # vouchers = [["Purchase Receipt", "GRN00062"]] + # vouchers = [["Delivery Note", "DN00060"]] + i = 0 for voucher_type, voucher_no in vouchers: - print voucher_type, voucher_no + i+=1 + print i try: for dt in ["Stock Ledger Entry", "GL Entry"]: frappe.db.sql("""delete from `tab%s` where voucher_type=%s and voucher_no=%s"""% From ff231b5e62202384986ae209c5e190644a8bc2a6 Mon Sep 17 00:00:00 2001 From: ankitjavalkarwork Date: Fri, 10 Oct 2014 13:13:39 +0530 Subject: [PATCH 17/56] Allow advance JV payments in Accounts Receivable/Payable --- erpnext/accounts/report/accounts_payable/accounts_payable.py | 3 ++- .../accounts/report/accounts_receivable/accounts_receivable.py | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/erpnext/accounts/report/accounts_payable/accounts_payable.py b/erpnext/accounts/report/accounts_payable/accounts_payable.py index 3ae741e772..5ce2c562a3 100644 --- a/erpnext/accounts/report/accounts_payable/accounts_payable.py +++ b/erpnext/accounts/report/accounts_payable/accounts_payable.py @@ -30,7 +30,8 @@ def execute(filters=None): data = [] for gle in entries: if cstr(gle.against_voucher) == gle.voucher_no or not gle.against_voucher \ - or [gle.against_voucher_type, gle.against_voucher] in entries_after_report_date: + or [gle.against_voucher_type, gle.against_voucher] in entries_after_report_date \ + or (gle.against_voucher_type == "Purchase Order"): voucher_details = voucher_detail_map.get(gle.voucher_type, {}).get(gle.voucher_no, {}) invoiced_amount = gle.credit > 0 and gle.credit or 0 diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py index 3a0fb31dea..3dc81d1341 100644 --- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py +++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py @@ -79,6 +79,9 @@ class AccountsReceivableReport(object): return ( # advance (not gle.against_voucher) or + + # against sales order + (gle.against_voucher_type == "Sales Order") or # sales invoice (gle.against_voucher==gle.voucher_no and gle.debit > 0) or From 6d83454237d77fe9c484fa6f1e03dfad1af5cdee Mon Sep 17 00:00:00 2001 From: ankitjavalkarwork Date: Fri, 10 Oct 2014 13:30:10 +0530 Subject: [PATCH 18/56] Disallow Stopped Orders in Against Voucher table --- erpnext/accounts/doctype/payment_tool/payment_tool.py | 1 + 1 file changed, 1 insertion(+) diff --git a/erpnext/accounts/doctype/payment_tool/payment_tool.py b/erpnext/accounts/doctype/payment_tool/payment_tool.py index d8d6df3da2..578a3168ea 100644 --- a/erpnext/accounts/doctype/payment_tool/payment_tool.py +++ b/erpnext/accounts/doctype/payment_tool/payment_tool.py @@ -91,6 +91,7 @@ def get_orders_to_be_billed(party_type, party_name): where %s = %s and docstatus = 1 + and ifnull(status, "") != "Stopped" and ifnull(grand_total, 0) > ifnull(advance_paid, 0) and ifnull(per_billed, 0) < 100.0 """ % (voucher_type, 'customer' if party_type == "Customer" else 'supplier', '%s'), From 9a4b173b88cf73868131640777ba27a824d2746b Mon Sep 17 00:00:00 2001 From: ankitjavalkarwork Date: Fri, 10 Oct 2014 16:28:41 +0530 Subject: [PATCH 19/56] Add validation for stopped orders, advance payment in journal voucher --- .../doctype/journal_voucher/journal_voucher.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py index 7bf6fcc54e..719a7057cc 100644 --- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py +++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py @@ -76,13 +76,14 @@ class JournalVoucher(AccountsController): def validate_entries_for_advance(self): for d in self.get('entries'): - if not d.is_advance and not d.against_voucher and \ - not d.against_invoice and not d.against_jv: + if not (d.against_voucher and d.against_invoice and d.against_jv) and d.is_advance in ["", "No"]: master_type = frappe.db.get_value("Account", d.account, "master_type") if (master_type == 'Customer' and flt(d.credit) > 0) or \ (master_type == 'Supplier' and flt(d.debit) > 0): msgprint(_("Row {0}: Please check 'Is Advance' against Account {1} if this \ is an advance entry.").format(d.idx, d.account)) + if d.against_sales_order or d.against_purchase_order: + raise frappe.ValidationError def validate_against_jv(self): for d in self.get('entries'): @@ -177,7 +178,7 @@ class JournalVoucher(AccountsController): def validate_against_order_fields(self, doctype, payment_against_voucher): for voucher_no, payment_list in payment_against_voucher.items(): voucher_properties = frappe.db.get_value(doctype, voucher_no, - ["docstatus", "per_billed", "advance_paid", "grand_total"]) + ["docstatus", "per_billed", "status", "advance_paid", "grand_total"]) if voucher_properties[0] != 1: frappe.throw(_("{0} {1} is not submitted").format(doctype, voucher_no)) @@ -185,7 +186,10 @@ class JournalVoucher(AccountsController): if flt(voucher_properties[1]) >= 100: frappe.throw(_("{0} {1} is fully billed").format(doctype, voucher_no)) - if flt(voucher_properties[3]) < flt(voucher_properties[2]) + flt(sum(payment_list)): + if cstr(voucher_properties[2]) == "Stopped": + frappe.throw(_("{0} {1} is stopped").format(doctype, voucher_no)) + + if flt(voucher_properties[4]) < flt(voucher_properties[3]) + flt(sum(payment_list)): frappe.throw(_("Advance paid against {0} {1} cannot be greater \ than Grand Total {2}").format(doctype, voucher_no, voucher_properties[3])) From 0cf4cc283c7722c516806b573dca9accf511c861 Mon Sep 17 00:00:00 2001 From: ankitjavalkarwork Date: Fri, 10 Oct 2014 16:55:03 +0530 Subject: [PATCH 20/56] Add Shipping Addr to Sales Invoice --- .../doctype/sales_invoice/sales_invoice.json | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json index e9bb996f76..3dcf136d45 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json @@ -168,6 +168,27 @@ "reqd": 1, "search_index": 0 }, + { + "fieldname": "shipping_address_name", + "fieldtype": "Link", + "hidden": 1, + "in_filter": 1, + "label": "Shipping Address Name", + "options": "Address", + "permlevel": 0, + "precision": "", + "print_hide": 1 + }, + { + "fieldname": "shipping_address", + "fieldtype": "Small Text", + "hidden": 1, + "label": "Shipping Address", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1 + }, { "fieldname": "currency_section", "fieldtype": "Section Break", @@ -1192,7 +1213,7 @@ "icon": "icon-file-text", "idx": 1, "is_submittable": 1, - "modified": "2014-10-08 14:23:05.034326", + "modified": "2014-10-10 16:54:22.284284", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice", From 7820b171d31b3cf409bf60ce2f77703655926215 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 10 Oct 2014 18:02:23 +0530 Subject: [PATCH 21/56] Stock balance grid report deprecated and moved to server side --- erpnext/patches.txt | 3 +- .../__init__.py | 0 .../stock_balance.js} | 8 ++--- .../stock_balance.json} | 11 +++---- .../stock_balance.py} | 30 +++++++++++-------- 5 files changed, 30 insertions(+), 22 deletions(-) rename erpnext/stock/report/{warehouse_wise_stock_balance => stock_balance}/__init__.py (100%) rename erpnext/stock/report/{warehouse_wise_stock_balance/warehouse_wise_stock_balance.js => stock_balance/stock_balance.js} (75%) rename erpnext/stock/report/{warehouse_wise_stock_balance/warehouse_wise_stock_balance.json => stock_balance/stock_balance.json} (57%) rename erpnext/stock/report/{warehouse_wise_stock_balance/warehouse_wise_stock_balance.py => stock_balance/stock_balance.py} (80%) diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 29049f7def..bd2d436453 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -81,4 +81,5 @@ erpnext.patches.v4_2.default_website_style erpnext.patches.v4_2.set_company_country erpnext.patches.v4_2.update_sales_order_invoice_field_name erpnext.patches.v4_2.cost_of_production_cycle -erpnext.patches.v4_2.seprate_manufacture_and_repack \ No newline at end of file +erpnext.patches.v4_2.seprate_manufacture_and_repack +execute:frappe.delete_doc("Report", "Warehouse-Wise Stock Balance") diff --git a/erpnext/stock/report/warehouse_wise_stock_balance/__init__.py b/erpnext/stock/report/stock_balance/__init__.py similarity index 100% rename from erpnext/stock/report/warehouse_wise_stock_balance/__init__.py rename to erpnext/stock/report/stock_balance/__init__.py diff --git a/erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.js b/erpnext/stock/report/stock_balance/stock_balance.js similarity index 75% rename from erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.js rename to erpnext/stock/report/stock_balance/stock_balance.js index 2543fa4667..c0aed51845 100644 --- a/erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.js +++ b/erpnext/stock/report/stock_balance/stock_balance.js @@ -1,7 +1,7 @@ -// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -// License: GNU General Public License v3. See license.txt +// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors and contributors +// For license information, please see license.txt -frappe.query_reports["Warehouse-Wise Stock Balance"] = { +frappe.query_reports["Stock Balance"] = { "filters": [ { "fieldname":"from_date", @@ -18,4 +18,4 @@ frappe.query_reports["Warehouse-Wise Stock Balance"] = { "default": frappe.datetime.get_today() } ] -} \ No newline at end of file +} diff --git a/erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.json b/erpnext/stock/report/stock_balance/stock_balance.json similarity index 57% rename from erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.json rename to erpnext/stock/report/stock_balance/stock_balance.json index f911956111..ab331dc3c2 100644 --- a/erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.json +++ b/erpnext/stock/report/stock_balance/stock_balance.json @@ -1,16 +1,17 @@ { + "add_total_row": 0, "apply_user_permissions": 1, - "creation": "2013-06-05 11:00:31", + "creation": "2014-10-10 17:58:11.577901", + "disabled": 0, "docstatus": 0, "doctype": "Report", - "idx": 1, "is_standard": "Yes", - "modified": "2014-06-03 07:18:17.384923", + "modified": "2014-10-10 17:58:11.577901", "modified_by": "Administrator", "module": "Stock", - "name": "Warehouse-Wise Stock Balance", + "name": "Stock Balance", "owner": "Administrator", "ref_doctype": "Stock Ledger Entry", - "report_name": "Warehouse-Wise Stock Balance", + "report_name": "Stock Balance", "report_type": "Script Report" } \ No newline at end of file diff --git a/erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.py b/erpnext/stock/report/stock_balance/stock_balance.py similarity index 80% rename from erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.py rename to erpnext/stock/report/stock_balance/stock_balance.py index dc552cb773..95de739e0f 100644 --- a/erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.py +++ b/erpnext/stock/report/stock_balance/stock_balance.py @@ -59,9 +59,9 @@ def get_conditions(filters): def get_stock_ledger_entries(filters): conditions = get_conditions(filters) return frappe.db.sql("""select item_code, warehouse, posting_date, - actual_qty, valuation_rate, stock_uom, company + actual_qty, valuation_rate, stock_uom, company, voucher_type, qty_after_transaction from `tabStock Ledger Entry` - where docstatus < 2 %s order by item_code, warehouse""" % + where docstatus < 2 %s order by posting_date, posting_time, name""" % conditions, as_dict=1) def get_item_warehouse_map(filters): @@ -80,21 +80,27 @@ def get_item_warehouse_map(filters): qty_dict = iwb_map[d.company][d.item_code][d.warehouse] qty_dict.uom = d.stock_uom + if d.voucher_type == "Stock Reconciliation": + qty_diff = flt(d.qty_after_transaction) - qty_dict.bal_qty + value_diff = flt(d.stock_value) - qty_dict.bal_val + else: + qty_diff = flt(d.actual_qty) + value_diff = flt(d.actual_qty) * flt(d.valuation_rate) + if d.posting_date < filters["from_date"]: - qty_dict.opening_qty += flt(d.actual_qty) - qty_dict.opening_val += flt(d.actual_qty) * flt(d.valuation_rate) + qty_dict.opening_qty += qty_diff + qty_dict.opening_val += value_diff elif d.posting_date >= filters["from_date"] and d.posting_date <= filters["to_date"]: qty_dict.val_rate = d.valuation_rate - - if flt(d.actual_qty) > 0: - qty_dict.in_qty += flt(d.actual_qty) - qty_dict.in_val += flt(d.actual_qty) * flt(d.valuation_rate) + if qty_diff > 0: + qty_dict.in_qty += qty_diff + qty_dict.in_val += value_diff else: - qty_dict.out_qty += abs(flt(d.actual_qty)) - qty_dict.out_val += flt(abs(flt(d.actual_qty) * flt(d.valuation_rate))) + qty_dict.out_qty += abs(qty_diff) + qty_dict.out_val += abs(value_diff) - qty_dict.bal_qty += flt(d.actual_qty) - qty_dict.bal_val += flt(d.actual_qty) * flt(d.valuation_rate) + qty_dict.bal_qty += qty_diff + qty_dict.bal_val += value_diff return iwb_map From 7c6f990cf9688ad033c18e0620d35d601819165c Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 10 Oct 2014 18:03:27 +0530 Subject: [PATCH 22/56] Minor fix for moving average --- erpnext/stock/stock_ledger.py | 26 ++++++++++++-------------- erpnext/utilities/repost_stock.py | 11 +++++------ 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index f1ba94efab..a2614d7f79 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -6,6 +6,7 @@ import frappe from frappe import _ from frappe.utils import cint, flt, cstr, now from erpnext.stock.utils import get_valuation_method +from erpnext.controllers.stock_controller import get_valuation_rate import json # future reposting @@ -106,8 +107,7 @@ def update_entries_after(args, verbose=1): stock_queue = [[qty_after_transaction, valuation_rate]] else: if valuation_method == "Moving Average": - if flt(sle.actual_qty) > 0: - valuation_rate = get_moving_average_values(qty_after_transaction, sle, valuation_rate) + valuation_rate = get_moving_average_values(qty_after_transaction, sle, valuation_rate) else: valuation_rate = get_fifo_values(qty_after_transaction, sle, stock_queue) @@ -256,19 +256,18 @@ def get_moving_average_values(qty_after_transaction, sle, valuation_rate): incoming_rate = flt(sle.incoming_rate) actual_qty = flt(sle.actual_qty) - if not incoming_rate: - # If wrong incoming rate - incoming_rate = valuation_rate + if flt(sle.actual_qty) > 0: + if qty_after_transaction < 0 and not valuation_rate: + # if negative stock, take current valuation rate as incoming rate + valuation_rate = incoming_rate - elif qty_after_transaction < 0 and not valuation_rate: - # if negative stock, take current valuation rate as incoming rate - valuation_rate = incoming_rate + new_stock_qty = abs(qty_after_transaction) + actual_qty + new_stock_value = (abs(qty_after_transaction) * valuation_rate) + (actual_qty * incoming_rate) - new_stock_qty = abs(qty_after_transaction) + actual_qty - new_stock_value = (abs(qty_after_transaction) * valuation_rate) + (actual_qty * incoming_rate) - - if new_stock_qty: - valuation_rate = new_stock_value / flt(new_stock_qty) + if new_stock_qty: + valuation_rate = new_stock_value / flt(new_stock_qty) + elif not valuation_rate: + valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse) return abs(valuation_rate) @@ -321,7 +320,6 @@ def get_fifo_values(qty_after_transaction, sle, stock_queue): def intialize_stock_queue(stock_queue, item_code, warehouse): if not stock_queue: - from erpnext.controllers.stock_controller import get_valuation_rate estimated_val_rate = get_valuation_rate(item_code, warehouse) stock_queue.append([0, estimated_val_rate]) diff --git a/erpnext/utilities/repost_stock.py b/erpnext/utilities/repost_stock.py index b5eec231d7..7d9423db14 100644 --- a/erpnext/utilities/repost_stock.py +++ b/erpnext/utilities/repost_stock.py @@ -211,15 +211,14 @@ def reset_serial_no_status_and_warehouse(serial_nos=None): def repost_all_stock_vouchers(): vouchers = frappe.db.sql("""select distinct voucher_type, voucher_no - from `tabStock Ledger Entry` order by posting_date, posting_time, name""") + from `tabStock Ledger Entry` + order by posting_date, posting_time, name""") - print len(vouchers) rejected = [] - # vouchers = [["Delivery Note", "DN00060"]] i = 0 for voucher_type, voucher_no in vouchers: i+=1 - print i + print i, "/", len(vouchers) try: for dt in ["Stock Ledger Entry", "GL Entry"]: frappe.db.sql("""delete from `tab%s` where voucher_type=%s and voucher_no=%s"""% @@ -228,8 +227,8 @@ def repost_all_stock_vouchers(): doc = frappe.get_doc(voucher_type, voucher_no) if voucher_type=="Stock Entry" and doc.purpose in ["Manufacture", "Repack"]: doc.get_stock_and_rate(force=1) - # elif voucher_type=="Purchase Receipt": - # doc.create_raw_materials_supplied("pr_raw_material_details") + elif voucher_type=="Purchase Receipt" and doc.is_subcontracted == "Yes": + doc.validate() doc.update_stock_ledger() doc.make_gl_entries(repost_future_gle=False, allow_negative_stock=True) From 79ed124939aef03e8a503c6136405f62d9f4f67d Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 10 Oct 2014 18:19:03 +0530 Subject: [PATCH 23/56] Update journal_voucher.py --- .../doctype/journal_voucher/journal_voucher.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py index 719a7057cc..3c67508306 100644 --- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py +++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py @@ -76,14 +76,14 @@ class JournalVoucher(AccountsController): def validate_entries_for_advance(self): for d in self.get('entries'): - if not (d.against_voucher and d.against_invoice and d.against_jv) and d.is_advance in ["", "No"]: + if not (d.against_voucher and d.against_invoice and d.against_jv): master_type = frappe.db.get_value("Account", d.account, "master_type") if (master_type == 'Customer' and flt(d.credit) > 0) or \ (master_type == 'Supplier' and flt(d.debit) > 0): - msgprint(_("Row {0}: Please check 'Is Advance' against Account {1} if this \ - is an advance entry.").format(d.idx, d.account)) - if d.against_sales_order or d.against_purchase_order: - raise frappe.ValidationError + if not d.is_advance: + msgprint(_("Row {0}: Please check 'Is Advance' against Account {1} if this is an advance entry.").format(d.idx, d.account)) + elif (d.against_sales_order or d.against_purchase_order) and d.is_advance != "Yes": + frappe.throw(_("Row {0}: Payment against Sales/Purchase Order should always be marked as advance").format(d.idx)) def validate_against_jv(self): for d in self.get('entries'): From 4f0e5db2162e3559df13a8feb94b677cbe6b1edc Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 10 Oct 2014 20:54:57 +0530 Subject: [PATCH 24/56] Stock balance grid report deprecated and moved to server side --- erpnext/config/stock.py | 16 +- erpnext/stock/page/stock_balance/README.md | 1 - erpnext/stock/page/stock_balance/__init__.py | 0 .../stock/page/stock_balance/stock_balance.js | 192 ------------------ .../page/stock_balance/stock_balance.json | 23 --- 5 files changed, 5 insertions(+), 227 deletions(-) delete mode 100644 erpnext/stock/page/stock_balance/README.md delete mode 100644 erpnext/stock/page/stock_balance/__init__.py delete mode 100644 erpnext/stock/page/stock_balance/stock_balance.js delete mode 100644 erpnext/stock/page/stock_balance/stock_balance.json diff --git a/erpnext/config/stock.py b/erpnext/config/stock.py index 7a4345e4d2..04e45d45a1 100644 --- a/erpnext/config/stock.py +++ b/erpnext/config/stock.py @@ -142,10 +142,10 @@ def get_data(): "doctype": "Item", }, { - "type": "page", - "name": "stock-balance", - "label": _("Stock Balance"), - "icon": "icon-table", + "type": "report", + "is_query_report": True, + "name": "Stock Balance", + "doctype": "Warehouse" }, { "type": "report", @@ -170,13 +170,7 @@ def get_data(): "name": "stock-analytics", "label": _("Stock Analytics"), "icon": "icon-bar-chart" - }, - { - "type": "report", - "is_query_report": True, - "name": "Warehouse-Wise Stock Balance", - "doctype": "Warehouse" - }, + } ] }, { diff --git a/erpnext/stock/page/stock_balance/README.md b/erpnext/stock/page/stock_balance/README.md deleted file mode 100644 index 6522aeb099..0000000000 --- a/erpnext/stock/page/stock_balance/README.md +++ /dev/null @@ -1 +0,0 @@ -Stock balances on a particular day, per warehouse. \ No newline at end of file diff --git a/erpnext/stock/page/stock_balance/__init__.py b/erpnext/stock/page/stock_balance/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/erpnext/stock/page/stock_balance/stock_balance.js b/erpnext/stock/page/stock_balance/stock_balance.js deleted file mode 100644 index 198d317824..0000000000 --- a/erpnext/stock/page/stock_balance/stock_balance.js +++ /dev/null @@ -1,192 +0,0 @@ -// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -// License: GNU General Public License v3. See license.txt - -frappe.require("assets/erpnext/js/stock_analytics.js"); - -frappe.pages['stock-balance'].onload = function(wrapper) { - frappe.ui.make_app_page({ - parent: wrapper, - title: __('Stock Balance'), - single_column: true - }); - - new erpnext.StockBalance(wrapper); - - wrapper.appframe.add_module_icon("Stock"); -} - -erpnext.StockBalance = erpnext.StockAnalytics.extend({ - init: function(wrapper) { - this._super(wrapper, { - title: __("Stock Balance"), - doctypes: ["Item", "Item Group", "Warehouse", "Stock Ledger Entry", "Brand", - "Stock Entry", "Project", "Serial No"], - }); - }, - setup_columns: function() { - this.columns = [ - {id: "name", name: __("Item"), field: "name", width: 300, - formatter: this.tree_formatter}, - {id: "item_name", name: __("Item Name"), field: "item_name", width: 100}, - {id: "description", name: __("Description"), field: "description", width: 200, - formatter: this.text_formatter}, - {id: "brand", name: __("Brand"), field: "brand", width: 100}, - {id: "stock_uom", name: __("UOM"), field: "stock_uom", width: 100}, - {id: "opening_qty", name: __("Opening Qty"), field: "opening_qty", width: 100, - formatter: this.currency_formatter}, - {id: "inflow_qty", name: __("In Qty"), field: "inflow_qty", width: 100, - formatter: this.currency_formatter}, - {id: "outflow_qty", name: __("Out Qty"), field: "outflow_qty", width: 100, - formatter: this.currency_formatter}, - {id: "closing_qty", name: __("Closing Qty"), field: "closing_qty", width: 100, - formatter: this.currency_formatter}, - - {id: "opening_value", name: __("Opening Value"), field: "opening_value", width: 100, - formatter: this.currency_formatter}, - {id: "inflow_value", name: __("In Value"), field: "inflow_value", width: 100, - formatter: this.currency_formatter}, - {id: "outflow_value", name: __("Out Value"), field: "outflow_value", width: 100, - formatter: this.currency_formatter}, - {id: "closing_value", name: __("Closing Value"), field: "closing_value", width: 100, - formatter: this.currency_formatter}, - {id: "valuation_rate", name: __("Valuation Rate"), field: "valuation_rate", width: 100, - formatter: this.currency_formatter}, - ]; - }, - - filters: [ - {fieldtype:"Select", label: __("Brand"), link:"Brand", fieldname: "brand", - default_value: __("Select Brand..."), filter: function(val, item, opts) { - return val == opts.default_value || item.brand == val || item._show; - }, link_formatter: {filter_input: "brand"}}, - {fieldtype:"Select", label: __("Warehouse"), link:"Warehouse", fieldname: "warehouse", - default_value: __("Select Warehouse..."), filter: function(val, item, opts, me) { - return me.apply_zero_filter(val, item, opts, me); - }}, - {fieldtype:"Select", label: __("Project"), link:"Project", fieldname: "project", - default_value: __("Select Project..."), filter: function(val, item, opts, me) { - return me.apply_zero_filter(val, item, opts, me); - }, link_formatter: {filter_input: "project"}}, - {fieldtype:"Date", label: __("From Date"), fieldname: "from_date"}, - {fieldtype:"Label", label: __("To")}, - {fieldtype:"Date", label: __("To Date"), fieldname: "to_date"}, - {fieldtype:"Button", label: __("Refresh"), icon:"icon-refresh icon-white"}, - {fieldtype:"Button", label: __("Reset Filters"), icon: "icon-filter"} - ], - - setup_plot_check: function() { - return; - }, - - prepare_data: function() { - this.stock_entry_map = this.make_name_map(frappe.report_dump.data["Stock Entry"], "name"); - this._super(); - }, - - prepare_balances: function() { - var me = this; - var from_date = dateutil.str_to_obj(this.from_date); - var to_date = dateutil.str_to_obj(this.to_date); - var data = frappe.report_dump.data["Stock Ledger Entry"]; - - this.item_warehouse = {}; - this.serialized_buying_rates = this.get_serialized_buying_rates(); - - for(var i=0, j=data.length; i 0) - item.valuation_rate = flt(item.closing_value) / flt(item.closing_qty); - else item.valuation_rate = 0.0 - }); - }, - - update_groups: function() { - var me = this; - - $.each(this.data, function(i, item) { - // update groups - if(!item.is_group && me.apply_filter(item, "brand")) { - var parent = me.parent_map[item.name]; - while(parent) { - parent_group = me.item_by_name[parent]; - $.each(me.columns, function(c, col) { - if (col.formatter == me.currency_formatter && col.field != "valuation_rate") { - parent_group[col.field] = flt(parent_group[col.field]) + flt(item[col.field]); - } - }); - - // show parent if filtered by brand - if(item.brand == me.brand) - parent_group._show = true; - - parent = me.parent_map[parent]; - } - } - }); - }, - - get_plot_data: function() { - return; - } -}); diff --git a/erpnext/stock/page/stock_balance/stock_balance.json b/erpnext/stock/page/stock_balance/stock_balance.json deleted file mode 100644 index 6f25be4407..0000000000 --- a/erpnext/stock/page/stock_balance/stock_balance.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "creation": "2012-12-27 18:57:47.000000", - "docstatus": 0, - "doctype": "Page", - "icon": "icon-table", - "idx": 1, - "modified": "2013-07-11 14:44:15.000000", - "modified_by": "Administrator", - "module": "Stock", - "name": "stock-balance", - "owner": "Administrator", - "page_name": "stock-balance", - "roles": [ - { - "role": "Material Manager" - }, - { - "role": "Analytics" - } - ], - "standard": "Yes", - "title": "Stock Balance" -} \ No newline at end of file From 70ec88b733880958bae15f951b54179053d86340 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 10 Oct 2014 21:22:46 +0530 Subject: [PATCH 25/56] fixed test cases --- erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py | 2 +- erpnext/stock/doctype/stock_entry/test_stock_entry.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py index 51c85ce48b..67f621aa01 100644 --- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py @@ -95,7 +95,7 @@ class TestPurchaseReceipt(unittest.TestCase): pr.insert() self.assertEquals(len(pr.get("pr_raw_material_details")), 2) - self.assertEquals(pr.get("purchase_receipt_details")[0].rm_supp_cost, 70000.0) + self.assertEquals(pr.get("purchase_receipt_details")[0].rm_supp_cost, 20750.0) def test_serial_no_supplier(self): diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py index 7654cbcccd..e010bd19b9 100644 --- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py @@ -939,3 +939,5 @@ def make_stock_entry(item, source, target, qty, incoming_rate=None): s.insert() s.submit() return s + +test_records = frappe.get_test_records('Stock Entry') From 27e37e68b25281e7dd57e7a6f2cc682c1c52737a Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Sun, 12 Oct 2014 19:35:46 +0530 Subject: [PATCH 26/56] add my_config patch to travis --- .travis.yml | 2 ++ ci/fix-mariadb.sh | 11 +++++++++++ ci/my_config.h.patch | 22 ++++++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100755 ci/fix-mariadb.sh create mode 100644 ci/my_config.h.patch diff --git a/.travis.yml b/.travis.yml index 1b4e3403f1..c136aa0978 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,8 @@ install: - sudo apt-get update - sudo apt-get purge -y mysql-common - sudo apt-get install mariadb-server mariadb-common libmariadbclient-dev + - ./ci/fix-mariadb.sh + - wget http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.1/wkhtmltox-0.12.1_linux-precise-amd64.deb - sudo dpkg -i wkhtmltox-0.12.1_linux-precise-amd64.deb - CFLAGS=-O0 pip install git+https://github.com/frappe/frappe.git@develop diff --git a/ci/fix-mariadb.sh b/ci/fix-mariadb.sh new file mode 100755 index 0000000000..886ec5e0d0 --- /dev/null +++ b/ci/fix-mariadb.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# stolen from http://cgit.drupalcode.org/octopus/commit/?id=db4f837 +includedir=`mysql_config --variable=pkgincludedir` +thiscwd=`pwd` +_THIS_DB_VERSION=`mysql -V 2>&1 | tr -d "\n" | cut -d" " -f6 | awk '{ print $1}' | cut -d"-" -f1 | awk '{ print $1}' | sed "s/[\,']//g"` +if [ "$_THIS_DB_VERSION" = "5.5.40" ] && [ ! -e "$includedir-$_THIS_DB_VERSION-fixed.log" ] ; then + cd $includedir + sudo patch -p1 < $thiscwd/ci/my_config.h.patch &> /dev/null + sudo touch $includedir-$_THIS_DB_VERSION-fixed.log +fi diff --git a/ci/my_config.h.patch b/ci/my_config.h.patch new file mode 100644 index 0000000000..5247b5b39b --- /dev/null +++ b/ci/my_config.h.patch @@ -0,0 +1,22 @@ +diff -burp a/my_config.h b/my_config.h +--- a/my_config.h 2014-10-09 19:32:46.000000000 -0400 ++++ b/my_config.h 2014-10-09 19:35:12.000000000 -0400 +@@ -641,17 +641,4 @@ + #define SIZEOF_TIME_T 8 + /* #undef TIME_T_UNSIGNED */ + +-/* +- stat structure (from ) is conditionally defined +- to have different layout and size depending on the defined macros. +- The correct macro is defined in my_config.h, which means it MUST be +- included first (or at least before - so, practically, +- before including any system headers). +- +- __GLIBC__ is defined in +-*/ +-#ifdef __GLIBC__ +-#error MUST be included first! +-#endif +- + #endif + From daf344e5fdb8a1008a26e9361713513c5960f719 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Sun, 12 Oct 2014 17:40:43 +0530 Subject: [PATCH 27/56] Precision fixed in batch-wise balance report --- .../batch_wise_balance_history.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py index 9b94ee61e1..3679457136 100644 --- a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py +++ b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals import frappe from frappe import _ -from frappe.utils import flt +from frappe.utils import flt, cint def execute(filters=None): if not filters: filters = {} @@ -57,6 +57,7 @@ def get_stock_ledger_entries(filters): conditions, as_dict=1) def get_item_warehouse_batch_map(filters): + float_precision = cint(frappe.db.get_default("float_precision")) or 3 sle = get_stock_ledger_entries(filters) iwb_map = {} @@ -67,14 +68,14 @@ def get_item_warehouse_batch_map(filters): })) qty_dict = iwb_map[d.item_code][d.warehouse][d.batch_no] if d.posting_date < filters["from_date"]: - qty_dict.opening_qty += flt(d.actual_qty) + qty_dict.opening_qty += flt(d.actual_qty, float_precision) elif d.posting_date >= filters["from_date"] and d.posting_date <= filters["to_date"]: if flt(d.actual_qty) > 0: - qty_dict.in_qty += flt(d.actual_qty) + qty_dict.in_qty += flt(d.actual_qty, float_precision) else: - qty_dict.out_qty += abs(flt(d.actual_qty)) + qty_dict.out_qty += abs(flt(d.actual_qty, float_precision)) - qty_dict.bal_qty += flt(d.actual_qty) + qty_dict.bal_qty += flt(d.actual_qty, float_precision) return iwb_map From bc8b20ae3c539600fc91a075793e691816e91e0f Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 13 Oct 2014 10:47:14 +0530 Subject: [PATCH 28/56] Allocate entire advance amount if advance against SO/PO --- erpnext/controllers/accounts_controller.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 9a62fc299e..af0a96ef67 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -387,7 +387,7 @@ class AccountsController(TransactionBase): res = frappe.db.sql(""" select - t1.name as jv_no, t1.remark, t2.%s as amount, t2.name as jv_detail_no + t1.name as jv_no, t1.remark, t2.%s as amount, t2.name as jv_detail_no, `against_%s` as against_order from `tabJournal Voucher` t1, `tabJournal Voucher Detail` t2 where @@ -400,7 +400,7 @@ class AccountsController(TransactionBase): and ifnull(t2.against_purchase_order, '') = '' ) %s) order by t1.posting_date""" % - (dr_or_cr, '%s', cond), + (dr_or_cr, against_order_field, '%s', cond), tuple([account_head] + so_list), as_dict= True) self.set(parentfield, []) @@ -411,7 +411,7 @@ class AccountsController(TransactionBase): "jv_detail_no": d.jv_detail_no, "remarks": d.remark, "advance_amount": flt(d.amount), - "allocate_amount": 0 + "allocated_amount": flt(d.amount) if d.against_order else 0 }) def validate_advance_jv(self, advance_table_fieldname, against_order_field): From 3d3f0bcf549ddcd9416a3e20ff1e688472c723e1 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 13 Oct 2014 11:32:41 +0530 Subject: [PATCH 29/56] Minor fix in setup wizard --- erpnext/setup/page/setup_wizard/setup_wizard.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py index d3942e47c5..bf643ddcf9 100644 --- a/erpnext/setup/page/setup_wizard/setup_wizard.py +++ b/erpnext/setup/page/setup_wizard/setup_wizard.py @@ -78,9 +78,10 @@ def setup_account(args=None): frappe.db.commit() except: - traceback = frappe.get_traceback() - for hook in frappe.get_hooks("setup_wizard_exception"): - frappe.get_attr(hook)(traceback, args) + if args: + traceback = frappe.get_traceback() + for hook in frappe.get_hooks("setup_wizard_exception"): + frappe.get_attr(hook)(traceback, args) raise From 17a16eeaf4f8be85a9c4dadc90f1fbe7c3160a64 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 13 Oct 2014 11:43:14 +0530 Subject: [PATCH 30/56] Tets case fixed for payment tool --- .../doctype/payment_tool/test_payment_tool.py | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/erpnext/accounts/doctype/payment_tool/test_payment_tool.py b/erpnext/accounts/doctype/payment_tool/test_payment_tool.py index c91a5de2e1..2192aebaae 100644 --- a/erpnext/accounts/doctype/payment_tool/test_payment_tool.py +++ b/erpnext/accounts/doctype/payment_tool/test_payment_tool.py @@ -31,9 +31,10 @@ class TestPaymentTool(unittest.TestCase): "customer": "_Test Customer 3" }) - jv_against_so1 = self.create_against_jv(jv_test_records[0], { + jv_against_so1 = self.create_against_jv(jv_test_records[0], { "account": "_Test Customer 3 - _TC", - "against_sales_order": so1.name + "against_sales_order": so1.name, + "is_advance": "Yes" }) @@ -42,10 +43,11 @@ class TestPaymentTool(unittest.TestCase): "customer": "_Test Customer 3" }) - jv_against_so2 = self.create_against_jv(jv_test_records[0], { + jv_against_so2 = self.create_against_jv(jv_test_records[0], { "account": "_Test Customer 3 - _TC", "against_sales_order": so2.name, - "credit": 1000 + "credit": 1000, + "is_advance": "Yes" }) po = self.create_voucher(po_test_records[1], { "supplier": "_Test Supplier 1" @@ -54,20 +56,20 @@ class TestPaymentTool(unittest.TestCase): #Create SI with partial outstanding si1 = self.create_voucher(si_test_records[0], { "customer": "_Test Customer 3", - "debit_to": "_Test Customer 3 - _TC" + "debit_to": "_Test Customer 3 - _TC" }) - - jv_against_si1 = self.create_against_jv(jv_test_records[0], { + + jv_against_si1 = self.create_against_jv(jv_test_records[0], { "account": "_Test Customer 3 - _TC", "against_invoice": si1.name }) #Create SI with no outstanding si2 = self.create_voucher(si_test_records[0], { "customer": "_Test Customer 3", - "debit_to": "_Test Customer 3 - _TC" + "debit_to": "_Test Customer 3 - _TC" }) - - jv_against_si2 = self.create_against_jv(jv_test_records[0], { + + jv_against_si2 = self.create_against_jv(jv_test_records[0], { "account": "_Test Customer 3 - _TC", "against_invoice": si2.name, "credit": 561.80 @@ -75,7 +77,7 @@ class TestPaymentTool(unittest.TestCase): pi = self.create_voucher(pi_test_records[0], { "supplier": "_Test Supplier 1", - "credit_to": "_Test Supplier 1 - _TC" + "credit_to": "_Test Supplier 1 - _TC" }) #Create a dict containing properties and expected values @@ -137,7 +139,7 @@ class TestPaymentTool(unittest.TestCase): payment_tool_doc.set(k, v) self.check_outstanding_vouchers(payment_tool_doc, args, expected_outstanding) - + def check_outstanding_vouchers(self, doc, args, expected_outstanding): from erpnext.accounts.doctype.payment_tool.payment_tool import get_outstanding_vouchers @@ -161,7 +163,7 @@ class TestPaymentTool(unittest.TestCase): new_jv = paytool.make_journal_voucher() - #Create a list of expected values as [party account, payment against, against_jv, against_invoice, + #Create a list of expected values as [party account, payment against, against_jv, against_invoice, #against_voucher, against_sales_order, against_purchase_order] expected_values = [ [paytool.party_account, 100.00, expected_outstanding.get("Journal Voucher")[0], None, None, None, None], @@ -171,7 +173,7 @@ class TestPaymentTool(unittest.TestCase): [paytool.party_account, 100.00, None, None, None, None, expected_outstanding.get("Purchase Order")[0]] ] - for jv_entry in new_jv.get("entries"): + for jv_entry in new_jv.get("entries"): if paytool.party_account == jv_entry.get("account"): row = [ jv_entry.get("account"), @@ -183,11 +185,11 @@ class TestPaymentTool(unittest.TestCase): jv_entry.get("against_purchase_order"), ] self.assertTrue(row in expected_values) - + self.assertEquals(new_jv.get("cheque_no"), paytool.reference_no) self.assertEquals(new_jv.get("cheque_date"), paytool.reference_date) def clear_table_entries(self): frappe.db.sql("""delete from `tabGL Entry` where (account = "_Test Customer 3 - _TC" or account = "_Test Supplier 1 - _TC")""") frappe.db.sql("""delete from `tabSales Order` where customer_name = "_Test Customer 3" """) - frappe.db.sql("""delete from `tabPurchase Order` where supplier_name = "_Test Supplier 1" """) + frappe.db.sql("""delete from `tabPurchase Order` where supplier_name = "_Test Supplier 1" """) From 8a28ccfa2fbcb362be71897444d4c029c44b1485 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 14 Oct 2014 11:41:44 +0530 Subject: [PATCH 31/56] Repost gl entries where mismatch with stock balance --- erpnext/patches.txt | 2 + .../fix_gl_entries_for_stock_transactions.py | 51 ++++++++++++++----- .../report/stock_balance/stock_balance.py | 8 +-- erpnext/utilities/repost_stock.py | 15 ++++-- 4 files changed, 56 insertions(+), 20 deletions(-) diff --git a/erpnext/patches.txt b/erpnext/patches.txt index bd2d436453..0dbe444472 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -83,3 +83,5 @@ erpnext.patches.v4_2.update_sales_order_invoice_field_name erpnext.patches.v4_2.cost_of_production_cycle erpnext.patches.v4_2.seprate_manufacture_and_repack execute:frappe.delete_doc("Report", "Warehouse-Wise Stock Balance") +execute:frappe.delete_doc("DocType", "Purchase Request") +execute:frappe.delete_doc("DocType", "Purchase Request Item") diff --git a/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py b/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py index e065d2d42f..3c554ae0f0 100644 --- a/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py +++ b/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py @@ -3,24 +3,49 @@ from __future__ import unicode_literals import frappe +from frappe.utils import flt def execute(): - warehouses_with_account = frappe.db.sql_list("""select master_name from tabAccount - where ifnull(account_type, '') = 'Warehouse'""") + from erpnext.utilities.repost_stock import repost + repost() - stock_vouchers_without_gle = frappe.db.sql("""select distinct sle.voucher_type, sle.voucher_no + warehouse_account = frappe.db.sql("""select name, master_name from tabAccount + where ifnull(account_type, '') = 'Warehouse'""") + warehouses = [d[1] for d in warehouse_account] + accounts = [d[0] for d in warehouse_account] + + stock_vouchers = frappe.db.sql("""select distinct sle.voucher_type, sle.voucher_no from `tabStock Ledger Entry` sle where sle.warehouse in (%s) - and not exists(select name from `tabGL Entry` - where voucher_type=sle.voucher_type and voucher_no=sle.voucher_no) order by sle.posting_date""" % - ', '.join(['%s']*len(warehouses_with_account)), tuple(warehouses_with_account)) + ', '.join(['%s']*len(warehouses)), tuple(warehouses)) - for voucher_type, voucher_no in stock_vouchers_without_gle: - print voucher_type, voucher_no - frappe.db.sql("""delete from `tabGL Entry` - where voucher_type=%s and voucher_no=%s""", (voucher_type, voucher_no)) + rejected = [] + for voucher_type, voucher_no in stock_vouchers: + stock_bal = frappe.db.sql("""select sum(stock_value_difference) from `tabStock Ledger Entry` + where voucher_type=%s and voucher_no =%s and warehouse in (%s)""" % + ('%s', '%s', ', '.join(['%s']*len(warehouses))), tuple([voucher_type, voucher_no] + warehouses)) - voucher = frappe.get_doc(voucher_type, voucher_no) - voucher.make_gl_entries() - frappe.db.commit() + account_bal = frappe.db.sql("""select ifnull(sum(ifnull(debit, 0) - ifnull(credit, 0)), 0) + from `tabGL Entry` + where voucher_type=%s and voucher_no =%s and account in (%s) + group by voucher_type, voucher_no""" % + ('%s', '%s', ', '.join(['%s']*len(accounts))), tuple([voucher_type, voucher_no] + accounts)) + + if stock_bal and account_bal and abs(flt(stock_bal[0][0]) - flt(account_bal[0][0])) > 0.1: + try: + print voucher_type, voucher_no, stock_bal[0][0], account_bal[0][0] + + frappe.db.sql("""delete from `tabGL Entry` + where voucher_type=%s and voucher_no=%s""", (voucher_type, voucher_no)) + + voucher = frappe.get_doc(voucher_type, voucher_no) + voucher.make_gl_entries(repost_future_gle=False, allow_negative_stock=True) + frappe.db.commit() + except Exception, e: + print frappe.get_traceback() + rejected.append([voucher_type, voucher_no]) + frappe.db.rollback() + + print "Failed to repost: " + print rejected diff --git a/erpnext/stock/report/stock_balance/stock_balance.py b/erpnext/stock/report/stock_balance/stock_balance.py index 95de739e0f..daef2ebd31 100644 --- a/erpnext/stock/report/stock_balance/stock_balance.py +++ b/erpnext/stock/report/stock_balance/stock_balance.py @@ -58,8 +58,8 @@ def get_conditions(filters): #get all details def get_stock_ledger_entries(filters): conditions = get_conditions(filters) - return frappe.db.sql("""select item_code, warehouse, posting_date, - actual_qty, valuation_rate, stock_uom, company, voucher_type, qty_after_transaction + return frappe.db.sql("""select item_code, warehouse, posting_date, actual_qty, valuation_rate, + stock_uom, company, voucher_type, qty_after_transaction, stock_value_difference from `tabStock Ledger Entry` where docstatus < 2 %s order by posting_date, posting_time, name""" % conditions, as_dict=1) @@ -82,10 +82,10 @@ def get_item_warehouse_map(filters): if d.voucher_type == "Stock Reconciliation": qty_diff = flt(d.qty_after_transaction) - qty_dict.bal_qty - value_diff = flt(d.stock_value) - qty_dict.bal_val else: qty_diff = flt(d.actual_qty) - value_diff = flt(d.actual_qty) * flt(d.valuation_rate) + + value_diff = flt(d.stock_value_difference) if d.posting_date < filters["from_date"]: qty_dict.opening_qty += qty_diff diff --git a/erpnext/utilities/repost_stock.py b/erpnext/utilities/repost_stock.py index 7d9423db14..89494ad2ca 100644 --- a/erpnext/utilities/repost_stock.py +++ b/erpnext/utilities/repost_stock.py @@ -22,7 +22,11 @@ def repost(allow_negative_stock=False): (select item_code, warehouse from tabBin union select item_code, warehouse from `tabStock Ledger Entry`) a"""): - repost_stock(d[0], d[1]) + try: + repost_stock(d[0], d[1]) + frappe.db.commit() + except: + frappe.db.rollback() if allow_negative_stock: frappe.db.set_default("allow_negative_stock", @@ -210,9 +214,14 @@ def reset_serial_no_status_and_warehouse(serial_nos=None): frappe.db.sql("""update `tabSerial No` set warehouse='' where status in ('Delivered', 'Purchase Returned')""") def repost_all_stock_vouchers(): + warehouses_with_account = frappe.db.sql_list("""select master_name from tabAccount + where ifnull(account_type, '') = 'Warehouse'""") + vouchers = frappe.db.sql("""select distinct voucher_type, voucher_no - from `tabStock Ledger Entry` - order by posting_date, posting_time, name""") + from `tabStock Ledger Entry` sle + where voucher_type != "Serial No" and sle.warehouse in (%s) + order by posting_date, posting_time, name""" % + ', '.join(['%s']*len(warehouses_with_account)), tuple(warehouses_with_account)) rejected = [] i = 0 From 66444061858d323f09087ad350c951484a27cdea Mon Sep 17 00:00:00 2001 From: Neil Trini Lasrado Date: Fri, 10 Oct 2014 18:48:09 +0530 Subject: [PATCH 32/56] Fix - BOM calculated wrong cost on update cost --- erpnext/manufacturing/doctype/bom/bom.py | 30 +++++++++++--------- erpnext/patches.txt | 1 + erpnext/patches/v4_2/recalculate_bom_cost.py | 16 +++++++++++ 3 files changed, 33 insertions(+), 14 deletions(-) create mode 100644 erpnext/patches/v4_2/recalculate_bom_cost.py diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py index 75c4ffbd92..e8a8682ceb 100644 --- a/erpnext/manufacturing/doctype/bom/bom.py +++ b/erpnext/manufacturing/doctype/bom/bom.py @@ -115,6 +115,9 @@ class BOM(Document): return rate def update_cost(self): + if self.docstatus == 2: + return + for d in self.get("bom_materials"): d.rate = self.get_bom_material_detail({ 'item_code': d.item_code, @@ -122,9 +125,10 @@ class BOM(Document): 'qty': d.qty })["rate"] - if self.docstatus in (0, 1): + if self.docstatus == 1: self.ignore_validate_update_after_submit = True - self.save() + self.calculate_cost() + self.save() def get_bom_unitcost(self, bom_no): bom = frappe.db.sql("""select name, total_variable_cost/quantity as unit_cost from `tabBOM` @@ -269,29 +273,27 @@ class BOM(Document): """Calculate bom totals""" self.calculate_op_cost() self.calculate_rm_cost() - self.calculate_fixed_cost() self.total_variable_cost = self.raw_material_cost + self.operating_cost + self.total_cost = self.total_variable_cost + self.total_fixed_cost def calculate_op_cost(self): """Update workstation rate and calculates totals""" - total_op_cost = 0 + total_op_cost, fixed_cost = 0, 0 for d in self.get('bom_operations'): - if d.workstation and not d.hour_rate: - d.hour_rate = frappe.db.get_value("Workstation", d.workstation, "hour_rate") + if d.workstation: + w = frappe.db.get_value("Workstation", d.workstation, ["hour_rate", "fixed_cycle_cost"]) + if not d.hour_rate: + d.hour_rate = flt(w[0]) + + fixed_cost += flt(w[1]) + if d.hour_rate and d.time_in_mins: d.operating_cost = flt(d.hour_rate) * flt(d.time_in_mins) / 60.0 total_op_cost += flt(d.operating_cost) + self.operating_cost = total_op_cost - - def calculate_fixed_cost(self): - """Update workstation rate and calculates totals""" - fixed_cost = 0 - for d in self.get('bom_operations'): - if d.workstation: - fixed_cost += flt(frappe.db.get_value("Workstation", d.workstation, "fixed_cycle_cost")) self.total_fixed_cost = fixed_cost - def calculate_rm_cost(self): """Fetch RM rate as per today's valuation rate and calculate totals""" total_rm_cost = 0 diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 0dbe444472..92f8395f29 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -85,3 +85,4 @@ erpnext.patches.v4_2.seprate_manufacture_and_repack execute:frappe.delete_doc("Report", "Warehouse-Wise Stock Balance") execute:frappe.delete_doc("DocType", "Purchase Request") execute:frappe.delete_doc("DocType", "Purchase Request Item") +erpnext.patches.v4_2.recalculate_bom_cost \ No newline at end of file diff --git a/erpnext/patches/v4_2/recalculate_bom_cost.py b/erpnext/patches/v4_2/recalculate_bom_cost.py new file mode 100644 index 0000000000..418f42313c --- /dev/null +++ b/erpnext/patches/v4_2/recalculate_bom_cost.py @@ -0,0 +1,16 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import frappe + +def execute(): + try: + for d in frappe.db.sql("select name from `tabBOM` where docstatus < 2"): + document = frappe.get_doc('BOM', d[0]) + if document.docstatus == 1: + document.ignore_validate_update_after_submit = True + document.calculate_cost() + document.save() + except: + pass \ No newline at end of file From c40451ee2efe93c4bfddb99469fe489f3c947f74 Mon Sep 17 00:00:00 2001 From: Neil Trini Lasrado Date: Tue, 14 Oct 2014 12:12:40 +0530 Subject: [PATCH 33/56] Patch Fixed --- erpnext/patches/v4_2/recalculate_bom_cost.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/erpnext/patches/v4_2/recalculate_bom_cost.py b/erpnext/patches/v4_2/recalculate_bom_cost.py index 418f42313c..3a194ff195 100644 --- a/erpnext/patches/v4_2/recalculate_bom_cost.py +++ b/erpnext/patches/v4_2/recalculate_bom_cost.py @@ -5,12 +5,12 @@ from __future__ import unicode_literals import frappe def execute(): - try: - for d in frappe.db.sql("select name from `tabBOM` where docstatus < 2"): + for d in frappe.db.sql("select name from `tabBOM` where docstatus < 2"): + try: document = frappe.get_doc('BOM', d[0]) if document.docstatus == 1: document.ignore_validate_update_after_submit = True document.calculate_cost() document.save() - except: - pass \ No newline at end of file + except: + pass \ No newline at end of file From 78f86e9385f930e83dac465f6017e34f87e964dd Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Tue, 14 Oct 2014 13:07:07 +0600 Subject: [PATCH 34/56] bumped to version 4.6.0 --- 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 d04f92aa34..52fde385e9 100644 --- a/erpnext/__version__.py +++ b/erpnext/__version__.py @@ -1 +1 @@ -__version__ = '4.5.2' +__version__ = '4.6.0' diff --git a/erpnext/hooks.py b/erpnext/hooks.py index bda5c80678..6c91c390ff 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -4,7 +4,7 @@ app_publisher = "Web Notes Technologies Pvt. Ltd. and Contributors" app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations" app_icon = "icon-th" app_color = "#e74c3c" -app_version = "4.5.2" +app_version = "4.6.0" error_report_email = "support@erpnext.com" diff --git a/setup.py b/setup.py index 8b037432f4..c6d1f84b4f 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages import os -version = "4.5.2" +version = "4.6.0" with open("requirements.txt", "r") as f: install_requires = f.readlines() From 38d0ed9f3a8a3a0ab343983b044ce8ec37d084b2 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 14 Oct 2014 16:07:56 +0530 Subject: [PATCH 35/56] Negative stock allowed for perpetual inventory. Blocked in specific case --- .../accounts/doctype/accounts_settings/accounts_settings.py | 3 --- erpnext/controllers/buying_controller.py | 3 +++ erpnext/controllers/stock_controller.py | 5 ++++- erpnext/stock/doctype/purchase_receipt/purchase_receipt.py | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py index 7280322a68..f0890dd439 100644 --- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py +++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py @@ -14,9 +14,6 @@ class AccountsSettings(Document): frappe.db.set_default("auto_accounting_for_stock", self.auto_accounting_for_stock) if cint(self.auto_accounting_for_stock): - if cint(frappe.db.get_value("Stock Settings", None, "allow_negative_stock")): - frappe.throw(_("Negative stock is not allowed in case of Perpetual Inventory, please disable it from Stock Settings")) - # set default perpetual account in company for company in frappe.db.sql("select name from tabCompany"): frappe.get_doc("Company", company[0]).save() diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py index 66d5792e2d..cf57658342 100644 --- a/erpnext/controllers/buying_controller.py +++ b/erpnext/controllers/buying_controller.py @@ -277,6 +277,9 @@ class BuyingController(StockController): "qty": -1 * required_qty, "serial_no": rm.serial_no }) + if not item_rate: + from erpnext.controllers.stock_controller import get_valuation_rate + item_rate = get_valuation_rate(bom_item.item_code, self.supplier_warehouse) rm.rate = item_rate or bom_item.rate else: rm.rate = bom_item.rate diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index ad553d8c83..a72a3d09fb 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -30,7 +30,7 @@ class StockController(AccountsController): def get_gl_entries(self, warehouse_account=None, default_expense_account=None, default_cost_center=None, allow_negative_stock=False): - block_negative_stock(allow_negative_stock) + # block_negative_stock(allow_negative_stock) if not warehouse_account: warehouse_account = get_warehouse_account() @@ -319,4 +319,7 @@ def get_valuation_rate(item_code, warehouse): if not valuation_rate: valuation_rate = frappe.db.get_value("Item Price", {"item_code": item_code, "buying": 1}, "price_list_rate") + if not valuation_rate: + frappe.throw(_("Purchase rate for item: {0} not found, which is required to book accounting entry. Please mention item price against a buying price list.").format(item_code)) + return valuation_rate diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py index fc35222bb0..ed4257fd9b 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py @@ -287,7 +287,7 @@ class PurchaseReceipt(BuyingController): from erpnext.accounts.general_ledger import process_gl_map from erpnext.controllers.stock_controller import block_negative_stock - block_negative_stock(allow_negative_stock) + # block_negative_stock(allow_negative_stock) stock_rbnb = self.get_company_default("stock_received_but_not_billed") expenses_included_in_valuation = self.get_company_default("expenses_included_in_valuation") From bf492122f8a3559431192ee15b1d586f5de68f85 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 14 Oct 2014 16:09:14 +0530 Subject: [PATCH 36/56] minor fix --- erpnext/stock/stock_ledger.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index a2614d7f79..2956170010 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -269,7 +269,7 @@ def get_moving_average_values(qty_after_transaction, sle, valuation_rate): elif not valuation_rate: valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse) - return abs(valuation_rate) + return abs(flt(valuation_rate)) def get_fifo_values(qty_after_transaction, sle, stock_queue): incoming_rate = flt(sle.incoming_rate) From 49365d09827916730f9891d02292879f0bfce95b Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Tue, 14 Oct 2014 16:46:29 +0600 Subject: [PATCH 37/56] bumped to version 4.6.1 --- 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 52fde385e9..e893b1fc0d 100644 --- a/erpnext/__version__.py +++ b/erpnext/__version__.py @@ -1 +1 @@ -__version__ = '4.6.0' +__version__ = '4.6.1' diff --git a/erpnext/hooks.py b/erpnext/hooks.py index 6c91c390ff..b095984dda 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -4,7 +4,7 @@ app_publisher = "Web Notes Technologies Pvt. Ltd. and Contributors" app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations" app_icon = "icon-th" app_color = "#e74c3c" -app_version = "4.6.0" +app_version = "4.6.1" error_report_email = "support@erpnext.com" diff --git a/setup.py b/setup.py index c6d1f84b4f..204d833b93 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages import os -version = "4.6.0" +version = "4.6.1" with open("requirements.txt", "r") as f: install_requires = f.readlines() From 0dc18f01028f23c6caa53a120ec639fde08d623d Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 14 Oct 2014 17:15:02 +0530 Subject: [PATCH 38/56] Minor fixes --- .../buying/doctype/purchase_order/test_purchase_order.py | 2 +- erpnext/stock/doctype/item_price/test_records.json | 6 ++++++ .../doctype/purchase_receipt/test_purchase_receipt.py | 2 +- erpnext/stock/stock_ledger.py | 8 ++++---- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/erpnext/buying/doctype/purchase_order/test_purchase_order.py b/erpnext/buying/doctype/purchase_order/test_purchase_order.py index 83853dd7f3..842409f715 100644 --- a/erpnext/buying/doctype/purchase_order/test_purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/test_purchase_order.py @@ -112,6 +112,6 @@ class TestPurchaseOrder(unittest.TestCase): test_recurring_document(self, test_records) -test_dependencies = ["BOM"] +test_dependencies = ["BOM", "Item Price"] test_records = frappe.get_test_records('Purchase Order') diff --git a/erpnext/stock/doctype/item_price/test_records.json b/erpnext/stock/doctype/item_price/test_records.json index b4ceb92172..36870cdf7e 100644 --- a/erpnext/stock/doctype/item_price/test_records.json +++ b/erpnext/stock/doctype/item_price/test_records.json @@ -16,5 +16,11 @@ "item_code": "_Test Item 2", "price_list": "_Test Price List Rest of the World", "price_list_rate": 20 + }, + { + "doctype": "Item Price", + "item_code": "_Test Item Home Desktop 100", + "price_list": "_Test Price List", + "price_list_rate": 1000 } ] diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py index 67f621aa01..69751a2824 100644 --- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py @@ -151,6 +151,6 @@ def set_perpetual_inventory(enable=1): accounts_settings.save() -test_dependencies = ["BOM"] +test_dependencies = ["BOM", "Item Price"] test_records = frappe.get_test_records('Purchase Receipt') diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index 2956170010..7dc8d837bb 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -275,7 +275,7 @@ def get_fifo_values(qty_after_transaction, sle, stock_queue): incoming_rate = flt(sle.incoming_rate) actual_qty = flt(sle.actual_qty) - intialize_stock_queue(stock_queue, sle.item_code, sle.warehouse) + intialize_stock_queue(stock_queue, sle.item_code, sle.warehouse, actual_qty) if actual_qty > 0: if stock_queue[-1][0] > 0: @@ -289,7 +289,7 @@ def get_fifo_values(qty_after_transaction, sle, stock_queue): else: qty_to_pop = abs(actual_qty) while qty_to_pop: - intialize_stock_queue(stock_queue, sle.item_code, sle.warehouse) + intialize_stock_queue(stock_queue, sle.item_code, sle.warehouse, actual_qty) batch = stock_queue[0] @@ -318,9 +318,9 @@ def get_fifo_values(qty_after_transaction, sle, stock_queue): return abs(valuation_rate) -def intialize_stock_queue(stock_queue, item_code, warehouse): +def intialize_stock_queue(stock_queue, item_code, warehouse, actual_qty): if not stock_queue: - estimated_val_rate = get_valuation_rate(item_code, warehouse) + estimated_val_rate = get_valuation_rate(item_code, warehouse) if actual_qty < 0 else 0 stock_queue.append([0, estimated_val_rate]) def _raise_exceptions(args, verbose=1): From 663bfeacf41165bd845fedfbdc7ce64371f7e409 Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Tue, 14 Oct 2014 18:04:01 +0600 Subject: [PATCH 39/56] bumped to version 4.6.2 --- 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 e893b1fc0d..2bdfe47e06 100644 --- a/erpnext/__version__.py +++ b/erpnext/__version__.py @@ -1 +1 @@ -__version__ = '4.6.1' +__version__ = '4.6.2' diff --git a/erpnext/hooks.py b/erpnext/hooks.py index b095984dda..0f677a0e75 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -4,7 +4,7 @@ app_publisher = "Web Notes Technologies Pvt. Ltd. and Contributors" app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations" app_icon = "icon-th" app_color = "#e74c3c" -app_version = "4.6.1" +app_version = "4.6.2" error_report_email = "support@erpnext.com" diff --git a/setup.py b/setup.py index 204d833b93..34207e86f7 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages import os -version = "4.6.1" +version = "4.6.2" with open("requirements.txt", "r") as f: install_requires = f.readlines() From 1017615d021fbf41a9f54bc59ba965a860779b79 Mon Sep 17 00:00:00 2001 From: Viktor Zhuromskyy Date: Tue, 14 Oct 2014 10:12:10 -0500 Subject: [PATCH 40/56] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ec7605e90e..b9d5a6e5f7 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Includes Accounting, Inventory, CRM, Sales, Purchase, Projects, HRMS. Built on Python / MariaDB. -ERPNext is built on [frappe](https://github.com/frappe/frappe) +ERPNext is built on [frappe](https://github.com/frappe/frappe) Python Framework. - [User Guide](http://erpnext.org/user-guide.html) - [Getting Help](http://erpnext.org/getting-help.html) @@ -21,7 +21,7 @@ Use the bench, https://github.com/frappe/bench 1. go to "/login" 1. Administrator user name: "Administrator" -1. Administrator passowrd "admin" +1. Administrator password: "admin" ### Download and Install From fb6e4343156f3e6034275e6398799462dbed9cea Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 15 Oct 2014 11:34:40 +0530 Subject: [PATCH 41/56] Guess valuation rate in case of negative stock --- erpnext/controllers/buying_controller.py | 9 ++-- erpnext/controllers/stock_controller.py | 32 +------------- .../doctype/stock_settings/stock_settings.py | 3 -- erpnext/stock/stock_ledger.py | 42 +++++++++++++------ 4 files changed, 36 insertions(+), 50 deletions(-) diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py index cf57658342..fc912c9f1b 100644 --- a/erpnext/controllers/buying_controller.py +++ b/erpnext/controllers/buying_controller.py @@ -269,7 +269,7 @@ class BuyingController(StockController): # get raw materials rate if self.doctype == "Purchase Receipt": from erpnext.stock.utils import get_incoming_rate - item_rate = get_incoming_rate({ + rm.rate = get_incoming_rate({ "item_code": bom_item.item_code, "warehouse": self.supplier_warehouse, "posting_date": self.posting_date, @@ -277,10 +277,9 @@ class BuyingController(StockController): "qty": -1 * required_qty, "serial_no": rm.serial_no }) - if not item_rate: - from erpnext.controllers.stock_controller import get_valuation_rate - item_rate = get_valuation_rate(bom_item.item_code, self.supplier_warehouse) - rm.rate = item_rate or bom_item.rate + if not rm.rate: + from erpnext.stock.stock_ledger import get_valuation_rate + rm.rate = get_valuation_rate(bom_item.item_code, self.supplier_warehouse) else: rm.rate = bom_item.rate diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index a72a3d09fb..d7c7a43568 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -49,17 +49,12 @@ class StockController(AccountsController): self.check_expense_account(detail) - stock_value_difference = flt(sle.stock_value_difference, 2) - if not stock_value_difference: - valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse) - stock_value_difference = flt(sle.actual_qty)*flt(valuation_rate) - gl_list.append(self.get_gl_dict({ "account": warehouse_account[sle.warehouse], "against": detail.expense_account, "cost_center": detail.cost_center, "remarks": self.get("remarks") or "Accounting Entry for Stock", - "debit": stock_value_difference + "debit": flt(sle.stock_value_difference, 2) })) # to target warehouse / expense account @@ -68,7 +63,7 @@ class StockController(AccountsController): "against": warehouse_account[sle.warehouse], "cost_center": detail.cost_center, "remarks": self.get("remarks") or "Accounting Entry for Stock", - "credit": stock_value_difference + "credit": flt(sle.stock_value_difference, 2) })) elif sle.warehouse not in warehouse_with_no_account: warehouse_with_no_account.append(sle.warehouse) @@ -300,26 +295,3 @@ def block_negative_stock(allow_negative_stock=False): if cint(frappe.defaults.get_global_default("auto_accounting_for_stock")) and not allow_negative_stock: if cint(frappe.db.get_value("Stock Settings", None, "allow_negative_stock")): frappe.throw(_("Negative stock is not allowed in case of Perpetual Inventory, please disable it from Stock Settings")) - -def get_valuation_rate(item_code, warehouse): - last_valuation_rate = frappe.db.sql("""select valuation_rate - from `tabStock Ledger Entry` - where item_code = %s and warehouse = %s - and ifnull(valuation_rate, 0) > 0 - order by posting_date desc, posting_time desc, name desc limit 1""", (item_code, warehouse)) - - if not last_valuation_rate: - last_valuation_rate = frappe.db.sql("""select valuation_rate - from `tabStock Ledger Entry` - where item_code = %s and ifnull(valuation_rate, 0) > 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 not valuation_rate: - valuation_rate = frappe.db.get_value("Item Price", {"item_code": item_code, "buying": 1}, "price_list_rate") - - if not valuation_rate: - frappe.throw(_("Purchase rate for item: {0} not found, which is required to book accounting entry. Please mention item price against a buying price list.").format(item_code)) - - return valuation_rate diff --git a/erpnext/stock/doctype/stock_settings/stock_settings.py b/erpnext/stock/doctype/stock_settings/stock_settings.py index 95ace86b79..12ab0c98a1 100644 --- a/erpnext/stock/doctype/stock_settings/stock_settings.py +++ b/erpnext/stock/doctype/stock_settings/stock_settings.py @@ -12,9 +12,6 @@ from frappe.model.document import Document class StockSettings(Document): def validate(self): - if cint(self.allow_negative_stock) and cint(frappe.defaults.get_global_default("auto_accounting_for_stock")): - frappe.throw(_("Negative stock is not allowed in case of Perpetual Inventory")) - for key in ["item_naming_by", "item_group", "stock_uom", "allow_negative_stock"]: frappe.db.set_default(key, self.get(key, "")) diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index 7dc8d837bb..0fbf6a8652 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -6,7 +6,6 @@ import frappe from frappe import _ from frappe.utils import cint, flt, cstr, now from erpnext.stock.utils import get_valuation_method -from erpnext.controllers.stock_controller import get_valuation_rate import json # future reposting @@ -266,7 +265,7 @@ def get_moving_average_values(qty_after_transaction, sle, valuation_rate): if new_stock_qty: valuation_rate = new_stock_value / flt(new_stock_qty) - elif not valuation_rate: + elif not valuation_rate and qty_after_transaction <= 0: valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse) return abs(flt(valuation_rate)) @@ -275,9 +274,10 @@ def get_fifo_values(qty_after_transaction, sle, stock_queue): incoming_rate = flt(sle.incoming_rate) actual_qty = flt(sle.actual_qty) - intialize_stock_queue(stock_queue, sle.item_code, sle.warehouse, actual_qty) - if actual_qty > 0: + if not stock_queue: + stock_queue.append([0, 0]) + if stock_queue[-1][0] > 0: stock_queue.append([actual_qty, incoming_rate]) else: @@ -289,12 +289,12 @@ def get_fifo_values(qty_after_transaction, sle, stock_queue): else: qty_to_pop = abs(actual_qty) while qty_to_pop: - intialize_stock_queue(stock_queue, sle.item_code, sle.warehouse, actual_qty) + if not stock_queue: + stock_queue.append([0, get_valuation_rate(sle.item_code, sle.warehouse) + if qty_after_transaction <= 0 else 0]) batch = stock_queue[0] - # print qty_to_pop, batch - if qty_to_pop >= batch[0]: # consume current batch qty_to_pop = qty_to_pop - batch[0] @@ -318,11 +318,6 @@ def get_fifo_values(qty_after_transaction, sle, stock_queue): return abs(valuation_rate) -def intialize_stock_queue(stock_queue, item_code, warehouse, actual_qty): - if not stock_queue: - estimated_val_rate = get_valuation_rate(item_code, warehouse) if actual_qty < 0 else 0 - stock_queue.append([0, estimated_val_rate]) - def _raise_exceptions(args, verbose=1): deficiency = min(e["diff"] for e in _exceptions) msg = _("Negative Stock Error ({6}) for Item {0} in Warehouse {1} on {2} {3} in {4} {5}").format(args["item_code"], @@ -353,3 +348,26 @@ def get_previous_sle(args, for_update=False): "timestamp(posting_date, posting_time) <= timestamp(%(posting_date)s, %(posting_time)s)"], "desc", "limit 1", for_update=for_update) return sle and sle[0] or {} + +def get_valuation_rate(item_code, warehouse): + last_valuation_rate = frappe.db.sql("""select valuation_rate + from `tabStock Ledger Entry` + where item_code = %s and warehouse = %s + and ifnull(valuation_rate, 0) > 0 + order by posting_date desc, posting_time desc, name desc limit 1""", (item_code, warehouse)) + + if not last_valuation_rate: + last_valuation_rate = frappe.db.sql("""select valuation_rate + from `tabStock Ledger Entry` + where item_code = %s and ifnull(valuation_rate, 0) > 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 not valuation_rate: + valuation_rate = frappe.db.get_value("Item Price", {"item_code": item_code, "buying": 1}, "price_list_rate") + + if not valuation_rate and cint(frappe.db.get_value("Accounts Settings", None, "auto_accounting_for_stock")): + frappe.throw(_("Purchase rate for item: {0} not found, which is required to book accounting entry (expense). Please mention item price against a buying price list.").format(item_code)) + + return valuation_rate From f1a07ff1058df1bf56770943e265f4a4fcdae92c Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 15 Oct 2014 12:23:35 +0530 Subject: [PATCH 42/56] Allow zero rate while reposting --- .../doctype/sales_invoice/sales_invoice.py | 14 ++++++------- erpnext/controllers/stock_controller.py | 21 +++++++------------ .../fix_gl_entries_for_stock_transactions.py | 4 ++-- .../purchase_receipt/purchase_receipt.py | 5 +---- .../stock_reconciliation.py | 4 ++-- erpnext/stock/stock_ledger.py | 18 ++++++++-------- erpnext/utilities/repost_stock.py | 12 +++++------ 7 files changed, 34 insertions(+), 44 deletions(-) diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index 31f7113c37..a2bf78c449 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -7,7 +7,7 @@ import frappe.defaults from frappe.utils import cint, cstr, flt from frappe import _, msgprint, throw from erpnext.accounts.party import get_party_account, get_due_date -from erpnext.controllers.stock_controller import update_gl_entries_after, block_negative_stock +from erpnext.controllers.stock_controller import update_gl_entries_after from frappe.model.mapper import get_mapped_doc from erpnext.controllers.selling_controller import SellingController @@ -456,8 +456,8 @@ class SalesInvoice(SellingController): self.make_sl_entries(sl_entries) - def make_gl_entries(self, repost_future_gle=True, allow_negative_stock=False): - gl_entries = self.get_gl_entries(allow_negative_stock=allow_negative_stock) + def make_gl_entries(self, repost_future_gle=True): + gl_entries = self.get_gl_entries() if gl_entries: from erpnext.accounts.general_ledger import make_gl_entries @@ -476,7 +476,7 @@ class SalesInvoice(SellingController): items, warehouses = self.get_items_and_warehouses() update_gl_entries_after(self.posting_date, self.posting_time, warehouses, items) - def get_gl_entries(self, warehouse_account=None, allow_negative_stock=False): + def get_gl_entries(self, warehouse_account=None): from erpnext.accounts.general_ledger import merge_similar_entries gl_entries = [] @@ -485,7 +485,7 @@ class SalesInvoice(SellingController): self.make_tax_gl_entries(gl_entries) - self.make_item_gl_entries(gl_entries, allow_negative_stock) + self.make_item_gl_entries(gl_entries) # merge gl entries before adding pos entries gl_entries = merge_similar_entries(gl_entries) @@ -520,7 +520,7 @@ class SalesInvoice(SellingController): }) ) - def make_item_gl_entries(self, gl_entries, allow_negative_stock=False): + def make_item_gl_entries(self, gl_entries): # income account gl entries for item in self.get("entries"): if flt(item.base_amount): @@ -537,7 +537,7 @@ class SalesInvoice(SellingController): # expense account gl entries if cint(frappe.defaults.get_global_default("auto_accounting_for_stock")) \ and cint(self.update_stock): - gl_entries += super(SalesInvoice, self).get_gl_entries(allow_negative_stock=allow_negative_stock) + gl_entries += super(SalesInvoice, self).get_gl_entries() def make_pos_gl_entries(self, gl_entries): if cint(self.is_pos) and self.cash_bank_account and self.paid_amount: diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index d7c7a43568..0f8eca4a7c 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -11,7 +11,7 @@ from erpnext.controllers.accounts_controller import AccountsController from erpnext.accounts.general_ledger import make_gl_entries, delete_gl_entries, process_gl_map class StockController(AccountsController): - def make_gl_entries(self, repost_future_gle=True, allow_negative_stock=False): + def make_gl_entries(self, repost_future_gle=True): if self.docstatus == 2: delete_gl_entries(voucher_type=self.doctype, voucher_no=self.name) @@ -19,18 +19,16 @@ class StockController(AccountsController): warehouse_account = get_warehouse_account() if self.docstatus==1: - gl_entries = self.get_gl_entries(warehouse_account, allow_negative_stock=allow_negative_stock) + gl_entries = self.get_gl_entries(warehouse_account) make_gl_entries(gl_entries) if repost_future_gle: items, warehouses = self.get_items_and_warehouses() update_gl_entries_after(self.posting_date, self.posting_time, warehouses, items, - warehouse_account, allow_negative_stock) + warehouse_account) def get_gl_entries(self, warehouse_account=None, default_expense_account=None, - default_cost_center=None, allow_negative_stock=False): - - # block_negative_stock(allow_negative_stock) + default_cost_center=None): if not warehouse_account: warehouse_account = get_warehouse_account() @@ -219,7 +217,7 @@ class StockController(AccountsController): return serialized_items def update_gl_entries_after(posting_date, posting_time, for_warehouses=None, for_items=None, - warehouse_account=None, allow_negative_stock=False): + warehouse_account=None): def _delete_gl_entries(voucher_type, voucher_no): frappe.db.sql("""delete from `tabGL Entry` where voucher_type=%s and voucher_no=%s""", (voucher_type, voucher_no)) @@ -233,12 +231,12 @@ def update_gl_entries_after(posting_date, posting_time, for_warehouses=None, for for voucher_type, voucher_no in future_stock_vouchers: existing_gle = gle.get((voucher_type, voucher_no), []) voucher_obj = frappe.get_doc(voucher_type, voucher_no) - expected_gle = voucher_obj.get_gl_entries(warehouse_account, allow_negative_stock=allow_negative_stock) + expected_gle = voucher_obj.get_gl_entries(warehouse_account) if expected_gle: if not existing_gle or not compare_existing_and_expected_gle(existing_gle, expected_gle): _delete_gl_entries(voucher_type, voucher_no) - voucher_obj.make_gl_entries(repost_future_gle=False, allow_negative_stock=allow_negative_stock) + voucher_obj.make_gl_entries(repost_future_gle=False) else: _delete_gl_entries(voucher_type, voucher_no) @@ -290,8 +288,3 @@ def get_warehouse_account(): warehouse_account = dict(frappe.db.sql("""select master_name, name from tabAccount where account_type = 'Warehouse' and ifnull(master_name, '') != ''""")) return warehouse_account - -def block_negative_stock(allow_negative_stock=False): - if cint(frappe.defaults.get_global_default("auto_accounting_for_stock")) and not allow_negative_stock: - if cint(frappe.db.get_value("Stock Settings", None, "allow_negative_stock")): - frappe.throw(_("Negative stock is not allowed in case of Perpetual Inventory, please disable it from Stock Settings")) diff --git a/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py b/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py index 3c554ae0f0..a7da8643ec 100644 --- a/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py +++ b/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py @@ -7,7 +7,7 @@ from frappe.utils import flt def execute(): from erpnext.utilities.repost_stock import repost - repost() + repost(allow_zero_rate=True) warehouse_account = frappe.db.sql("""select name, master_name from tabAccount where ifnull(account_type, '') = 'Warehouse'""") @@ -40,7 +40,7 @@ def execute(): where voucher_type=%s and voucher_no=%s""", (voucher_type, voucher_no)) voucher = frappe.get_doc(voucher_type, voucher_no) - voucher.make_gl_entries(repost_future_gle=False, allow_negative_stock=True) + voucher.make_gl_entries(repost_future_gle=False) frappe.db.commit() except Exception, e: print frappe.get_traceback() diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py index ed4257fd9b..13495a0377 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py @@ -283,11 +283,8 @@ class PurchaseReceipt(BuyingController): def get_rate(self,arg): return frappe.get_doc('Purchase Common').get_rate(arg,self) - def get_gl_entries(self, warehouse_account=None, allow_negative_stock=False): + def get_gl_entries(self, warehouse_account=None): from erpnext.accounts.general_ledger import process_gl_map - from erpnext.controllers.stock_controller import block_negative_stock - - # block_negative_stock(allow_negative_stock) stock_rbnb = self.get_company_default("stock_received_but_not_billed") expenses_included_in_valuation = self.get_company_default("expenses_included_in_valuation") diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py index b67090d137..530ab9af80 100644 --- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py @@ -198,12 +198,12 @@ class StockReconciliation(StockController): "posting_time": self.posting_time }) - def get_gl_entries(self, warehouse_account=None, allow_negative_stock=False): + def get_gl_entries(self, warehouse_account=None): if not self.cost_center: msgprint(_("Please enter Cost Center"), raise_exception=1) return super(StockReconciliation, self).get_gl_entries(warehouse_account, - self.expense_account, self.cost_center, allow_negative_stock=allow_negative_stock) + self.expense_account, self.cost_center) def validate_expense_account(self): if not cint(frappe.defaults.get_global_default("auto_accounting_for_stock")): diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index 0fbf6a8652..edbdb1aa06 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -58,7 +58,7 @@ def delete_cancelled_entry(voucher_type, voucher_no): frappe.db.sql("""delete from `tabStock Ledger Entry` where voucher_type=%s and voucher_no=%s""", (voucher_type, voucher_no)) -def update_entries_after(args, verbose=1): +def update_entries_after(args, allow_zero_rate=False, verbose=1): """ update valution rate and qty after transaction from the current time-bucket onwards @@ -106,9 +106,9 @@ def update_entries_after(args, verbose=1): stock_queue = [[qty_after_transaction, valuation_rate]] else: if valuation_method == "Moving Average": - valuation_rate = get_moving_average_values(qty_after_transaction, sle, valuation_rate) + valuation_rate = get_moving_average_values(qty_after_transaction, sle, valuation_rate, allow_zero_rate) else: - valuation_rate = get_fifo_values(qty_after_transaction, sle, stock_queue) + valuation_rate = get_fifo_values(qty_after_transaction, sle, stock_queue, allow_zero_rate) qty_after_transaction += flt(sle.actual_qty) @@ -251,7 +251,7 @@ def get_serialized_values(qty_after_transaction, sle, valuation_rate): return valuation_rate -def get_moving_average_values(qty_after_transaction, sle, valuation_rate): +def get_moving_average_values(qty_after_transaction, sle, valuation_rate, allow_zero_rate): incoming_rate = flt(sle.incoming_rate) actual_qty = flt(sle.actual_qty) @@ -266,11 +266,11 @@ def get_moving_average_values(qty_after_transaction, sle, valuation_rate): if new_stock_qty: valuation_rate = new_stock_value / flt(new_stock_qty) elif not valuation_rate and qty_after_transaction <= 0: - valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse) + valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse, allow_zero_rate) return abs(flt(valuation_rate)) -def get_fifo_values(qty_after_transaction, sle, stock_queue): +def get_fifo_values(qty_after_transaction, sle, stock_queue, allow_zero_rate): incoming_rate = flt(sle.incoming_rate) actual_qty = flt(sle.actual_qty) @@ -290,7 +290,7 @@ def get_fifo_values(qty_after_transaction, sle, stock_queue): qty_to_pop = abs(actual_qty) while qty_to_pop: if not stock_queue: - stock_queue.append([0, get_valuation_rate(sle.item_code, sle.warehouse) + stock_queue.append([0, get_valuation_rate(sle.item_code, sle.warehouse, allow_zero_rate) if qty_after_transaction <= 0 else 0]) batch = stock_queue[0] @@ -349,7 +349,7 @@ def get_previous_sle(args, for_update=False): "desc", "limit 1", for_update=for_update) return sle and sle[0] or {} -def get_valuation_rate(item_code, warehouse): +def get_valuation_rate(item_code, warehouse, allow_zero_rate=False): last_valuation_rate = frappe.db.sql("""select valuation_rate from `tabStock Ledger Entry` where item_code = %s and warehouse = %s @@ -367,7 +367,7 @@ def get_valuation_rate(item_code, warehouse): if not valuation_rate: valuation_rate = frappe.db.get_value("Item Price", {"item_code": item_code, "buying": 1}, "price_list_rate") - if not valuation_rate and cint(frappe.db.get_value("Accounts Settings", None, "auto_accounting_for_stock")): + if not allow_zero_rate and not valuation_rate and cint(frappe.db.get_value("Accounts Settings", None, "auto_accounting_for_stock")): frappe.throw(_("Purchase rate for item: {0} not found, which is required to book accounting entry (expense). Please mention item price against a buying price list.").format(item_code)) return valuation_rate diff --git a/erpnext/utilities/repost_stock.py b/erpnext/utilities/repost_stock.py index 89494ad2ca..4be95911c8 100644 --- a/erpnext/utilities/repost_stock.py +++ b/erpnext/utilities/repost_stock.py @@ -9,7 +9,7 @@ from erpnext.stock.utils import update_bin from erpnext.stock.stock_ledger import update_entries_after from erpnext.accounts.utils import get_fiscal_year -def repost(allow_negative_stock=False): +def repost(allow_negative_stock=False, allow_zero_rate=False): """ Repost everything! """ @@ -23,7 +23,7 @@ def repost(allow_negative_stock=False): union select item_code, warehouse from `tabStock Ledger Entry`) a"""): try: - repost_stock(d[0], d[1]) + repost_stock(d[0], d[1], allow_zero_rate) frappe.db.commit() except: frappe.db.rollback() @@ -33,8 +33,8 @@ def repost(allow_negative_stock=False): frappe.db.get_value("Stock Settings", None, "allow_negative_stock")) frappe.db.auto_commit_on_many_writes = 0 -def repost_stock(item_code, warehouse): - repost_actual_qty(item_code, warehouse) +def repost_stock(item_code, warehouse, allow_zero_rate=False): + repost_actual_qty(item_code, warehouse, allow_zero_rate) if item_code and warehouse: update_bin_qty(item_code, warehouse, { @@ -44,9 +44,9 @@ def repost_stock(item_code, warehouse): "planned_qty": get_planned_qty(item_code, warehouse) }) -def repost_actual_qty(item_code, warehouse): +def repost_actual_qty(item_code, warehouse, allow_zero_rate=False): try: - update_entries_after({ "item_code": item_code, "warehouse": warehouse }) + update_entries_after({ "item_code": item_code, "warehouse": warehouse }, allow_zero_rate) except: pass From 9bbfca922657623f1505b06c87ed939c3c8808dd Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 15 Oct 2014 12:24:38 +0530 Subject: [PATCH 43/56] Fix gl entries for stock transactions --- erpnext/patches.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 92f8395f29..d75a99c3f0 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -85,4 +85,5 @@ erpnext.patches.v4_2.seprate_manufacture_and_repack execute:frappe.delete_doc("Report", "Warehouse-Wise Stock Balance") execute:frappe.delete_doc("DocType", "Purchase Request") execute:frappe.delete_doc("DocType", "Purchase Request Item") -erpnext.patches.v4_2.recalculate_bom_cost \ No newline at end of file +erpnext.patches.v4_2.recalculate_bom_cost +erpnext.patches.v4_2.fix_gl_entries_for_stock_transactions From 531077e5041228d3ad97a93091e35856610984cf Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 15 Oct 2014 13:55:37 +0530 Subject: [PATCH 44/56] Strip company in setup wizard --- erpnext/setup/page/setup_wizard/setup_wizard.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py index bf643ddcf9..c5e3f4339e 100644 --- a/erpnext/setup/page/setup_wizard/setup_wizard.py +++ b/erpnext/setup/page/setup_wizard/setup_wizard.py @@ -71,7 +71,7 @@ def setup_account(args=None): frappe.db.set_default('desktop:home_page', 'desktop') - website_maker(args.company_name, args.company_tagline, args.name) + website_maker(args.company_name.strip(), args.company_tagline, args.name) create_logo(args) frappe.clear_cache() @@ -135,7 +135,7 @@ def create_fiscal_year_and_company(args): frappe.get_doc({ "doctype":"Company", 'domain': args.get("industry"), - 'company_name':args.get('company_name'), + 'company_name':args.get('company_name').strip(), 'abbr':args.get('company_abbr'), 'default_currency':args.get('currency'), 'country': args.get('country'), @@ -166,7 +166,7 @@ def set_defaults(args): global_defaults.update({ 'current_fiscal_year': args.curr_fiscal_year, 'default_currency': args.get('currency'), - 'default_company':args.get('company_name'), + 'default_company':args.get('company_name').strip(), "country": args.get("country"), }) @@ -285,7 +285,7 @@ def create_taxes(args): try: frappe.get_doc({ "doctype":"Account", - "company": args.get("company_name"), + "company": args.get("company_name").strip(), "parent_account": _("Duties and Taxes") + " - " + args.get("company_abbr"), "account_name": args.get("tax_" + str(i)), "group_or_ledger": "Ledger", @@ -345,7 +345,7 @@ def create_customers(args): "customer_type": "Company", "customer_group": _("Commercial"), "territory": args.get("country"), - "company": args.get("company_name") + "company": args.get("company_name").strip() }).insert() if args.get("customer_contact_" + str(i)): @@ -365,7 +365,7 @@ def create_suppliers(args): "doctype":"Supplier", "supplier_name": supplier, "supplier_type": _("Local"), - "company": args.get("company_name") + "company": args.get("company_name").strip() }).insert() if args.get("supplier_contact_" + str(i)): From 5e46ce8a500c568324702a03cc1cb458182e8ddb Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Wed, 15 Oct 2014 15:05:47 +0600 Subject: [PATCH 45/56] bumped to version 4.7.0 --- 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 2bdfe47e06..372a507972 100644 --- a/erpnext/__version__.py +++ b/erpnext/__version__.py @@ -1 +1 @@ -__version__ = '4.6.2' +__version__ = '4.7.0' diff --git a/erpnext/hooks.py b/erpnext/hooks.py index 0f677a0e75..3fb91597ea 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -4,7 +4,7 @@ app_publisher = "Web Notes Technologies Pvt. Ltd. and Contributors" app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations" app_icon = "icon-th" app_color = "#e74c3c" -app_version = "4.6.2" +app_version = "4.7.0" error_report_email = "support@erpnext.com" diff --git a/setup.py b/setup.py index 34207e86f7..1d611020b7 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages import os -version = "4.6.2" +version = "4.7.0" with open("requirements.txt", "r") as f: install_requires = f.readlines() From b2f32dac1b5d7b437fbfb91b686d4524cb1c31c5 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 15 Oct 2014 14:42:18 +0530 Subject: [PATCH 46/56] Minor fix --- .../fix_gl_entries_for_stock_transactions.py | 63 ++++++++++--------- 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py b/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py index a7da8643ec..2de3daa27e 100644 --- a/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py +++ b/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py @@ -11,41 +11,42 @@ def execute(): warehouse_account = frappe.db.sql("""select name, master_name from tabAccount where ifnull(account_type, '') = 'Warehouse'""") - warehouses = [d[1] for d in warehouse_account] - accounts = [d[0] for d in warehouse_account] + if warehouse_account: + warehouses = [d[1] for d in warehouse_account] + accounts = [d[0] for d in warehouse_account] - stock_vouchers = frappe.db.sql("""select distinct sle.voucher_type, sle.voucher_no - from `tabStock Ledger Entry` sle - where sle.warehouse in (%s) - order by sle.posting_date""" % - ', '.join(['%s']*len(warehouses)), tuple(warehouses)) + stock_vouchers = frappe.db.sql("""select distinct sle.voucher_type, sle.voucher_no + from `tabStock Ledger Entry` sle + where sle.warehouse in (%s) + order by sle.posting_date""" % + ', '.join(['%s']*len(warehouses)), tuple(warehouses)) - rejected = [] - for voucher_type, voucher_no in stock_vouchers: - stock_bal = frappe.db.sql("""select sum(stock_value_difference) from `tabStock Ledger Entry` - where voucher_type=%s and voucher_no =%s and warehouse in (%s)""" % - ('%s', '%s', ', '.join(['%s']*len(warehouses))), tuple([voucher_type, voucher_no] + warehouses)) + rejected = [] + for voucher_type, voucher_no in stock_vouchers: + stock_bal = frappe.db.sql("""select sum(stock_value_difference) from `tabStock Ledger Entry` + where voucher_type=%s and voucher_no =%s and warehouse in (%s)""" % + ('%s', '%s', ', '.join(['%s']*len(warehouses))), tuple([voucher_type, voucher_no] + warehouses)) - account_bal = frappe.db.sql("""select ifnull(sum(ifnull(debit, 0) - ifnull(credit, 0)), 0) - from `tabGL Entry` - where voucher_type=%s and voucher_no =%s and account in (%s) - group by voucher_type, voucher_no""" % - ('%s', '%s', ', '.join(['%s']*len(accounts))), tuple([voucher_type, voucher_no] + accounts)) + account_bal = frappe.db.sql("""select ifnull(sum(ifnull(debit, 0) - ifnull(credit, 0)), 0) + from `tabGL Entry` + where voucher_type=%s and voucher_no =%s and account in (%s) + group by voucher_type, voucher_no""" % + ('%s', '%s', ', '.join(['%s']*len(accounts))), tuple([voucher_type, voucher_no] + accounts)) - if stock_bal and account_bal and abs(flt(stock_bal[0][0]) - flt(account_bal[0][0])) > 0.1: - try: - print voucher_type, voucher_no, stock_bal[0][0], account_bal[0][0] + if stock_bal and account_bal and abs(flt(stock_bal[0][0]) - flt(account_bal[0][0])) > 0.1: + try: + print voucher_type, voucher_no, stock_bal[0][0], account_bal[0][0] - frappe.db.sql("""delete from `tabGL Entry` - where voucher_type=%s and voucher_no=%s""", (voucher_type, voucher_no)) + frappe.db.sql("""delete from `tabGL Entry` + where voucher_type=%s and voucher_no=%s""", (voucher_type, voucher_no)) - voucher = frappe.get_doc(voucher_type, voucher_no) - voucher.make_gl_entries(repost_future_gle=False) - frappe.db.commit() - except Exception, e: - print frappe.get_traceback() - rejected.append([voucher_type, voucher_no]) - frappe.db.rollback() + voucher = frappe.get_doc(voucher_type, voucher_no) + voucher.make_gl_entries(repost_future_gle=False) + frappe.db.commit() + except Exception, e: + print frappe.get_traceback() + rejected.append([voucher_type, voucher_no]) + frappe.db.rollback() - print "Failed to repost: " - print rejected + print "Failed to repost: " + print rejected From 63914dd55b0058236c065b4674c8463dca6ef2fa Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Wed, 15 Oct 2014 15:14:35 +0600 Subject: [PATCH 47/56] bumped to version 4.7.1 --- 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 372a507972..3c9329b277 100644 --- a/erpnext/__version__.py +++ b/erpnext/__version__.py @@ -1 +1 @@ -__version__ = '4.7.0' +__version__ = '4.7.1' diff --git a/erpnext/hooks.py b/erpnext/hooks.py index 3fb91597ea..de6f096a13 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -4,7 +4,7 @@ app_publisher = "Web Notes Technologies Pvt. Ltd. and Contributors" app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations" app_icon = "icon-th" app_color = "#e74c3c" -app_version = "4.7.0" +app_version = "4.7.1" error_report_email = "support@erpnext.com" diff --git a/setup.py b/setup.py index 1d611020b7..11148e5a7d 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages import os -version = "4.7.0" +version = "4.7.1" with open("requirements.txt", "r") as f: install_requires = f.readlines() From 2348a5f59243f685927e914185f4c1ebb8a492ec Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 15 Oct 2014 15:31:33 +0530 Subject: [PATCH 48/56] repost stock utility --- .../patches/v4_2/fix_gl_entries_for_stock_transactions.py | 2 +- erpnext/utilities/repost_stock.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py b/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py index 2de3daa27e..a72b95480a 100644 --- a/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py +++ b/erpnext/patches/v4_2/fix_gl_entries_for_stock_transactions.py @@ -7,7 +7,7 @@ from frappe.utils import flt def execute(): from erpnext.utilities.repost_stock import repost - repost(allow_zero_rate=True) + repost(allow_zero_rate=True, only_actual=True) warehouse_account = frappe.db.sql("""select name, master_name from tabAccount where ifnull(account_type, '') = 'Warehouse'""") diff --git a/erpnext/utilities/repost_stock.py b/erpnext/utilities/repost_stock.py index 4be95911c8..643bec986a 100644 --- a/erpnext/utilities/repost_stock.py +++ b/erpnext/utilities/repost_stock.py @@ -9,7 +9,7 @@ from erpnext.stock.utils import update_bin from erpnext.stock.stock_ledger import update_entries_after from erpnext.accounts.utils import get_fiscal_year -def repost(allow_negative_stock=False, allow_zero_rate=False): +def repost(only_actual=False, allow_negative_stock=False, allow_zero_rate=False): """ Repost everything! """ @@ -23,7 +23,7 @@ def repost(allow_negative_stock=False, allow_zero_rate=False): union select item_code, warehouse from `tabStock Ledger Entry`) a"""): try: - repost_stock(d[0], d[1], allow_zero_rate) + repost_stock(d[0], d[1], allow_zero_rate, only_actual) frappe.db.commit() except: frappe.db.rollback() @@ -33,10 +33,10 @@ def repost(allow_negative_stock=False, allow_zero_rate=False): frappe.db.get_value("Stock Settings", None, "allow_negative_stock")) frappe.db.auto_commit_on_many_writes = 0 -def repost_stock(item_code, warehouse, allow_zero_rate=False): +def repost_stock(item_code, warehouse, allow_zero_rate=False, only_actual=False): repost_actual_qty(item_code, warehouse, allow_zero_rate) - if item_code and warehouse: + if item_code and warehouse and not only_actual: update_bin_qty(item_code, warehouse, { "reserved_qty": get_reserved_qty(item_code, warehouse), "indented_qty": get_indented_qty(item_code, warehouse), From 26d096aa87f112b7ec0f8cda942d16097adc2e78 Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Wed, 15 Oct 2014 16:04:39 +0600 Subject: [PATCH 49/56] bumped to version 4.7.2 --- 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 3c9329b277..64f6e28028 100644 --- a/erpnext/__version__.py +++ b/erpnext/__version__.py @@ -1 +1 @@ -__version__ = '4.7.1' +__version__ = '4.7.2' diff --git a/erpnext/hooks.py b/erpnext/hooks.py index de6f096a13..fe989d85dd 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -4,7 +4,7 @@ app_publisher = "Web Notes Technologies Pvt. Ltd. and Contributors" app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations" app_icon = "icon-th" app_color = "#e74c3c" -app_version = "4.7.1" +app_version = "4.7.2" error_report_email = "support@erpnext.com" diff --git a/setup.py b/setup.py index 11148e5a7d..e567ea2e76 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages import os -version = "4.7.1" +version = "4.7.2" with open("requirements.txt", "r") as f: install_requires = f.readlines() From 053c54017e3e3a727ecc815de47a3cd6e303e284 Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Fri, 17 Oct 2014 14:16:10 +0530 Subject: [PATCH 50/56] [minor] add admin password to travis test site --- test_sites/test_site/site_config.json | 1 + 1 file changed, 1 insertion(+) diff --git a/test_sites/test_site/site_config.json b/test_sites/test_site/site_config.json index 05bf562766..12007b87ec 100644 --- a/test_sites/test_site/site_config.json +++ b/test_sites/test_site/site_config.json @@ -1,5 +1,6 @@ { "db_name": "test_frappe", "db_password": "test_frappe", + "admin_password": "admin", "mute_emails": 1 } From fc2dd44694db94b11b17421e50267371481e64b4 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 17 Oct 2014 13:05:24 +0530 Subject: [PATCH 51/56] Partial payment reconciliation. Fixes #1982 --- erpnext/accounts/doctype/gl_entry/gl_entry.py | 4 +++ .../journal_voucher/journal_voucher.py | 26 +++++++++++++------ .../payment_reconciliation.js | 18 +++++-------- .../payment_reconciliation.json | 9 +------ .../payment_reconciliation.py | 17 +++++++----- .../payment_reconciliation_payment.json | 13 ++++++++-- .../doctype/delivery_note/delivery_note.py | 2 +- erpnext/utilities/repost_stock.py | 2 +- 8 files changed, 54 insertions(+), 37 deletions(-) diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py index dab2d82092..4cc3d572ae 100644 --- a/erpnext/accounts/doctype/gl_entry/gl_entry.py +++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py @@ -124,6 +124,10 @@ def update_outstanding_amt(account, against_voucher_type, against_voucher, on_ca from `tabGL Entry` where voucher_type = 'Journal Voucher' and voucher_no = %s and account = %s and ifnull(against_voucher, '') = ''""", (against_voucher, account))[0][0]) + if not against_voucher_amount: + frappe.throw(_("Against Journal Voucher {0} is already adjusted against some other voucher") + .format(against_voucher)) + bal = against_voucher_amount + bal if against_voucher_amount < 0: bal = -bal diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py index 3c67508306..f9f6df1557 100644 --- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py +++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py @@ -88,15 +88,24 @@ class JournalVoucher(AccountsController): def validate_against_jv(self): for d in self.get('entries'): if d.against_jv: + account_root_type = frappe.db.get_value("Account", d.account, "root_type") + if account_root_type == "Asset" and flt(d.debit) > 0: + frappe.throw(_("For {0}, only credit entries can be linked against another debit entry") + .format(d.account)) + elif account_root_type == "Liability" and flt(d.credit) > 0: + frappe.throw(_("For {0}, only debit entries can be linked against another credit entry") + .format(d.account)) + if d.against_jv == self.name: frappe.throw(_("You can not enter current voucher in 'Against Journal Voucher' column")) against_entries = frappe.db.sql("""select * from `tabJournal Voucher Detail` where account = %s and docstatus = 1 and parent = %s - and ifnull(against_jv, '') = ''""", (d.account, d.against_jv), as_dict=True) + and ifnull(against_jv, '') = '' and ifnull(against_invoice, '') = '' + and ifnull(against_voucher, '') = ''""", (d.account, d.against_jv), as_dict=True) if not against_entries: - frappe.throw(_("Journal Voucher {0} does not have account {1} or already matched") + frappe.throw(_("Journal Voucher {0} does not have account {1} or already matched against other voucher") .format(d.against_jv, d.account)) else: dr_or_cr = "debit" if d.credit > 0 else "credit" @@ -153,7 +162,7 @@ class JournalVoucher(AccountsController): and voucher_account != d.account: frappe.throw(_("Row {0}: Account {1} does not match with {2} {3} account") \ .format(d.idx, d.account, doctype, field_dict.get(doctype))) - + if against_field in ["against_sales_order", "against_purchase_order"]: if voucher_account != account_master_name: frappe.throw(_("Row {0}: Account {1} does not match with {2} {3} Name") \ @@ -165,7 +174,7 @@ class JournalVoucher(AccountsController): def validate_against_invoice_fields(self, doctype, payment_against_voucher): for voucher_no, payment_list in payment_against_voucher.items(): - voucher_properties = frappe.db.get_value(doctype, voucher_no, + voucher_properties = frappe.db.get_value(doctype, voucher_no, ["docstatus", "outstanding_amount"]) if voucher_properties[0] != 1: @@ -177,7 +186,7 @@ class JournalVoucher(AccountsController): def validate_against_order_fields(self, doctype, payment_against_voucher): for voucher_no, payment_list in payment_against_voucher.items(): - voucher_properties = frappe.db.get_value(doctype, voucher_no, + voucher_properties = frappe.db.get_value(doctype, voucher_no, ["docstatus", "per_billed", "status", "advance_paid", "grand_total"]) if voucher_properties[0] != 1: @@ -532,9 +541,10 @@ def get_against_sales_invoice(doctype, txt, searchfield, start, page_len, filter (filters["account"], "%%%s%%" % txt, start, page_len)) def get_against_jv(doctype, txt, searchfield, start, page_len, filters): - return frappe.db.sql("""select jv.name, jv.posting_date, jv.user_remark - from `tabJournal Voucher` jv, `tabJournal Voucher Detail` jv_detail - where jv_detail.parent = jv.name and jv_detail.account = %s and jv.docstatus = 1 + return frappe.db.sql("""select distinct jv.name, jv.posting_date, jv.user_remark + from `tabJournal Voucher` jv, `tabJournal Voucher Detail` jvd + where jvd.parent = jv.name and jvd.account = %s and jv.docstatus = 1 + and (ifnull(jvd.against_invoice, '') = '' and ifnull(jvd.against_voucher, '') = '' and ifnull(jvd.against_jv, '') = '' ) and jv.%s like %s order by jv.name desc limit %s, %s""" % ("%s", searchfield, "%s", "%s", "%s"), (filters["account"], "%%%s%%" % txt, start, page_len)) diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js index 97484da468..bfcd63ea01 100644 --- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js +++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js @@ -19,9 +19,9 @@ erpnext.accounts.PaymentReconciliationController = frappe.ui.form.Controller.ext ] }; } - + }); - + this.frm.set_query('bank_cash_account', function() { if(!me.frm.doc.company) { msgprint(__("Please select company first")); @@ -35,12 +35,8 @@ erpnext.accounts.PaymentReconciliationController = frappe.ui.form.Controller.ext }; } }); - - var help_content = ' ' + __("Note") + ':
'+ - '
    ' + __("If you are unable to match the exact amount, then amend your Journal Voucher and split rows such that payment amount match the invoice amount.") + '
'; - this.frm.set_value("reconcile_help", help_content); }, - + get_unreconciled_entries: function() { var me = this; return this.frm.call({ @@ -48,12 +44,12 @@ erpnext.accounts.PaymentReconciliationController = frappe.ui.form.Controller.ext method: 'get_unreconciled_entries', callback: function(r, rt) { var invoices = []; - + $.each(me.frm.doc.payment_reconciliation_invoices || [], function(i, row) { - if (row.invoice_number && !inList(invoices, row.invoice_number)) + if (row.invoice_number && !inList(invoices, row.invoice_number)) invoices.push(row.invoice_number); }); - + frappe.meta.get_docfield("Payment Reconciliation Payment", "invoice_number", me.frm.doc.name).options = invoices.join("\n"); @@ -79,4 +75,4 @@ erpnext.accounts.PaymentReconciliationController = frappe.ui.form.Controller.ext $.extend(cur_frm.cscript, new erpnext.accounts.PaymentReconciliationController({frm: cur_frm})); -cur_frm.add_fetch('party_account', 'master_type', 'party_type') \ No newline at end of file +cur_frm.add_fetch('party_account', 'master_type', 'party_type') diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json index 51cb306157..bb07b4695b 100644 --- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json +++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json @@ -118,19 +118,12 @@ "options": "Payment Reconciliation Invoice", "permlevel": 0, "read_only": 1 - }, - { - "fieldname": "reconcile_help", - "fieldtype": "Small Text", - "label": "", - "permlevel": 0, - "read_only": 1 } ], "hide_toolbar": 1, "icon": "icon-resize-horizontal", "issingle": 1, - "modified": "2014-07-31 05:43:03.410832", + "modified": "2014-10-16 17:51:44.367107", "modified_by": "Administrator", "module": "Accounts", "name": "Payment Reconciliation", diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py index a5a56aee0a..c6a2b056da 100644 --- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py +++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py @@ -124,7 +124,7 @@ class PaymentReconciliation(Document): dr_or_cr = "credit" if self.party_type == "Customer" else "debit" lst = [] for e in self.get('payment_reconciliation_payments'): - if e.invoice_type and e.invoice_number: + if e.invoice_type and e.invoice_number and e.allocated_amount: lst.append({ 'voucher_no' : e.journal_voucher, 'voucher_detail_no' : e.voucher_detail_number, @@ -134,7 +134,7 @@ class PaymentReconciliation(Document): 'is_advance' : e.is_advance, 'dr_or_cr' : dr_or_cr, 'unadjusted_amt' : flt(e.amount), - 'allocated_amt' : flt(e.amount) + 'allocated_amt' : flt(e.allocated_amount) }) if lst: @@ -162,18 +162,23 @@ class PaymentReconciliation(Document): invoices_to_reconcile = [] for p in self.get("payment_reconciliation_payments"): - if p.invoice_type and p.invoice_number: + if p.invoice_type and p.invoice_number and p.allocated_amount: invoices_to_reconcile.append(p.invoice_number) if p.invoice_number not in unreconciled_invoices.get(p.invoice_type, {}): frappe.throw(_("{0}: {1} not found in Invoice Details table") .format(p.invoice_type, p.invoice_number)) - if p.amount > unreconciled_invoices.get(p.invoice_type, {}).get(p.invoice_number): - frappe.throw(_("Row {0}: Payment amount must be less than or equals to invoice outstanding amount. Please refer Note below.").format(p.idx)) + if flt(p.allocated_amount) > flt(p.amount): + frappe.throw(_("Row {0}: Allocated amount {1} must be less than or equals to JV amount {2}") + .format(p.idx, p.allocated_amount, p.amount)) + + if flt(p.allocated_amount) > unreconciled_invoices.get(p.invoice_type, {}).get(p.invoice_number): + frappe.throw(_("Row {0}: Allocated amount {1} must be less than or equals to invoice outstanding amount {2}") + .format(p.idx, p.allocated_amount, unreconciled_invoices.get(p.invoice_type, {}).get(p.invoice_number))) if not invoices_to_reconcile: - frappe.throw(_("Please select Invoice Type and Invoice Number in atleast one row")) + frappe.throw(_("Please select Allocated Amount, Invoice Type and Invoice Number in atleast one row")) def check_condition(self, dr_or_cr): cond = self.from_date and " and posting_date >= '" + self.from_date + "'" or "" diff --git a/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json b/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json index 73fd0f50f3..6f576ca38b 100644 --- a/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json +++ b/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json @@ -53,11 +53,20 @@ "label": "Column Break", "permlevel": 0 }, + { + "fieldname": "allocated_amount", + "fieldtype": "Currency", + "in_list_view": 1, + "label": "Allocated amount", + "permlevel": 0, + "precision": "", + "reqd": 1 + }, { "default": "Sales Invoice", "fieldname": "invoice_type", "fieldtype": "Select", - "in_list_view": 1, + "in_list_view": 0, "label": "Invoice Type", "options": "\nSales Invoice\nPurchase Invoice\nJournal Voucher", "permlevel": 0, @@ -95,7 +104,7 @@ } ], "istable": 1, - "modified": "2014-07-21 16:53:56.206169", + "modified": "2014-10-16 17:40:54.040194", "modified_by": "Administrator", "module": "Accounts", "name": "Payment Reconciliation Payment", diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py index 864329d3ea..079b7fc110 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.py +++ b/erpnext/stock/doctype/delivery_note/delivery_note.py @@ -245,7 +245,7 @@ class DeliveryNote(SellingController): sl_entries = [] for d in self.get_item_list(): if frappe.db.get_value("Item", d.item_code, "is_stock_item") == "Yes" \ - and d.warehouse: + and d.warehouse and flt(d['qty']): self.update_reserved_qty(d) sl_entries.append(self.get_sl_entries(d, { diff --git a/erpnext/utilities/repost_stock.py b/erpnext/utilities/repost_stock.py index 643bec986a..f1ba1798ce 100644 --- a/erpnext/utilities/repost_stock.py +++ b/erpnext/utilities/repost_stock.py @@ -73,7 +73,7 @@ def get_reserved_qty(item_code, warehouse): from `tabPacked Item` dnpi_in where item_code = %s and warehouse = %s and parenttype="Sales Order" - and item_code != parent_item + and item_code != parent_item and exists (select * from `tabSales Order` so where name = dnpi_in.parent and docstatus = 1 and status != 'Stopped') ) dnpi) From 5eb373f7b5358afcb6f2de34072f5ef349691f44 Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Fri, 17 Oct 2014 15:34:05 +0600 Subject: [PATCH 52/56] bumped to version 4.8.0 --- 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 64f6e28028..0d53216d5b 100644 --- a/erpnext/__version__.py +++ b/erpnext/__version__.py @@ -1 +1 @@ -__version__ = '4.7.2' +__version__ = '4.8.0' diff --git a/erpnext/hooks.py b/erpnext/hooks.py index fe989d85dd..febf4b0a49 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -4,7 +4,7 @@ app_publisher = "Web Notes Technologies Pvt. Ltd. and Contributors" app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations" app_icon = "icon-th" app_color = "#e74c3c" -app_version = "4.7.2" +app_version = "4.8.0" error_report_email = "support@erpnext.com" diff --git a/setup.py b/setup.py index e567ea2e76..5c7fe9a77d 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages import os -version = "4.7.2" +version = "4.8.0" with open("requirements.txt", "r") as f: install_requires = f.readlines() From 259f9779db8dbdf9035dd516932987d4e9332d95 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 17 Oct 2014 17:33:18 +0530 Subject: [PATCH 53/56] Credit Note: Set total amount and print format fix --- .../journal_voucher/journal_voucher.py | 31 +++++++++---------- .../print_format/credit_note/credit_note.json | 4 +-- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py index f9f6df1557..c6299edbc9 100644 --- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py +++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py @@ -289,26 +289,25 @@ class JournalVoucher(AccountsController): def set_print_format_fields(self): for d in self.get('entries'): - result = frappe.db.get_value("Account", d.account, - ["account_type", "master_type"]) + acc = frappe.db.get_value("Account", d.account, ["account_type", "master_type"], as_dict=1) - if not result: - continue + if not acc: continue - account_type, master_type = result - - if master_type in ['Supplier', 'Customer']: + if acc.master_type in ['Supplier', 'Customer']: if not self.pay_to_recd_from: - self.pay_to_recd_from = frappe.db.get_value(master_type, - ' - '.join(d.account.split(' - ')[:-1]), - master_type == 'Customer' and 'customer_name' or 'supplier_name') + self.pay_to_recd_from = frappe.db.get_value(acc.master_type, ' - '.join(d.account.split(' - ')[:-1]), + acc.master_type == 'Customer' and 'customer_name' or 'supplier_name') + if self.voucher_type in ["Credit Note", "Debit Note"]: + self.set_total_amount(d.debit or d.credit) - if account_type in ['Bank', 'Cash']: - company_currency = get_company_currency(self.company) - amt = flt(d.debit) and d.debit or d.credit - self.total_amount = fmt_money(amt, currency=company_currency) - from frappe.utils import money_in_words - self.total_amount_in_words = money_in_words(amt, company_currency) + if acc.account_type in ['Bank', 'Cash']: + self.set_total_amount(d.debit or d.credit) + + def set_total_amount(self, amt): + company_currency = get_company_currency(self.company) + self.total_amount = fmt_money(amt, currency=company_currency) + from frappe.utils import money_in_words + self.total_amount_in_words = money_in_words(amt, company_currency) def check_credit_days(self): date_diff = 0 diff --git a/erpnext/accounts/print_format/credit_note/credit_note.json b/erpnext/accounts/print_format/credit_note/credit_note.json index 31507b480d..ac0de75037 100644 --- a/erpnext/accounts/print_format/credit_note/credit_note.json +++ b/erpnext/accounts/print_format/credit_note/credit_note.json @@ -4,9 +4,9 @@ "doc_type": "Journal Voucher", "docstatus": 0, "doctype": "Print Format", - "html": "{%- from \"templates/print_formats/standard_macros.html\" import add_header -%}\n\n
\n {%- if not doc.get(\"print_heading\") and not doc.get(\"select_print_heading\") \n and doc.set(\"select_print_heading\", _(\"Credit Note\")) -%}{%- endif -%}\n {{ add_header(0, 1, doc, letter_head, no_letterhead) }}\n\n {%- for label, value in (\n (_(\"Credit To\"), doc.pay_to_recd_from),\n (_(\"Date\"), frappe.utils.formatdate(doc.voucher_date)),\n (_(\"Amount\"), \"\" + doc.total_amount + \"
\" + (doc.total_amount_in_words or \"\") + \"
\"),\n (_(\"Remarks\"), doc.remark)\n ) -%}\n\n
\n
\n
{{ value }}
\n
\n\n {%- endfor -%}\n\n
\n
\n

\n {{ _(\"For\") }} {{ doc.company }},
\n
\n
\n
\n {{ _(\"Authorized Signatory\") }}\n

\n
\n\n\n", + "html": "{%- from \"templates/print_formats/standard_macros.html\" import add_header -%}\n\n
\n {%- if not doc.get(\"print_heading\") and not doc.get(\"select_print_heading\") \n and doc.set(\"select_print_heading\", _(\"Credit Note\")) -%}{%- endif -%}\n {{ add_header(0, 1, doc, letter_head, no_letterhead) }}\n\n {%- for label, value in (\n (_(\"Credit To\"), doc.pay_to_recd_from),\n (_(\"Date\"), frappe.utils.formatdate(doc.voucher_date)),\n (_(\"Amount\"), \"\" + frappe.utils.cstr(doc.total_amount) + \"
\" + (doc.total_amount_in_words or \"\") + \"
\"),\n (_(\"Remarks\"), doc.remark)\n ) -%}\n\n
\n
\n
{{ value }}
\n
\n\n {%- endfor -%}\n\n
\n
\n

\n {{ _(\"For\") }} {{ doc.company }},
\n
\n
\n
\n {{ _(\"Authorized Signatory\") }}\n

\n
\n\n\n", "idx": 2, - "modified": "2014-08-29 13:20:15.789533", + "modified": "2014-10-17 17:20:02.740340", "modified_by": "Administrator", "module": "Accounts", "name": "Credit Note", From 73804580d47ccdebbccec3b6513a0b02adc8be23 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 20 Oct 2014 11:17:24 +0530 Subject: [PATCH 54/56] validate quotation to lead or customer --- erpnext/selling/doctype/quotation/quotation.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py index ab6e4baec8..f12f396abd 100644 --- a/erpnext/selling/doctype/quotation/quotation.py +++ b/erpnext/selling/doctype/quotation/quotation.py @@ -23,7 +23,7 @@ class Quotation(SellingController): self.validate_order_type() self.validate_for_items() self.validate_uom_is_integer("stock_uom", "qty") - self.quotation_to = "Customer" if self.customer else "Lead" + self.validate_quotation_to() def has_sales_order(self): return frappe.db.get_value("Sales Order Item", {"prevdoc_docname": self.name, "docstatus": 1}) @@ -54,6 +54,13 @@ class Quotation(SellingController): if is_sales_item == 'No': frappe.throw(_("Item {0} must be Sales Item").format(d.item_code)) + def validate_quotation_to(self): + if self.customer: + self.quotation_to = "Customer" + self.lead = None + elif self.lead: + self.quotation_to = "Lead" + def update_opportunity(self): for opportunity in list(set([d.prevdoc_docname for d in self.get("quotation_details")])): if opportunity: @@ -139,8 +146,8 @@ def _make_sales_order(source_name, target_doc=None, ignore_permissions=False): return doclist def _make_customer(source_name, ignore_permissions=False): - quotation = frappe.db.get_value("Quotation", source_name, ["lead", "order_type"]) - if quotation and quotation[0]: + quotation = frappe.db.get_value("Quotation", source_name, ["lead", "order_type", "customer"]) + if quotation and quotation[0] and not quotation[2]: lead_name = quotation[0] customer_name = frappe.db.get_value("Customer", {"lead_name": lead_name}, ["name", "customer_name"], as_dict=True) From 45d03af8f6a8d3b20ee5b414bd4bbd0b31b6911b Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 20 Oct 2014 17:11:06 +0530 Subject: [PATCH 55/56] [translations] update --- erpnext/translations/ar.csv | 18 +- erpnext/translations/de.csv | 62 +++---- erpnext/translations/id.csv | 6 +- erpnext/translations/ja.csv | 354 ++++++++++++++++++------------------ erpnext/translations/ru.csv | 285 +++++++++++++++-------------- erpnext/translations/tr.csv | 152 ++++++++-------- 6 files changed, 443 insertions(+), 434 deletions(-) diff --git a/erpnext/translations/ar.csv b/erpnext/translations/ar.csv index c031928b66..4e587dbc94 100644 --- a/erpnext/translations/ar.csv +++ b/erpnext/translations/ar.csv @@ -41,7 +41,7 @@ A Supplier exists with same name,وهناك مورد موجود مع نفس ال A symbol for this currency. For e.g. $,رمزا لهذه العملة. على سبيل المثال ل$ AMC Expiry Date,AMC تاريخ انتهاء الاشتراك Abbr,ابر -Abbreviation cannot have more than 5 characters,اختصار لا يمكن أن يكون أكثر من 5 أحرف +Abbreviation cannot have more than 5 characters,الاختصار لا يمكن أن يكون أكثر من 5 أحرف Above Value,فوق القيمة Absent,غائب Acceptance Criteria,معايير القبول @@ -69,7 +69,7 @@ Account {0} cannot be a Group,حساب {0} لا يمكن أن يكون مجمو Account {0} does not belong to Company {1},حساب {0} لا ينتمي إلى شركة {1} Account {0} does not belong to company: {1},حساب {0} لا تنتمي إلى الشركة: {1} Account {0} does not exist,حساب {0} غير موجود -Account {0} has been entered more than once for fiscal year {1},حساب {0} تم إدخال أكثر من مرة للعام المالي {1} +Account {0} has been entered more than once for fiscal year {1},تم إدخال حساب {0} أكثر من مرة للعام المالي {1} Account {0} is frozen,حساب {0} مجمد Account {0} is inactive,حساب {0} غير نشط Account {0} is not valid,حساب {0} غير صالح @@ -86,7 +86,7 @@ Accounting,المحاسبة Accounting journal entries.,المحاسبة إدخالات دفتر اليومية. Accounts,حسابات Accounts Browser,متصفح الحسابات -Accounts Frozen Upto,حسابات مجمدة لغاية +Accounts Frozen Upto,حسابات مجمدة حتي Accounts Payable,ذمم دائنة Accounts Receivable,حسابات القبض Accounts Settings,إعدادات الحسابات @@ -94,7 +94,7 @@ Active,نشط Active: Will extract emails from ,نشط: سيتم استخراج رسائل البريد الإلكتروني من Activity,نشاط Activity Log,سجل النشاط -Activity Log:,النشاط المفتاح: +Activity Log:,:سجل النشاط Activity Type,نوع النشاط Actual,فعلي Actual Budget,الميزانية الفعلية @@ -410,16 +410,16 @@ Buying Settings,إعدادات الشراء "Buying must be checked, if Applicable For is selected as {0}",يجب أن يتم التحقق الشراء، إذا تم تحديد مطبق للك {0} C-Form,نموذج C- C-Form Applicable,C-نموذج قابل للتطبيق -C-Form Invoice Detail,C-نموذج تفاصيل الفاتورة -C-Form No,C-الاستمارة رقم -C-Form records,سجلات نموذج C- +C-Form Invoice Detail, تفاصيل الفاتورة نموذج - س +C-Form No,رقم النموذج - س +C-Form records,سجلات النموذج - س CENVAT Capital Goods,CENVAT السلع الرأسمالية CENVAT Edu Cess,CENVAT ايدو سيس CENVAT SHE Cess,CENVAT SHE سيس CENVAT Service Tax,CENVAT ضريبة الخدمة CENVAT Service Tax Cess 1,خدمة CENVAT ضريبة سيس 1 CENVAT Service Tax Cess 2,خدمة CENVAT ضريبة سيس 2 -Calculate Based On,حساب الربح بناء على +Calculate Based On,إحسب الربح بناء على Calculate Total Score,حساب النتيجة الإجمالية Calendar Events,الأحداث Call,دعوة @@ -538,7 +538,7 @@ Commission on Sales,عمولة على المبيعات Commission rate cannot be greater than 100,معدل العمولة لا يمكن أن يكون أكبر من 100 Communication,اتصالات Communication HTML,الاتصالات HTML -Communication History,الاتصال التاريخ +Communication History,تاريخ الاتصال Communication log.,سجل الاتصالات. Communications,الاتصالات Company,شركة diff --git a/erpnext/translations/de.csv b/erpnext/translations/de.csv index 276649f46a..a1c0a5688e 100644 --- a/erpnext/translations/de.csv +++ b/erpnext/translations/de.csv @@ -40,14 +40,14 @@ "Add / Edit"," Hinzufügen / Bearbeiten " "Add / Edit"," Hinzufügen / Bearbeiten " "

Default Template

Uses Jinja Templating and all the fields of Address (including Custom Fields if any) will be available

{{ address_line1 }}<br>{% if address_line2 %}{{ address_line2 }}<br>{% endif -%}{{ city }}<br>{% if state %}{{ state }}<br>{% endif -%}{% if pincode %} PIN:  {{ pincode }}<br>{% endif -%}{{ country }}<br>{% if phone %}Phone: {{ phone }}<br>{% endif -%}{% if fax %}Fax: {{ fax }}<br>{% endif -%}{% if email_id %}Email: {{ email_id }}<br>{% endif -%}
", -A Customer Group exists with same name please change the Customer name or rename the Customer Group,Eine Kundengruppe mit dem gleichen Namen existiert bereits. Ändern Sie den Kundennamen oder nennen Sie die Kundengruppe um +A Customer Group exists with same name please change the Customer name or rename the Customer Group,Eine Kundengruppe mit dem gleichen Namen existiert bereits. Ändern Sie den Kundennamen oder benennen Sie die Kundengruppe um A Customer exists with same name,Ein Kunde mit dem gleichen Namen existiert bereits -A Lead with this email id should exist,Ein Lead mit dieser E-Mail Adresse sollte vorhanden sein -A Product or Service,Ein Produkt oder Dienstleistung -"A Product or a Service that is bought, sold or kept in stock.","Ein Produkt oder eine Dienstleistung, die gekauft, verkauft oder auf Lager gehalten wird." +A Lead with this email id should exist,Ein Leiter mit dieser E-Mail-Adresse sollte vorhanden sein +A Product or Service,Produkt oder Dienstleistung +"A Product or a Service that is bought, sold or kept in stock.","Produkt oder Dienstleistung, die gekauft, verkauft oder auf Lager gehalten wird." A Supplier exists with same name,Ein Lieferant mit dem gleichen Namen existiert bereits -A condition for a Shipping Rule,Eine Bedingung für eine Versandregel -A logical Warehouse against which stock entries are made.,"Eine logisches Warenlager, für das Bestandseinträge gemacht werden." +A condition for a Shipping Rule,Bedingung für eine Versandregel +A logical Warehouse against which stock entries are made.,Eine logisches Warenlager für das Bestandseinträge gemacht werden. A symbol for this currency. For e.g. $,"Ein Symbol für diese Währung, z.B. €" A third party distributor / dealer / commission agent / affiliate / reseller who sells the companies products for a commission.,"Ein dritter Vertriebspartner/Händler/Kommissionär/Tochterunternehmer/ Fachhändler, der die Produkte es Unternehmens auf Provision vertreibt." "A user with ""Expense Approver"" role", @@ -65,13 +65,13 @@ Account,Konto Account Balance,Kontostand Account Created: {0},Konto {0} erstellt Account Details,Kontendaten -Account Head,Konto Kopf -Account Name,Konto Name -Account Type,Konto Typ +Account Head,Kontoführer +Account Name,Kontoname +Account Type,Kontotyp "Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'","Kontostand bereits im Kredit, Sie dürfen nicht eingestellt ""Balance Must Be"" als ""Debit""" "Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'","Kontostand bereits in Lastschrift, sind Sie nicht berechtigt, festgelegt als ""Kredit"" ""Balance Must Be '" Account for the warehouse (Perpetual Inventory) will be created under this Account.,Konto für das Lager (Laufende Inventur) wird unter diesem Konto erstellt. -Account head {0} created,Konto Kopf {0} erstellt +Account head {0} created,Kontoführer {0} erstellt Account must be a balance sheet account,Konto muss ein Bilanzkonto sein Account with child nodes cannot be converted to ledger,Ein Konto mit Kind-Knoten kann nicht in ein Kontoblatt umgewandelt werden Account with existing transaction can not be converted to group.,Ein Konto mit bestehenden Transaktion kann nicht in eine Gruppe umgewandelt werden @@ -79,11 +79,11 @@ Account with existing transaction can not be deleted,Ein Konto mit bestehenden T Account with existing transaction cannot be converted to ledger,Ein Konto mit bestehenden Transaktion kann nicht in ein Kontoblatt umgewandelt werden Account {0} cannot be a Group,Konto {0} kann keine Gruppe sein Account {0} does not belong to Company {1},Konto {0} gehört nicht zum Unternehmen {1} -Account {0} does not belong to company: {1},Konto {0} gehört nicht zum Unternehmen {1} +Account {0} does not belong to company: {1},Konto {0} gehört nicht zum Unternehmen: {1} Account {0} does not exist,Konto {0} existiert nicht Account {0} does not exists, Account {0} has been entered more than once for fiscal year {1},Konto {0} wurde mehr als einmal für das Geschäftsjahr {1} eingegeben -Account {0} is frozen,Konto {0} ist eingefroren +Account {0} is frozen,Konto {0} ist gesperrt Account {0} is inactive,Konto {0} ist inaktiv Account {0} is not valid,Konto {0} ist nicht gültig Account {0} must be of type 'Fixed Asset' as Item {1} is an Asset Item,"Konto {0} muss vom Typ ""Aktivposten"" sein, weil der Artikel {1} ein Aktivposten ist" @@ -99,18 +99,18 @@ Accounting Entry for Stock, "Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.","Bis zu diesem Zeitpunkt eingefrorener Buchhaltungseintrag, niemand außer der unten genannten Position kann den Eintrag bearbeiten/ändern." Accounting journal entries.,Buchhaltungsjournaleinträge Accounts,Konten -Accounts Browser,Konten Browser -Accounts Frozen Upto,Eingefrorene Konten bis -Accounts Manager, +Accounts Browser,Kontenbrowser +Accounts Frozen Upto,Konten gesperrt bis +Accounts Manager,Kontenmanager Accounts Payable,Kreditoren Accounts Receivable,Forderungen -Accounts Settings,Kontoeinstellungen -Accounts User, +Accounts Settings,Konteneinstellungen +Accounts User,Kontenbenutzer Active,Aktiv Active: Will extract emails from ,Aktiv: Werden E-Mails extrahieren Activity,Aktivität Activity Log,Aktivitätsprotokoll -Activity Log:,Activity Log: +Activity Log:,Aktivitätsprotokoll: Activity Type,Aktivitätstyp Actual,Tatsächlich Actual Budget,Tatsächliches Budget @@ -127,7 +127,7 @@ Actual Quantity,Istmenge Actual Start Date,Tatsächliches Startdatum Add,Hinzufügen Add / Edit Taxes and Charges,Hinzufügen/Bearbeiten von Steuern und Abgaben -Add Child,Kind hinzufügen +Add Child,Untergeordnetes Element hinzufügen Add Serial No,In Seriennummer Add Taxes,Steuern hinzufügen Add or Deduct,Hinzuaddieren oder abziehen @@ -338,12 +338,12 @@ BOM {0} is not submitted or inactive BOM for Item {1},Stückliste {0} nicht vorg Backup Manager,Datensicherungsverwaltung Backup Right Now,Jetzt eine Datensicherung durchführen Backups will be uploaded to,Datensicherungen werden hochgeladen nach -Balance Qty,Bilanz Menge +Balance Qty,Bilanzmenge Balance Sheet,Bilanz Balance Value,Bilanzwert Balance for Account {0} must always be {1},Saldo für Konto {0} muss immer {1} sein Balance must be,Saldo muss sein -"Balances of Accounts of type ""Bank"" or ""Cash""","Guthaben von Konten vom Typ "" Bank"" oder "" Cash""" +"Balances of Accounts of type ""Bank"" or ""Cash""","Guthaben von Konten vom Typ ""Bank"" oder ""Cash""" Bank,Bank Bank / Cash Account,Bank / Geldkonto Bank A/C No.,Bankkonto-Nr. @@ -351,25 +351,25 @@ Bank Account,Bankkonto Bank Account No.,Bankkonto-Nr. Bank Accounts,Bankkonten Bank Clearance Summary,Zusammenfassung Bankgenehmigung -Bank Draft,Bank Draft +Bank Draft,Banktratte Bank Name,Name der Bank Bank Overdraft Account,Kontokorrentkredit Konto Bank Reconciliation,Kontenabstimmung Bank Reconciliation Detail,Kontenabstimmungsdetail Bank Reconciliation Statement,Kontenabstimmungsauszug -Bank Voucher,Bankgutschein +Bank Voucher,Bankbeleg Bank/Cash Balance,Bank-/Bargeldsaldo Banking,Bankwesen Barcode,Strichcode -Barcode {0} already used in Item {1},Barcode {0} bereits im Artikel verwendet {1} +Barcode {0} already used in Item {1},Barcode {0} bereits in Artikel {1} verwendet Based On,Beruht auf Basic,Grundlagen -Basic Info,Basis Informationen -Basic Information,Basis Informationen -Basic Rate,Basisrate -Basic Rate (Company Currency),Basisrate (Unternehmenswährung) +Basic Info,Grundinfo +Basic Information,Grundinformationen +Basic Rate,Grundrate +Basic Rate (Company Currency),Grundrate (Unternehmenswährung) Batch,Stapel -Batch (lot) of an Item.,Stapel (Charge) eines Artikels. +Batch (lot) of an Item.,Stapel (Partie) eines Artikels. Batch Finished Date,Enddatum des Stapels Batch ID,Stapel-ID Batch No,Stapelnr. @@ -381,7 +381,7 @@ Batched for Billing,Für Abrechnung gebündelt Better Prospects,Bessere zukünftige Kunden Bill Date,Rechnungsdatum Bill No,Rechnungsnr. -Bill of Material,Bill of Material +Bill of Material,Stückliste Bill of Material to be considered for manufacturing,"Stückliste, die für die Herstellung berücksichtigt werden soll" Bill of Materials (BOM),Stückliste (SL) Billable,Abrechenbar @@ -389,7 +389,7 @@ Billed,Abgerechnet Billed Amount,Rechnungsbetrag Billed Amt,Rechnungsbetrag Billing,Abrechnung -Billing (Sales Invoice), +Billing (Sales Invoice),Abrechung (Handelsrechnung) Billing Address,Rechnungsadresse Billing Address Name,Name der Rechnungsadresse Billing Status,Abrechnungsstatus diff --git a/erpnext/translations/id.csv b/erpnext/translations/id.csv index 7cb67def06..dfd93cfdb7 100644 --- a/erpnext/translations/id.csv +++ b/erpnext/translations/id.csv @@ -37,9 +37,9 @@ A Customer Group exists with same name please change the Customer name or rename the Customer Group,"Sebuah Kelompok Pelanggan ada dengan nama yang sama, silakan mengubah nama Nasabah atau mengubah nama Grup Pelanggan" A Customer exists with same name,Nasabah ada dengan nama yang sama A Lead with this email id should exist,Sebuah Lead dengan id email ini harus ada -A Product or Service,Sebuah Produk atau Jasa -A Supplier exists with same name,Sebuah Pemasok ada dengan nama yang sama -A symbol for this currency. For e.g. $,Sebuah simbol untuk mata uang ini. Untuk misalnya $ +A Product or Service,Produk atau Jasa +A Supplier exists with same name,Pemasok dengan nama yang sama sudah terdaftar +A symbol for this currency. For e.g. $,Simbol untuk mata uang ini. Contoh $ AMC Expiry Date,AMC Tanggal Berakhir Abbr,Abbr Abbreviation cannot have more than 5 characters,Singkatan tak bisa memiliki lebih dari 5 karakter diff --git a/erpnext/translations/ja.csv b/erpnext/translations/ja.csv index 4b2a0157df..c779aa6fdc 100644 --- a/erpnext/translations/ja.csv +++ b/erpnext/translations/ja.csv @@ -44,7 +44,7 @@ AMC Expiry Date,AMCの有効期限日 Abbr,略称 Abbreviation cannot have more than 5 characters,略語は、5つ以上の文字を使用することはできません Above Value,値を上回る -Absent,いんない +Absent,ない Acceptance Criteria,合否基準 Accepted,承認済 Accepted + Rejected Qty must be equal to Received quantity for Item {0},一般に認められた+拒否数量、アイテムの受信量と等しくなければなりません{0} @@ -302,7 +302,7 @@ BOM Detail No,部品表の詳細はありません BOM Explosion Item,BOM爆発アイテム BOM Item,BOM明細 BOM No,部品表はありません -BOM No. for a Finished Good Item,完成品アイテムのBOM番号 +BOM No. for a Finished Good Item,完成品アイテムの部品表番号 BOM Operation,部品表の操作 BOM Operations,部品表の操作 BOM Replace Tool,BOMはツールを交換してください @@ -912,27 +912,28 @@ Emergency Contact Details,緊急連絡先の詳細 Emergency Phone,緊急電話 Employee,正社員 Employee Birthday,従業員の誕生日 -Employee Details,社員詳細 -Employee Education,社員教育 +Employee Details,従業員詳細 +Employee Education,従業員教育 Employee External Work History,従業外部仕事の歴史 -Employee Information,社員情報 +Employee Information,従業員情報 Employee Internal Work History,従業員内部作業歴史 Employee Internal Work Historys,従業員内部作業Historys Employee Leave Approver,従業員休暇承認者 Employee Leave Balance,従業員の脱退バランス -Employee Name,社員名 -Employee Number,社員番号 -Employee Records to be created by,によって作成される従業員レコード +Employee Name,従業員名 +Employee Number,従業員番号 +Employee Records to be created by,従業員レコードは次式で作成される Employee Settings,従業員の設定 -Employee Type,社員タイプ +Employee Type,従業員タイプ "Employee designation (e.g. CEO, Director etc.).",従業員の名称(例:最高経営責任者(CEO)、取締役など)。 Employee master.,従業員マスタ。 -Employee record is created using selected field. , +Employee record is created using selected field. ,従業員レコードは選択されたフィールドを使用して作成されます。 Employee records.,従業員レコード。 -Employee relieved on {0} must be set as 'Left',{0}にホッと従業員が「左」として設定する必要があります -Employee {0} has already applied for {1} between {2} and {3},従業員は{0}はすでに{1} {2}と{3}の間を申請している -Employee {0} is not active or does not exist,従業員{0}アクティブでないか、存在しません -Employee {0} was on leave on {1}. Cannot mark attendance.,従業員は{0} {1}に休職していた。出席をマークすることはできません。 +Employee relieved on {0} must be set as 'Left',{0}の上で取り除かれた従業員は、「左」としてセットされなければなりません +Employee {0} has already applied for {1} between {2} and {3},"従業員{0}は{2} と{3}の間の{1}を既に申請しました。 +" +Employee {0} is not active or does not exist,従業員{0}活発でないか、存在しません +Employee {0} was on leave on {1}. Cannot mark attendance.,従業員は{0} {1}に休暇中でした。出席をマークすることはできません。 Employees Email Id,従業員の電子メールID Employment Details,雇用の詳細 Employment Type,雇用の種類 @@ -947,8 +948,9 @@ Energy,エネルギー Engineer,エンジニア Enter Verification Code,確認コードを入力してください Enter campaign name if the source of lead is campaign.,鉛の発生源は、キャンペーンの場合はキャンペーン名を入力してください。 -Enter department to which this Contact belongs,この連絡が所属する部署を入力してください -Enter designation of this Contact,この連絡の指定を入力してください +Enter department to which this Contact belongs,この連絡先が属する部署を入力してください。 +Enter designation of this Contact,"この連絡先の指定を入力してください。 +" "Enter email id separated by commas, invoice will be mailed automatically on particular date",カンマで区切られた電子メールIDを入力して、請求書が特定の日に自動的に郵送されます Enter items and planned qty for which you want to raise production orders or download raw materials for analysis.,あなたが製造指図を上げたり、分析のための原材料をダウンロードするための項目と計画された数量を入力してください。 Enter name of campaign if source of enquiry is campaign,問い合わせ元は、キャンペーンの場合はキャンペーンの名前を入力してください @@ -1129,9 +1131,9 @@ Generate Salary Slips,給与スリップを発生させる Generate Schedule,スケジュールを生成 Generates HTML to include selected image in the description,説明で選択した画像が含まれるようにHTMLを生成 Get Advances Paid,進歩は報酬を得る -Get Advances Received,進歩は受信ゲット -Get Current Stock,現在の株式を取得 -Get Items,アイテムを取得 +Get Advances Received,前受金を取得する +Get Current Stock,在庫状況を取得する +Get Items,項目を取得 Get Items From Sales Orders,販売注文から項目を取得 Get Items from BOM,部品表から項目を取得 Get Last Purchase Rate,最後の購入料金を得る @@ -1156,17 +1158,17 @@ Goods received from Suppliers.,商品はサプライヤーから受け取った Google Drive,Googleのドライブ Google Drive Access Allowed,グーグルドライブアクセス可 Government,政府 -Graduate,大学院 +Graduate,大学卒業生 Grand Total,総額 Grand Total (Company Currency),総合計(会社通貨) "Grid ""","グリッド """ Grocery,食料品 -Gross Margin %,粗利益% +Gross Margin %,総利益% Gross Margin Value,グロスマージン値 Gross Pay,給与総額 Gross Pay + Arrear Amount +Encashment Amount - Total Deduction,給与総額+滞納額+現金化金額 - 合計控除 -Gross Profit,売上総利益 -Gross Profit (%),売上総利益(%) +Gross Profit,粗利益 +Gross Profit (%),粗利益(%) Gross Weight,総重量 Gross Weight UOM,総重量UOM Group,コミュニティ @@ -1213,7 +1215,7 @@ Hour Rate Labour,時間レート労働 Hours,時間 How Pricing Rule is applied?,どのように価格設定ルールが適用されている? How frequently?,どのくらいの頻度? -"How should this currency be formatted? If not set, will use system defaults",どのようにこの通貨は、フォーマットする必要があります?設定されていない場合は、システムデフォルトを使用します +"How should this currency be formatted? If not set, will use system defaults",どのようにこの通貨は、フォーマットする必要がありますか?設定されていない場合は、システムデフォルトを使用します Human Resources,人事 Identification of the package for the delivery (for print),(印刷用)の配信用のパッケージの同定 If Income or Expense,もし収益又は費用 @@ -1450,17 +1452,17 @@ Items which do not exist in Item master can also be entered on customer's reques Itemwise Discount,Itemwise割引 Itemwise Recommended Reorder Level,Itemwiseは再注文レベルを推奨 Job Applicant,求職者 -Job Opening,就職口 -Job Profile,仕事のプロフィール +Job Opening,求人 +Job Profile,職務内容 Job Title,職業名 -"Job profile, qualifications required etc.",必要なジョブプロファイル、資格など -Jobs Email Settings,ジョブズのメール設定 +"Job profile, qualifications required etc.",必要な業務内容、資格など +Jobs Email Settings,仕事のメール設定 Journal Entries,仕訳 Journal Entry,仕訳 -Journal Voucher,ジャーナルバウチャー -Journal Voucher Detail,ジャーナルバウチャー詳細 -Journal Voucher Detail No,ジャーナルクーポンの詳細はありません -Journal Voucher {0} does not have account {1} or already matched,ジャーナルバウチャーは{0}アカウントを持っていない{1}、またはすでに一致 +Journal Voucher,伝票 +Journal Voucher Detail,伝票の詳細 +Journal Voucher Detail No,伝票の詳細番号 +Journal Voucher {0} does not have account {1} or already matched,伝票は{0}アカウントを持っていない{1}、またはすでに一致 Journal Vouchers {0} are un-linked,ジャーナルバウチャー{0}アンリンクされている Keep a track of communication related to this enquiry which will help for future reference.,今後の参考のために役立つ、この問い合わせに関連する通信を追跡する。 Keep it web friendly 900px (w) by 100px (h),100pxにすることで、Webに優しい900px(W)それを維持する(H) @@ -1523,12 +1525,12 @@ Leave of type {0} cannot be longer than {1},タイプの休暇は、{0}よりも Leaves Allocated Successfully for {0},{0}のために正常に割り当てられた葉 Leaves for type {0} already allocated for Employee {1} for Fiscal Year {0},葉タイプの{0}はすでに従業員のために割り当てられた{1}年度の{0} Leaves must be allocated in multiples of 0.5,葉は0.5の倍数で割り当てられなければならない -Ledger,元帳 -Ledgers,元帳 +Ledger,元帳/取引記録 +Ledgers,元帳/取引記録 Left,左 Legal,免責事項 Legal Expenses,訴訟費用 -Letter Head,レターヘッド +Letter Head,レターヘッド(会社名•所在地などを便箋上部に印刷したもの) Letter Heads for print templates.,印刷テンプレートの手紙ヘッド。 Level,レベル Lft,LFT @@ -1907,14 +1909,15 @@ PR Detail,PRの詳細 Package Item Details,パッケージアイテムの詳細 Package Items,パッケージアイテム Package Weight Details,パッケージの重量の詳細 -Packed Item,ランチアイテム -Packed quantity must equal quantity for Item {0} in row {1},{0}行{1}ランチ量はアイテムの量と等しくなければなりません +Packed Item,梱包されたアイテム +Packed quantity must equal quantity for Item {0} in row {1},"梱包された量は、列{1}の中のアイテム{0}のための量と等しくなければなりません。 +" Packing Details,梱包の詳細 Packing List,パッキングリスト -Packing Slip,送付状 +Packing Slip,梱包伝票 Packing Slip Item,梱包伝票項目 Packing Slip Items,梱包伝票項目 -Packing Slip(s) cancelled,パッキングスリップ(S)をキャンセル +Packing Slip(s) cancelled,梱包伝票(S)をキャンセル Page Break,改ページ Page Name,ページ名 Paid Amount,支払金額 @@ -1925,7 +1928,7 @@ Parent Account,親勘定 Parent Cost Center,親コストセンター Parent Customer Group,親カスタマー·グループ Parent Detail docname,親ディテールDOCNAME -Parent Item,親アイテム +Parent Item,親項目 Parent Item Group,親項目グループ Parent Item {0} must be not Stock Item and must be a Sales Item,親項目{0}取り寄せ商品であってはならないこと及び販売項目でなければなりません Parent Party Type,親パーティーの種類 @@ -1935,7 +1938,7 @@ Parent Website Page,親ウェブサイトのページ Parent Website Route,親サイトルート Parenttype,Parenttype Part-time,パートタイム -Partially Completed,部分的に完了 +Partially Completed,部分的に完成 Partly Billed,部分的に銘打た Partly Delivered,部分的に配信 Partner Target Detail,パートナーターゲットの詳細 @@ -2249,13 +2252,13 @@ Purchase Taxes and Charges Master,購入の税金、料金マスター Purchse Order number required for Item {0},アイテム{0}に必要なPurchse注文番号 Purpose,目的 Purpose must be one of {0},目的は、{0}のいずれかである必要があります -QA Inspection,QA検査 +QA Inspection,品質保証検査 Qty,数量 -Qty Consumed Per Unit,購入単位あたりに消費 -Qty To Manufacture,製造するの数量 +Qty Consumed Per Unit,数量は単位当たりで消費されました。 +Qty To Manufacture,製造する数量 Qty as per Stock UOM,証券UOMに従って数量 Qty to Deliver,お届けする数量 -Qty to Order,数量は受注 +Qty to Order,注文する数量 Qty to Receive,受信する数量 Qty to Transfer,転送する数量 Qualification,資格 @@ -2267,28 +2270,28 @@ Quality Inspection Readings,品質検査読み Quality Inspection required for Item {0},アイテム{0}に必要な品質検査 Quality Management,品質管理 Quantity,数量 -Quantity Requested for Purchase,購入のために発注 +Quantity Requested for Purchase,数量購入のために発注 Quantity and Rate,数量とレート -Quantity and Warehouse,数量や倉庫 +Quantity and Warehouse,数量と倉庫 Quantity cannot be a fraction in row {0},数量行の割合にすることはできません{0} Quantity for Item {0} must be less than {1},数量のため{0}より小さくなければなりません{1} Quantity in row {0} ({1}) must be same as manufactured quantity {2},行の数量{0}({1})で製造量{2}と同じでなければなりません Quantity of item obtained after manufacturing / repacking from given quantities of raw materials,原材料の与えられた量から再梱包/製造後に得られたアイテムの数量 Quantity required for Item {0} in row {1},行のアイテム{0}のために必要な量{1} -Quarter,四半期 +Quarter,4分の1 Quarterly,4半期ごと -Quick Help,簡潔なヘルプ -Quotation,見積 -Quotation Item,見積明細 +Quick Help,迅速なヘルプ +Quotation,引用 +Quotation Item,引用アイテム Quotation Items,引用アイテム Quotation Lost Reason,引用ロスト理由 Quotation Message,引用メッセージ Quotation To,引用へ Quotation Trends,引用動向 Quotation {0} is cancelled,引用{0}キャンセルされる -Quotation {0} not of type {1},{0}ではないタイプの引用符{1} +Quotation {0} not of type {1},タイプ{1}のではない引用{0} Quotations received from Suppliers.,引用文は、サプライヤーから受け取った。 -Quotes to Leads or Customers.,リードや顧客に引用している。 +Quotes to Leads or Customers.,鉛板や顧客への引用。 Raise Material Request when stock reaches re-order level,在庫が再注文レベルに達したときに素材要求を上げる Raised By,が提起した Raised By (Email),(電子メール)が提起した @@ -2703,7 +2706,7 @@ Signature to be appended at the end of every email,署名はすべての電子 Single,シングル Single unit of an Item.,アイテムの単一のユニット。 Sit tight while your system is being setup. This may take a few moments.,システムがセットアップされている間、じっと。これはしばらく時間がかかる場合があります。 -Slideshow,スライドショー +Slideshow,スライドショー(一連の画像を順次表示するもの) Soap & Detergent,石鹸&洗剤 Software,ソフトウェア Software Developer,ソフトウェア開発者 @@ -3064,39 +3067,39 @@ Type of document to rename.,名前を変更するドキュメントのタイプ Types of Expense Claim.,経費請求の種類。 Types of activities for Time Sheets,タイムシートのための活動の種類 "Types of employment (permanent, contract, intern etc.).",雇用の種類(永続的、契約、インターンなど)。 -UOM Conversion Detail,UOMコンバージョンの詳細 -UOM Conversion Details,UOMコンバージョンの詳細 -UOM Conversion Factor,UOM換算係数 +UOM Conversion Detail,UOMコンバージョンの詳細(測定/計量単位変換の詳細) +UOM Conversion Details,UOMコンバージョンの詳細(測定/計量単位変更の詳細) +UOM Conversion Factor,UOM換算係数(測定/計量単位の換算係数) UOM Conversion factor is required in row {0},UOM換算係数は、行に必要とされる{0} -UOM Name,UOM名前 -UOM coversion factor required for UOM: {0} in Item: {1},UOMに必要なUOM coversion率:アイテム{0}:{1} -Under AMC,AMCの下で -Under Graduate,大学院の下で +UOM Name,UOM(測定/計量単位)の名前 +UOM coversion factor required for UOM: {0} in Item: {1},UOM{0}の項目{1}に測定/計量単位の換算係数が必要です。 +Under AMC,AMC(経営コンサルタント協会)の下で +Under Graduate,在学中の大学生 Under Warranty,保証期間中 -Unit,ユニット -Unit of Measure,数量単位 -Unit of Measure {0} has been entered more than once in Conversion Factor Table,測定単位は、{0}は複数の変換係数表で複数回に入ってきた -"Unit of measurement of this item (e.g. Kg, Unit, No, Pair).",このアイテムの測定単位(例えばキロ、ユニット、いや、ペア)。 +Unit,ユニット/単位 +Unit of Measure,計量/測定単位 +Unit of Measure {0} has been entered more than once in Conversion Factor Table,測定単位{0}が変換係数表に複数回記入されました。 +"Unit of measurement of this item (e.g. Kg, Unit, No, Pair).",(キログラク(質量)、ユニット(個)、数、組)の測定単位。 Units/Hour,単位/時間 -Units/Shifts,単位/シフト +Units/Shifts,単位/シフト(交替制) Unpaid,未払い Unreconciled Payment Details,未照合支払いの詳細 -Unscheduled,予定外の +Unscheduled,予定外の/臨時の Unsecured Loans,無担保ローン -Unstop,栓を抜く -Unstop Material Request,栓を抜く素材リクエスト -Unstop Purchase Order,栓を抜く発注 +Unstop,継続 +Unstop Material Request,資材請求の継続 +Unstop Purchase Order,発注の継続 Unsubscribed,購読解除 Update,更新 -Update Clearance Date,アップデートクリアランス日 -Update Cost,更新費用 -Update Finished Goods,完成品を更新 -Update Landed Cost,更新はコストを上陸させた -Update Series,アップデートシリーズ -Update Series Number,アップデートシリーズ番号 -Update Stock,株式を更新 -Update bank payment dates with journals.,雑誌で銀行の支払日を更新します。 -Update clearance date of Journal Entries marked as 'Bank Vouchers',「銀行券」としてマークされて仕訳の逃げ日を更新 +Update Clearance Date,クリアランス日(清算日)の更新。 +Update Cost,費用の更新 +Update Finished Goods,完成品の更新 +Update Landed Cost,陸上げ原価の更新 +Update Series,シリーズの更新 +Update Series Number,シリーズ番号の更新 +Update Stock,在庫の更新 +Update bank payment dates with journals.,銀行支払日と履歴を更新して下さい。 +Update clearance date of Journal Entries marked as 'Bank Vouchers',履歴欄を「銀行決済」と明記してクリアランス日(清算日)を更新して下さい。 Updated,更新日 Updated Birthday Reminders,更新された誕生日リマインダー Upload Attendance,出席をアップロードする @@ -3112,7 +3115,7 @@ Urgent,緊急 Use Multi-Level BOM,マルチレベルのBOMを使用 Use SSL,SSLを使用する Used for Production Plan,生産計画のために使用 -User,ユーザー +User,ユーザー(使用者) User ID,ユーザ ID User ID not set for Employee {0},ユーザーID従業員に設定されていない{0} User Name,ユーザ名 @@ -3129,67 +3132,69 @@ Users with this role are allowed to create / modify accounting entry before froz Users with this role are allowed to set frozen accounts and create / modify accounting entries against frozen accounts,このロールを持つユーザーは、凍結されたアカウントを設定し、作成/冷凍アカウントに対するアカウンティングエントリを修正することが許される Utilities,便利なオプション Utility Expenses,光熱費 -Valid For Territories,領土に対して有効 +Valid For Territories,有効な範囲 Valid From,から有効 -Valid Upto,有効な点で最大 +Valid Upto,まで有効 Valid for Territories,準州の有効な Validate,検証 Valuation,評価 Valuation Method,評価方法 -Valuation Rate,評価レート -Valuation Rate required for Item {0},アイテム{0}に必要な評価レート +Valuation Rate,評価率 +Valuation Rate required for Item {0},アイテム{0}に評価率が必要です。 Valuation and Total,評価と総合 Value,値 Value or Qty,値または数量 -Vehicle Dispatch Date,配車日 -Vehicle No,車両はありません -Venture Capital,ベンチャーキャピタル -Verified By,審査 -View Ledger,ビュー元帳 -View Now,今すぐ見る -Visit report for maintenance call.,メンテナンスコールのレポートをご覧ください。 -Voucher #,バウチャー# -Voucher Detail No,バウチャーの詳細はありません -Voucher Detail Number,バウチャーディテール数 -Voucher ID,バウチャー番号 -Voucher No,バウチャーはありません -Voucher Type,バウチャータイプ -Voucher Type and Date,バウチャーの種類と日付 +Vehicle Dispatch Date,車の発送日 +Vehicle No,車両番号 +Venture Capital,ベンチャーキャピタル(投資会社) +Verified By,によって証明/確認された。 +View Ledger,"元帳の表示 +" +View Now,"表示 +" +Visit report for maintenance call.,整備の電話はレポートにアクセスして下さい。 +Voucher #,領収書番号 +Voucher Detail No,領収書の詳細番号 +Voucher Detail Number,領収書の詳細番号 +Voucher ID,領収書のID(証明書) +Voucher No,領収書番号 +Voucher Type,領収書の種類 +Voucher Type and Date,領収書の種類と日付 Walk In,中に入る Warehouse,倉庫 -Warehouse Contact Info,倉庫に連絡しなさい +Warehouse Contact Info,倉庫への連絡先 Warehouse Detail,倉庫の詳細 Warehouse Name,倉庫名 -Warehouse and Reference,倉庫およびリファレンス -Warehouse can not be deleted as stock ledger entry exists for this warehouse.,株式元帳エントリはこの倉庫のために存在する倉庫を削除することはできません。 -Warehouse can only be changed via Stock Entry / Delivery Note / Purchase Receipt,倉庫には在庫のみエントリー/納品書/購入時の領収書を介して変更することができます -Warehouse cannot be changed for Serial No.,倉庫は、車台番号を変更することはできません -Warehouse is mandatory for stock Item {0} in row {1},倉庫在庫アイテムは必須です{0}行{1} -Warehouse is missing in Purchase Order,倉庫は、注文書にありません -Warehouse not found in the system,倉庫システムには見られない -Warehouse required for stock Item {0},ストックアイテム{0}に必要な倉庫 -Warehouse where you are maintaining stock of rejected items,あなたが拒否されたアイテムのストックを維持している倉庫 -Warehouse {0} can not be deleted as quantity exists for Item {1},量はアイテムのために存在する倉庫{0}を削除することはできません{1} -Warehouse {0} does not belong to company {1},倉庫には{0}に属していない会社{1} +Warehouse and Reference,倉庫と整理番号 +Warehouse can not be deleted as stock ledger entry exists for this warehouse.,倉庫に商品の在庫があるため在庫品元帳の入力を削除することはできません。 +Warehouse can only be changed via Stock Entry / Delivery Note / Purchase Receipt,倉庫のみが在庫記入/納品書/購入商品の領収書を介して変更することができます。 +Warehouse cannot be changed for Serial No.,倉庫は、製造番号を変更することはできません。 +Warehouse is mandatory for stock Item {0} in row {1},商品{0}を{1}列に品入れするのに倉庫名は必須です。 +Warehouse is missing in Purchase Order,注文書に倉庫名を記入して下さい。 +Warehouse not found in the system,システムに倉庫がありません。 +Warehouse required for stock Item {0},商品{0}を品入れするのに倉庫名が必要です。 +Warehouse where you are maintaining stock of rejected items,不良品の保管倉庫 +Warehouse {0} can not be deleted as quantity exists for Item {1},商品{1}は在庫があるため削除することはできません。 +Warehouse {0} does not belong to company {1},倉庫{0}は会社{1}に属していない。 Warehouse {0} does not exist,倉庫{0}は存在しません Warehouse {0}: Company is mandatory,倉庫{0}:当社は必須です -Warehouse {0}: Parent account {1} does not bolong to the company {2},倉庫{0}:親勘定は、{1}会社にボロングません{2} -Warehouse-Wise Stock Balance,倉庫·ワイズ証券残高 -Warehouse-wise Item Reorder,倉庫ワイズアイテムの並べ替え +Warehouse {0}: Parent account {1} does not bolong to the company {2},倉庫{0}:親会社{1}は会社{2}に属していない。 +Warehouse-Wise Stock Balance,倉庫ワイズ在庫残品 +Warehouse-wise Item Reorder,倉庫ワイズ商品の再注文 Warehouses,倉庫 Warehouses.,倉庫。 Warn,警告する -Warning: Leave application contains following block dates,警告:アプリケーションは以下のブロック日付が含まれたままに -Warning: Material Requested Qty is less than Minimum Order Qty,警告:数量要求された素材は、最小注文数量に満たない -Warning: Sales Order {0} already exists against same Purchase Order number,警告:受注{0}はすでに同じ発注番号に対して存在 -Warning: System will not check overbilling since amount for Item {0} in {1} is zero,警告:システムは、{0} {1}が0の内のアイテムの量が過大請求をチェックしません -Warranty / AMC Details,保証書/ AMCの詳細 -Warranty / AMC Status,保証/ AMCステータス +Warning: Leave application contains following block dates,警告:休暇願い届に受理出来ない日が含まれています。 +Warning: Material Requested Qty is less than Minimum Order Qty,警告:材料の注文数が注文最小数量を下回っています。 +Warning: Sales Order {0} already exists against same Purchase Order number,警告:同じ発注番号の販売注文{0}がすでに存在します。 +Warning: System will not check overbilling since amount for Item {0} in {1} is zero,警告:{1}の商品{0} が欠品のため、システムは過大請求を確認しません。 +Warranty / AMC Details,保証/ AMCの詳細(経営コンサルタント協会の詳細) +Warranty / AMC Status,保証/ AMC情報(経営コンサルタント協会の情報) Warranty Expiry Date,保証有効期限 Warranty Period (Days),保証期間(日数) -Warranty Period (in days),(日数)保証期間 -We buy this Item,我々は、この商品を購入 -We sell this Item,我々は、このアイテムを売る +Warranty Period (in days),保証期間(日数) +We buy this Item,我々は、この商品を購入する。 +We sell this Item,我々は、この商品を売る。 Website,ウェブサイト Website Description,ウェブサイトの説明 Website Item Group,ウェブサイトの項目グループ @@ -3198,81 +3203,82 @@ Website Settings,Webサイト設定 Website Warehouse,ウェブサイトの倉庫 Wednesday,水曜日 Weekly,毎週 -Weekly Off,毎週オフ -Weight UOM,重さUOM -"Weight is mentioned,\nPlease mention ""Weight UOM"" too","重量が記載され、\n ""重量UOM」をお伝えくださいすぎ" -Weightage,Weightage -Weightage (%),Weightage(%) +Weekly Off,毎週の休日 +Weight UOM,UOM重量(重量の測定単位) +"Weight is mentioned,\nPlease mention ""Weight UOM"" too",重量が記載済み。 ''UOM重量’’も記載して下さい。 +Weightage,高価値の/より重要性の高い方 +Weightage (%),高価値の値(%) Welcome,ようこそ -Welcome to ERPNext. Over the next few minutes we will help you setup your ERPNext account. Try and fill in as much information as you have even if it takes a bit longer. It will save you a lot of time later. Good Luck!,ERPNextへようこそ。次の数分間にわたって、私たちはあなたのセットアップあなたERPNextアカウントを助ける。試してみて、あなたはそれは少し時間がかかる場合でも、持っているできるだけ多くの情報を記入。それは後にあなたに多くの時間を節約します。グッドラック! -Welcome to ERPNext. Please select your language to begin the Setup Wizard.,ERPNextへようこそ。セットアップウィザードを開始するためにあなたの言語を選択してください。 -What does it do?,機能 -"When any of the checked transactions are ""Submitted"", an email pop-up automatically opened to send an email to the associated ""Contact"" in that transaction, with the transaction as an attachment. The user may or may not send the email.",チェックしたトランザクションのいずれかが「提出」された場合、電子メールポップアップが自動的に添付ファイルとしてトランザクションと、そのトランザクションに関連する「お問い合わせ」にメールを送信するためにオープンしました。ユーザーは、または電子メールを送信しない場合があります。 -"When submitted, the system creates difference entries to set the given stock and valuation on this date.",提出すると、システムは、この日に与えられた株式および評価を設定するために、差分のエントリが作成されます。 +Welcome to ERPNext. Over the next few minutes we will help you setup your ERPNext account. Try and fill in as much information as you have even if it takes a bit longer. It will save you a lot of time later. Good Luck!,ERPNextへようこそ。これから数分間にわたって、あなたのERPNextアカウント設定の手伝いをします。少し時間がかかっても構わないので、あなたの情報をできるだけ多くのを記入して下さい。それらの情報が後に多くの時間を節約します。グットラック!(頑張っていきましょう!) +Welcome to ERPNext. Please select your language to begin the Setup Wizard.,ERPNextへようこそ。ウィザード設定を開始するためにあなたの言語を選択してください。 +What does it do?,それは何をするのですか? +"When any of the checked transactions are ""Submitted"", an email pop-up automatically opened to send an email to the associated ""Contact"" in that transaction, with the transaction as an attachment. The user may or may not send the email.",資料/報告書を''提出’’すると、提出した資料/報告書に関連する人物宛のメールが添付ファイル付きで自動的に画面に表示されます。ユーザーはメールの送信または未送信を選ぶことが出来ます。 +"When submitted, the system creates difference entries to set the given stock and valuation on this date.",提出すると、システムが在庫品と評価を設定するための別の欄をその日に作ります。 Where items are stored.,項目が保存される場所。 Where manufacturing operations are carried out.,製造作業が行われる場所。 -Widowed,夫と死別した -Will be calculated automatically when you enter the details,[詳細]を入力すると自動的に計算されます -Will be updated after Sales Invoice is Submitted.,納品書が送信された後に更新されます。 -Will be updated when batched.,バッチ処理時に更新されます。 +Widowed,未亡人 +Will be calculated automatically when you enter the details,詳細を入力すると自動的に計算されます +Will be updated after Sales Invoice is Submitted.,売上請求書を提出すると更新されます。 +Will be updated when batched.,処理が一括されると更新されます。 Will be updated when billed.,請求時に更新されます。 Wire Transfer,電信送金 With Operations,操作で -With Period Closing Entry,期間決算仕訳で +With Period Closing Entry,最終登録期間で Work Details,作業内容 -Work Done,作業が完了 +Work Done,作業完了 Work In Progress,進行中の作業 Work-in-Progress Warehouse,作業中の倉庫 -Work-in-Progress Warehouse is required before Submit,作業中の倉庫を提出する前に必要です +Work-in-Progress Warehouse is required before Submit,作業中/提出する前に倉庫名が必要です。 Working,{0}{/0} {1}就労{/1} -Working Days,営業日 -Workstation,ワークステーション -Workstation Name,ワークステーション名 -Write Off Account,アカウントを償却 -Write Off Amount,額を償却 +Working Days,勤務日 +Workstation,ワークステーション(仕事場) +Workstation Name,ワークステーション名(仕事名) +Write Off Account,事業経費口座 +Write Off Amount,事業経費額 Write Off Amount <=,金額を償却<= Write Off Based On,ベースオンを償却 -Write Off Cost Center,コストセンターを償却 -Write Off Outstanding Amount,発行残高を償却 -Write Off Voucher,バウチャーを償却 -Wrong Template: Unable to find head row.,間違ったテンプレート:ヘッド列が見つかりません。 +Write Off Cost Center,原価の事業経費 +Write Off Outstanding Amount,事業経費未払金額 +Write Off Voucher,事業経費領収書 +Wrong Template: Unable to find head row.,間違ったテンプレートです。:見出し/最初の行が見つかりません。 Year,年 Year Closed,年間休館 -Year End Date,決算日 +Year End Date,"年間の最終日 +" Year Name,年間の名前 Year Start Date,年間の開始日 Year of Passing,渡すの年 Yearly,毎年 Yes,はい -You are not authorized to add or update entries before {0},あなたは前にエントリを追加または更新する権限がありません{0} +You are not authorized to add or update entries before {0},{0}の前に入力を更新または追加する権限がありません。 You are not authorized to set Frozen value,あなたは冷凍値を設定する権限がありません -You are the Expense Approver for this record. Please Update the 'Status' and Save,あなたは、このレコードの経費承認者である。「ステータス」を更新し、保存してください -You are the Leave Approver for this record. Please Update the 'Status' and Save,あなたは、このレコードに向けて出発承認者である。「ステータス」を更新し、保存してください -You can enter any date manually,手動で任意の日付を入力することができます -You can enter the minimum quantity of this item to be ordered.,あなたが注文するには、このアイテムの最小量を入力することができます。 -You can not change rate if BOM mentioned agianst any item,BOMが任意の項目agianst述べた場合は、レートを変更することはできません -You can not enter both Delivery Note No and Sales Invoice No. Please enter any one.,あなたは、両方の納品書を入力することはできませんし、納品書番号は、任意の1を入力してください。 -You can not enter current voucher in 'Against Journal Voucher' column,あなたは 'に対するジャーナルバウチャー」の欄に、現在の伝票を入力することはできません -You can set Default Bank Account in Company master,あなたは、会社のマスターにデフォルト銀行口座を設定することができます -You can start by selecting backup frequency and granting access for sync,あなたは、バックアップの頻度を選択し、同期のためのアクセス権を付与することから始めることができます +You are the Expense Approver for this record. Please Update the 'Status' and Save,あなたは、この記録の経費承認者です。情報を更新し、保存してください。 +You are the Leave Approver for this record. Please Update the 'Status' and Save,あなたは、この記録の休暇承認者です。情報を更新し、保存してください。 +You can enter any date manually,手動で日付を入力することができます +You can enter the minimum quantity of this item to be ordered.,最小限の数量からこの商品を注文することができます +You can not change rate if BOM mentioned agianst any item,部品表が否認した商品は、料金を変更することができません +You can not enter both Delivery Note No and Sales Invoice No. Please enter any one.,納品書と売上請求書の両方を入力することはできません。どちらら一つを記入して下さい +You can not enter current voucher in 'Against Journal Voucher' column,''アゲンストジャーナルバウチャー’’の欄に、最新の領収証を入力することはできません。 +You can set Default Bank Account in Company master,あなたは、会社のマスターにメイン銀行口座を設定することができます +You can start by selecting backup frequency and granting access for sync,バックアップの頻度を選択し、同期するためのアクセスに承諾することで始めることができます You can submit this Stock Reconciliation.,あなたは、この株式調整を提出することができます。 -You can update either Quantity or Valuation Rate or both.,あなたは、数量または評価レートのいずれか、または両方を更新することができます。 +You can update either Quantity or Valuation Rate or both.,数量もしくは見積もり額のいずれか一方、または両方を更新することができます。 You cannot credit and debit same account at the same time,あなたが同時に同じアカウントをクレジットカードやデビットすることはできません -You have entered duplicate items. Please rectify and try again.,あなたは、重複する項目を入力しました。修正してから、もう一度やり直してください。 -You may need to update: {0},あなたが更新する必要があります:{0} -You must Save the form before proceeding,先に進む前に、フォームを保存する必要があります -Your Customer's TAX registration numbers (if applicable) or any general information,顧客の税務登録番号(該当する場合)、または任意の一般的な情報 +You have entered duplicate items. Please rectify and try again.,同じ商品を入力しました。修正して、もう一度やり直してください。 +You may need to update: {0},{0}を更新する必要があります +You must Save the form before proceeding,続行する前に、フォーム(書式)を保存して下さい +Your Customer's TAX registration numbers (if applicable) or any general information,顧客の税務登録番号(該当する場合)、または一般的な情報。 Your Customers,あなたの顧客 -Your Login Id,ログインID +Your Login Id,あなたのログインID(プログラムに入るための身元証明のパスワード) Your Products or Services,あなたの製品またはサービス -Your Suppliers,サプライヤー -Your email address,メール アドレス -Your financial year begins on,あなたの会計年度は、から始まり -Your financial year ends on,あなたの会計年度は、日に終了 -Your sales person who will contact the customer in future,将来的に顧客に連絡しますあなたの販売員 -Your sales person will get a reminder on this date to contact the customer,あなたの営業担当者は、顧客に連絡することをこの日にリマインダが表示されます -Your setup is complete. Refreshing...,あなたのセットアップは完了です。さわやかな... -Your support email id - must be a valid email - this is where your emails will come!,あなたのサポートの電子メールIDは、 - 有効な電子メールである必要があります - あなたの電子メールが来る場所です! +Your Suppliers,納入/供給者 購入先 +Your email address,あなたのメール アドレス +Your financial year begins on,あなたの会計年度開始日は +Your financial year ends on,あなたの会計年度終了日は +Your sales person who will contact the customer in future,将来的に顧客に連絡するあなたの販売員 +Your sales person will get a reminder on this date to contact the customer,営業担当者には、顧客と連絡を取り合うを日にリマインダ(事前通知)が表示されます。 +Your setup is complete. Refreshing...,設定完了。更新中。 +Your support email id - must be a valid email - this is where your emails will come!,サポートメールIDはメールを受信する場所なので有効なメールであることが必要です。 [Error],[ERROR] [Select],[SELECT] `Freeze Stocks Older Than` should be smaller than %d days.,`%d個の日数よりも小さくすべきであるより古い`フリーズ株式。 @@ -3294,7 +3300,7 @@ old_parent,old_parent rgt,RGT subject,被験者 to,上を以下のように変更します。 -website page link,ウェブサイトのページリンク +website page link,ウェブサイトのページリンク(ウェブサイト上で他のページへ連結させること) {0} '{1}' not in Fiscal Year {2},{0} '{1}'ではない年度中の{2} {0} Credit limit {0} crossed,{0}与信限度{0}交差 {0} Serial Numbers required for Item {0}. Only {0} provided.,{0}商品に必要なシリアル番号{0}。唯一の{0}提供。 diff --git a/erpnext/translations/ru.csv b/erpnext/translations/ru.csv index 1ef537c3a3..09d409e0b6 100644 --- a/erpnext/translations/ru.csv +++ b/erpnext/translations/ru.csv @@ -35,13 +35,14 @@ "Add / Edit"," Добавить / Изменить " "

Default Template

Uses Jinja Templating and all the fields of Address (including Custom Fields if any) will be available

{{ address_line1 }}<br>{% if address_line2 %}{{ address_line2 }}<br>{% endif -%}{{ city }}<br>{% if state %}{{ state }}<br>{% endif -%}{% if pincode %} PIN:  {{ pincode }}<br>{% endif -%}{{ country }}<br>{% if phone %}Phone: {{ phone }}<br>{% endif -%}{% if fax %}Fax: {{ fax }}<br>{% endif -%}{% if email_id %}Email: {{ email_id }}<br>{% endif -%}
","

умолчанию шаблона

Использует Jinja шаблонов и все поля Адрес ( в том числе пользовательских полей если таковые имеются) будут доступны

  {{address_line1}} инструменты  {%, если address_line2%} {{address_line2}} инструменты { % ENDIF -%}  {{город}} инструменты  {%, если состояние%} {{состояние}} инструменты {% ENDIF -%}  {%, если пин-код%} PIN-код: {{пин-код}} инструменты {% ENDIF -%}  {{страна}} инструменты  {%, если телефон%} Телефон: {{телефон}} инструменты { % ENDIF -%}  {%, если факс%} Факс: {{факс}} инструменты {% ENDIF -%}  {%, если email_id%} Email: {{email_id}} инструменты ; {% ENDIF -%}   "
 A Customer Group exists with same name please change the Customer name or rename the Customer Group,"Группа клиентов существует с тем же именем, пожалуйста изменить имя клиентов или переименовать группу клиентов"
-A Customer exists with same name,Существует клиентов с одноименным названием
+A Customer exists with same name,"Клиент с таким именем уже существует
+"
 A Lead with this email id should exist,Ведущий с этим электронный идентификатор должен существовать
 A Product or Service,Продукт или сервис
 A Supplier exists with same name,Поставщик существует с одноименным названием
 A symbol for this currency. For e.g. $,"Символ для этой валюты. Для например, $"
 AMC Expiry Date,КУА срок действия
-Abbr,Сокр
+Abbr,Аббревиатура
 Abbreviation cannot have more than 5 characters,Аббревиатура не может иметь более 5 символов
 Above Value,Выше стоимости
 Absent,Рассеянность
@@ -53,10 +54,10 @@ Accepted Warehouse,Принято Склад
 Account,Аккаунт
 Account Balance,Остаток на счете
 Account Created: {0},Учетная запись создана: {0}
-Account Details,Детали аккаунта
+Account Details,Подробности аккаунта
 Account Head,Счет руководитель
 Account Name,Имя Учетной Записи
-Account Type,Тип счета
+Account Type,Тип учетной записи
 "Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'","Баланс счета уже в кредит, вы не можете установить ""баланс должен быть 'как' Debit '"
 "Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'","Баланс счета уже в дебет, вы не можете установить ""баланс должен быть 'как' Кредит»"
 Account for the warehouse (Perpetual Inventory) will be created under this Account.,Счет для склада (непрерывной инвентаризации) будут созданы под этой учетной записью.
@@ -66,13 +67,13 @@ Account with child nodes cannot be converted to ledger,Счет с дочерн
 Account with existing transaction can not be converted to group.,Счет с существующей сделки не могут быть преобразованы в группы.
 Account with existing transaction can not be deleted,Счет с существующей сделки не могут быть удалены
 Account with existing transaction cannot be converted to ledger,Счет с существующей сделки не могут быть преобразованы в книге
-Account {0} cannot be a Group,Счет {0} не может быть группа
-Account {0} does not belong to Company {1},Счет {0} не принадлежит компании {1}
-Account {0} does not belong to company: {1},Счет {0} не принадлежит компании: {1}
-Account {0} does not exist,Счет {0} не существует
+Account {0} cannot be a Group,Аккаунт {0} не может быть в группе
+Account {0} does not belong to Company {1},Аккаунт {0} не принадлежит компании {1}
+Account {0} does not belong to company: {1},Аккаунт {0} не принадлежит компании: {1}
+Account {0} does not exist,Аккаунт {0} не существует
 Account {0} has been entered more than once for fiscal year {1},Счет {0} был введен более чем один раз в течение финансового года {1}
-Account {0} is frozen,Счет {0} заморожен
-Account {0} is inactive,Счет {0} неактивен
+Account {0} is frozen,Аккаунт {0} заморожен
+Account {0} is inactive,Аккаунт {0} неактивен
 Account {0} is not valid,Счет {0} не является допустимым
 Account {0} must be of type 'Fixed Asset' as Item {1} is an Asset Item,"Счет {0} должен быть типа ""Fixed Asset"", как товара {1} является активом Пункт"
 Account {0}: Parent account {1} can not be a ledger,Счет {0}: Родитель счета {1} не может быть книга
@@ -84,16 +85,16 @@ Accountant,Бухгалтер
 Accounting,Пользователи
 "Accounting Entries can be made against leaf nodes, called","Бухгалтерские записи могут быть сделаны против конечных узлов, называется"
 "Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.","Бухгалтерская запись заморожены до этой даты, никто не может сделать / изменить запись, кроме роли, указанной ниже."
-Accounting journal entries.,Бухгалтерские Journal.
+Accounting journal entries.,Журнал бухгалтерских записей.
 Accounts,Учётные записи
 Accounts Browser,Дебиторская Браузер
 Accounts Frozen Upto,Счета заморожены До
 Accounts Payable,Ежемесячные счета по кредиторской задолженности
 Accounts Receivable,Дебиторская задолженность
-Accounts Settings,Счета Настройки
+Accounts Settings, Настройки аккаунта
 Active,Активен
 Active: Will extract emails from ,
-Activity,Деятельность
+Activity,Активность
 Activity Log,Журнал активности
 Activity Log:,Журнал активности:
 Activity Type,Тип активности
@@ -313,8 +314,8 @@ BOM replaced,BOM заменить
 BOM {0} for Item {1} in row {2} is inactive or not submitted,BOM {0} для Пункт {1} в строке {2} неактивен или не представили
 BOM {0} is not active or not submitted,BOM {0} не является активным или не представили
 BOM {0} is not submitted or inactive BOM for Item {1},BOM {0} не представлено или неактивным спецификации по пункту {1}
-Backup Manager,Backup Manager
-Backup Right Now,Резервное копирование прямо сейчас
+Backup Manager,Менеджер резервных копий
+Backup Right Now,Сделать резервную копию
 Backups will be uploaded to,Резервные копии будут размещены на
 Balance Qty,Баланс Кол-во
 Balance Sheet,Балансовый отчет
@@ -323,7 +324,7 @@ Balance for Account {0} must always be {1},Весы для счета {0} дол
 Balance must be,Баланс должен быть
 "Balances of Accounts of type ""Bank"" or ""Cash""",Остатки на счетах типа «Банк» или «Денежные средства»
 Bank,Банк:
-Bank / Cash Account,Банк / Денежный счет
+Bank / Cash Account,Банк / Расчетный счет
 Bank A/C No.,Bank A / С №
 Bank Account,Банковский счет
 Bank Account No.,Счет №
@@ -336,10 +337,10 @@ Bank Reconciliation,Банк примирения
 Bank Reconciliation Detail,Банк примирения Подробно
 Bank Reconciliation Statement,Заявление Банк примирения
 Bank Voucher,Банк Ваучер
-Bank/Cash Balance,Банк / Остатки денежных средств
+Bank/Cash Balance,Банк / Баланс счета
 Banking,Банковское дело
-Barcode,Штрих
-Barcode {0} already used in Item {1},Штрих {0} уже используется в пункте {1}
+Barcode,Штрихкод
+Barcode {0} already used in Item {1},Штрихкод {0} уже используется в позиции {1}
 Based On,На основе
 Basic,Базовый
 Basic Info,Введение
@@ -357,9 +358,9 @@ Batch-Wise Balance History,Порционно Баланс История
 Batched for Billing,Batched для биллинга
 Better Prospects,Лучшие перспективы
 Bill Date,Дата оплаты
-Bill No,Билл Нет
+Bill No,Номер накладной
 Bill No {0} already booked in Purchase Invoice {1},Билл Нет {0} уже заказали в счете-фактуре {1}
-Bill of Material,Спецификация материала
+Bill of Material,Накладная материалов
 Bill of Material to be considered for manufacturing,"Билл материала, который будет рассматриваться на производстве"
 Bill of Materials (BOM),Ведомость материалов (BOM)
 Billable,Платежные
@@ -379,10 +380,10 @@ Birthday,Дата рождения
 Block Date,Блок Дата
 Block Days,Блок дня
 Block leave applications by department.,Блок отпуска приложений отделом.
-Blog Post,Сообщение блога
+Blog Post,Пост блога
 Blog Subscriber,Блог абонента
 Blood Group,Группа крови
-Both Warehouse must belong to same Company,Оба Склад должен принадлежать той же компании
+Both Warehouse must belong to same Company,Оба Склад должены принадлежать той же компании
 Box,Рамка
 Branch,Ветвь:
 Brand,Бренд
@@ -401,13 +402,13 @@ Budget Distribution Detail,Деталь Распределение бюджет
 Budget Distribution Details,Распределение бюджета Подробности
 Budget Variance Report,Бюджет Разница Сообщить
 Budget cannot be set for Group Cost Centers,Бюджет не может быть установлено для группы МВЗ
-Build Report,Построить Сообщить
+Build Report,Создать отчет
 Bundle items at time of sale.,Bundle детали на момент продажи.
 Business Development Manager,Менеджер по развитию бизнеса
 Buying,Покупка
 Buying & Selling,Покупка и продажа
 Buying Amount,Покупка Сумма
-Buying Settings,Покупка Настройки
+Buying Settings,Настройка покупки
 "Buying must be checked, if Applicable For is selected as {0}","Покупка должна быть проверена, если выбран Применимо для как {0}"
 C-Form,C-образный
 C-Form Applicable,C-образный Применимо
@@ -421,13 +422,13 @@ CENVAT Service Tax,CENVAT налоговой службы
 CENVAT Service Tax Cess 1,CENVAT налоговой службы Цесс 1
 CENVAT Service Tax Cess 2,CENVAT налоговой службы Цесс 2
 Calculate Based On,Рассчитать на основе
-Calculate Total Score,Рассчитать общее количество баллов
-Calendar Events,Календарь
-Call,Вызов
-Calls,Вызовы
+Calculate Total Score,Рассчитать общую сумму
+Calendar Events,Календарные события
+Call,Звонок
+Calls,Звонки
 Campaign,Кампания
 Campaign Name,Название кампании
-Campaign Name is required,Название кампании требуется
+Campaign Name is required,Необходимо ввести имя компании
 Campaign Naming By,Кампания Именование По
 Campaign-.####,Кампания-.# # # #
 Can be approved by {0},Может быть одобрено {0}
@@ -469,12 +470,12 @@ Carry Forwarded Leaves,Carry направляются листья
 Case No(s) already in use. Try from Case No {0},Случай Нет (ы) уже используется. Попробуйте из дела № {0}
 Case No. cannot be 0,Дело № не может быть 0
 Cash,Наличные
-Cash In Hand,Наличность кассовая
+Cash In Hand,Наличность кассы
 Cash Voucher,Кассовый чек
 Cash or Bank Account is mandatory for making payment entry,Наличными или банковский счет является обязательным для внесения записи платежей
-Cash/Bank Account,Счет Наличный / Банк
+Cash/Bank Account, Наличные / Банковский счет
 Casual Leave,Повседневная Оставить
-Cell Number,Количество сотовых
+Cell Number,Количество звонков
 Change UOM for an Item.,Изменение UOM для элемента.
 Change the starting / current sequence number of an existing series.,Изменение начального / текущий порядковый номер существующей серии.
 Channel Partner,Channel ДУrtner
@@ -501,12 +502,12 @@ Cheque Date,Чек Дата
 Cheque Number,Чек Количество
 Child account exists for this account. You can not delete this account.,Детский учетная запись существует для этой учетной записи. Вы не можете удалить этот аккаунт.
 City,Город
-City/Town,Город /
+City/Town,Город / поселок
 Claim Amount,Сумма претензии
 Claims for company expense.,Претензии по счет компании.
 Class / Percentage,Класс / в процентах
 Classic,Классические
-Clear Table,Ясно Таблица
+Clear Table,Очистить таблицу
 Clearance Date,Клиренс Дата
 Clearance Date not mentioned,Клиренс Дата не упоминается
 Clearance date cannot be before check date in row {0},Дата просвет не может быть до даты регистрации в строке {0}
@@ -641,8 +642,8 @@ Created By,Созданный
 Creates salary slip for above mentioned criteria.,Создает ведомость расчета зарплаты за вышеуказанные критерии.
 Creation Date,Дата создания
 Creation Document No,Создание документа Нет
-Creation Document Type,Тип документа Создание
-Creation Time,Времени создания
+Creation Document Type,Создание типа документа
+Creation Time,Время создания
 Credentials,Сведения о профессиональной квалификации
 Credit,Кредит
 Credit Amt,Кредитная Amt
@@ -751,8 +752,8 @@ Default Bank / Cash account will be automatically updated in POS Invoice when th
 Default Bank Account,По умолчанию Банковский счет
 Default Buying Cost Center,По умолчанию Покупка МВЗ
 Default Buying Price List,По умолчанию Покупка Прайс-лист
-Default Cash Account,По умолчанию денежного счета
-Default Company,По умолчанию компании
+Default Cash Account,Расчетный счет по умолчанию
+Default Company,Компания по умолчанию
 Default Currency,Базовая валюта
 Default Customer Group,По умолчанию Группа клиентов
 Default Expense Account,По умолчанию расходов счета
@@ -787,7 +788,7 @@ Delivered Items To Be Billed,Поставленные товары быть вы
 Delivered Qty,Поставляется Кол-во
 Delivered Serial No {0} cannot be deleted,Поставляется Серийный номер {0} не может быть удален
 Delivery Date,Дата поставки
-Delivery Details,План поставки
+Delivery Details,Подробности доставки
 Delivery Document No,Доставка документов Нет
 Delivery Document Type,Тип доставки документов
 Delivery Note,· Отметки о доставке
@@ -801,7 +802,7 @@ Delivery Note {0} is not submitted,Доставка Примечание {0} н
 Delivery Note {0} must not be submitted,Доставка Примечание {0} не должны быть представлены
 Delivery Notes {0} must be cancelled before cancelling this Sales Order,Примечания Доставка {0} должно быть отменено до отмены этого заказ клиента
 Delivery Status,Статус доставки
-Delivery Time,Срок поставки
+Delivery Time,Время доставки
 Delivery To,Доставка Для
 Department,Отдел
 Department Stores,Универмаги
@@ -812,7 +813,7 @@ Description HTML,Описание HTML
 Designation,Назначение
 Designer,Дизайнер
 Detailed Breakup of the totals,Подробное Распад итогам
-Details,Детали
+Details,Подробности
 Difference (Dr - Cr),Отличия (д-р - Cr)
 Difference Account,Счет разницы
 "Difference Account must be a 'Liability' type account, since this Stock Reconciliation is an Opening Entry","Разница счета должна быть учетной записью типа ""Ответственность"", так как это со Примирение Открытие Вступление"
@@ -848,7 +849,7 @@ Do you really want to Submit all Salary Slip for month {0} and year {1},"Вы д
 Do you really want to UNSTOP ,
 Do you really want to UNSTOP this Material Request?,"Вы действительно хотите, чтобы Unstop этот материал запрос?"
 Do you really want to stop production order: ,
-Doc Name,Док Имя
+Doc Name,Имя документа
 Doc Type,Тип документа
 Document Description,Документ Описание
 Document Type,Тип документа
@@ -858,15 +859,15 @@ Don't send Employee Birthday Reminders,Не отправляйте Employee ро
 Download Materials Required,Скачать Необходимые материалы
 Download Reconcilation Data,Скачать приведению данных
 Download Template,Скачать шаблон
-Download a report containing all raw materials with their latest inventory status,"Скачать доклад, содержащий все сырье с их последней инвентаризации статус"
+Download a report containing all raw materials with their latest inventory status,Скачать отчет содержащий все материал со статусом  последней инвентаризации
 "Download the Template, fill appropriate data and attach the modified file.","Скачать шаблон, заполнить соответствующие данные и приложить измененный файл."
 "Download the Template, fill appropriate data and attach the modified file.All dates and employee combination in the selected period will come in the template, with existing attendance records","Скачать шаблон, заполнить соответствующие данные и приложить измененный файл. Все даты и сочетание работник в выбранном периоде придет в шаблоне, с существующими рекорды посещаемости"
-Draft,Новый
+Draft,Черновик
 Dropbox,Dropbox
 Dropbox Access Allowed,Dropbox доступ разрешен
 Dropbox Access Key,Dropbox Ключ доступа
-Dropbox Access Secret,Dropbox Доступ Секрет
-Due Date,Дата исполнения
+Dropbox Access Secret,Dropbox Секретный ключ
+Due Date,Дата выполнения
 Due Date cannot be after {0},Впритык не может быть после {0}
 Due Date cannot be before Posting Date,"Впритык не может быть, прежде чем отправлять Дата"
 Duplicate Entry. Please check Authorization Rule {0},"Копия записи. Пожалуйста, проверьте Авторизация Правило {0}"
@@ -963,7 +964,7 @@ Entries against ,
 Entries are not allowed against this Fiscal Year if the year is closed.,"Записи не допускаются против этого финансовый год, если год закрыт."
 Equity,Ценные бумаги
 Error: {0} > {1},Ошибка: {0}> {1}
-Estimated Material Cost,Расчетное Материал Стоимость
+Estimated Material Cost,Примерная стоимость материалов
 "Even if there are multiple Pricing Rules with highest priority, then following internal priorities are applied:","Даже если есть несколько правил ценообразования с наивысшим приоритетом, то следующие внутренние приоритеты применяются:"
 Everyone can read,Каждый может читать
 "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.",". Пример: ABCD # # # # #  Если серии установлен и Серийный номер не упоминается в сделках, то автоматическая серийный номер будет создана на основе этой серии. Если вы всегда хотите явно упомянуть серийный Нос для этого элемента. оставьте поле пустым."
@@ -1066,7 +1067,7 @@ For Reference Only.,Для справки.
 For Sales Invoice,Для продаж счета-фактуры
 For Server Side Print Formats,Для стороне сервера форматов печати
 For Supplier,Для поставщиков
-For Warehouse,Для Склад
+For Warehouse,Для Склада
 For Warehouse is required before Submit,Для требуется Склад перед Отправить
 "For e.g. 2012, 2012-13","Для, например 2012, 2012-13"
 For reference,Для справки
@@ -1083,7 +1084,7 @@ From Bill of Materials,Из спецификации материалов
 From Company,От компании
 From Currency,Из валюты
 From Currency and To Currency cannot be same,"Из валюты и В валюту не может быть таким же,"
-From Customer,От клиентов
+From Customer,От клиента
 From Customer Issue,Из выпуска Пользовательское
 From Date,С Даты
 From Date cannot be greater than To Date,"С даты не может быть больше, чем к дате"
@@ -1161,8 +1162,8 @@ Grand Total,Общий итог
 Grand Total (Company Currency),Общий итог (Компания Валюта)
 "Grid ""","Сетка """
 Grocery,Продуктовый
-Gross Margin %,Валовая маржа%
-Gross Margin Value,Валовая маржа Значение
+Gross Margin %,Валовая маржа %
+Gross Margin Value,Значение валовой маржи
 Gross Pay,Зарплата до вычетов
 Gross Pay + Arrear Amount +Encashment Amount - Total Deduction,Валовой Платное + просроченной задолженности суммы + Инкассация Сумма - Всего Вычет
 Gross Profit,Валовая прибыль
@@ -1196,7 +1197,7 @@ Help HTML,Помощь HTML
 "Here you can maintain family details like name and occupation of parent, spouse and children","Здесь Вы можете сохранить семейные подробности, как имя и оккупации родитель, супруг и детей"
 "Here you can maintain height, weight, allergies, medical concerns etc","Здесь вы можете поддерживать рост, вес, аллергии, медицинские проблемы и т.д."
 Hide Currency Symbol,Скрыть Символа Валюты
-High,Высокая
+High,Высокий
 History In Company,История В компании
 Hold,Удержание
 Holiday,Выходной
@@ -1214,7 +1215,7 @@ Hours,Часов
 How Pricing Rule is applied?,Как Ценообразование Правило применяется?
 How frequently?,Как часто?
 "How should this currency be formatted? If not set, will use system defaults","Как это должно валюта быть отформатирован? Если не установлен, будет использовать системные значения по умолчанию"
-Human Resources,Работа с персоналом
+Human Resources,Человеческие ресурсы
 Identification of the package for the delivery (for print),Идентификация пакета на поставку (для печати)
 If Income or Expense,Если доходов или расходов
 If Monthly Budget Exceeded,Если Месячный бюджет Превышен
@@ -1250,11 +1251,11 @@ Image,Изображение
 Image View,Просмотр изображения
 Implementation Partner,Реализация Партнер
 Import Attendance,Импорт Посещаемость
-Import Failed!,Импорт удалось!
-Import Log,Импорт Вход
-Import Successful!,Импорт успешным!
+Import Failed!,Ошибка при импортировании!
+Import Log,Лог импорта
+Import Successful!,Успешно импортированно!
 Imports,Импорт
-In Hours,В часы
+In Hours,В час
 In Process,В процессе
 In Qty,В Кол-во
 In Value,В поле Значение
@@ -1273,7 +1274,7 @@ Include Reconciled Entries,Включите примириться Записи
 Include holidays in Total no. of Working Days,Включите праздники в общей сложности не. рабочих дней
 Income,Доход
 Income / Expense,Доходы / расходы
-Income Account,Счет Доходы
+Income Account,Счет Доходов
 Income Booked,Доход Заказанный
 Income Tax,Подоходный налог
 Income Year to Date,Доход С начала года
@@ -1298,7 +1299,7 @@ Installation Note,Установка Примечание
 Installation Note Item,Установка Примечание Пункт
 Installation Note {0} has already been submitted,Установка Примечание {0} уже представлен
 Installation Status,Состояние установки
-Installation Time,Время монтажа
+Installation Time,Время установки
 Installation date cannot be before delivery date for Item {0},Дата установки не может быть до даты доставки для Пункт {0}
 Installation record for a Serial No.,Установка рекорд для серийный номер
 Installed Qty,Установленная Кол-во
@@ -1306,15 +1307,15 @@ Instructions,Инструкции
 Integrate incoming support emails to Support Ticket,Интеграция входящих поддержки письма на техподдержки
 Interested,Заинтересованный
 Intern,Стажер
-Internal,Внутренний GPS без антенны или с внешней антенной
+Internal,Внутренний
 Internet Publishing,Интернет издания
 Introduction,Введение
-Invalid Barcode,Неверный код
-Invalid Barcode or Serial No,Неверный код или Серийный номер
-Invalid Mail Server. Please rectify and try again.,"Неверный Сервер Почта. Пожалуйста, исправить и попробовать еще раз."
+Invalid Barcode,Неверный штрихкод
+Invalid Barcode or Serial No,Неверный штрихкод или Серийный номер
+Invalid Mail Server. Please rectify and try again.,"Неверный почтовый сервер. Пожалуйста, исправьте и попробуйте еще раз."
 Invalid Master Name,Неверный Мастер Имя
 Invalid User Name or Support Password. Please rectify and try again.,"Неверное имя пользователя или поддержки Пароль. Пожалуйста, исправить и попробовать еще раз."
-Invalid quantity specified for item {0}. Quantity should be greater than 0.,"Неверный количество, указанное для элемента {0}. Количество должно быть больше 0."
+Invalid quantity specified for item {0}. Quantity should be greater than 0.,"Неверное количество, указанное для элемента {0}. Количество должно быть больше 0."
 Inventory,Инвентаризация
 Inventory & Support,Инвентаризация и поддержка
 Investment Banking,Инвестиционно-банковская деятельность
@@ -1326,7 +1327,7 @@ Invoice Number,Номер накладной
 Invoice Period From,Счет Период С
 Invoice Period From and Invoice Period To dates mandatory for recurring invoice,Счет Период С и счет-фактура Период до даты обязательных для повторяющихся счет
 Invoice Period To,Счет Период до
-Invoice Type,Счет Тип
+Invoice Type,Тип счета
 Invoice/Journal Voucher Details,Счет / Журнал Подробности Ваучер
 Invoiced Amount (Exculsive Tax),Сумма по счетам (Exculsive стоимость)
 Is Active,Активен
@@ -1549,7 +1550,7 @@ Logo,Логотип
 Logo and Letter Heads,Логотип и бланки
 Lost,Поражений
 Lost Reason,Забыли Причина
-Low,Низкая
+Low,Низкий
 Lower Income,Нижняя Доход
 MTN Details,MTN Подробнее
 Main,Основные
@@ -1574,7 +1575,7 @@ Maintenance Visit Purpose,Техническое обслуживание Пос
 Maintenance Visit {0} must be cancelled before cancelling this Sales Order,Техническое обслуживание Посетить {0} должно быть отменено до отмены этого заказ клиента
 Maintenance start date can not be before delivery date for Serial No {0},Техническое обслуживание дата не может быть до даты доставки для Serial No {0}
 Major/Optional Subjects,Основные / факультативных предметов
-Make ,
+Make ,Создать
 Make Accounting Entry For Every Stock Movement,Сделать учета запись для каждого фондовой Движения
 Make Bank Voucher,Сделать банк ваучер
 Make Credit Note,Сделать кредит-нота
@@ -1583,7 +1584,7 @@ Make Delivery,Произвести поставку
 Make Difference Entry,Сделать Разница запись
 Make Excise Invoice,Сделать акцизного счет-фактура
 Make Installation Note,Сделать Установка Примечание
-Make Invoice,Сделать Счет
+Make Invoice,Создать счет-фактуру
 Make Maint. Schedule,Сделать Maint. Расписание
 Make Maint. Visit,Сделать Maint. Посетите нас по адресу
 Make Maintenance Visit,Сделать ОБСЛУЖИВАНИЕ Посетите
@@ -1599,7 +1600,7 @@ Make Sales Invoice,Сделать Расходная накладная
 Make Sales Order,Сделать заказ клиента
 Make Supplier Quotation,Сделать Поставщик цитаты
 Make Time Log Batch,Найдите время Войдите Batch
-Male,Муж
+Male,Мужчина
 Manage Customer Group Tree.,Управление групповой клиентов дерево.
 Manage Sales Partners.,Управление партнеры по сбыту.
 Manage Sales Person Tree.,Управление менеджера по продажам дерево.
@@ -1628,7 +1629,7 @@ Mass Mailing,Рассылок
 Master Name,Мастер Имя
 Master Name is mandatory if account type is Warehouse,"Мастер Имя является обязательным, если тип счета Склад"
 Master Type,Мастер Тип
-Masters,Эффективно используем APM в высшей лиге
+Masters,Организация
 Match non-linked Invoices and Payments.,"Подходим, не связанных Счета и платежи."
 Material Issue,Материал выпуск
 Material Receipt,Материал Поступление
@@ -1658,31 +1659,31 @@ Maximum allowed credit is {0} days after posting date,Максимально д
 Maximum {0} rows allowed,Максимальные {0} строк разрешено
 Maxiumm discount for Item {0} is {1}%,Maxiumm скидка на Пункт {0} {1}%
 Medical,Медицинский
-Medium,Средние булки
+Medium,Средний
 "Merging is only possible if following properties are same in both records. Group or Ledger, Root Type, Company","Слияние возможно только при следующие свойства одинаковы в обоих записей. Группа или Леджер, корень Тип, Компания"
 Message,Сообщение
-Message Parameter,Сообщение Параметр
+Message Parameter,Параметры сообщения
 Message Sent,Сообщение отправлено
-Message updated,Сообщение обновляется
+Message updated,Сообщение обновлено
 Messages,Сообщения
 Messages greater than 160 characters will be split into multiple messages,"Сообщения больше, чем 160 символов будет разделен на несколько сообщений"
-Middle Income,Средним уровнем доходов
-Milestone,Веха
-Milestone Date,Дата реализации
+Middle Income,Средний доход
+Milestone,Этап
+Milestone Date,Дата реализации этапа
 Milestones,Основные этапы
-Milestones will be added as Events in the Calendar,Вехи будет добавлен в качестве событий в календаре
+Milestones will be added as Events in the Calendar,Этапы проекта будут добавлены в качестве событий календаря
 Min Order Qty,Минимальный заказ Кол-во
 Min Qty,Мин Кол-во
-Min Qty can not be greater than Max Qty,"Мин Кол-во не может быть больше, чем Max Кол-во"
+Min Qty can not be greater than Max Qty,"Мин Кол-во не может быть больше, чем максимальное Кол-во"
 Minimum Amount,Минимальная сумма
 Minimum Order Qty,Минимальное количество заказа
-Minute,Минут
+Minute,Минута
 Misc Details,Разное Подробности
 Miscellaneous Expenses,Прочие расходы
 Miscelleneous,Miscelleneous
-Mobile No,Мобильная Нет
+Mobile No,Мобильный номер
 Mobile No.,Мобильный номер
-Mode of Payment,Способ платежа
+Mode of Payment,Способ оплаты
 Modern,"модные,"
 Monday,Понедельник
 Month,Mесяц
@@ -1708,7 +1709,7 @@ Name and Employee ID,Имя и Код сотрудника
 "Name of new Account. Note: Please don't create accounts for Customers and Suppliers, they are created automatically from the Customer and Supplier master","Имя нового счета. Примечание: Пожалуйста, не создавать учетные записи для клиентов и поставщиков, они создаются автоматически от Заказчика и поставщика оригиналов"
 Name of person or organization that this address belongs to.,"Имя лица или организации, что этот адрес принадлежит."
 Name of the Budget Distribution,Название Распределение бюджета
-Naming Series,Именование Series
+Naming Series,Наименование серии
 Negative Quantity is not allowed,Отрицательный Количество не допускается
 Negative Stock Error ({6}) for Item {0} in Warehouse {1} on {2} {3} in {4} {5},Отрицательный Ошибка со ({6}) по пункту {0} в Склад {1} на {2} {3} в {4} {5}
 Negative Valuation Rate is not allowed,Отрицательный Оценка курс не допускается
@@ -1723,7 +1724,7 @@ Net Weight UOM,Вес нетто единица измерения
 Net Weight of each Item,Вес нетто каждого пункта
 Net pay cannot be negative,Чистая зарплата не может быть отрицательным
 Never,Никогда
-New ,
+New ,Новый
 New Account,Новая учетная запись
 New Account Name,Новый Имя счета
 New BOM,Новый BOM
@@ -1754,11 +1755,11 @@ New UOM must NOT be of type Whole Number,Новый UOM НЕ должен име
 New Workplace,Новый Место работы
 Newsletter,Рассылка новостей
 Newsletter Content,Рассылка Содержимое
-Newsletter Status,Рассылка Статус
+Newsletter Status, Статус рассылки
 Newsletter has already been sent,Информационный бюллетень уже был отправлен
 "Newsletters to contacts, leads.","Бюллетени для контактов, приводит."
 Newspaper Publishers,Газетных издателей
-Next,Следующая
+Next,Следующий
 Next Contact By,Следующая Контактные По
 Next Contact Date,Следующая контакты
 Next Date,Следующая Дата
@@ -1790,38 +1791,38 @@ No record found,Не запись не найдено
 No records found in the Invoice table,Не записи не найдено в таблице счетов
 No records found in the Payment table,Не записи не найдено в таблице оплаты
 No salary slip found for month: ,
-Non Profit,Разное
+Non Profit,Не коммерческое
 Nos,кол-во
-Not Active,Не активность
+Not Active,Не активно
 Not Applicable,Не применяется
 Not Available,Не доступен
 Not Billed,Не Объявленный
-Not Delivered,Не Поставляются
+Not Delivered,Не доставлен
 Not Set,Не указано
 Not allowed to update stock transactions older than {0},"Не допускается, чтобы обновить биржевые операции старше {0}"
 Not authorized to edit frozen Account {0},Не разрешается редактировать замороженный счет {0}
 Not authroized since {0} exceeds limits,Не Authroized с {0} превышает пределы
 Not permitted,Не допускается
-Note,Заметье
-Note User,Примечание Пользователь
+Note,Заметка
+Note User,Примечание пользователя
 "Note: Backups and files are not deleted from Dropbox, you will have to delete them manually.","Примечание: Резервные копии и файлы не удаляются из Dropbox, вам придется удалить их вручную."
 "Note: Backups and files are not deleted from Google Drive, you will have to delete them manually.","Примечание: Резервные копии и файлы не удаляются из Google Drive, вам придется удалить их вручную."
 Note: Due Date exceeds the allowed credit days by {0} day(s),Примечание: В связи Дата превышает разрешенный кредит дня на {0} день (дни)
-Note: Email will not be sent to disabled users,Примечание: E-mail не будет отправлен пользователей с ограниченными возможностями
-Note: Item {0} entered multiple times,Примечание: Пункт {0} вошли несколько раз
+Note: Email will not be sent to disabled users,Примечание: E-mail не будет отправлен отключенному пользователю
+Note: Item {0} entered multiple times,Примечание: Пункт {0} имеет несколько вхождений
 Note: Payment Entry will not be created since 'Cash or Bank Account' was not specified,"Примечание: Оплата Вступление не будет создана, так как ""Наличные или Банковский счет"" не был указан"
 Note: System will not check over-delivery and over-booking for Item {0} as quantity or amount is 0,Примечание: Система не будет проверять по-доставки и избыточного бронирования по пункту {0} как количестве 0
 Note: There is not enough leave balance for Leave Type {0},Примечание: Существует не хватает отпуск баланс для отпуске Тип {0}
 Note: This Cost Center is a Group. Cannot make accounting entries against groups.,Примечание: Эта МВЗ является Группа. Невозможно сделать бухгалтерские проводки против групп.
 Note: {0},Примечание: {0}
-Notes,Примечания
-Notes:,Примечание:
+Notes,Заметки
+Notes:,Заметки:
 Nothing to request,Ничего просить
 Notice (days),Уведомление (дней)
-Notification Control,Контроль Уведомление
-Notification Email Address,Уведомление E-mail адрес
+Notification Control,Контроль Уведомлений
+Notification Email Address,E-mail адрес для уведомлений
 Notify by Email on creation of automatic Material Request,Сообщите по электронной почте по созданию автоматической запрос материалов
-Number Format,Number Формат
+Number Format,Числовой\валютный формат
 Offer Date,Предложение Дата
 Office,Офис
 Office Equipments,Оборудование офиса
@@ -1836,9 +1837,9 @@ Only Leave Applications with status 'Approved' can be submitted,"Только О
 "Only Serial Nos with status ""Available"" can be delivered.","Только Серийный Нос со статусом ""В наличии"" может быть доставлено."
 Only leaf nodes are allowed in transaction,Только листовые узлы допускаются в сделке
 Only the selected Leave Approver can submit this Leave Application,Только выбранный Оставить утверждающий мог представить этот Оставить заявку
-Open,Открыть
+Open,Открыт
 Open Production Orders,Открыть Производственные заказы
-Open Tickets,Открытые Билеты
+Open Tickets,Открытые заявку
 Opening (Cr),Открытие (Cr)
 Opening (Dr),Открытие (д-р)
 Opening Date,Открытие Дата
@@ -1965,7 +1966,7 @@ Payment cannot be made for empty cart,Оплата не может быть сд
 Payment of salary for the month {0} and year {1},Выплата заработной платы за месяц {0} и год {1}
 Payments,Оплата
 Payments Made,"Выплаты, производимые"
-Payments Received,"Платежи, полученные"
+Payments Received,Полученные платежи
 Payments made during the digest period,Платежи в период дайджест
 Payments received during the digest period,"Платежи, полученные в период дайджест"
 Payroll Settings,Настройки по заработной плате
@@ -1993,7 +1994,7 @@ Personal Email,Личная E-mail
 Pharmaceutical,Фармацевтический
 Pharmaceuticals,Фармацевтика
 Phone,Телефон
-Phone No,Телефон Нет
+Phone No,Номер телефона
 Piecework,Сдельная работа
 Pincode,Pincode
 Place of Issue,Место выдачи
@@ -2176,17 +2177,17 @@ Products,Продукты
 Professional Tax,Профессиональный Налоговый
 Profit and Loss,Прибыль и убытки
 Profit and Loss Statement,Счет прибылей и убытков
-Project,Адаптация
-Project Costing,Проект стоимостью
-Project Details,Детали проекта
+Project,Проект
+Project Costing,Стоимость проекта
+Project Details,Подробности проекта
 Project Manager,Руководитель проекта
-Project Milestone,Проект Milestone
-Project Milestones,Основные этапы проекта
+Project Milestone,Этап проекта
+Project Milestones,Этапы проекта
 Project Name,Название проекта
 Project Start Date,Дата начала проекта
 Project Type,Тип проекта
-Project Value,Значение проекта
-Project activity / task.,Проектная деятельность / задачей.
+Project Value,Значимость проекта
+Project activity / task.,Проектная деятельность / задачи.
 Project master.,Мастер проекта.
 Project will get saved and will be searchable with project name given,Проект будет спастись и будут доступны для поиска с именем проекта дается
 Project wise Stock Tracking,Проект мудрый слежения со
@@ -2199,7 +2200,7 @@ Prompt for Email on Submission of,Запрашивать Email по подаче
 Proposal Writing,Предложение Написание
 Provide email id registered in company,Обеспечить электронный идентификатор зарегистрирован в компании
 Provisional Profit / Loss (Credit),Предварительная прибыль / убыток (Кредит)
-Public,Публичный
+Public,Публично
 Published on website at: {0},Опубликовано на веб-сайте по адресу: {0}
 Publishing,Публикация
 Pull sales orders (pending to deliver) based on the above criteria,"Потяните заказы на продажу (в ожидании, чтобы доставить) на основе вышеуказанных критериев"
@@ -2542,17 +2543,17 @@ Sales Returned,Продажи Вернулся
 Sales Taxes and Charges,Продажи Налоги и сборы
 Sales Taxes and Charges Master,Продажи Налоги и сборы Мастер
 Sales Team,Отдел продаж
-Sales Team Details,Отдел продаж Подробнее
+Sales Team Details,Описание отдела продаж
 Sales Team1,Команда1 продаж
 Sales and Purchase,Купли-продажи
 Sales campaigns.,Кампании по продажам.
-Salutation,Заключение
+Salutation,Обращение
 Sample Size,Размер выборки
 Sanctioned Amount,Санкционированный Количество
 Saturday,Суббота
 Schedule,Расписание
-Schedule Date,Расписание Дата
-Schedule Details,Расписание Подробнее
+Schedule Date,Дата планирования
+Schedule Details,Подробности расписания
 Scheduled,Запланированно
 Scheduled Date,Запланированная дата
 Scheduled to send to {0},Планируется отправить {0}
@@ -2564,7 +2565,7 @@ Score Earned,Оценка Заработано
 Score must be less than or equal to 5,Оценка должна быть меньше или равна 5
 Scrap %,Лом%
 Seasonality for setting budgets.,Сезонность для установления бюджетов.
-Secretary,СЕКРЕТАРЬ
+Secretary,Секретарь
 Secured Loans,Обеспеченные кредиты
 Securities & Commodity Exchanges,Ценные бумаги и товарных бирж
 Securities and Deposits,Ценные бумаги и депозиты
@@ -2578,7 +2579,7 @@ Select Brand...,Выберите бренд ...
 Select Budget Distribution to unevenly distribute targets across months.,Выберите бюджета Распределение чтобы неравномерно распределить цели через месяцев.
 "Select Budget Distribution, if you want to track based on seasonality.","Выберите бюджета Distribution, если вы хотите, чтобы отслеживать на основе сезонности."
 Select Company...,Выберите компанию ...
-Select DocType,Выберите DocType
+Select DocType,Выберите тип документа
 Select Fiscal Year...,Выберите финансовый год ...
 Select Items,Выберите товары
 Select Project...,Выберите проект ...
@@ -2586,8 +2587,8 @@ Select Purchase Receipts,Выберите Покупка расписок
 Select Sales Orders,Выберите заказы на продажу
 Select Sales Orders from which you want to create Production Orders.,Выберите Заказы из которого вы хотите создать производственных заказов.
 Select Time Logs and Submit to create a new Sales Invoice.,Выберите Журналы время и предоставить для создания нового счета-фактуры.
-Select Transaction,Выберите сделка
-Select Warehouse...,Выберите Warehouse ...
+Select Transaction,Выберите операцию
+Select Warehouse...,Выберите склад...
 Select Your Language,Выбор языка
 Select account head of the bank where cheque was deposited.,"Выберите учетную запись глава банка, в котором проверка была размещена."
 Select company name first.,Выберите название компании в первую очередь.
@@ -2608,7 +2609,7 @@ Selling Settings,Продажа Настройки
 "Selling must be checked, if Applicable For is selected as {0}","Продажа должна быть проверена, если выбран Применимо для как {0}"
 Send,Отправить
 Send Autoreply,Отправить автоответчике
-Send Email,Отправить на e-mail
+Send Email,Отправить e-mail
 Send From,Отправить От
 Send Notifications To,Отправлять уведомления
 Send Now,Отправить Сейчас
@@ -2621,10 +2622,10 @@ Sender Name,Имя отправителя
 Sent On,Направлено на
 Separate production order will be created for each finished good item.,Отдельный производственный заказ будет создан для каждого готового хорошего пункта.
 Serial No,Серийный номер
-Serial No / Batch,Серийный номер / Пакетный
-Serial No Details,Серийный Нет Информация
+Serial No / Batch,Серийный номер / Партия
+Serial No Details,Серийный номер подробнее
 Serial No Service Contract Expiry,Серийный номер Сервисный контракт Срок
-Serial No Status,не Серийный Нет Положение
+Serial No Status,Серийный номер статус
 Serial No Warranty Expiry,не Серийный Нет Гарантия Срок
 Serial No is mandatory for Item {0},Серийный номер является обязательным для п. {0}
 Serial No {0} created,Серийный номер {0} создан
@@ -2632,7 +2633,7 @@ Serial No {0} does not belong to Delivery Note {1},Серийный номер {
 Serial No {0} does not belong to Item {1},Серийный номер {0} не принадлежит Пункт {1}
 Serial No {0} does not belong to Warehouse {1},Серийный номер {0} не принадлежит Склад {1}
 Serial No {0} does not exist,Серийный номер {0} не существует
-Serial No {0} has already been received,Серийный номер {0} уже получил
+Serial No {0} has already been received,Серийный номер {0} уже существует
 Serial No {0} is under maintenance contract upto {1},Серийный номер {0} находится под контрактом на техническое обслуживание ДО {1}
 Serial No {0} is under warranty upto {1},Серийный номер {0} находится на гарантии ДО {1}
 Serial No {0} not in stock,Серийный номер {0} не в наличии
@@ -2650,7 +2651,7 @@ Series is mandatory,Серия является обязательным
 Series {0} already used in {1},Серия {0} уже используется в {1}
 Service,Услуга
 Service Address,Адрес сервисного центра
-Service Tax,Налоговой службы
+Service Tax,Налоговая служба
 Services,Услуги
 Set,Задать
 "Set Default Values like Company, Currency, Current Fiscal Year, etc.","Установить значения по умолчанию, как Болгарии, Валюта, текущий финансовый год и т.д."
@@ -2666,7 +2667,7 @@ Setting up...,Настройка ...
 Settings,Настройки
 Settings for HR Module,Настройки для модуля HR
 "Settings to extract Job Applicants from a mailbox e.g. ""jobs@example.com""","Настройки для извлечения Работа Кандидаты от почтового ящика, например ""jobs@example.com"""
-Setup,Настройка
+Setup,Настройки
 Setup Already Complete!!,Настройка Уже завершена!!
 Setup Complete,Завершение установки
 Setup SMS gateway settings,Настройки Настройка SMS Gateway
@@ -2676,7 +2677,7 @@ Setup incoming server for jobs email id. (e.g. jobs@example.com),Настрой
 Setup incoming server for sales email id. (e.g. sales@example.com),Настройка сервера входящей для продажи электронный идентификатор. (Например sales@example.com)
 Setup incoming server for support email id. (e.g. support@example.com),Настройка сервера входящей для поддержки электронный идентификатор. (Например support@example.com)
 Share,Поделиться
-Share With,Поделись с
+Share With,Поделиться с
 Shareholders Funds,Акционеры фонды
 Shipments to customers.,Поставки клиентам.
 Shipping,Доставка
@@ -2692,7 +2693,7 @@ Shopping Cart,Корзина
 Short biography for website and other publications.,Краткая биография для веб-сайта и других изданий.
 "Show ""In Stock"" or ""Not in Stock"" based on stock available in this warehouse.","Показать ""На складе"" или ""нет на складе"", основанный на складе имеющейся в этом складе."
 "Show / Hide features like Serial Nos, POS etc.","Показать / скрыть функции, такие как последовательный Нос, POS и т.д."
-Show In Website,Показать В веб-сайте
+Show In Website,Показать на сайте
 Show a slideshow at the top of the page,Показ слайдов в верхней части страницы
 Show in Website,Показать в веб-сайт
 Show rows with zero values,Показать строки с нулевыми значениями
@@ -2700,7 +2701,7 @@ Show this slideshow at the top of the page,Показать этот слайд-
 Sick Leave,Отпуск по болезни
 Signature,Подпись
 Signature to be appended at the end of every email,"Подпись, которая будет добавлена в конце каждого письма"
-Single,1
+Single,Единственный
 Single unit of an Item.,Одно устройство элемента.
 Sit tight while your system is being setup. This may take a few moments.,"Сиди, пока система в настоящее время установки. Это может занять несколько секунд."
 Slideshow,Слайд-шоу
@@ -2717,7 +2718,7 @@ Source of Funds (Liabilities),Источник финансирования (о
 Source warehouse is mandatory for row {0},Источник склад является обязательным для ряда {0}
 Spartan,Спартанский
 "Special Characters except ""-"" and ""/"" not allowed in naming series","Специальные символы, кроме ""-"" и ""/"" не допускается в серию называя"
-Specification Details,Спецификация Подробности
+Specification Details,Подробности спецификации
 Specifications,Спецификации
 "Specify a list of Territories, for which, this Price List is valid","Укажите список территорий, для которых, это прайс-лист действителен"
 "Specify a list of Territories, for which, this Shipping Rule is valid","Укажите список территорий, на которые это правило пересылки действует"
@@ -2744,13 +2745,14 @@ Status of {0} {1} is now {2},Статус {0} {1} теперь {2}
 Status updated to {0},Статус обновлен до {0}
 Statutory info and other general information about your Supplier,Уставный информации и другие общие сведения о вашем Поставщик
 Stay Updated,Будьте в курсе
-Stock,Акции
-Stock Adjustment,Фото со Регулировка
-Stock Adjustment Account,Фото со Регулировка счета
-Stock Ageing,Фото Старение
-Stock Analytics,Акции Аналитика
-Stock Assets,Фондовые активы
-Stock Balance,Фото со Баланс
+Stock,Запас
+Stock Adjustment,Регулирование запасов
+Stock Adjustment Account,Регулирование счета запасов
+Stock Ageing,Старение запасов
+Stock Analytics, Анализ запасов
+Stock Assets,"Капитал запасов
+"
+Stock Balance,Баланс запасов
 Stock Entries already created for Production Order ,
 Stock Entry,Фото Вступление
 Stock Entry Detail,Фото Вступление Подробно
@@ -2962,7 +2964,7 @@ Time Zones,Часовые пояса
 Time and Budget,Время и бюджет
 Time at which items were delivered from warehouse,"Момент, в который предметы были доставлены со склада"
 Time at which materials were received,"Момент, в который были получены материалы"
-Title,Как к вам обращаться?
+Title,Заголовок
 Titles for print templates e.g. Proforma Invoice.,"Титулы для шаблонов печати, например, счет-проформа."
 To,До
 To Currency,В валюту
@@ -2970,7 +2972,7 @@ To Date,Чтобы Дата
 To Date should be same as From Date for Half Day leave,"Чтобы Дата должна быть такой же, как С даты в течение половины дня отпуска"
 To Date should be within the Fiscal Year. Assuming To Date = {0},Чтобы Дата должна быть в пределах финансового года. Предполагая To Date = {0}
 To Discuss,Для Обсудить
-To Do List,Задачи
+To Do List,Список задач
 To Package No.,Для пакета №
 To Produce,Чтобы продукты
 To Time,Чтобы время
@@ -3159,7 +3161,7 @@ Walk In,Прогулка в
 Warehouse,Склад
 Warehouse Contact Info,Склад Контактная информация
 Warehouse Detail,Склад Подробно
-Warehouse Name,Склад Имя
+Warehouse Name,Название склада
 Warehouse and Reference,Склад и справочники
 Warehouse can not be deleted as stock ledger entry exists for this warehouse.,Склад не может быть удален как существует запись складе книга для этого склада.
 Warehouse can only be changed via Stock Entry / Delivery Note / Purchase Receipt,Склад может быть изменен только с помощью со входа / накладной / Покупка получении
@@ -3219,12 +3221,13 @@ Will be updated when billed.,Будет обновляться при счет.
 Wire Transfer,Банковский перевод
 With Operations,С операций
 With Period Closing Entry,С Период закрытия въезда
-Work Details,Рабочие Подробнее
+Work Details,"Подробности работы
+"
 Work Done,Сделано
 Work In Progress,Работа продолжается
 Work-in-Progress Warehouse,Работа-в-Прогресс Склад
 Work-in-Progress Warehouse is required before Submit,Работа-в-Прогресс Склад требуется перед Отправить
-Working,На рабо
+Working,Работающий
 Working Days,В рабочие дни
 Workstation,Рабочая станция
 Workstation Name,Имя рабочей станции
diff --git a/erpnext/translations/tr.csv b/erpnext/translations/tr.csv
index 67b2c24a6c..174c03f8f1 100644
--- a/erpnext/translations/tr.csv
+++ b/erpnext/translations/tr.csv
@@ -34,65 +34,65 @@
 "Add / Edit"," Ekle / Düzenle "
 "Add / Edit"," Ekle / Düzenle "
 "

Default Template

Uses Jinja Templating and all the fields of Address (including Custom Fields if any) will be available

{{ address_line1 }}<br>{% if address_line2 %}{{ address_line2 }}<br>{% endif -%}{{ city }}<br>{% if state %}{{ state }}<br>{% endif -%}{% if pincode %} PIN:  {{ pincode }}<br>{% endif -%}{{ country }}<br>{% if phone %}Phone: {{ phone }}<br>{% endif -%}{% if fax %}Fax: {{ fax }}<br>{% endif -%}{% if email_id %}Email: {{ email_id }}<br>{% endif -%}
","

Standart Şablon

Jinja Şablon Oluşturma ve Adres tüm alanları (kullanır Özel alanlar varsa) dahil olmak üzere mevcut olacaktır

  {{}} address_line1 
{% if address_line2%} {{}} address_line2
{ % endif -%} {{şehir}}
{% eğer devlet%} {{}} devlet
{% endif -%} {% if pinkodu%} PIN: {{}} pinkodu
{% endif -%} {{ülke}}
{% if telefon%} Telefon: {{}} telefon
{ % endif -%} {% if%} faks Faks: {{}} faks
{% endif -%} {% email_id%} E-posta ise: {{}} email_id
; {% endif -%} " -A Customer Group exists with same name please change the Customer name or rename the Customer Group,Bir Müşteri Grubu aynı adla Müşteri adını değiştirebilir veya Müşteri Grubu yeniden adlandırma lütfen +A Customer Group exists with same name please change the Customer name or rename the Customer Group,Aynı adlı bir Müşteri Grubu bulunmaktadır. Lütfen Müşteri Grubu ismini değiştirin. A Customer exists with same name,Bir Müşteri aynı adla A Lead with this email id should exist,Bu e-posta kimliği ile bir Kurşun bulunmalıdır A Product or Service,Bir Ürün veya Hizmet -A Supplier exists with same name,Bu Tedarikçi mevcut -A symbol for this currency. For e.g. $,Bu para için bir sembol. Örneğin $ için +A Supplier exists with same name,Aynı isimli bir Tedarikçi mevcuttur. +A symbol for this currency. For e.g. $,Para biriminiz için bir sembol girin. Örneğin $ AMC Expiry Date,AMC Son Kullanma Tarihi Abbr,Kısaltma -Abbreviation cannot have more than 5 characters,Kısaltma fazla 5 karakter olamaz -Above Value,Değer üstünde -Absent,Kimse yok -Acceptance Criteria,Kabul Kriterleri -Accepted,Kabul Edilen -Accepted + Rejected Qty must be equal to Received quantity for Item {0},Kabul + Reddedilen Miktar Ürün Alınan miktara eşit olması gerekir {0} +Abbreviation cannot have more than 5 characters,Kısaltma 5 karakterden fazla olamaz. +Above Value,Değerinin üstünde +Absent,Eksik +Acceptance Criteria,Onaylanma Kriterleri +Accepted,Onaylanmış +Accepted + Rejected Qty must be equal to Received quantity for Item {0},Onaylanan ve reddedilen miktarların toplamı alınan ürün miktarına eşit olmak zorundadır. {0} Accepted Quantity,Kabul edilen Miktar -Accepted Warehouse,Kabul Depo +Accepted Warehouse,Kabul edilen depo Account,Hesap Account Balance,Hesap Bakiyesi Account Created: {0},Hesap Oluşturuldu: {0} Account Details,Hesap Detayları -Account Head,Hesap Başkanı +Account Head,Hesap Başlığı Account Name,Hesap adı -Account Type,Hesap Türü -"Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'","Hesap bakiyesi zaten Kredi, sen ayarlamak için izin verilmez 'Debit' olarak 'Balance Olmalı'" -"Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'","Zaten Debit hesap bakiyesi, siz 'Kredi' Balance Olmalı 'ayarlamak için izin verilmez" -Account for the warehouse (Perpetual Inventory) will be created under this Account.,Depo (Devamlı Envanter) Hesap bu hesap altında oluşturulacaktır. -Account head {0} created,Hesap kafa {0} oluşturuldu +Account Type,Hesap Tipi +"Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'",Bakiye alacaklı durumdaysa borçlu duruma çevrilemez. +"Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'",Bakiye borçlu durumdaysa alacaklı duruma çevrilemez. +Account for the warehouse (Perpetual Inventory) will be created under this Account.,Depo hesabı (Devamlı Envanter) bu hesap altında oluşturulacaktır. +Account head {0} created,Hesap başlığı {0} oluşturuldu Account must be a balance sheet account,Hesabınız bir bilanço hesabı olmalıdır -Account with child nodes cannot be converted to ledger,Çocuk düğümleri ile hesap defterine dönüştürülebilir olamaz -Account with existing transaction can not be converted to group.,Mevcut işlem ile hesap grubuna dönüştürülemez. -Account with existing transaction can not be deleted,Mevcut işlem ile hesap silinemez -Account with existing transaction cannot be converted to ledger,Mevcut işlem ile hesap defterine dönüştürülebilir olamaz +Account with child nodes cannot be converted to ledger,Çocuk düğümlü hesaplar muhasebe defterine dönüştürülemez. +Account with existing transaction can not be converted to group.,İşlem görmüş hesaplar gruba dönüştürülemez. +Account with existing transaction can not be deleted,İşlem görmüş hesaplar silinemez. +Account with existing transaction cannot be converted to ledger,İşlem görmüş hesaplar muhasebe defterine dönüştürülemez. Account {0} cannot be a Group,Hesap {0} Grup olamaz -Account {0} does not belong to Company {1},Hesap {0} Şirket'e ait olmayan {1} -Account {0} does not belong to company: {1},Hesap {0} şirkete ait değil: {1} +Account {0} does not belong to Company {1},Hesap {0} Şirkete ait değil {1} +Account {0} does not belong to company: {1},Hesap {0} Şirkete ait değil: {1} Account {0} does not exist,Hesap {0} yok -Account {0} has been entered more than once for fiscal year {1},Hesap {0} daha fazla mali yıl için birden çok kez girildi {1} -Account {0} is frozen,Hesap {0} dondu +Account {0} has been entered more than once for fiscal year {1},Hesap {0} bir mali yıl içerisinde birden fazla girildi {1} +Account {0} is frozen,Hesap {0} donduruldu Account {0} is inactive,Hesap {0} etkin değil Account {0} is not valid,Hesap {0} geçerli değil Account {0} must be of type 'Fixed Asset' as Item {1} is an Asset Item,Öğe {1} bir Varlık Öğe olduğu gibi hesap {0} türündeki 'Demirbaş' olmalı Account {0}: Parent account {1} can not be a ledger,Hesap {0}: Ana hesap {1} bir defter olamaz Account {0}: Parent account {1} does not belong to company: {2},Hesap {0}: Ana hesap {1} şirkete ait değil: {2} Account {0}: Parent account {1} does not exist,Hesap {0}: Ana hesap {1} yok -Account {0}: You can not assign itself as parent account,Hesap {0}: Siz ebeveyn hesabı olarak atanamıyor -Account: {0} can only be updated via \ Stock Transactions,Hesap: \ Stok İşlemler {0} sadece aracılığıyla güncellenebilir +Account {0}: You can not assign itself as parent account,Hesap {0}: Hesabınız ebeveyn hesabı olarak atanamıyor. +Account: {0} can only be updated via \ Stock Transactions,Hesap: {0} sadece stok işlemler aracılığıyla güncellenebilir Accountant,Muhasebeci Accounting,Muhasebe -"Accounting Entries can be made against leaf nodes, called","Muhasebe Yazılar denilen, yaprak düğümlere karşı yapılabilir" -"Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.","Muhasebe entry bu tarihe kadar dondurulmuş, kimse / aşağıda belirtilen rolü dışında girdisini değiştirin yapabilirsiniz." +"Accounting Entries can be made against leaf nodes, called",Muhasebe girişleri yaprak düğümlere karşı yapılabilir. +"Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.","Muhasebe girişi bu tarihe kadar dondurulmuş, kimse / aşağıda belirtilen rolü dışında bir girdi değiştiremez." Accounting journal entries.,Muhasebe günlük girişleri. Accounts,Hesaplar -Accounts Browser,Hesapları Tarayıcı -Accounts Frozen Upto,Dondurulmuş kadar Hesapları -Accounts Payable,Borç Hesapları +Accounts Browser,Hesap Tarayıcı +Accounts Frozen Upto,Dondurulmuş hesaplar +Accounts Payable,Vadesi gelmiş hesaplar Accounts Receivable,Alacak hesapları -Accounts Settings,Ayarları Hesapları +Accounts Settings,Hesap ayarları Active,Etkin -Active: Will extract emails from , +Active: Will extract emails from ,Etkin: E-maillerden ayrılacak Activity,Aktivite Activity Log,Etkinlik Günlüğü Activity Log:,Etkinlik Günlüğü: @@ -107,7 +107,7 @@ Actual Posting Date,Gerçek Gönderme Tarihi Actual Qty,Gerçek Adet Actual Qty (at source/target),Fiili Miktar (kaynak / hedef) Actual Qty After Transaction,İşlem sonrası gerçek Adet -Actual Qty: Quantity available in the warehouse.,Gerçek Adet: depoda mevcut miktarı. +Actual Qty: Quantity available in the warehouse.,Gerçek Adet: depoda mevcut miktar. Actual Quantity,Gerçek Miktar Actual Start Date,Fiili Başlangıç ​​Tarihi Add,Ekle @@ -299,32 +299,32 @@ Average Discount,Ortalama İndirim Awesome Products,Başar Ürünler Awesome Services,Başar Hizmetleri BOM Detail No,BOM Detay yok -BOM Explosion Item,BOM Patlama Ürün +BOM Explosion Item,BOM Ani artış yaşayan ürün BOM Item,BOM Ürün -BOM No,BOM yok -BOM No. for a Finished Good Item,Bir Biten İyi Ürün için BOM No +BOM No,BOM numarası +BOM No. for a Finished Good Item,Biten İyi Ürün için BOM numarası BOM Operation,BOM Operasyonu BOM Operations,BOM İşlemleri BOM Replace Tool,BOM Aracı değiştirin BOM number is required for manufactured Item {0} in row {1},BOM numara imal Öğe için gereklidir {0} üst üste {1} -BOM number not allowed for non-manufactured Item {0} in row {1},Non-Üretilen Ürün için izin BOM sayı {0} üst üste {1} +BOM number not allowed for non-manufactured Item {0} in row {1},Üretilmemiş ürün için BOM sayısı verilmez{0} BOM recursion: {0} cannot be parent or child of {2},BOM özyineleme: {0} ebeveyn veya çocuk olamaz {2} BOM replaced,BOM yerine BOM {0} for Item {1} in row {2} is inactive or not submitted,BOM {0} öğesi için {1} üste {2} teslim inaktif ya da değildir BOM {0} is not active or not submitted,BOM {0} teslim aktif ya da değil değil BOM {0} is not submitted or inactive BOM for Item {1},BOM {0} teslim veya değildir inaktif BOM Ürün için {1} -Backup Manager,Backup Manager -Backup Right Now,Yedekleme Right Now -Backups will be uploaded to,Yedekler yüklenir +Backup Manager,Yedek Yöneticisi +Backup Right Now,Yedek Kullanılabilir +Backups will be uploaded to,Yedekler yüklenecek Balance Qty,Denge Adet Balance Sheet,Bilanço Balance Value,Denge Değeri -Balance for Account {0} must always be {1},{0} her zaman olmalı Hesabı dengelemek {1} -Balance must be,Denge olmalı -"Balances of Accounts of type ""Bank"" or ""Cash""","Tip ""Banka"" Hesap bakiyeleri veya ""Nakit""" +Balance for Account {0} must always be {1},Hesap {0} her zaman dengede olmalı {1} +Balance must be,Hesap olmalı +"Balances of Accounts of type ""Bank"" or ""Cash""",Banka ve Nakit denge hesapları Bank,Banka Bank / Cash Account,Banka / Kasa Hesabı -Bank A/C No.,Bank A / C No +Bank A/C No.,Banka A / C Numarası Bank Account,Banka Hesabı Bank Account No.,Banka Hesap No Bank Accounts,Banka Hesapları @@ -339,47 +339,47 @@ Bank Voucher,Banka Çeki Bank/Cash Balance,Banka / Nakit Dengesi Banking,Bankacılık Barcode,Barkod -Barcode {0} already used in Item {1},Barkod {0} zaten Öğe kullanılan {1} +Barcode {0} already used in Item {1},Barkod {0} zaten öğede kullanılmakta{1} Based On,Göre Basic,Temel Basic Info,Temel Bilgiler Basic Information,Temel Bilgi -Basic Rate,Temel Oranı -Basic Rate (Company Currency),Basic Rate (Şirket para birimi) +Basic Rate,Temel Oran +Basic Rate (Company Currency),Temel oran (Şirket para birimi) Batch,Yığın Batch (lot) of an Item.,Bir Öğe toplu (lot). -Batch Finished Date,Toplu bitirdi Tarih -Batch ID,Toplu Kimliği +Batch Finished Date,Parti bitiş tarihi +Batch ID,Parti Kimliği Batch No,Parti No -Batch Started Date,Toplu Tarihi başladı -Batch Time Logs for billing.,Fatura için Toplu Saat Kayıtlar. +Batch Started Date,Parti başlangıç tarihi +Batch Time Logs for billing.,Fatura için parti kayıt zamanı Batch-Wise Balance History,Toplu-Wise Dengesi Tarihi -Batched for Billing,Fatura için batched +Batched for Billing,Fatura için gruplanmış Better Prospects,Iyi Beklentiler -Bill Date,Bill Tarih -Bill No,Fatura yok -Bill No {0} already booked in Purchase Invoice {1},Bill Hayır {0} zaten Satınalma Fatura rezervasyonu {1} -Bill of Material,Malzeme Listesi -Bill of Material to be considered for manufacturing,Üretim için dikkat edilmesi gereken Malzeme Bill -Bill of Materials (BOM),Malzeme Listesi (BOM) +Bill Date,Fatura tarihi +Bill No,Fatura numarası +Bill No {0} already booked in Purchase Invoice {1},Fatura numarası{0} Alım faturası zaten kayıtlı {1} +Bill of Material,Materyal faturası +Bill of Material to be considered for manufacturing,Üretim için incelenecek materyal faturası +Bill of Materials (BOM),Ürün Ağacı (BOM) Billable,Faturalandırılabilir -Billed,Gagalı +Billed,Faturalanmış Billed Amount,Faturalı Tutar Billed Amt,Faturalı Tutarı -Billing,Ödeme -Billing Address,Fatura Adresi +Billing,Faturalama +Billing Address,Faturalama Adresi Billing Address Name,Fatura Adresi Adı Billing Status,Fatura Durumu -Bills raised by Suppliers.,Tedarikçiler tarafından dile Bono. -Bills raised to Customers.,Müşteriler kaldırdı Bono. +Bills raised by Suppliers.,Tedarikçiler tarafından yükseltilmiş faturalar. +Bills raised to Customers.,Müşterilere yükseltilmiş faturalar. Bin,Kutu -Bio,Bio +Bio,Biyo Biotechnology,Biyoteknoloji Birthday,Doğum günü Block Date,Blok Tarih Block Days,Blok Gün -Block leave applications by department.,Departmanı tarafından izin uygulamaları engellemek. -Blog Post,Blog Post +Block leave applications by department.,Departman tarafından engellenen uygulamalar. +Blog Post,Blog postası Blog Subscriber,Blog Abone Blood Group,Kan grubu Both Warehouse must belong to same Company,Hem Depo Aynı Şirkete ait olmalıdır @@ -406,13 +406,13 @@ Bundle items at time of sale.,Satış zamanında ürün Bundle. Business Development Manager,İş Geliştirme Müdürü Buying,Satın alma Buying & Selling,Alış ve Satış -Buying Amount,Tutar Alış +Buying Amount,Alış Tutarı Buying Settings,Ayarları Alma "Buying must be checked, if Applicable For is selected as {0}","Uygulanabilir için seçilmiş ise satın alma, kontrol edilmelidir {0}" -C-Form,C-Form +C-Form,C-Formu C-Form Applicable,Uygulanabilir C-Formu C-Form Invoice Detail,C-Form Fatura Ayrıntısı -C-Form No,C-Form +C-Form No,C-Form Numarası C-Form records,C-Form kayıtları CENVAT Capital Goods,CENVAT Sermaye Malı CENVAT Edu Cess,CENVAT Edu Cess @@ -422,17 +422,17 @@ CENVAT Service Tax Cess 1,CENVAT Hizmet Vergisi Cess 1 CENVAT Service Tax Cess 2,CENVAT Hizmet Vergisi Vergisi 2 Calculate Based On,Tabanlı hesaplayın Calculate Total Score,Toplam Puan Hesapla -Calendar Events,Takvim Olayları +Calendar Events,Takvim etkinlikleri Call,Çağrı Calls,Aramalar Campaign,Kampanya Campaign Name,Kampanya Adı Campaign Name is required,Kampanya Adı gereklidir -Campaign Naming By,Kampanya İsimlendirme tarafından -Campaign-.####,Kampanya.# # # # -Can be approved by {0},{0} tarafından onaylanmış olabilir -"Can not filter based on Account, if grouped by Account","Hesap göre gruplandırılmış eğer, hesabına dayalı süzemezsiniz" -"Can not filter based on Voucher No, if grouped by Voucher","Çeki dayalı süzemezsiniz Hayır, Fiş göre gruplandırılmış eğer" +Campaign Naming By,Kampanya ... tarafından isimlendirilmiştir. +Campaign-.####,Kampanya-.#### +Can be approved by {0},{0} tarafından onaylanmış +"Can not filter based on Account, if grouped by Account","Hesap tarafından gruplandırma yapılmışsa, süzme hesap tabanlı yapılamaz." +"Can not filter based on Voucher No, if grouped by Voucher","Gruplandırma çek tarafından yapılmışsa, çek numarası tabanlı süzme yapılamaz." Can refer row only if the charge type is 'On Previous Row Amount' or 'Previous Row Total',Şarj tipi veya 'Sıra Önceki Toplamı' 'Sıra Önceki Tutar Açık' ise satır başvurabilirsiniz Cancel Material Visit {0} before cancelling this Customer Issue,İptal Malzeme ziyaret {0} Bu Müşteri Sayımız iptalinden önce Cancel Material Visits {0} before cancelling this Maintenance Visit,Bu Bakım Ziyaret iptalinden önce Malzeme Ziyaretler {0} İptal From 2d414706dcaf15344a6e521ccf5e382db6e041c4 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 21 Oct 2014 11:49:17 +0530 Subject: [PATCH 56/56] [hotfix] translation boo boo --- erpnext/translations/es.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/translations/es.csv b/erpnext/translations/es.csv index 356691928d..0fe2847998 100644 --- a/erpnext/translations/es.csv +++ b/erpnext/translations/es.csv @@ -2746,7 +2746,7 @@ Statement of Account,Estado de cuenta Static Parameters,Parámetros estáticos Status,estado Status must be one of {0},Estado debe ser uno de {0} -Status of {0} {1} is now {2},Situación de {0} {1} { 2 es ahora } +Status of {0} {1} is now {2},Situación de {0} {1} {2} es ahora Status updated to {0},Estado actualizado a {0} Statutory info and other general information about your Supplier,Información legal y otra información general acerca de su proveedor Stay Updated,Manténgase actualizado