diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..24f122a8d4 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +# Root editor config file +root = true + +# Common settings +[*] +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +charset = utf-8 + +# python, js indentation settings +[{*.py,*.js}] +indent_style = tab +indent_size = 4 diff --git a/.eslintrc b/.eslintrc index 757aa3caaf..d6f0f49363 100644 --- a/.eslintrc +++ b/.eslintrc @@ -5,7 +5,7 @@ "es6": true }, "parserOptions": { - "ecmaVersion": 6, + "ecmaVersion": 9, "sourceType": "module" }, "extends": "eslint:recommended", @@ -15,6 +15,14 @@ "tab", { "SwitchCase": 1 } ], + "brace-style": [ + "error", + "1tbs" + ], + "space-unary-ops": [ + "error", + { "words": true } + ], "linebreak-style": [ "error", "unix" @@ -44,12 +52,10 @@ "no-control-regex": [ "off" ], - "spaced-comment": [ - "warn" - ], - "no-trailing-spaces": [ - "warn" - ] + "space-before-blocks": "warn", + "keyword-spacing": "warn", + "comma-spacing": "warn", + "key-spacing": "warn" }, "root": true, "globals": { diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..26bb7ab280 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Community Forum + url: https://discuss.erpnext.com/ + about: For general QnA, discussions and community help. diff --git a/.travis/site_config.json b/.travis/site_config.json index dae80095d4..572bbd0853 100644 --- a/.travis/site_config.json +++ b/.travis/site_config.json @@ -9,5 +9,6 @@ "root_login": "root", "root_password": "travis", "host_name": "http://test_site:8000", - "install_apps": ["erpnext"] + "install_apps": ["erpnext"], + "throttle_user_limit": 100 } \ No newline at end of file diff --git a/README.md b/README.md index 0f6a52142b..15782a2e0c 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@

ERP made simple

-[![Build Status](https://travis-ci.com/frappe/erpnext.svg)](https://travis-ci.com/frappe/erpnext) +[![Build Status](https://api.travis-ci.com/frappe/erpnext.svg?branch=develop)](https://travis-ci.com/frappe/erpnext) [![Open Source Helpers](https://www.codetriage.com/frappe/erpnext/badges/users.svg)](https://www.codetriage.com/frappe/erpnext) [![Coverage Status](https://coveralls.io/repos/github/frappe/erpnext/badge.svg?branch=develop)](https://coveralls.io/github/frappe/erpnext?branch=develop) diff --git a/erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.py b/erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.py index 39bf4b053a..85f54f98ba 100644 --- a/erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.py +++ b/erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.py @@ -6,9 +6,8 @@ import frappe, json from frappe import _ from frappe.utils import add_to_date, date_diff, getdate, nowdate, get_last_day, formatdate, get_link_to_form from erpnext.accounts.report.general_ledger.general_ledger import execute -from frappe.utils.dashboard import cache_source, get_from_date_from_timespan -from frappe.desk.doctype.dashboard_chart.dashboard_chart import get_period_ending - +from frappe.utils.dashboard import cache_source +from frappe.utils.dateutils import get_from_date_from_timespan, get_period_ending from frappe.utils.nestedset import get_descendants_of @frappe.whitelist() diff --git a/erpnext/accounts/desk_page/accounting/accounting.json b/erpnext/accounts/desk_page/accounting/accounting.json index b0371e7c09..a18dbffd9a 100644 --- a/erpnext/accounts/desk_page/accounting/accounting.json +++ b/erpnext/accounts/desk_page/accounting/accounting.json @@ -23,7 +23,7 @@ { "hidden": 0, "label": "Reports", - "links": "[\n {\n \"dependencies\": [\n \"GL Entry\"\n ],\n \"doctype\": \"GL Entry\",\n \"is_query_report\": true,\n \"label\": \"Trial Balance for Party\",\n \"name\": \"Trial Balance for Party\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Journal Entry\"\n ],\n \"doctype\": \"Journal Entry\",\n \"is_query_report\": true,\n \"label\": \"Payment Period Based On Invoice Date\",\n \"name\": \"Payment Period Based On Invoice Date\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Invoice\"\n ],\n \"doctype\": \"Sales Invoice\",\n \"is_query_report\": true,\n \"label\": \"Sales Partners Commission\",\n \"name\": \"Sales Partners Commission\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Customer\"\n ],\n \"doctype\": \"Customer\",\n \"is_query_report\": true,\n \"label\": \"Customer Credit Balance\",\n \"name\": \"Customer Credit Balance\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Invoice\"\n ],\n \"doctype\": \"Sales Invoice\",\n \"is_query_report\": true,\n \"label\": \"Sales Payment Summary\",\n \"name\": \"Sales Payment Summary\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Address\"\n ],\n \"doctype\": \"Address\",\n \"is_query_report\": true,\n \"label\": \"Address And Contacts\",\n \"name\": \"Address And Contacts\",\n \"type\": \"report\"\n }\n]" + "links": "[\n {\n \"dependencies\": [\n \"GL Entry\"\n ],\n \"doctype\": \"GL Entry\",\n \"is_query_report\": true,\n \"label\": \"Trial Balance for Party\",\n \"name\": \"Trial Balance for Party\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Journal Entry\"\n ],\n \"doctype\": \"Journal Entry\",\n \"is_query_report\": true,\n \"label\": \"Payment Period Based On Invoice Date\",\n \"name\": \"Payment Period Based On Invoice Date\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Invoice\"\n ],\n \"doctype\": \"Sales Invoice\",\n \"is_query_report\": true,\n \"label\": \"Sales Partners Commission\",\n \"name\": \"Sales Partners Commission\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Customer\"\n ],\n \"doctype\": \"Customer\",\n \"is_query_report\": true,\n \"label\": \"Customer Credit Balance\",\n \"name\": \"Customer Credit Balance\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Invoice\"\n ],\n \"doctype\": \"Sales Invoice\",\n \"is_query_report\": true,\n \"label\": \"Sales Payment Summary\",\n \"name\": \"Sales Payment Summary\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Address\"\n ],\n \"doctype\": \"Address\",\n \"is_query_report\": true,\n \"label\": \"Address And Contacts\",\n \"name\": \"Address And Contacts\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"GL Entry\"\n ],\n \"doctype\": \"GL Entry\",\n \"is_query_report\": true,\n \"label\": \"DATEV Export\",\n \"name\": \"DATEV\",\n \"type\": \"report\"\n }\n]" }, { "hidden": 0, @@ -43,7 +43,7 @@ { "hidden": 0, "label": "Bank Statement", - "links": "[\n {\n \"label\": \"Bank\",\n \"name\": \"Bank\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Bank Account\",\n \"name\": \"Bank Account\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Bank Statement Transaction Entry\",\n \"name\": \"Bank Statement Transaction Entry\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Bank Statement Settings\",\n \"name\": \"Bank Statement Settings\",\n \"type\": \"doctype\"\n }\n]" + "links": "[\n {\n \"label\": \"Bank\",\n \"name\": \"Bank\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Bank Account\",\n \"name\": \"Bank Account\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Bank Clearance\",\n \"name\": \"Bank Clearance\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Bank Reconciliation\",\n \"name\": \"bank-reconciliation\",\n \"type\": \"page\"\n },\n {\n \"dependencies\": [\n \"GL Entry\"\n ],\n \"doctype\": \"GL Entry\",\n \"is_query_report\": true,\n \"label\": \"Bank Reconciliation Statement\",\n \"name\": \"Bank Reconciliation Statement\",\n \"type\": \"report\"\n }\n]" }, { "hidden": 0, @@ -79,6 +79,11 @@ "hidden": 0, "label": "Profitability", "links": "[\n {\n \"dependencies\": [\n \"Sales Invoice\"\n ],\n \"doctype\": \"Sales Invoice\",\n \"is_query_report\": true,\n \"label\": \"Gross Profit\",\n \"name\": \"Gross Profit\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"GL Entry\"\n ],\n \"doctype\": \"GL Entry\",\n \"is_query_report\": true,\n \"label\": \"Profitability Analysis\",\n \"name\": \"Profitability Analysis\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Invoice\"\n ],\n \"doctype\": \"Sales Invoice\",\n \"is_query_report\": true,\n \"label\": \"Sales Invoice Trends\",\n \"name\": \"Sales Invoice Trends\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Purchase Invoice\"\n ],\n \"doctype\": \"Purchase Invoice\",\n \"is_query_report\": true,\n \"label\": \"Purchase Invoice Trends\",\n \"name\": \"Purchase Invoice Trends\",\n \"type\": \"report\"\n }\n]" + }, + { + "hidden": 0, + "label": "Value-Added Tax (VAT UAE)", + "links": "[\n {\n \"country\": \"United Arab Emirates\",\n \"label\": \"UAE VAT Settings\",\n \"name\": \"UAE VAT Settings\",\n \"type\": \"doctype\"\n },\n {\n \"country\": \"United Arab Emirates\",\n \"is_query_report\": true,\n \"label\": \"UAE VAT 201\",\n \"name\": \"UAE VAT 201\",\n \"type\": \"report\"\n }\n\n]" } ], "category": "Modules", @@ -98,7 +103,7 @@ "idx": 0, "is_standard": 1, "label": "Accounting", - "modified": "2020-10-08 20:31:46.022470", + "modified": "2020-11-11 18:35:11.542909", "modified_by": "Administrator", "module": "Accounts", "name": "Accounting", @@ -108,7 +113,7 @@ "pin_to_top": 0, "shortcuts": [ { - "label": "Chart of Accounts", + "label": "Chart Of Accounts", "link_to": "Account", "type": "DocType" }, diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py b/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py index 6c83e3bd67..acb11e557a 100644 --- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py @@ -245,6 +245,9 @@ def get(): "account_number": "2200" }, _("Duties and Taxes"): { + _("TDS Payable"): { + "account_number": "2310" + }, "account_type": "Tax", "is_group": 1, "account_number": "2300" diff --git a/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py b/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py index 27546335c9..e9fc5f0a1d 100644 --- a/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py +++ b/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py @@ -9,11 +9,13 @@ from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sal from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry from erpnext.accounts.page.bank_reconciliation.bank_reconciliation import reconcile, get_linked_payments +from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile test_dependencies = ["Item", "Cost Center"] class TestBankTransaction(unittest.TestCase): def setUp(self): + make_pos_profile() add_transactions() add_payments() @@ -27,6 +29,9 @@ class TestBankTransaction(unittest.TestCase): frappe.db.sql("""delete from `tabPayment Entry Reference`""") frappe.db.sql("""delete from `tabPayment Entry`""") + # Delete POS Profile + frappe.db.sql("delete from `tabPOS Profile`") + frappe.flags.test_bank_transactions_created = False frappe.flags.test_payments_created = False diff --git a/erpnext/accounts/doctype/budget/test_budget.py b/erpnext/accounts/doctype/budget/test_budget.py index 61c48c7499..0f115f9cc2 100644 --- a/erpnext/accounts/doctype/budget/test_budget.py +++ b/erpnext/accounts/doctype/budget/test_budget.py @@ -158,8 +158,11 @@ class TestBudget(unittest.TestCase): set_total_expense_zero(nowdate(), "cost_center") budget = make_budget(budget_against="Cost Center") + month = now_datetime().month + if month > 10: + month = 10 - for i in range(now_datetime().month): + for i in range(month): jv = make_journal_entry("_Test Account Cost for Goods Sold - _TC", "_Test Bank - _TC", 20000, "_Test Cost Center - _TC", posting_date=nowdate(), submit=True) @@ -177,8 +180,11 @@ class TestBudget(unittest.TestCase): set_total_expense_zero(nowdate(), "project") budget = make_budget(budget_against="Project") + month = now_datetime().month + if month > 10: + month = 10 - for i in range(now_datetime().month): + for i in range(month): jv = make_journal_entry("_Test Account Cost for Goods Sold - _TC", "_Test Bank - _TC", 20000, "_Test Cost Center - _TC", posting_date=nowdate(), submit=True, project="_Test Project") diff --git a/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js b/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js index 2235298201..f795dfa83e 100644 --- a/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js +++ b/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js @@ -94,8 +94,7 @@ frappe.ui.form.on('Chart of Accounts Importer', { callback: function(r) { if(r.message===false) { frm.set_value("company", ""); - frappe.throw(__(`Transactions against the company already exist! - Chart Of accounts can be imported for company with no transactions`)); + frappe.throw(__("Transactions against the Company already exist! Chart of Accounts can only be imported for a Company with no transactions.")); } else { frm.trigger("refresh"); } diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.js b/erpnext/accounts/doctype/fiscal_year/fiscal_year.js index 152e17dbc8..bc77dac1cd 100644 --- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.js +++ b/erpnext/accounts/doctype/fiscal_year/fiscal_year.js @@ -9,11 +9,7 @@ frappe.ui.form.on('Fiscal Year', { } }, refresh: function (frm) { - let doc = frm.doc; - frm.toggle_enable('year_start_date', doc.__islocal); - frm.toggle_enable('year_end_date', doc.__islocal); - - if (!doc.__islocal && (doc.name != frappe.sys_defaults.fiscal_year)) { + if (!frm.doc.__islocal && (frm.doc.name != frappe.sys_defaults.fiscal_year)) { frm.add_custom_button(__("Set as Default"), () => frm.events.set_as_default(frm)); frm.set_intro(__("To set this Fiscal Year as Default, click on 'Set as Default'")); } else { @@ -24,8 +20,10 @@ frappe.ui.form.on('Fiscal Year', { return frm.call('set_as_default'); }, year_start_date: function(frm) { - let year_end_date = - frappe.datetime.add_days(frappe.datetime.add_months(frm.doc.year_start_date, 12), -1); - frm.set_value("year_end_date", year_end_date); + if (!frm.doc.is_short_year) { + let year_end_date = + frappe.datetime.add_days(frappe.datetime.add_months(frm.doc.year_start_date, 12), -1); + frm.set_value("year_end_date", year_end_date); + } }, }); diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.json b/erpnext/accounts/doctype/fiscal_year/fiscal_year.json index 4ca9f6b96f..5ab91f2506 100644 --- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.json +++ b/erpnext/accounts/doctype/fiscal_year/fiscal_year.json @@ -1,347 +1,126 @@ { - "allow_copy": 0, - "allow_guest_to_view": 0, - "allow_import": 1, - "allow_rename": 0, - "autoname": "field:year", - "beta": 0, - "creation": "2013-01-22 16:50:25", - "custom": 0, - "description": "**Fiscal Year** represents a Financial Year. All accounting entries and other major transactions are tracked against **Fiscal Year**.", - "docstatus": 0, - "doctype": "DocType", - "document_type": "Setup", - "editable_grid": 0, + "actions": [], + "allow_import": 1, + "autoname": "field:year", + "creation": "2013-01-22 16:50:25", + "description": "**Fiscal Year** represents a Financial Year. All accounting entries and other major transactions are tracked against **Fiscal Year**.", + "doctype": "DocType", + "document_type": "Setup", + "engine": "InnoDB", + "field_order": [ + "year", + "disabled", + "is_short_year", + "year_start_date", + "year_end_date", + "companies", + "auto_created" + ], "fields": [ { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "description": "For e.g. 2012, 2012-13", - "fieldname": "year", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Year Name", - "length": 0, - "no_copy": 0, - "oldfieldname": "year", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "description": "For e.g. 2012, 2012-13", + "fieldname": "year", + "fieldtype": "Data", + "in_list_view": 1, + "label": "Year Name", + "oldfieldname": "year", + "oldfieldtype": "Data", + "reqd": 1, + "unique": 1 + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "disabled", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Disabled", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "default": "0", + "fieldname": "disabled", + "fieldtype": "Check", + "label": "Disabled" + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "year_start_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Year Start Date", - "length": 0, - "no_copy": 1, - "oldfieldname": "year_start_date", - "oldfieldtype": "Date", - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "year_start_date", + "fieldtype": "Date", + "in_list_view": 1, + "label": "Year Start Date", + "no_copy": 1, + "oldfieldname": "year_start_date", + "oldfieldtype": "Date", + "reqd": 1, + "set_only_once": 1 + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "year_end_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Year End Date", - "length": 0, - "no_copy": 1, - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "year_end_date", + "fieldtype": "Date", + "in_list_view": 1, + "label": "Year End Date", + "no_copy": 1, + "reqd": 1, + "set_only_once": 1 + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "companies", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Companies", - "length": 0, - "no_copy": 0, - "options": "Fiscal Year Company", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "companies", + "fieldtype": "Table", + "label": "Companies", + "options": "Fiscal Year Company" + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "0", - "fieldname": "auto_created", - "fieldtype": "Check", - "hidden": 1, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Auto Created", - "length": 0, - "no_copy": 1, - "permlevel": 0, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 + "default": "0", + "fieldname": "auto_created", + "fieldtype": "Check", + "hidden": 1, + "label": "Auto Created", + "no_copy": 1, + "print_hide": 1, + "read_only": 1 + }, + { + "default": "0", + "description": "Less than 12 months.", + "fieldname": "is_short_year", + "fieldtype": "Check", + "label": "Is Short Year", + "set_only_once": 1 } - ], - "has_web_view": 0, - "hide_heading": 0, - "hide_toolbar": 0, - "icon": "fa fa-calendar", - "idx": 1, - "image_view": 0, - "in_create": 0, - "is_submittable": 0, - "issingle": 0, - "istable": 0, - "max_attachments": 0, - "modified": "2018-04-25 14:21:41.273354", - "modified_by": "Administrator", - "module": "Accounts", - "name": "Fiscal Year", - "owner": "Administrator", + ], + "icon": "fa fa-calendar", + "idx": 1, + "links": [], + "modified": "2020-11-05 12:16:53.081573", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Fiscal Year", + "owner": "Administrator", "permissions": [ { - "amend": 0, - "cancel": 0, - "create": 1, - "delete": 1, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "System Manager", - "set_user_permissions": 0, - "share": 1, - "submit": 0, + "create": 1, + "delete": 1, + "email": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, "write": 1 - }, + }, { - "amend": 0, - "cancel": 0, - "create": 0, - "delete": 0, - "email": 0, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 0, - "read": 1, - "report": 0, - "role": "Sales User", - "set_user_permissions": 0, - "share": 0, - "submit": 0, - "write": 0 - }, + "read": 1, + "role": "Sales User" + }, { - "amend": 0, - "cancel": 0, - "create": 0, - "delete": 0, - "email": 0, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 0, - "read": 1, - "report": 0, - "role": "Purchase User", - "set_user_permissions": 0, - "share": 0, - "submit": 0, - "write": 0 - }, + "read": 1, + "role": "Purchase User" + }, { - "amend": 0, - "cancel": 0, - "create": 0, - "delete": 0, - "email": 0, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 0, - "read": 1, - "report": 0, - "role": "Accounts User", - "set_user_permissions": 0, - "share": 0, - "submit": 0, - "write": 0 - }, + "read": 1, + "role": "Accounts User" + }, { - "amend": 0, - "cancel": 0, - "create": 0, - "delete": 0, - "email": 0, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 0, - "read": 1, - "report": 0, - "role": "Stock User", - "set_user_permissions": 0, - "share": 0, - "submit": 0, - "write": 0 - }, + "read": 1, + "role": "Stock User" + }, { - "amend": 0, - "cancel": 0, - "create": 0, - "delete": 0, - "email": 0, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 0, - "read": 1, - "report": 0, - "role": "Employee", - "set_user_permissions": 0, - "share": 0, - "submit": 0, - "write": 0 + "read": 1, + "role": "Employee" } - ], - "quick_entry": 0, - "read_only": 0, - "read_only_onload": 0, - "show_name_in_global_search": 1, - "sort_field": "name", - "sort_order": "DESC", - "track_changes": 0, - "track_seen": 0 + ], + "show_name_in_global_search": 1, + "sort_field": "name", + "sort_order": "DESC" } \ No newline at end of file diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py b/erpnext/accounts/doctype/fiscal_year/fiscal_year.py index d80bc7fad1..da6a3fd2ef 100644 --- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py +++ b/erpnext/accounts/doctype/fiscal_year/fiscal_year.py @@ -36,6 +36,11 @@ class FiscalYear(Document): frappe.throw(_("Cannot change Fiscal Year Start Date and Fiscal Year End Date once the Fiscal Year is saved.")) def validate_dates(self): + if self.is_short_year: + # Fiscal Year can be shorter than one year, in some jurisdictions + # under certain circumstances. For example, in the USA and Germany. + return + if getdate(self.year_start_date) > getdate(self.year_end_date): frappe.throw(_("Fiscal Year Start Date should be one year earlier than Fiscal Year End Date"), FiscalYearIncorrectDate) @@ -116,12 +121,8 @@ def auto_create_fiscal_year(): pass def get_from_and_to_date(fiscal_year): - from_and_to_date_tuple = frappe.db.sql("""select year_start_date, year_end_date - from `tabFiscal Year` where name=%s""", (fiscal_year))[0] - - from_and_to_date = { - "from_date": from_and_to_date_tuple[0], - "to_date": from_and_to_date_tuple[1] - } - - return from_and_to_date + fields = [ + "year_start_date as from_date", + "year_end_date as to_date" + ] + return frappe.db.get_value("Fiscal Year", fiscal_year, fields, as_dict=1) diff --git a/erpnext/accounts/doctype/fiscal_year/test_fiscal_year.py b/erpnext/accounts/doctype/fiscal_year/test_fiscal_year.py index f7b7782766..cec4f4492d 100644 --- a/erpnext/accounts/doctype/fiscal_year/test_fiscal_year.py +++ b/erpnext/accounts/doctype/fiscal_year/test_fiscal_year.py @@ -11,6 +11,7 @@ test_records = frappe.get_test_records('Fiscal Year') test_ignore = ["Company"] class TestFiscalYear(unittest.TestCase): + def test_extra_year(self): if frappe.db.exists("Fiscal Year", "_Test Fiscal Year 2000"): frappe.delete_doc("Fiscal Year", "_Test Fiscal Year 2000") diff --git a/erpnext/accounts/doctype/fiscal_year/test_records.json b/erpnext/accounts/doctype/fiscal_year/test_records.json index d5723ca62b..44052535cb 100644 --- a/erpnext/accounts/doctype/fiscal_year/test_records.json +++ b/erpnext/accounts/doctype/fiscal_year/test_records.json @@ -1,4 +1,11 @@ [ + { + "doctype": "Fiscal Year", + "year": "_Test Short Fiscal Year 2011", + "is_short_year": 1, + "year_end_date": "2011-04-01", + "year_start_date": "2011-12-31" + }, { "doctype": "Fiscal Year", "year": "_Test Fiscal Year 2012", diff --git a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.py b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.py index 8083b21f75..af8940cde5 100644 --- a/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.py +++ b/erpnext/accounts/doctype/invoice_discounting/invoice_discounting.py @@ -137,11 +137,12 @@ class InvoiceDiscounting(AccountsController): "cost_center": erpnext.get_default_cost_center(self.company) }) - je.append("accounts", { - "account": self.bank_charges_account, - "debit_in_account_currency": flt(self.bank_charges), - "cost_center": erpnext.get_default_cost_center(self.company) - }) + if self.bank_charges: + je.append("accounts", { + "account": self.bank_charges_account, + "debit_in_account_currency": flt(self.bank_charges), + "cost_center": erpnext.get_default_cost_center(self.company) + }) je.append("accounts", { "account": self.short_term_loan, diff --git a/erpnext/accounts/doctype/invoice_discounting/test_invoice_discounting.py b/erpnext/accounts/doctype/invoice_discounting/test_invoice_discounting.py index 3d74d9a3b2..919dd0cba7 100644 --- a/erpnext/accounts/doctype/invoice_discounting/test_invoice_discounting.py +++ b/erpnext/accounts/doctype/invoice_discounting/test_invoice_discounting.py @@ -80,6 +80,7 @@ class TestInvoiceDiscounting(unittest.TestCase): short_term_loan=self.short_term_loan, bank_charges_account=self.bank_charges_account, bank_account=self.bank_account, + bank_charges=100 ) je = inv_disc.create_disbursement_entry() @@ -289,6 +290,7 @@ def create_invoice_discounting(invoices, **args): inv_disc.bank_account=args.bank_account inv_disc.loan_start_date = args.start or nowdate() inv_disc.loan_period = args.period or 30 + inv_disc.bank_charges = flt(args.bank_charges) for d in invoices: inv_disc.append("invoices", { diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.json b/erpnext/accounts/doctype/journal_entry/journal_entry.json index 4573c50134..b7bbb74ce9 100644 --- a/erpnext/accounts/doctype/journal_entry/journal_entry.json +++ b/erpnext/accounts/doctype/journal_entry/journal_entry.json @@ -1,5 +1,6 @@ { "actions": [], + "allow_auto_repeat": 1, "allow_import": 1, "autoname": "naming_series:", "creation": "2013-03-25 10:53:52", @@ -503,7 +504,7 @@ "idx": 176, "is_submittable": 1, "links": [], - "modified": "2020-06-02 18:15:46.955697", + "modified": "2020-10-30 13:56:01.121995", "modified_by": "Administrator", "module": "Accounts", "name": "Journal Entry", diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py index d8394785c6..cd712738aa 100644 --- a/erpnext/accounts/doctype/journal_entry/journal_entry.py +++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py @@ -34,6 +34,7 @@ class JournalEntry(AccountsController): self.validate_entries_for_advance() self.validate_multi_currency() self.set_amounts_in_company_currency() + self.validate_debit_credit_amount() self.validate_total_debit_and_credit() self.validate_against_jv() self.validate_reference_doc() @@ -339,8 +340,7 @@ class JournalEntry(AccountsController): currency=account_currency) if flt(voucher_total) < (flt(order.advance_paid) + total): - frappe.throw(_("Advance paid against {0} {1} cannot be greater \ - than Grand Total {2}").format(reference_type, reference_name, formatted_voucher_total)) + frappe.throw(_("Advance paid against {0} {1} cannot be greater than Grand Total {2}").format(reference_type, reference_name, formatted_voucher_total)) def validate_invoices(self): """Validate totals and docstatus for invoices""" @@ -369,6 +369,11 @@ class JournalEntry(AccountsController): if flt(d.debit > 0): d.against_account = ", ".join(list(set(accounts_credited))) if flt(d.credit > 0): d.against_account = ", ".join(list(set(accounts_debited))) + def validate_debit_credit_amount(self): + for d in self.get('accounts'): + if not flt(d.debit) and not flt(d.credit): + frappe.throw(_("Row {0}: Both Debit and Credit values cannot be zero").format(d.idx)) + def validate_total_debit_and_credit(self): self.set_total_debit_credit() if self.difference: diff --git a/erpnext/accounts/doctype/mode_of_payment/mode_of_payment.js b/erpnext/accounts/doctype/mode_of_payment/mode_of_payment.js index d3040c8db8..7a06d3572a 100644 --- a/erpnext/accounts/doctype/mode_of_payment/mode_of_payment.js +++ b/erpnext/accounts/doctype/mode_of_payment/mode_of_payment.js @@ -1,13 +1,17 @@ // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors // License: GNU General Public License v3. See license.txt -cur_frm.set_query("default_account", "accounts", function(doc, cdt, cdn) { - var d = locals[cdt][cdn]; - return{ - filters: [ - ['Account', 'account_type', 'in', 'Bank, Cash, Receivable'], - ['Account', 'is_group', '=', 0], - ['Account', 'company', '=', d.company] - ] - } -}); +frappe.ui.form.on('Mode of Payment', { + setup: function(frm) { + frm.set_query("default_account", "accounts", function(doc, cdt, cdn) { + let d = locals[cdt][cdn]; + return { + filters: [ + ['Account', 'account_type', 'in', 'Bank, Cash, Receivable'], + ['Account', 'is_group', '=', 0], + ['Account', 'company', '=', d.company] + ] + }; + }); + }, +}); \ No newline at end of file diff --git a/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py b/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py index d51856a8a4..ee2092adcc 100644 --- a/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py +++ b/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py @@ -155,7 +155,8 @@ class OpeningInvoiceCreationTool(Document): "posting_date": row.posting_date, frappe.scrub(row.party_type): row.party, "is_pos": 0, - "doctype": "Sales Invoice" if self.invoice_type == "Sales" else "Purchase Invoice" + "doctype": "Sales Invoice" if self.invoice_type == "Sales" else "Purchase Invoice", + "update_stock": 0 }) accounting_dimension = get_accounting_dimensions() diff --git a/erpnext/accounts/doctype/opening_invoice_creation_tool/test_opening_invoice_creation_tool.py b/erpnext/accounts/doctype/opening_invoice_creation_tool/test_opening_invoice_creation_tool.py index 54229f5247..bdfe532b9f 100644 --- a/erpnext/accounts/doctype/opening_invoice_creation_tool/test_opening_invoice_creation_tool.py +++ b/erpnext/accounts/doctype/opening_invoice_creation_tool/test_opening_invoice_creation_tool.py @@ -7,17 +7,24 @@ import frappe import unittest test_dependencies = ["Customer", "Supplier"] +from frappe.custom.doctype.property_setter.property_setter import make_property_setter from erpnext.accounts.doctype.opening_invoice_creation_tool.opening_invoice_creation_tool import get_temporary_opening_account class TestOpeningInvoiceCreationTool(unittest.TestCase): - def make_invoices(self, invoice_type="Sales"): + def setUp(self): + if not frappe.db.exists("Company", "_Test Opening Invoice Company"): + make_company() + + def make_invoices(self, invoice_type="Sales", company=None, party_1=None, party_2=None): doc = frappe.get_single("Opening Invoice Creation Tool") - args = get_opening_invoice_creation_dict(invoice_type=invoice_type) + args = get_opening_invoice_creation_dict(invoice_type=invoice_type, company=company, + party_1=party_1, party_2=party_2) doc.update(args) return doc.make_invoices() def test_opening_sales_invoice_creation(self): - invoices = self.make_invoices() + property_setter = make_property_setter("Sales Invoice", "update_stock", "default", 1, "Check") + invoices = self.make_invoices(company="_Test Opening Invoice Company") self.assertEqual(len(invoices), 2) expected_value = { @@ -27,6 +34,13 @@ class TestOpeningInvoiceCreationTool(unittest.TestCase): } self.check_expected_values(invoices, expected_value) + si = frappe.get_doc("Sales Invoice", invoices[0]) + + # Check if update stock is not enabled + self.assertEqual(si.update_stock, 0) + + property_setter.delete() + def check_expected_values(self, invoices, expected_value, invoice_type="Sales"): doctype = "Sales Invoice" if invoice_type == "Sales" else "Purchase Invoice" @@ -36,7 +50,7 @@ class TestOpeningInvoiceCreationTool(unittest.TestCase): self.assertEqual(si.get(field, ""), expected_value[invoice_idx][field_idx]) def test_opening_purchase_invoice_creation(self): - invoices = self.make_invoices(invoice_type="Purchase") + invoices = self.make_invoices(invoice_type="Purchase", company="_Test Opening Invoice Company") self.assertEqual(len(invoices), 2) expected_value = { @@ -46,6 +60,32 @@ class TestOpeningInvoiceCreationTool(unittest.TestCase): } self.check_expected_values(invoices, expected_value, "Purchase") + def test_opening_sales_invoice_creation_with_missing_debit_account(self): + company = "_Test Opening Invoice Company" + party_1, party_2 = make_customer("Customer A"), make_customer("Customer B") + + old_default_receivable_account = frappe.db.get_value("Company", company, "default_receivable_account") + frappe.db.set_value("Company", company, "default_receivable_account", "") + + if not frappe.db.exists("Cost Center", "_Test Opening Invoice Company - _TOIC"): + cc = frappe.get_doc({"doctype": "Cost Center", "cost_center_name": "_Test Opening Invoice Company", + "is_group": 1, "company": "_Test Opening Invoice Company"}) + cc.insert(ignore_mandatory=True) + cc2 = frappe.get_doc({"doctype": "Cost Center", "cost_center_name": "Main", "is_group": 0, + "company": "_Test Opening Invoice Company", "parent_cost_center": cc.name}) + cc2.insert() + + frappe.db.set_value("Company", company, "cost_center", "Main - _TOIC") + + self.make_invoices(company="_Test Opening Invoice Company", party_1=party_1, party_2=party_2) + + # Check if missing debit account error raised + error_log = frappe.db.exists("Error Log", {"error": ["like", "%erpnext.controllers.accounts_controller.AccountMissingError%"]}) + self.assertTrue(error_log) + + # teardown + frappe.db.set_value("Company", company, "default_receivable_account", old_default_receivable_account) + def get_opening_invoice_creation_dict(**args): party = "Customer" if args.get("invoice_type", "Sales") == "Sales" else "Supplier" company = args.get("company", "_Test Company") @@ -57,7 +97,7 @@ def get_opening_invoice_creation_dict(**args): { "qty": 1.0, "outstanding_amount": 300, - "party": "_Test {0}".format(party), + "party": args.get("party_1") or "_Test {0}".format(party), "item_name": "Opening Item", "due_date": "2016-09-10", "posting_date": "2016-09-05", @@ -66,7 +106,7 @@ def get_opening_invoice_creation_dict(**args): { "qty": 2.0, "outstanding_amount": 250, - "party": "_Test {0} 1".format(party), + "party": args.get("party_2") or "_Test {0} 1".format(party), "item_name": "Opening Item", "due_date": "2016-09-10", "posting_date": "2016-09-05", @@ -76,4 +116,31 @@ def get_opening_invoice_creation_dict(**args): }) invoice_dict.update(args) - return invoice_dict \ No newline at end of file + return invoice_dict + +def make_company(): + if frappe.db.exists("Company", "_Test Opening Invoice Company"): + return frappe.get_doc("Company", "_Test Opening Invoice Company") + + company = frappe.new_doc("Company") + company.company_name = "_Test Opening Invoice Company" + company.abbr = "_TOIC" + company.default_currency = "INR" + company.country = "India" + company.insert() + return company + +def make_customer(customer=None): + customer_name = customer or "Opening Customer" + customer = frappe.get_doc({ + "doctype": "Customer", + "customer_name": customer_name, + "customer_group": "All Customer Groups", + "customer_type": "Company", + "territory": "All Territories" + }) + if not frappe.db.exists("Customer", customer_name): + customer.insert(ignore_permissions=True) + return customer.name + else: + return frappe.db.exists("Customer", customer_name) \ No newline at end of file diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.json b/erpnext/accounts/doctype/payment_entry/payment_entry.json index 72149a665d..2e1f201e25 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.json +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.json @@ -1,5 +1,6 @@ { "actions": [], + "allow_auto_repeat": 1, "allow_import": 1, "autoname": "naming_series:", "creation": "2016-06-01 14:38:51.012597", @@ -587,7 +588,7 @@ "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2020-09-02 13:39:43.383705", + "modified": "2020-10-30 13:56:20.007336", "modified_by": "Administrator", "module": "Accounts", "name": "Payment Entry", diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py index 11ab02021b..31a4c8a387 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py @@ -202,17 +202,32 @@ class PaymentEntry(AccountsController): # if account_type not in account_types: # frappe.throw(_("Account Type for {0} must be {1}").format(account, comma_or(account_types))) - def set_exchange_rate(self): + def set_exchange_rate(self, ref_doc=None): + self.set_source_exchange_rate(ref_doc) + self.set_target_exchange_rate(ref_doc) + + def set_source_exchange_rate(self, ref_doc=None): if self.paid_from and not self.source_exchange_rate: if self.paid_from_account_currency == self.company_currency: self.source_exchange_rate = 1 else: - self.source_exchange_rate = get_exchange_rate(self.paid_from_account_currency, - self.company_currency, self.posting_date) + if ref_doc: + if self.paid_from_account_currency == ref_doc.currency: + self.source_exchange_rate = ref_doc.get("exchange_rate") + if not self.source_exchange_rate: + self.source_exchange_rate = get_exchange_rate(self.paid_from_account_currency, + self.company_currency, self.posting_date) + + def set_target_exchange_rate(self, ref_doc=None): if self.paid_to and not self.target_exchange_rate: - self.target_exchange_rate = get_exchange_rate(self.paid_to_account_currency, - self.company_currency, self.posting_date) + if ref_doc: + if self.paid_to_account_currency == ref_doc.currency: + self.target_exchange_rate = ref_doc.get("exchange_rate") + + if not self.target_exchange_rate: + self.target_exchange_rate = get_exchange_rate(self.paid_to_account_currency, + self.company_currency, self.posting_date) def validate_mandatory(self): for field in ("paid_amount", "received_amount", "source_exchange_rate", "target_exchange_rate"): @@ -282,9 +297,10 @@ class PaymentEntry(AccountsController): no_oustanding_refs.setdefault(d.reference_doctype, []).append(d) for k, v in no_oustanding_refs.items(): - frappe.msgprint(_("{} - {} now have {} as they had no outstanding amount left before submitting the Payment Entry.

\ - If this is undesirable please cancel the corresponding Payment Entry.") - .format(k, frappe.bold(", ".join([d.reference_name for d in v])), frappe.bold("negative outstanding amount")), + frappe.msgprint( + _("{} - {} now have {} as they had no outstanding amount left before submitting the Payment Entry.") + .format(k, frappe.bold(", ".join([d.reference_name for d in v])), frappe.bold("negative outstanding amount")) + + "

" + _("If this is undesirable please cancel the corresponding Payment Entry."), title=_("Warning"), indicator="orange") @@ -909,22 +925,24 @@ def get_reference_details(reference_doctype, reference_name, party_account_curre exchange_rate = 1 outstanding_amount = get_outstanding_on_journal_entry(reference_name) elif reference_doctype != "Journal Entry": - if party_account_currency == company_currency: - if ref_doc.doctype == "Expense Claim": + if ref_doc.doctype == "Expense Claim": total_amount = flt(ref_doc.total_sanctioned_amount) + flt(ref_doc.total_taxes_and_charges) - elif ref_doc.doctype == "Employee Advance": - total_amount = ref_doc.advance_amount - else: + elif ref_doc.doctype == "Employee Advance": + total_amount = ref_doc.advance_amount + exchange_rate = ref_doc.get("exchange_rate") + if party_account_currency != ref_doc.currency: + total_amount = flt(total_amount) * flt(exchange_rate) + if not total_amount: + if party_account_currency == company_currency: total_amount = ref_doc.base_grand_total - exchange_rate = 1 - else: - total_amount = ref_doc.grand_total - + exchange_rate = 1 + else: + total_amount = ref_doc.grand_total + if not exchange_rate: # Get the exchange rate from the original ref doc - # or get it based on the posting date of the ref doc + # or get it based on the posting date of the ref doc. exchange_rate = ref_doc.get("conversion_rate") or \ get_exchange_rate(party_account_currency, company_currency, ref_doc.posting_date) - if reference_doctype in ("Sales Invoice", "Purchase Invoice"): outstanding_amount = ref_doc.get("outstanding_amount") bill_no = ref_doc.get("bill_no") @@ -932,11 +950,15 @@ def get_reference_details(reference_doctype, reference_name, party_account_curre outstanding_amount = flt(ref_doc.get("total_sanctioned_amount")) + flt(ref_doc.get("total_taxes_and_charges"))\ - flt(ref_doc.get("total_amount_reimbursed")) - flt(ref_doc.get("total_advance_amount")) elif reference_doctype == "Employee Advance": - outstanding_amount = ref_doc.advance_amount - flt(ref_doc.paid_amount) + outstanding_amount = (flt(ref_doc.advance_amount) - flt(ref_doc.paid_amount)) + if party_account_currency != ref_doc.currency: + outstanding_amount = flt(outstanding_amount) * flt(exchange_rate) + if party_account_currency == company_currency: + exchange_rate = 1 else: outstanding_amount = flt(total_amount) - flt(ref_doc.advance_paid) else: - # Get the exchange rate based on the posting date of the ref doc + # Get the exchange rate based on the posting date of the ref doc. exchange_rate = get_exchange_rate(party_account_currency, company_currency, ref_doc.posting_date) @@ -948,102 +970,104 @@ def get_reference_details(reference_doctype, reference_name, party_account_curre "bill_no": bill_no }) +def get_amounts_based_on_reference_doctype(reference_doctype, ref_doc, party_account_currency, company_currency, reference_name): + total_amount, outstanding_amount, exchange_rate = None + if reference_doctype == "Fees": + total_amount = ref_doc.get("grand_total") + exchange_rate = 1 + outstanding_amount = ref_doc.get("outstanding_amount") + elif reference_doctype == "Dunning": + total_amount = ref_doc.get("dunning_amount") + exchange_rate = 1 + outstanding_amount = ref_doc.get("dunning_amount") + elif reference_doctype == "Journal Entry" and ref_doc.docstatus == 1: + total_amount = ref_doc.get("total_amount") + if ref_doc.multi_currency: + exchange_rate = get_exchange_rate(party_account_currency, company_currency, ref_doc.posting_date) + else: + exchange_rate = 1 + outstanding_amount = get_outstanding_on_journal_entry(reference_name) + + return total_amount, outstanding_amount, exchange_rate + +def get_amounts_based_on_ref_doc(reference_doctype, ref_doc, party_account_currency, company_currency): + total_amount, outstanding_amount, exchange_rate = None + if ref_doc.doctype == "Expense Claim": + total_amount = flt(ref_doc.total_sanctioned_amount) + flt(ref_doc.total_taxes_and_charges) + elif ref_doc.doctype == "Employee Advance": + total_amount, exchange_rate = get_total_amount_exchange_rate_for_employee_advance(party_account_currency, ref_doc) + + if not total_amount: + total_amount, exchange_rate = get_total_amount_exchange_rate_base_on_currency( + party_account_currency, company_currency, ref_doc) + + if not exchange_rate: + # Get the exchange rate from the original ref doc + # or get it based on the posting date of the ref doc + exchange_rate = ref_doc.get("conversion_rate") or \ + get_exchange_rate(party_account_currency, company_currency, ref_doc.posting_date) + + outstanding_amount, exchange_rate, bill_no = get_bill_no_and_update_amounts( + reference_doctype, ref_doc, total_amount, exchange_rate, party_account_currency, company_currency) + + return total_amount, outstanding_amount, exchange_rate, bill_no + +def get_total_amount_exchange_rate_for_employee_advance(party_account_currency, ref_doc): + total_amount = ref_doc.advance_amount + exchange_rate = ref_doc.get("exchange_rate") + if party_account_currency != ref_doc.currency: + total_amount = flt(total_amount) * flt(exchange_rate) + + return total_amount, exchange_rate + +def get_total_amount_exchange_rate_base_on_currency(party_account_currency, company_currency, ref_doc): + exchange_rate = None + if party_account_currency == company_currency: + total_amount = ref_doc.base_grand_total + exchange_rate = 1 + else: + total_amount = ref_doc.grand_total + + return total_amount, exchange_rate + +def get_bill_no_and_update_amounts(reference_doctype, ref_doc, total_amount, exchange_rate, party_account_currency, company_currency): + outstanding_amount, bill_no = None + if reference_doctype in ("Sales Invoice", "Purchase Invoice"): + outstanding_amount = ref_doc.get("outstanding_amount") + bill_no = ref_doc.get("bill_no") + elif reference_doctype == "Expense Claim": + outstanding_amount = flt(ref_doc.get("total_sanctioned_amount")) + flt(ref_doc.get("total_taxes_and_charges"))\ + - flt(ref_doc.get("total_amount_reimbursed")) - flt(ref_doc.get("total_advance_amount")) + elif reference_doctype == "Employee Advance": + outstanding_amount = (flt(ref_doc.advance_amount) - flt(ref_doc.paid_amount)) + if party_account_currency != ref_doc.currency: + outstanding_amount = flt(outstanding_amount) * flt(exchange_rate) + if party_account_currency == company_currency: + exchange_rate = 1 + else: + outstanding_amount = flt(total_amount) - flt(ref_doc.advance_paid) + + return outstanding_amount, exchange_rate, bill_no + @frappe.whitelist() def get_payment_entry(dt, dn, party_amount=None, bank_account=None, bank_amount=None): + reference_doc = None doc = frappe.get_doc(dt, dn) if dt in ("Sales Order", "Purchase Order") and flt(doc.per_billed, 2) > 0: frappe.throw(_("Can only make payment against unbilled {0}").format(dt)) - if dt in ("Sales Invoice", "Sales Order", "Dunning"): - party_type = "Customer" - elif dt in ("Purchase Invoice", "Purchase Order"): - party_type = "Supplier" - elif dt in ("Expense Claim", "Employee Advance"): - party_type = "Employee" - elif dt in ("Fees"): - party_type = "Student" - - # party account - if dt == "Sales Invoice": - party_account = get_party_account_based_on_invoice_discounting(dn) or doc.debit_to - elif dt == "Purchase Invoice": - party_account = doc.credit_to - elif dt == "Fees": - party_account = doc.receivable_account - elif dt == "Employee Advance": - party_account = doc.advance_account - elif dt == "Expense Claim": - party_account = doc.payable_account - else: - party_account = get_party_account(party_type, doc.get(party_type.lower()), doc.company) - - if dt not in ("Sales Invoice", "Purchase Invoice"): - party_account_currency = get_account_currency(party_account) - else: - party_account_currency = doc.get("party_account_currency") or get_account_currency(party_account) - - # payment type - if (dt == "Sales Order" or (dt in ("Sales Invoice", "Fees", "Dunning") and doc.outstanding_amount > 0)) \ - or (dt=="Purchase Invoice" and doc.outstanding_amount < 0): - payment_type = "Receive" - else: - payment_type = "Pay" - - # amounts - grand_total = outstanding_amount = 0 - if party_amount: - grand_total = outstanding_amount = party_amount - elif dt in ("Sales Invoice", "Purchase Invoice"): - if party_account_currency == doc.company_currency: - grand_total = doc.base_rounded_total or doc.base_grand_total - else: - grand_total = doc.rounded_total or doc.grand_total - outstanding_amount = doc.outstanding_amount - elif dt in ("Expense Claim"): - grand_total = doc.total_sanctioned_amount + doc.total_taxes_and_charges - outstanding_amount = doc.grand_total \ - - doc.total_amount_reimbursed - elif dt == "Employee Advance": - grand_total = doc.advance_amount - outstanding_amount = flt(doc.advance_amount) - flt(doc.paid_amount) - elif dt == "Fees": - grand_total = doc.grand_total - outstanding_amount = doc.outstanding_amount - elif dt == "Dunning": - grand_total = doc.grand_total - outstanding_amount = doc.grand_total - else: - if party_account_currency == doc.company_currency: - grand_total = flt(doc.get("base_rounded_total") or doc.base_grand_total) - else: - grand_total = flt(doc.get("rounded_total") or doc.grand_total) - outstanding_amount = grand_total - flt(doc.advance_paid) + party_type = set_party_type(dt) + party_account = set_party_account(dt, dn, doc, party_type) + party_account_currency = set_party_account_currency(dt, party_account, doc) + payment_type = set_payment_type(dt, doc) + grand_total, outstanding_amount = set_grand_total_and_outstanding_amount(party_amount, dt, party_account_currency, doc) # bank or cash - bank = get_default_bank_cash_account(doc.company, "Bank", mode_of_payment=doc.get("mode_of_payment"), - account=bank_account) + bank = get_bank_cash_account(doc, bank_account) - if not bank: - bank = get_default_bank_cash_account(doc.company, "Cash", mode_of_payment=doc.get("mode_of_payment"), - account=bank_account) - - paid_amount = received_amount = 0 - if party_account_currency == bank.account_currency: - paid_amount = received_amount = abs(outstanding_amount) - elif payment_type == "Receive": - paid_amount = abs(outstanding_amount) - if bank_amount: - received_amount = bank_amount - else: - received_amount = paid_amount * doc.get('conversion_rate', 1) - else: - received_amount = abs(outstanding_amount) - if bank_amount: - paid_amount = bank_amount - else: - # if party account currency and bank currency is different then populate paid amount as well - paid_amount = received_amount * doc.get('conversion_rate', 1) + paid_amount, received_amount = set_paid_amount_and_received_amount( + dt, party_account_currency, bank, outstanding_amount, payment_type, bank_amount, doc) pe = frappe.new_doc("Payment Entry") pe.payment_type = payment_type @@ -1115,10 +1139,120 @@ def get_payment_entry(dt, dn, party_amount=None, bank_account=None, bank_amount= pe.setup_party_account_field() pe.set_missing_values() if party_account and bank: - pe.set_exchange_rate() + if dt == "Employee Advance": + reference_doc = doc + pe.set_exchange_rate(ref_doc=reference_doc) pe.set_amounts() return pe +def get_bank_cash_account(doc, bank_account): + bank = get_default_bank_cash_account(doc.company, "Bank", mode_of_payment=doc.get("mode_of_payment"), + account=bank_account) + + if not bank: + bank = get_default_bank_cash_account(doc.company, "Cash", mode_of_payment=doc.get("mode_of_payment"), + account=bank_account) + + return bank + +def set_party_type(dt): + if dt in ("Sales Invoice", "Sales Order", "Dunning"): + party_type = "Customer" + elif dt in ("Purchase Invoice", "Purchase Order"): + party_type = "Supplier" + elif dt in ("Expense Claim", "Employee Advance"): + party_type = "Employee" + elif dt in ("Fees"): + party_type = "Student" + return party_type + +def set_party_account(dt, dn, doc, party_type): + if dt == "Sales Invoice": + party_account = get_party_account_based_on_invoice_discounting(dn) or doc.debit_to + elif dt == "Purchase Invoice": + party_account = doc.credit_to + elif dt == "Fees": + party_account = doc.receivable_account + elif dt == "Employee Advance": + party_account = doc.advance_account + elif dt == "Expense Claim": + party_account = doc.payable_account + else: + party_account = get_party_account(party_type, doc.get(party_type.lower()), doc.company) + return party_account + +def set_party_account_currency(dt, party_account, doc): + if dt not in ("Sales Invoice", "Purchase Invoice"): + party_account_currency = get_account_currency(party_account) + else: + party_account_currency = doc.get("party_account_currency") or get_account_currency(party_account) + return party_account_currency + +def set_payment_type(dt, doc): + if (dt == "Sales Order" or (dt in ("Sales Invoice", "Fees", "Dunning") and doc.outstanding_amount > 0)) \ + or (dt=="Purchase Invoice" and doc.outstanding_amount < 0): + payment_type = "Receive" + else: + payment_type = "Pay" + return payment_type + +def set_grand_total_and_outstanding_amount(party_amount, dt, party_account_currency, doc): + grand_total = outstanding_amount = 0 + if party_amount: + grand_total = outstanding_amount = party_amount + elif dt in ("Sales Invoice", "Purchase Invoice"): + if party_account_currency == doc.company_currency: + grand_total = doc.base_rounded_total or doc.base_grand_total + else: + grand_total = doc.rounded_total or doc.grand_total + outstanding_amount = doc.outstanding_amount + elif dt in ("Expense Claim"): + grand_total = doc.total_sanctioned_amount + doc.total_taxes_and_charges + outstanding_amount = doc.grand_total \ + - doc.total_amount_reimbursed + elif dt == "Employee Advance": + grand_total = flt(doc.advance_amount) + outstanding_amount = flt(doc.advance_amount) - flt(doc.paid_amount) + if party_account_currency != doc.currency: + grand_total = flt(doc.advance_amount) * flt(doc.exchange_rate) + outstanding_amount = (flt(doc.advance_amount) - flt(doc.paid_amount)) * flt(doc.exchange_rate) + elif dt == "Fees": + grand_total = doc.grand_total + outstanding_amount = doc.outstanding_amount + elif dt == "Dunning": + grand_total = doc.grand_total + outstanding_amount = doc.grand_total + else: + if party_account_currency == doc.company_currency: + grand_total = flt(doc.get("base_rounded_total") or doc.base_grand_total) + else: + grand_total = flt(doc.get("rounded_total") or doc.grand_total) + outstanding_amount = grand_total - flt(doc.advance_paid) + return grand_total, outstanding_amount + +def set_paid_amount_and_received_amount(dt, party_account_currency, bank, outstanding_amount, payment_type, bank_amount, doc): + paid_amount = received_amount = 0 + if party_account_currency == bank.account_currency: + paid_amount = received_amount = abs(outstanding_amount) + elif payment_type == "Receive": + paid_amount = abs(outstanding_amount) + if bank_amount: + received_amount = bank_amount + else: + received_amount = paid_amount * doc.get('conversion_rate', 1) + if dt == "Employee Advance": + received_amount = paid_amount * doc.get('exchange_rate', 1) + else: + received_amount = abs(outstanding_amount) + if bank_amount: + paid_amount = bank_amount + else: + # if party account currency and bank currency is different then populate paid amount as well + paid_amount = received_amount * doc.get('conversion_rate', 1) + if dt == "Employee Advance": + paid_amount = received_amount * doc.get('exchange_rate', 1) + return paid_amount, received_amount + def get_reference_as_per_payment_terms(payment_schedule, dt, dn, doc, grand_total, outstanding_amount): references = [] for payment_term in payment_schedule: diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.json b/erpnext/accounts/doctype/pos_invoice/pos_invoice.json index 1cff3c661d..5bc57b4a84 100644 --- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.json +++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.json @@ -1,5 +1,6 @@ { "actions": [], + "allow_auto_repeat": 1, "allow_import": 1, "autoname": "naming_series:", "creation": "2020-01-24 15:29:29.933693", @@ -1580,7 +1581,7 @@ "icon": "fa fa-file-text", "is_submittable": 1, "links": [], - "modified": "2020-09-28 16:51:24.641755", + "modified": "2020-10-30 13:56:51.056083", "modified_by": "Administrator", "module": "Accounts", "name": "POS Invoice", diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py index b0a7547ce8..d486ff6028 100644 --- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py +++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py @@ -39,6 +39,7 @@ class POSInvoice(SalesInvoice): self.validate_serialised_or_batched_item() self.validate_stock_availablility() self.validate_return_items_qty() + self.validate_non_stock_items() self.set_status() self.set_account_for_mode_of_payment() self.validate_pos() @@ -132,15 +133,19 @@ class POSInvoice(SalesInvoice): msg = "" item_code = frappe.bold(d.item_code) + serial_nos = get_serial_nos(d.serial_no) if serialized and batched and (no_batch_selected or no_serial_selected): msg = (_('Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.') .format(d.idx, item_code)) - if serialized and no_serial_selected: + elif serialized and no_serial_selected: msg = (_('Row #{}: No serial number selected against item: {}. Please select one or remove it to complete transaction.') .format(d.idx, item_code)) - if batched and no_batch_selected: + elif batched and no_batch_selected: msg = (_('Row #{}: No batch selected against item: {}. Please select a batch or remove it to complete transaction.') .format(d.idx, item_code)) + elif serialized and not no_serial_selected and len(serial_nos) != d.qty: + msg = (_("Row #{}: You must select {} serial numbers for item {}.").format(d.idx, frappe.bold(cint(d.qty)), item_code)) + if msg: error_msg.append(msg) @@ -170,6 +175,14 @@ class POSInvoice(SalesInvoice): _("Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {}") .format(d.idx, bold_serial_no, bold_return_against) ) + + def validate_non_stock_items(self): + for d in self.get("items"): + is_stock_item = frappe.get_cached_value("Item", d.get("item_code"), "is_stock_item") + if not is_stock_item: + frappe.throw(_("Row #{}: Item {} is a non stock item. You can only include stock items in a POS Invoice. ").format( + d.idx, frappe.bold(d.item_code) + ), title=_("Invalid Item")) def validate_mode_of_payment(self): if len(self.payments) == 0: diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.js b/erpnext/accounts/doctype/pos_profile/pos_profile.js index 558e21c13a..7f4f755480 100755 --- a/erpnext/accounts/doctype/pos_profile/pos_profile.js +++ b/erpnext/accounts/doctype/pos_profile/pos_profile.js @@ -35,6 +35,15 @@ frappe.ui.form.on('POS Profile', { }; }); + frm.set_query("taxes_and_charges", function() { + return { + filters: [ + ['Sales Taxes and Charges Template', 'company', '=', frm.doc.company], + ['Sales Taxes and Charges Template', 'docstatus', '!=', 2] + ] + }; + }); + frm.set_query('company_address', function(doc) { if(!doc.company) { frappe.throw(__('Please set Company')); diff --git a/erpnext/accounts/doctype/pos_profile/test_pos_profile.py b/erpnext/accounts/doctype/pos_profile/test_pos_profile.py index edf86590c8..62dc1fcb20 100644 --- a/erpnext/accounts/doctype/pos_profile/test_pos_profile.py +++ b/erpnext/accounts/doctype/pos_profile/test_pos_profile.py @@ -70,6 +70,7 @@ def get_items_list(pos_profile, company): """.format(cond=cond), tuple([company] + args_list), as_dict=1) def make_pos_profile(**args): + frappe.db.sql("delete from `tabPOS Payment Method`") frappe.db.sql("delete from `tabPOS Profile`") args = frappe._dict(args) diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.js b/erpnext/accounts/doctype/pricing_rule/pricing_rule.js index c92b58b580..d79ad5f528 100644 --- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.js +++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.js @@ -42,56 +42,56 @@ frappe.ui.form.on('Pricing Rule', {

- ${__('Notes')} + {{__('Notes')}}

- ${__('How Pricing Rule is applied?')} + {{__('How Pricing Rule is applied?')}}

  1. - ${__("Pricing Rule is first selected based on 'Apply On' field, which can be Item, Item Group or Brand.")} + {{__("Pricing Rule is first selected based on 'Apply On' field, which can be Item, Item Group or Brand.")}}
  2. - ${__("Then Pricing Rules are filtered out based on Customer, Customer Group, Territory, Supplier, Supplier Type, Campaign, Sales Partner etc.")} + {{__("Then Pricing Rules are filtered out based on Customer, Customer Group, Territory, Supplier, Supplier Type, Campaign, Sales Partner etc.")}}
  3. - ${__('Pricing Rules are further filtered based on quantity.')} + {{__('Pricing Rules are further filtered based on quantity.')}}
  4. - ${__('If two or more Pricing Rules are found based on the above conditions, Priority is applied. Priority is a number between 0 to 20 while default value is zero (blank). Higher number means it will take precedence if there are multiple Pricing Rules with same conditions.')} + {{__('If two or more Pricing Rules are found based on the above conditions, Priority is applied. Priority is a number between 0 to 20 while default value is zero (blank). Higher number means it will take precedence if there are multiple Pricing Rules with same conditions.')}}
  5. - ${__('Even if there are multiple Pricing Rules with highest priority, then following internal priorities are applied:')} + {{__('Even if there are multiple Pricing Rules with highest priority, then following internal priorities are applied:')}}
  6. - ${__('If multiple Pricing Rules continue to prevail, users are asked to set Priority manually to resolve conflict.')} + {{__('If multiple Pricing Rules continue to prevail, users are asked to set Priority manually to resolve conflict.')}}
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.json b/erpnext/accounts/doctype/pricing_rule/pricing_rule.json index cc8ed4bc49..d08a854142 100644 --- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.json +++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.json @@ -406,6 +406,7 @@ "fieldtype": "Column Break" }, { + "default": "0", "depends_on": "eval:doc.rate_or_discount==\"Rate\"", "fieldname": "rate", "fieldtype": "Currency", @@ -469,6 +470,7 @@ "options": "UOM" }, { + "description": "If rate is zero them item will be treated as \"Free Item\"", "fieldname": "free_item_rate", "fieldtype": "Currency", "label": "Rate" @@ -563,7 +565,7 @@ "icon": "fa fa-gift", "idx": 1, "links": [], - "modified": "2020-10-28 16:53:14.416172", + "modified": "2020-12-04 00:36:24.698219", "modified_by": "Administrator", "module": "Accounts", "name": "Pricing Rule", diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py index 149c47673c..55a5b0e513 100644 --- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py @@ -352,8 +352,14 @@ def apply_price_discount_rule(pricing_rule, item_details, args): pricing_rule_rate = 0.0 if pricing_rule.currency == args.currency: pricing_rule_rate = pricing_rule.rate + + if pricing_rule_rate: + # Override already set price list rate (from item price) + # if pricing_rule_rate > 0 + item_details.update({ + "price_list_rate": pricing_rule_rate * args.get("conversion_factor", 1), + }) item_details.update({ - "price_list_rate": pricing_rule_rate * args.get("conversion_factor", 1), "discount_percentage": 0.0 }) diff --git a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py index 22a031c162..af8d21d9ce 100644 --- a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py +++ b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py @@ -484,6 +484,59 @@ class TestPricingRule(unittest.TestCase): frappe.delete_doc_if_exists("Pricing Rule", "_Test Pricing Rule 1") frappe.delete_doc_if_exists("Pricing Rule", "_Test Pricing Rule 2") + def test_item_price_with_pricing_rule(self): + item = make_item("Water Flask") + make_item_price("Water Flask", "_Test Price List", 100) + + pricing_rule_record = { + "doctype": "Pricing Rule", + "title": "_Test Water Flask Rule", + "apply_on": "Item Code", + "items": [{ + "item_code": "Water Flask", + }], + "selling": 1, + "currency": "INR", + "rate_or_discount": "Rate", + "rate": 0, + "margin_type": "Percentage", + "margin_rate_or_amount": 2, + "company": "_Test Company" + } + rule = frappe.get_doc(pricing_rule_record) + rule.insert() + + si = create_sales_invoice(do_not_save=True, item_code="Water Flask") + si.selling_price_list = "_Test Price List" + si.save() + + # If rate in Rule is 0, give preference to Item Price if it exists + self.assertEqual(si.items[0].price_list_rate, 100) + self.assertEqual(si.items[0].margin_rate_or_amount, 2) + self.assertEqual(si.items[0].rate_with_margin, 102) + self.assertEqual(si.items[0].rate, 102) + + si.delete() + rule.delete() + frappe.get_doc("Item Price", {"item_code": "Water Flask"}).delete() + item.delete() + + def test_pricing_rule_for_transaction(self): + make_item("Water Flask 1") + frappe.delete_doc_if_exists('Pricing Rule', '_Test Pricing Rule') + make_pricing_rule(selling=1, min_qty=5, price_or_product_discount="Product", + apply_on="Transaction", free_item="Water Flask 1", free_qty=1, free_item_rate=10) + + si = create_sales_invoice(qty=5, do_not_submit=True) + self.assertEquals(len(si.items), 2) + self.assertEquals(si.items[1].rate, 10) + + si1 = create_sales_invoice(qty=2, do_not_submit=True) + self.assertEquals(len(si1.items), 1) + + for doc in [si, si1]: + doc.delete() + def make_pricing_rule(**args): args = frappe._dict(args) @@ -502,20 +555,23 @@ def make_pricing_rule(**args): "rate_or_discount": args.rate_or_discount or "Discount Percentage", "discount_percentage": args.discount_percentage or 0.0, "rate": args.rate or 0.0, - "margin_type": args.margin_type, "margin_rate_or_amount": args.margin_rate_or_amount or 0.0, "condition": args.condition or '', "apply_multiple_pricing_rules": args.apply_multiple_pricing_rules or 0 }) - if args.get("priority"): - doc.priority = args.get("priority") + for field in ["free_item", "free_qty", "free_item_rate", "priority", + "margin_type", "price_or_product_discount"]: + if args.get(field): + doc.set(field, args.get(field)) apply_on = doc.apply_on.replace(' ', '_').lower() child_table = {'Item Code': 'items', 'Item Group': 'item_groups', 'Brand': 'brands'} - doc.append(child_table.get(doc.apply_on), { - apply_on: args.get(apply_on) or "_Test Item" - }) + + if doc.apply_on != "Transaction": + doc.append(child_table.get(doc.apply_on), { + apply_on: args.get(apply_on) or "_Test Item" + }) doc.insert(ignore_permissions=True) if args.get(apply_on) and apply_on != "item_code": diff --git a/erpnext/accounts/doctype/pricing_rule/utils.py b/erpnext/accounts/doctype/pricing_rule/utils.py index b003328cc4..2c7cd14451 100644 --- a/erpnext/accounts/doctype/pricing_rule/utils.py +++ b/erpnext/accounts/doctype/pricing_rule/utils.py @@ -457,6 +457,9 @@ def apply_pricing_rule_on_transaction(doc): pricing_rules = filter_pricing_rules_for_qty_amount(doc.total_qty, doc.total, pricing_rules) + if not pricing_rules: + remove_free_item(doc) + for d in pricing_rules: if d.price_or_product_discount == 'Price': if d.apply_discount_on: @@ -480,6 +483,12 @@ def apply_pricing_rule_on_transaction(doc): get_product_discount_rule(d, item_details, doc=doc) apply_pricing_rule_for_free_items(doc, item_details.free_item_data) doc.set_missing_values() + doc.calculate_taxes_and_totals() + +def remove_free_item(doc): + for d in doc.items: + if d.is_free_item: + doc.remove(d) def get_applied_pricing_rules(pricing_rules): if pricing_rules: @@ -492,7 +501,7 @@ def get_applied_pricing_rules(pricing_rules): def get_product_discount_rule(pricing_rule, item_details, args=None, doc=None): free_item = pricing_rule.free_item - if pricing_rule.same_item: + if pricing_rule.same_item and pricing_rule.get("apply_on") != 'Transaction': free_item = item_details.item_code or args.item_code if not free_item: diff --git a/erpnext/accounts/doctype/process_deferred_accounting/test_process_deferred_accounting.py b/erpnext/accounts/doctype/process_deferred_accounting/test_process_deferred_accounting.py index 31356c6e8b..e08a0e5cc2 100644 --- a/erpnext/accounts/doctype/process_deferred_accounting/test_process_deferred_accounting.py +++ b/erpnext/accounts/doctype/process_deferred_accounting/test_process_deferred_accounting.py @@ -21,7 +21,7 @@ class TestProcessDeferredAccounting(unittest.TestCase): item.no_of_months = 12 item.save() - si = create_sales_invoice(item=item.name, posting_date="2019-01-10", do_not_submit=True) + si = create_sales_invoice(item=item.name, update_stock=0, posting_date="2019-01-10", do_not_submit=True) si.items[0].enable_deferred_revenue = 1 si.items[0].service_start_date = "2019-01-10" si.items[0].service_end_date = "2019-03-15" diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js index fe5301d5c8..1d41d0fa2a 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js @@ -99,6 +99,7 @@ erpnext.accounts.PurchaseInvoice = erpnext.buying.BuyingController.extend({ target: me.frm, setters: { supplier: me.frm.doc.supplier || undefined, + schedule_date: undefined }, get_query_filters: { docstatus: 1, @@ -107,16 +108,16 @@ erpnext.accounts.PurchaseInvoice = erpnext.buying.BuyingController.extend({ company: me.frm.doc.company } }) - }, __("Get items from")); + }, __("Get Items From")); this.frm.add_custom_button(__('Purchase Receipt'), function() { erpnext.utils.map_current_doc({ method: "erpnext.stock.doctype.purchase_receipt.purchase_receipt.make_purchase_invoice", source_doctype: "Purchase Receipt", target: me.frm, - date_field: "posting_date", setters: { supplier: me.frm.doc.supplier || undefined, + posting_date: undefined }, get_query_filters: { docstatus: 1, @@ -125,7 +126,7 @@ erpnext.accounts.PurchaseInvoice = erpnext.buying.BuyingController.extend({ is_return: 0 } }) - }, __("Get items from")); + }, __("Get Items From")); } this.frm.toggle_reqd("supplier_warehouse", this.frm.doc.is_subcontracted==="Yes"); diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json index 8925b87b52..2df77a84c7 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json @@ -1,5 +1,6 @@ { "actions": [], + "allow_auto_repeat": 1, "allow_import": 1, "autoname": "naming_series:", "creation": "2013-05-21 16:16:39", @@ -1334,7 +1335,8 @@ "icon": "fa fa-file-text", "idx": 204, "is_submittable": 1, - "modified": "2020-09-21 12:22:09.164068", + "links": [], + "modified": "2020-10-30 13:57:18.266978", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice", @@ -1396,4 +1398,4 @@ "timeline_field": "supplier", "title_field": "title", "track_changes": 1 -} +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py index 91c4dfb587..8bd788890a 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -147,6 +147,11 @@ class PurchaseInvoice(BuyingController): throw(_("Conversion rate cannot be 0 or 1")) def validate_credit_to_acc(self): + if not self.credit_to: + self.credit_to = get_party_account("Supplier", self.supplier, self.company) + if not self.credit_to: + self.raise_missing_debit_credit_account_error("Supplier", self.supplier) + account = frappe.db.get_value("Account", self.credit_to, ["account_type", "report_type", "account_currency"], as_dict=True) @@ -1032,7 +1037,9 @@ class PurchaseInvoice(BuyingController): updated_pr += update_billed_amount_based_on_po(d.po_detail, update_modified) for pr in set(updated_pr): - frappe.get_doc("Purchase Receipt", pr).update_billing_percentage(update_modified=update_modified) + from erpnext.stock.doctype.purchase_receipt.purchase_receipt import update_billing_percentage + pr_doc = frappe.get_doc("Purchase Receipt", pr) + update_billing_percentage(pr_doc, update_modified=update_modified) def on_recurring(self, reference_doc, auto_repeat_doc): self.due_date = None diff --git a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py index 2e5a7142a3..f2499d24b5 100644 --- a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py @@ -998,7 +998,7 @@ def make_purchase_invoice(**args): 'expense_account': args.expense_account or '_Test Account Cost for Goods Sold - _TC', "conversion_factor": 1.0, "serial_no": args.serial_no, - "stock_uom": "_Test UOM", + "stock_uom": args.uom or "_Test UOM", "cost_center": args.cost_center or "_Test Cost Center - _TC", "project": args.project, "rejected_warehouse": args.rejected_warehouse or "", @@ -1040,7 +1040,8 @@ def make_purchase_invoice_against_cost_center(**args): pi.is_return = args.is_return pi.credit_to = args.return_against or "Creditors - _TC" pi.is_subcontracted = args.is_subcontracted or "No" - pi.supplier_warehouse = "_Test Warehouse 1 - _TC" + if args.supplier_warehouse: + pi.supplier_warehouse = "_Test Warehouse 1 - _TC" pi.append("items", { "item_code": args.item or args.item_code or "_Test Item", diff --git a/erpnext/accounts/doctype/salary_component_account/salary_component_account.json b/erpnext/accounts/doctype/salary_component_account/salary_component_account.json index 23dc6c47e8..f1ed8efa31 100644 --- a/erpnext/accounts/doctype/salary_component_account/salary_component_account.json +++ b/erpnext/accounts/doctype/salary_component_account/salary_component_account.json @@ -1,92 +1,38 @@ { - "allow_copy": 0, - "allow_import": 0, - "allow_rename": 0, - "beta": 0, - "creation": "2016-07-27 17:24:24.956896", - "custom": 0, - "docstatus": 0, - "doctype": "DocType", - "document_type": "", - "editable_grid": 1, + "actions": [], + "creation": "2016-07-27 17:24:24.956896", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "company", + "account" + ], "fields": [ { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "company", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Company", - "length": 0, - "no_copy": 0, - "options": "Company", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, + "fieldname": "company", + "fieldtype": "Link", + "in_list_view": 1, + "label": "Company", + "options": "Company" + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "description": "Default Bank / Cash account will be automatically updated in Salary Journal Entry when this mode is selected.", - "fieldname": "default_account", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Default Account", - "length": 0, - "no_copy": 0, - "options": "Account", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 + "description": "Default Bank / Cash account will be automatically updated in Salary Journal Entry when this mode is selected.", + "fieldname": "account", + "fieldtype": "Link", + "in_list_view": 1, + "label": "Account", + "options": "Account" } - ], - "hide_heading": 0, - "hide_toolbar": 0, - "idx": 0, - "image_view": 0, - "in_create": 0, - - "is_submittable": 0, - "issingle": 0, - "istable": 1, - "max_attachments": 0, - "modified": "2016-09-02 07:49:06.567389", - "modified_by": "Administrator", - "module": "Accounts", - "name": "Salary Component Account", - "name_case": "", - "owner": "Administrator", - "permissions": [], - "quick_entry": 0, - "read_only": 0, - "read_only_onload": 0, - "sort_field": "modified", - "sort_order": "DESC", - "track_seen": 0 + ], + "istable": 1, + "links": [], + "modified": "2020-10-18 17:57:57.110257", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Salary Component Account", + "owner": "Administrator", + "permissions": [], + "sort_field": "modified", + "sort_order": "DESC" } \ No newline at end of file diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js index 9af584e0b1..502e65ed8d 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js @@ -199,7 +199,7 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte company: me.frm.doc.company } }) - }, __("Get items from")); + }, __("Get Items From")); }, quotation_btn: function() { @@ -223,7 +223,7 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte company: me.frm.doc.company } }) - }, __("Get items from")); + }, __("Get Items From")); }, delivery_note_btn: function() { @@ -251,7 +251,7 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte }; } }); - }, __("Get items from")); + }, __("Get Items From")); }, tc_name: function() { @@ -812,10 +812,10 @@ frappe.ui.form.on('Sales Invoice', { if (cint(frm.doc.docstatus==0) && cur_frm.page.current_view_name!=="pos" && !frm.doc.is_return) { frm.add_custom_button(__('Healthcare Services'), function() { get_healthcare_services_to_invoice(frm); - },"Get items from"); + },"Get Items From"); frm.add_custom_button(__('Prescriptions'), function() { get_drugs_to_invoice(frm); - },"Get items from"); + },"Get Items From"); } } else { @@ -1080,7 +1080,7 @@ var get_drugs_to_invoice = function(frm) { description:'Quantity will be calculated only for items which has "Nos" as UoM. You may change as required for each invoice item.', get_query: function(doc) { return { - filters: { + filters: { patient: dialog.get_value("patient"), company: frm.doc.company, docstatus: 1 diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json index ae40153890..17fbe2def9 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json @@ -1,5 +1,6 @@ { "actions": [], + "allow_auto_repeat": 1, "allow_import": 1, "autoname": "naming_series:", "creation": "2013-05-24 19:29:05", @@ -1955,7 +1956,7 @@ "idx": 181, "is_submittable": 1, "links": [], - "modified": "2020-10-09 15:59:57.544736", + "modified": "2020-10-30 13:57:45.086303", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice", diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index 4b598877d9..81f425f868 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -405,6 +405,8 @@ class SalesInvoice(SellingController): from erpnext.stock.get_item_details import get_pos_profile_item_details, get_pos_profile if not self.pos_profile: pos_profile = get_pos_profile(self.company) or {} + if not pos_profile: + frappe.throw(_("No POS Profile found. Please create a New POS Profile first")) self.pos_profile = pos_profile.get('name') pos = {} @@ -472,6 +474,11 @@ class SalesInvoice(SellingController): return frappe.db.sql("select abbr from tabCompany where name=%s", self.company)[0][0] def validate_debit_to_acc(self): + if not self.debit_to: + self.debit_to = get_party_account("Customer", self.customer, self.company) + if not self.debit_to: + self.raise_missing_debit_credit_account_error("Customer", self.customer) + account = frappe.get_cached_value("Account", self.debit_to, ["account_type", "report_type", "account_currency"], as_dict=True) @@ -1401,6 +1408,7 @@ def make_delivery_note(source_name, target_doc=None): def set_missing_values(source, target): target.ignore_pricing_rule = 1 target.run_method("set_missing_values") + target.run_method("set_po_nos") target.run_method("calculate_taxes_and_totals") def update_item(source_doc, target_doc, source_parent): diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py index 9660c9570e..46e954d948 100644 --- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py @@ -690,7 +690,8 @@ class TestSalesInvoice(unittest.TestCase): self.assertTrue(gle) def test_pos_gl_entry_with_perpetual_inventory(self): - make_pos_profile() + make_pos_profile(company="_Test Company with perpetual inventory", income_account = "Sales - TCP1", + expense_account = "Cost of Goods Sold - TCP1", warehouse="Stores - TCP1", cost_center = "Main - TCP1", write_off_account="_Test Write Off - TCP1") pr = make_purchase_receipt(company= "_Test Company with perpetual inventory", item_code= "_Test FG Item",warehouse= "Stores - TCP1",cost_center= "Main - TCP1") @@ -746,7 +747,8 @@ class TestSalesInvoice(unittest.TestCase): self.assertEqual(pos_return.get('payments')[0].amount, -1000) def test_pos_change_amount(self): - make_pos_profile() + make_pos_profile(company="_Test Company with perpetual inventory", income_account = "Sales - TCP1", + expense_account = "Cost of Goods Sold - TCP1", warehouse="Stores - TCP1", cost_center = "Main - TCP1", write_off_account="_Test Write Off - TCP1") pr = make_purchase_receipt(company= "_Test Company with perpetual inventory", item_code= "_Test FG Item",warehouse= "Stores - TCP1", cost_center= "Main - TCP1") diff --git a/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py b/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py index 8b5e68b359..32ad4cb03a 100644 --- a/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py +++ b/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py @@ -140,9 +140,9 @@ def get_tds_amount(suppliers, net_total, company, tax_details, fiscal_year_detai else: tds_amount = _get_tds(net_total, tax_details.rate) else: - supplier_credit_amount = frappe.get_all('Purchase Invoice Item', - fields = ['sum(net_amount)'], - filters = {'parent': ('in', vouchers), 'docstatus': 1}, as_list=1) + supplier_credit_amount = frappe.get_all('Purchase Invoice', + fields = ['sum(net_total)'], + filters = {'name': ('in', vouchers), 'docstatus': 1, "apply_tds": 1}, as_list=1) supplier_credit_amount = (supplier_credit_amount[0][0] if supplier_credit_amount and supplier_credit_amount[0][0] else 0) diff --git a/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py b/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py index b1468999fc..ef77674372 100644 --- a/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py +++ b/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py @@ -7,6 +7,7 @@ import frappe import unittest from frappe.utils import today from erpnext.accounts.utils import get_fiscal_year +from erpnext.buying.doctype.supplier.test_supplier import create_supplier test_dependencies = ["Supplier Group"] @@ -101,6 +102,32 @@ class TestTaxWithholdingCategory(unittest.TestCase): for d in invoices: d.cancel() + def test_single_threshold_tds_with_previous_vouchers_and_no_tds(self): + invoices = [] + doc = create_supplier(supplier_name = "Test TDS Supplier ABC", + tax_withholding_category="Single Threshold TDS") + supplier = doc.name + + pi = create_purchase_invoice(supplier=supplier) + pi.submit() + invoices.append(pi) + + # TDS not applied + pi = create_purchase_invoice(supplier=supplier, do_not_apply_tds=True) + pi.submit() + invoices.append(pi) + + pi = create_purchase_invoice(supplier=supplier) + pi.submit() + invoices.append(pi) + + self.assertEqual(pi.taxes_and_charges_deducted, 2000) + self.assertEqual(pi.grand_total, 8000) + + # delete invoices to avoid clashing + for d in invoices: + d.cancel() + def create_purchase_invoice(**args): # return sales invoice doc object item = frappe.get_doc('Item', {'item_name': 'TDS Item'}) @@ -109,7 +136,7 @@ def create_purchase_invoice(**args): pi = frappe.get_doc({ "doctype": "Purchase Invoice", "posting_date": today(), - "apply_tds": 1, + "apply_tds": 0 if args.do_not_apply_tds else 1, "supplier": args.supplier, "company": '_Test Company', "taxes_and_charges": "", diff --git a/erpnext/accounts/page/bank_reconciliation/bank_reconciliation.js b/erpnext/accounts/page/bank_reconciliation/bank_reconciliation.js index 9703527875..6ae81d7402 100644 --- a/erpnext/accounts/page/bank_reconciliation/bank_reconciliation.js +++ b/erpnext/accounts/page/bank_reconciliation/bank_reconciliation.js @@ -156,7 +156,7 @@ erpnext.accounts.bankTransactionUpload = class bankTransactionUpload { setup_transactions_dom() { const me = this; - me.parent.$main_section.append(`
`) + me.parent.$main_section.append('
'); } create_datatable() { @@ -167,9 +167,7 @@ erpnext.accounts.bankTransactionUpload = class bankTransactionUpload { }) } catch(err) { - let msg = __(`Your file could not be processed by ERPNext. -
It should be a standard CSV or XLSX file. -
The headers should be in the first row.`) + let msg = __("Your file could not be processed. It should be a standard CSV or XLSX file with headers in the first row."); frappe.throw(msg) } diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py index e8d3cd322b..64268b8064 100644 --- a/erpnext/accounts/party.py +++ b/erpnext/accounts/party.py @@ -59,7 +59,7 @@ def _get_party_details(party=None, account=None, party_type="Customer", company= billing_address=party_address, shipping_address=shipping_address) if fetch_payment_terms_template: - party_details["payment_terms_template"] = get_pyt_term_template(party.name, party_type, company) + party_details["payment_terms_template"] = get_payment_terms_template(party.name, party_type, company) if not party_details.get("currency"): party_details["currency"] = currency @@ -315,7 +315,7 @@ def get_due_date(posting_date, party_type, party, company=None, bill_date=None): due_date = None if (bill_date or posting_date) and party: due_date = bill_date or posting_date - template_name = get_pyt_term_template(party, party_type, company) + template_name = get_payment_terms_template(party, party_type, company) if template_name: due_date = get_due_date_from_template(template_name, posting_date, bill_date).strftime("%Y-%m-%d") @@ -422,7 +422,7 @@ def set_taxes(party, party_type, posting_date, company, customer_group=None, sup @frappe.whitelist() -def get_pyt_term_template(party_name, party_type, company=None): +def get_payment_terms_template(party_name, party_type, company=None): if party_type not in ("Customer", "Supplier"): return template = None diff --git a/erpnext/accounts/print_format/bank_and_cash_payment_voucher/bank_and_cash_payment_voucher.html b/erpnext/accounts/print_format/bank_and_cash_payment_voucher/bank_and_cash_payment_voucher.html index 6fe6999051..e588ed6609 100644 --- a/erpnext/accounts/print_format/bank_and_cash_payment_voucher/bank_and_cash_payment_voucher.html +++ b/erpnext/accounts/print_format/bank_and_cash_payment_voucher/bank_and_cash_payment_voucher.html @@ -19,7 +19,7 @@
- +
Date: {{ frappe.utils.formatdate(doc.creation) }}
Date: {{ frappe.utils.format_date(doc.creation) }}
diff --git a/erpnext/accounts/print_format/journal_auditing_voucher/journal_auditing_voucher.html b/erpnext/accounts/print_format/journal_auditing_voucher/journal_auditing_voucher.html index 1351517981..0ca940f8bd 100644 --- a/erpnext/accounts/print_format/journal_auditing_voucher/journal_auditing_voucher.html +++ b/erpnext/accounts/print_format/journal_auditing_voucher/journal_auditing_voucher.html @@ -17,7 +17,7 @@
- +
Date: {{ frappe.utils.formatdate(doc.creation) }}
Date: {{ frappe.utils.format_date(doc.creation) }}
diff --git a/erpnext/accounts/print_format/payment_receipt_voucher/payment_receipt_voucher.html b/erpnext/accounts/print_format/payment_receipt_voucher/payment_receipt_voucher.html index f2e65d3334..283d505e3b 100644 --- a/erpnext/accounts/print_format/payment_receipt_voucher/payment_receipt_voucher.html +++ b/erpnext/accounts/print_format/payment_receipt_voucher/payment_receipt_voucher.html @@ -5,7 +5,7 @@ {{ add_header(0, 1, doc, letter_head, no_letterhead, print_settings) }} {%- for label, value in ( - (_("Received On"), frappe.utils.formatdate(doc.voucher_date)), + (_("Received On"), frappe.utils.format_date(doc.voucher_date)), (_("Received From"), doc.pay_to_recd_from), (_("Amount"), "" + doc.get_formatted("total_amount") + "
" + (doc.total_amount_in_words or "") + "
"), (_("Remarks"), doc.remark) diff --git a/erpnext/accounts/print_format/purchase_auditing_voucher/purchase_auditing_voucher.html b/erpnext/accounts/print_format/purchase_auditing_voucher/purchase_auditing_voucher.html index a7c3bce0b4..043ac254ed 100644 --- a/erpnext/accounts/print_format/purchase_auditing_voucher/purchase_auditing_voucher.html +++ b/erpnext/accounts/print_format/purchase_auditing_voucher/purchase_auditing_voucher.html @@ -8,7 +8,7 @@
- + @@ -17,7 +17,7 @@
Supplier Name: {{ doc.supplier }}
Due Date: {{ frappe.utils.formatdate(doc.due_date) }}
Due Date: {{ frappe.utils.format_date(doc.due_date) }}
Address: {{doc.address_display}}
Contact: {{doc.contact_display}}
Mobile no: {{doc.contact_mobile}}
- +
Voucher No: {{ doc.name }}
Date: {{ frappe.utils.formatdate(doc.creation) }}
Date: {{ frappe.utils.format_date(doc.creation) }}
diff --git a/erpnext/accounts/print_format/sales_auditing_voucher/sales_auditing_voucher.html b/erpnext/accounts/print_format/sales_auditing_voucher/sales_auditing_voucher.html index ef4ada14a3..a53b593a72 100644 --- a/erpnext/accounts/print_format/sales_auditing_voucher/sales_auditing_voucher.html +++ b/erpnext/accounts/print_format/sales_auditing_voucher/sales_auditing_voucher.html @@ -8,7 +8,7 @@
- + @@ -17,7 +17,7 @@
Customer Name: {{ doc.customer }}
Due Date: {{ frappe.utils.formatdate(doc.due_date) }}
Due Date: {{ frappe.utils.format_date(doc.due_date) }}
Address: {{doc.address_display}}
Contact: {{doc.contact_display}}
Mobile no: {{doc.contact_mobile}}
- +
Voucher No: {{ doc.name }}
Date: {{ frappe.utils.formatdate(doc.creation) }}
Date: {{ frappe.utils.format_date(doc.creation) }}
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py index 044fc1d3ab..51fc7ec49a 100755 --- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py +++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py @@ -160,6 +160,8 @@ class ReceivablePayableReport(object): else: # advance / unlinked payment or other adjustment row.paid -= gle_balance + if gle.cost_center: + row.cost_center = str(gle.cost_center) def update_sub_total_row(self, row, party): total_row = self.total_row_map.get(party) @@ -210,7 +212,6 @@ class ReceivablePayableReport(object): for key, row in self.voucher_balance.items(): row.outstanding = flt(row.invoiced - row.paid - row.credit_note, self.currency_precision) row.invoice_grand_total = row.invoiced - if abs(row.outstanding) > 1.0/10 ** self.currency_precision: # non-zero oustanding, we must consider this row @@ -577,7 +578,7 @@ class ReceivablePayableReport(object): self.gl_entries = frappe.db.sql(""" select - name, posting_date, account, party_type, party, voucher_type, voucher_no, + name, posting_date, account, party_type, party, voucher_type, voucher_no, cost_center, against_voucher_type, against_voucher, account_currency, remarks, {0} from `tabGL Entry` @@ -741,6 +742,7 @@ class ReceivablePayableReport(object): self.add_column(_("Customer Contact"), fieldname='customer_primary_contact', fieldtype='Link', options='Contact') + self.add_column(label=_('Cost Center'), fieldname='cost_center', fieldtype='Data') self.add_column(label=_('Voucher Type'), fieldname='voucher_type', fieldtype='Data') self.add_column(label=_('Voucher No'), fieldname='voucher_no', fieldtype='Dynamic Link', options='voucher_type', width=180) diff --git a/erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py b/erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py index 3ffb3ac1df..515fd995e6 100644 --- a/erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py +++ b/erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py @@ -14,11 +14,93 @@ def execute(filters=None): def get_column(): return [ - _("Delivery Note") + ":Link/Delivery Note:120", _("Status") + "::120", _("Date") + ":Date:100", - _("Suplier") + ":Link/Customer:120", _("Customer Name") + "::120", - _("Project") + ":Link/Project:120", _("Item Code") + ":Link/Item:120", - _("Amount") + ":Currency:100", _("Billed Amount") + ":Currency:100", _("Pending Amount") + ":Currency:100", - _("Item Name") + "::120", _("Description") + "::120", _("Company") + ":Link/Company:120", + { + "label": _("Delivery Note"), + "fieldname": "name", + "fieldtype": "Link", + "options": "Delivery Note", + "width": 160 + }, + { + "label": _("Date"), + "fieldname": "date", + "fieldtype": "Date", + "width": 100 + }, + { + "label": _("Customer"), + "fieldname": "customer", + "fieldtype": "Link", + "options": "Customer", + "width": 120 + }, + { + "label": _("Customer Name"), + "fieldname": "customer_name", + "fieldtype": "Data", + "width": 120 + }, + { + "label": _("Item Code"), + "fieldname": "item_code", + "fieldtype": "Link", + "options": "Item", + "width": 120 + }, + { + "label": _("Amount"), + "fieldname": "amount", + "fieldtype": "Currency", + "width": 100, + "options": "Company:company:default_currency" + }, + { + "label": _("Billed Amount"), + "fieldname": "billed_amount", + "fieldtype": "Currency", + "width": 100, + "options": "Company:company:default_currency" + }, + { + "label": _("Returned Amount"), + "fieldname": "returned_amount", + "fieldtype": "Currency", + "width": 120, + "options": "Company:company:default_currency" + }, + { + "label": _("Pending Amount"), + "fieldname": "pending_amount", + "fieldtype": "Currency", + "width": 120, + "options": "Company:company:default_currency" + }, + { + "label": _("Item Name"), + "fieldname": "item_name", + "fieldtype": "Data", + "width": 120 + }, + { + "label": _("Description"), + "fieldname": "description", + "fieldtype": "Data", + "width": 120 + }, + { + "label": _("Project"), + "fieldname": "project", + "fieldtype": "Link", + "options": "Project", + "width": 120 + }, + { + "label": _("Company"), + "fieldname": "company", + "fieldtype": "Link", + "options": "Company", + "width": 120 + } ] def get_args(): diff --git a/erpnext/accounts/report/non_billed_report.py b/erpnext/accounts/report/non_billed_report.py index a9e25bc25b..2e18ce11dd 100644 --- a/erpnext/accounts/report/non_billed_report.py +++ b/erpnext/accounts/report/non_billed_report.py @@ -17,18 +17,26 @@ def get_ordered_to_be_billed_data(args): return frappe.db.sql(""" Select - `{parent_tab}`.name, `{parent_tab}`.status, `{parent_tab}`.{date_field}, `{parent_tab}`.{party}, `{parent_tab}`.{party}_name, - {project_field}, `{child_tab}`.item_code, `{child_tab}`.base_amount, + `{parent_tab}`.name, `{parent_tab}`.{date_field}, + `{parent_tab}`.{party}, `{parent_tab}`.{party}_name, + `{child_tab}`.item_code, + `{child_tab}`.base_amount, (`{child_tab}`.billed_amt * ifnull(`{parent_tab}`.conversion_rate, 1)), - (`{child_tab}`.base_amount - (`{child_tab}`.billed_amt * ifnull(`{parent_tab}`.conversion_rate, 1))), - `{child_tab}`.item_name, `{child_tab}`.description, `{parent_tab}`.company + (`{child_tab}`.base_rate * ifnull(`{child_tab}`.returned_qty, 0)), + (`{child_tab}`.base_amount - + (`{child_tab}`.billed_amt * ifnull(`{parent_tab}`.conversion_rate, 1)) - + (`{child_tab}`.base_rate * ifnull(`{child_tab}`.returned_qty, 0))), + `{child_tab}`.item_name, `{child_tab}`.description, + {project_field}, `{parent_tab}`.company from `{parent_tab}`, `{child_tab}` where `{parent_tab}`.name = `{child_tab}`.parent and `{parent_tab}`.docstatus = 1 and `{parent_tab}`.status not in ('Closed', 'Completed') - and `{child_tab}`.amount > 0 and round(`{child_tab}`.billed_amt * - ifnull(`{parent_tab}`.conversion_rate, 1), {precision}) < `{child_tab}`.base_amount + and `{child_tab}`.amount > 0 + and (`{child_tab}`.base_amount - + round(`{child_tab}`.billed_amt * ifnull(`{parent_tab}`.conversion_rate, 1), {precision}) - + (`{child_tab}`.base_rate * ifnull(`{child_tab}`.returned_qty, 0))) > 0 order by `{parent_tab}`.{order} {order_by} """.format(parent_tab = 'tab' + doctype, child_tab = 'tab' + child_tab, precision= precision, party = party, diff --git a/erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py b/erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py index 5e8d7730b7..e9e9c9c4e6 100644 --- a/erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py +++ b/erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py @@ -14,11 +14,93 @@ def execute(filters=None): def get_column(): return [ - _("Purchase Receipt") + ":Link/Purchase Receipt:120", _("Status") + "::120", _("Date") + ":Date:100", - _("Supplier") + ":Link/Supplier:120", _("Supplier Name") + "::120", - _("Project") + ":Link/Project:120", _("Item Code") + ":Link/Item:120", - _("Amount") + ":Currency:100", _("Billed Amount") + ":Currency:100", _("Amount to Bill") + ":Currency:100", - _("Item Name") + "::120", _("Description") + "::120", _("Company") + ":Link/Company:120", + { + "label": _("Purchase Receipt"), + "fieldname": "name", + "fieldtype": "Link", + "options": "Purchase Receipt", + "width": 160 + }, + { + "label": _("Date"), + "fieldname": "date", + "fieldtype": "Date", + "width": 100 + }, + { + "label": _("Supplier"), + "fieldname": "supplier", + "fieldtype": "Link", + "options": "Supplier", + "width": 120 + }, + { + "label": _("Supplier Name"), + "fieldname": "supplier_name", + "fieldtype": "Data", + "width": 120 + }, + { + "label": _("Item Code"), + "fieldname": "item_code", + "fieldtype": "Link", + "options": "Item", + "width": 120 + }, + { + "label": _("Amount"), + "fieldname": "amount", + "fieldtype": "Currency", + "width": 100, + "options": "Company:company:default_currency" + }, + { + "label": _("Billed Amount"), + "fieldname": "billed_amount", + "fieldtype": "Currency", + "width": 100, + "options": "Company:company:default_currency" + }, + { + "label": _("Returned Amount"), + "fieldname": "returned_amount", + "fieldtype": "Currency", + "width": 120, + "options": "Company:company:default_currency" + }, + { + "label": _("Pending Amount"), + "fieldname": "pending_amount", + "fieldtype": "Currency", + "width": 120, + "options": "Company:company:default_currency" + }, + { + "label": _("Item Name"), + "fieldname": "item_name", + "fieldtype": "Data", + "width": 120 + }, + { + "label": _("Description"), + "fieldname": "description", + "fieldtype": "Data", + "width": 120 + }, + { + "label": _("Project"), + "fieldname": "project", + "fieldtype": "Link", + "options": "Project", + "width": 120 + }, + { + "label": _("Company"), + "fieldname": "company", + "fieldtype": "Link", + "options": "Company", + "width": 120 + } ] def get_args(): diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py index 53677cde8a..550aaef404 100644 --- a/erpnext/accounts/utils.py +++ b/erpnext/accounts/utils.py @@ -78,7 +78,10 @@ def get_fiscal_years(transaction_date=None, fiscal_year=None, label="Date", verb else: return ((fy.name, fy.year_start_date, fy.year_end_date),) - error_msg = _("""{0} {1} not in any active Fiscal Year.""").format(label, formatdate(transaction_date)) + error_msg = _("""{0} {1} is not in any active Fiscal Year""").format(label, formatdate(transaction_date)) + if company: + error_msg = _("""{0} for {1}""").format(error_msg, frappe.bold(company)) + if verbose==1: frappe.msgprint(error_msg) raise FiscalYearError(error_msg) diff --git a/erpnext/assets/doctype/asset/asset.js b/erpnext/assets/doctype/asset/asset.js index 7ad164a8b9..b2318a2bc6 100644 --- a/erpnext/assets/doctype/asset/asset.js +++ b/erpnext/assets/doctype/asset/asset.js @@ -373,8 +373,8 @@ frappe.ui.form.on('Asset', { doctype_field = frappe.scrub(doctype) frm.set_value(doctype_field, ''); frappe.msgprint({ - title: __(`Invalid ${doctype}`), - message: __(`The selected ${doctype} doesn't contains selected Asset Item.`), + title: __('Invalid {0}', [__(doctype)]), + message: __('The selected {0} does not contain the selected Asset Item.', [__(doctype)]), indicator: 'red' }); } @@ -436,7 +436,7 @@ frappe.ui.form.on('Asset Finance Book', { depreciation_start_date: function(frm, cdt, cdn) { const book = locals[cdt][cdn]; if (frm.doc.available_for_use_date && book.depreciation_start_date == frm.doc.available_for_use_date) { - frappe.msgprint(__(`Depreciation Posting Date should not be equal to Available for Use Date.`)); + frappe.msgprint(__("Depreciation Posting Date should not be equal to Available for Use Date.")); book.depreciation_start_date = ""; frm.refresh_field("finance_books"); } diff --git a/erpnext/assets/doctype/asset_finance_book/asset_finance_book.json b/erpnext/assets/doctype/asset_finance_book/asset_finance_book.json index d422876047..d9b7b695f7 100644 --- a/erpnext/assets/doctype/asset_finance_book/asset_finance_book.json +++ b/erpnext/assets/doctype/asset_finance_book/asset_finance_book.json @@ -50,13 +50,11 @@ "reqd": 1 }, { - "depends_on": "eval:parent.doctype == 'Asset'", "fieldname": "depreciation_start_date", "fieldtype": "Date", "in_list_view": 1, "label": "Depreciation Posting Date", - "mandatory_depends_on": "eval:parent.doctype == 'Asset'", - "reqd": 1 + "mandatory_depends_on": "eval:parent.doctype == 'Asset'" }, { "default": "0", @@ -87,7 +85,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2020-10-30 15:22:29.119868", + "modified": "2020-11-05 16:30:09.213479", "modified_by": "Administrator", "module": "Assets", "name": "Asset Finance Book", diff --git a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py index 60c528bcc4..a506deec93 100644 --- a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py +++ b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py @@ -108,7 +108,7 @@ def update_maintenance_log(asset_maintenance, item_code, item_name, task): @frappe.whitelist() @frappe.validate_and_sanitize_search_inputs def get_team_members(doctype, txt, searchfield, start, page_len, filters): - return frappe.db.get_values('Maintenance Team Member', { 'parent': filters.get("maintenance_team") }) + return frappe.db.get_values('Maintenance Team Member', { 'parent': filters.get("maintenance_team") }, "team_member") @frappe.whitelist() def get_maintenance_log(asset_name): diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js index 9f2b9714f7..47483c9d1c 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.js +++ b/erpnext/buying/doctype/purchase_order/purchase_order.js @@ -90,6 +90,11 @@ erpnext.buying.PurchaseOrderController = erpnext.buying.BuyingController.extend( this.frm.set_df_property("drop_ship", "hidden", !is_drop_ship); if(doc.docstatus == 1) { + this.frm.fields_dict.items_section.wrapper.addClass("hide-border"); + if(!this.frm.doc.set_warehouse) { + this.frm.fields_dict.items_section.wrapper.removeClass("hide-border"); + } + if(!in_list(["Closed", "Delivered"], doc.status)) { if(this.frm.doc.status !== 'Closed' && flt(this.frm.doc.per_received) < 100 && flt(this.frm.doc.per_billed) < 100) { this.frm.add_custom_button(__('Update Items'), () => { @@ -126,16 +131,25 @@ erpnext.buying.PurchaseOrderController = erpnext.buying.BuyingController.extend( if(doc.status != "Closed") { if (doc.status != "On Hold") { if(flt(doc.per_received) < 100 && allow_receipt) { - cur_frm.add_custom_button(__('Receipt'), this.make_purchase_receipt, __('Create')); + cur_frm.add_custom_button(__('Purchase Receipt'), this.make_purchase_receipt, __('Create')); if(doc.is_subcontracted==="Yes" && me.has_unsupplied_items()) { cur_frm.add_custom_button(__('Material to Supplier'), function() { me.make_stock_entry(); }, __("Transfer")); } } if(flt(doc.per_billed) < 100) - cur_frm.add_custom_button(__('Invoice'), + cur_frm.add_custom_button(__('Purchase Invoice'), this.make_purchase_invoice, __('Create')); + if(flt(doc.per_billed)==0 && doc.status != "Delivered") { + cur_frm.add_custom_button(__('Payment'), cur_frm.cscript.make_payment_entry, __('Create')); + } + + if(flt(doc.per_billed)==0) { + this.frm.add_custom_button(__('Payment Request'), + function() { me.make_payment_request() }, __('Create')); + } + if(!doc.auto_repeat) { cur_frm.add_custom_button(__('Subscription'), function() { erpnext.utils.make_subscription(doc.doctype, doc.name) @@ -156,13 +170,7 @@ erpnext.buying.PurchaseOrderController = erpnext.buying.BuyingController.extend( }); } } - if(flt(doc.per_billed)==0) { - this.frm.add_custom_button(__('Payment Request'), - function() { me.make_payment_request() }, __('Create')); - } - if(flt(doc.per_billed)==0 && doc.status != "Delivered") { - cur_frm.add_custom_button(__('Payment'), cur_frm.cscript.make_payment_entry, __('Create')); - } + cur_frm.page.set_inner_btn_group_as_primary(__('Create')); } } else if(doc.docstatus===0) { @@ -299,7 +307,7 @@ erpnext.buying.PurchaseOrderController = erpnext.buying.BuyingController.extend( if(me.values) { me.values.sub_con_rm_items.map((row,i) => { if (!row.item_code || !row.rm_item_code || !row.warehouse || !row.qty || row.qty === 0) { - frappe.throw(__("Item Code, warehouse, quantity are required on row" + (i+1))); + frappe.throw(__("Item Code, warehouse, quantity are required on row {0}", [i+1])); } }) me._make_rm_stock_entry(me.dialog.fields_dict.sub_con_rm_items.grid.get_selected_children()) @@ -358,15 +366,19 @@ erpnext.buying.PurchaseOrderController = erpnext.buying.BuyingController.extend( method: "erpnext.stock.doctype.material_request.material_request.make_purchase_order", source_doctype: "Material Request", target: me.frm, - setters: {}, + setters: { + schedule_date: undefined, + status: undefined + }, get_query_filters: { material_request_type: "Purchase", docstatus: 1, status: ["!=", "Stopped"], per_ordered: ["<", 99.99], + company: me.frm.doc.company } }) - }, __("Get items from")); + }, __("Get Items From")); this.frm.add_custom_button(__('Supplier Quotation'), function() { @@ -375,16 +387,17 @@ erpnext.buying.PurchaseOrderController = erpnext.buying.BuyingController.extend( source_doctype: "Supplier Quotation", target: me.frm, setters: { - supplier: me.frm.doc.supplier + supplier: me.frm.doc.supplier, + valid_till: undefined }, get_query_filters: { docstatus: 1, - status: ["!=", "Stopped"], + status: ["not in", ["Stopped", "Expired"]], } }) - }, __("Get items from")); + }, __("Get Items From")); - this.frm.add_custom_button(__('Update rate as per last purchase'), + this.frm.add_custom_button(__('Update Rate as per Last Purchase'), function() { frappe.call({ "method": "get_last_purchase_rate", diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json index 2747c7c54d..75da71ceff 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.json +++ b/erpnext/buying/doctype/purchase_order/purchase_order.json @@ -1,5 +1,6 @@ { "actions": [], + "allow_auto_repeat": 1, "allow_import": 1, "autoname": "naming_series:", "creation": "2013-05-21 16:16:39", @@ -30,8 +31,8 @@ "customer_contact_email", "section_addresses", "supplier_address", - "contact_person", "address_display", + "contact_person", "contact_display", "contact_mobile", "contact_email", @@ -49,12 +50,14 @@ "plc_conversion_rate", "ignore_pricing_rule", "sec_warehouse", - "set_warehouse", - "col_break_warehouse", "is_subcontracted", + "col_break_warehouse", "supplier_warehouse", - "items_section", + "before_items_section", "scan_barcode", + "items_col_break", + "set_warehouse", + "items_section", "items", "sb_last_purchase", "total_qty", @@ -108,18 +111,13 @@ "payment_terms_template", "payment_schedule", "tracking_section", - "per_billed", + "status", "column_break_75", + "per_billed", "per_received", "terms_section_break", "tc_name", "terms", - "more_info", - "status", - "ref_sq", - "column_break_74", - "party_account_currency", - "inter_company_order_reference", "column_break5", "letter_head", "select_print_heading", @@ -131,7 +129,12 @@ "to_date", "column_break_97", "auto_repeat", - "update_auto_repeat_reference" + "update_auto_repeat_reference", + "more_info", + "ref_sq", + "column_break_74", + "party_account_currency", + "inter_company_order_reference" ], "fields": [ { @@ -165,6 +168,7 @@ "bold": 1, "fieldname": "supplier", "fieldtype": "Link", + "in_global_search": 1, "in_standard_filter": 1, "label": "Supplier", "oldfieldname": "supplier", @@ -313,34 +317,34 @@ { "fieldname": "supplier_address", "fieldtype": "Link", - "label": "Select Supplier Address", + "label": "Supplier Address", "options": "Address", "print_hide": 1 }, { "fieldname": "contact_person", "fieldtype": "Link", - "label": "Contact Person", + "label": "Supplier Contact", "options": "Contact", "print_hide": 1 }, { "fieldname": "address_display", "fieldtype": "Small Text", - "label": "Address", + "label": "Supplier Address Details", "read_only": 1 }, { "fieldname": "contact_display", "fieldtype": "Small Text", "in_global_search": 1, - "label": "Contact", + "label": "Contact Name", "read_only": 1 }, { "fieldname": "contact_mobile", "fieldtype": "Small Text", - "label": "Mobile No", + "label": "Contact Mobile No", "read_only": 1 }, { @@ -358,14 +362,14 @@ { "fieldname": "shipping_address", "fieldtype": "Link", - "label": "Select Shipping Address", + "label": "Company Shipping Address", "options": "Address", "print_hide": 1 }, { "fieldname": "shipping_address_display", "fieldtype": "Small Text", - "label": "Shipping Address", + "label": "Shipping Address Details", "print_hide": 1, "read_only": 1 }, @@ -433,7 +437,8 @@ }, { "fieldname": "sec_warehouse", - "fieldtype": "Section Break" + "fieldtype": "Section Break", + "label": "Subcontracting" }, { "description": "Sets 'Warehouse' in each row of the Items table.", @@ -466,6 +471,7 @@ { "fieldname": "items_section", "fieldtype": "Section Break", + "hide_border": 1, "oldfieldtype": "Section Break", "options": "fa fa-shopping-cart" }, @@ -598,7 +604,8 @@ }, { "fieldname": "section_break_52", - "fieldtype": "Section Break" + "fieldtype": "Section Break", + "hide_border": 1 }, { "fieldname": "taxes", @@ -626,10 +633,12 @@ { "fieldname": "totals", "fieldtype": "Section Break", + "label": "Taxes and Charges", "oldfieldtype": "Section Break", "options": "fa fa-money" }, { + "depends_on": "base_taxes_and_charges_added", "fieldname": "base_taxes_and_charges_added", "fieldtype": "Currency", "label": "Taxes and Charges Added (Company Currency)", @@ -640,6 +649,7 @@ "read_only": 1 }, { + "depends_on": "base_taxes_and_charges_deducted", "fieldname": "base_taxes_and_charges_deducted", "fieldtype": "Currency", "label": "Taxes and Charges Deducted (Company Currency)", @@ -650,6 +660,7 @@ "read_only": 1 }, { + "depends_on": "base_total_taxes_and_charges", "fieldname": "base_total_taxes_and_charges", "fieldtype": "Currency", "label": "Total Taxes and Charges (Company Currency)", @@ -665,6 +676,7 @@ "fieldtype": "Column Break" }, { + "depends_on": "taxes_and_charges_added", "fieldname": "taxes_and_charges_added", "fieldtype": "Currency", "label": "Taxes and Charges Added", @@ -675,6 +687,7 @@ "read_only": 1 }, { + "depends_on": "taxes_and_charges_deducted", "fieldname": "taxes_and_charges_deducted", "fieldtype": "Currency", "label": "Taxes and Charges Deducted", @@ -685,6 +698,7 @@ "read_only": 1 }, { + "depends_on": "total_taxes_and_charges", "fieldname": "total_taxes_and_charges", "fieldtype": "Currency", "label": "Total Taxes and Charges", @@ -694,7 +708,7 @@ }, { "collapsible": 1, - "collapsible_depends_on": "discount_amount", + "collapsible_depends_on": "apply_discount_on", "fieldname": "discount_section", "fieldtype": "Section Break", "label": "Additional Discount" @@ -734,7 +748,8 @@ }, { "fieldname": "totals_section", - "fieldtype": "Section Break" + "fieldtype": "Section Break", + "label": "Totals" }, { "fieldname": "base_grand_total", @@ -902,12 +917,12 @@ }, { "fieldname": "ref_sq", - "fieldtype": "Data", - "hidden": 1, - "label": "Ref SQ", + "fieldtype": "Link", + "label": "Supplier Quotation", "no_copy": 1, "oldfieldname": "ref_sq", "oldfieldtype": "Data", + "options": "Supplier Quotation", "print_hide": 1, "read_only": 1 }, @@ -1061,7 +1076,7 @@ "collapsible": 1, "fieldname": "tracking_section", "fieldtype": "Section Break", - "label": "Tracking" + "label": "Order Status" }, { "fieldname": "column_break_75", @@ -1070,21 +1085,29 @@ { "fieldname": "billing_address", "fieldtype": "Link", - "label": "Select Billing Address", + "label": "Company Billing Address", "options": "Address" }, { "fieldname": "billing_address_display", "fieldtype": "Small Text", - "label": "Billing Address", + "label": "Billing Address Details", "read_only": 1 + }, + { + "fieldname": "before_items_section", + "fieldtype": "Section Break" + }, + { + "fieldname": "items_col_break", + "fieldtype": "Column Break" } ], "icon": "fa fa-file-text", "idx": 105, "is_submittable": 1, "links": [], - "modified": "2020-10-07 14:31:57.661221", + "modified": "2020-12-03 16:46:44.229351", "modified_by": "Administrator", "module": "Buying", "name": "Purchase Order", diff --git a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json index 7a52c28a0e..10db240a44 100644 --- a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json +++ b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json @@ -24,6 +24,7 @@ "col_break2", "uom", "conversion_factor", + "stock_qty", "sec_break1", "price_list_rate", "discount_percentage", @@ -46,11 +47,8 @@ "column_break_32", "base_net_rate", "base_net_amount", - "billed_amt", "warehouse_and_reference", "warehouse", - "delivered_by_supplier", - "project", "material_request", "material_request_item", "sales_order", @@ -58,36 +56,37 @@ "supplier_quotation", "supplier_quotation_item", "col_break5", + "delivered_by_supplier", "against_blanket_order", "blanket_order", "blanket_order_rate", "item_group", "brand", - "bom", - "include_exploded_items", "section_break_56", - "stock_qty", - "column_break_60", "received_qty", "returned_qty", - "manufacture_details", - "manufacturer", - "column_break_14", - "manufacturer_part_no", - "more_info_section_break", - "is_fixed_asset", - "item_tax_rate", + "column_break_60", + "billed_amt", "accounting_details", "expense_account", - "column_break_68", + "manufacture_details", + "manufacturer", + "manufacturer_part_no", + "column_break_14", + "bom", + "include_exploded_items", "item_weight_details", "weight_per_unit", "total_weight", "column_break_40", "weight_uom", "accounting_dimensions_section", - "cost_center", + "project", "dimension_col_break", + "cost_center", + "more_info_section_break", + "is_fixed_asset", + "item_tax_rate", "section_break_72", "page_break" ], @@ -346,6 +345,7 @@ }, { "default": "0", + "depends_on": "is_free_item", "fieldname": "is_free_item", "fieldtype": "Check", "label": "Is Free Item", @@ -508,9 +508,10 @@ }, { "default": "0", + "depends_on": "delivered_by_supplier", "fieldname": "delivered_by_supplier", "fieldtype": "Check", - "label": "To be delivered to customer", + "label": "To be Delivered to Customer", "print_hide": 1, "read_only": 1 }, @@ -558,6 +559,7 @@ "read_only": 1 }, { + "depends_on": "eval:parent.is_subcontracted == 'Yes'", "fieldname": "bom", "fieldtype": "Link", "label": "BOM", @@ -574,21 +576,21 @@ }, { "fieldname": "section_break_56", - "fieldtype": "Section Break" + "fieldtype": "Section Break", + "label": "Billed, Received & Returned" }, { "fieldname": "stock_qty", "fieldtype": "Float", - "label": "Qty as per Stock UOM", + "label": "Qty in Stock UOM", "no_copy": 1, - "oldfieldname": "stock_qty", - "oldfieldtype": "Currency", "print_hide": 1, "print_width": "100px", "read_only": 1, "width": "100px" }, { + "depends_on": "received_qty", "fieldname": "received_qty", "fieldtype": "Float", "label": "Received Qty", @@ -612,9 +614,10 @@ "fieldtype": "Column Break" }, { + "depends_on": "billed_amt", "fieldname": "billed_amt", "fieldtype": "Currency", - "label": "Billed Amt", + "label": "Billed Amount", "no_copy": 1, "options": "currency", "print_hide": 1, @@ -633,6 +636,7 @@ "report_hide": 1 }, { + "collapsible": 1, "fieldname": "accounting_details", "fieldtype": "Section Break", "label": "Accounting Details" @@ -644,10 +648,6 @@ "options": "Account", "print_hide": 1 }, - { - "fieldname": "column_break_68", - "fieldtype": "Column Break" - }, { "fieldname": "cost_center", "fieldtype": "Link", @@ -715,6 +715,7 @@ }, { "default": "0", + "depends_on": "is_fixed_asset", "fetch_from": "item_code.is_fixed_asset", "fieldname": "is_fixed_asset", "fieldtype": "Check", @@ -728,9 +729,10 @@ } ], "idx": 1, + "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2020-04-21 11:55:58.643393", + "modified": "2020-10-30 11:59:47.670951", "modified_by": "Administrator", "module": "Buying", "name": "Purchase Order Item", diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js index f56c9b4f0c..e537771eaf 100644 --- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js +++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js @@ -217,13 +217,15 @@ erpnext.buying.RequestforQuotationController = erpnext.buying.BuyingController.e source_doctype: "Material Request", target: me.frm, setters: { - company: me.frm.doc.company + schedule_date: undefined, + status: undefined }, get_query_filters: { material_request_type: "Purchase", docstatus: 1, status: ["!=", "Stopped"], - per_ordered: ["<", 99.99] + per_ordered: ["<", 99.99], + company: me.frm.doc.company } }) }, __("Get Items From")); @@ -236,32 +238,40 @@ erpnext.buying.RequestforQuotationController = erpnext.buying.BuyingController.e source_doctype: "Opportunity", target: me.frm, setters: { - company: me.frm.doc.company + party_name: undefined, + opportunity_from: undefined, + status: undefined }, + get_query_filters: { + status: ["not in", ["Closed", "Lost"]], + company: me.frm.doc.company + } }) }, __("Get Items From")); // Get items from open Material Requests based on supplier this.frm.add_custom_button(__('Possible Supplier'), function() { // Create a dialog window for the user to pick their supplier - var d = new frappe.ui.Dialog({ + var dialog = new frappe.ui.Dialog({ title: __('Select Possible Supplier'), fields: [ - {fieldname: 'supplier', fieldtype:'Link', options:'Supplier', label:'Supplier', reqd:1}, - {fieldname: 'ok_button', fieldtype:'Button', label:'Get Items from Material Requests'}, - ] - }); - - // On the user clicking the ok button - d.fields_dict.ok_button.input.onclick = function() { - var btn = d.fields_dict.ok_button.input; - var v = d.get_values(); - if(v) { - $(btn).set_working(); + { + fieldname: 'supplier', + fieldtype:'Link', + options:'Supplier', + label:'Supplier', + reqd:1, + description: __("Get Items from Material Requests against this Supplier") + } + ], + primary_action_label: __("Get Items"), + primary_action: (args) => { + if(!args) return; + dialog.hide(); erpnext.utils.map_current_doc({ method: "erpnext.buying.doctype.request_for_quotation.request_for_quotation.get_item_from_material_requests_based_on_supplier", - source_name: v.supplier, + source_name: args.supplier, target: me.frm, setters: { company: me.frm.doc.company @@ -273,18 +283,24 @@ erpnext.buying.RequestforQuotationController = erpnext.buying.BuyingController.e per_ordered: ["<", 99.99] } }); - $(btn).done_working(); - d.hide(); + dialog.hide(); } - } - d.show(); + }); + + dialog.show(); }, __("Get Items From")); + // Link Material Requests + this.frm.add_custom_button(__('Link to Material Requests'), + function() { + erpnext.buying.link_to_mrs(me.frm); + }, __("Tools")); + // Get Suppliers this.frm.add_custom_button(__('Get Suppliers'), function() { me.get_suppliers_button(me.frm); - }); + }, __("Tools")); } }, @@ -304,7 +320,7 @@ erpnext.buying.RequestforQuotationController = erpnext.buying.BuyingController.e { "fieldtype": "Select", "label": __("Get Suppliers By"), "fieldname": "search_type", - "options": ["Tag","Supplier Group"], + "options": ["Supplier Group", "Tag"], "reqd": 1, onchange() { if(dialog.get_value('search_type') == 'Tag'){ diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json index 4e09a7ef05..4ce4100a7f 100644 --- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json +++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json @@ -18,12 +18,11 @@ "suppliers", "items_section", "items", - "link_to_mrs", "supplier_response_section", "salutation", - "email_template", - "col_break_email_1", "subject", + "col_break_email_1", + "email_template", "preview", "sec_break_email_2", "message_for_supplier", @@ -118,13 +117,6 @@ "reqd": 1 }, { - "depends_on": "eval:doc.docstatus===0 && (doc.items && doc.items.length)", - "fieldname": "link_to_mrs", - "fieldtype": "Button", - "label": "Link to Material Requests" - }, - { - "depends_on": "eval:!doc.__islocal", "fieldname": "supplier_response_section", "fieldtype": "Section Break", "label": "Email Details" @@ -260,7 +252,7 @@ "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2020-10-16 17:49:09.561929", + "modified": "2020-11-05 22:04:29.017134", "modified_by": "Administrator", "module": "Buying", "name": "Request for Quotation", diff --git a/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json b/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json index 96d7e2dbcf..534cd90cc6 100644 --- a/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json +++ b/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json @@ -5,14 +5,14 @@ "editable_grid": 1, "engine": "InnoDB", "field_order": [ - "send_email", - "email_sent", "supplier", "contact", "quote_status", "column_break_3", "supplier_name", - "email_id" + "email_id", + "send_email", + "email_sent" ], "fields": [ { @@ -87,7 +87,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2020-10-16 12:23:41.769820", + "modified": "2020-11-04 22:01:43.832942", "modified_by": "Administrator", "module": "Buying", "name": "Request for Quotation Supplier", diff --git a/erpnext/buying/doctype/supplier/test_supplier.py b/erpnext/buying/doctype/supplier/test_supplier.py index a377ec90f8..f9c8d35518 100644 --- a/erpnext/buying/doctype/supplier/test_supplier.py +++ b/erpnext/buying/doctype/supplier/test_supplier.py @@ -120,3 +120,20 @@ class TestSupplier(unittest.TestCase): # Rollback address.delete() + +def create_supplier(**args): + args = frappe._dict(args) + + try: + doc = frappe.get_doc({ + "doctype": "Supplier", + "supplier_name": args.supplier_name, + "supplier_group": args.supplier_group or "Services", + "supplier_type": args.supplier_type or "Company", + "tax_withholding_category": args.tax_withholding_category + }).insert() + + return doc + + except frappe.DuplicateEntryError: + return frappe.get_doc("Supplier", args.supplier_name) \ No newline at end of file diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js index 3376e82956..a3b2085400 100644 --- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js +++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js @@ -37,16 +37,24 @@ erpnext.buying.SupplierQuotationController = erpnext.buying.BuyingController.ext source_doctype: "Material Request", target: me.frm, setters: { - company: me.frm.doc.company + schedule_date: undefined, + status: undefined }, get_query_filters: { material_request_type: "Purchase", docstatus: 1, status: ["!=", "Stopped"], - per_ordered: ["<", 99.99] + per_ordered: ["<", 99.99], + company: me.frm.doc.company } }) - }, __("Get items from")); + }, __("Get Items From")); + + // Link Material Requests + this.frm.add_custom_button(__('Link to Material Requests'), + function() { + erpnext.buying.link_to_mrs(me.frm); + }, __("Tools")); this.frm.add_custom_button(__("Request for Quotation"), function() { @@ -58,16 +66,16 @@ erpnext.buying.SupplierQuotationController = erpnext.buying.BuyingController.ext source_doctype: "Request for Quotation", target: me.frm, setters: { - company: me.frm.doc.company, transaction_date: null }, get_query_filters: { - supplier: me.frm.doc.supplier + supplier: me.frm.doc.supplier, + company: me.frm.doc.company }, get_query_method: "erpnext.buying.doctype.request_for_quotation.request_for_quotation.get_rfq_containing_supplier" }) - }, __("Get items from")); + }, __("Get Items From")); } }, diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json index 9a092ca5c3..40fbe2c26e 100644 --- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json +++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json @@ -1,5 +1,6 @@ { "actions": [], + "allow_auto_repeat": 1, "allow_import": 1, "autoname": "naming_series:", "creation": "2013-05-21 16:16:45", @@ -34,7 +35,6 @@ "ignore_pricing_rule", "items_section", "items", - "link_to_mrs", "pricing_rule_details", "pricing_rules", "section_break_22", @@ -321,12 +321,6 @@ "options": "Supplier Quotation Item", "reqd": 1 }, - { - "depends_on": "eval:doc.docstatus===0 && (doc.items && doc.items.length)", - "fieldname": "link_to_mrs", - "fieldtype": "Button", - "label": "Link to material requests" - }, { "fieldname": "pricing_rule_details", "fieldtype": "Section Break", @@ -805,9 +799,10 @@ ], "icon": "fa fa-shopping-cart", "idx": 29, + "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2020-10-01 20:56:17.932007", + "modified": "2020-12-03 15:18:29.073368", "modified_by": "Administrator", "module": "Buying", "name": "Supplier Quotation", diff --git a/erpnext/communication/doctype/communication_medium/communication_medium.json b/erpnext/communication/doctype/communication_medium/communication_medium.json index f009b38877..1e1fe3bf49 100644 --- a/erpnext/communication/doctype/communication_medium/communication_medium.json +++ b/erpnext/communication/doctype/communication_medium/communication_medium.json @@ -1,12 +1,14 @@ { + "actions": [], "autoname": "Prompt", "creation": "2019-06-05 11:48:30.572795", "doctype": "DocType", "engine": "InnoDB", "field_order": [ + "communication_channel", "communication_medium_type", - "catch_all", "column_break_3", + "catch_all", "provider", "disabled", "timeslots_section", @@ -54,9 +56,16 @@ "fieldtype": "Table", "label": "Timeslots", "options": "Communication Medium Timeslot" + }, + { + "fieldname": "communication_channel", + "fieldtype": "Select", + "label": "Communication Channel", + "options": "\nExotel" } ], - "modified": "2019-06-05 11:49:30.769006", + "links": [], + "modified": "2020-10-27 16:22:08.068542", "modified_by": "Administrator", "module": "Communication", "name": "Communication Medium", diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 6108a614ca..93a79ec934 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -23,6 +23,8 @@ from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import g from erpnext.stock.get_item_details import get_item_warehouse, _get_item_tax_template, get_item_tax_map from erpnext.stock.doctype.packed_item.packed_item import make_packing_list +class AccountMissingError(frappe.ValidationError): pass + force_item_fields = ("item_group", "brand", "stock_uom", "is_fixed_asset", "item_tax_rate", "pricing_rules") class AccountsController(TransactionBase): @@ -735,6 +737,21 @@ class AccountsController(TransactionBase): return self._abbr + def raise_missing_debit_credit_account_error(self, party_type, party): + """Raise an error if debit to/credit to account does not exist.""" + db_or_cr = frappe.bold("Debit To") if self.doctype == "Sales Invoice" else frappe.bold("Credit To") + rec_or_pay = "Receivable" if self.doctype == "Sales Invoice" else "Payable" + + link_to_party = frappe.utils.get_link_to_form(party_type, party) + link_to_company = frappe.utils.get_link_to_form("Company", self.company) + + message = _("{0} Account not found against Customer {1}.").format(db_or_cr, frappe.bold(party) or '') + message += "
" + _("Please set one of the following:") + "
" + message += "
" + + frappe.throw(message, title=_("Account Missing"), exc=AccountMissingError) + def validate_party(self): party_type, party = self.get_party() validate_party_frozen_disabled(party_type, party) diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py index 9ee83e3481..5fabf7017b 100644 --- a/erpnext/controllers/buying_controller.py +++ b/erpnext/controllers/buying_controller.py @@ -497,6 +497,10 @@ class BuyingController(StockController): frappe.throw(_("Row {0}: Conversion Factor is mandatory").format(d.idx)) d.stock_qty = flt(d.qty) * flt(d.conversion_factor) + if self.doctype=="Purchase Receipt" and d.meta.get_field("received_stock_qty"): + # Set Received Qty in Stock UOM + d.received_stock_qty = flt(d.received_qty) * flt(d.conversion_factor, d.precision("conversion_factor")) + def validate_purchase_return(self): for d in self.get("items"): if self.is_return and flt(d.rejected_qty) != 0: diff --git a/erpnext/controllers/sales_and_purchase_return.py b/erpnext/controllers/sales_and_purchase_return.py index afc5f8179f..5299b25601 100644 --- a/erpnext/controllers/sales_and_purchase_return.py +++ b/erpnext/controllers/sales_and_purchase_return.py @@ -203,10 +203,37 @@ def get_already_returned_items(doc): return items +def get_returned_qty_map_for_row(row_name, doctype): + child_doctype = doctype + " Item" + reference_field = frappe.scrub(child_doctype) if doctype == "Purchase Receipt" else "dn_detail" + + fields = [ + "sum(abs(`tab{0}`.qty)) as qty".format(child_doctype), + "sum(abs(`tab{0}`.stock_qty)) as stock_qty".format(child_doctype) + ] + + if doctype == "Purchase Receipt": + fields += [ + "sum(abs(`tab{0}`.rejected_qty)) as rejected_qty".format(child_doctype), + "sum(abs(`tab{0}`.received_qty)) as received_qty".format(child_doctype), + "sum(abs(`tab{0}`.received_stock_qty)) as received_stock_qty".format(child_doctype) + ] + + data = frappe.db.get_list(doctype, + fields = fields, + filters = [ + [doctype, "docstatus", "=", 1], + [doctype, "is_return", "=", 1], + [child_doctype, reference_field, "=", row_name] + ]) + + return data[0] + def make_return_doc(doctype, source_name, target_doc=None): from frappe.model.mapper import get_mapped_doc company = frappe.db.get_value("Delivery Note", source_name, "company") default_warehouse_for_sales_return = frappe.db.get_value("Company", company, "default_warehouse_for_sales_return") + def set_missing_values(source, target): doc = frappe.get_doc(target) doc.is_return = 1 @@ -261,20 +288,25 @@ def make_return_doc(doctype, source_name, target_doc=None): doc.run_method("calculate_taxes_and_totals") def update_item(source_doc, target_doc, source_parent): - target_doc.qty = -1* source_doc.qty + target_doc.qty = -1 * source_doc.qty + if doctype == "Purchase Receipt": - target_doc.received_qty = -1* source_doc.received_qty - target_doc.rejected_qty = -1* source_doc.rejected_qty - target_doc.qty = -1* source_doc.qty - target_doc.stock_qty = -1 * source_doc.stock_qty + returned_qty_map = get_returned_qty_map_for_row(source_doc.name, doctype) + target_doc.received_qty = -1 * flt(source_doc.received_qty - (returned_qty_map.get('received_qty') or 0)) + target_doc.rejected_qty = -1 * flt(source_doc.rejected_qty - (returned_qty_map.get('rejected_qty') or 0)) + target_doc.qty = -1 * flt(source_doc.qty - (returned_qty_map.get('qty') or 0)) + + target_doc.stock_qty = -1 * flt(source_doc.stock_qty - (returned_qty_map.get('stock_qty') or 0)) + target_doc.received_stock_qty = -1 * flt(source_doc.received_stock_qty - (returned_qty_map.get('received_stock_qty') or 0)) + target_doc.purchase_order = source_doc.purchase_order target_doc.purchase_order_item = source_doc.purchase_order_item target_doc.rejected_warehouse = source_doc.rejected_warehouse target_doc.purchase_receipt_item = source_doc.name elif doctype == "Purchase Invoice": - target_doc.received_qty = -1* source_doc.received_qty - target_doc.rejected_qty = -1* source_doc.rejected_qty + target_doc.received_qty = -1 * source_doc.received_qty + target_doc.rejected_qty = -1 * source_doc.rejected_qty target_doc.qty = -1* source_doc.qty target_doc.stock_qty = -1 * source_doc.stock_qty target_doc.purchase_order = source_doc.purchase_order @@ -285,6 +317,10 @@ def make_return_doc(doctype, source_name, target_doc=None): target_doc.purchase_invoice_item = source_doc.name elif doctype == "Delivery Note": + returned_qty_map = get_returned_qty_map_for_row(source_doc.name, doctype) + target_doc.qty = -1 * flt(source_doc.qty - (returned_qty_map.get('qty') or 0)) + target_doc.stock_qty = -1 * flt(source_doc.stock_qty - (returned_qty_map.get('stock_qty') or 0)) + target_doc.against_sales_order = source_doc.against_sales_order target_doc.against_sales_invoice = source_doc.against_sales_invoice target_doc.so_detail = source_doc.so_detail diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py index 58861715c2..4dbd7bfa18 100644 --- a/erpnext/controllers/selling_controller.py +++ b/erpnext/controllers/selling_controller.py @@ -42,7 +42,7 @@ class SellingController(StockController): self.validate_max_discount() self.validate_selling_price() self.set_qty_as_per_stock_uom() - self.set_po_nos() + self.set_po_nos(for_validate=True) self.set_gross_profit() set_default_income_account_for_item(self) self.set_customer_address() @@ -370,14 +370,36 @@ class SellingController(StockController): })) self.make_sl_entries(sl_entries) - def set_po_nos(self): - if self.doctype in ("Delivery Note", "Sales Invoice") and hasattr(self, "items"): - ref_fieldname = "against_sales_order" if self.doctype == "Delivery Note" else "sales_order" - sales_orders = list(set([d.get(ref_fieldname) for d in self.items if d.get(ref_fieldname)])) - if sales_orders: - po_nos = frappe.get_all('Sales Order', 'po_no', filters = {'name': ('in', sales_orders)}) - if po_nos and po_nos[0].get('po_no'): - self.po_no = ', '.join(list(set([d.po_no for d in po_nos if d.po_no]))) + def set_po_nos(self, for_validate=False): + if self.doctype == 'Sales Invoice' and hasattr(self, "items"): + if for_validate and self.po_no: + return + self.set_pos_for_sales_invoice() + if self.doctype == 'Delivery Note' and hasattr(self, "items"): + if for_validate and self.po_no: + return + self.set_pos_for_delivery_note() + + def set_pos_for_sales_invoice(self): + po_nos = [] + if self.po_no: + po_nos.append(self.po_no) + self.get_po_nos('Sales Order', 'sales_order', po_nos) + self.get_po_nos('Delivery Note', 'delivery_note', po_nos) + self.po_no = ', '.join(list(set(x.strip() for x in ','.join(po_nos).split(',')))) + + def set_pos_for_delivery_note(self): + po_nos = [] + if self.po_no: + po_nos.append(self.po_no) + self.get_po_nos('Sales Order', 'against_sales_order', po_nos) + self.get_po_nos('Sales Invoice', 'against_sales_invoice', po_nos) + self.po_no = ', '.join(list(set(x.strip() for x in ','.join(po_nos).split(',')))) + + def get_po_nos(self, ref_doctype, ref_fieldname, po_nos): + doc_list = list(set([d.get(ref_fieldname) for d in self.items if d.get(ref_fieldname)])) + if doc_list: + po_nos += [d.po_no for d in frappe.get_all(ref_doctype, 'po_no', filters = {'name': ('in', doc_list)}) if d.get('po_no')] def set_gross_profit(self): if self.doctype in ["Sales Order", "Quotation"]: @@ -402,26 +424,26 @@ class SellingController(StockController): return for d in self.get('items'): - if self.doctype == "Sales Invoice": - e = [d.item_code, d.description, d.warehouse, d.sales_order or d.delivery_note, d.batch_no or ''] - f = [d.item_code, d.description, d.sales_order or d.delivery_note] + if self.doctype in ["POS Invoice","Sales Invoice"]: + stock_items = [d.item_code, d.description, d.warehouse, d.sales_order or d.delivery_note, d.batch_no or ''] + non_stock_items = [d.item_code, d.description, d.sales_order or d.delivery_note] elif self.doctype == "Delivery Note": - e = [d.item_code, d.description, d.warehouse, d.against_sales_order or d.against_sales_invoice, d.batch_no or ''] - f = [d.item_code, d.description, d.against_sales_order or d.against_sales_invoice] + stock_items = [d.item_code, d.description, d.warehouse, d.against_sales_order or d.against_sales_invoice, d.batch_no or ''] + non_stock_items = [d.item_code, d.description, d.against_sales_order or d.against_sales_invoice] elif self.doctype in ["Sales Order", "Quotation"]: - e = [d.item_code, d.description, d.warehouse, ''] - f = [d.item_code, d.description] + stock_items = [d.item_code, d.description, d.warehouse, ''] + non_stock_items = [d.item_code, d.description] if frappe.db.get_value("Item", d.item_code, "is_stock_item") == 1: - if e in check_list: + if stock_items in check_list: frappe.throw(_("Note: Item {0} entered multiple times").format(d.item_code)) else: - check_list.append(e) + check_list.append(stock_items) else: - if f in chk_dupl_itm: + if non_stock_items in chk_dupl_itm: frappe.throw(_("Note: Item {0} entered multiple times").format(d.item_code)) else: - chk_dupl_itm.append(f) + chk_dupl_itm.append(non_stock_items) def validate_target_warehouse(self): items = self.get("items") + (self.get("packed_items") or []) diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py index 9feac78770..2555edf06b 100644 --- a/erpnext/controllers/status_updater.py +++ b/erpnext/controllers/status_updater.py @@ -58,6 +58,7 @@ status_map = { "Delivery Note": [ ["Draft", None], ["To Bill", "eval:self.per_billed < 100 and self.docstatus == 1"], + ["Return Issued", "eval:self.per_returned == 100 and self.docstatus == 1"], ["Completed", "eval:self.per_billed == 100 and self.docstatus == 1"], ["Cancelled", "eval:self.docstatus==2"], ["Closed", "eval:self.status=='Closed'"], @@ -65,6 +66,7 @@ status_map = { "Purchase Receipt": [ ["Draft", None], ["To Bill", "eval:self.per_billed < 100 and self.docstatus == 1"], + ["Return Issued", "eval:self.per_returned == 100 and self.docstatus == 1"], ["Completed", "eval:self.per_billed == 100 and self.docstatus == 1"], ["Cancelled", "eval:self.docstatus==2"], ["Closed", "eval:self.status=='Closed'"], @@ -232,7 +234,7 @@ class StatusUpdater(Document): self._update_children(args, update_modified) - if "percent_join_field" in args: + if "percent_join_field" in args or "percent_join_field_parent" in args: self._update_percent_field_in_targets(args, update_modified) def _update_children(self, args, update_modified): @@ -272,13 +274,19 @@ class StatusUpdater(Document): def _update_percent_field_in_targets(self, args, update_modified=True): """Update percent field in parent transaction""" - distinct_transactions = set([d.get(args['percent_join_field']) - for d in self.get_all_children(args['source_dt'])]) + if args.get('percent_join_field_parent'): + # if reference to target doc where % is to be updated, is + # in source doc's parent form, consider percent_join_field_parent + args['name'] = self.get(args['percent_join_field_parent']) + self._update_percent_field(args, update_modified) + else: + distinct_transactions = set([d.get(args['percent_join_field']) + for d in self.get_all_children(args['source_dt'])]) - for name in distinct_transactions: - if name: - args['name'] = name - self._update_percent_field(args, update_modified) + for name in distinct_transactions: + if name: + args['name'] = name + self._update_percent_field(args, update_modified) def _update_percent_field(self, args, update_modified=True): """Update percent field in parent transaction""" diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index f743d707f7..2f7b361b39 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -229,9 +229,9 @@ class StockController(AccountsController): def check_expense_account(self, item): if not item.get("expense_account"): - frappe.throw(_("Row #{0}: Expense Account not set for Item {1}. Please set an Expense \ - Account in the Items table").format(item.idx, frappe.bold(item.item_code)), - title=_("Expense Account Missing")) + msg = _("Please set an Expense Account in the Items table") + frappe.throw(_("Row #{0}: Expense Account not set for the Item {1}. {2}") + .format(item.idx, frappe.bold(item.item_code), msg), title=_("Expense Account Missing")) else: is_expense_account = frappe.db.get_value("Account", @@ -247,7 +247,9 @@ class StockController(AccountsController): for d in self.items: if not d.batch_no: continue - serial_nos = [sr.name for sr in frappe.get_all("Serial No", {'batch_no': d.batch_no})] + serial_nos = [sr.name for sr in frappe.get_all("Serial No", + {'batch_no': d.batch_no, 'status': 'Inactive'})] + if serial_nos: frappe.db.set_value("Serial No", { 'name': ['in', serial_nos] }, "batch_no", None) @@ -338,11 +340,15 @@ class StockController(AccountsController): validate_warehouse_company(w, self.company) def update_billing_percentage(self, update_modified=True): + target_ref_field = "amount" + if self.doctype == "Delivery Note": + target_ref_field = "amount - (returned_qty * rate)" + self._update_percent_field({ "target_dt": self.doctype + " Item", "target_parent_dt": self.doctype, "target_parent_field": "per_billed", - "target_ref_field": "amount", + "target_ref_field": target_ref_field, "target_field": "billed_amt", "name": self.name, }, update_modified) diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py index 81d07c1327..ad58f137ee 100644 --- a/erpnext/controllers/taxes_and_totals.py +++ b/erpnext/controllers/taxes_and_totals.py @@ -641,7 +641,8 @@ class calculate_taxes_and_totals(object): if default_mode_of_payment: self.doc.append('payments', { 'mode_of_payment': default_mode_of_payment.mode_of_payment, - 'amount': total_amount_to_pay + 'amount': total_amount_to_pay, + 'default': 1 }) else: self.doc.is_pos = 0 diff --git a/erpnext/crm/doctype/appointment_booking_settings/appointment_booking_settings.js b/erpnext/crm/doctype/appointment_booking_settings/appointment_booking_settings.js index 99b82148d2..dc3ae8bf41 100644 --- a/erpnext/crm/doctype/appointment_booking_settings/appointment_booking_settings.js +++ b/erpnext/crm/doctype/appointment_booking_settings/appointment_booking_settings.js @@ -4,7 +4,7 @@ function check_times(frm) { let from_time = Date.parse('01/01/2019 ' + d.from_time); let to_time = Date.parse('01/01/2019 ' + d.to_time); if (from_time > to_time) { - frappe.throw(__(`In row ${i + 1} of Appointment Booking Slots : "To Time" must be later than "From Time"`)); + frappe.throw(__('In row {0} of Appointment Booking Slots: "To Time" must be later than "From Time".', [i + 1])); } }); } \ No newline at end of file diff --git a/erpnext/crm/doctype/contract_template/contract_template.json b/erpnext/crm/doctype/contract_template/contract_template.json index ef9974f863..5e4582f8d3 100644 --- a/erpnext/crm/doctype/contract_template/contract_template.json +++ b/erpnext/crm/doctype/contract_template/contract_template.json @@ -23,8 +23,7 @@ { "fieldname": "contract_terms", "fieldtype": "Text Editor", - "label": "Contract Terms and Conditions", - "read_only": 1 + "label": "Contract Terms and Conditions" }, { "fieldname": "sb_fulfilment", @@ -45,7 +44,7 @@ } ], "links": [], - "modified": "2020-06-03 00:24:58.179816", + "modified": "2020-11-11 17:49:44.879363", "modified_by": "Administrator", "module": "CRM", "name": "Contract Template", diff --git a/erpnext/demo/data/asset.json b/erpnext/demo/data/asset.json index 23029ca5e3..44db2ae9e1 100644 --- a/erpnext/demo/data/asset.json +++ b/erpnext/demo/data/asset.json @@ -4,48 +4,55 @@ "item_code": "Computer", "gross_purchase_amount": 100000, "asset_owner": "Company", - "available_for_use_date": "2017-01-02" + "available_for_use_date": "2017-01-02", + "location": "Main Location" }, { "asset_name": "Macbook Air - 1", "item_code": "Computer", "gross_purchase_amount": 60000, "asset_owner": "Company", - "available_for_use_date": "2017-10-02" + "available_for_use_date": "2017-10-02", + "location": "Avg Location" }, { "asset_name": "Conferrence Table", "item_code": "Table", "gross_purchase_amount": 30000, "asset_owner": "Company", - "available_for_use_date": "2018-10-02" + "available_for_use_date": "2018-10-02", + "location": "Zany Location" }, { "asset_name": "Lunch Table", "item_code": "Table", "gross_purchase_amount": 20000, "asset_owner": "Company", - "available_for_use_date": "2018-06-02" + "available_for_use_date": "2018-06-02", + "location": "Fletcher Location" }, { "asset_name": "ERPNext", "item_code": "ERP", "gross_purchase_amount": 100000, "asset_owner": "Company", - "available_for_use_date": "2018-09-02" + "available_for_use_date": "2018-09-02", + "location":"Main Location" }, { "asset_name": "Chair 1", "item_code": "Chair", "gross_purchase_amount": 10000, "asset_owner": "Company", - "available_for_use_date": "2018-07-02" + "available_for_use_date": "2018-07-02", + "location": "Zany Location" }, { "asset_name": "Chair 2", "item_code": "Chair", "gross_purchase_amount": 10000, "asset_owner": "Company", - "available_for_use_date": "2018-07-02" + "available_for_use_date": "2018-07-02", + "location": "Avg Location" } ] diff --git a/erpnext/demo/data/location.json b/erpnext/demo/data/location.json new file mode 100644 index 0000000000..b521aa08c4 --- /dev/null +++ b/erpnext/demo/data/location.json @@ -0,0 +1,22 @@ +[ + { + "location_name": "Main Location", + "latitude": 40.0, + "longitude": 20.0 + }, + { + "location_name": "Avg Location", + "latitude": 63.0, + "longitude": 99.3 + }, + { + "location_name": "Zany Location", + "latitude": 47.5, + "longitude": 10.0 + }, + { + "location_name": "Fletcher Location", + "latitude": 100.90, + "longitude": 80 + } +] \ No newline at end of file diff --git a/erpnext/demo/setup/manufacture.py b/erpnext/demo/setup/manufacture.py index d3846369cd..7d6b5012ea 100644 --- a/erpnext/demo/setup/manufacture.py +++ b/erpnext/demo/setup/manufacture.py @@ -9,6 +9,7 @@ from erpnext.demo.domains import data from six import iteritems def setup_data(): + import_json("Location") import_json("Asset Category") setup_item() setup_workstation() diff --git a/erpnext/demo/setup/setup_data.py b/erpnext/demo/setup/setup_data.py index a395c7c17a..05ee28a24a 100644 --- a/erpnext/demo/setup/setup_data.py +++ b/erpnext/demo/setup/setup_data.py @@ -134,7 +134,7 @@ def setup_employee(): salary_component = frappe.get_doc('Salary Component', d.name) salary_component.append('accounts', dict( company=erpnext.get_default_company(), - default_account=frappe.get_value('Account', dict(account_name=('like', 'Salary%'))) + account=frappe.get_value('Account', dict(account_name=('like', 'Salary%'))) )) salary_component.save() diff --git a/erpnext/demo/user/stock.py b/erpnext/demo/user/stock.py index f95a6b8331..d44da7d127 100644 --- a/erpnext/demo/user/stock.py +++ b/erpnext/demo/user/stock.py @@ -79,7 +79,7 @@ def make_stock_reconciliation(): if item.qty: item.qty = item.qty - round(random.randint(1, item.qty)) try: - stock_reco.insert(ignore_permissions=True) + stock_reco.insert(ignore_permissions=True, ignore_mandatory=True) stock_reco.submit() frappe.db.commit() except OpeningEntryAccountError: diff --git a/erpnext/education/doctype/student_attendance/student_attendance.py b/erpnext/education/doctype/student_attendance/student_attendance.py index 72a8f55c66..2e9e6cf8d6 100644 --- a/erpnext/education/doctype/student_attendance/student_attendance.py +++ b/erpnext/education/doctype/student_attendance/student_attendance.py @@ -6,8 +6,10 @@ from __future__ import unicode_literals import frappe from frappe.model.document import Document from frappe import _ -from frappe.utils import get_link_to_form, getdate +from frappe.utils import get_link_to_form, getdate, formatdate +from erpnext import get_default_company from erpnext.education.api import get_student_group_students +from erpnext.hr.doctype.holiday_list.holiday_list import is_holiday class StudentAttendance(Document): def validate(self): @@ -17,6 +19,7 @@ class StudentAttendance(Document): self.set_student_group() self.validate_student() self.validate_duplication() + self.validate_is_holiday() def set_date(self): if self.course_schedule: @@ -78,3 +81,18 @@ class StudentAttendance(Document): record = get_link_to_form('Student Attendance', attendance_record) frappe.throw(_('Student Attendance record {0} already exists against the Student {1}') .format(record, frappe.bold(self.student)), title=_('Duplicate Entry')) + + def validate_is_holiday(self): + holiday_list = get_holiday_list() + if is_holiday(holiday_list, self.date): + frappe.throw(_('Attendance cannot be marked for {0} as it is a holiday.').format( + frappe.bold(formatdate(self.date)))) + +def get_holiday_list(company=None): + if not company: + company = get_default_company() or frappe.get_all('Company')[0].name + + holiday_list = frappe.get_cached_value('Company', company, 'default_holiday_list') + if not holiday_list: + frappe.throw(_('Please set a default Holiday List for Company {0}').format(frappe.bold(get_default_company()))) + return holiday_list diff --git a/erpnext/education/doctype/student_attendance_tool/student_attendance_tool.py b/erpnext/education/doctype/student_attendance_tool/student_attendance_tool.py index be2644077a..028db91881 100644 --- a/erpnext/education/doctype/student_attendance_tool/student_attendance_tool.py +++ b/erpnext/education/doctype/student_attendance_tool/student_attendance_tool.py @@ -20,10 +20,10 @@ def get_student_attendance_records(based_on, date=None, student_group=None, cour student_list = frappe.get_list("Student Group Student", fields=["student", "student_name", "group_roll_number"] , \ filters={"parent": student_group, "active": 1}, order_by= "group_roll_number") - if not student_list: - student_list = frappe.get_list("Student Group Student", fields=["student", "student_name", "group_roll_number"] , + if not student_list: + student_list = frappe.get_list("Student Group Student", fields=["student", "student_name", "group_roll_number"] , filters={"parent": student_group, "active": 1}, order_by= "group_roll_number") - + if course_schedule: student_attendance_list= frappe.db.sql('''select student, status from `tabStudent Attendance` where \ course_schedule= %s''', (course_schedule), as_dict=1) @@ -32,7 +32,7 @@ def get_student_attendance_records(based_on, date=None, student_group=None, cour student_group= %s and date= %s and \ (course_schedule is Null or course_schedule='')''', (student_group, date), as_dict=1) - + for attendance in student_attendance_list: for student in student_list: if student.student == attendance.student: diff --git a/erpnext/education/doctype/student_leave_application/student_leave_application.json b/erpnext/education/doctype/student_leave_application/student_leave_application.json index ad5397629b..31b3da2fbd 100644 --- a/erpnext/education/doctype/student_leave_application/student_leave_application.json +++ b/erpnext/education/doctype/student_leave_application/student_leave_application.json @@ -11,6 +11,7 @@ "column_break_3", "from_date", "to_date", + "total_leave_days", "section_break_5", "attendance_based_on", "student_group", @@ -110,11 +111,17 @@ { "fieldname": "column_break_11", "fieldtype": "Column Break" + }, + { + "fieldname": "total_leave_days", + "fieldtype": "Float", + "label": "Total Leave Days", + "read_only": 1 } ], "is_submittable": 1, "links": [], - "modified": "2020-07-08 13:22:38.329002", + "modified": "2020-09-21 18:10:24.440669", "modified_by": "Administrator", "module": "Education", "name": "Student Leave Application", diff --git a/erpnext/education/doctype/student_leave_application/student_leave_application.py b/erpnext/education/doctype/student_leave_application/student_leave_application.py index c8841c999a..ef670124c3 100644 --- a/erpnext/education/doctype/student_leave_application/student_leave_application.py +++ b/erpnext/education/doctype/student_leave_application/student_leave_application.py @@ -6,11 +6,14 @@ from __future__ import unicode_literals import frappe from frappe import _ from datetime import timedelta -from frappe.utils import get_link_to_form, getdate +from frappe.utils import get_link_to_form, getdate, date_diff, flt +from erpnext.hr.doctype.holiday_list.holiday_list import is_holiday +from erpnext.education.doctype.student_attendance.student_attendance import get_holiday_list from frappe.model.document import Document class StudentLeaveApplication(Document): def validate(self): + self.validate_holiday_list() self.validate_duplicate() self.validate_from_to_dates('from_date', 'to_date') @@ -39,10 +42,19 @@ class StudentLeaveApplication(Document): frappe.throw(_('Leave application {0} already exists against the student {1}') .format(link, frappe.bold(self.student)), title=_('Duplicate Entry')) + def validate_holiday_list(self): + holiday_list = get_holiday_list() + self.total_leave_days = get_number_of_leave_days(self.from_date, self.to_date, holiday_list) + def update_attendance(self): + holiday_list = get_holiday_list() + for dt in daterange(getdate(self.from_date), getdate(self.to_date)): date = dt.strftime('%Y-%m-%d') + if is_holiday(holiday_list, date): + continue + attendance = frappe.db.exists('Student Attendance', { 'student': self.student, 'date': date, @@ -89,3 +101,19 @@ class StudentLeaveApplication(Document): def daterange(start_date, end_date): for n in range(int ((end_date - start_date).days)+1): yield start_date + timedelta(n) + +def get_number_of_leave_days(from_date, to_date, holiday_list): + number_of_days = date_diff(to_date, from_date) + 1 + + holidays = frappe.db.sql(""" + SELECT + COUNT(DISTINCT holiday_date) + FROM `tabHoliday` h1,`tabHoliday List` h2 + WHERE + h1.parent = h2.name and + h1.holiday_date between %s and %s and + h2.name = %s""", (from_date, to_date, holiday_list))[0][0] + + number_of_days = flt(number_of_days) - flt(holidays) + + return number_of_days diff --git a/erpnext/education/doctype/student_leave_application/test_student_leave_application.py b/erpnext/education/doctype/student_leave_application/test_student_leave_application.py index e9b568ad70..fcdd42825f 100644 --- a/erpnext/education/doctype/student_leave_application/test_student_leave_application.py +++ b/erpnext/education/doctype/student_leave_application/test_student_leave_application.py @@ -5,13 +5,15 @@ from __future__ import unicode_literals import frappe import unittest -from frappe.utils import getdate, add_days +from frappe.utils import getdate, add_days, add_months +from erpnext import get_default_company from erpnext.education.doctype.student_group.test_student_group import get_random_group from erpnext.education.doctype.student.test_student import create_student class TestStudentLeaveApplication(unittest.TestCase): def setUp(self): frappe.db.sql("""delete from `tabStudent Leave Application`""") + create_holiday_list() def test_attendance_record_creation(self): leave_application = create_leave_application() @@ -35,20 +37,45 @@ class TestStudentLeaveApplication(unittest.TestCase): attendance_status = frappe.db.get_value('Student Attendance', {'leave_application': leave_application.name}, 'docstatus') self.assertTrue(attendance_status, 2) + def test_holiday(self): + today = getdate() + leave_application = create_leave_application(from_date=today, to_date= add_days(today, 1), submit=0) -def create_leave_application(from_date=None, to_date=None, mark_as_present=0): + # holiday list validation + company = get_default_company() or frappe.get_all('Company')[0].name + frappe.db.set_value('Company', company, 'default_holiday_list', '') + self.assertRaises(frappe.ValidationError, leave_application.save) + + frappe.db.set_value('Company', company, 'default_holiday_list', 'Test Holiday List for Student') + leave_application.save() + + leave_application.reload() + self.assertEqual(leave_application.total_leave_days, 1) + + # check no attendance record created for a holiday + leave_application.submit() + self.assertIsNone(frappe.db.exists('Student Attendance', {'leave_application': leave_application.name, 'date': add_days(today, 1)})) + + def tearDown(self): + company = get_default_company() or frappe.get_all('Company')[0].name + frappe.db.set_value('Company', company, 'default_holiday_list', '_Test Holiday List') + + +def create_leave_application(from_date=None, to_date=None, mark_as_present=0, submit=1): student = get_student() - leave_application = frappe.get_doc({ - 'doctype': 'Student Leave Application', - 'student': student.name, - 'attendance_based_on': 'Student Group', - 'student_group': get_random_group().name, - 'from_date': from_date if from_date else getdate(), - 'to_date': from_date if from_date else getdate(), - 'mark_as_present': mark_as_present - }).insert() - leave_application.submit() + leave_application = frappe.new_doc('Student Leave Application') + leave_application.student = student.name + leave_application.attendance_based_on = 'Student Group' + leave_application.student_group = get_random_group().name + leave_application.from_date = from_date if from_date else getdate() + leave_application.to_date = from_date if from_date else getdate() + leave_application.mark_as_present = mark_as_present + + if submit: + leave_application.insert() + leave_application.submit() + return leave_application def create_student_attendance(date=None, status=None): @@ -67,4 +94,22 @@ def get_student(): email='test_student@gmail.com', first_name='Test', last_name='Student' - )) \ No newline at end of file + )) + +def create_holiday_list(): + holiday_list = 'Test Holiday List for Student' + today = getdate() + if not frappe.db.exists('Holiday List', holiday_list): + frappe.get_doc(dict( + doctype = 'Holiday List', + holiday_list_name = holiday_list, + from_date = add_months(today, -6), + to_date = add_months(today, 6), + holidays = [ + dict(holiday_date=add_days(today, 1), description = 'Test') + ] + )).insert() + + company = get_default_company() or frappe.get_all('Company')[0].name + frappe.db.set_value('Company', company, 'default_holiday_list', holiday_list) + return holiday_list \ No newline at end of file diff --git a/erpnext/education/report/absent_student_report/absent_student_report.py b/erpnext/education/report/absent_student_report/absent_student_report.py index 4e57cc6c22..c3487ccaff 100644 --- a/erpnext/education/report/absent_student_report/absent_student_report.py +++ b/erpnext/education/report/absent_student_report/absent_student_report.py @@ -3,8 +3,10 @@ from __future__ import unicode_literals import frappe -from frappe.utils import cstr, cint, getdate +from frappe.utils import formatdate from frappe import msgprint, _ +from erpnext.education.doctype.student_attendance.student_attendance import get_holiday_list +from erpnext.hr.doctype.holiday_list.holiday_list import is_holiday def execute(filters=None): if not filters: filters = {} @@ -15,6 +17,11 @@ def execute(filters=None): columns = get_columns(filters) date = filters.get("date") + holiday_list = get_holiday_list() + if is_holiday(holiday_list, filters.get("date")): + msgprint(_("No attendance has been marked for {0} as it is a Holiday").format(frappe.bold(formatdate(filters.get("date"))))) + + absent_students = get_absent_students(date) leave_applicants = get_leave_applications(date) if absent_students: diff --git a/erpnext/education/report/student_batch_wise_attendance/student_batch_wise_attendance.py b/erpnext/education/report/student_batch_wise_attendance/student_batch_wise_attendance.py index c65d233ccc..7793dcf395 100644 --- a/erpnext/education/report/student_batch_wise_attendance/student_batch_wise_attendance.py +++ b/erpnext/education/report/student_batch_wise_attendance/student_batch_wise_attendance.py @@ -3,8 +3,10 @@ from __future__ import unicode_literals import frappe -from frappe.utils import cstr, cint, getdate +from frappe.utils import formatdate from frappe import msgprint, _ +from erpnext.education.doctype.student_attendance.student_attendance import get_holiday_list +from erpnext.hr.doctype.holiday_list.holiday_list import is_holiday def execute(filters=None): if not filters: filters = {} @@ -12,6 +14,10 @@ def execute(filters=None): if not filters.get("date"): msgprint(_("Please select date"), raise_exception=1) + holiday_list = get_holiday_list() + if is_holiday(holiday_list, filters.get("date")): + msgprint(_("No attendance has been marked for {0} as it is a Holiday").format(frappe.bold(formatdate(filters.get("date"))))) + columns = get_columns(filters) active_student_group = get_active_student_group() diff --git a/erpnext/education/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.py b/erpnext/education/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.py index d820bfbb21..04dc8c0e56 100644 --- a/erpnext/education/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.py +++ b/erpnext/education/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.py @@ -7,6 +7,8 @@ from frappe.utils import cstr, cint, getdate, get_first_day, get_last_day, date_ from frappe import msgprint, _ from calendar import monthrange from erpnext.education.api import get_student_group_students +from erpnext.education.doctype.student_attendance.student_attendance import get_holiday_list +from erpnext.support.doctype.issue.issue import get_holidays def execute(filters=None): if not filters: filters = {} @@ -19,26 +21,32 @@ def execute(filters=None): students_list = get_students_list(students) att_map = get_attendance_list(from_date, to_date, filters.get("student_group"), students_list) data = [] + for stud in students: row = [stud.student, stud.student_name] student_status = frappe.db.get_value("Student", stud.student, "enabled") date = from_date total_p = total_a = 0.0 + for day in range(total_days_in_month): status="None" + if att_map.get(stud.student): status = att_map.get(stud.student).get(date, "None") elif not student_status: status = "Inactive" else: status = "None" - status_map = {"Present": "P", "Absent": "A", "None": "", "Inactive":"-"} + + status_map = {"Present": "P", "Absent": "A", "None": "", "Inactive":"-", "Holiday":"H"} row.append(status_map[status]) + if status == "Present": total_p += 1 elif status == "Absent": total_a += 1 date = add_days(date, 1) + row += [total_p, total_a] data.append(row) return columns, data @@ -63,14 +71,19 @@ def get_attendance_list(from_date, to_date, student_group, students_list): and date between %s and %s order by student, date''', (student_group, from_date, to_date), as_dict=1) + att_map = {} students_with_leave_application = get_students_with_leave_application(from_date, to_date, students_list) for d in attendance_list: att_map.setdefault(d.student, frappe._dict()).setdefault(d.date, "") + if students_with_leave_application.get(d.date) and d.student in students_with_leave_application.get(d.date): att_map[d.student][d.date] = "Present" else: att_map[d.student][d.date] = d.status + + att_map = mark_holidays(att_map, from_date, to_date, students_list) + return att_map def get_students_with_leave_application(from_date, to_date, students_list): @@ -108,3 +121,14 @@ def get_attendance_years(): if not year_list: year_list = [getdate().year] return "\n".join(str(year) for year in year_list) + +def mark_holidays(att_map, from_date, to_date, students_list): + holiday_list = get_holiday_list() + holidays = get_holidays(holiday_list) + + for dt in daterange(getdate(from_date), getdate(to_date)): + if dt in holidays: + for student in students_list: + att_map.setdefault(student, frappe._dict()).setdefault(dt, "Holiday") + + return att_map diff --git a/erpnext/erpnext_integrations/connectors/shopify_connection.py b/erpnext/erpnext_integrations/connectors/shopify_connection.py index d59f909298..efbaa71924 100644 --- a/erpnext/erpnext_integrations/connectors/shopify_connection.py +++ b/erpnext/erpnext_integrations/connectors/shopify_connection.py @@ -2,12 +2,13 @@ from __future__ import unicode_literals import frappe from frappe import _ import json -from frappe.utils import cstr, cint, nowdate, flt +from frappe.utils import cstr, cint, nowdate, getdate, flt, get_request_session, get_datetime from erpnext.erpnext_integrations.utils import validate_webhooks_request from erpnext.selling.doctype.sales_order.sales_order import make_delivery_note, make_sales_invoice from erpnext.erpnext_integrations.doctype.shopify_settings.sync_product import sync_item_from_shopify from erpnext.erpnext_integrations.doctype.shopify_settings.sync_customer import create_customer from erpnext.erpnext_integrations.doctype.shopify_log.shopify_log import make_shopify_log, dump_request_data +from erpnext.erpnext_integrations.doctype.shopify_settings.shopify_settings import get_shopify_url, get_header @frappe.whitelist(allow_guest=True) @validate_webhooks_request("Shopify Settings", 'X-Shopify-Hmac-Sha256', secret_key='shared_secret') @@ -18,7 +19,7 @@ def store_request_data(order=None, event=None): dump_request_data(order, event) -def sync_sales_order(order, request_id=None): +def sync_sales_order(order, request_id=None, old_order_sync=False): frappe.set_user('Administrator') shopify_settings = frappe.get_doc("Shopify Settings") frappe.flags.request_id = request_id @@ -27,7 +28,7 @@ def sync_sales_order(order, request_id=None): try: validate_customer(order, shopify_settings) validate_item(order, shopify_settings) - create_order(order, shopify_settings) + create_order(order, shopify_settings, old_order_sync=old_order_sync) except Exception as e: make_shopify_log(status="Error", exception=e) @@ -77,13 +78,13 @@ def validate_item(order, shopify_settings): if item.get("product_id") and not frappe.db.get_value("Item", {"shopify_product_id": item.get("product_id")}, "name"): sync_item_from_shopify(shopify_settings, item) -def create_order(order, shopify_settings, company=None): +def create_order(order, shopify_settings, old_order_sync=False, company=None): so = create_sales_order(order, shopify_settings, company) if so: if order.get("financial_status") == "paid": - create_sales_invoice(order, shopify_settings, so) + create_sales_invoice(order, shopify_settings, so, old_order_sync=old_order_sync) - if order.get("fulfillments"): + if order.get("fulfillments") and not old_order_sync: create_delivery_note(order, shopify_settings, so) def create_sales_order(shopify_order, shopify_settings, company=None): @@ -92,7 +93,7 @@ def create_sales_order(shopify_order, shopify_settings, company=None): so = frappe.db.get_value("Sales Order", {"shopify_order_id": shopify_order.get("id")}, "name") if not so: - items = get_order_items(shopify_order.get("line_items"), shopify_settings) + items = get_order_items(shopify_order.get("line_items"), shopify_settings, getdate(shopify_order.get('created_at'))) if not items: message = 'Following items exists in the shopify order but relevant records were not found in the shopify Product master' @@ -106,8 +107,10 @@ def create_sales_order(shopify_order, shopify_settings, company=None): "doctype": "Sales Order", "naming_series": shopify_settings.sales_order_series or "SO-Shopify-", "shopify_order_id": shopify_order.get("id"), + "shopify_order_number": shopify_order.get("name"), "customer": customer or shopify_settings.default_customer, - "delivery_date": nowdate(), + "transaction_date": getdate(shopify_order.get("created_at")) or nowdate(), + "delivery_date": getdate(shopify_order.get("created_at")) or nowdate(), "company": shopify_settings.company, "selling_price_list": shopify_settings.price_list, "ignore_pricing_rule": 1, @@ -132,32 +135,42 @@ def create_sales_order(shopify_order, shopify_settings, company=None): frappe.db.commit() return so -def create_sales_invoice(shopify_order, shopify_settings, so): +def create_sales_invoice(shopify_order, shopify_settings, so, old_order_sync=False): if not frappe.db.get_value("Sales Invoice", {"shopify_order_id": shopify_order.get("id")}, "name")\ and so.docstatus==1 and not so.per_billed and cint(shopify_settings.sync_sales_invoice): + if old_order_sync: + posting_date = getdate(shopify_order.get('created_at')) + else: + posting_date = nowdate() + si = make_sales_invoice(so.name, ignore_permissions=True) si.shopify_order_id = shopify_order.get("id") + si.shopify_order_number = shopify_order.get("name") + si.set_posting_time = 1 + si.posting_date = posting_date + si.due_date = posting_date si.naming_series = shopify_settings.sales_invoice_series or "SI-Shopify-" si.flags.ignore_mandatory = True set_cost_center(si.items, shopify_settings.cost_center) si.insert(ignore_mandatory=True) si.submit() - make_payament_entry_against_sales_invoice(si, shopify_settings) + make_payament_entry_against_sales_invoice(si, shopify_settings, posting_date) frappe.db.commit() def set_cost_center(items, cost_center): for item in items: item.cost_center = cost_center -def make_payament_entry_against_sales_invoice(doc, shopify_settings): +def make_payament_entry_against_sales_invoice(doc, shopify_settings, posting_date=None): from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry - payemnt_entry = get_payment_entry(doc.doctype, doc.name, bank_account=shopify_settings.cash_bank_account) - payemnt_entry.flags.ignore_mandatory = True - payemnt_entry.reference_no = doc.name - payemnt_entry.reference_date = nowdate() - payemnt_entry.insert(ignore_permissions=True) - payemnt_entry.submit() + payment_entry = get_payment_entry(doc.doctype, doc.name, bank_account=shopify_settings.cash_bank_account) + payment_entry.flags.ignore_mandatory = True + payment_entry.reference_no = doc.name + payment_entry.posting_date = posting_date or nowdate() + payment_entry.reference_date = posting_date or nowdate() + payment_entry.insert(ignore_permissions=True) + payment_entry.submit() def create_delivery_note(shopify_order, shopify_settings, so): if not cint(shopify_settings.sync_delivery_note): @@ -169,6 +182,9 @@ def create_delivery_note(shopify_order, shopify_settings, so): dn = make_delivery_note(so.name) dn.shopify_order_id = fulfillment.get("order_id") + dn.shopify_order_number = shopify_order.get("name") + dn.set_posting_time = 1 + dn.posting_date = getdate(fulfillment.get("created_at")) dn.shopify_fulfillment_id = fulfillment.get("id") dn.naming_series = shopify_settings.delivery_note_series or "DN-Shopify-" dn.items = get_fulfillment_items(dn.items, fulfillment.get("line_items"), shopify_settings) @@ -187,7 +203,7 @@ def get_discounted_amount(order): discounted_amount += flt(discount.get("amount")) return discounted_amount -def get_order_items(order_items, shopify_settings): +def get_order_items(order_items, shopify_settings, delivery_date): items = [] all_product_exists = True product_not_exists = [] @@ -205,7 +221,7 @@ def get_order_items(order_items, shopify_settings): "item_code": item_code, "item_name": shopify_item.get("name"), "rate": shopify_item.get("price"), - "delivery_date": nowdate(), + "delivery_date": delivery_date, "qty": shopify_item.get("quantity"), "stock_uom": shopify_item.get("uom") or _("Nos"), "warehouse": shopify_settings.warehouse @@ -265,3 +281,64 @@ def get_tax_account_head(tax): frappe.throw(_("Tax Account not specified for Shopify Tax {0}").format(tax.get("title"))) return tax_account + +@frappe.whitelist(allow_guest=True) +def sync_old_orders(): + frappe.set_user('Administrator') + shopify_settings = frappe.get_doc('Shopify Settings') + + if not shopify_settings.sync_missing_orders: + return + + url = get_url(shopify_settings) + session = get_request_session() + + try: + res = session.get(url, headers=get_header(shopify_settings)) + res.raise_for_status() + orders = res.json()["orders"] + + for order in orders: + if is_sync_complete(shopify_settings, order): + stop_sync(shopify_settings) + return + + sync_sales_order(order=order, old_order_sync=True) + last_order_id = order.get('id') + + if last_order_id: + shopify_settings.load_from_db() + shopify_settings.last_order_id = last_order_id + shopify_settings.save() + frappe.db.commit() + + except Exception as e: + raise e + +def stop_sync(shopify_settings): + shopify_settings.sync_missing_orders = 0 + shopify_settings.last_order_id = '' + shopify_settings.save() + frappe.db.commit() + +def get_url(shopify_settings): + last_order_id = shopify_settings.last_order_id + + if not last_order_id: + if shopify_settings.sync_based_on == 'Date': + url = get_shopify_url("admin/api/2020-10/orders.json?limit=250&created_at_min={0}&since_id=0".format( + get_datetime(shopify_settings.from_date)), shopify_settings) + else: + url = get_shopify_url("admin/api/2020-10/orders.json?limit=250&since_id={0}".format( + shopify_settings.from_order_id), shopify_settings) + else: + url = get_shopify_url("admin/api/2020-10/orders.json?limit=250&since_id={0}".format(last_order_id), shopify_settings) + + return url + +def is_sync_complete(shopify_settings, order): + if shopify_settings.sync_based_on == 'Date': + return getdate(shopify_settings.to_date) < getdate(order.get('created_at')) + else: + return cstr(order.get('id')) == cstr(shopify_settings.to_order_id) + diff --git a/erpnext/erpnext_integrations/desk_page/erpnext_integrations/erpnext_integrations.json b/erpnext/erpnext_integrations/desk_page/erpnext_integrations/erpnext_integrations.json index 8dcc77d174..ea3b1291b7 100644 --- a/erpnext/erpnext_integrations/desk_page/erpnext_integrations/erpnext_integrations.json +++ b/erpnext/erpnext_integrations/desk_page/erpnext_integrations/erpnext_integrations.json @@ -8,7 +8,7 @@ { "hidden": 0, "label": "Payments", - "links": "[\n {\n \"description\": \"GoCardless payment gateway settings\",\n \"label\": \"GoCardless Settings\",\n \"name\": \"GoCardless Settings\",\n \"type\": \"doctype\"\n }\n]" + "links": "[\n {\n \"description\": \"GoCardless payment gateway settings\",\n \"label\": \"GoCardless Settings\",\n \"name\": \"GoCardless Settings\",\n \"type\": \"doctype\"\n }, {\n \"description\": \"M-Pesa payment gateway settings\",\n \"label\": \"M-Pesa Settings\",\n \"name\": \"Mpesa Settings\",\n \"type\": \"doctype\"\n }\n]" }, { "hidden": 0, @@ -29,7 +29,7 @@ "idx": 0, "is_standard": 1, "label": "ERPNext Integrations", - "modified": "2020-08-23 16:30:51.494655", + "modified": "2020-10-29 19:54:46.228222", "modified_by": "Administrator", "module": "ERPNext Integrations", "name": "ERPNext Integrations", diff --git a/erpnext/erpnext_integrations/doctype/mpesa_settings/mpesa_settings.js b/erpnext/erpnext_integrations/doctype/mpesa_settings/mpesa_settings.js index 636aa99de4..7c8ae5c802 100644 --- a/erpnext/erpnext_integrations/doctype/mpesa_settings/mpesa_settings.js +++ b/erpnext/erpnext_integrations/doctype/mpesa_settings/mpesa_settings.js @@ -9,11 +9,12 @@ frappe.ui.form.on('Mpesa Settings', { refresh: function(frm) { frappe.realtime.on("refresh_mpesa_dashboard", function(){ frm.reload_doc(); + frm.events.setup_account_balance_html(frm); }); }, get_account_balance: function(frm) { - if (!frm.initiator_name && !frm.security_credentials) { + if (!frm.doc.initiator_name && !frm.doc.security_credential) { frappe.throw(__("Please set the initiator name and the security credential")); } frappe.call({ diff --git a/erpnext/erpnext_integrations/doctype/mpesa_settings/mpesa_settings.py b/erpnext/erpnext_integrations/doctype/mpesa_settings/mpesa_settings.py index dea4d81770..1cad84dcde 100644 --- a/erpnext/erpnext_integrations/doctype/mpesa_settings/mpesa_settings.py +++ b/erpnext/erpnext_integrations/doctype/mpesa_settings/mpesa_settings.py @@ -147,7 +147,7 @@ def get_account_balance(request_payload): return response except Exception: frappe.log_error(title=_("Account Balance Processing Error")) - frappe.throw(title=_("Error"), message=_("Please check your configuration and try again")) + frappe.throw(_("Please check your configuration and try again"), title=_("Error")) @frappe.whitelist(allow_guest=True) def process_balance_info(**kwargs): @@ -173,7 +173,8 @@ def process_balance_info(**kwargs): ref_doc.db_set("account_balance", balance_info) request.handle_success(account_balance_response) - frappe.publish_realtime("refresh_mpesa_dashboard") + frappe.publish_realtime("refresh_mpesa_dashboard", doctype="Mpesa Settings", + docname=transaction_data.reference_docname, user=transaction_data.owner) except Exception: request.handle_failure(account_balance_response) frappe.log_error(title=_("Mpesa Account Balance Processing Error"), message=account_balance_response) diff --git a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_connector.py b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_connector.py index a033a2a722..8d4b510490 100644 --- a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_connector.py +++ b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_connector.py @@ -31,6 +31,7 @@ class PlaidConnector(): return access_token def get_link_token(self): + country_codes = ["US", "CA", "FR", "IE", "NL", "ES", "GB"] if self.settings.enable_european_access else ["US", "CA"] token_request = { "client_name": self.client_name, "client_id": self.settings.plaid_client_id, @@ -38,7 +39,7 @@ class PlaidConnector(): "products": self.products, # only allow Plaid-supported languages and countries (LAST: Sep-19-2020) "language": frappe.local.lang if frappe.local.lang in ["en", "fr", "es", "nl"] else "en", - "country_codes": ["US", "CA", "FR", "IE", "NL", "ES", "GB"], + "country_codes": country_codes, "user": { "client_user_id": frappe.generate_hash(frappe.session.user, length=32) } diff --git a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.json b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.json index 2706217223..122aa41f4b 100644 --- a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.json +++ b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.json @@ -1,4 +1,5 @@ { + "actions": [], "creation": "2018-10-25 10:02:48.656165", "doctype": "DocType", "editable_grid": 1, @@ -11,7 +12,8 @@ "plaid_client_id", "plaid_secret", "column_break_7", - "plaid_env" + "plaid_env", + "enable_european_access" ], "fields": [ { @@ -58,10 +60,17 @@ { "fieldname": "column_break_7", "fieldtype": "Column Break" + }, + { + "default": "0", + "fieldname": "enable_european_access", + "fieldtype": "Check", + "label": "Enable European Access" } ], "issingle": 1, - "modified": "2020-09-12 02:31:44.542385", + "links": [], + "modified": "2020-10-29 20:24:56.916104", "modified_by": "Administrator", "module": "ERPNext Integrations", "name": "Plaid Settings", diff --git a/erpnext/erpnext_integrations/doctype/shopify_settings/shopify_settings.json b/erpnext/erpnext_integrations/doctype/shopify_settings/shopify_settings.json index 2e10751f96..20ec06373e 100644 --- a/erpnext/erpnext_integrations/doctype/shopify_settings/shopify_settings.json +++ b/erpnext/erpnext_integrations/doctype/shopify_settings/shopify_settings.json @@ -1,7 +1,9 @@ { + "actions": [], "creation": "2015-05-18 05:21:07.270859", "doctype": "DocType", "document_type": "System", + "engine": "InnoDB", "field_order": [ "status_html", "enable_shopify", @@ -40,7 +42,16 @@ "sales_invoice_series", "section_break_22", "html_16", - "taxes" + "taxes", + "syncing_details_section", + "sync_missing_orders", + "sync_based_on", + "column_break_41", + "from_date", + "to_date", + "from_order_id", + "to_order_id", + "last_order_id" ], "fields": [ { @@ -255,10 +266,71 @@ "fieldtype": "Table", "label": "Shopify Tax Account", "options": "Shopify Tax Account" + }, + { + "collapsible": 1, + "fieldname": "syncing_details_section", + "fieldtype": "Section Break", + "label": "Syncing Missing Orders" + }, + { + "depends_on": "eval:doc.sync_missing_orders", + "fieldname": "last_order_id", + "fieldtype": "Data", + "label": "Last Order Id", + "read_only": 1 + }, + { + "fieldname": "column_break_41", + "fieldtype": "Column Break" + }, + { + "default": "0", + "description": "On checking this Order from the ", + "fieldname": "sync_missing_orders", + "fieldtype": "Check", + "label": "Sync Missing Old Shopify Orders" + }, + { + "depends_on": "eval:doc.sync_missing_orders", + "fieldname": "sync_based_on", + "fieldtype": "Select", + "label": "Sync Based On", + "mandatory_depends_on": "eval:doc.sync_missing_orders", + "options": "\nDate\nShopify Order Id" + }, + { + "depends_on": "eval:doc.sync_based_on == 'Date' && doc.sync_missing_orders", + "fieldname": "from_date", + "fieldtype": "Date", + "label": "From Date", + "mandatory_depends_on": "eval:doc.sync_based_on == 'Date' && doc.sync_missing_orders" + }, + { + "depends_on": "eval:doc.sync_based_on == 'Date' && doc.sync_missing_orders", + "fieldname": "to_date", + "fieldtype": "Date", + "label": "To Date", + "mandatory_depends_on": "eval:doc.sync_based_on == 'Date' && doc.sync_missing_orders" + }, + { + "depends_on": "eval:doc.sync_based_on == 'Shopify Order Id' && doc.sync_missing_orders", + "fieldname": "from_order_id", + "fieldtype": "Data", + "label": "From Order Id", + "mandatory_depends_on": "eval:doc.sync_based_on == 'Shopify Order Id' && doc.sync_missing_orders" + }, + { + "depends_on": "eval:doc.sync_based_on == 'Shopify Order Id' && doc.sync_missing_orders", + "fieldname": "to_order_id", + "fieldtype": "Data", + "label": "To Order Id", + "mandatory_depends_on": "eval:doc.sync_based_on == 'Shopify Order Id' && doc.sync_missing_orders" } ], "issingle": 1, - "modified": "2020-09-18 17:26:09.703215", + "links": [], + "modified": "2020-11-05 20:44:03.664891", "modified_by": "Administrator", "module": "ERPNext Integrations", "name": "Shopify Settings", @@ -277,4 +349,4 @@ ], "sort_field": "modified", "sort_order": "DESC" -} +} \ No newline at end of file diff --git a/erpnext/erpnext_integrations/doctype/shopify_settings/shopify_settings.py b/erpnext/erpnext_integrations/doctype/shopify_settings/shopify_settings.py index 25ffd28109..cbdf90681d 100644 --- a/erpnext/erpnext_integrations/doctype/shopify_settings/shopify_settings.py +++ b/erpnext/erpnext_integrations/doctype/shopify_settings/shopify_settings.py @@ -87,7 +87,7 @@ def get_shopify_url(path, settings): def get_header(settings): header = {'Content-Type': 'application/json'} - return header; + return header @frappe.whitelist() def get_series(): @@ -121,17 +121,23 @@ def setup_custom_fields(): ], "Sales Order": [ dict(fieldname='shopify_order_id', label='Shopify Order Id', - fieldtype='Data', insert_after='title', read_only=1, print_hide=1) + fieldtype='Data', insert_after='title', read_only=1, print_hide=1), + dict(fieldname='shopify_order_number', label='Shopify Order Number', + fieldtype='Data', insert_after='shopify_order_id', read_only=1, print_hide=1) ], "Delivery Note":[ dict(fieldname='shopify_order_id', label='Shopify Order Id', fieldtype='Data', insert_after='title', read_only=1, print_hide=1), + dict(fieldname='shopify_order_number', label='Shopify Order Number', + fieldtype='Data', insert_after='shopify_order_id', read_only=1, print_hide=1), dict(fieldname='shopify_fulfillment_id', label='Shopify Fulfillment Id', fieldtype='Data', insert_after='title', read_only=1, print_hide=1) ], "Sales Invoice": [ dict(fieldname='shopify_order_id', label='Shopify Order Id', - fieldtype='Data', insert_after='title', read_only=1, print_hide=1) + fieldtype='Data', insert_after='title', read_only=1, print_hide=1), + dict(fieldname='shopify_order_number', label='Shopify Order Number', + fieldtype='Data', insert_after='shopify_order_id', read_only=1, print_hide=1) ] } diff --git a/erpnext/erpnext_integrations/doctype/shopify_settings/test_shopify_settings.py b/erpnext/erpnext_integrations/doctype/shopify_settings/test_shopify_settings.py index 64ef3dc085..30fa23cfb4 100644 --- a/erpnext/erpnext_integrations/doctype/shopify_settings/test_shopify_settings.py +++ b/erpnext/erpnext_integrations/doctype/shopify_settings/test_shopify_settings.py @@ -58,7 +58,7 @@ class ShopifySettings(unittest.TestCase): }).save(ignore_permissions=True) self.shopify_settings = shopify_settings - + def test_order(self): ### Create Customer ### with open (os.path.join(os.path.dirname(__file__), "test_data", "shopify_customer.json")) as shopify_customer: @@ -75,7 +75,7 @@ class ShopifySettings(unittest.TestCase): with open (os.path.join(os.path.dirname(__file__), "test_data", "shopify_order.json")) as shopify_order: shopify_order = json.load(shopify_order) - create_order(shopify_order.get("order"), self.shopify_settings, "_Test Company") + create_order(shopify_order.get("order"), self.shopify_settings, False, company="_Test Company") sales_order = frappe.get_doc("Sales Order", {"shopify_order_id": cstr(shopify_order.get("order").get("id"))}) diff --git a/erpnext/erpnext_integrations/taxjar_integration.py b/erpnext/erpnext_integrations/taxjar_integration.py index 24fc3d44b9..f960998c3c 100644 --- a/erpnext/erpnext_integrations/taxjar_integration.py +++ b/erpnext/erpnext_integrations/taxjar_integration.py @@ -1,5 +1,7 @@ import traceback +import taxjar + import frappe from erpnext import get_default_company from frappe import _ @@ -29,7 +31,6 @@ def get_client(): def create_transaction(doc, method): - import taxjar """Create an order transaction in TaxJar""" if not TAXJAR_CREATE_TRANSACTIONS: diff --git a/erpnext/erpnext_integrations/utils.py b/erpnext/erpnext_integrations/utils.py index e278fd7807..362f6cf88e 100644 --- a/erpnext/erpnext_integrations/utils.py +++ b/erpnext/erpnext_integrations/utils.py @@ -60,4 +60,12 @@ def create_mode_of_payment(gateway, payment_type="General"): "default_account": payment_gateway_account }] }) - mode_of_payment.insert(ignore_permissions=True) \ No newline at end of file + mode_of_payment.insert(ignore_permissions=True) + +def get_tracking_url(carrier, tracking_number): + # Return the formatted Tracking URL. + tracking_url = '' + url_reference = frappe.get_value('Parcel Service', carrier, 'url_reference') + if url_reference: + tracking_url = frappe.render_template(url_reference, {'tracking_number': tracking_number}) + return tracking_url diff --git a/erpnext/healthcare/desk_page/healthcare/healthcare.json b/erpnext/healthcare/desk_page/healthcare/healthcare.json index 6546b08db9..81d60481ce 100644 --- a/erpnext/healthcare/desk_page/healthcare/healthcare.json +++ b/erpnext/healthcare/desk_page/healthcare/healthcare.json @@ -43,7 +43,7 @@ { "hidden": 0, "label": "Reports", - "links": "[\n\t{\n\t\t\"type\": \"report\",\n\t\t\"is_query_report\": true,\n\t\t\"name\": \"Patient Appointment Analytics\",\n\t\t\"doctype\": \"Patient Appointment\"\n\t},\n\t{\n\t\t\"type\": \"report\",\n\t\t\"is_query_report\": true,\n\t\t\"name\": \"Lab Test Report\",\n\t\t\"doctype\": \"Lab Test\",\n\t\t\"label\": \"Lab Test Report\"\n\t}\n]" + "links": "[\n\t{\n\t\t\"type\": \"report\",\n\t\t\"is_query_report\": true,\n\t\t\"name\": \"Patient Appointment Analytics\",\n\t\t\"doctype\": \"Patient Appointment\"\n\t},\n\t{\n\t\t\"type\": \"report\",\n\t\t\"is_query_report\": true,\n\t\t\"name\": \"Lab Test Report\",\n\t\t\"doctype\": \"Lab Test\",\n\t\t\"label\": \"Lab Test Report\"\n\t},\n\t{\n\t\t\"type\": \"report\",\n\t\t\"is_query_report\": true,\n\t\t\"name\": \"Inpatient Medication Orders\",\n\t\t\"doctype\": \"Inpatient Medication Order\",\n\t\t\"label\": \"Inpatient Medication Orders\"\n\t}\n]" } ], "category": "Domains", @@ -64,7 +64,7 @@ "idx": 0, "is_standard": 1, "label": "Healthcare", - "modified": "2020-06-25 23:50:56.951698", + "modified": "2020-11-23 23:00:48.764377", "modified_by": "Administrator", "module": "Healthcare", "name": "Healthcare", diff --git a/erpnext/healthcare/doctype/clinical_procedure/clinical_procedure.js b/erpnext/healthcare/doctype/clinical_procedure/clinical_procedure.js index eb7d4bdeba..1d4411d73d 100644 --- a/erpnext/healthcare/doctype/clinical_procedure/clinical_procedure.js +++ b/erpnext/healthcare/doctype/clinical_procedure/clinical_procedure.js @@ -85,8 +85,7 @@ frappe.ui.form.on('Clinical Procedure', { callback: function(r) { if (r.message) { frappe.show_alert({ - message: __('Stock Entry {0} created', - ['' + r.message + '']), + message: __('Stock Entry {0} created', ['' + r.message + '']), indicator: 'green' }); } @@ -105,8 +104,7 @@ frappe.ui.form.on('Clinical Procedure', { callback: function(r) { if (!r.exc) { if (r.message == 'insufficient stock') { - let msg = __('Stock quantity to start the Procedure is not available in the Warehouse {0}. Do you want to record a Stock Entry?', - [frm.doc.warehouse.bold()]); + let msg = __('Stock quantity to start the Procedure is not available in the Warehouse {0}. Do you want to record a Stock Entry?', [frm.doc.warehouse.bold()]); frappe.confirm( msg, function() { diff --git a/erpnext/healthcare/doctype/exercise/exercise.json b/erpnext/healthcare/doctype/exercise/exercise.json index 2486a5d53a..683cc6d3c3 100644 --- a/erpnext/healthcare/doctype/exercise/exercise.json +++ b/erpnext/healthcare/doctype/exercise/exercise.json @@ -37,7 +37,8 @@ "depends_on": "eval:doc.parenttype==\"Therapy\";", "fieldname": "counts_completed", "fieldtype": "Int", - "label": "Counts Completed" + "label": "Counts Completed", + "no_copy": 1 }, { "fieldname": "assistance_level", @@ -48,7 +49,7 @@ ], "istable": 1, "links": [], - "modified": "2020-04-10 13:41:06.662351", + "modified": "2020-11-04 18:20:25.583491", "modified_by": "Administrator", "module": "Healthcare", "name": "Exercise", diff --git a/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py b/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py index cdf692e68b..7e7fd82411 100644 --- a/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py +++ b/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py @@ -7,6 +7,7 @@ import frappe import unittest from frappe.utils import nowdate, add_days from erpnext.healthcare.doctype.patient_appointment.test_patient_appointment import create_healthcare_docs, create_appointment, create_healthcare_service_items +from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile test_dependencies = ["Company"] @@ -15,6 +16,7 @@ class TestFeeValidity(unittest.TestCase): frappe.db.sql("""delete from `tabPatient Appointment`""") frappe.db.sql("""delete from `tabFee Validity`""") frappe.db.sql("""delete from `tabPatient`""") + make_pos_profile() def test_fee_validity(self): item = create_healthcare_service_items() diff --git a/erpnext/healthcare/doctype/inpatient_medication_entry/inpatient_medication_entry.js b/erpnext/healthcare/doctype/inpatient_medication_entry/inpatient_medication_entry.js index b953b8adff..f523cf21bd 100644 --- a/erpnext/healthcare/doctype/inpatient_medication_entry/inpatient_medication_entry.js +++ b/erpnext/healthcare/doctype/inpatient_medication_entry/inpatient_medication_entry.js @@ -21,6 +21,19 @@ frappe.ui.form.on('Inpatient Medication Entry', { } }; }); + + frm.set_query('warehouse', () => { + return { + filters: { + company: frm.doc.company + } + }; + }); + }, + + patient: function(frm) { + if (frm.doc.patient) + frm.set_value('service_unit', ''); }, get_medication_orders: function(frm) { diff --git a/erpnext/healthcare/doctype/inpatient_medication_entry/inpatient_medication_entry.json b/erpnext/healthcare/doctype/inpatient_medication_entry/inpatient_medication_entry.json index 5d80251b71..dd4c423a9e 100644 --- a/erpnext/healthcare/doctype/inpatient_medication_entry/inpatient_medication_entry.json +++ b/erpnext/healthcare/doctype/inpatient_medication_entry/inpatient_medication_entry.json @@ -67,6 +67,7 @@ }, { "collapsible": 1, + "collapsible_depends_on": "eval: doc.__islocal", "fieldname": "filters_section", "fieldtype": "Section Break", "label": "Filters" @@ -93,6 +94,7 @@ "options": "Patient" }, { + "depends_on": "eval:!doc.patient", "fieldname": "service_unit", "fieldtype": "Link", "label": "Healthcare Service Unit", @@ -178,7 +180,7 @@ "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2020-09-30 23:40:45.528715", + "modified": "2020-11-03 13:22:37.820707", "modified_by": "Administrator", "module": "Healthcare", "name": "Inpatient Medication Entry", diff --git a/erpnext/healthcare/doctype/inpatient_medication_entry/inpatient_medication_entry.py b/erpnext/healthcare/doctype/inpatient_medication_entry/inpatient_medication_entry.py index 2385893109..5dac23abd9 100644 --- a/erpnext/healthcare/doctype/inpatient_medication_entry/inpatient_medication_entry.py +++ b/erpnext/healthcare/doctype/inpatient_medication_entry/inpatient_medication_entry.py @@ -199,6 +199,7 @@ class InpatientMedicationEntry(Document): def get_pending_medication_orders(entry): filters, values = get_filters(entry) + to_remove = [] data = frappe.db.sql(""" SELECT @@ -225,7 +226,10 @@ def get_pending_medication_orders(entry): doc['service_unit'] = get_current_healthcare_service_unit(inpatient_record) if entry.service_unit and doc.service_unit != entry.service_unit: - data.remove(doc) + to_remove.append(doc) + + for doc in to_remove: + data.remove(doc) return data @@ -270,4 +274,6 @@ def get_filters(entry): def get_current_healthcare_service_unit(inpatient_record): ip_record = frappe.get_doc('Inpatient Record', inpatient_record) - return ip_record.inpatient_occupancies[-1].service_unit \ No newline at end of file + if ip_record.inpatient_occupancies: + return ip_record.inpatient_occupancies[-1].service_unit + return \ No newline at end of file diff --git a/erpnext/healthcare/doctype/inpatient_medication_order/inpatient_medication_order.js b/erpnext/healthcare/doctype/inpatient_medication_order/inpatient_medication_order.js index c51f3cf882..690e2e7a90 100644 --- a/erpnext/healthcare/doctype/inpatient_medication_order/inpatient_medication_order.js +++ b/erpnext/healthcare/doctype/inpatient_medication_order/inpatient_medication_order.js @@ -12,7 +12,8 @@ frappe.ui.form.on('Inpatient Medication Order', { frm.set_query('patient', () => { return { filters: { - 'inpatient_record': ['!=', ''] + 'inpatient_record': ['!=', ''], + 'inpatient_status': 'Admitted' } }; }); diff --git a/erpnext/healthcare/doctype/patient_appointment/test_patient_appointment.py b/erpnext/healthcare/doctype/patient_appointment/test_patient_appointment.py index eeed157291..3df7ba1531 100644 --- a/erpnext/healthcare/doctype/patient_appointment/test_patient_appointment.py +++ b/erpnext/healthcare/doctype/patient_appointment/test_patient_appointment.py @@ -7,12 +7,14 @@ import frappe from erpnext.healthcare.doctype.patient_appointment.patient_appointment import update_status, make_encounter from frappe.utils import nowdate, add_days from frappe.utils.make_random import get_random +from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile class TestPatientAppointment(unittest.TestCase): def setUp(self): frappe.db.sql("""delete from `tabPatient Appointment`""") frappe.db.sql("""delete from `tabFee Validity`""") frappe.db.sql("""delete from `tabPatient Encounter`""") + make_pos_profile() def test_status(self): patient, medical_department, practitioner = create_healthcare_docs() diff --git a/erpnext/healthcare/doctype/patient_medical_record/test_patient_medical_record.py b/erpnext/healthcare/doctype/patient_medical_record/test_patient_medical_record.py index aa85a23113..419d956425 100644 --- a/erpnext/healthcare/doctype/patient_medical_record/test_patient_medical_record.py +++ b/erpnext/healthcare/doctype/patient_medical_record/test_patient_medical_record.py @@ -6,11 +6,13 @@ import unittest import frappe from frappe.utils import nowdate from erpnext.healthcare.doctype.patient_appointment.test_patient_appointment import create_encounter, create_healthcare_docs, create_appointment +from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile class TestPatientMedicalRecord(unittest.TestCase): def setUp(self): frappe.db.set_value('Healthcare Settings', None, 'enable_free_follow_ups', 0) frappe.db.set_value('Healthcare Settings', None, 'automate_appointment_invoicing', 1) + make_pos_profile() def test_medical_record(self): patient, medical_department, practitioner = create_healthcare_docs() diff --git a/erpnext/healthcare/doctype/therapy_plan/therapy_plan.js b/erpnext/healthcare/doctype/therapy_plan/therapy_plan.js index 490d4588d1..d1f72d625b 100644 --- a/erpnext/healthcare/doctype/therapy_plan/therapy_plan.js +++ b/erpnext/healthcare/doctype/therapy_plan/therapy_plan.js @@ -13,43 +13,42 @@ frappe.ui.form.on('Therapy Plan', { refresh: function(frm) { if (!frm.doc.__islocal) { frm.trigger('show_progress_for_therapies'); - } - - if (!frm.doc.__islocal && frm.doc.status != 'Completed') { - let therapy_types = (frm.doc.therapy_plan_details || []).map(function(d){ return d.therapy_type }); - const fields = [{ - fieldtype: 'Link', - label: __('Therapy Type'), - fieldname: 'therapy_type', - options: 'Therapy Type', - reqd: 1, - get_query: function() { - return { - filters: { 'therapy_type': ['in', therapy_types]} + if (frm.doc.status != 'Completed') { + let therapy_types = (frm.doc.therapy_plan_details || []).map(function(d){ return d.therapy_type; }); + const fields = [{ + fieldtype: 'Link', + label: __('Therapy Type'), + fieldname: 'therapy_type', + options: 'Therapy Type', + reqd: 1, + get_query: function() { + return { + filters: { 'therapy_type': ['in', therapy_types]} + }; } - } - }]; + }]; - frm.add_custom_button(__('Therapy Session'), function() { - frappe.prompt(fields, data => { - frappe.call({ - method: 'erpnext.healthcare.doctype.therapy_plan.therapy_plan.make_therapy_session', - args: { - therapy_plan: frm.doc.name, - patient: frm.doc.patient, - therapy_type: data.therapy_type, - company: frm.doc.company - }, - freeze: true, - callback: function(r) { - if (r.message) { - frappe.model.sync(r.message); - frappe.set_route('Form', r.message.doctype, r.message.name); + frm.add_custom_button(__('Therapy Session'), function() { + frappe.prompt(fields, data => { + frappe.call({ + method: 'erpnext.healthcare.doctype.therapy_plan.therapy_plan.make_therapy_session', + args: { + therapy_plan: frm.doc.name, + patient: frm.doc.patient, + therapy_type: data.therapy_type, + company: frm.doc.company + }, + freeze: true, + callback: function(r) { + if (r.message) { + frappe.model.sync(r.message); + frappe.set_route('Form', r.message.doctype, r.message.name); + } } - } - }); - }, __('Select Therapy Type'), __('Create')); - }, __('Create')); + }); + }, __('Select Therapy Type'), __('Create')); + }, __('Create')); + } if (frm.doc.therapy_plan_template && !frm.doc.invoiced) { frm.add_custom_button(__('Sales Invoice'), function() { diff --git a/erpnext/healthcare/doctype/therapy_plan/therapy_plan.json b/erpnext/healthcare/doctype/therapy_plan/therapy_plan.json index ccb316e5c3..c03e9de332 100644 --- a/erpnext/healthcare/doctype/therapy_plan/therapy_plan.json +++ b/erpnext/healthcare/doctype/therapy_plan/therapy_plan.json @@ -115,7 +115,8 @@ "fieldname": "therapy_plan_template", "fieldtype": "Link", "label": "Therapy Plan Template", - "options": "Therapy Plan Template" + "options": "Therapy Plan Template", + "set_only_once": 1 }, { "default": "0", @@ -128,7 +129,7 @@ } ], "links": [], - "modified": "2020-10-23 01:27:42.128855", + "modified": "2020-11-04 18:13:13.564999", "modified_by": "Administrator", "module": "Healthcare", "name": "Therapy Plan", diff --git a/erpnext/healthcare/doctype/therapy_plan_detail/therapy_plan_detail.json b/erpnext/healthcare/doctype/therapy_plan_detail/therapy_plan_detail.json index 555587ea47..77f08af07d 100644 --- a/erpnext/healthcare/doctype/therapy_plan_detail/therapy_plan_detail.json +++ b/erpnext/healthcare/doctype/therapy_plan_detail/therapy_plan_detail.json @@ -30,12 +30,13 @@ "fieldname": "sessions_completed", "fieldtype": "Int", "label": "Sessions Completed", + "no_copy": 1, "read_only": 1 } ], "istable": 1, "links": [], - "modified": "2020-10-08 01:17:34.778028", + "modified": "2020-11-04 18:15:52.173450", "modified_by": "Administrator", "module": "Healthcare", "name": "Therapy Plan Detail", diff --git a/erpnext/healthcare/doctype/therapy_session/therapy_session.js b/erpnext/healthcare/doctype/therapy_session/therapy_session.js index 65d4cc4861..a2b01c9c18 100644 --- a/erpnext/healthcare/doctype/therapy_session/therapy_session.js +++ b/erpnext/healthcare/doctype/therapy_session/therapy_session.js @@ -22,6 +22,10 @@ frappe.ui.form.on('Therapy Session', { }, refresh: function(frm) { + if (frm.doc.therapy_plan) { + frm.trigger('filter_therapy_types'); + } + if (!frm.doc.__islocal) { frm.dashboard.add_indicator(__('Counts Targeted: {0}', [frm.doc.total_counts_targeted]), 'blue'); frm.dashboard.add_indicator(__('Counts Completed: {0}', [frm.doc.total_counts_completed]), @@ -36,15 +40,43 @@ frappe.ui.form.on('Therapy Session', { }) }, 'Create'); - frm.add_custom_button(__('Sales Invoice'), function() { - frappe.model.open_mapped_doc({ - method: 'erpnext.healthcare.doctype.therapy_session.therapy_session.invoice_therapy_session', - frm: frm, - }) - }, 'Create'); + frappe.db.get_value('Therapy Plan', {'name': frm.doc.therapy_plan}, 'therapy_plan_template', (r) => { + if (r && !r.therapy_plan_template) { + frm.add_custom_button(__('Sales Invoice'), function() { + frappe.model.open_mapped_doc({ + method: 'erpnext.healthcare.doctype.therapy_session.therapy_session.invoice_therapy_session', + frm: frm, + }); + }, 'Create'); + } + }); } }, + therapy_plan: function(frm) { + if (frm.doc.therapy_plan) { + frm.trigger('filter_therapy_types'); + } + }, + + filter_therapy_types: function(frm) { + frappe.call({ + 'method': 'frappe.client.get', + args: { + doctype: 'Therapy Plan', + name: frm.doc.therapy_plan + }, + callback: function(data) { + let therapy_types = (data.message.therapy_plan_details || []).map(function(d){ return d.therapy_type; }); + frm.set_query('therapy_type', function() { + return { + filters: { 'therapy_type': ['in', therapy_types]} + }; + }); + } + }); + }, + patient: function(frm) { if (frm.doc.patient) { frappe.call({ @@ -98,19 +130,6 @@ frappe.ui.form.on('Therapy Session', { frm.set_value(values); } }); - } else { - let values = { - 'patient': '', - 'therapy_type': '', - 'therapy_plan': '', - 'practitioner': '', - 'department': '', - 'start_date': '', - 'start_time': '', - 'service_unit': '', - 'duration': '' - }; - frm.set_value(values); } }, diff --git a/erpnext/healthcare/doctype/therapy_session/therapy_session.json b/erpnext/healthcare/doctype/therapy_session/therapy_session.json index 1f877cc296..0bb2b0ef2a 100644 --- a/erpnext/healthcare/doctype/therapy_session/therapy_session.json +++ b/erpnext/healthcare/doctype/therapy_session/therapy_session.json @@ -194,6 +194,7 @@ "fieldname": "total_counts_completed", "fieldtype": "Int", "label": "Total Counts Completed", + "no_copy": 1, "read_only": 1 }, { @@ -222,7 +223,7 @@ ], "is_submittable": 1, "links": [], - "modified": "2020-10-22 23:10:21.178644", + "modified": "2020-11-04 18:14:25.999939", "modified_by": "Administrator", "module": "Healthcare", "name": "Therapy Session", diff --git a/erpnext/communication/doctype/call_log/__init__.py b/erpnext/healthcare/report/inpatient_medication_orders/__init__.py similarity index 100% rename from erpnext/communication/doctype/call_log/__init__.py rename to erpnext/healthcare/report/inpatient_medication_orders/__init__.py diff --git a/erpnext/healthcare/report/inpatient_medication_orders/inpatient_medication_orders.js b/erpnext/healthcare/report/inpatient_medication_orders/inpatient_medication_orders.js new file mode 100644 index 0000000000..a10f83760f --- /dev/null +++ b/erpnext/healthcare/report/inpatient_medication_orders/inpatient_medication_orders.js @@ -0,0 +1,57 @@ +// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt +/* eslint-disable */ + +frappe.query_reports["Inpatient Medication Orders"] = { + "filters": [ + { + fieldname: "company", + label: __("Company"), + fieldtype: "Link", + options: "Company", + default: frappe.defaults.get_user_default("Company"), + reqd: 1 + }, + { + fieldname: "from_date", + label: __("From Date"), + fieldtype: "Date", + default: frappe.datetime.add_months(frappe.datetime.get_today(), -1), + reqd: 1 + }, + { + fieldname: "to_date", + label: __("To Date"), + fieldtype: "Date", + default: frappe.datetime.now_date(), + reqd: 1 + }, + { + fieldname: "patient", + label: __("Patient"), + fieldtype: "Link", + options: "Patient" + }, + { + fieldname: "service_unit", + label: __("Healthcare Service Unit"), + fieldtype: "Link", + options: "Healthcare Service Unit", + get_query: () => { + var company = frappe.query_report.get_filter_value('company'); + return { + filters: { + 'company': company, + 'is_group': 0 + } + } + } + }, + { + fieldname: "show_completed_orders", + label: __("Show Completed Orders"), + fieldtype: "Check", + default: 1 + } + ] +}; diff --git a/erpnext/healthcare/report/inpatient_medication_orders/inpatient_medication_orders.json b/erpnext/healthcare/report/inpatient_medication_orders/inpatient_medication_orders.json new file mode 100644 index 0000000000..9217fa1891 --- /dev/null +++ b/erpnext/healthcare/report/inpatient_medication_orders/inpatient_medication_orders.json @@ -0,0 +1,36 @@ +{ + "add_total_row": 0, + "columns": [], + "creation": "2020-11-23 17:25:58.802949", + "disable_prepared_report": 0, + "disabled": 0, + "docstatus": 0, + "doctype": "Report", + "filters": [], + "idx": 0, + "is_standard": "Yes", + "json": "{}", + "modified": "2020-11-23 19:40:20.227591", + "modified_by": "Administrator", + "module": "Healthcare", + "name": "Inpatient Medication Orders", + "owner": "Administrator", + "prepared_report": 0, + "ref_doctype": "Inpatient Medication Order", + "report_name": "Inpatient Medication Orders", + "report_type": "Script Report", + "roles": [ + { + "role": "System Manager" + }, + { + "role": "Healthcare Administrator" + }, + { + "role": "Nursing User" + }, + { + "role": "Physician" + } + ] +} \ No newline at end of file diff --git a/erpnext/healthcare/report/inpatient_medication_orders/inpatient_medication_orders.py b/erpnext/healthcare/report/inpatient_medication_orders/inpatient_medication_orders.py new file mode 100644 index 0000000000..b9077301ba --- /dev/null +++ b/erpnext/healthcare/report/inpatient_medication_orders/inpatient_medication_orders.py @@ -0,0 +1,198 @@ +# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe +from erpnext.healthcare.doctype.inpatient_medication_entry.inpatient_medication_entry import get_current_healthcare_service_unit + +def execute(filters=None): + columns = get_columns() + data = get_data(filters) + chart = get_chart_data(data) + + return columns, data, None, chart + +def get_columns(): + return [ + { + "fieldname": "patient", + "fieldtype": "Link", + "label": "Patient", + "options": "Patient", + "width": 200 + }, + { + "fieldname": "healthcare_service_unit", + "fieldtype": "Link", + "label": "Healthcare Service Unit", + "options": "Healthcare Service Unit", + "width": 150 + }, + { + "fieldname": "drug", + "fieldtype": "Link", + "label": "Drug Code", + "options": "Item", + "width": 150 + }, + { + "fieldname": "drug_name", + "fieldtype": "Data", + "label": "Drug Name", + "width": 150 + }, + { + "fieldname": "dosage", + "fieldtype": "Link", + "label": "Dosage", + "options": "Prescription Dosage", + "width": 80 + }, + { + "fieldname": "dosage_form", + "fieldtype": "Link", + "label": "Dosage Form", + "options": "Dosage Form", + "width": 100 + }, + { + "fieldname": "date", + "fieldtype": "Date", + "label": "Date", + "width": 100 + }, + { + "fieldname": "time", + "fieldtype": "Time", + "label": "Time", + "width": 100 + }, + { + "fieldname": "is_completed", + "fieldtype": "Check", + "label": "Is Order Completed", + "width": 100 + }, + { + "fieldname": "healthcare_practitioner", + "fieldtype": "Link", + "label": "Healthcare Practitioner", + "options": "Healthcare Practitioner", + "width": 200 + }, + { + "fieldname": "inpatient_medication_entry", + "fieldtype": "Link", + "label": "Inpatient Medication Entry", + "options": "Inpatient Medication Entry", + "width": 200 + }, + { + "fieldname": "inpatient_record", + "fieldtype": "Link", + "label": "Inpatient Record", + "options": "Inpatient Record", + "width": 200 + } + ] + +def get_data(filters): + conditions, values = get_conditions(filters) + + data = frappe.db.sql(""" + SELECT + parent.patient, parent.inpatient_record, parent.practitioner, + child.drug, child.drug_name, child.dosage, child.dosage_form, + child.date, child.time, child.is_completed, child.name + FROM `tabInpatient Medication Order` parent + INNER JOIN `tabInpatient Medication Order Entry` child + ON child.parent = parent.name + WHERE + parent.docstatus = 1 + {conditions} + ORDER BY date, time + """.format(conditions=conditions), values, as_dict=1) + + data = get_inpatient_details(data, filters.get("service_unit")) + + return data + +def get_conditions(filters): + conditions = "" + values = dict() + + if filters.get("company"): + conditions += " AND parent.company = %(company)s" + values["company"] = filters.get("company") + + if filters.get("from_date") and filters.get("to_date"): + conditions += " AND child.date BETWEEN %(from_date)s and %(to_date)s" + values["from_date"] = filters.get("from_date") + values["to_date"] = filters.get("to_date") + + if filters.get("patient"): + conditions += " AND parent.patient = %(patient)s" + values["patient"] = filters.get("patient") + + if not filters.get("show_completed_orders"): + conditions += " AND child.is_completed = 0" + + return conditions, values + + +def get_inpatient_details(data, service_unit): + service_unit_filtered_data = [] + + for entry in data: + entry["healthcare_service_unit"] = get_current_healthcare_service_unit(entry.inpatient_record) + if entry.is_completed: + entry["inpatient_medication_entry"] = get_inpatient_medication_entry(entry.name) + + if service_unit and entry.healthcare_service_unit and service_unit != entry.healthcare_service_unit: + service_unit_filtered_data.append(entry) + + entry.pop("name", None) + + for entry in service_unit_filtered_data: + data.remove(entry) + + return data + +def get_inpatient_medication_entry(order_entry): + return frappe.db.get_value("Inpatient Medication Entry Detail", {"against_imoe": order_entry}, "parent") + +def get_chart_data(data): + if not data: + return None + + labels = ["Pending", "Completed"] + datasets = [] + + status_wise_data = { + "Pending": 0, + "Completed": 0 + } + + for d in data: + if d.is_completed: + status_wise_data["Completed"] += 1 + else: + status_wise_data["Pending"] += 1 + + datasets.append({ + "name": "Inpatient Medication Order Status", + "values": [status_wise_data.get("Pending"), status_wise_data.get("Completed")] + }) + + chart = { + "data": { + "labels": labels, + "datasets": datasets + }, + "type": "donut", + "height": 300 + } + + chart["fieldtype"] = "Data" + + return chart \ No newline at end of file diff --git a/erpnext/healthcare/report/inpatient_medication_orders/test_inpatient_medication_orders.py b/erpnext/healthcare/report/inpatient_medication_orders/test_inpatient_medication_orders.py new file mode 100644 index 0000000000..0d3f45f500 --- /dev/null +++ b/erpnext/healthcare/report/inpatient_medication_orders/test_inpatient_medication_orders.py @@ -0,0 +1,128 @@ +# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import unittest +import frappe +import datetime +from frappe.utils import getdate, now_datetime +from erpnext.healthcare.doctype.inpatient_record.test_inpatient_record import create_patient, create_inpatient, get_healthcare_service_unit, mark_invoiced_inpatient_occupancy +from erpnext.healthcare.doctype.inpatient_record.inpatient_record import admit_patient, discharge_patient, schedule_discharge +from erpnext.healthcare.doctype.inpatient_medication_order.test_inpatient_medication_order import create_ipmo, create_ipme +from erpnext.healthcare.report.inpatient_medication_orders.inpatient_medication_orders import execute + +class TestInpatientMedicationOrders(unittest.TestCase): + @classmethod + def setUpClass(self): + frappe.db.sql("delete from `tabInpatient Medication Order` where company='_Test Company'") + frappe.db.sql("delete from `tabInpatient Medication Entry` where company='_Test Company'") + self.patient = create_patient() + self.ip_record = create_records(self.patient) + + def test_inpatient_medication_orders_report(self): + filters = { + 'company': '_Test Company', + 'from_date': getdate(), + 'to_date': getdate(), + 'patient': '_Test IPD Patient', + 'service_unit': 'Test Service Unit Ip Occupancy - _TC' + } + + report = execute(filters) + + expected_data = [ + { + 'patient': '_Test IPD Patient', + 'inpatient_record': self.ip_record.name, + 'practitioner': None, + 'drug': 'Dextromethorphan', + 'drug_name': 'Dextromethorphan', + 'dosage': 1.0, + 'dosage_form': 'Tablet', + 'date': getdate(), + 'time': datetime.timedelta(seconds=32400), + 'is_completed': 0, + 'healthcare_service_unit': 'Test Service Unit Ip Occupancy - _TC' + }, + { + 'patient': '_Test IPD Patient', + 'inpatient_record': self.ip_record.name, + 'practitioner': None, + 'drug': 'Dextromethorphan', + 'drug_name': 'Dextromethorphan', + 'dosage': 1.0, + 'dosage_form': 'Tablet', + 'date': getdate(), + 'time': datetime.timedelta(seconds=50400), + 'is_completed': 0, + 'healthcare_service_unit': 'Test Service Unit Ip Occupancy - _TC' + }, + { + 'patient': '_Test IPD Patient', + 'inpatient_record': self.ip_record.name, + 'practitioner': None, + 'drug': 'Dextromethorphan', + 'drug_name': 'Dextromethorphan', + 'dosage': 1.0, + 'dosage_form': 'Tablet', + 'date': getdate(), + 'time': datetime.timedelta(seconds=75600), + 'is_completed': 0, + 'healthcare_service_unit': 'Test Service Unit Ip Occupancy - _TC' + } + ] + + self.assertEqual(expected_data, report[1]) + + filters = frappe._dict(from_date=getdate(), to_date=getdate(), from_time='', to_time='') + ipme = create_ipme(filters) + ipme.submit() + + filters = { + 'company': '_Test Company', + 'from_date': getdate(), + 'to_date': getdate(), + 'patient': '_Test IPD Patient', + 'service_unit': 'Test Service Unit Ip Occupancy - _TC', + 'show_completed_orders': 0 + } + + report = execute(filters) + self.assertEqual(len(report[1]), 0) + + def tearDown(self): + if frappe.db.get_value('Patient', self.patient, 'inpatient_record'): + # cleanup - Discharge + schedule_discharge(frappe.as_json({'patient': self.patient})) + self.ip_record.reload() + mark_invoiced_inpatient_occupancy(self.ip_record) + + self.ip_record.reload() + discharge_patient(self.ip_record) + + for entry in frappe.get_all('Inpatient Medication Entry'): + doc = frappe.get_doc('Inpatient Medication Entry', entry.name) + doc.cancel() + doc.delete() + + for entry in frappe.get_all('Inpatient Medication Order'): + doc = frappe.get_doc('Inpatient Medication Order', entry.name) + doc.cancel() + doc.delete() + + +def create_records(patient): + frappe.db.sql("""delete from `tabInpatient Record`""") + + # Admit + ip_record = create_inpatient(patient) + ip_record.expected_length_of_stay = 0 + ip_record.save() + ip_record.reload() + service_unit = get_healthcare_service_unit() + admit_patient(ip_record, service_unit, now_datetime()) + + ipmo = create_ipmo(patient) + ipmo.submit() + + return ip_record diff --git a/erpnext/hooks.py b/erpnext/hooks.py index dbb6c0d92e..1e3bb6a5cf 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -15,10 +15,10 @@ app_logo_url = '/assets/erpnext/images/erp-icon.svg' develop_version = '13.x.x-develop' -app_include_js = "assets/js/erpnext.min.js" -app_include_css = "assets/css/erpnext.css" -web_include_js = "assets/js/erpnext-web.min.js" -web_include_css = "assets/css/erpnext-web.css" +app_include_js = "/assets/js/erpnext.min.js" +app_include_css = "/assets/css/erpnext.css" +web_include_js = "/assets/js/erpnext-web.min.js" +web_include_css = "/assets/css/erpnext-web.css" doctype_js = { "Address": "public/js/address.js", @@ -237,6 +237,9 @@ doc_events = { "Website Settings": { "validate": "erpnext.portal.doctype.products_settings.products_settings.home_page_is_products" }, + "Tax Category": { + "validate": "erpnext.regional.india.utils.validate_tax_category" + }, "Sales Invoice": { "on_submit": [ "erpnext.regional.create_transaction_log", @@ -250,7 +253,11 @@ doc_events = { "on_trash": "erpnext.regional.check_deletion_permission" }, "Purchase Invoice": { - "validate": "erpnext.regional.india.utils.update_grand_total_for_rcm" + "validate": [ + "erpnext.regional.india.utils.update_grand_total_for_rcm", + "erpnext.regional.united_arab_emirates.utils.update_grand_total_for_rcm", + "erpnext.regional.united_arab_emirates.utils.validate_returns" + ] }, "Payment Entry": { "on_submit": ["erpnext.regional.create_transaction_log", "erpnext.accounts.doctype.payment_request.payment_request.update_payment_req_status", "erpnext.accounts.doctype.dunning.dunning.resolve_dunning"], @@ -264,11 +271,11 @@ doc_events = { }, "Contact": { "on_trash": "erpnext.support.doctype.issue.issue.update_issue", - "after_insert": "erpnext.communication.doctype.call_log.call_log.set_caller_information", + "after_insert": "erpnext.telephony.doctype.call_log.call_log.set_caller_information", "validate": "erpnext.crm.utils.update_lead_phone_numbers" }, "Lead": { - "after_insert": "erpnext.communication.doctype.call_log.call_log.set_caller_information" + "after_insert": "erpnext.telephony.doctype.call_log.call_log.set_caller_information" }, "Email Unsubscribe": { "after_insert": "erpnext.crm.doctype.email_campaign.email_campaign.unsubscribe_recipient" @@ -307,6 +314,7 @@ scheduler_events = { "erpnext.projects.doctype.project.project.collect_project_status", "erpnext.hr.doctype.shift_type.shift_type.process_auto_attendance_for_all_shifts", "erpnext.support.doctype.issue.issue.set_service_level_agreement_variance", + "erpnext.erpnext_integrations.connectors.shopify_connection.sync_old_orders", ], "daily": [ "erpnext.stock.reorder_item.reorder_item", @@ -339,14 +347,16 @@ scheduler_events = { "erpnext.setup.doctype.email_digest.email_digest.send", "erpnext.manufacturing.doctype.bom_update_tool.bom_update_tool.update_latest_price_in_all_boms", "erpnext.hr.doctype.leave_ledger_entry.leave_ledger_entry.process_expired_allocation", + "erpnext.hr.doctype.leave_policy_assignment.leave_policy_assignment.automatically_allocate_leaves_based_on_leave_policy", "erpnext.hr.utils.generate_leave_encashment", + "erpnext.hr.utils.allocate_earned_leaves", + "erpnext.hr.utils.grant_leaves_automatically", "erpnext.loan_management.doctype.loan_security_shortfall.loan_security_shortfall.create_process_loan_security_shortfall", "erpnext.loan_management.doctype.loan_interest_accrual.loan_interest_accrual.process_loan_interest_accrual_for_term_loans", "erpnext.crm.doctype.lead.lead.daily_open_lead" ], "monthly_long": [ "erpnext.accounts.deferred_revenue.process_deferred_accounting", - "erpnext.hr.utils.allocate_earned_leaves", "erpnext.loan_management.doctype.loan_interest_accrual.loan_interest_accrual.process_loan_interest_accrual_for_demand_loans" ] } @@ -390,7 +400,8 @@ regional_overrides = { 'erpnext.accounts.doctype.purchase_invoice.purchase_invoice.make_regional_gl_entries': 'erpnext.regional.india.utils.make_regional_gl_entries' }, 'United Arab Emirates': { - 'erpnext.controllers.taxes_and_totals.update_itemised_tax_data': 'erpnext.regional.united_arab_emirates.utils.update_itemised_tax_data' + 'erpnext.controllers.taxes_and_totals.update_itemised_tax_data': 'erpnext.regional.united_arab_emirates.utils.update_itemised_tax_data', + 'erpnext.accounts.doctype.purchase_invoice.purchase_invoice.make_regional_gl_entries': 'erpnext.regional.united_arab_emirates.utils.make_regional_gl_entries', }, 'Saudi Arabia': { 'erpnext.controllers.taxes_and_totals.update_itemised_tax_data': 'erpnext.regional.united_arab_emirates.utils.update_itemised_tax_data' @@ -430,42 +441,43 @@ global_search_doctypes = { {"doctype": "Sales Order", "index": 8}, {"doctype": "Quotation", "index": 9}, {"doctype": "Work Order", "index": 10}, - {"doctype": "Purchase Receipt", "index": 11}, - {"doctype": "Purchase Invoice", "index": 12}, - {"doctype": "Delivery Note", "index": 13}, - {"doctype": "Stock Entry", "index": 14}, - {"doctype": "Material Request", "index": 15}, - {"doctype": "Delivery Trip", "index": 16}, - {"doctype": "Pick List", "index": 17}, - {"doctype": "Salary Slip", "index": 18}, - {"doctype": "Leave Application", "index": 19}, - {"doctype": "Expense Claim", "index": 20}, - {"doctype": "Payment Entry", "index": 21}, - {"doctype": "Lead", "index": 22}, - {"doctype": "Opportunity", "index": 23}, - {"doctype": "Item Price", "index": 24}, - {"doctype": "Purchase Taxes and Charges Template", "index": 25}, - {"doctype": "Sales Taxes and Charges", "index": 26}, - {"doctype": "Asset", "index": 27}, - {"doctype": "Project", "index": 28}, - {"doctype": "Task", "index": 29}, - {"doctype": "Timesheet", "index": 30}, - {"doctype": "Issue", "index": 31}, - {"doctype": "Serial No", "index": 32}, - {"doctype": "Batch", "index": 33}, - {"doctype": "Branch", "index": 34}, - {"doctype": "Department", "index": 35}, - {"doctype": "Employee Grade", "index": 36}, - {"doctype": "Designation", "index": 37}, - {"doctype": "Job Opening", "index": 38}, - {"doctype": "Job Applicant", "index": 39}, - {"doctype": "Job Offer", "index": 40}, - {"doctype": "Salary Structure Assignment", "index": 41}, - {"doctype": "Appraisal", "index": 42}, - {"doctype": "Loan", "index": 43}, - {"doctype": "Maintenance Schedule", "index": 44}, - {"doctype": "Maintenance Visit", "index": 45}, - {"doctype": "Warranty Claim", "index": 46}, + {"doctype": "Purchase Order", "index": 11}, + {"doctype": "Purchase Receipt", "index": 12}, + {"doctype": "Purchase Invoice", "index": 13}, + {"doctype": "Delivery Note", "index": 14}, + {"doctype": "Stock Entry", "index": 15}, + {"doctype": "Material Request", "index": 16}, + {"doctype": "Delivery Trip", "index": 17}, + {"doctype": "Pick List", "index": 18}, + {"doctype": "Salary Slip", "index": 19}, + {"doctype": "Leave Application", "index": 20}, + {"doctype": "Expense Claim", "index": 21}, + {"doctype": "Payment Entry", "index": 22}, + {"doctype": "Lead", "index": 23}, + {"doctype": "Opportunity", "index": 24}, + {"doctype": "Item Price", "index": 25}, + {"doctype": "Purchase Taxes and Charges Template", "index": 26}, + {"doctype": "Sales Taxes and Charges", "index": 27}, + {"doctype": "Asset", "index": 28}, + {"doctype": "Project", "index": 29}, + {"doctype": "Task", "index": 30}, + {"doctype": "Timesheet", "index": 31}, + {"doctype": "Issue", "index": 32}, + {"doctype": "Serial No", "index": 33}, + {"doctype": "Batch", "index": 34}, + {"doctype": "Branch", "index": 35}, + {"doctype": "Department", "index": 36}, + {"doctype": "Employee Grade", "index": 37}, + {"doctype": "Designation", "index": 38}, + {"doctype": "Job Opening", "index": 39}, + {"doctype": "Job Applicant", "index": 40}, + {"doctype": "Job Offer", "index": 41}, + {"doctype": "Salary Structure Assignment", "index": 42}, + {"doctype": "Appraisal", "index": 43}, + {"doctype": "Loan", "index": 44}, + {"doctype": "Maintenance Schedule", "index": 45}, + {"doctype": "Maintenance Visit", "index": 46}, + {"doctype": "Warranty Claim", "index": 47}, ], "Healthcare": [ {'doctype': 'Patient', 'index': 1}, diff --git a/erpnext/hr/doctype/department_approver/department_approver.py b/erpnext/hr/doctype/department_approver/department_approver.py index 9b2de0e1cb..d337959d53 100644 --- a/erpnext/hr/doctype/department_approver/department_approver.py +++ b/erpnext/hr/doctype/department_approver/department_approver.py @@ -20,7 +20,7 @@ def get_approvers(doctype, txt, searchfield, start, page_len, filters): approvers = [] department_details = {} department_list = [] - employee = frappe.get_value("Employee", filters.get("employee"), ["department", "leave_approver", "expense_approver", "shift_request_approver"], as_dict=True) + employee = frappe.get_value("Employee", filters.get("employee"), ["employee_name","department", "leave_approver", "expense_approver", "shift_request_approver"], as_dict=True) employee_department = filters.get("department") or employee.department if employee_department: @@ -59,11 +59,9 @@ def get_approvers(doctype, txt, searchfield, start, page_len, filters): and approver.approver=user.name""",(d, "%" + txt + "%", parentfield), as_list=True) if len(approvers) == 0: - frappe.throw(_("Please set {0} for the Employee or for Department: {1}"). - format( - field_name, frappe.bold(employee_department), - frappe.bold(employee.name) - ), - title=_(field_name + " Missing")) + error_msg = _("Please set {0} for the Employee: {1}").format(field_name, frappe.bold(employee.employee_name)) + if department_list: + error_msg += _(" or for Department: {0}").format(frappe.bold(employee_department)) + frappe.throw(error_msg, title=_(field_name + " Missing")) return set(tuple(approver) for approver in approvers) diff --git a/erpnext/hr/doctype/employee/employee.json b/erpnext/hr/doctype/employee/employee.json index da789198e5..4f1c04ff5d 100644 --- a/erpnext/hr/doctype/employee/employee.json +++ b/erpnext/hr/doctype/employee/employee.json @@ -57,7 +57,6 @@ "column_break_45", "shift_request_approver", "attendance_and_leave_details", - "leave_policy", "attendance_device_id", "column_break_44", "holiday_list", @@ -411,14 +410,6 @@ "oldfieldtype": "Link", "options": "Branch" }, - { - "fetch_from": "grade.default_leave_policy", - "fetch_if_empty": 1, - "fieldname": "leave_policy", - "fieldtype": "Link", - "label": "Leave Policy", - "options": "Leave Policy" - }, { "description": "Applicable Holiday List", "fieldname": "holiday_list", @@ -672,10 +663,10 @@ "oldfieldtype": "Date" }, { - "depends_on": "eval:doc.status == \"Left\"", "fieldname": "relieving_date", "fieldtype": "Date", "label": "Relieving Date", + "mandatory_depends_on": "eval:doc.status == \"Left\"", "oldfieldname": "relieving_date", "oldfieldtype": "Date" }, @@ -822,7 +813,7 @@ "idx": 24, "image_field": "image", "links": [], - "modified": "2020-10-06 15:58:23.805489", + "modified": "2020-10-16 15:02:04.283657", "modified_by": "Administrator", "module": "HR", "name": "Employee", diff --git a/erpnext/hr/doctype/employee_advance/employee_advance.js b/erpnext/hr/doctype/employee_advance/employee_advance.js index cba8ee9a40..7056adf208 100644 --- a/erpnext/hr/doctype/employee_advance/employee_advance.js +++ b/erpnext/hr/doctype/employee_advance/employee_advance.js @@ -15,11 +15,16 @@ frappe.ui.form.on('Employee Advance', { }); frm.set_query("advance_account", function() { + if (!frm.doc.employee) { + frappe.msgprint(__("Please select employee first")); + } + var company_currency = erpnext.get_currency(frm.doc.company); return { filters: { "root_type": "Asset", "is_group": 0, - "company": frm.doc.company + "company": frm.doc.company, + "account_currency": ["in", [frm.doc.currency, company_currency]], } }; }); @@ -63,7 +68,7 @@ frappe.ui.form.on('Employee Advance', { }, __('Create')); }else if (frm.doc.repay_unclaimed_amount_from_salary == 1 && frappe.model.can_create("Additional Salary")){ frm.add_custom_button(__("Deduction from salary"), function() { - frm.events.make_deduction_via_additional_salary(frm) + frm.events.make_deduction_via_additional_salary(frm); }, __('Create')); } } @@ -127,7 +132,9 @@ frappe.ui.form.on('Employee Advance', { 'employee_advance_name': frm.doc.name, 'return_amount': flt(frm.doc.paid_amount - frm.doc.claimed_amount), 'advance_account': frm.doc.advance_account, - 'mode_of_payment': frm.doc.mode_of_payment + 'mode_of_payment': frm.doc.mode_of_payment, + 'currency': frm.doc.currency, + 'exchange_rate': frm.doc.exchange_rate }, callback: function(r) { const doclist = frappe.model.sync(r.message); @@ -138,16 +145,72 @@ frappe.ui.form.on('Employee Advance', { employee: function (frm) { if (frm.doc.employee) { - return frappe.call({ - method: "erpnext.hr.doctype.employee_advance.employee_advance.get_pending_amount", - args: { - "employee": frm.doc.employee, - "posting_date": frm.doc.posting_date - }, - callback: function(r) { - frm.set_value("pending_amount",r.message); - } - }); + frappe.run_serially([ + () => frm.trigger('get_employee_currency'), + () => frm.trigger('get_pending_amount') + ]); } + }, + + get_pending_amount: function(frm) { + frappe.call({ + method: "erpnext.hr.doctype.employee_advance.employee_advance.get_pending_amount", + args: { + "employee": frm.doc.employee, + "posting_date": frm.doc.posting_date + }, + callback: function(r) { + frm.set_value("pending_amount", r.message); + } + }); + }, + + get_employee_currency: function(frm) { + frappe.call({ + method: "erpnext.payroll.doctype.salary_structure_assignment.salary_structure_assignment.get_employee_currency", + args: { + employee: frm.doc.employee, + }, + callback: function(r) { + if (r.message) { + frm.set_value('currency', r.message); + frm.refresh_fields(); + } + } + }); + }, + + currency: function(frm) { + var from_currency = frm.doc.currency; + var company_currency; + if (!frm.doc.company) { + company_currency = erpnext.get_currency(frappe.defaults.get_default("Company")); + } else { + company_currency = erpnext.get_currency(frm.doc.company); + } + if (from_currency != company_currency) { + frm.events.set_exchange_rate(frm, from_currency, company_currency); + } else { + frm.set_value("exchange_rate", 1.0); + frm.set_df_property('exchange_rate', 'hidden', 1); + frm.set_df_property("exchange_rate", "description", "" ); + } + frm.refresh_fields(); + }, + + set_exchange_rate: function(frm, from_currency, company_currency) { + frappe.call({ + method: "erpnext.setup.utils.get_exchange_rate", + args: { + from_currency: from_currency, + to_currency: company_currency, + }, + callback: function(r) { + frm.set_value("exchange_rate", flt(r.message)); + frm.set_df_property('exchange_rate', 'hidden', 0); + frm.set_df_property("exchange_rate", "description", "1 " + frm.doc.currency + + " = [?] " + company_currency); + } + }); } }); diff --git a/erpnext/hr/doctype/employee_advance/employee_advance.json b/erpnext/hr/doctype/employee_advance/employee_advance.json index 0d90913871..cf6b5404ec 100644 --- a/erpnext/hr/doctype/employee_advance/employee_advance.json +++ b/erpnext/hr/doctype/employee_advance/employee_advance.json @@ -13,6 +13,8 @@ "department", "column_break_4", "posting_date", + "currency", + "exchange_rate", "repay_unclaimed_amount_from_salary", "section_break_8", "purpose", @@ -91,7 +93,7 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Advance Amount", - "options": "Company:company:default_currency", + "options": "currency", "reqd": 1 }, { @@ -99,7 +101,7 @@ "fieldtype": "Currency", "label": "Paid Amount", "no_copy": 1, - "options": "Company:company:default_currency", + "options": "currency", "read_only": 1 }, { @@ -107,7 +109,7 @@ "fieldtype": "Currency", "label": "Claimed Amount", "no_copy": 1, - "options": "Company:company:default_currency", + "options": "currency", "read_only": 1 }, { @@ -161,7 +163,7 @@ "fieldname": "return_amount", "fieldtype": "Currency", "label": "Returned Amount", - "options": "Company:company:default_currency", + "options": "currency", "read_only": 1 }, { @@ -175,13 +177,31 @@ "fieldname": "pending_amount", "fieldtype": "Currency", "label": "Pending Amount", - "options": "Company:company:default_currency", + "options": "currency", "read_only": 1 + }, + { + "default": "Company:company:default_currency", + "depends_on": "eval:(doc.docstatus==1 || doc.employee)", + "fieldname": "currency", + "fieldtype": "Link", + "label": "Currency", + "options": "Currency", + "reqd": 1 + }, + { + "depends_on": "currency", + "fieldname": "exchange_rate", + "fieldtype": "Float", + "label": "Exchange Rate", + "precision": "9", + "print_hide": 1, + "reqd": 1 } ], "is_submittable": 1, "links": [], - "modified": "2020-06-12 12:42:39.833818", + "modified": "2020-11-25 12:01:55.980721", "modified_by": "Administrator", "module": "HR", "name": "Employee Advance", diff --git a/erpnext/hr/doctype/employee_advance/employee_advance.py b/erpnext/hr/doctype/employee_advance/employee_advance.py index 3c435b8cc3..cb72f6b6d9 100644 --- a/erpnext/hr/doctype/employee_advance/employee_advance.py +++ b/erpnext/hr/doctype/employee_advance/employee_advance.py @@ -19,7 +19,6 @@ class EmployeeAdvance(Document): def validate(self): self.set_status() - self.validate_employee_advance_account() def on_cancel(self): self.ignore_linked_doctypes = ('GL Entry') @@ -38,16 +37,9 @@ class EmployeeAdvance(Document): elif self.docstatus == 2: self.status = "Cancelled" - def validate_employee_advance_account(self): - company_currency = erpnext.get_company_currency(self.company) - if (self.advance_account and - company_currency != frappe.db.get_value('Account', self.advance_account, 'account_currency')): - frappe.throw(_("Advance account currency should be same as company currency {0}") - .format(company_currency)) - def set_total_advance_paid(self): paid_amount = frappe.db.sql(""" - select ifnull(sum(debit_in_account_currency), 0) as paid_amount + select ifnull(sum(debit), 0) as paid_amount from `tabGL Entry` where against_voucher_type = 'Employee Advance' and against_voucher = %s @@ -56,7 +48,7 @@ class EmployeeAdvance(Document): """, (self.name, self.employee), as_dict=1)[0].paid_amount return_amount = frappe.db.sql(""" - select name, ifnull(sum(credit_in_account_currency), 0) as return_amount + select ifnull(sum(credit), 0) as return_amount from `tabGL Entry` where against_voucher_type = 'Employee Advance' and voucher_type != 'Expense Claim' @@ -65,6 +57,11 @@ class EmployeeAdvance(Document): and party = %s """, (self.name, self.employee), as_dict=1)[0].return_amount + if paid_amount != 0: + paid_amount = flt(paid_amount) / flt(self.exchange_rate) + if return_amount != 0: + return_amount = flt(return_amount) / flt(self.exchange_rate) + if flt(paid_amount) > self.advance_amount: frappe.throw(_("Row {0}# Paid Amount cannot be greater than requested advance amount"), EmployeeAdvanceOverPayment) @@ -107,16 +104,27 @@ def make_bank_entry(dt, dn): doc = frappe.get_doc(dt, dn) payment_account = get_default_bank_cash_account(doc.company, account_type="Cash", mode_of_payment=doc.mode_of_payment) + if not payment_account: + frappe.throw(_("Please set a Default Cash Account in Company defaults")) + + advance_account_currency = frappe.db.get_value('Account', doc.advance_account, 'account_currency') + + advance_amount, advance_exchange_rate = get_advance_amount_advance_exchange_rate(advance_account_currency,doc ) + + paying_amount, paying_exchange_rate = get_paying_amount_paying_exchange_rate(payment_account, doc) je = frappe.new_doc("Journal Entry") je.posting_date = nowdate() je.voucher_type = 'Bank Entry' je.company = doc.company je.remark = 'Payment against Employee Advance: ' + dn + '\n' + doc.purpose + je.multi_currency = 1 if advance_account_currency != payment_account.account_currency else 0 je.append("accounts", { "account": doc.advance_account, - "debit_in_account_currency": flt(doc.advance_amount), + "account_currency": advance_account_currency, + "exchange_rate": flt(advance_exchange_rate), + "debit_in_account_currency": flt(advance_amount), "reference_type": "Employee Advance", "reference_name": doc.name, "party_type": "Employee", @@ -128,19 +136,41 @@ def make_bank_entry(dt, dn): je.append("accounts", { "account": payment_account.account, "cost_center": erpnext.get_default_cost_center(doc.company), - "credit_in_account_currency": flt(doc.advance_amount), + "credit_in_account_currency": flt(paying_amount), "account_currency": payment_account.account_currency, - "account_type": payment_account.account_type + "account_type": payment_account.account_type, + "exchange_rate": flt(paying_exchange_rate) }) return je.as_dict() +def get_advance_amount_advance_exchange_rate(advance_account_currency, doc): + if advance_account_currency != doc.currency: + advance_amount = flt(doc.advance_amount) * flt(doc.exchange_rate) + advance_exchange_rate = 1 + else: + advance_amount = doc.advance_amount + advance_exchange_rate = doc.exchange_rate + + return advance_amount, advance_exchange_rate + +def get_paying_amount_paying_exchange_rate(payment_account, doc): + if payment_account.account_currency != doc.currency: + paying_amount = flt(doc.advance_amount) * flt(doc.exchange_rate) + paying_exchange_rate = 1 + else: + paying_amount = doc.advance_amount + paying_exchange_rate = doc.exchange_rate + + return paying_amount, paying_exchange_rate + @frappe.whitelist() def create_return_through_additional_salary(doc): import json doc = frappe._dict(json.loads(doc)) additional_salary = frappe.new_doc('Additional Salary') additional_salary.employee = doc.employee + additional_salary.currency = doc.currency additional_salary.amount = doc.paid_amount - doc.claimed_amount additional_salary.company = doc.company additional_salary.ref_doctype = doc.doctype @@ -149,26 +179,28 @@ def create_return_through_additional_salary(doc): return additional_salary @frappe.whitelist() -def make_return_entry(employee, company, employee_advance_name, return_amount, advance_account, mode_of_payment=None): - return_account = get_default_bank_cash_account(company, account_type='Cash', mode_of_payment = mode_of_payment) - - mode_of_payment_type = '' - if mode_of_payment: - mode_of_payment_type = frappe.get_cached_value('Mode of Payment', mode_of_payment, 'type') - if mode_of_payment_type not in ["Cash", "Bank"]: - # if mode of payment is General then it unset the type - mode_of_payment_type = None - +def make_return_entry(employee, company, employee_advance_name, return_amount, advance_account, currency, exchange_rate, mode_of_payment=None): + bank_cash_account = get_default_bank_cash_account(company, account_type='Cash', mode_of_payment = mode_of_payment) + if not bank_cash_account: + frappe.throw(_("Please set a Default Cash Account in Company defaults")) + + advance_account_currency = frappe.db.get_value('Account', advance_account, 'account_currency') + je = frappe.new_doc('Journal Entry') je.posting_date = nowdate() - # if mode of payment is Bank then voucher type is Bank Entry - je.voucher_type = '{} Entry'.format(mode_of_payment_type) if mode_of_payment_type else 'Cash Entry' + je.voucher_type = get_voucher_type(mode_of_payment) je.company = company je.remark = 'Return against Employee Advance: ' + employee_advance_name + je.multi_currency = 1 if advance_account_currency != bank_cash_account.account_currency else 0 + + advance_account_amount = flt(return_amount) if advance_account_currency==currency \ + else flt(return_amount) * flt(exchange_rate) je.append('accounts', { 'account': advance_account, - 'credit_in_account_currency': return_amount, + 'credit_in_account_currency': advance_account_amount, + 'account_currency': advance_account_currency, + 'exchange_rate': flt(exchange_rate) if advance_account_currency == currency else 1, 'reference_type': 'Employee Advance', 'reference_name': employee_advance_name, 'party_type': 'Employee', @@ -176,13 +208,25 @@ def make_return_entry(employee, company, employee_advance_name, return_amount, 'is_advance': 'Yes' }) + bank_amount = flt(return_amount) if bank_cash_account.account_currency==currency \ + else flt(return_amount) * flt(exchange_rate) + je.append("accounts", { - "account": return_account.account, - "debit_in_account_currency": return_amount, - "account_currency": return_account.account_currency, - "account_type": return_account.account_type + "account": bank_cash_account.account, + "debit_in_account_currency": bank_amount, + "account_currency": bank_cash_account.account_currency, + "account_type": bank_cash_account.account_type, + "exchange_rate": flt(exchange_rate) if bank_cash_account.account_currency == currency else 1 }) return je.as_dict() +def get_voucher_type(mode_of_payment=None): + voucher_type = "Cash Entry" + if mode_of_payment: + mode_of_payment_type = frappe.get_cached_value('Mode of Payment', mode_of_payment, 'type') + if mode_of_payment_type == "Bank": + voucher_type = "Bank Entry" + + return voucher_type \ No newline at end of file diff --git a/erpnext/hr/doctype/employee_advance/test_employee_advance.py b/erpnext/hr/doctype/employee_advance/test_employee_advance.py index 2097e711de..c88b2b8e49 100644 --- a/erpnext/hr/doctype/employee_advance/test_employee_advance.py +++ b/erpnext/hr/doctype/employee_advance/test_employee_advance.py @@ -3,15 +3,17 @@ # See license.txt from __future__ import unicode_literals -import frappe +import frappe, erpnext import unittest from frappe.utils import nowdate from erpnext.hr.doctype.employee_advance.employee_advance import make_bank_entry from erpnext.hr.doctype.employee_advance.employee_advance import EmployeeAdvanceOverPayment +from erpnext.hr.doctype.employee.test_employee import make_employee class TestEmployeeAdvance(unittest.TestCase): def test_paid_amount_and_status(self): - advance = make_employee_advance() + employee_name = make_employee("_T@employe.advance") + advance = make_employee_advance(employee_name) journal_entry = make_payment_entry(advance) journal_entry.submit() @@ -33,11 +35,13 @@ def make_payment_entry(advance): return journal_entry -def make_employee_advance(): +def make_employee_advance(employee_name): doc = frappe.new_doc("Employee Advance") - doc.employee = "_T-Employee-00001" + doc.employee = employee_name doc.company = "_Test company" doc.purpose = "For site visit" + doc.currency = erpnext.get_company_currency("_Test company") + doc.exchange_rate = 1 doc.advance_amount = 1000 doc.posting_date = nowdate() doc.advance_account = "_Test Employee Advance - _TC" diff --git a/erpnext/hr/doctype/employee_grade/employee_grade.json b/erpnext/hr/doctype/employee_grade/employee_grade.json index e63ffae0c4..88b061a3c3 100644 --- a/erpnext/hr/doctype/employee_grade/employee_grade.json +++ b/erpnext/hr/doctype/employee_grade/employee_grade.json @@ -1,167 +1,69 @@ { - "allow_copy": 0, - "allow_guest_to_view": 0, - "allow_import": 1, - "allow_rename": 1, - "autoname": "Prompt", - "beta": 0, - "creation": "2018-04-13 16:14:24.174138", - "custom": 0, - "docstatus": 0, - "doctype": "DocType", - "document_type": "", - "editable_grid": 1, - "engine": "InnoDB", + "actions": [], + "allow_import": 1, + "allow_rename": 1, + "autoname": "Prompt", + "creation": "2018-04-13 16:14:24.174138", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "default_salary_structure" + ], "fields": [ { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "default_leave_policy", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Default Leave Policy", - "length": 0, - "no_copy": 0, - "options": "Leave Policy", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, - { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, "fieldname": "default_salary_structure", "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, "label": "Default Salary Structure", - "length": 0, - "no_copy": 0, - "options": "Salary Structure", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 + "options": "Salary Structure" } ], - "has_web_view": 0, - "hide_heading": 0, - "hide_toolbar": 0, - "idx": 0, - "image_view": 0, - "in_create": 0, - "is_submittable": 0, - "issingle": 0, - "istable": 0, - "max_attachments": 0, - "modified": "2018-09-18 17:17:45.617624", + "index_web_pages_for_search": 1, + "links": [], + "modified": "2020-08-26 13:12:07.815330", "modified_by": "Administrator", "module": "HR", "name": "Employee Grade", - "name_case": "", "owner": "Administrator", "permissions": [ { - "amend": 0, - "cancel": 0, "create": 1, "delete": 1, "email": 1, "export": 1, - "if_owner": 0, - "import": 0, - "permlevel": 0, "print": 1, "read": 1, "report": 1, "role": "System Manager", - "set_user_permissions": 0, "share": 1, - "submit": 0, "write": 1 }, { - "amend": 0, - "cancel": 0, "create": 1, "delete": 1, "email": 1, "export": 1, - "if_owner": 0, - "import": 0, - "permlevel": 0, "print": 1, "read": 1, "report": 1, "role": "HR Manager", - "set_user_permissions": 0, "share": 1, - "submit": 0, "write": 1 }, { - "amend": 0, - "cancel": 0, "create": 1, "delete": 1, "email": 1, "export": 1, - "if_owner": 0, - "import": 0, - "permlevel": 0, "print": 1, "read": 1, "report": 1, "role": "HR User", - "set_user_permissions": 0, "share": 1, - "submit": 0, "write": 1 } ], - "quick_entry": 0, - "read_only": 0, - "read_only_onload": 0, - "show_name_in_global_search": 0, "sort_field": "modified", "sort_order": "DESC", - "track_changes": 1, - "track_seen": 0, - "track_views": 0 + "track_changes": 1 } \ No newline at end of file diff --git a/erpnext/hr/doctype/expense_claim/test_expense_claim.py b/erpnext/hr/doctype/expense_claim/test_expense_claim.py index 6e97f0513d..4a0908d457 100644 --- a/erpnext/hr/doctype/expense_claim/test_expense_claim.py +++ b/erpnext/hr/doctype/expense_claim/test_expense_claim.py @@ -7,6 +7,7 @@ import unittest from frappe.utils import random_string, nowdate from erpnext.hr.doctype.expense_claim.expense_claim import make_bank_entry from erpnext.accounts.doctype.account.test_account import create_account +from erpnext.hr.doctype.employee.test_employee import make_employee test_records = frappe.get_test_records('Expense Claim') test_dependencies = ['Employee'] @@ -126,6 +127,9 @@ def generate_taxes(): def make_expense_claim(payable_account, amount, sanctioned_amount, company, account, project=None, task_name=None, do_not_submit=False, taxes=None): employee = frappe.db.get_value("Employee", {"status": "Active"}) + if not employee: + employee = make_employee("test_employee@expense_claim.com", company=company) + currency, cost_center = frappe.db.get_value('Company', company, ['default_currency', 'cost_center']) expense_claim = { "doctype": "Expense Claim", diff --git a/erpnext/hr/doctype/expense_taxes_and_charges/expense_taxes_and_charges.json b/erpnext/hr/doctype/expense_taxes_and_charges/expense_taxes_and_charges.json index 885e3eed97..020457d4ec 100644 --- a/erpnext/hr/doctype/expense_taxes_and_charges/expense_taxes_and_charges.json +++ b/erpnext/hr/doctype/expense_taxes_and_charges/expense_taxes_and_charges.json @@ -71,9 +71,7 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Amount", - "oldfieldname": "tax_amount", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency" + "options": "currency" }, { "columns": 2, @@ -81,9 +79,7 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Total", - "oldfieldname": "total", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", + "options": "currency", "read_only": 1 }, { @@ -106,7 +102,7 @@ ], "istable": 1, "links": [], - "modified": "2020-05-11 19:01:26.611758", + "modified": "2020-09-23 20:27:36.027728", "modified_by": "Administrator", "module": "HR", "name": "Expense Taxes and Charges", diff --git a/erpnext/hr/doctype/hr_settings/hr_settings.json b/erpnext/hr/doctype/hr_settings/hr_settings.json index 4374d2911a..f99963504a 100644 --- a/erpnext/hr/doctype/hr_settings/hr_settings.json +++ b/erpnext/hr/doctype/hr_settings/hr_settings.json @@ -21,6 +21,7 @@ "show_leaves_of_all_department_members_in_calendar", "auto_leave_encashment", "restrict_backdated_leave_application", + "automatically_allocate_leaves_based_on_leave_policy", "hiring_settings", "check_vacancies" ], @@ -41,7 +42,7 @@ "description": "Employee records are created using the selected field", "fieldname": "emp_created_by", "fieldtype": "Select", - "label": "Employee Records to Be Created By", + "label": "Employee Records to be created by", "options": "Naming Series\nEmployee Number\nFull Name" }, { @@ -117,7 +118,7 @@ "default": "0", "fieldname": "restrict_backdated_leave_application", "fieldtype": "Check", - "label": "Restrict Backdated Leave Applications" + "label": "Restrict Backdated Leave Application" }, { "depends_on": "eval:doc.restrict_backdated_leave_application == 1", @@ -125,13 +126,19 @@ "fieldtype": "Link", "label": "Role Allowed to Create Backdated Leave Application", "options": "Role" + }, + { + "default": "0", + "fieldname": "automatically_allocate_leaves_based_on_leave_policy", + "fieldtype": "Check", + "label": "Automatically Allocate Leaves Based On Leave Policy" } ], "icon": "fa fa-cog", "idx": 1, "issingle": 1, "links": [], - "modified": "2020-10-13 11:49:46.168027", + "modified": "2020-08-27 14:30:28.995324", "modified_by": "Administrator", "module": "HR", "name": "HR Settings", diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation.json b/erpnext/hr/doctype/leave_allocation/leave_allocation.json index 007497e34a..4b315014da 100644 --- a/erpnext/hr/doctype/leave_allocation/leave_allocation.json +++ b/erpnext/hr/doctype/leave_allocation/leave_allocation.json @@ -1,4 +1,5 @@ { + "actions": [], "allow_import": 1, "autoname": "naming_series:", "creation": "2013-02-20 19:10:38", @@ -24,6 +25,7 @@ "compensatory_request", "leave_period", "leave_policy", + "leave_policy_assignment", "carry_forwarded_leaves_count", "expired", "amended_from", @@ -160,9 +162,10 @@ "read_only": 1 }, { - "fetch_from": "employee.leave_policy", + "fetch_from": "leave_policy_assignment.leave_policy", "fieldname": "leave_policy", "fieldtype": "Link", + "hidden": 1, "in_standard_filter": 1, "label": "Leave Policy", "options": "Leave Policy", @@ -209,12 +212,21 @@ "fieldtype": "Float", "label": "Carry Forwarded Leaves", "read_only": 1 + }, + { + "fieldname": "leave_policy_assignment", + "fieldtype": "Link", + "label": "Leave Policy Assignment", + "options": "Leave Policy Assignment", + "read_only": 1 } ], "icon": "fa fa-ok", "idx": 1, + "index_web_pages_for_search": 1, "is_submittable": 1, - "modified": "2019-08-08 15:08:42.440909", + "links": [], + "modified": "2020-08-20 14:25:10.314323", "modified_by": "Administrator", "module": "HR", "name": "Leave Allocation", diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation.py b/erpnext/hr/doctype/leave_allocation/leave_allocation.py index 03fe3fa035..a09cd2ea11 100755 --- a/erpnext/hr/doctype/leave_allocation/leave_allocation.py +++ b/erpnext/hr/doctype/leave_allocation/leave_allocation.py @@ -51,9 +51,19 @@ class LeaveAllocation(Document): def on_cancel(self): self.create_leave_ledger_entry(submit=False) + if self.leave_policy_assignment: + self.update_leave_policy_assignments_when_no_allocations_left() if self.carry_forward: self.set_carry_forwarded_leaves_in_previous_allocation(on_cancel=True) + def update_leave_policy_assignments_when_no_allocations_left(self): + allocations = frappe.db.get_list("Leave Allocation", filters = { + "docstatus": 1, + "leave_policy_assignment": self.leave_policy_assignment + }) + if len(allocations) == 0: + frappe.db.set_value("Leave Policy Assignment", self.leave_policy_assignment ,"leaves_allocated", 0) + def validate_period(self): if date_diff(self.to_date, self.from_date) <= 0: frappe.throw(_("To date cannot be before from date")) diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py index 3f25f58383..4f3e462390 100755 --- a/erpnext/hr/doctype/leave_application/leave_application.py +++ b/erpnext/hr/doctype/leave_application/leave_application.py @@ -130,8 +130,7 @@ class LeaveApplication(Document): if self.status == "Approved": for dt in daterange(getdate(self.from_date), getdate(self.to_date)): date = dt.strftime("%Y-%m-%d") - status = "Half Day" if getdate(date) == getdate(self.half_day_date) else "On Leave" - + status = "Half Day" if self.half_day_date and getdate(date) == getdate(self.half_day_date) else "On Leave" attendance_name = frappe.db.exists('Attendance', dict(employee = self.employee, attendance_date = date, docstatus = ('!=', 2))) @@ -293,7 +292,8 @@ class LeaveApplication(Document): def set_half_day_date(self): if self.from_date == self.to_date and self.half_day == 1: self.half_day_date = self.from_date - elif self.half_day == 0: + + if self.half_day == 0: self.half_day_date = None def notify_employee(self): @@ -376,24 +376,32 @@ class LeaveApplication(Document): if expiry_date: self.create_ledger_entry_for_intermediate_allocation_expiry(expiry_date, submit, lwp) else: + raise_exception = True + if frappe.flags.in_patch: + raise_exception=False + args = dict( leaves=self.total_leave_days * -1, from_date=self.from_date, to_date=self.to_date, is_lwp=lwp, - holiday_list=get_holiday_list_for_employee(self.employee) + holiday_list=get_holiday_list_for_employee(self.employee, raise_exception=raise_exception) or '' ) create_leave_ledger_entry(self, args, submit) def create_ledger_entry_for_intermediate_allocation_expiry(self, expiry_date, submit, lwp): ''' splits leave application into two ledger entries to consider expiry of allocation ''' + + raise_exception = True + if frappe.flags.in_patch: + raise_exception=False + args = dict( from_date=self.from_date, to_date=expiry_date, leaves=(date_diff(expiry_date, self.from_date) + 1) * -1, is_lwp=lwp, - holiday_list=get_holiday_list_for_employee(self.employee), - + holiday_list=get_holiday_list_for_employee(self.employee, raise_exception=raise_exception) or '' ) create_leave_ledger_entry(self, args, submit) diff --git a/erpnext/hr/doctype/leave_application/test_leave_application.py b/erpnext/hr/doctype/leave_application/test_leave_application.py index 6e909c3f01..53b7a39e51 100644 --- a/erpnext/hr/doctype/leave_application/test_leave_application.py +++ b/erpnext/hr/doctype/leave_application/test_leave_application.py @@ -10,6 +10,7 @@ from frappe.permissions import clear_user_permissions_for_doctype from frappe.utils import add_days, nowdate, now_datetime, getdate, add_months from erpnext.hr.doctype.leave_type.test_leave_type import create_leave_type from erpnext.hr.doctype.leave_allocation.test_leave_allocation import create_leave_allocation +from erpnext.hr.doctype.leave_policy_assignment.leave_policy_assignment import create_assignment_for_multiple_employees test_dependencies = ["Leave Allocation", "Leave Block List"] @@ -410,25 +411,39 @@ class TestLeaveApplication(unittest.TestCase): self.assertEqual(get_leave_balance_on(employee.name, leave_type.name, nowdate(), add_days(nowdate(), 8)), 21) def test_earned_leaves_creation(self): + + frappe.db.sql('''delete from `tabLeave Period`''') + frappe.db.sql('''delete from `tabLeave Policy Assignment`''') + frappe.db.sql('''delete from `tabLeave Allocation`''') + frappe.db.sql('''delete from `tabLeave Ledger Entry`''') + leave_period = get_leave_period() employee = get_employee() leave_type = 'Test Earned Leave Type' - if not frappe.db.exists('Leave Type', leave_type): - frappe.get_doc(dict( - leave_type_name = leave_type, - doctype = 'Leave Type', - is_earned_leave = 1, - earned_leave_frequency = 'Monthly', - rounding = 0.5, - max_leaves_allowed = 6 - )).insert() + frappe.delete_doc_if_exists("Leave Type", 'Test Earned Leave Type', force=1) + frappe.get_doc(dict( + leave_type_name = leave_type, + doctype = 'Leave Type', + is_earned_leave = 1, + earned_leave_frequency = 'Monthly', + rounding = 0.5, + max_leaves_allowed = 6 + )).insert() + leave_policy = frappe.get_doc({ "doctype": "Leave Policy", "leave_policy_details": [{"leave_type": leave_type, "annual_allocation": 6}] }).insert() - frappe.db.set_value("Employee", employee.name, "leave_policy", leave_policy.name) - allocate_leaves(employee, leave_period, leave_type, 0, eligible_leaves = 12) + data = { + "assignment_based_on": "Leave Period", + "leave_policy": leave_policy.name, + "leave_period": leave_period.name + } + + leave_policy_assignments = create_assignment_for_multiple_employees([employee.name], frappe._dict(data)) + + frappe.get_doc("Leave Policy Assignment", leave_policy_assignments[0]).grant_leave_alloc_for_employee() from erpnext.hr.utils import allocate_earned_leaves i = 0 diff --git a/erpnext/hr/doctype/leave_encashment/leave_encashment.js b/erpnext/hr/doctype/leave_encashment/leave_encashment.js index 71a34226da..81936a4a38 100644 --- a/erpnext/hr/doctype/leave_encashment/leave_encashment.js +++ b/erpnext/hr/doctype/leave_encashment/leave_encashment.js @@ -22,7 +22,12 @@ frappe.ui.form.on('Leave Encashment', { } }, employee: function(frm) { - frm.trigger("get_leave_details_for_encashment"); + if (frm.doc.employee) { + frappe.run_serially([ + () => frm.trigger('get_employee_currency'), + () => frm.trigger('get_leave_details_for_encashment') + ]); + } }, leave_type: function(frm) { frm.trigger("get_leave_details_for_encashment"); @@ -40,5 +45,20 @@ frappe.ui.form.on('Leave Encashment', { } }); } - } + }, + + get_employee_currency: function(frm) { + frappe.call({ + method: "erpnext.payroll.doctype.salary_structure_assignment.salary_structure_assignment.get_employee_currency", + args: { + employee: frm.doc.employee, + }, + callback: function(r) { + if (r.message) { + frm.set_value('currency', r.message); + frm.refresh_fields(); + } + } + }); + }, }); diff --git a/erpnext/hr/doctype/leave_encashment/leave_encashment.json b/erpnext/hr/doctype/leave_encashment/leave_encashment.json index 2cf6ccf5ca..83eeae3adb 100644 --- a/erpnext/hr/doctype/leave_encashment/leave_encashment.json +++ b/erpnext/hr/doctype/leave_encashment/leave_encashment.json @@ -12,6 +12,7 @@ "employee", "employee_name", "department", + "company", "column_break_4", "leave_type", "leave_allocation", @@ -19,9 +20,11 @@ "encashable_days", "amended_from", "payroll", - "encashment_amount", "encashment_date", - "additional_salary" + "additional_salary", + "column_break_14", + "currency", + "encashment_amount" ], "fields": [ { @@ -109,6 +112,7 @@ "in_list_view": 1, "label": "Encashment Amount", "no_copy": 1, + "options": "currency", "read_only": 1 }, { @@ -124,11 +128,34 @@ "no_copy": 1, "options": "Additional Salary", "read_only": 1 + }, + { + "default": "Company:company:default_currency", + "depends_on": "eval:(doc.docstatus==1 || doc.employee)", + "fieldname": "currency", + "fieldtype": "Link", + "label": "Currency", + "options": "Currency", + "print_hide": 1, + "read_only": 1, + "reqd": 1 + }, + { + "fieldname": "column_break_14", + "fieldtype": "Column Break" + }, + { + "fetch_from": "employee.company", + "fieldname": "company", + "fieldtype": "Link", + "label": "Company", + "options": "Company", + "reqd": 1 } ], "is_submittable": 1, "links": [], - "modified": "2019-12-16 11:51:57.732223", + "modified": "2020-11-25 11:56:06.777241", "modified_by": "Administrator", "module": "HR", "name": "Leave Encashment", diff --git a/erpnext/hr/doctype/leave_encashment/leave_encashment.py b/erpnext/hr/doctype/leave_encashment/leave_encashment.py index 8913c648c5..4c1a46522f 100644 --- a/erpnext/hr/doctype/leave_encashment/leave_encashment.py +++ b/erpnext/hr/doctype/leave_encashment/leave_encashment.py @@ -16,10 +16,16 @@ class LeaveEncashment(Document): def validate(self): set_employee_name(self) self.get_leave_details_for_encashment() + self.validate_salary_structure() if not self.encashment_date: self.encashment_date = getdate(nowdate()) + def validate_salary_structure(self): + if not frappe.db.exists('Salary Structure Assignment', {'employee': self.employee}): + frappe.throw(_("There is no Salary Structure assigned to {0}. First assign a Salary Stucture.").format(self.employee)) + + def before_submit(self): if self.encashment_amount <= 0: frappe.throw(_("You can only submit Leave Encashment for a valid encashment amount")) @@ -30,9 +36,10 @@ class LeaveEncashment(Document): additional_salary = frappe.new_doc("Additional Salary") additional_salary.company = frappe.get_value("Employee", self.employee, "company") additional_salary.employee = self.employee + additional_salary.currency = self.currency earning_component = frappe.get_value("Leave Type", self.leave_type, "earning_component") if not earning_component: - frappe.throw(_("Please set Earning Component for Leave type: {0}.".format(self.leave_type))) + frappe.throw(_("Please set Earning Component for Leave type: {0}.").format(self.leave_type)) additional_salary.salary_component = earning_component additional_salary.payroll_date = self.encashment_date additional_salary.amount = self.encashment_amount @@ -98,7 +105,11 @@ class LeaveEncashment(Document): create_leave_ledger_entry(self, args, submit) # create reverse entry for expired leaves - to_date = self.get_leave_allocation().get('to_date') + leave_allocation = self.get_leave_allocation() + if not leave_allocation: + return + + to_date = leave_allocation.get('to_date') if to_date < getdate(nowdate()): args = frappe._dict( leaves=self.encashable_days, diff --git a/erpnext/hr/doctype/leave_encashment/test_leave_encashment.py b/erpnext/hr/doctype/leave_encashment/test_leave_encashment.py index 99f6463416..aafc9642d4 100644 --- a/erpnext/hr/doctype/leave_encashment/test_leave_encashment.py +++ b/erpnext/hr/doctype/leave_encashment/test_leave_encashment.py @@ -9,6 +9,7 @@ from frappe.utils import today, add_months from erpnext.hr.doctype.employee.test_employee import make_employee from erpnext.payroll.doctype.salary_structure.test_salary_structure import make_salary_structure from erpnext.hr.doctype.leave_period.test_leave_period import create_leave_period +from erpnext.hr.doctype.leave_policy_assignment.leave_policy_assignment import create_assignment_for_multiple_employees from erpnext.hr.doctype.leave_policy.test_leave_policy import create_leave_policy\ test_dependencies = ["Leave Type"] @@ -16,6 +17,7 @@ test_dependencies = ["Leave Type"] class TestLeaveEncashment(unittest.TestCase): def setUp(self): frappe.db.sql('''delete from `tabLeave Period`''') + frappe.db.sql('''delete from `tabLeave Policy Assignment`''') frappe.db.sql('''delete from `tabLeave Allocation`''') frappe.db.sql('''delete from `tabLeave Ledger Entry`''') frappe.db.sql('''delete from `tabAdditional Salary`''') @@ -29,14 +31,26 @@ class TestLeaveEncashment(unittest.TestCase): # create employee, salary structure and assignment self.employee = make_employee("test_employee_encashment@example.com") - frappe.db.set_value("Employee", self.employee, "leave_policy", leave_policy.name) + self.leave_period = create_leave_period(add_months(today(), -3), add_months(today(), 3)) + + data = { + "assignment_based_on": "Leave Period", + "leave_policy": leave_policy.name, + "leave_period": self.leave_period.name + } + + leave_policy_assignments = create_assignment_for_multiple_employees([self.employee], frappe._dict(data)) salary_structure = make_salary_structure("Salary Structure for Encashment", "Monthly", self.employee, other_details={"leave_encashment_amount_per_day": 50}) - # create the leave period and assign the leaves - self.leave_period = create_leave_period(add_months(today(), -3), add_months(today(), 3)) - self.leave_period.grant_leave_allocation(employee=self.employee) + #grant Leaves + frappe.get_doc("Leave Policy Assignment", leave_policy_assignments[0]).grant_leave_alloc_for_employee() + + + def tearDown(self): + for dt in ["Leave Period", "Leave Allocation", "Leave Ledger Entry", "Additional Salary", "Leave Encashment", "Salary Structure", "Leave Policy"]: + frappe.db.sql("delete from `tab%s`" % dt) def test_leave_balance_value_and_amount(self): frappe.db.sql('''delete from `tabLeave Encashment`''') @@ -45,7 +59,8 @@ class TestLeaveEncashment(unittest.TestCase): employee=self.employee, leave_type="_Test Leave Type Encashment", leave_period=self.leave_period.name, - payroll_date=today() + payroll_date=today(), + currency="INR" )).insert() self.assertEqual(leave_encashment.leave_balance, 10) @@ -65,7 +80,8 @@ class TestLeaveEncashment(unittest.TestCase): employee=self.employee, leave_type="_Test Leave Type Encashment", leave_period=self.leave_period.name, - payroll_date=today() + payroll_date=today(), + currency="INR" )).insert() leave_encashment.submit() diff --git a/erpnext/hr/doctype/leave_period/leave_period.js b/erpnext/hr/doctype/leave_period/leave_period.js index bad2b8766c..0e88bc1671 100644 --- a/erpnext/hr/doctype/leave_period/leave_period.js +++ b/erpnext/hr/doctype/leave_period/leave_period.js @@ -2,14 +2,6 @@ // For license information, please see license.txt frappe.ui.form.on('Leave Period', { - refresh: (frm)=>{ - frm.set_df_property("grant_leaves", "hidden", frm.doc.__islocal ? 1:0); - if(!frm.is_new()) { - frm.add_custom_button(__('Grant Leaves'), function () { - frm.trigger("grant_leaves"); - }); - } - }, from_date: (frm)=>{ if (frm.doc.from_date && !frm.doc.to_date) { var a_year_from_start = frappe.datetime.add_months(frm.doc.from_date, 12); @@ -22,73 +14,7 @@ frappe.ui.form.on('Leave Period', { "filters": { "company": frm.doc.company, } - } - }) - }, - grant_leaves: function(frm) { - var d = new frappe.ui.Dialog({ - title: __('Grant Leaves'), - fields: [ - { - "label": "Filter Employees By (Optional)", - "fieldname": "sec_break", - "fieldtype": "Section Break", - }, - { - "label": "Employee Grade", - "fieldname": "grade", - "fieldtype": "Link", - "options": "Employee Grade" - }, - { - "label": "Department", - "fieldname": "department", - "fieldtype": "Link", - "options": "Department" - }, - { - "fieldname": "col_break", - "fieldtype": "Column Break", - }, - { - "label": "Designation", - "fieldname": "designation", - "fieldtype": "Link", - "options": "Designation" - }, - { - "label": "Employee", - "fieldname": "employee", - "fieldtype": "Link", - "options": "Employee" - }, - { - "fieldname": "sec_break", - "fieldtype": "Section Break", - }, - { - "label": "Add unused leaves from previous allocations", - "fieldname": "carry_forward", - "fieldtype": "Check" - } - ], - primary_action: function() { - var data = d.get_values(); - - frappe.call({ - doc: frm.doc, - method: "grant_leave_allocation", - args: data, - callback: function(r) { - if(!r.exc) { - d.hide(); - frm.reload_doc(); - } - } - }); - }, - primary_action_label: __('Grant') + }; }); - d.show(); - } + }, }); diff --git a/erpnext/hr/doctype/leave_period/leave_period.py b/erpnext/hr/doctype/leave_period/leave_period.py index 0973ac7198..28a33f6fac 100644 --- a/erpnext/hr/doctype/leave_period/leave_period.py +++ b/erpnext/hr/doctype/leave_period/leave_period.py @@ -7,24 +7,10 @@ import frappe from frappe import _ from frappe.utils import getdate, cstr, add_days, date_diff, getdate, ceil from frappe.model.document import Document -from erpnext.hr.utils import validate_overlap, get_employee_leave_policy +from erpnext.hr.utils import validate_overlap from frappe.utils.background_jobs import enqueue -from six import iteritems class LeavePeriod(Document): - def get_employees(self, args): - conditions, values = [], [] - for field, value in iteritems(args): - if value: - conditions.append("{0}=%s".format(field)) - values.append(value) - - condition_str = " and " + " and ".join(conditions) if len(conditions) else "" - - employees = frappe._dict(frappe.db.sql("select name, date_of_joining from tabEmployee where status='Active' {condition}" #nosec - .format(condition=condition_str), tuple(values))) - - return employees def validate(self): self.validate_dates() @@ -33,96 +19,3 @@ class LeavePeriod(Document): def validate_dates(self): if getdate(self.from_date) >= getdate(self.to_date): frappe.throw(_("To date can not be equal or less than from date")) - - - def grant_leave_allocation(self, grade=None, department=None, designation=None, - employee=None, carry_forward=0): - employee_records = self.get_employees({ - "grade": grade, - "department": department, - "designation": designation, - "name": employee - }) - - if employee_records: - if len(employee_records) > 20: - frappe.enqueue(grant_leave_alloc_for_employees, timeout=600, - employee_records=employee_records, leave_period=self, carry_forward=carry_forward) - else: - grant_leave_alloc_for_employees(employee_records, self, carry_forward) - else: - frappe.msgprint(_("No Employee Found")) - -def grant_leave_alloc_for_employees(employee_records, leave_period, carry_forward=0): - leave_allocations = [] - existing_allocations_for = get_existing_allocations(list(employee_records.keys()), leave_period.name) - leave_type_details = get_leave_type_details() - count = 0 - for employee in employee_records.keys(): - if employee in existing_allocations_for: - continue - count +=1 - leave_policy = get_employee_leave_policy(employee) - if leave_policy: - for leave_policy_detail in leave_policy.leave_policy_details: - if not leave_type_details.get(leave_policy_detail.leave_type).is_lwp: - leave_allocation = create_leave_allocation(employee, leave_policy_detail.leave_type, - leave_policy_detail.annual_allocation, leave_type_details, leave_period, carry_forward, employee_records.get(employee)) - leave_allocations.append(leave_allocation) - frappe.db.commit() - frappe.publish_progress(count*100/len(set(employee_records.keys()) - set(existing_allocations_for)), title = _("Allocating leaves...")) - - if leave_allocations: - frappe.msgprint(_("Leaves has been granted sucessfully")) - -def get_existing_allocations(employees, leave_period): - leave_allocations = frappe.db.sql_list(""" - SELECT DISTINCT - employee - FROM `tabLeave Allocation` - WHERE - leave_period=%s - AND employee in (%s) - AND carry_forward=0 - AND docstatus=1 - """ % ('%s', ', '.join(['%s']*len(employees))), [leave_period] + employees) - if leave_allocations: - frappe.msgprint(_("Skipping Leave Allocation for the following employees, as Leave Allocation records already exists against them. {0}") - .format("\n".join(leave_allocations))) - return leave_allocations - -def get_leave_type_details(): - leave_type_details = frappe._dict() - leave_types = frappe.get_all("Leave Type", - fields=["name", "is_lwp", "is_earned_leave", "is_compensatory", "is_carry_forward", "expire_carry_forwarded_leaves_after_days"]) - for d in leave_types: - leave_type_details.setdefault(d.name, d) - return leave_type_details - -def create_leave_allocation(employee, leave_type, new_leaves_allocated, leave_type_details, leave_period, carry_forward, date_of_joining): - ''' Creates leave allocation for the given employee in the provided leave period ''' - if carry_forward and not leave_type_details.get(leave_type).is_carry_forward: - carry_forward = 0 - - # Calculate leaves at pro-rata basis for employees joining after the beginning of the given leave period - if getdate(date_of_joining) > getdate(leave_period.from_date): - remaining_period = ((date_diff(leave_period.to_date, date_of_joining) + 1) / (date_diff(leave_period.to_date, leave_period.from_date) + 1)) - new_leaves_allocated = ceil(new_leaves_allocated * remaining_period) - - # Earned Leaves and Compensatory Leaves are allocated by scheduler, initially allocate 0 - if leave_type_details.get(leave_type).is_earned_leave == 1 or leave_type_details.get(leave_type).is_compensatory == 1: - new_leaves_allocated = 0 - - allocation = frappe.get_doc(dict( - doctype="Leave Allocation", - employee=employee, - leave_type=leave_type, - from_date=leave_period.from_date, - to_date=leave_period.to_date, - new_leaves_allocated=new_leaves_allocated, - leave_period=leave_period.name, - carry_forward=carry_forward - )) - allocation.save(ignore_permissions = True) - allocation.submit() - return allocation.name \ No newline at end of file diff --git a/erpnext/hr/doctype/leave_period/test_leave_period.py b/erpnext/hr/doctype/leave_period/test_leave_period.py index 1762cf917a..b5857bcd8f 100644 --- a/erpnext/hr/doctype/leave_period/test_leave_period.py +++ b/erpnext/hr/doctype/leave_period/test_leave_period.py @@ -5,43 +5,11 @@ from __future__ import unicode_literals import frappe, erpnext import unittest -from frappe.utils import today, add_months -from erpnext.hr.doctype.employee.test_employee import make_employee -from erpnext.hr.doctype.leave_application.leave_application import get_leave_balance_on test_dependencies = ["Employee", "Leave Type", "Leave Policy"] class TestLeavePeriod(unittest.TestCase): - def setUp(self): - frappe.db.sql("delete from `tabLeave Period`") - - def test_leave_grant(self): - leave_type = "_Test Leave Type" - - # create the leave policy - leave_policy = frappe.get_doc({ - "doctype": "Leave Policy", - "leave_policy_details": [{ - "leave_type": leave_type, - "annual_allocation": 20 - }] - }).insert() - leave_policy.submit() - - # create employee and assign the leave period - employee = "test_leave_period@employee.com" - employee_doc_name = make_employee(employee) - frappe.db.set_value("Employee", employee_doc_name, "leave_policy", leave_policy.name) - - # clear the already allocated leave - frappe.db.sql('''delete from `tabLeave Allocation` where employee=%s''', "test_leave_period@employee.com") - - # create the leave period - leave_period = create_leave_period(add_months(today(), -3), add_months(today(), 3)) - - # test leave_allocation - leave_period.grant_leave_allocation(employee=employee_doc_name) - self.assertEqual(get_leave_balance_on(employee_doc_name, leave_type, today()), 20) + pass def create_leave_period(from_date, to_date, company=None): leave_period = frappe.db.get_value('Leave Period', diff --git a/erpnext/hr/doctype/leave_policy_assignment/__init__.py b/erpnext/hr/doctype/leave_policy_assignment/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/hr/doctype/leave_policy_assignment/leave_policy_assignment.js b/erpnext/hr/doctype/leave_policy_assignment/leave_policy_assignment.js new file mode 100644 index 0000000000..7c32a0dde0 --- /dev/null +++ b/erpnext/hr/doctype/leave_policy_assignment/leave_policy_assignment.js @@ -0,0 +1,72 @@ +// Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +frappe.ui.form.on('Leave Policy Assignment', { + onload: function(frm) { + frm.ignore_doctypes_on_cancel_all = ["Leave Ledger Entry"]; + }, + + refresh: function(frm) { + if (frm.doc.docstatus === 1 && frm.doc.leaves_allocated === 0) { + frm.add_custom_button(__("Grant Leave"), function() { + + frappe.call({ + doc: frm.doc, + method: "grant_leave_alloc_for_employee", + callback: function(r) { + let leave_allocations = r.message; + let msg = frm.events.get_success_message(leave_allocations); + frappe.msgprint(msg); + cur_frm.refresh(); + } + }); + }); + } + }, + + get_success_message: function(leave_allocations) { + let msg = __("Leaves has been granted successfully"); + msg += "
"; + msg += ""; + for (let key in leave_allocations) { + msg += ""; + } + msg += "
"+__('Leave Type')+""+__("Leave Allocation")+""+__("Leaves Granted")+"
"+key+""+leave_allocations[key]["name"]+""+leave_allocations[key]["leaves"]+"
"; + return msg; + }, + + assignment_based_on: function(frm) { + if (frm.doc.assignment_based_on) { + frm.events.set_effective_date(frm); + } else { + frm.set_value("effective_from", ''); + frm.set_value("effective_to", ''); + } + }, + + leave_period: function(frm) { + if (frm.doc.leave_period) { + frm.events.set_effective_date(frm); + } + }, + + set_effective_date: function(frm) { + if (frm.doc.assignment_based_on == "Leave Period" && frm.doc.leave_period) { + frappe.model.with_doc("Leave Period", frm.doc.leave_period, function () { + let from_date = frappe.model.get_value("Leave Period", frm.doc.leave_period, "from_date"); + let to_date = frappe.model.get_value("Leave Period", frm.doc.leave_period, "to_date"); + frm.set_value("effective_from", from_date); + frm.set_value("effective_to", to_date); + + }); + } else if (frm.doc.assignment_based_on == "Joining Date" && frm.doc.employee) { + frappe.model.with_doc("Employee", frm.doc.employee, function () { + let from_date = frappe.model.get_value("Employee", frm.doc.employee, "date_of_joining"); + frm.set_value("effective_from", from_date); + frm.set_value("effective_to", frappe.datetime.add_months(frm.doc.effective_from, 12)); + }); + } + frm.refresh(); + } + +}); diff --git a/erpnext/hr/doctype/leave_policy_assignment/leave_policy_assignment.json b/erpnext/hr/doctype/leave_policy_assignment/leave_policy_assignment.json new file mode 100644 index 0000000000..ecebb3b7d6 --- /dev/null +++ b/erpnext/hr/doctype/leave_policy_assignment/leave_policy_assignment.json @@ -0,0 +1,160 @@ +{ + "actions": [], + "autoname": "HR-LPOL-ASSGN-.#####", + "creation": "2020-08-19 13:02:43.343666", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "employee", + "employee_name", + "company", + "leave_policy", + "carry_forward", + "column_break_5", + "assignment_based_on", + "leave_period", + "effective_from", + "effective_to", + "leaves_allocated", + "amended_from" + ], + "fields": [ + { + "fieldname": "employee", + "fieldtype": "Link", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Employee", + "options": "Employee", + "reqd": 1 + }, + { + "fetch_from": "employee.employee_name", + "fieldname": "employee_name", + "fieldtype": "Data", + "label": "Employee name", + "read_only": 1 + }, + { + "fieldname": "leave_policy", + "fieldtype": "Link", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Leave Policy", + "options": "Leave Policy", + "reqd": 1 + }, + { + "fieldname": "assignment_based_on", + "fieldtype": "Select", + "label": "Assignment based on", + "options": "\nLeave Period\nJoining Date" + }, + { + "depends_on": "eval:doc.assignment_based_on == \"Leave Period\"", + "fieldname": "leave_period", + "fieldtype": "Link", + "label": "Leave Period", + "mandatory_depends_on": "eval:doc.assignment_based_on == \"Leave Period\"", + "options": "Leave Period" + }, + { + "fieldname": "effective_from", + "fieldtype": "Date", + "label": "Effective From", + "read_only_depends_on": "eval:doc.assignment_based_on", + "reqd": 1 + }, + { + "fieldname": "effective_to", + "fieldtype": "Date", + "label": "Effective To", + "read_only_depends_on": "eval:doc.assignment_based_on == \"Leave Period\"", + "reqd": 1 + }, + { + "fetch_from": "employee.company", + "fieldname": "company", + "fieldtype": "Link", + "in_standard_filter": 1, + "label": "Company", + "options": "Company", + "read_only": 1 + }, + { + "fieldname": "column_break_5", + "fieldtype": "Column Break" + }, + { + "fieldname": "amended_from", + "fieldtype": "Link", + "label": "Amended From", + "no_copy": 1, + "options": "Leave Policy Assignment", + "print_hide": 1, + "read_only": 1 + }, + { + "default": "0", + "fieldname": "carry_forward", + "fieldtype": "Check", + "label": "Add unused leaves from previous allocations" + }, + { + "default": "0", + "fieldname": "leaves_allocated", + "fieldtype": "Check", + "hidden": 1, + "label": "Leaves Allocated" + } + ], + "is_submittable": 1, + "links": [], + "modified": "2020-10-15 15:18:15.227848", + "modified_by": "Administrator", + "module": "HR", + "name": "Leave Policy Assignment", + "owner": "Administrator", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "HR Manager", + "share": 1, + "write": 1 + }, + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "HR User", + "share": 1, + "write": 1 + }, + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "write": 1 + } + ], + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 +} \ No newline at end of file diff --git a/erpnext/hr/doctype/leave_policy_assignment/leave_policy_assignment.py b/erpnext/hr/doctype/leave_policy_assignment/leave_policy_assignment.py new file mode 100644 index 0000000000..a5068bc26d --- /dev/null +++ b/erpnext/hr/doctype/leave_policy_assignment/leave_policy_assignment.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe +from frappe.model.document import Document +from frappe import _, bold +from frappe.utils import getdate, date_diff, comma_and, formatdate +from math import ceil +import json +from six import string_types + +class LeavePolicyAssignment(Document): + + def validate(self): + self.validate_policy_assignment_overlap() + self.set_dates() + + def set_dates(self): + if self.assignment_based_on == "Leave Period": + self.effective_from, self.effective_to = frappe.db.get_value("Leave Period", self.leave_period, ["from_date", "to_date"]) + elif self.assignment_based_on == "Joining Date": + self.effective_from = frappe.db.get_value("Employee", self.employee, "date_of_joining") + + def validate_policy_assignment_overlap(self): + leave_policy_assignments = frappe.get_all("Leave Policy Assignment", filters = { + "employee": self.employee, + "name": ("!=", self.name), + "docstatus": 1, + "effective_to": (">=", self.effective_from), + "effective_from": ("<=", self.effective_to) + }) + + if len(leave_policy_assignments): + frappe.throw(_("Leave Policy: {0} already assigned for Employee {1} for period {2} to {3}") + .format(bold(self.leave_policy), bold(self.employee), bold(formatdate(self.effective_from)), bold(formatdate(self.effective_to)))) + + def grant_leave_alloc_for_employee(self): + if self.leaves_allocated: + frappe.throw(_("Leave already have been assigned for this Leave Policy Assignment")) + else: + leave_allocations = {} + leave_type_details = get_leave_type_details() + + leave_policy = frappe.get_doc("Leave Policy", self.leave_policy) + date_of_joining = frappe.db.get_value("Employee", self.employee, "date_of_joining") + + for leave_policy_detail in leave_policy.leave_policy_details: + if not leave_type_details.get(leave_policy_detail.leave_type).is_lwp: + leave_allocation, new_leaves_allocated = self.create_leave_allocation( + leave_policy_detail.leave_type, leave_policy_detail.annual_allocation, + leave_type_details, date_of_joining + ) + + leave_allocations[leave_policy_detail.leave_type] = {"name": leave_allocation, "leaves": new_leaves_allocated} + + self.db_set("leaves_allocated", 1) + return leave_allocations + + def create_leave_allocation(self, leave_type, new_leaves_allocated, leave_type_details, date_of_joining): + # Creates leave allocation for the given employee in the provided leave period + carry_forward = self.carry_forward + if self.carry_forward and not leave_type_details.get(leave_type).is_carry_forward: + carry_forward = 0 + + new_leaves_allocated = self.get_new_leaves(leave_type, new_leaves_allocated, + leave_type_details, date_of_joining) + + allocation = frappe.get_doc(dict( + doctype="Leave Allocation", + employee=self.employee, + leave_type=leave_type, + from_date=self.effective_from, + to_date=self.effective_to, + new_leaves_allocated=new_leaves_allocated, + leave_period=self.leave_period or None, + leave_policy_assignment = self.name, + leave_policy = self.leave_policy, + carry_forward=carry_forward + )) + allocation.save(ignore_permissions = True) + allocation.submit() + return allocation.name, new_leaves_allocated + + def get_new_leaves(self, leave_type, new_leaves_allocated, leave_type_details, date_of_joining): + # Calculate leaves at pro-rata basis for employees joining after the beginning of the given leave period + if getdate(date_of_joining) > getdate(self.effective_from): + remaining_period = ((date_diff(self.effective_to, date_of_joining) + 1) / (date_diff(self.effective_to, self.effective_from) + 1)) + new_leaves_allocated = ceil(new_leaves_allocated * remaining_period) + + # Earned Leaves and Compensatory Leaves are allocated by scheduler, initially allocate 0 + if leave_type_details.get(leave_type).is_earned_leave == 1 or leave_type_details.get(leave_type).is_compensatory == 1: + new_leaves_allocated = 0 + + return new_leaves_allocated + +@frappe.whitelist() +def grant_leave_for_multiple_employees(leave_policy_assignments): + leave_policy_assignments = json.loads(leave_policy_assignments) + not_granted = [] + for assignment in leave_policy_assignments: + try: + frappe.get_doc("Leave Policy Assignment", assignment).grant_leave_alloc_for_employee() + except Exception: + not_granted.append(assignment) + + if len(not_granted): + msg = _("Leave not Granted for Assignments:")+ bold(comma_and(not_granted)) + _(". Please Check documents") + else: + msg = _("Leave granted Successfully") + frappe.msgprint(msg) + +@frappe.whitelist() +def create_assignment_for_multiple_employees(employees, data): + + if isinstance(employees, string_types): + employees= json.loads(employees) + + if isinstance(data, string_types): + data = frappe._dict(json.loads(data)) + + docs_name = [] + for employee in employees: + assignment = frappe.new_doc("Leave Policy Assignment") + assignment.employee = employee + assignment.assignment_based_on = data.assignment_based_on or None + assignment.leave_policy = data.leave_policy + assignment.effective_from = getdate(data.effective_from) or None + assignment.effective_to = getdate(data.effective_to) or None + assignment.leave_period = data.leave_period or None + assignment.carry_forward = data.carry_forward + + assignment.save() + assignment.submit() + docs_name.append(assignment.name) + return docs_name + + +def automatically_allocate_leaves_based_on_leave_policy(): + today = getdate() + automatically_allocate_leaves_based_on_leave_policy = frappe.db.get_single_value( + 'HR Settings', 'automatically_allocate_leaves_based_on_leave_policy' + ) + + pending_assignments = frappe.get_list( + "Leave Policy Assignment", + filters = {"docstatus": 1, "leaves_allocated": 0, "effective_from": today} + ) + + if len(pending_assignments) and automatically_allocate_leaves_based_on_leave_policy: + for assignment in pending_assignments: + frappe.get_doc("Leave Policy Assignment", assignment.name).grant_leave_alloc_for_employee() + + +def get_leave_type_details(): + leave_type_details = frappe._dict() + leave_types = frappe.get_all("Leave Type", + fields=["name", "is_lwp", "is_earned_leave", "is_compensatory", "is_carry_forward", "expire_carry_forwarded_leaves_after_days"]) + for d in leave_types: + leave_type_details.setdefault(d.name, d) + return leave_type_details + diff --git a/erpnext/hr/doctype/leave_policy_assignment/leave_policy_assignment_list.js b/erpnext/hr/doctype/leave_policy_assignment/leave_policy_assignment_list.js new file mode 100644 index 0000000000..468f243885 --- /dev/null +++ b/erpnext/hr/doctype/leave_policy_assignment/leave_policy_assignment_list.js @@ -0,0 +1,138 @@ +frappe.listview_settings['Leave Policy Assignment'] = { + onload: function (list_view) { + let me = this; + list_view.page.add_inner_button(__("Bulk Leave Policy Assignment"), function () { + me.dialog = new frappe.ui.form.MultiSelectDialog({ + doctype: "Employee", + target: cur_list, + setters: { + company: '', + department: '', + }, + data_fields: [{ + fieldname: 'leave_policy', + fieldtype: 'Link', + options: 'Leave Policy', + label: __('Leave Policy'), + reqd: 1 + }, + { + fieldname: 'assignment_based_on', + fieldtype: 'Select', + options: ["", "Leave Period"], + label: __('Assignment Based On'), + onchange: () => { + if (cur_dialog.fields_dict.assignment_based_on.value === "Leave Period") { + cur_dialog.set_df_property("effective_from", "read_only", 1); + cur_dialog.set_df_property("leave_period", "reqd", 1); + cur_dialog.set_df_property("effective_to", "read_only", 1); + } else { + cur_dialog.set_df_property("effective_from", "read_only", 0); + cur_dialog.set_df_property("leave_period", "reqd", 0); + cur_dialog.set_df_property("effective_to", "read_only", 0); + cur_dialog.set_value("effective_from", ""); + cur_dialog.set_value("effective_to", ""); + } + } + }, + { + fieldname: "leave_period", + fieldtype: 'Link', + options: "Leave Period", + label: __('Leave Period'), + depends_on: doc => { + return doc.assignment_based_on == 'Leave Period'; + }, + onchange: () => { + if (cur_dialog.fields_dict.leave_period.value) { + me.set_effective_date(); + } + } + }, + { + fieldtype: "Column Break" + }, + { + fieldname: 'effective_from', + fieldtype: 'Date', + label: __('Effective From'), + reqd: 1 + }, + { + fieldname: 'effective_to', + fieldtype: 'Date', + label: __('Effective To'), + reqd: 1 + }, + { + fieldname: 'carry_forward', + fieldtype: 'Check', + label: __('Add unused leaves from previous allocations') + } + ], + get_query() { + return { + filters: { + status: ['=', 'Active'] + } + }; + }, + add_filters_group: 1, + primary_action_label: "Assign", + action(employees, data) { + frappe.call({ + method: 'erpnext.hr.doctype.leave_policy_assignment.leave_policy_assignment.create_assignment_for_multiple_employees', + async: false, + args: { + employees: employees, + data: data + } + }); + cur_dialog.hide(); + } + }); + }); + + list_view.page.add_inner_button(__("Grant Leaves"), function () { + me.dialog = new frappe.ui.form.MultiSelectDialog({ + doctype: "Leave Policy Assignment", + target: cur_list, + setters: { + company: '', + employee: '', + }, + get_query() { + return { + filters: { + docstatus: ['=', 1], + leaves_allocated: ['=', 0] + } + }; + }, + add_filters_group: 1, + primary_action_label: "Grant Leaves", + action(leave_policy_assignments) { + frappe.call({ + method: 'erpnext.hr.doctype.leave_policy_assignment.leave_policy_assignment.grant_leave_for_multiple_employees', + async: false, + args: { + leave_policy_assignments: leave_policy_assignments + } + }); + me.dialog.hide(); + } + }); + }); + }, + + set_effective_date: function () { + if (cur_dialog.fields_dict.assignment_based_on.value === "Leave Period" && cur_dialog.fields_dict.leave_period.value) { + frappe.model.with_doc("Leave Period", cur_dialog.fields_dict.leave_period.value, function () { + let from_date = frappe.model.get_value("Leave Period", cur_dialog.fields_dict.leave_period.value, "from_date"); + let to_date = frappe.model.get_value("Leave Period", cur_dialog.fields_dict.leave_period.value, "to_date"); + cur_dialog.set_value("effective_from", from_date); + cur_dialog.set_value("effective_to", to_date); + }); + } + } +}; \ No newline at end of file diff --git a/erpnext/hr/doctype/leave_policy_assignment/test_leave_policy_assignment.py b/erpnext/hr/doctype/leave_policy_assignment/test_leave_policy_assignment.py new file mode 100644 index 0000000000..c7bc6fb775 --- /dev/null +++ b/erpnext/hr/doctype/leave_policy_assignment/test_leave_policy_assignment.py @@ -0,0 +1,103 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals + +import frappe +import unittest +from erpnext.hr.doctype.leave_application.test_leave_application import get_leave_period, get_employee +from erpnext.hr.doctype.leave_policy_assignment.leave_policy_assignment import create_assignment_for_multiple_employees +from erpnext.hr.doctype.leave_policy.test_leave_policy import create_leave_policy + +class TestLeavePolicyAssignment(unittest.TestCase): + + def setUp(self): + for doctype in ["Leave Application", "Leave Allocation", "Leave Policy Assignment", "Leave Ledger Entry"]: + frappe.db.sql("delete from `tab{0}`".format(doctype)) #nosec + + def test_grant_leaves(self): + leave_period = get_leave_period() + employee = get_employee() + + # create the leave policy with leave type "_Test Leave Type", allocation = 10 + leave_policy = create_leave_policy() + leave_policy.submit() + + + data = { + "assignment_based_on": "Leave Period", + "leave_policy": leave_policy.name, + "leave_period": leave_period.name + } + + leave_policy_assignments = create_assignment_for_multiple_employees([employee.name], frappe._dict(data)) + + leave_policy_assignment_doc = frappe.get_doc("Leave Policy Assignment", leave_policy_assignments[0]) + leave_policy_assignment_doc.grant_leave_alloc_for_employee() + leave_policy_assignment_doc.reload() + + self.assertEqual(leave_policy_assignment_doc.leaves_allocated, 1) + + leave_allocation = frappe.get_list("Leave Allocation", filters={ + "employee": employee.name, + "leave_policy":leave_policy.name, + "leave_policy_assignment": leave_policy_assignments[0], + "docstatus": 1})[0] + + leave_alloc_doc = frappe.get_doc("Leave Allocation", leave_allocation) + + self.assertEqual(leave_alloc_doc.new_leaves_allocated, 10) + self.assertEqual(leave_alloc_doc.leave_type, "_Test Leave Type") + self.assertEqual(leave_alloc_doc.from_date, leave_period.from_date) + self.assertEqual(leave_alloc_doc.to_date, leave_period.to_date) + self.assertEqual(leave_alloc_doc.leave_policy, leave_policy.name) + self.assertEqual(leave_alloc_doc.leave_policy_assignment, leave_policy_assignments[0]) + + def test_allow_to_grant_all_leave_after_cancellation_of_every_leave_allocation(self): + leave_period = get_leave_period() + employee = get_employee() + + # create the leave policy with leave type "_Test Leave Type", allocation = 10 + leave_policy = create_leave_policy() + leave_policy.submit() + + + data = { + "assignment_based_on": "Leave Period", + "leave_policy": leave_policy.name, + "leave_period": leave_period.name + } + + leave_policy_assignments = create_assignment_for_multiple_employees([employee.name], frappe._dict(data)) + + leave_policy_assignment_doc = frappe.get_doc("Leave Policy Assignment", leave_policy_assignments[0]) + leave_policy_assignment_doc.grant_leave_alloc_for_employee() + leave_policy_assignment_doc.reload() + + + # every leave is allocated no more leave can be granted now + self.assertEqual(leave_policy_assignment_doc.leaves_allocated, 1) + + leave_allocation = frappe.get_list("Leave Allocation", filters={ + "employee": employee.name, + "leave_policy":leave_policy.name, + "leave_policy_assignment": leave_policy_assignments[0], + "docstatus": 1})[0] + + leave_alloc_doc = frappe.get_doc("Leave Allocation", leave_allocation) + + # User all allowed to grant leave when there is no allocation against assignment + leave_alloc_doc.cancel() + leave_alloc_doc.delete() + + leave_policy_assignment_doc.reload() + + + # User are now allowed to grant leave + self.assertEqual(leave_policy_assignment_doc.leaves_allocated, 0) + + def tearDown(self): + for doctype in ["Leave Application", "Leave Allocation", "Leave Policy Assignment", "Leave Ledger Entry"]: + frappe.db.sql("delete from `tab{0}`".format(doctype)) #nosec + + diff --git a/erpnext/hr/doctype/leave_type/leave_type.json b/erpnext/hr/doctype/leave_type/leave_type.json index 0af832f903..a2092919f8 100644 --- a/erpnext/hr/doctype/leave_type/leave_type.json +++ b/erpnext/hr/doctype/leave_type/leave_type.json @@ -15,6 +15,8 @@ "column_break_3", "is_carry_forward", "is_lwp", + "is_ppl", + "fraction_of_daily_salary_per_leave", "is_optional_leave", "allow_negative", "include_holiday", @@ -31,6 +33,7 @@ "is_earned_leave", "earned_leave_frequency", "column_break_22", + "based_on_date_of_joining", "rounding" ], "fields": [ @@ -77,6 +80,7 @@ }, { "default": "0", + "depends_on": "eval:doc.is_ppl == 0", "fieldname": "is_lwp", "fieldtype": "Check", "label": "Is Leave Without Pay" @@ -183,12 +187,33 @@ { "fieldname": "column_break_22", "fieldtype": "Column Break" + }, + { + "default": "0", + "depends_on": "eval:doc.is_earned_leave", + "description": "If checked, leave will be granted on the day of joining every month.", + "fieldname": "based_on_date_of_joining", + "fieldtype": "Check", + "label": "Based On Date Of Joining" + }, + { + "depends_on": "eval:doc.is_lwp == 0", + "fieldname": "is_ppl", + "fieldtype": "Check", + "label": "Is Partially Paid Leave" + }, + { + "depends_on": "eval:doc.is_ppl == 1", + "fieldname": "fraction_of_daily_salary_per_leave", + "fieldtype": "Float", + "label": "Fraction of Daily Salary per Leave", + "mandatory_depends_on": "eval:doc.is_ppl == 1" } ], "icon": "fa fa-flag", "idx": 1, "links": [], - "modified": "2019-12-12 12:48:37.780254", + "modified": "2020-10-15 15:49:47.555105", "modified_by": "Administrator", "module": "HR", "name": "Leave Type", diff --git a/erpnext/hr/doctype/leave_type/leave_type.py b/erpnext/hr/doctype/leave_type/leave_type.py index c0d1296841..21f180b857 100644 --- a/erpnext/hr/doctype/leave_type/leave_type.py +++ b/erpnext/hr/doctype/leave_type/leave_type.py @@ -21,3 +21,9 @@ class LeaveType(Document): leave_allocation = [l['name'] for l in leave_allocation] if leave_allocation: frappe.throw(_('Leave application is linked with leave allocations {0}. Leave application cannot be set as leave without pay').format(", ".join(leave_allocation))) #nosec + + if self.is_lwp and self.is_ppl: + frappe.throw(_("Leave Type can be either without pay or partial pay")) + + if self.is_ppl and (self.fraction_of_daily_salary_per_leave < 0 or self.fraction_of_daily_salary_per_leave > 1): + frappe.throw(_("The fraction of Daily Salary per Leave should be between 0 and 1")) diff --git a/erpnext/hr/doctype/leave_type/test_leave_type.py b/erpnext/hr/doctype/leave_type/test_leave_type.py index 0c4f435860..7fef2975c8 100644 --- a/erpnext/hr/doctype/leave_type/test_leave_type.py +++ b/erpnext/hr/doctype/leave_type/test_leave_type.py @@ -18,9 +18,14 @@ def create_leave_type(**args): "allow_encashment": args.allow_encashment or 0, "is_earned_leave": args.is_earned_leave or 0, "is_lwp": args.is_lwp or 0, + "is_ppl":args.is_ppl or 0, "is_carry_forward": args.is_carry_forward or 0, "expire_carry_forwarded_leaves_after_days": args.expire_carry_forwarded_leaves_after_days or 0, "encashment_threshold_days": args.encashment_threshold_days or 5, "earning_component": "Leave Encashment" }) + + if leave_type.is_ppl: + leave_type.fraction_of_daily_salary_per_leave = args.fraction_of_daily_salary_per_leave or 0.5 + return leave_type \ No newline at end of file diff --git a/erpnext/hr/doctype/upload_attendance/upload_attendance.js b/erpnext/hr/doctype/upload_attendance/upload_attendance.js index 9df2948a15..29aa85484a 100644 --- a/erpnext/hr/doctype/upload_attendance/upload_attendance.js +++ b/erpnext/hr/doctype/upload_attendance/upload_attendance.js @@ -24,10 +24,10 @@ erpnext.hr.AttendanceControlPanel = frappe.ui.form.Controller.extend({ } window.location.href = repl(frappe.request.url + '?cmd=%(cmd)s&from_date=%(from_date)s&to_date=%(to_date)s', { - cmd: "erpnext.hr.doctype.upload_attendance.upload_attendance.get_template", - from_date: this.frm.doc.att_fr_date, - to_date: this.frm.doc.att_to_date, - }); + cmd: "erpnext.hr.doctype.upload_attendance.upload_attendance.get_template", + from_date: this.frm.doc.att_fr_date, + to_date: this.frm.doc.att_to_date, + }); }, show_upload() { diff --git a/erpnext/hr/doctype/upload_attendance/upload_attendance.py b/erpnext/hr/doctype/upload_attendance/upload_attendance.py index edf05e827b..674c8e3eb4 100644 --- a/erpnext/hr/doctype/upload_attendance/upload_attendance.py +++ b/erpnext/hr/doctype/upload_attendance/upload_attendance.py @@ -28,7 +28,12 @@ def get_template(): w = UnicodeWriter() w = add_header(w) - w = add_data(w, args) + try: + w = add_data(w, args) + except Exception as e: + frappe.clear_messages() + frappe.respond_as_web_page("Holiday List Missing", html=e) + return # write out response as a type csv frappe.response['result'] = cstr(w.getvalue()) diff --git a/erpnext/hr/utils.py b/erpnext/hr/utils.py index 8d95924681..d700e7fccf 100644 --- a/erpnext/hr/utils.py +++ b/erpnext/hr/utils.py @@ -215,19 +215,6 @@ def throw_overlap_error(doc, exists_for, overlap_doc, from_date, to_date): + _(") for {0}").format(exists_for) frappe.throw(msg) -def get_employee_leave_policy(employee): - leave_policy = frappe.db.get_value("Employee", employee, "leave_policy") - if not leave_policy: - employee_grade = frappe.db.get_value("Employee", employee, "grade") - if employee_grade: - leave_policy = frappe.db.get_value("Employee Grade", employee_grade, "default_leave_policy") - if not leave_policy: - frappe.throw(_("Employee {0} of grade {1} have no default leave policy").format(employee, employee_grade)) - if leave_policy: - return frappe.get_doc("Leave Policy", leave_policy) - else: - frappe.throw(_("Please set leave policy for employee {0} in Employee / Grade record").format(employee)) - def validate_duplicate_exemption_for_payroll_period(doctype, docname, payroll_period, employee): existing_record = frappe.db.exists(doctype, { "payroll_period": payroll_period, @@ -300,43 +287,68 @@ def generate_leave_encashment(): def allocate_earned_leaves(): '''Allocate earned leaves to Employees''' - e_leave_types = frappe.get_all("Leave Type", - fields=["name", "max_leaves_allowed", "earned_leave_frequency", "rounding"], - filters={'is_earned_leave' : 1}) + e_leave_types = get_earned_leaves() today = getdate() - divide_by_frequency = {"Yearly": 1, "Half-Yearly": 6, "Quarterly": 4, "Monthly": 12} for e_leave_type in e_leave_types: - leave_allocations = frappe.db.sql("""select name, employee, from_date, to_date from `tabLeave Allocation` where %s - between from_date and to_date and docstatus=1 and leave_type=%s""", (today, e_leave_type.name), as_dict=1) + + leave_allocations = get_leave_allocations(today, e_leave_type.name) + for allocation in leave_allocations: - leave_policy = get_employee_leave_policy(allocation.employee) - if not leave_policy: + + if not allocation.leave_policy_assignment and not allocation.leave_policy: continue - if not e_leave_type.earned_leave_frequency == "Monthly": - if not check_frequency_hit(allocation.from_date, today, e_leave_type.earned_leave_frequency): - continue + + leave_policy = allocation.leave_policy if allocation.leave_policy else frappe.db.get_value( + "Leave Policy Assignment", allocation.leave_policy_assignment, ["leave_policy"]) + annual_allocation = frappe.db.get_value("Leave Policy Detail", filters={ - 'parent': leave_policy.name, + 'parent': leave_policy, 'leave_type': e_leave_type.name }, fieldname=['annual_allocation']) - if annual_allocation: - earned_leaves = flt(annual_allocation) / divide_by_frequency[e_leave_type.earned_leave_frequency] - if e_leave_type.rounding == "0.5": - earned_leaves = round(earned_leaves * 2) / 2 - else: - earned_leaves = round(earned_leaves) - allocation = frappe.get_doc('Leave Allocation', allocation.name) - new_allocation = flt(allocation.total_leaves_allocated) + flt(earned_leaves) + from_date=allocation.from_date - if new_allocation > e_leave_type.max_leaves_allowed and e_leave_type.max_leaves_allowed > 0: - new_allocation = e_leave_type.max_leaves_allowed + if e_leave_type.based_on_date_of_joining_date: + from_date = frappe.db.get_value("Employee", allocation.employee, "date_of_joining") - if new_allocation == allocation.total_leaves_allocated: - continue - allocation.db_set("total_leaves_allocated", new_allocation, update_modified=False) - create_additional_leave_ledger_entry(allocation, earned_leaves, today) + if check_effective_date(from_date, today, e_leave_type.earned_leave_frequency, e_leave_type.based_on_date_of_joining_date): + update_previous_leave_allocation(allocation, annual_allocation, e_leave_type) + +def update_previous_leave_allocation(allocation, annual_allocation, e_leave_type): + divide_by_frequency = {"Yearly": 1, "Half-Yearly": 6, "Quarterly": 4, "Monthly": 12} + if annual_allocation: + earned_leaves = flt(annual_allocation) / divide_by_frequency[e_leave_type.earned_leave_frequency] + if e_leave_type.rounding == "0.5": + earned_leaves = round(earned_leaves * 2) / 2 + else: + earned_leaves = round(earned_leaves) + + allocation = frappe.get_doc('Leave Allocation', allocation.name) + new_allocation = flt(allocation.total_leaves_allocated) + flt(earned_leaves) + + if new_allocation > e_leave_type.max_leaves_allowed and e_leave_type.max_leaves_allowed > 0: + new_allocation = e_leave_type.max_leaves_allowed + + if new_allocation != allocation.total_leaves_allocated: + allocation.db_set("total_leaves_allocated", new_allocation, update_modified=False) + today_date = today() + create_additional_leave_ledger_entry(allocation, earned_leaves, today_date) + + +def get_leave_allocations(date, leave_type): + return frappe.db.sql("""select name, employee, from_date, to_date, leave_policy_assignment, leave_policy + from `tabLeave Allocation` + where + %s between from_date and to_date and docstatus=1 + and leave_type=%s""", + (date, leave_type), as_dict=1) + + +def get_earned_leaves(): + return frappe.get_all("Leave Type", + fields=["name", "max_leaves_allowed", "earned_leave_frequency", "rounding", "based_on_date_of_joining"], + filters={'is_earned_leave' : 1}) def create_additional_leave_ledger_entry(allocation, leaves, date): ''' Create leave ledger entry for leave types ''' @@ -345,24 +357,32 @@ def create_additional_leave_ledger_entry(allocation, leaves, date): allocation.unused_leaves = 0 allocation.create_leave_ledger_entry() -def check_frequency_hit(from_date, to_date, frequency): - '''Return True if current date matches frequency''' - from_dt = get_datetime(from_date) - to_dt = get_datetime(to_date) +def check_effective_date(from_date, to_date, frequency, based_on_date_of_joining_date): + import calendar from dateutil import relativedelta - rd = relativedelta.relativedelta(to_dt, from_dt) - months = rd.months - if frequency == "Quarterly": - if not months % 3: + + from_date = get_datetime(from_date) + to_date = get_datetime(to_date) + rd = relativedelta.relativedelta(to_date, from_date) + #last day of month + last_day = calendar.monthrange(to_date.year, to_date.month)[1] + + if (from_date.day == to_date.day and based_on_date_of_joining_date) or (not based_on_date_of_joining_date and to_date.day == last_day): + if frequency == "Monthly": return True - elif frequency == "Half-Yearly": - if not months % 6: + elif frequency == "Quarterly" and rd.months % 3: return True - elif frequency == "Yearly": - if not months % 12: + elif frequency == "Half-Yearly" and rd.months % 6: return True + elif frequency == "Yearly" and rd.months % 12: + return True + + if frappe.flags.in_test: + return True + return False + def get_salary_assignment(employee, date): assignment = frappe.db.sql(""" select * from `tabSalary Structure Assignment` @@ -454,3 +474,10 @@ def get_previous_claimed_amount(employee, payroll_period, non_pro_rata=False, co if sum_of_claimed_amount and flt(sum_of_claimed_amount[0].total_amount) > 0: total_claimed_amount = sum_of_claimed_amount[0].total_amount return total_claimed_amount + +def grant_leaves_automatically(): + automatically_allocate_leaves_based_on_leave_policy = frappe.db.get_singles_value("HR Settings", "automatically_allocate_leaves_based_on_leave_policy") + if automatically_allocate_leaves_based_on_leave_policy: + lpa = frappe.db.get_all("Leave Policy Assignment", filters={"effective_from": getdate(), "docstatus": 1, "leaves_allocated":0}) + for assignment in lpa: + frappe.get_doc("Leave Policy Assignment", assignment.name).grant_leave_alloc_for_employee() diff --git a/erpnext/loan_management/desk_page/loan/loan.json b/erpnext/loan_management/desk_page/loan/loan.json index 3bdd1ce56e..fc59c19325 100644 --- a/erpnext/loan_management/desk_page/loan/loan.json +++ b/erpnext/loan_management/desk_page/loan/loan.json @@ -3,7 +3,7 @@ { "hidden": 0, "label": "Loan", - "links": "[\n {\n \"description\": \"Loan Type for interest and penalty rates\",\n \"label\": \"Loan Type\",\n \"name\": \"Loan Type\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Loan Applications from customers and employees.\",\n \"label\": \"Loan Application\",\n \"name\": \"Loan Application\",\n \"type\": \"doctype\"\n },\n { \"dependencies\": [\n \"Loan Type\"\n ],\n \"description\": \"Loans provided to customers and employees.\",\n \"label\": \"Loan\",\n \"name\": \"Loan\",\n \"type\": \"doctype\"\n }\n]" + "links": "[\n {\n \"description\": \"Loan Type for interest and penalty rates\",\n \"label\": \"Loan Type\",\n \"name\": \"Loan Type\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Loan Applications from customers and employees.\",\n \"label\": \"Loan Application\",\n \"name\": \"Loan Application\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Loans provided to customers and employees.\",\n \"label\": \"Loan\",\n \"name\": \"Loan\",\n \"type\": \"doctype\"\n }\n]" }, { "hidden": 0, @@ -13,7 +13,7 @@ { "hidden": 0, "label": "Disbursement and Repayment", - "links": "[\n {\n \"label\": \"Loan Disbursement\",\n \"name\": \"Loan Disbursement\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Loan Repayment\",\n \"name\": \"Loan Repayment\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Loan Interest Accrual\",\n \"name\": \"Loan Interest Accrual\",\n \"type\": \"doctype\"\n }\n]" + "links": "[\n {\n \"label\": \"Loan Disbursement\",\n \"name\": \"Loan Disbursement\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Loan Repayment\",\n \"name\": \"Loan Repayment\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Loan Write Off\",\n \"name\": \"Loan Write Off\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Loan Interest Accrual\",\n \"name\": \"Loan Interest Accrual\",\n \"type\": \"doctype\"\n }\n]" }, { "hidden": 0, @@ -34,10 +34,11 @@ "docstatus": 0, "doctype": "Desk Page", "extends_another_page": 0, + "hide_custom": 0, "idx": 0, "is_standard": 1, "label": "Loan", - "modified": "2020-06-07 19:42:14.947902", + "modified": "2020-10-17 12:59:50.336085", "modified_by": "Administrator", "module": "Loan Management", "name": "Loan", diff --git a/erpnext/loan_management/doctype/loan/loan.js b/erpnext/loan_management/doctype/loan/loan.js index 9b4c21770e..28af3a9c41 100644 --- a/erpnext/loan_management/doctype/loan/loan.js +++ b/erpnext/loan_management/doctype/loan/loan.js @@ -7,10 +7,14 @@ frappe.ui.form.on('Loan', { setup: function(frm) { frm.make_methods = { 'Loan Disbursement': function() { frm.trigger('make_loan_disbursement') }, - 'Loan Security Unpledge': function() { frm.trigger('create_loan_security_unpledge') } + 'Loan Security Unpledge': function() { frm.trigger('create_loan_security_unpledge') }, + 'Loan Write Off': function() { frm.trigger('make_loan_write_off_entry') } } }, onload: function (frm) { + // Ignore loan security pledge on cancel of loan + frm.ignore_doctypes_on_cancel_all = ["Loan Security Pledge"]; + frm.set_query("loan_application", function () { return { "filters": { @@ -21,6 +25,14 @@ frappe.ui.form.on('Loan', { }; }); + frm.set_query("loan_type", function () { + return { + "filters": { + "docstatus": 1 + } + }; + }); + $.each(["penalty_income_account", "interest_income_account"], function(i, field) { frm.set_query(field, function () { return { @@ -49,24 +61,33 @@ frappe.ui.form.on('Loan', { refresh: function (frm) { if (frm.doc.docstatus == 1) { - if (frm.doc.status == "Sanctioned" || frm.doc.status == 'Partially Disbursed') { + if (["Disbursed", "Partially Disbursed"].includes(frm.doc.status) && (!frm.doc.repay_from_salary)) { + frm.add_custom_button(__('Request Loan Closure'), function() { + frm.trigger("request_loan_closure"); + },__('Status')); + + frm.add_custom_button(__('Loan Repayment'), function() { + frm.trigger("make_repayment_entry"); + },__('Create')); + } + + if (["Sanctioned", "Partially Disbursed"].includes(frm.doc.status)) { frm.add_custom_button(__('Loan Disbursement'), function() { frm.trigger("make_loan_disbursement"); },__('Create')); } - if (["Disbursed", "Partially Disbursed"].includes(frm.doc.status) && (!frm.doc.repay_from_salary)) { - frm.add_custom_button(__('Loan Repayment'), function() { - frm.trigger("make_repayment_entry"); - },__('Create')); - - } - if (frm.doc.status == "Loan Closure Requested") { frm.add_custom_button(__('Loan Security Unpledge'), function() { frm.trigger("create_loan_security_unpledge"); },__('Create')); } + + if (["Loan Closure Requested", "Disbursed", "Partially Disbursed"].includes(frm.doc.status)) { + frm.add_custom_button(__('Loan Write Off'), function() { + frm.trigger("make_loan_write_off_entry"); + },__('Create')); + } } frm.trigger("toggle_fields"); }, @@ -117,6 +138,38 @@ frappe.ui.form.on('Loan', { }) }, + make_loan_write_off_entry: function(frm) { + frappe.call({ + args: { + "loan": frm.doc.name, + "company": frm.doc.company, + "as_dict": 1 + }, + method: "erpnext.loan_management.doctype.loan.loan.make_loan_write_off", + callback: function (r) { + if (r.message) + var doc = frappe.model.sync(r.message)[0]; + frappe.set_route("Form", doc.doctype, doc.name); + } + }) + }, + + request_loan_closure: function(frm) { + frappe.confirm(__("Do you really want to close this loan"), + function() { + frappe.call({ + args: { + 'loan': frm.doc.name + }, + method: "erpnext.loan_management.doctype.loan.loan.request_loan_closure", + callback: function() { + frm.reload_doc(); + } + }); + } + ); + }, + create_loan_security_unpledge: function(frm) { frappe.call({ method: "erpnext.loan_management.doctype.loan.loan.unpledge_security", diff --git a/erpnext/loan_management/doctype/loan/loan.json b/erpnext/loan_management/doctype/loan/loan.json index aa5e21b426..acf09f5c03 100644 --- a/erpnext/loan_management/doctype/loan/loan.json +++ b/erpnext/loan_management/doctype/loan/loan.json @@ -26,11 +26,11 @@ "disbursed_amount", "column_break_11", "maximum_loan_amount", - "is_term_loan", "repayment_method", "repayment_periods", "monthly_repayment_amount", "repayment_start_date", + "is_term_loan", "account_info", "mode_of_payment", "payment_account", @@ -43,6 +43,7 @@ "section_break_17", "total_payment", "total_principal_paid", + "written_off_amount", "column_break_19", "total_interest_payable", "total_amount_paid", @@ -75,6 +76,7 @@ "fieldname": "loan_application", "fieldtype": "Link", "label": "Loan Application", + "no_copy": 1, "options": "Loan Application" }, { @@ -134,6 +136,7 @@ "fieldname": "loan_amount", "fieldtype": "Currency", "label": "Loan Amount", + "non_negative": 1, "options": "Company:company:default_currency" }, { @@ -148,7 +151,8 @@ "depends_on": "eval:doc.status==\"Disbursed\"", "fieldname": "disbursement_date", "fieldtype": "Date", - "label": "Disbursement Date" + "label": "Disbursement Date", + "no_copy": 1 }, { "depends_on": "is_term_loan", @@ -252,6 +256,7 @@ "fieldname": "total_payment", "fieldtype": "Currency", "label": "Total Payable Amount", + "no_copy": 1, "options": "Company:company:default_currency", "read_only": 1 }, @@ -265,6 +270,7 @@ "fieldname": "total_interest_payable", "fieldtype": "Currency", "label": "Total Interest Payable", + "no_copy": 1, "options": "Company:company:default_currency", "read_only": 1 }, @@ -273,6 +279,7 @@ "fieldname": "total_amount_paid", "fieldtype": "Currency", "label": "Total Amount Paid", + "no_copy": 1, "options": "Company:company:default_currency", "read_only": 1 }, @@ -289,8 +296,7 @@ "default": "0", "fieldname": "is_secured_loan", "fieldtype": "Check", - "label": "Is Secured Loan", - "read_only": 1 + "label": "Is Secured Loan" }, { "default": "0", @@ -313,6 +319,7 @@ "fieldname": "total_principal_paid", "fieldtype": "Currency", "label": "Total Principal Paid", + "no_copy": 1, "options": "Company:company:default_currency", "read_only": 1 }, @@ -320,21 +327,33 @@ "fieldname": "disbursed_amount", "fieldtype": "Currency", "label": "Disbursed Amount", + "no_copy": 1, "options": "Company:company:default_currency", "read_only": 1 }, { + "depends_on": "eval:doc.is_secured_loan", "fetch_from": "loan_application.maximum_loan_amount", "fieldname": "maximum_loan_amount", "fieldtype": "Currency", "label": "Maximum Loan Amount", + "no_copy": 1, + "options": "Company:company:default_currency", + "read_only": 1 + }, + { + "fieldname": "written_off_amount", + "fieldtype": "Currency", + "label": "Written Off Amount", + "no_copy": 1, "options": "Company:company:default_currency", "read_only": 1 } ], + "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2020-08-01 12:36:11.255233", + "modified": "2020-11-24 12:27:23.208240", "modified_by": "Administrator", "module": "Loan Management", "name": "Loan", diff --git a/erpnext/loan_management/doctype/loan/loan.py b/erpnext/loan_management/doctype/loan/loan.py index d1b7589a17..cd40a665d4 100644 --- a/erpnext/loan_management/doctype/loan/loan.py +++ b/erpnext/loan_management/doctype/loan/loan.py @@ -9,9 +9,12 @@ from frappe import _ from frappe.utils import flt, rounded, add_months, nowdate, getdate, now_datetime from erpnext.loan_management.doctype.loan_security_unpledge.loan_security_unpledge import get_pledged_security_qty from erpnext.controllers.accounts_controller import AccountsController +from erpnext.loan_management.doctype.loan_repayment.loan_repayment import calculate_amounts class Loan(AccountsController): def validate(self): + if self.applicant_type == 'Employee' and self.repay_from_salary: + validate_employee_currency_with_company_currency(self.applicant, self.company) self.set_loan_amount() self.validate_loan_amount() self.set_missing_fields() @@ -137,9 +140,12 @@ class Loan(AccountsController): }) def unlink_loan_security_pledge(self): - frappe.db.sql("""UPDATE `tabLoan Security Pledge` SET - loan = '', status = 'Unpledged' - where name = %s """, (self.loan_security_pledge)) + pledges = frappe.get_all('Loan Security Pledge', fields=['name'], filters={'loan': self.name}) + pledge_list = [d.name for d in pledges] + if pledge_list: + frappe.db.sql("""UPDATE `tabLoan Security Pledge` SET + loan = '', status = 'Unpledged' + where name in (%s) """ % (', '.join(['%s']*len(pledge_list))), tuple(pledge_list)) #nosec def update_total_amount_paid(doc): total_amount_paid = 0 @@ -182,6 +188,24 @@ def get_monthly_repayment_amount(repayment_method, loan_amount, rate_of_interest monthly_repayment_amount = math.ceil(flt(loan_amount) / repayment_periods) return monthly_repayment_amount +@frappe.whitelist() +def request_loan_closure(loan, posting_date=None): + if not posting_date: + posting_date = getdate() + + amounts = calculate_amounts(loan, posting_date) + pending_amount = amounts['payable_amount'] + amounts['unaccrued_interest'] + + loan_type = frappe.get_value('Loan', loan, 'loan_type') + write_off_limit = frappe.get_value('Loan Type', loan_type, 'write_off_amount') + + # checking greater than 0 as there may be some minor precision error + if pending_amount < write_off_limit: + # update status as loan closure requested + frappe.db.set_value('Loan', loan, 'status', 'Loan Closure Requested') + else: + frappe.throw(_("Cannot close loan as there is an outstanding of {0}").format(pending_amount)) + @frappe.whitelist() def get_loan_application(loan_application): loan = frappe.get_doc("Loan Application", loan_application) @@ -200,6 +224,7 @@ def make_loan_disbursement(loan, company, applicant_type, applicant, pending_amo disbursement_entry.applicant = applicant disbursement_entry.company = company disbursement_entry.disbursement_date = nowdate() + disbursement_entry.posting_date = nowdate() disbursement_entry.disbursed_amount = pending_amount if as_dict: @@ -222,6 +247,38 @@ def make_repayment_entry(loan, applicant_type, applicant, loan_type, company, as else: return repayment_entry +@frappe.whitelist() +def make_loan_write_off(loan, company=None, posting_date=None, amount=0, as_dict=0): + if not company: + company = frappe.get_value('Loan', loan, 'company') + + if not posting_date: + posting_date = getdate() + + amounts = calculate_amounts(loan, posting_date) + pending_amount = amounts['pending_principal_amount'] + + if amount and (amount > pending_amount): + frappe.throw('Write Off amount cannot be greater than pending loan amount') + + if not amount: + amount = pending_amount + + # get default write off account from company master + write_off_account = frappe.get_value('Company', company, 'write_off_account') + + write_off = frappe.new_doc('Loan Write Off') + write_off.loan = loan + write_off.posting_date = posting_date + write_off.write_off_account = write_off_account + write_off.write_off_amount = amount + write_off.save() + + if as_dict: + return write_off.as_dict() + else: + return write_off + @frappe.whitelist() def unpledge_security(loan=None, loan_security_pledge=None, as_dict=0, save=0, submit=0, approve=0): # if loan is passed it will be considered as full unpledge @@ -274,5 +331,14 @@ def create_loan_security_unpledge(unpledge_map, loan, company, applicant_type, a return unpledge_request - - +def validate_employee_currency_with_company_currency(applicant, company): + from erpnext.payroll.doctype.salary_structure_assignment.salary_structure_assignment import get_employee_currency + if not applicant: + frappe.throw(_("Please select Applicant")) + if not company: + frappe.throw(_("Please select Company")) + employee_currency = get_employee_currency(applicant) + company_currency = erpnext.get_company_currency(company) + if employee_currency != company_currency: + frappe.throw(_("Loan cannot be repayed from salary for Employee {0} because salary is processed in currency {1}") + .format(applicant, employee_currency)) diff --git a/erpnext/loan_management/doctype/loan/loan_dashboard.py b/erpnext/loan_management/doctype/loan/loan_dashboard.py index 90d5ae2650..7a8190f745 100644 --- a/erpnext/loan_management/doctype/loan/loan_dashboard.py +++ b/erpnext/loan_management/doctype/loan/loan_dashboard.py @@ -13,7 +13,7 @@ def get_data(): 'items': ['Loan Security Pledge', 'Loan Security Shortfall', 'Loan Disbursement'] }, { - 'items': ['Loan Repayment', 'Loan Interest Accrual', 'Loan Security Unpledge'] + 'items': ['Loan Repayment', 'Loan Interest Accrual', 'Loan Write Off', 'Loan Security Unpledge'] } ] } \ No newline at end of file diff --git a/erpnext/loan_management/doctype/loan/loan_list.js b/erpnext/loan_management/doctype/loan/loan_list.js new file mode 100644 index 0000000000..6591b72996 --- /dev/null +++ b/erpnext/loan_management/doctype/loan/loan_list.js @@ -0,0 +1,16 @@ +// Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors +// License: GNU General Public License v3. See license.txt + +frappe.listview_settings['Loan'] = { + get_indicator: function(doc) { + var status_color = { + "Draft": "red", + "Sanctioned": "blue", + "Disbursed": "orange", + "Partially Disbursed": "yellow", + "Loan Closure Requested": "green", + "Closed": "green" + }; + return [__(doc.status), status_color[doc.status], "status,=,"+doc.status]; + }, +}; diff --git a/erpnext/loan_management/doctype/loan/test_loan.py b/erpnext/loan_management/doctype/loan/test_loan.py index 5a4a19a0fb..a63d06590f 100644 --- a/erpnext/loan_management/doctype/loan/test_loan.py +++ b/erpnext/loan_management/doctype/loan/test_loan.py @@ -14,11 +14,12 @@ from erpnext.loan_management.doctype.process_loan_interest_accrual.process_loan_ process_loan_interest_accrual_for_term_loans) from erpnext.loan_management.doctype.loan_interest_accrual.loan_interest_accrual import days_in_year from erpnext.loan_management.doctype.process_loan_security_shortfall.process_loan_security_shortfall import create_process_loan_security_shortfall -from erpnext.loan_management.doctype.loan.loan import unpledge_security +from erpnext.loan_management.doctype.loan.loan import unpledge_security, request_loan_closure, make_loan_write_off from erpnext.loan_management.doctype.loan_security_unpledge.loan_security_unpledge import get_pledged_security_qty from erpnext.loan_management.doctype.loan_application.loan_application import create_pledge from erpnext.loan_management.doctype.loan_disbursement.loan_disbursement import get_disbursal_amount from erpnext.loan_management.doctype.loan_repayment.loan_repayment import calculate_amounts +from erpnext.payroll.doctype.salary_structure.test_salary_structure import make_salary_structure class TestLoan(unittest.TestCase): def setUp(self): @@ -44,6 +45,7 @@ class TestLoan(unittest.TestCase): create_loan_security_price("Test Security 2", 250, "Nos", get_datetime() , get_datetime(add_to_date(nowdate(), hours=24))) self.applicant1 = make_employee("robert_loan@loan.com") + make_salary_structure("Test Salary Structure Loan", "Monthly", employee=self.applicant1, currency='INR') if not frappe.db.exists("Customer", "_Test Loan Customer"): frappe.get_doc(get_customer_dict('_Test Loan Customer')).insert(ignore_permissions=True) @@ -132,7 +134,7 @@ class TestLoan(unittest.TestCase): loan_application = create_loan_application('_Test Company', self.applicant2, 'Demand Loan', pledge) create_pledge(loan_application) - loan = create_demand_loan(self.applicant2, "Demand Loan", loan_application, posting_date=get_first_day(nowdate())) + loan = create_demand_loan(self.applicant2, "Demand Loan", loan_application, posting_date='2019-10-01') loan.submit() self.assertEquals(loan.loan_amount, 1000000) @@ -142,30 +144,30 @@ class TestLoan(unittest.TestCase): no_of_days = date_diff(last_date, first_date) + 1 - accrued_interest_amount = (loan.loan_amount * loan.rate_of_interest * no_of_days) \ - / (days_in_year(get_datetime(first_date).year) * 100) + accrued_interest_amount = flt((loan.loan_amount * loan.rate_of_interest * no_of_days) + / (days_in_year(get_datetime(first_date).year) * 100), 2) make_loan_disbursement_entry(loan.name, loan.loan_amount, disbursement_date=first_date) process_loan_interest_accrual_for_demand_loans(posting_date = last_date) - repayment_entry = create_repayment_entry(loan.name, self.applicant2, add_days(last_date, 10), "Regular Payment", 111118.68) + repayment_entry = create_repayment_entry(loan.name, self.applicant2, add_days(last_date, 10), 111119) repayment_entry.save() repayment_entry.submit() - penalty_amount = (accrued_interest_amount * 4 * 25) / (100 * days_in_year(get_datetime(first_date).year)) - self.assertEquals(flt(repayment_entry.penalty_amount, 2), flt(penalty_amount, 2)) + penalty_amount = (accrued_interest_amount * 5 * 25) / 100 + self.assertEquals(flt(repayment_entry.penalty_amount,0), flt(penalty_amount, 0)) - amounts = frappe.db.get_value('Loan Interest Accrual', {'loan': loan.name}, ['paid_interest_amount', - 'paid_principal_amount']) + amounts = frappe.db.get_all('Loan Interest Accrual', {'loan': loan.name}, ['paid_interest_amount']) loan.load_from_db() - self.assertEquals(amounts[0], repayment_entry.interest_payable) - self.assertEquals(flt(loan.total_principal_paid, 2), flt(repayment_entry.amount_paid - - penalty_amount - amounts[0], 2)) + total_interest_paid = amounts[0]['paid_interest_amount'] + amounts[1]['paid_interest_amount'] + self.assertEquals(amounts[1]['paid_interest_amount'], repayment_entry.interest_payable) + self.assertEquals(flt(loan.total_principal_paid, 0), flt(repayment_entry.amount_paid - + penalty_amount - total_interest_paid, 0)) - def test_loan_closure_repayment(self): + def test_loan_closure(self): pledge = [{ "loan_security": "Test Security 1", "qty": 4000.00 @@ -174,7 +176,7 @@ class TestLoan(unittest.TestCase): loan_application = create_loan_application('_Test Company', self.applicant2, 'Demand Loan', pledge) create_pledge(loan_application) - loan = create_demand_loan(self.applicant2, "Demand Loan", loan_application, posting_date=get_first_day(nowdate())) + loan = create_demand_loan(self.applicant2, "Demand Loan", loan_application, posting_date='2019-10-01') loan.submit() self.assertEquals(loan.loan_amount, 1000000) @@ -184,10 +186,10 @@ class TestLoan(unittest.TestCase): no_of_days = date_diff(last_date, first_date) + 1 - # Adding 6 since repayment is made 5 days late after due date + # Adding 5 since repayment is made 5 days late after due date # and since payment type is loan closure so interest should be considered for those - # 6 days as well though in grace period - no_of_days += 6 + # 5 days as well though in grace period + no_of_days += 5 accrued_interest_amount = (loan.loan_amount * loan.rate_of_interest * no_of_days) \ / (days_in_year(get_datetime(first_date).year) * 100) @@ -195,15 +197,17 @@ class TestLoan(unittest.TestCase): make_loan_disbursement_entry(loan.name, loan.loan_amount, disbursement_date=first_date) process_loan_interest_accrual_for_demand_loans(posting_date = last_date) - repayment_entry = create_repayment_entry(loan.name, self.applicant2, add_days(last_date, 6), - "Loan Closure", flt(loan.loan_amount + accrued_interest_amount)) + repayment_entry = create_repayment_entry(loan.name, self.applicant2, add_days(last_date, 5), + flt(loan.loan_amount + accrued_interest_amount)) + repayment_entry.submit() amount = frappe.db.get_value('Loan Interest Accrual', {'loan': loan.name}, ['sum(paid_interest_amount)']) - self.assertEquals(flt(amount, 2),flt(accrued_interest_amount, 2)) + self.assertEquals(flt(amount, 0),flt(accrued_interest_amount, 0)) self.assertEquals(flt(repayment_entry.penalty_amount, 5), 0) + request_loan_closure(loan.name) loan.load_from_db() self.assertEquals(loan.status, "Loan Closure Requested") @@ -230,8 +234,7 @@ class TestLoan(unittest.TestCase): process_loan_interest_accrual_for_term_loans(posting_date=nowdate()) - repayment_entry = create_repayment_entry(loan.name, self.applicant2, add_days(nowdate(), 5), - "Regular Payment", 89768.75) + repayment_entry = create_repayment_entry(loan.name, self.applicant2, add_days(nowdate(), 5), 89768.75) repayment_entry.submit() @@ -281,7 +284,7 @@ class TestLoan(unittest.TestCase): loan_application = create_loan_application('_Test Company', self.applicant2, 'Demand Loan', pledge) create_pledge(loan_application) - loan = create_demand_loan(self.applicant2, "Demand Loan", loan_application, posting_date=get_first_day(nowdate())) + loan = create_demand_loan(self.applicant2, "Demand Loan", loan_application, posting_date='2019-10-01') loan.submit() self.assertEquals(loan.loan_amount, 1000000) @@ -291,7 +294,7 @@ class TestLoan(unittest.TestCase): no_of_days = date_diff(last_date, first_date) + 1 - no_of_days += 6 + no_of_days += 5 accrued_interest_amount = (loan.loan_amount * loan.rate_of_interest * no_of_days) \ / (days_in_year(get_datetime(first_date).year) * 100) @@ -299,10 +302,10 @@ class TestLoan(unittest.TestCase): make_loan_disbursement_entry(loan.name, loan.loan_amount, disbursement_date=first_date) process_loan_interest_accrual_for_demand_loans(posting_date = last_date) - repayment_entry = create_repayment_entry(loan.name, self.applicant2, add_days(last_date, 6), - "Loan Closure", flt(loan.loan_amount + accrued_interest_amount)) + repayment_entry = create_repayment_entry(loan.name, self.applicant2, add_days(last_date, 5), flt(loan.loan_amount + accrued_interest_amount)) repayment_entry.submit() + request_loan_closure(loan.name) loan.load_from_db() self.assertEquals(loan.status, "Loan Closure Requested") @@ -317,9 +320,9 @@ class TestLoan(unittest.TestCase): self.assertEqual(loan.status, 'Closed') self.assertEquals(sum(pledged_qty.values()), 0) - amounts = amounts = calculate_amounts(loan.name, add_days(last_date, 6), "Regular Repayment") - self.assertEqual(amounts['pending_principal_amount'], 0) - self.assertEqual(amounts['payable_principal_amount'], 0) + amounts = amounts = calculate_amounts(loan.name, add_days(last_date, 5)) + self.assertTrue(amounts['pending_principal_amount'] < 0) + self.assertEquals(amounts['payable_principal_amount'], 0.0) self.assertEqual(amounts['interest_amount'], 0) def test_disbursal_check_with_shortfall(self): @@ -381,7 +384,7 @@ class TestLoan(unittest.TestCase): loan_application = create_loan_application('_Test Company', self.applicant2, 'Demand Loan', pledge) create_pledge(loan_application) - loan = create_demand_loan(self.applicant2, "Demand Loan", loan_application, posting_date=get_first_day(nowdate())) + loan = create_demand_loan(self.applicant2, "Demand Loan", loan_application, posting_date='2019-10-01') loan.submit() self.assertEquals(loan.loan_amount, 1000000) @@ -391,7 +394,7 @@ class TestLoan(unittest.TestCase): no_of_days = date_diff(last_date, first_date) + 1 - no_of_days += 6 + no_of_days += 5 accrued_interest_amount = (loan.loan_amount * loan.rate_of_interest * no_of_days) \ / (days_in_year(get_datetime(first_date).year) * 100) @@ -399,20 +402,192 @@ class TestLoan(unittest.TestCase): make_loan_disbursement_entry(loan.name, loan.loan_amount, disbursement_date=first_date) process_loan_interest_accrual_for_demand_loans(posting_date = last_date) - amounts = calculate_amounts(loan.name, add_days(last_date, 6), "Regular Repayment") + amounts = calculate_amounts(loan.name, add_days(last_date, 5)) - repayment_entry = create_repayment_entry(loan.name, self.applicant2, add_days(last_date, 6), - "Loan Closure", flt(loan.loan_amount + accrued_interest_amount)) + repayment_entry = create_repayment_entry(loan.name, self.applicant2, add_days(last_date, 5), flt(loan.loan_amount + accrued_interest_amount)) repayment_entry.submit() amounts = frappe.db.get_value('Loan Interest Accrual', {'loan': loan.name}, ['paid_interest_amount', 'paid_principal_amount']) + request_loan_closure(loan.name) loan.load_from_db() self.assertEquals(loan.status, "Loan Closure Requested") - amounts = calculate_amounts(loan.name, add_days(last_date, 6), "Regular Repayment") - self.assertEquals(amounts['pending_principal_amount'], 0.0) + amounts = calculate_amounts(loan.name, add_days(last_date, 5)) + self.assertTrue(amounts['pending_principal_amount'] < 0.0) + + def test_partial_unaccrued_interest_payment(self): + pledge = [{ + "loan_security": "Test Security 1", + "qty": 4000.00 + }] + + loan_application = create_loan_application('_Test Company', self.applicant2, 'Demand Loan', pledge) + create_pledge(loan_application) + + loan = create_demand_loan(self.applicant2, "Demand Loan", loan_application, posting_date='2019-10-01') + loan.submit() + + self.assertEquals(loan.loan_amount, 1000000) + + first_date = '2019-10-01' + last_date = '2019-10-30' + + no_of_days = date_diff(last_date, first_date) + 1 + + no_of_days += 5.5 + + # get partial unaccrued interest amount + paid_amount = (loan.loan_amount * loan.rate_of_interest * no_of_days) \ + / (days_in_year(get_datetime(first_date).year) * 100) + + make_loan_disbursement_entry(loan.name, loan.loan_amount, disbursement_date=first_date) + process_loan_interest_accrual_for_demand_loans(posting_date = last_date) + + amounts = calculate_amounts(loan.name, add_days(last_date, 5)) + + repayment_entry = create_repayment_entry(loan.name, self.applicant2, add_days(last_date, 5), + paid_amount) + + repayment_entry.submit() + repayment_entry.load_from_db() + + partial_accrued_interest_amount = (loan.loan_amount * loan.rate_of_interest * 5) \ + / (days_in_year(get_datetime(first_date).year) * 100) + + interest_amount = flt(amounts['interest_amount'] + partial_accrued_interest_amount, 2) + self.assertEqual(flt(repayment_entry.total_interest_paid, 0), flt(interest_amount, 0)) + + def test_penalty(self): + pledge = [{ + "loan_security": "Test Security 1", + "qty": 4000.00 + }] + + loan_application = create_loan_application('_Test Company', self.applicant2, 'Demand Loan', pledge) + create_pledge(loan_application) + + loan = create_demand_loan(self.applicant2, "Demand Loan", loan_application, posting_date='2019-10-01') + loan.submit() + + self.assertEquals(loan.loan_amount, 1000000) + + first_date = '2019-10-01' + last_date = '2019-10-30' + + make_loan_disbursement_entry(loan.name, loan.loan_amount, disbursement_date=first_date) + process_loan_interest_accrual_for_demand_loans(posting_date = last_date) + + amounts = calculate_amounts(loan.name, add_days(last_date, 1)) + paid_amount = amounts['interest_amount']/2 + + repayment_entry = create_repayment_entry(loan.name, self.applicant2, add_days(last_date, 5), + paid_amount) + + repayment_entry.submit() + + # 30 days - grace period + penalty_days = 30 - 4 + penalty_applicable_amount = flt(amounts['interest_amount']/2, 2) + penalty_amount = flt((((penalty_applicable_amount * 25) / 100) * penalty_days), 2) + process = process_loan_interest_accrual_for_demand_loans(posting_date = '2019-11-30') + + calculated_penalty_amount = frappe.db.get_value('Loan Interest Accrual', + {'process_loan_interest_accrual': process, 'loan': loan.name}, 'penalty_amount') + + self.assertEquals(calculated_penalty_amount, penalty_amount) + + def test_loan_write_off_limit(self): + pledge = [{ + "loan_security": "Test Security 1", + "qty": 4000.00 + }] + + loan_application = create_loan_application('_Test Company', self.applicant2, 'Demand Loan', pledge) + create_pledge(loan_application) + + loan = create_demand_loan(self.applicant2, "Demand Loan", loan_application, posting_date='2019-10-01') + loan.submit() + + self.assertEquals(loan.loan_amount, 1000000) + + first_date = '2019-10-01' + last_date = '2019-10-30' + + no_of_days = date_diff(last_date, first_date) + 1 + no_of_days += 5 + + accrued_interest_amount = (loan.loan_amount * loan.rate_of_interest * no_of_days) \ + / (days_in_year(get_datetime(first_date).year) * 100) + + make_loan_disbursement_entry(loan.name, loan.loan_amount, disbursement_date=first_date) + process_loan_interest_accrual_for_demand_loans(posting_date = last_date) + + # repay 50 less so that it can be automatically written off + repayment_entry = create_repayment_entry(loan.name, self.applicant2, add_days(last_date, 5), + flt(loan.loan_amount + accrued_interest_amount - 50)) + + repayment_entry.submit() + + amount = frappe.db.get_value('Loan Interest Accrual', {'loan': loan.name}, ['sum(paid_interest_amount)']) + + self.assertEquals(flt(amount, 0),flt(accrued_interest_amount, 0)) + self.assertEquals(flt(repayment_entry.penalty_amount, 5), 0) + + amounts = calculate_amounts(loan.name, add_days(last_date, 5)) + self.assertEquals(flt(amounts['pending_principal_amount'], 0), 50) + + request_loan_closure(loan.name) + loan.load_from_db() + self.assertEquals(loan.status, "Loan Closure Requested") + + def test_loan_amount_write_off(self): + pledge = [{ + "loan_security": "Test Security 1", + "qty": 4000.00 + }] + + loan_application = create_loan_application('_Test Company', self.applicant2, 'Demand Loan', pledge) + create_pledge(loan_application) + + loan = create_demand_loan(self.applicant2, "Demand Loan", loan_application, posting_date='2019-10-01') + loan.submit() + + self.assertEquals(loan.loan_amount, 1000000) + + first_date = '2019-10-01' + last_date = '2019-10-30' + + no_of_days = date_diff(last_date, first_date) + 1 + no_of_days += 5 + + accrued_interest_amount = (loan.loan_amount * loan.rate_of_interest * no_of_days) \ + / (days_in_year(get_datetime(first_date).year) * 100) + + make_loan_disbursement_entry(loan.name, loan.loan_amount, disbursement_date=first_date) + process_loan_interest_accrual_for_demand_loans(posting_date = last_date) + + # repay 100 less so that it can be automatically written off + repayment_entry = create_repayment_entry(loan.name, self.applicant2, add_days(last_date, 5), + flt(loan.loan_amount + accrued_interest_amount - 100)) + + repayment_entry.submit() + + amount = frappe.db.get_value('Loan Interest Accrual', {'loan': loan.name}, ['sum(paid_interest_amount)']) + + self.assertEquals(flt(amount, 0),flt(accrued_interest_amount, 0)) + self.assertEquals(flt(repayment_entry.penalty_amount, 5), 0) + + amounts = calculate_amounts(loan.name, add_days(last_date, 5)) + self.assertEquals(flt(amounts['pending_principal_amount'], 0), 100) + + we = make_loan_write_off(loan.name, amount=amounts['pending_principal_amount']) + we.submit() + + amounts = calculate_amounts(loan.name, add_days(last_date, 5)) + self.assertEquals(flt(amounts['pending_principal_amount'], 0), 0) + def create_loan_accounts(): if not frappe.db.exists("Account", "Loans and Advances (Assets) - _TC"): @@ -496,7 +671,8 @@ def create_loan_type(loan_name, maximum_loan_amount, rate_of_interest, penalty_i "interest_income_account": interest_income_account, "penalty_income_account": penalty_income_account, "repayment_method": repayment_method, - "repayment_periods": repayment_periods + "repayment_periods": repayment_periods, + "write_off_amount": 100 }).insert() loan_type.submit() @@ -532,7 +708,7 @@ def create_loan_security(): "haircut": 50.00, }).insert(ignore_permissions=True) -def create_loan_security_pledge(applicant, pledges, loan_application): +def create_loan_security_pledge(applicant, pledges, loan_application=None, loan=None): lsp = frappe.new_doc("Loan Security Pledge") lsp.applicant_type = 'Customer' @@ -540,11 +716,13 @@ def create_loan_security_pledge(applicant, pledges, loan_application): lsp.company = "_Test Company" lsp.loan_application = loan_application + if loan: + lsp.loan = loan + for pledge in pledges: lsp.append('securities', { "loan_security": pledge['loan_security'], - "qty": pledge['qty'], - "haircut": pledge['haircut'] + "qty": pledge['qty'] }) lsp.save() @@ -582,12 +760,11 @@ def create_loan_security_price(loan_security, loan_security_price, uom, from_dat "valid_upto": to_date }).insert(ignore_permissions=True) -def create_repayment_entry(loan, applicant, posting_date, payment_type, paid_amount): +def create_repayment_entry(loan, applicant, posting_date, paid_amount): lr = frappe.get_doc({ "doctype": "Loan Repayment", "against_loan": loan, - "payment_type": payment_type, "company": "_Test Company", "posting_date": posting_date or nowdate(), "applicant": applicant, diff --git a/erpnext/loan_management/doctype/loan_application/loan_application.py b/erpnext/loan_management/doctype/loan_application/loan_application.py index bac6e638d7..e59db4c12d 100644 --- a/erpnext/loan_management/doctype/loan_application/loan_application.py +++ b/erpnext/loan_management/doctype/loan_application/loan_application.py @@ -127,6 +127,7 @@ def create_loan(source_name, target_doc=None, submit=0): target_doc.loan_account = account_details.loan_account target_doc.interest_income_account = account_details.interest_income_account target_doc.penalty_income_account = account_details.penalty_income_account + target_doc.loan_application = source_name doclist = get_mapped_doc("Loan Application", source_name, { diff --git a/erpnext/loan_management/doctype/loan_application/test_loan_application.py b/erpnext/loan_management/doctype/loan_application/test_loan_application.py index 687c58000e..2a659e9fc2 100644 --- a/erpnext/loan_management/doctype/loan_application/test_loan_application.py +++ b/erpnext/loan_management/doctype/loan_application/test_loan_application.py @@ -5,7 +5,7 @@ from __future__ import unicode_literals import frappe import unittest -from erpnext.payroll.doctype.salary_structure.test_salary_structure import make_employee +from erpnext.payroll.doctype.salary_structure.test_salary_structure import make_employee, make_salary_structure from erpnext.loan_management.doctype.loan.test_loan import create_loan_type, create_loan_accounts class TestLoanApplication(unittest.TestCase): @@ -14,6 +14,7 @@ class TestLoanApplication(unittest.TestCase): create_loan_type("Home Loan", 500000, 9.2, 0, 1, 0, 'Cash', 'Payment Account - _TC', 'Loan Account - _TC', 'Interest Income Account - _TC', 'Penalty Income Account - _TC', 'Repay Over Number of Periods', 18) self.applicant = make_employee("kate_loan@loan.com", "_Test Company") + make_salary_structure("Test Salary Structure Loan", "Monthly", employee=self.applicant, currency='INR') self.create_loan_application() def create_loan_application(self): @@ -29,7 +30,6 @@ class TestLoanApplication(unittest.TestCase): }) loan_application.insert() - def test_loan_totals(self): loan_application = frappe.get_doc("Loan Application", {"applicant":self.applicant}) diff --git a/erpnext/loan_management/doctype/loan_disbursement/loan_disbursement.json b/erpnext/loan_management/doctype/loan_disbursement/loan_disbursement.json index c437a987eb..cd5df4d3cd 100644 --- a/erpnext/loan_management/doctype/loan_disbursement/loan_disbursement.json +++ b/erpnext/loan_management/doctype/loan_disbursement/loan_disbursement.json @@ -26,19 +26,24 @@ { "fieldname": "against_loan", "fieldtype": "Link", + "in_list_view": 1, "label": "Against Loan ", - "options": "Loan" + "options": "Loan", + "reqd": 1 }, { "fieldname": "disbursement_date", "fieldtype": "Date", - "label": "Disbursement Date" + "label": "Disbursement Date", + "reqd": 1 }, { "fieldname": "disbursed_amount", "fieldtype": "Currency", "label": "Disbursed Amount", - "options": "Company:company:default_currency" + "non_negative": 1, + "options": "Company:company:default_currency", + "reqd": 1 }, { "fieldname": "amended_from", @@ -53,17 +58,21 @@ "fetch_from": "against_loan.company", "fieldname": "company", "fieldtype": "Link", + "in_list_view": 1, "label": "Company", "options": "Company", - "read_only": 1 + "read_only": 1, + "reqd": 1 }, { "fetch_from": "against_loan.applicant", "fieldname": "applicant", "fieldtype": "Dynamic Link", + "in_list_view": 1, "label": "Applicant", "options": "applicant_type", - "read_only": 1 + "read_only": 1, + "reqd": 1 }, { "collapsible": 1, @@ -102,9 +111,11 @@ "fetch_from": "against_loan.applicant_type", "fieldname": "applicant_type", "fieldtype": "Select", + "in_list_view": 1, "label": "Applicant Type", "options": "Employee\nMember\nCustomer", - "read_only": 1 + "read_only": 1, + "reqd": 1 }, { "fieldname": "bank_account", @@ -117,9 +128,10 @@ "fieldtype": "Column Break" } ], + "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2020-04-29 05:20:41.629911", + "modified": "2020-11-06 10:04:30.882322", "modified_by": "Administrator", "module": "Loan Management", "name": "Loan Disbursement", diff --git a/erpnext/loan_management/doctype/loan_disbursement/loan_disbursement.py b/erpnext/loan_management/doctype/loan_disbursement/loan_disbursement.py index 260fada893..f341e81065 100644 --- a/erpnext/loan_management/doctype/loan_disbursement/loan_disbursement.py +++ b/erpnext/loan_management/doctype/loan_disbursement/loan_disbursement.py @@ -17,6 +17,7 @@ class LoanDisbursement(AccountsController): def validate(self): self.set_missing_values() + self.validate_disbursal_amount() def on_submit(self): self.set_status_and_amounts() @@ -40,57 +41,21 @@ class LoanDisbursement(AccountsController): if not self.bank_account and self.applicant_type == "Customer": self.bank_account = frappe.db.get_value("Customer", self.applicant, "default_bank_account") - def set_status_and_amounts(self, cancel=0): + def validate_disbursal_amount(self): + possible_disbursal_amount = get_disbursal_amount(self.against_loan) + if self.disbursed_amount > possible_disbursal_amount: + frappe.throw(_("Disbursed Amount cannot be greater than {0}").format(possible_disbursal_amount)) + + def set_status_and_amounts(self, cancel=0): loan_details = frappe.get_all("Loan", fields = ["loan_amount", "disbursed_amount", "total_payment", "total_principal_paid", "total_interest_payable", "status", "is_term_loan", "is_secured_loan"], filters= { "name": self.against_loan })[0] if cancel: - disbursed_amount = loan_details.disbursed_amount - self.disbursed_amount - total_payment = loan_details.total_payment - - if loan_details.disbursed_amount > loan_details.loan_amount: - topup_amount = loan_details.disbursed_amount - loan_details.loan_amount - if topup_amount > self.disbursed_amount: - topup_amount = self.disbursed_amount - - total_payment = total_payment - topup_amount - - if disbursed_amount == 0: - status = "Sanctioned" - elif disbursed_amount >= loan_details.loan_amount: - status = "Disbursed" - else: - status = "Partially Disbursed" + disbursed_amount, status, total_payment = self.get_values_on_cancel(loan_details) else: - disbursed_amount = self.disbursed_amount + loan_details.disbursed_amount - total_payment = loan_details.total_payment - - possible_disbursal_amount = get_disbursal_amount(self.against_loan) - - if self.disbursed_amount > possible_disbursal_amount: - frappe.throw(_("Disbursed Amount cannot be greater than {0}").format(possible_disbursal_amount)) - - if loan_details.status == "Disbursed" and not loan_details.is_term_loan: - process_loan_interest_accrual_for_demand_loans(posting_date=add_days(self.disbursement_date, -1), - loan=self.against_loan) - - if disbursed_amount > loan_details.loan_amount: - topup_amount = disbursed_amount - loan_details.loan_amount - - if topup_amount < 0: - topup_amount = 0 - - if topup_amount > self.disbursed_amount: - topup_amount = self.disbursed_amount - - total_payment = total_payment + topup_amount - - if flt(disbursed_amount) >= loan_details.loan_amount: - status = "Disbursed" - else: - status = "Partially Disbursed" + disbursed_amount, status, total_payment = self.get_values_on_submit(loan_details) frappe.db.set_value("Loan", self.against_loan, { "disbursement_date": self.disbursement_date, @@ -99,6 +64,53 @@ class LoanDisbursement(AccountsController): "total_payment": total_payment }) + def get_values_on_cancel(self, loan_details): + disbursed_amount = loan_details.disbursed_amount - self.disbursed_amount + total_payment = loan_details.total_payment + + if loan_details.disbursed_amount > loan_details.loan_amount: + topup_amount = loan_details.disbursed_amount - loan_details.loan_amount + if topup_amount > self.disbursed_amount: + topup_amount = self.disbursed_amount + + total_payment = total_payment - topup_amount + + if disbursed_amount == 0: + status = "Sanctioned" + + elif disbursed_amount >= loan_details.loan_amount: + status = "Disbursed" + else: + status = "Partially Disbursed" + + return disbursed_amount, status, total_payment + + def get_values_on_submit(self, loan_details): + disbursed_amount = self.disbursed_amount + loan_details.disbursed_amount + total_payment = loan_details.total_payment + + if loan_details.status in ("Disbursed", "Partially Disbursed") and not loan_details.is_term_loan: + process_loan_interest_accrual_for_demand_loans(posting_date=add_days(self.disbursement_date, -1), + loan=self.against_loan, accrual_type="Disbursement") + + if disbursed_amount > loan_details.loan_amount: + topup_amount = disbursed_amount - loan_details.loan_amount + + if topup_amount < 0: + topup_amount = 0 + + if topup_amount > self.disbursed_amount: + topup_amount = self.disbursed_amount + + total_payment = total_payment + topup_amount + + if flt(disbursed_amount) >= loan_details.loan_amount: + status = "Disbursed" + else: + status = "Partially Disbursed" + + return disbursed_amount, status, total_payment + def make_gl_entries(self, cancel=0, adv_adj=0): gle_map = [] loan_details = frappe.get_doc("Loan", self.against_loan) @@ -111,7 +123,7 @@ class LoanDisbursement(AccountsController): "debit_in_account_currency": self.disbursed_amount, "against_voucher_type": "Loan", "against_voucher": self.against_loan, - "remarks": "Against Loan:" + self.against_loan, + "remarks": _("Disbursement against loan:") + self.against_loan, "cost_center": self.cost_center, "party_type": self.applicant_type, "party": self.applicant, @@ -127,10 +139,8 @@ class LoanDisbursement(AccountsController): "credit_in_account_currency": self.disbursed_amount, "against_voucher_type": "Loan", "against_voucher": self.against_loan, - "remarks": "Against Loan:" + self.against_loan, + "remarks": _("Disbursement against loan:") + self.against_loan, "cost_center": self.cost_center, - "party_type": self.applicant_type, - "party": self.applicant, "posting_date": self.disbursement_date }) ) @@ -155,15 +165,16 @@ def get_total_pledged_security_value(loan): pledged_securities = get_pledged_security_qty(loan) for security, qty in pledged_securities.items(): - security_value += (loan_security_price_map.get(security) * qty * hair_cut_map.get(security))/100 + after_haircut_percentage = 100 - hair_cut_map.get(security) + security_value += (loan_security_price_map.get(security) * qty * after_haircut_percentage)/100 return security_value @frappe.whitelist() -def get_disbursal_amount(loan): - loan_details = frappe.get_all("Loan", fields = ["loan_amount", "disbursed_amount", "total_payment", - "total_principal_paid", "total_interest_payable", "status", "is_term_loan", "is_secured_loan"], - filters= { "name": loan })[0] +def get_disbursal_amount(loan, on_current_security_price=0): + loan_details = frappe.get_value("Loan", loan, ["loan_amount", "disbursed_amount", "total_payment", + "total_principal_paid", "total_interest_payable", "status", "is_term_loan", "is_secured_loan", + "maximum_loan_amount"], as_dict=1) if loan_details.is_secured_loan and frappe.get_all('Loan Security Shortfall', filters={'loan': loan, 'status': 'Pending'}): @@ -173,17 +184,24 @@ def get_disbursal_amount(loan): pending_principal_amount = flt(loan_details.total_payment) - flt(loan_details.total_interest_payable) \ - flt(loan_details.total_principal_paid) else: - pending_principal_amount = flt(loan_details.disbursed_amount) + pending_principal_amount = flt(loan_details.disbursed_amount) - flt(loan_details.total_interest_payable) \ + - flt(loan_details.total_principal_paid) security_value = 0.0 - if loan_details.is_secured_loan: + if loan_details.is_secured_loan and on_current_security_price: security_value = get_total_pledged_security_value(loan) + if loan_details.is_secured_loan and not on_current_security_price: + security_value = flt(loan_details.maximum_loan_amount) + if not security_value and not loan_details.is_secured_loan: security_value = flt(loan_details.loan_amount) disbursal_amount = flt(security_value) - flt(pending_principal_amount) + if loan_details.is_term_loan and (disbursal_amount + loan_details.loan_amount) > loan_details.loan_amount: + disbursal_amount = loan_details.loan_amount - loan_details.disbursed_amount + return disbursal_amount diff --git a/erpnext/loan_management/doctype/loan_disbursement/test_loan_disbursement.py b/erpnext/loan_management/doctype/loan_disbursement/test_loan_disbursement.py index 2cb2637612..a8753877a6 100644 --- a/erpnext/loan_management/doctype/loan_disbursement/test_loan_disbursement.py +++ b/erpnext/loan_management/doctype/loan_disbursement/test_loan_disbursement.py @@ -8,9 +8,10 @@ from frappe.utils import (nowdate, add_days, get_datetime, get_first_day, get_la from erpnext.loan_management.doctype.loan.test_loan import (create_loan_type, create_loan_security_pledge, create_repayment_entry, create_loan_application, make_loan_disbursement_entry, create_loan_accounts, create_loan_security_type, create_loan_security, create_demand_loan, create_loan_security_price) from erpnext.loan_management.doctype.process_loan_interest_accrual.process_loan_interest_accrual import process_loan_interest_accrual_for_demand_loans -from erpnext.loan_management.doctype.loan_interest_accrual.loan_interest_accrual import days_in_year +from erpnext.loan_management.doctype.loan_interest_accrual.loan_interest_accrual import days_in_year, get_per_day_interest from erpnext.selling.doctype.customer.test_customer import get_customer_dict from erpnext.loan_management.doctype.loan_application.loan_application import create_pledge +from erpnext.loan_management.doctype.loan_repayment.loan_repayment import calculate_amounts class TestLoanDisbursement(unittest.TestCase): @@ -60,8 +61,7 @@ class TestLoanDisbursement(unittest.TestCase): self.assertRaises(frappe.ValidationError, make_loan_disbursement_entry, loan.name, 500000, first_date) - repayment_entry = create_repayment_entry(loan.name, self.applicant, add_days(get_last_day(nowdate()), 5), - "Regular Payment", 611095.89) + repayment_entry = create_repayment_entry(loan.name, self.applicant, add_days(get_last_day(nowdate()), 5), 611095.89) repayment_entry.submit() loan.reload() @@ -69,3 +69,50 @@ class TestLoanDisbursement(unittest.TestCase): # After repayment loan disbursement entry should go through make_loan_disbursement_entry(loan.name, 500000, disbursement_date=add_days(last_date, 16)) + # check for disbursement accrual + loan_interest_accrual = frappe.db.get_value('Loan Interest Accrual', {'loan': loan.name, + 'accrual_type': 'Disbursement'}) + + self.assertTrue(loan_interest_accrual) + + def test_loan_topup_with_additional_pledge(self): + pledge = [{ + "loan_security": "Test Security 1", + "qty": 4000.00 + }] + + loan_application = create_loan_application('_Test Company', self.applicant, 'Demand Loan', pledge) + create_pledge(loan_application) + + loan = create_demand_loan(self.applicant, "Demand Loan", loan_application, posting_date='2019-10-01') + loan.submit() + + self.assertEquals(loan.loan_amount, 1000000) + + first_date = '2019-10-01' + last_date = '2019-10-30' + + # Disbursed 10,00,000 amount + make_loan_disbursement_entry(loan.name, loan.loan_amount, disbursement_date=first_date) + process_loan_interest_accrual_for_demand_loans(posting_date = last_date) + amounts = calculate_amounts(loan.name, add_days(last_date, 1)) + + previous_interest = amounts['interest_amount'] + + pledge1 = [{ + "loan_security": "Test Security 1", + "qty": 2000.00 + }] + + create_loan_security_pledge(self.applicant, pledge1, loan=loan.name) + + # Topup 500000 + make_loan_disbursement_entry(loan.name, 500000, disbursement_date=add_days(last_date, 1)) + process_loan_interest_accrual_for_demand_loans(posting_date = add_days(last_date, 15)) + amounts = calculate_amounts(loan.name, add_days(last_date, 15)) + + per_day_interest = get_per_day_interest(1500000, 13.5, '2019-10-30') + interest = per_day_interest * 15 + + self.assertEquals(amounts['pending_principal_amount'], 1500000) + self.assertEquals(amounts['interest_amount'], flt(interest + previous_interest, 2)) diff --git a/erpnext/loan_management/doctype/loan_interest_accrual/loan_interest_accrual.json b/erpnext/loan_management/doctype/loan_interest_accrual/loan_interest_accrual.json index 5fc3e8f4b6..f157f0df8f 100644 --- a/erpnext/loan_management/doctype/loan_interest_accrual/loan_interest_accrual.json +++ b/erpnext/loan_management/doctype/loan_interest_accrual/loan_interest_accrual.json @@ -14,6 +14,7 @@ "column_break_4", "company", "posting_date", + "accrual_type", "is_term_loan", "section_break_7", "pending_principal_amount", @@ -22,9 +23,11 @@ "column_break_14", "interest_amount", "paid_interest_amount", + "penalty_amount", "section_break_15", "process_loan_interest_accrual", "repayment_schedule_name", + "last_accrual_date", "amended_from" ], "fields": [ @@ -139,6 +142,7 @@ "read_only": 1 }, { + "depends_on": "eval:doc.is_term_loan", "fieldname": "paid_principal_amount", "fieldtype": "Currency", "label": "Paid Principal Amount", @@ -149,12 +153,32 @@ "fieldtype": "Currency", "label": "Paid Interest Amount", "options": "Company:company:default_currency" + }, + { + "fieldname": "accrual_type", + "fieldtype": "Select", + "label": "Accrual Type", + "options": "Regular\nRepayment\nDisbursement" + }, + { + "fieldname": "penalty_amount", + "fieldtype": "Currency", + "label": "Penalty Amount", + "options": "Company:company:default_currency" + }, + { + "fieldname": "last_accrual_date", + "fieldtype": "Date", + "hidden": 1, + "label": "Last Accrual Date", + "read_only": 1 } ], "in_create": 1, + "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2020-04-16 11:24:23.258404", + "modified": "2020-11-07 05:49:25.448875", "modified_by": "Administrator", "module": "Loan Management", "name": "Loan Interest Accrual", diff --git a/erpnext/loan_management/doctype/loan_interest_accrual/loan_interest_accrual.py b/erpnext/loan_management/doctype/loan_interest_accrual/loan_interest_accrual.py index 2d959bf3be..d17f5af490 100644 --- a/erpnext/loan_management/doctype/loan_interest_accrual/loan_interest_accrual.py +++ b/erpnext/loan_management/doctype/loan_interest_accrual/loan_interest_accrual.py @@ -22,6 +22,8 @@ class LoanInterestAccrual(AccountsController): if not self.interest_amount and not self.payable_principal_amount: frappe.throw(_("Interest Amount or Principal Amount is mandatory")) + if not self.last_accrual_date: + self.last_accrual_date = get_last_accrual_date(self.loan) def on_submit(self): self.make_gl_entries() @@ -50,7 +52,8 @@ class LoanInterestAccrual(AccountsController): "debit_in_account_currency": self.interest_amount, "against_voucher_type": "Loan", "against_voucher": self.loan, - "remarks": _("Against Loan:") + self.loan, + "remarks": _("Interest accrued from {0} to {1} against loan: {2}").format( + self.last_accrual_date, self.posting_date, self.loan), "cost_center": erpnext.get_default_cost_center(self.company), "posting_date": self.posting_date }) @@ -59,14 +62,13 @@ class LoanInterestAccrual(AccountsController): gle_map.append( self.get_gl_dict({ "account": self.interest_income_account, - "party_type": self.applicant_type, - "party": self.applicant, "against": self.loan_account, "credit": self.interest_amount, "credit_in_account_currency": self.interest_amount, "against_voucher_type": "Loan", "against_voucher": self.loan, - "remarks": _("Against Loan:") + self.loan, + "remarks": ("Interest accrued from {0} to {1} against loan: {2}").format( + self.last_accrual_date, self.posting_date, self.loan), "cost_center": erpnext.get_default_cost_center(self.company), "posting_date": self.posting_date }) @@ -79,19 +81,23 @@ class LoanInterestAccrual(AccountsController): # For Eg: If Loan disbursement date is '01-09-2019' and disbursed amount is 1000000 and # rate of interest is 13.5 then first loan interest accural will be on '01-10-2019' # which means interest will be accrued for 30 days which should be equal to 11095.89 -def calculate_accrual_amount_for_demand_loans(loan, posting_date, process_loan_interest): +def calculate_accrual_amount_for_demand_loans(loan, posting_date, process_loan_interest, accrual_type): + from erpnext.loan_management.doctype.loan_repayment.loan_repayment import calculate_amounts + no_of_days = get_no_of_days_for_interest_accural(loan, posting_date) + precision = cint(frappe.db.get_default("currency_precision")) or 2 if no_of_days <= 0: return if loan.status == 'Disbursed': pending_principal_amount = flt(loan.total_payment) - flt(loan.total_interest_payable) \ - - flt(loan.total_principal_paid) + - flt(loan.total_principal_paid) - flt(loan.written_off_amount) else: - pending_principal_amount = loan.disbursed_amount + pending_principal_amount = flt(loan.disbursed_amount) - flt(loan.total_interest_payable) \ + - flt(loan.total_principal_paid) - flt(loan.written_off_amount) - interest_per_day = (pending_principal_amount * loan.rate_of_interest) / (days_in_year(get_datetime(posting_date).year) * 100) + interest_per_day = get_per_day_interest(pending_principal_amount, loan.rate_of_interest, posting_date) payable_interest = interest_per_day * no_of_days args = frappe._dict({ @@ -102,13 +108,16 @@ def calculate_accrual_amount_for_demand_loans(loan, posting_date, process_loan_i 'loan_account': loan.loan_account, 'pending_principal_amount': pending_principal_amount, 'interest_amount': payable_interest, + 'penalty_amount': calculate_amounts(loan.name, posting_date)['penalty_amount'], 'process_loan_interest': process_loan_interest, - 'posting_date': posting_date + 'posting_date': posting_date, + 'accrual_type': accrual_type }) - make_loan_interest_accrual_entry(args) + if flt(payable_interest, precision) > 0.0: + make_loan_interest_accrual_entry(args) -def make_accrual_interest_entry_for_demand_loans(posting_date, process_loan_interest, open_loans=None, loan_type=None): +def make_accrual_interest_entry_for_demand_loans(posting_date, process_loan_interest, open_loans=None, loan_type=None, accrual_type="Regular"): query_filters = { "status": ('in', ['Disbursed', 'Partially Disbursed']), "docstatus": 1 @@ -123,13 +132,13 @@ def make_accrual_interest_entry_for_demand_loans(posting_date, process_loan_inte open_loans = frappe.get_all("Loan", fields=["name", "total_payment", "total_amount_paid", "loan_account", "interest_income_account", "is_term_loan", "status", "disbursement_date", "disbursed_amount", "applicant_type", "applicant", - "rate_of_interest", "total_interest_payable", "total_principal_paid", "repayment_start_date"], + "rate_of_interest", "total_interest_payable", "written_off_amount", "total_principal_paid", "repayment_start_date"], filters=query_filters) for loan in open_loans: - calculate_accrual_amount_for_demand_loans(loan, posting_date, process_loan_interest) + calculate_accrual_amount_for_demand_loans(loan, posting_date, process_loan_interest, accrual_type) -def make_accrual_interest_entry_for_term_loans(posting_date, process_loan_interest, term_loan=None, loan_type=None): +def make_accrual_interest_entry_for_term_loans(posting_date, process_loan_interest, term_loan=None, loan_type=None, accrual_type="Regular"): curr_date = posting_date or add_days(nowdate(), 1) term_loans = get_term_loans(curr_date, term_loan, loan_type) @@ -148,7 +157,8 @@ def make_accrual_interest_entry_for_term_loans(posting_date, process_loan_intere 'payable_principal': loan.principal_amount, 'process_loan_interest': process_loan_interest, 'repayment_schedule_name': loan.payment_entry, - 'posting_date': posting_date + 'posting_date': posting_date, + 'accrual_type': accrual_type }) make_loan_interest_accrual_entry(args) @@ -192,31 +202,33 @@ def make_loan_interest_accrual_entry(args): loan_interest_accrual.loan_account = args.loan_account loan_interest_accrual.pending_principal_amount = flt(args.pending_principal_amount, precision) loan_interest_accrual.interest_amount = flt(args.interest_amount, precision) + loan_interest_accrual.penalty_amount = flt(args.penalty_amount, precision) loan_interest_accrual.posting_date = args.posting_date or nowdate() loan_interest_accrual.process_loan_interest_accrual = args.process_loan_interest loan_interest_accrual.repayment_schedule_name = args.repayment_schedule_name loan_interest_accrual.payable_principal_amount = args.payable_principal + loan_interest_accrual.accrual_type = args.accrual_type loan_interest_accrual.save() loan_interest_accrual.submit() def get_no_of_days_for_interest_accural(loan, posting_date): - last_interest_accrual_date = get_last_accural_date_in_current_month(loan) + last_interest_accrual_date = get_last_accrual_date(loan.name) no_of_days = date_diff(posting_date or nowdate(), last_interest_accrual_date) + 1 return no_of_days -def get_last_accural_date_in_current_month(loan): +def get_last_accrual_date(loan): last_posting_date = frappe.db.sql(""" SELECT MAX(posting_date) from `tabLoan Interest Accrual` - WHERE loan = %s""", (loan.name)) + WHERE loan = %s and docstatus = 1""", (loan)) if last_posting_date[0][0]: # interest for last interest accrual date is already booked, so add 1 day return add_days(last_posting_date[0][0], 1) else: - return loan.disbursement_date + return frappe.db.get_value('Loan', loan, 'disbursement_date') def days_in_year(year): days = 365 @@ -226,3 +238,11 @@ def days_in_year(year): return days +def get_per_day_interest(principal_amount, rate_of_interest, posting_date=None): + if not posting_date: + posting_date = getdate() + + precision = cint(frappe.db.get_default("currency_precision")) or 2 + + return flt((principal_amount * rate_of_interest) / (days_in_year(get_datetime(posting_date).year) * 100), precision) + diff --git a/erpnext/loan_management/doctype/loan_interest_accrual/test_loan_interest_accrual.py b/erpnext/loan_management/doctype/loan_interest_accrual/test_loan_interest_accrual.py index 4b85b21869..46a6440553 100644 --- a/erpnext/loan_management/doctype/loan_interest_accrual/test_loan_interest_accrual.py +++ b/erpnext/loan_management/doctype/loan_interest_accrual/test_loan_interest_accrual.py @@ -5,7 +5,7 @@ from __future__ import unicode_literals import frappe import unittest from frappe.utils import (nowdate, add_days, get_datetime, get_first_day, get_last_day, date_diff, flt, add_to_date) -from erpnext.loan_management.doctype.loan.test_loan import (create_loan_type, create_loan_security_pledge, create_loan_security_price, +from erpnext.loan_management.doctype.loan.test_loan import (create_loan_type, create_loan_security_price, make_loan_disbursement_entry, create_loan_accounts, create_loan_security_type, create_loan_security, create_demand_loan, create_loan_application) from erpnext.loan_management.doctype.process_loan_interest_accrual.process_loan_interest_accrual import process_loan_interest_accrual_for_demand_loans from erpnext.loan_management.doctype.loan_interest_accrual.loan_interest_accrual import days_in_year @@ -57,4 +57,4 @@ class TestLoanInterestAccrual(unittest.TestCase): loan_interest_accural = frappe.get_doc("Loan Interest Accrual", {'loan': loan.name}) - self.assertEquals(flt(loan_interest_accural.interest_amount, 2), flt(accrued_interest_amount, 2)) + self.assertEquals(flt(loan_interest_accural.interest_amount, 0), flt(accrued_interest_amount, 0)) diff --git a/erpnext/loan_management/doctype/loan_repayment/loan_repayment.json b/erpnext/loan_management/doctype/loan_repayment/loan_repayment.json index 5942455919..2b5df4be24 100644 --- a/erpnext/loan_management/doctype/loan_repayment/loan_repayment.json +++ b/erpnext/loan_management/doctype/loan_repayment/loan_repayment.json @@ -10,11 +10,11 @@ "applicant_type", "applicant", "loan_type", - "payment_type", "column_break_3", "company", "posting_date", "is_term_loan", + "rate_of_interest", "payment_details_section", "due_date", "pending_principal_amount", @@ -31,6 +31,7 @@ "column_break_21", "reference_date", "principal_amount_paid", + "total_interest_paid", "repayment_details", "amended_from" ], @@ -95,15 +96,6 @@ "fieldname": "column_break_9", "fieldtype": "Column Break" }, - { - "default": "Regular Payment", - "fieldname": "payment_type", - "fieldtype": "Select", - "in_list_view": 1, - "label": "Payment Type", - "options": "\nRegular Payment\nLoan Closure", - "reqd": 1 - }, { "fieldname": "payable_amount", "fieldtype": "Currency", @@ -116,6 +108,7 @@ "fieldname": "amount_paid", "fieldtype": "Currency", "label": "Amount Paid", + "non_negative": 1, "options": "Company:company:default_currency", "reqd": 1 }, @@ -195,6 +188,7 @@ "fieldtype": "Currency", "hidden": 1, "label": "Principal Amount Paid", + "options": "Company:company:default_currency", "read_only": 1 }, { @@ -217,11 +211,27 @@ "hidden": 1, "label": "Repayment Details", "options": "Loan Repayment Detail" + }, + { + "fieldname": "total_interest_paid", + "fieldtype": "Currency", + "hidden": 1, + "label": "Total Interest Paid", + "options": "Company:company:default_currency", + "read_only": 1 + }, + { + "fetch_from": "loan_type.rate_of_interest", + "fieldname": "rate_of_interest", + "fieldtype": "Percent", + "label": "Rate Of Interest", + "read_only": 1 } ], + "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2020-05-16 09:40:15.581165", + "modified": "2020-11-05 10:06:58.792841", "modified_by": "Administrator", "module": "Loan Management", "name": "Loan Repayment", diff --git a/erpnext/loan_management/doctype/loan_repayment/loan_repayment.py b/erpnext/loan_management/doctype/loan_repayment/loan_repayment.py index 97dbc44bf1..415ba993c7 100644 --- a/erpnext/loan_management/doctype/loan_repayment/loan_repayment.py +++ b/erpnext/loan_management/doctype/loan_repayment/loan_repayment.py @@ -14,14 +14,15 @@ from erpnext.controllers.accounts_controller import AccountsController from erpnext.accounts.general_ledger import make_gl_entries from erpnext.loan_management.doctype.loan_security_shortfall.loan_security_shortfall import update_shortfall_status from erpnext.loan_management.doctype.process_loan_interest_accrual.process_loan_interest_accrual import process_loan_interest_accrual_for_demand_loans +from erpnext.loan_management.doctype.loan_interest_accrual.loan_interest_accrual import get_per_day_interest, get_last_accrual_date class LoanRepayment(AccountsController): def validate(self): - amounts = calculate_amounts(self.against_loan, self.posting_date, self.payment_type) + amounts = calculate_amounts(self.against_loan, self.posting_date) self.set_missing_values(amounts) self.validate_amount() - self.allocate_amounts(amounts['pending_accrual_entries']) + self.allocate_amounts(amounts) def before_submit(self): self.book_unaccrued_interest() @@ -32,8 +33,8 @@ class LoanRepayment(AccountsController): def on_cancel(self): self.mark_as_unpaid() - self.make_gl_entries(cancel=1) self.ignore_linked_doctypes = ['GL Entry'] + self.make_gl_entries(cancel=1) def set_missing_values(self, amounts): precision = cint(frappe.db.get_default("currency_precision")) or 2 @@ -72,29 +73,36 @@ class LoanRepayment(AccountsController): msg = _("Paid amount cannot be less than {0}").format(self.penalty_amount) frappe.throw(msg) - if self.payment_type == "Loan Closure" and flt(self.amount_paid, precision) < flt(self.payable_amount, precision): - msg = _("Amount of {0} is required for Loan closure").format(self.payable_amount) - frappe.throw(msg) - def book_unaccrued_interest(self): - if self.payment_type == 'Loan Closure': - total_interest_paid = 0 - for payment in self.repayment_details: - total_interest_paid += payment.paid_interest_amount + precision = cint(frappe.db.get_default("currency_precision")) or 2 + if self.total_interest_paid > self.interest_payable: + if not self.is_term_loan: + # get last loan interest accrual date + last_accrual_date = get_last_accrual_date(self.against_loan) - if total_interest_paid < self.interest_payable: - if not self.is_term_loan: - process = process_loan_interest_accrual_for_demand_loans(posting_date=self.posting_date, - loan=self.against_loan) + # get posting date upto which interest has to be accrued + per_day_interest = flt(get_per_day_interest(self.pending_principal_amount, + self.rate_of_interest, self.posting_date), 2) - lia = frappe.db.get_value('Loan Interest Accrual', {'process_loan_interest_accrual': - process}, ['name', 'interest_amount', 'payable_principal_amount'], as_dict=1) + no_of_days = flt(flt(self.total_interest_paid - self.interest_payable, + precision)/per_day_interest, 0) - 1 - self.append('repayment_details', { - 'loan_interest_accrual': lia.name, - 'paid_interest_amount': lia.interest_amount, - 'paid_principal_amount': lia.payable_principal_amount - }) + posting_date = add_days(last_accrual_date, no_of_days) + + # book excess interest paid + process = process_loan_interest_accrual_for_demand_loans(posting_date=posting_date, + loan=self.against_loan, accrual_type="Repayment") + + # get loan interest accrual to update paid amount + lia = frappe.db.get_value('Loan Interest Accrual', {'process_loan_interest_accrual': + process}, ['name', 'interest_amount', 'payable_principal_amount'], as_dict=1) + + self.append('repayment_details', { + 'loan_interest_accrual': lia.name, + 'paid_interest_amount': flt(self.total_interest_paid - self.interest_payable, precision), + 'paid_principal_amount': 0.0, + 'accrual_type': 'Repayment' + }) def update_paid_amount(self): precision = cint(frappe.db.get_default("currency_precision")) or 2 @@ -108,12 +116,6 @@ class LoanRepayment(AccountsController): WHERE name = %s""", (flt(payment.paid_principal_amount, precision), flt(payment.paid_interest_amount, precision), payment.loan_interest_accrual)) - if flt(loan.total_principal_paid + self.principal_amount_paid, precision) >= flt(loan.total_payment, precision): - if loan.is_secured_loan: - frappe.db.set_value("Loan", self.against_loan, "status", "Loan Closure Requested") - else: - frappe.db.set_value("Loan", self.against_loan, "status", "Closed") - frappe.db.sql(""" UPDATE `tabLoan` SET total_amount_paid = %s, total_principal_paid = %s WHERE name = %s """, (loan.total_amount_paid + self.amount_paid, loan.total_principal_paid + self.principal_amount_paid, self.against_loan)) @@ -123,6 +125,8 @@ class LoanRepayment(AccountsController): def mark_as_unpaid(self): loan = frappe.get_doc("Loan", self.against_loan) + no_of_repayments = len(self.repayment_details) + for payment in self.repayment_details: frappe.db.sql(""" UPDATE `tabLoan Interest Accrual` SET paid_principal_amount = `paid_principal_amount` - %s, @@ -130,6 +134,12 @@ class LoanRepayment(AccountsController): WHERE name = %s""", (payment.paid_principal_amount, payment.paid_interest_amount, payment.loan_interest_accrual)) + # Cancel repayment interest accrual + # checking idx as a preventive measure, repayment accrual will always be the last entry + if payment.accrual_type == 'Repayment' and payment.idx == no_of_repayments: + lia_doc = frappe.get_doc('Loan Interest Accrual', payment.loan_interest_accrual) + lia_doc.cancel() + frappe.db.sql(""" UPDATE `tabLoan` SET total_amount_paid = %s, total_principal_paid = %s WHERE name = %s """, (loan.total_amount_paid - self.amount_paid, loan.total_principal_paid - self.principal_amount_paid, self.against_loan)) @@ -137,15 +147,17 @@ class LoanRepayment(AccountsController): if loan.status == "Loan Closure Requested": frappe.db.set_value("Loan", self.against_loan, "status", "Disbursed") - def allocate_amounts(self, paid_entries): + def allocate_amounts(self, repayment_details): + precision = cint(frappe.db.get_default("currency_precision")) or 2 + self.set('repayment_details', []) self.principal_amount_paid = 0 total_interest_paid = 0 interest_paid = self.amount_paid - self.penalty_amount - if self.amount_paid - self.penalty_amount > 0 and paid_entries: + if self.amount_paid - self.penalty_amount > 0: interest_paid = self.amount_paid - self.penalty_amount - for lia, amounts in iteritems(paid_entries): + for lia, amounts in iteritems(repayment_details.get('pending_accrual_entries', [])): if amounts['interest_amount'] + amounts['payable_principal_amount'] <= interest_paid: interest_amount = amounts['interest_amount'] paid_principal = amounts['payable_principal_amount'] @@ -169,9 +181,24 @@ class LoanRepayment(AccountsController): 'paid_principal_amount': paid_principal }) - if self.payment_type == 'Loan Closure' and total_interest_paid < self.interest_payable: - unaccrued_interest = self.interest_payable - total_interest_paid - interest_paid -= unaccrued_interest + if repayment_details['unaccrued_interest'] and interest_paid: + # no of days for which to accrue interest + # Interest can only be accrued for an entire day and not partial + if interest_paid > repayment_details['unaccrued_interest']: + per_day_interest = flt(get_per_day_interest(self.pending_principal_amount, + self.rate_of_interest, self.posting_date), precision) + interest_paid -= repayment_details['unaccrued_interest'] + total_interest_paid += repayment_details['unaccrued_interest'] + else: + # get no of days for which interest can be paid + per_day_interest = flt(get_per_day_interest(self.pending_principal_amount, + self.rate_of_interest, self.posting_date), precision) + + no_of_days = cint(interest_paid/per_day_interest) + total_interest_paid += no_of_days * per_day_interest + interest_paid -= no_of_days * per_day_interest + + self.total_interest_paid = total_interest_paid if interest_paid: self.principal_amount_paid += interest_paid @@ -189,7 +216,7 @@ class LoanRepayment(AccountsController): "debit_in_account_currency": self.penalty_amount, "against_voucher_type": "Loan", "against_voucher": self.against_loan, - "remarks": _("Against Loan:") + self.against_loan, + "remarks": _("Penalty against loan:") + self.against_loan, "cost_center": self.cost_center, "party_type": self.applicant_type, "party": self.applicant, @@ -205,10 +232,8 @@ class LoanRepayment(AccountsController): "credit_in_account_currency": self.penalty_amount, "against_voucher_type": "Loan", "against_voucher": self.against_loan, - "remarks": _("Against Loan:") + self.against_loan, + "remarks": _("Penalty against loan:") + self.against_loan, "cost_center": self.cost_center, - "party_type": self.applicant_type, - "party": self.applicant, "posting_date": getdate(self.posting_date) }) ) @@ -219,13 +244,11 @@ class LoanRepayment(AccountsController): "against": loan_details.loan_account + ", " + loan_details.interest_income_account + ", " + loan_details.penalty_income_account, "debit": self.amount_paid, - "debit_in_account_currency": self.amount_paid , + "debit_in_account_currency": self.amount_paid, "against_voucher_type": "Loan", "against_voucher": self.against_loan, - "remarks": _("Against Loan:") + self.against_loan, + "remarks": _("Repayment against Loan: ") + self.against_loan, "cost_center": self.cost_center, - "party_type": self.applicant_type, - "party": self.applicant, "posting_date": getdate(self.posting_date) }) ) @@ -240,7 +263,7 @@ class LoanRepayment(AccountsController): "credit_in_account_currency": self.amount_paid, "against_voucher_type": "Loan", "against_voucher": self.against_loan, - "remarks": _("Against Loan:") + self.against_loan, + "remarks": _("Repayment against Loan: ") + self.against_loan, "cost_center": self.cost_center, "posting_date": getdate(self.posting_date) }) @@ -273,7 +296,8 @@ def get_accrued_interest_entries(against_loan): unpaid_accrued_entries = frappe.db.sql( """ SELECT name, posting_date, interest_amount - paid_interest_amount as interest_amount, - payable_principal_amount - paid_principal_amount as payable_principal_amount + payable_principal_amount - paid_principal_amount as payable_principal_amount, + accrual_type FROM `tabLoan Interest Accrual` WHERE @@ -282,6 +306,7 @@ def get_accrued_interest_entries(against_loan): payable_principal_amount - paid_principal_amount > 0) AND docstatus = 1 + ORDER BY posting_date """, (against_loan), as_dict=1) return unpaid_accrued_entries @@ -289,7 +314,7 @@ def get_accrued_interest_entries(against_loan): # This function returns the amounts that are payable at the time of loan repayment based on posting date # So it pulls all the unpaid Loan Interest Accrual Entries and calculates the penalty if applicable -def get_amounts(amounts, against_loan, posting_date, payment_type): +def get_amounts(amounts, against_loan, posting_date): precision = cint(frappe.db.get_default("currency_precision")) or 2 against_loan_doc = frappe.get_doc("Loan", against_loan) @@ -311,10 +336,10 @@ def get_amounts(amounts, against_loan, posting_date, payment_type): due_date = add_days(entry.posting_date, 1) no_of_late_days = date_diff(posting_date, - add_days(due_date, loan_type_details.grace_period_in_days)) + add_days(due_date, loan_type_details.grace_period_in_days)) + 1 - if no_of_late_days > 0 and (not against_loan_doc.repay_from_salary): - penalty_amount += (entry.interest_amount * (loan_type_details.penalty_interest_rate / 100) * no_of_late_days)/365 + if no_of_late_days > 0 and (not against_loan_doc.repay_from_salary) and entry.accrual_type == 'Regular': + penalty_amount += (entry.interest_amount * (loan_type_details.penalty_interest_rate / 100) * no_of_late_days) total_pending_interest += entry.interest_amount payable_principal_amount += entry.payable_principal_amount @@ -324,23 +349,27 @@ def get_amounts(amounts, against_loan, posting_date, payment_type): 'payable_principal_amount': flt(entry.payable_principal_amount, precision) }) - if not final_due_date: + if due_date and not final_due_date: final_due_date = add_days(due_date, loan_type_details.grace_period_in_days) if against_loan_doc.status in ('Disbursed', 'Loan Closure Requested', 'Closed'): - pending_principal_amount = against_loan_doc.total_payment - against_loan_doc.total_principal_paid - against_loan_doc.total_interest_payable + pending_principal_amount = against_loan_doc.total_payment - against_loan_doc.total_principal_paid \ + - against_loan_doc.total_interest_payable - against_loan_doc.written_off_amount else: - pending_principal_amount = against_loan_doc.disbursed_amount + pending_principal_amount = against_loan_doc.disbursed_amount - against_loan_doc.total_principal_paid \ + - against_loan_doc.total_interest_payable - against_loan_doc.written_off_amount - if payment_type == "Loan Closure": - if due_date: - pending_days = date_diff(posting_date, due_date) + 1 - else: - pending_days = date_diff(posting_date, against_loan_doc.disbursement_date) + 1 + unaccrued_interest = 0 + if due_date: + pending_days = date_diff(posting_date, due_date) + 1 + else: + last_accrual_date = get_last_accrual_date(against_loan_doc.name) + pending_days = date_diff(posting_date, last_accrual_date) + 1 - payable_principal_amount = pending_principal_amount - per_day_interest = (payable_principal_amount * (loan_type_details.rate_of_interest / 100))/365 - total_pending_interest += (pending_days * per_day_interest) + if pending_days > 0: + principal_amount = flt(pending_principal_amount, precision) + per_day_interest = get_per_day_interest(principal_amount, loan_type_details.rate_of_interest, posting_date) + unaccrued_interest += (pending_days * flt(per_day_interest, precision)) amounts["pending_principal_amount"] = flt(pending_principal_amount, precision) amounts["payable_principal_amount"] = flt(payable_principal_amount, precision) @@ -348,6 +377,7 @@ def get_amounts(amounts, against_loan, posting_date, payment_type): amounts["penalty_amount"] = flt(penalty_amount, precision) amounts["payable_amount"] = flt(payable_principal_amount + total_pending_interest + penalty_amount, precision) amounts["pending_accrual_entries"] = pending_accrual_entries + amounts["unaccrued_interest"] = unaccrued_interest if final_due_date: amounts["due_date"] = final_due_date @@ -355,7 +385,7 @@ def get_amounts(amounts, against_loan, posting_date, payment_type): return amounts @frappe.whitelist() -def calculate_amounts(against_loan, posting_date, payment_type): +def calculate_amounts(against_loan, posting_date, payment_type=''): amounts = { 'penalty_amount': 0.0, @@ -363,10 +393,17 @@ def calculate_amounts(against_loan, posting_date, payment_type): 'pending_principal_amount': 0.0, 'payable_principal_amount': 0.0, 'payable_amount': 0.0, + 'unaccrued_interest': 0.0, 'due_date': '' } - amounts = get_amounts(amounts, against_loan, posting_date, payment_type) + amounts = get_amounts(amounts, against_loan, posting_date) + + # update values for closure + if payment_type == 'Loan Closure': + amounts['payable_principal_amount'] = amounts['pending_principal_amount'] + amounts['interest_amount'] += amounts['unaccrued_interest'] + amounts['payable_amount'] = amounts['payable_principal_amount'] + amounts['interest_amount'] return amounts diff --git a/erpnext/loan_management/doctype/loan_repayment_detail/loan_repayment_detail.json b/erpnext/loan_management/doctype/loan_repayment_detail/loan_repayment_detail.json index cff1dbb1d2..4b9b191e26 100644 --- a/erpnext/loan_management/doctype/loan_repayment_detail/loan_repayment_detail.json +++ b/erpnext/loan_management/doctype/loan_repayment_detail/loan_repayment_detail.json @@ -7,7 +7,8 @@ "field_order": [ "loan_interest_accrual", "paid_principal_amount", - "paid_interest_amount" + "paid_interest_amount", + "accrual_type" ], "fields": [ { @@ -27,11 +28,20 @@ "fieldtype": "Currency", "label": "Paid Interest Amount", "options": "Company:company:default_currency" + }, + { + "fetch_from": "loan_interest_accrual.accrual_type", + "fetch_if_empty": 1, + "fieldname": "accrual_type", + "fieldtype": "Select", + "label": "Accrual Type", + "options": "Regular\nRepayment\nDisbursement" } ], + "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2020-04-15 21:50:03.837019", + "modified": "2020-10-23 08:09:18.267030", "modified_by": "Administrator", "module": "Loan Management", "name": "Loan Repayment Detail", diff --git a/erpnext/loan_management/doctype/loan_security/loan_security.json b/erpnext/loan_management/doctype/loan_security/loan_security.json index 1d0bb30910..c698601ea4 100644 --- a/erpnext/loan_management/doctype/loan_security/loan_security.json +++ b/erpnext/loan_management/doctype/loan_security/loan_security.json @@ -25,6 +25,7 @@ }, { "fetch_from": "loan_security_type.haircut", + "fetch_if_empty": 1, "fieldname": "haircut", "fieldtype": "Percent", "label": "Haircut %" @@ -64,8 +65,9 @@ "reqd": 1 } ], + "index_web_pages_for_search": 1, "links": [], - "modified": "2020-04-29 13:21:26.043492", + "modified": "2020-10-26 07:34:48.601766", "modified_by": "Administrator", "module": "Loan Management", "name": "Loan Security", diff --git a/erpnext/loan_management/doctype/loan_security_pledge/loan_security_pledge.py b/erpnext/loan_management/doctype/loan_security_pledge/loan_security_pledge.py index 2bb6fd84e5..cbc8376aa5 100644 --- a/erpnext/loan_management/doctype/loan_security_pledge/loan_security_pledge.py +++ b/erpnext/loan_management/doctype/loan_security_pledge/loan_security_pledge.py @@ -78,7 +78,7 @@ class LoanSecurityPledge(Document): self.maximum_loan_value = maximum_loan_value def update_loan(loan, maximum_value_against_pledge): - maximum_loan_value = frappe.db.get_value('Loan', {'name': loan}, ['maximum_loan_value']) + maximum_loan_value = frappe.db.get_value('Loan', {'name': loan}, ['maximum_loan_amount']) - frappe.db.sql(""" UPDATE `tabLoan` SET maximum_loan_value=%s, is_secured_loan=1 + frappe.db.sql(""" UPDATE `tabLoan` SET maximum_loan_amount=%s, is_secured_loan=1 WHERE name=%s""", (maximum_loan_value + maximum_value_against_pledge, loan)) diff --git a/erpnext/loan_management/doctype/loan_security_shortfall/loan_security_shortfall.py b/erpnext/loan_management/doctype/loan_security_shortfall/loan_security_shortfall.py index 0f42bde3c4..8ec0bfb62c 100644 --- a/erpnext/loan_management/doctype/loan_security_shortfall/loan_security_shortfall.py +++ b/erpnext/loan_management/doctype/loan_security_shortfall/loan_security_shortfall.py @@ -22,7 +22,7 @@ def update_shortfall_status(loan, security_value): if security_value >= loan_security_shortfall.shortfall_amount: frappe.db.set_value("Loan Security Shortfall", loan_security_shortfall.name, { "status": "Completed", - "shortfall_value": loan_security_shortfall.shortfall_amount}) + "shortfall_amount": loan_security_shortfall.shortfall_amount}) else: frappe.db.set_value("Loan Security Shortfall", loan_security_shortfall.name, "shortfall_amount", loan_security_shortfall.shortfall_amount - security_value) diff --git a/erpnext/loan_management/doctype/loan_security_unpledge/loan_security_unpledge.py b/erpnext/loan_management/doctype/loan_security_unpledge/loan_security_unpledge.py index b3eb6001e4..c29f325bfc 100644 --- a/erpnext/loan_management/doctype/loan_security_unpledge/loan_security_unpledge.py +++ b/erpnext/loan_management/doctype/loan_security_unpledge/loan_security_unpledge.py @@ -42,18 +42,20 @@ class LoanSecurityUnpledge(Document): "valid_upto": (">=", get_datetime()) }, as_list=1)) - total_payment, principal_paid, interest_payable = frappe.get_value("Loan", self.loan, ['total_payment', 'total_principal_paid', - 'total_interest_payable']) + total_payment, principal_paid, interest_payable, written_off_amount = frappe.get_value("Loan", self.loan, ['total_payment', 'total_principal_paid', + 'total_interest_payable', 'written_off_amount']) - pending_principal_amount = flt(total_payment) - flt(interest_payable) - flt(principal_paid) + pending_principal_amount = flt(total_payment) - flt(interest_payable) - flt(principal_paid) - flt(written_off_amount) security_value = 0 for security in self.securities: pledged_qty = pledge_qty_map.get(security.loan_security, 0) if security.qty > pledged_qty: - frappe.throw(_("""Row {0}: {1} {2} of {3} is pledged against Loan {4}. - You are trying to unpledge more""").format(security.idx, pledged_qty, security.uom, - frappe.bold(security.loan_security), frappe.bold(self.loan))) + msg = _("Row {0}: {1} {2} of {3} is pledged against Loan {4}.").format(security.idx, pledged_qty, security.uom, + frappe.bold(security.loan_security), frappe.bold(self.loan)) + msg += "
" + msg += _("You are trying to unpledge more.") + frappe.throw(msg, title=_("Loan Security Unpledge Error")) qty_after_unpledge = pledged_qty - security.qty ltv_ratio = ltv_ratio_map.get(security.loan_security_type) @@ -65,10 +67,18 @@ class LoanSecurityUnpledge(Document): security_value += qty_after_unpledge * current_price if not security_value and flt(pending_principal_amount, 2) > 0: - frappe.throw("Cannot Unpledge, loan to value ratio is breaching") + self._throw(security_value, pending_principal_amount, ltv_ratio) if security_value and flt(pending_principal_amount/security_value) * 100 > ltv_ratio: - frappe.throw("Cannot Unpledge, loan to value ratio is breaching") + self._throw(security_value, pending_principal_amount, ltv_ratio) + + def _throw(self, security_value, pending_principal_amount, ltv_ratio): + msg = _("Loan Security Value after unpledge is {0}").format(frappe.bold(security_value)) + msg += '
' + msg += _("Pending principal amount is {0}").format(frappe.bold(flt(pending_principal_amount, 2))) + msg += '
' + msg += _("Loan To Security Value ratio must always be {0}").format(frappe.bold(ltv_ratio)) + frappe.throw(msg, title=_("Loan To Value ratio breach")) def on_update_after_submit(self): self.approve() diff --git a/erpnext/loan_management/doctype/loan_type/loan_type.json b/erpnext/loan_management/doctype/loan_type/loan_type.json index 669490a448..18a97315f0 100644 --- a/erpnext/loan_management/doctype/loan_type/loan_type.json +++ b/erpnext/loan_management/doctype/loan_type/loan_type.json @@ -11,6 +11,7 @@ "rate_of_interest", "penalty_interest_rate", "grace_period_in_days", + "write_off_amount", "column_break_2", "company", "is_term_loan", @@ -76,7 +77,6 @@ "reqd": 1 }, { - "description": "This account is used for booking loan repayments from the borrower and also disbursing loans to the borrower", "fieldname": "payment_account", "fieldtype": "Link", "label": "Payment Account", @@ -84,7 +84,6 @@ "reqd": 1 }, { - "description": "This account is capital account which is used to allocate capital for loan disbursal account ", "fieldname": "loan_account", "fieldtype": "Link", "label": "Loan Account", @@ -96,7 +95,6 @@ "fieldtype": "Column Break" }, { - "description": "This account will be used for booking loan interest accruals", "fieldname": "interest_income_account", "fieldtype": "Link", "label": "Interest Income Account", @@ -104,7 +102,6 @@ "reqd": 1 }, { - "description": "This account will be used for booking penalties levied due to delayed repayments", "fieldname": "penalty_income_account", "fieldtype": "Link", "label": "Penalty Income Account", @@ -113,7 +110,6 @@ }, { "default": "0", - "description": "If this is not checked the loan by default will be considered as a Demand Loan", "fieldname": "is_term_loan", "fieldtype": "Check", "label": "Is Term Loan" @@ -145,17 +141,27 @@ "label": "Company", "options": "Company", "reqd": 1 + }, + { + "allow_on_submit": 1, + "description": "Pending amount that will be automatically ignored on loan closure request ", + "fieldname": "write_off_amount", + "fieldtype": "Currency", + "label": "Write Off Amount ", + "options": "Company:company:default_currency" } ], + "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2020-06-07 18:55:59.346292", + "modified": "2020-10-26 07:13:55.029811", "modified_by": "Administrator", "module": "Loan Management", "name": "Loan Type", "owner": "Administrator", "permissions": [ { + "cancel": 1, "create": 1, "delete": 1, "email": 1, @@ -165,6 +171,7 @@ "report": 1, "role": "Loan Manager", "share": 1, + "submit": 1, "write": 1 }, { diff --git a/erpnext/loan_management/doctype/loan_write_off/__init__.py b/erpnext/loan_management/doctype/loan_write_off/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/loan_management/doctype/loan_write_off/loan_write_off.js b/erpnext/loan_management/doctype/loan_write_off/loan_write_off.js new file mode 100644 index 0000000000..4e3319c208 --- /dev/null +++ b/erpnext/loan_management/doctype/loan_write_off/loan_write_off.js @@ -0,0 +1,36 @@ +// Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +{% include 'erpnext/loan_management/loan_common.js' %}; + +frappe.ui.form.on('Loan Write Off', { + loan: function(frm) { + frm.trigger('show_pending_principal_amount'); + }, + onload: function(frm) { + frm.trigger('show_pending_principal_amount'); + }, + refresh: function(frm) { + frm.set_query('write_off_account', function(){ + return { + filters: { + 'company': frm.doc.company, + 'root_type': 'Expense', + 'is_group': 0 + } + } + }); + }, + show_pending_principal_amount: function(frm) { + if (frm.doc.loan && frm.doc.docstatus === 0) { + frappe.db.get_value('Loan', frm.doc.loan, ['total_payment', 'total_interest_payable', + 'total_principal_paid', 'written_off_amount'], function(values) { + frm.set_df_property('write_off_amount', 'description', + "Pending principal amount is " + cstr(flt(values.total_payment - values.total_interest_payable + - values.total_principal_paid - values.written_off_amount, 2))); + frm.refresh_field('write_off_amount'); + }); + + } + } +}); diff --git a/erpnext/loan_management/doctype/loan_write_off/loan_write_off.json b/erpnext/loan_management/doctype/loan_write_off/loan_write_off.json new file mode 100644 index 0000000000..4617a62f5b --- /dev/null +++ b/erpnext/loan_management/doctype/loan_write_off/loan_write_off.json @@ -0,0 +1,157 @@ +{ + "actions": [], + "autoname": "LM-WO-.#####", + "creation": "2020-10-16 11:09:14.495066", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "loan", + "applicant_type", + "applicant", + "column_break_3", + "company", + "posting_date", + "accounting_dimensions_section", + "cost_center", + "section_break_9", + "write_off_account", + "column_break_11", + "write_off_amount", + "amended_from" + ], + "fields": [ + { + "fieldname": "loan", + "fieldtype": "Link", + "in_list_view": 1, + "label": "Loan", + "options": "Loan", + "reqd": 1 + }, + { + "default": "Today", + "fieldname": "posting_date", + "fieldtype": "Date", + "in_list_view": 1, + "label": "Posting Date", + "reqd": 1 + }, + { + "fieldname": "column_break_3", + "fieldtype": "Column Break" + }, + { + "fetch_from": "loan.company", + "fieldname": "company", + "fieldtype": "Link", + "in_list_view": 1, + "label": "Company", + "options": "Company", + "read_only": 1, + "reqd": 1 + }, + { + "fetch_from": "loan.applicant_type", + "fieldname": "applicant_type", + "fieldtype": "Select", + "label": "Applicant Type", + "options": "Employee\nMember\nCustomer", + "read_only": 1 + }, + { + "fetch_from": "loan.applicant", + "fieldname": "applicant", + "fieldtype": "Dynamic Link", + "label": "Applicant ", + "options": "applicant_type", + "read_only": 1 + }, + { + "collapsible": 1, + "fieldname": "accounting_dimensions_section", + "fieldtype": "Section Break", + "label": "Accounting Dimensions" + }, + { + "fieldname": "cost_center", + "fieldtype": "Link", + "label": "Cost Center", + "options": "Cost Center" + }, + { + "fieldname": "section_break_9", + "fieldtype": "Section Break", + "label": "Write Off Details" + }, + { + "fieldname": "write_off_account", + "fieldtype": "Link", + "in_list_view": 1, + "label": "Write Off Account", + "options": "Account", + "reqd": 1 + }, + { + "fieldname": "write_off_amount", + "fieldtype": "Currency", + "label": "Write Off Amount", + "options": "Company:company:default_currency", + "reqd": 1 + }, + { + "fieldname": "column_break_11", + "fieldtype": "Column Break" + }, + { + "fieldname": "amended_from", + "fieldtype": "Link", + "label": "Amended From", + "no_copy": 1, + "options": "Loan Write Off", + "print_hide": 1, + "read_only": 1 + } + ], + "index_web_pages_for_search": 1, + "is_submittable": 1, + "links": [], + "modified": "2020-10-26 07:13:43.663924", + "modified_by": "Administrator", + "module": "Loan Management", + "name": "Loan Write Off", + "owner": "Administrator", + "permissions": [ + { + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "submit": 1, + "write": 1 + }, + { + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Loan Manager", + "share": 1, + "submit": 1, + "write": 1 + } + ], + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 +} \ No newline at end of file diff --git a/erpnext/loan_management/doctype/loan_write_off/loan_write_off.py b/erpnext/loan_management/doctype/loan_write_off/loan_write_off.py new file mode 100644 index 0000000000..54a3f2cbb1 --- /dev/null +++ b/erpnext/loan_management/doctype/loan_write_off/loan_write_off.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe, erpnext +from frappe import _ +from frappe.utils import getdate, flt, cint +from erpnext.controllers.accounts_controller import AccountsController +from erpnext.accounts.general_ledger import make_gl_entries + +class LoanWriteOff(AccountsController): + def validate(self): + self.set_missing_values() + self.validate_write_off_amount() + + def set_missing_values(self): + if not self.cost_center: + self.cost_center = erpnext.get_default_cost_center(self.company) + + def validate_write_off_amount(self): + precision = cint(frappe.db.get_default("currency_precision")) or 2 + total_payment, principal_paid, interest_payable, written_off_amount = frappe.get_value("Loan", self.loan, + ['total_payment', 'total_principal_paid','total_interest_payable', 'written_off_amount']) + + pending_principal_amount = flt(flt(total_payment) - flt(interest_payable) - flt(principal_paid) - flt(written_off_amount), + precision) + + if self.write_off_amount > pending_principal_amount: + frappe.throw(_("Write off amount cannot be greater than pending principal amount")) + + def on_submit(self): + self.update_outstanding_amount() + self.make_gl_entries() + + def on_cancel(self): + self.update_outstanding_amount(cancel=1) + self.ignore_linked_doctypes = ['GL Entry'] + self.make_gl_entries(cancel=1) + + def update_outstanding_amount(self, cancel=0): + written_off_amount = frappe.db.get_value('Loan', self.loan, 'written_off_amount') + + if cancel: + written_off_amount -= self.write_off_amount + else: + written_off_amount += self.write_off_amount + + frappe.db.set_value('Loan', self.loan, 'written_off_amount', written_off_amount) + + + def make_gl_entries(self, cancel=0): + gl_entries = [] + loan_details = frappe.get_doc("Loan", self.loan) + + gl_entries.append( + self.get_gl_dict({ + "account": self.write_off_account, + "against": loan_details.loan_account, + "debit": self.write_off_amount, + "debit_in_account_currency": self.write_off_amount, + "against_voucher_type": "Loan", + "against_voucher": self.loan, + "remarks": _("Against Loan:") + self.loan, + "cost_center": self.cost_center, + "posting_date": getdate(self.posting_date) + }) + ) + + gl_entries.append( + self.get_gl_dict({ + "account": loan_details.loan_account, + "party_type": loan_details.applicant_type, + "party": loan_details.applicant, + "against": self.write_off_account, + "credit": self.write_off_amount, + "credit_in_account_currency": self.write_off_amount, + "against_voucher_type": "Loan", + "against_voucher": self.loan, + "remarks": _("Against Loan:") + self.loan, + "cost_center": self.cost_center, + "posting_date": getdate(self.posting_date) + }) + ) + + make_gl_entries(gl_entries, cancel=cancel, merge_entries=False) + + diff --git a/erpnext/loan_management/doctype/loan_write_off/test_loan_write_off.py b/erpnext/loan_management/doctype/loan_write_off/test_loan_write_off.py new file mode 100644 index 0000000000..9f6700e274 --- /dev/null +++ b/erpnext/loan_management/doctype/loan_write_off/test_loan_write_off.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals + +# import frappe +import unittest + +class TestLoanWriteOff(unittest.TestCase): + pass diff --git a/erpnext/loan_management/doctype/pledge/pledge.json b/erpnext/loan_management/doctype/pledge/pledge.json index f22a21e3be..801e3a3117 100644 --- a/erpnext/loan_management/doctype/pledge/pledge.json +++ b/erpnext/loan_management/doctype/pledge/pledge.json @@ -1,4 +1,5 @@ { + "actions": [], "creation": "2019-09-09 17:06:16.756573", "doctype": "DocType", "editable_grid": 1, @@ -49,7 +50,8 @@ "fieldname": "qty", "fieldtype": "Float", "in_list_view": 1, - "label": "Quantity" + "label": "Quantity", + "non_negative": 1 }, { "fieldname": "loan_security_price", @@ -86,7 +88,8 @@ } ], "istable": 1, - "modified": "2019-12-03 10:59:58.001421", + "links": [], + "modified": "2020-11-05 10:07:15.424937", "modified_by": "Administrator", "module": "Loan Management", "name": "Pledge", diff --git a/erpnext/loan_management/doctype/process_loan_interest_accrual/process_loan_interest_accrual.json b/erpnext/loan_management/doctype/process_loan_interest_accrual/process_loan_interest_accrual.json index 0ef098f278..828df2e35f 100644 --- a/erpnext/loan_management/doctype/process_loan_interest_accrual/process_loan_interest_accrual.json +++ b/erpnext/loan_management/doctype/process_loan_interest_accrual/process_loan_interest_accrual.json @@ -10,6 +10,7 @@ "loan_type", "loan", "process_type", + "accrual_type", "amended_from" ], "fields": [ @@ -47,17 +48,27 @@ "hidden": 1, "label": "Process Type", "read_only": 1 + }, + { + "fieldname": "accrual_type", + "fieldtype": "Select", + "hidden": 1, + "label": "Accrual Type", + "options": "Regular\nRepayment\nDisbursement", + "read_only": 1 } ], + "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2020-04-09 22:52:53.911416", + "modified": "2020-11-06 13:28:51.478909", "modified_by": "Administrator", "module": "Loan Management", "name": "Process Loan Interest Accrual", "owner": "Administrator", "permissions": [ { + "cancel": 1, "create": 1, "delete": 1, "email": 1, @@ -67,9 +78,11 @@ "report": 1, "role": "System Manager", "share": 1, + "submit": 1, "write": 1 }, { + "cancel": 1, "create": 1, "delete": 1, "email": 1, @@ -79,6 +92,7 @@ "report": 1, "role": "Loan Manager", "share": 1, + "submit": 1, "write": 1 } ], diff --git a/erpnext/loan_management/doctype/process_loan_interest_accrual/process_loan_interest_accrual.py b/erpnext/loan_management/doctype/process_loan_interest_accrual/process_loan_interest_accrual.py index 0fa96860d0..11333dc2aa 100644 --- a/erpnext/loan_management/doctype/process_loan_interest_accrual/process_loan_interest_accrual.py +++ b/erpnext/loan_management/doctype/process_loan_interest_accrual/process_loan_interest_accrual.py @@ -20,19 +20,20 @@ class ProcessLoanInterestAccrual(Document): if (not self.loan or not loan_doc.is_term_loan) and self.process_type != 'Term Loans': make_accrual_interest_entry_for_demand_loans(self.posting_date, self.name, - open_loans = open_loans, loan_type = self.loan_type) + open_loans = open_loans, loan_type = self.loan_type, accrual_type=self.accrual_type) if (not self.loan or loan_doc.is_term_loan) and self.process_type != 'Demand Loans': make_accrual_interest_entry_for_term_loans(self.posting_date, self.name, term_loan=self.loan, - loan_type=self.loan_type) + loan_type=self.loan_type, accrual_type=self.accrual_type) -def process_loan_interest_accrual_for_demand_loans(posting_date=None, loan_type=None, loan=None): +def process_loan_interest_accrual_for_demand_loans(posting_date=None, loan_type=None, loan=None, accrual_type="Regular"): loan_process = frappe.new_doc('Process Loan Interest Accrual') loan_process.posting_date = posting_date or nowdate() loan_process.loan_type = loan_type loan_process.process_type = 'Demand Loans' loan_process.loan = loan + loan_process.accrual_type = accrual_type loan_process.submit() diff --git a/erpnext/loan_management/doctype/proposed_pledge/proposed_pledge.json b/erpnext/loan_management/doctype/proposed_pledge/proposed_pledge.json index aee7c2ced5..3e7e778a25 100644 --- a/erpnext/loan_management/doctype/proposed_pledge/proposed_pledge.json +++ b/erpnext/loan_management/doctype/proposed_pledge/proposed_pledge.json @@ -1,4 +1,5 @@ { + "actions": [], "creation": "2019-08-29 22:29:37.628178", "doctype": "DocType", "editable_grid": 1, @@ -39,7 +40,8 @@ "fieldname": "qty", "fieldtype": "Float", "in_list_view": 1, - "label": "Quantity" + "label": "Quantity", + "non_negative": 1 }, { "fieldname": "loan_security", @@ -56,8 +58,10 @@ "read_only": 1 } ], + "index_web_pages_for_search": 1, "istable": 1, - "modified": "2019-12-02 10:23:11.498308", + "links": [], + "modified": "2020-11-05 10:07:37.542344", "modified_by": "Administrator", "module": "Loan Management", "name": "Proposed Pledge", diff --git a/erpnext/loan_management/doctype/unpledge/unpledge.json b/erpnext/loan_management/doctype/unpledge/unpledge.json index ee192d7377..00356685eb 100644 --- a/erpnext/loan_management/doctype/unpledge/unpledge.json +++ b/erpnext/loan_management/doctype/unpledge/unpledge.json @@ -52,6 +52,7 @@ "fieldtype": "Float", "in_list_view": 1, "label": "Quantity", + "non_negative": 1, "reqd": 1 }, { @@ -62,9 +63,10 @@ "read_only": 1 } ], + "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2020-05-06 10:50:18.448552", + "modified": "2020-11-05 10:07:28.106961", "modified_by": "Administrator", "module": "Loan Management", "name": "Unpledge", diff --git a/erpnext/loan_management/loan_common.js b/erpnext/loan_management/loan_common.js index d9dd415296..50b68da30e 100644 --- a/erpnext/loan_management/loan_common.js +++ b/erpnext/loan_management/loan_common.js @@ -8,14 +8,14 @@ frappe.ui.form.on(cur_frm.doctype, { frm.refresh_field('applicant_type'); } - if (['Loan Disbursement', 'Loan Repayment', 'Loan Interest Accrual'].includes(frm.doc.doctype) + if (['Loan Disbursement', 'Loan Repayment', 'Loan Interest Accrual', 'Loan Write Off'].includes(frm.doc.doctype) && frm.doc.docstatus > 0) { frm.add_custom_button(__("Accounting Ledger"), function() { frappe.route_options = { voucher_no: frm.doc.name, company: frm.doc.company, - from_date: frm.doc.posting_date, + from_date: moment(frm.doc.posting_date).format('YYYY-MM-DD'), to_date: moment(frm.doc.modified).format('YYYY-MM-DD'), show_cancelled_entries: frm.doc.docstatus === 2 }; diff --git a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js index e940b6050c..ddbcdfde57 100644 --- a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js +++ b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js @@ -66,7 +66,7 @@ erpnext.maintenance.MaintenanceSchedule = frappe.ui.form.Controller.extend({ company: me.frm.doc.company } }); - }, __("Get items from")); + }, __("Get Items From")); } else if (this.frm.doc.docstatus === 1) { this.frm.add_custom_button(__('Create Maintenance Visit'), function() { frappe.model.open_mapped_doc({ diff --git a/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js b/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js index 2e2a9ce040..4cbb02a5b3 100644 --- a/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js +++ b/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js @@ -62,7 +62,7 @@ erpnext.maintenance.MaintenanceVisit = frappe.ui.form.Controller.extend({ company: me.frm.doc.company } }) - }, __("Get items from")); + }, __("Get Items From")); this.frm.add_custom_button(__('Warranty Claim'), function() { erpnext.utils.map_current_doc({ @@ -78,7 +78,7 @@ erpnext.maintenance.MaintenanceVisit = frappe.ui.form.Controller.extend({ company: me.frm.doc.company } }) - }, __("Get items from")); + }, __("Get Items From")); this.frm.add_custom_button(__('Sales Order'), function() { erpnext.utils.map_current_doc({ @@ -94,7 +94,7 @@ erpnext.maintenance.MaintenanceVisit = frappe.ui.form.Controller.extend({ order_type: me.frm.doc.order_type, } }) - }, __("Get items from")); + }, __("Get Items From")); } }, }); diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py index 2ab1b98707..6363242b0a 100644 --- a/erpnext/manufacturing/doctype/bom/bom.py +++ b/erpnext/manufacturing/doctype/bom/bom.py @@ -76,6 +76,7 @@ class BOM(WebsiteGenerator): self.set_routing_operations() self.validate_operations() self.calculate_cost() + self.update_stock_qty() self.update_cost(update_parent=False, from_child_bom=True, save=False) def get_context(self, context): @@ -84,8 +85,6 @@ class BOM(WebsiteGenerator): def on_update(self): frappe.cache().hdel('bom_children', self.name) self.check_recursion() - self.update_stock_qty() - self.update_exploded_items() def on_submit(self): self.manage_default_bom() @@ -170,8 +169,8 @@ class BOM(WebsiteGenerator): 'qty' : args.get("qty") or args.get("stock_qty") or 1, 'stock_qty' : args.get("qty") or args.get("stock_qty") or 1, 'base_rate' : flt(rate) * (flt(self.conversion_rate) or 1), - 'include_item_in_manufacturing': cint(args['transfer_for_manufacture']) or 0, - 'sourced_by_supplier' : args['sourced_by_supplier'] or 0 + 'include_item_in_manufacturing': cint(args.get('transfer_for_manufacture')), + 'sourced_by_supplier' : args.get('sourced_by_supplier', 0) } return ret_item @@ -237,7 +236,8 @@ class BOM(WebsiteGenerator): self.calculate_cost() if save: self.db_update() - self.update_exploded_items() + + self.update_exploded_items(save=save) # update parent BOMs if self.total_cost != existing_bom_cost and update_parent: @@ -318,8 +318,6 @@ class BOM(WebsiteGenerator): m.uom = m.stock_uom m.qty = m.stock_qty - m.db_update() - def validate_uom_is_interger(self): from erpnext.utilities.transaction_base import validate_uom_is_integer validate_uom_is_integer(self, "uom", "qty", "BOM Item") @@ -372,15 +370,6 @@ class BOM(WebsiteGenerator): if raise_exception: frappe.throw(_("BOM recursion: {0} cannot be parent or child of {1}").format(self.name, self.name)) - def update_cost_and_exploded_items(self, bom_list=[]): - bom_list = self.traverse_tree(bom_list) - for bom in bom_list: - bom_obj = frappe.get_doc("BOM", bom) - bom_obj.check_recursion(bom_list=bom_list) - bom_obj.update_exploded_items() - - return bom_list - def traverse_tree(self, bom_list=None): def _get_children(bom_no): children = frappe.cache().hget('bom_children', bom_no) @@ -472,10 +461,10 @@ class BOM(WebsiteGenerator): d.rate = rate d.amount = (d.stock_qty or d.qty) * rate - def update_exploded_items(self): + def update_exploded_items(self, save=True): """ Update Flat BOM, following will be correct data""" self.get_exploded_items() - self.add_exploded_items() + self.add_exploded_items(save=save) def get_exploded_items(self): """ Get all raw materials including items from child bom""" @@ -544,11 +533,13 @@ class BOM(WebsiteGenerator): 'sourced_by_supplier': d.get('sourced_by_supplier', 0) })) - def add_exploded_items(self): + def add_exploded_items(self, save=True): "Add items to Flat BOM table" - frappe.db.sql("""delete from `tabBOM Explosion Item` where parent=%s""", self.name) self.set('exploded_items', []) + if save: + frappe.db.sql("""delete from `tabBOM Explosion Item` where parent=%s""", self.name) + for d in sorted(self.cur_exploded_items, key=itemgetter(0)): ch = self.append('exploded_items', {}) for i in self.cur_exploded_items[d].keys(): @@ -556,7 +547,9 @@ class BOM(WebsiteGenerator): ch.amount = flt(ch.stock_qty) * flt(ch.rate) ch.qty_consumed_per_unit = flt(ch.stock_qty) / flt(self.quantity) ch.docstatus = self.docstatus - ch.db_insert() + + if save: + ch.db_insert() def validate_bom_links(self): if not self.is_active: diff --git a/erpnext/manufacturing/doctype/job_card/job_card.js b/erpnext/manufacturing/doctype/job_card/job_card.js index b051b3243f..4e8dd41022 100644 --- a/erpnext/manufacturing/doctype/job_card/job_card.js +++ b/erpnext/manufacturing/doctype/job_card/job_card.js @@ -31,6 +31,16 @@ frappe.ui.form.on('Job Card', { } } + frm.set_query("quality_inspection", function() { + return { + query: "erpnext.stock.doctype.quality_inspection.quality_inspection.quality_inspection_query", + filters: { + "item_code": frm.doc.production_item, + "reference_name": frm.doc.name + } + }; + }); + frm.trigger("toggle_operation_number"); if (frm.doc.docstatus == 0 && (frm.doc.for_quantity > frm.doc.total_completed_qty || !frm.doc.for_quantity) diff --git a/erpnext/manufacturing/doctype/job_card/job_card.json b/erpnext/manufacturing/doctype/job_card/job_card.json index 575e719043..5713f697e9 100644 --- a/erpnext/manufacturing/doctype/job_card/job_card.json +++ b/erpnext/manufacturing/doctype/job_card/job_card.json @@ -20,6 +20,7 @@ "production_item", "item_name", "for_quantity", + "quality_inspection", "wip_warehouse", "column_break_12", "employee", @@ -305,11 +306,19 @@ "label": "Sequence Id", "print_hide": 1, "read_only": 1 + }, + { + "depends_on": "eval:!doc.__islocal;", + "fieldname": "quality_inspection", + "fieldtype": "Link", + "label": "Quality Inspection", + "no_copy": 1, + "options": "Quality Inspection" } ], "is_submittable": 1, "links": [], - "modified": "2020-10-14 12:58:25.327897", + "modified": "2020-11-19 18:26:50.531664", "modified_by": "Administrator", "module": "Manufacturing", "name": "Job Card", diff --git a/erpnext/manufacturing/doctype/job_card/job_card.py b/erpnext/manufacturing/doctype/job_card/job_card.py index 4dfa78bf21..d15d81ed93 100644 --- a/erpnext/manufacturing/doctype/job_card/job_card.py +++ b/erpnext/manufacturing/doctype/job_card/job_card.py @@ -353,17 +353,19 @@ def get_operation_details(work_order, operation): @frappe.whitelist() def get_operations(doctype, txt, searchfield, start, page_len, filters): - if filters.get("work_order"): - args = {"parent": filters.get("work_order")} - if txt: - args["operation"] = ("like", "%{0}%".format(txt)) + if not filters.get("work_order"): + frappe.msgprint(_("Please select a Work Order first.")) + return [] + args = {"parent": filters.get("work_order")} + if txt: + args["operation"] = ("like", "%{0}%".format(txt)) - return frappe.get_all("Work Order Operation", - filters = args, - fields = ["distinct operation as operation"], - limit_start = start, - limit_page_length = page_len, - order_by="idx asc", as_list=1) + return frappe.get_all("Work Order Operation", + filters = args, + fields = ["distinct operation as operation"], + limit_start = start, + limit_page_length = page_len, + order_by="idx asc", as_list=1) @frappe.whitelist() def make_material_request(source_name, target_doc=None): diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.json b/erpnext/manufacturing/doctype/production_plan/production_plan.json index 850d5aeff8..7daf7069f3 100644 --- a/erpnext/manufacturing/doctype/production_plan/production_plan.json +++ b/erpnext/manufacturing/doctype/production_plan/production_plan.json @@ -19,6 +19,7 @@ "column_break2", "from_date", "to_date", + "sales_order_status", "sales_orders_detail", "get_sales_orders", "sales_orders", @@ -301,13 +302,20 @@ "label": "Warehouses", "options": "Production Plan Material Request Warehouse", "read_only": 1 + }, + { + "depends_on": "eval: doc.get_items_from == \"Sales Order\"", + "fieldname": "sales_order_status", + "fieldtype": "Select", + "label": "Sales Order Status", + "options": "\nTo Deliver and Bill\nTo Bill\nTo Deliver" } ], "icon": "fa fa-calendar", "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2020-10-26 13:00:54.335319", + "modified": "2020-11-10 18:01:54.991970", "modified_by": "Administrator", "module": "Manufacturing", "name": "Production Plan", diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.py b/erpnext/manufacturing/doctype/production_plan/production_plan.py index a314a15c23..3833e86d27 100644 --- a/erpnext/manufacturing/doctype/production_plan/production_plan.py +++ b/erpnext/manufacturing/doctype/production_plan/production_plan.py @@ -571,6 +571,8 @@ def get_sales_orders(self): so_filter += " and so.customer = %(customer)s" if self.project: so_filter += " and so.project = %(project)s" + if self.sales_order_status: + so_filter += "and so.status = %(sales_order_status)s" if self.item_code: item_filter += " and so_item.item_code = %(item)s" @@ -594,8 +596,8 @@ def get_sales_orders(self): "customer": self.customer, "project": self.project, "item": self.item_code, - "company": self.company - + "company": self.company, + "sales_order_status": self.sales_order_status }, as_dict=1) return open_so diff --git a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py index fa9d080cca..27335aa204 100644 --- a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py +++ b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py @@ -137,7 +137,8 @@ class TestProductionPlan(unittest.TestCase): 'from_date': so.transaction_date, 'to_date': so.transaction_date, 'customer': so.customer, - 'item_code': item + 'item_code': item, + 'sales_order_status': so.status }) sales_orders = get_sales_orders(pln) or {} sales_orders = [d.get('name') for d in sales_orders if d.get('name') == sales_order] diff --git a/erpnext/manufacturing/doctype/routing/routing.js b/erpnext/manufacturing/doctype/routing/routing.js index 741a3f01fd..9b1a8ca670 100644 --- a/erpnext/manufacturing/doctype/routing/routing.js +++ b/erpnext/manufacturing/doctype/routing/routing.js @@ -2,7 +2,15 @@ // For license information, please see license.txt frappe.ui.form.on('Routing', { - setup: function(frm) { + refresh: function(frm) { + frm.trigger("display_sequence_id_column"); + }, + + onload: function(frm) { + frm.trigger("display_sequence_id_column"); + }, + + display_sequence_id_column: function(frm) { frappe.meta.get_docfield("BOM Operation", "sequence_id", frm.doc.name).in_list_view = true; diff --git a/erpnext/manufacturing/doctype/work_order/test_work_order.py b/erpnext/manufacturing/doctype/work_order/test_work_order.py index 5f8a13428c..e53927918e 100644 --- a/erpnext/manufacturing/doctype/work_order/test_work_order.py +++ b/erpnext/manufacturing/doctype/work_order/test_work_order.py @@ -443,6 +443,11 @@ class TestWorkOrder(unittest.TestCase): ste1 = frappe.get_doc(make_stock_entry(wo.name, "Manufacture", 1)) self.assertEqual(len(ste1.items), 3) + def test_cost_center_for_manufacture(self): + wo_order = make_wo_order_test_record() + ste = make_stock_entry(wo_order.name, "Material Transfer for Manufacture", wo_order.qty) + self.assertEquals(ste.get("items")[0].get("cost_center"), "_Test Cost Center - _TC") + def test_operation_time_with_batch_size(self): fg_item = "Test Batch Size Item For BOM" rm1 = "Test Batch Size Item RM 1 For BOM" diff --git a/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js b/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js index 2ac6fa073b..8cd016461c 100644 --- a/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js +++ b/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js @@ -25,11 +25,11 @@ frappe.query_reports["BOM Stock Report"] = { ], "formatter": function(value, row, column, data, default_formatter) { value = default_formatter(value, row, column, data); - if (column.id == "Item"){ - if (data["Enough Parts to Build"] > 0){ - value = `${data['Item']}` + if (column.id == "item") { + if (data["enough_parts_to_build"] > 0) { + value = `${data['item']}`; } else { - value = `${data['Item']}` + value = `${data['item']}`; } } return value diff --git a/erpnext/modules.txt b/erpnext/modules.txt index 1e2aeea36a..62f5dce846 100644 --- a/erpnext/modules.txt +++ b/erpnext/modules.txt @@ -25,4 +25,5 @@ Hub Node Quality Management Communication Loan Management -Payroll \ No newline at end of file +Payroll +Telephony \ No newline at end of file diff --git a/erpnext/non_profit/doctype/membership/membership.py b/erpnext/non_profit/doctype/membership/membership.py index 4c85cb60e8..7d15abaa3b 100644 --- a/erpnext/non_profit/doctype/membership/membership.py +++ b/erpnext/non_profit/doctype/membership/membership.py @@ -70,7 +70,7 @@ class Membership(Document): settings = frappe.get_doc("Membership Settings") if not member.customer: - frappe.throw(_("No customer linked to member {}", [member.name])) + frappe.throw(_("No customer linked to member {0}").format(frappe.bold(self.member))) if not settings.debit_account: frappe.throw(_("You need to set Debit Account in Membership Settings")) diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 5ef53715fb..86ac613ae5 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -632,7 +632,7 @@ execute:frappe.reload_doc('desk', 'doctype', 'dashboard_chart_source') execute:frappe.reload_doc('desk', 'doctype', 'dashboard_chart') execute:frappe.reload_doc('desk', 'doctype', 'dashboard_chart_field') erpnext.patches.v12_0.remove_bank_remittance_custom_fields -erpnext.patches.v12_0.generate_leave_ledger_entries #27-08-2020 +erpnext.patches.v12_0.generate_leave_ledger_entries #04-11-2020 execute:frappe.delete_doc_if_exists("Report", "Loan Repayment") erpnext.patches.v12_0.move_credit_limit_to_customer_credit_limit erpnext.patches.v12_0.add_variant_of_in_item_attribute_table @@ -691,6 +691,7 @@ erpnext.patches.v13_0.update_old_loans erpnext.patches.v12_0.set_serial_no_status #2020-05-21 erpnext.patches.v12_0.update_price_list_currency_in_bom execute:frappe.reload_doctype('Dashboard') +execute:frappe.reload_doc('desk', 'doctype', 'number_card_link') execute:frappe.delete_doc_if_exists('Dashboard', 'Accounts') erpnext.patches.v13_0.update_actual_start_and_end_date_in_wo erpnext.patches.v13_0.set_company_field_in_healthcare_doctypes #2020-05-25 @@ -732,4 +733,11 @@ erpnext.patches.v13_0.set_youtube_video_id erpnext.patches.v13_0.print_uom_after_quantity_patch erpnext.patches.v13_0.set_payment_channel_in_payment_gateway_account erpnext.patches.v13_0.create_healthcare_custom_fields_in_stock_entry_detail +erpnext.patches.v13_0.updates_for_multi_currency_payroll erpnext.patches.v13_0.update_reason_for_resignation_in_employee +erpnext.patches.v13_0.update_custom_fields_for_shopify +execute:frappe.delete_doc("Report", "Quoted Item Comparison") +erpnext.patches.v13_0.updates_for_multi_currency_payroll +erpnext.patches.v13_0.create_leave_policy_assignment_based_on_employee_current_leave_policy +erpnext.patches.v13_0.add_po_to_global_search +erpnext.patches.v13_0.update_returned_qty_in_pr_dn diff --git a/erpnext/patches/v11_0/create_salary_structure_assignments.py b/erpnext/patches/v11_0/create_salary_structure_assignments.py index c51c38182c..a908c16715 100644 --- a/erpnext/patches/v11_0/create_salary_structure_assignments.py +++ b/erpnext/patches/v11_0/create_salary_structure_assignments.py @@ -8,8 +8,8 @@ from frappe.utils import getdate from erpnext.payroll.doctype.salary_structure_assignment.salary_structure_assignment import DuplicateAssignment def execute(): - frappe.reload_doc('Payroll', 'doctype', 'salary_structure') - frappe.reload_doc("Payroll", "doctype", "salary_structure_assignment") + frappe.reload_doc('Payroll', 'doctype', 'Salary Structure') + frappe.reload_doc("Payroll", "doctype", "Salary Structure Assignment") frappe.db.sql(""" delete from `tabSalary Structure Assignment` where salary_structure in (select name from `tabSalary Structure` where is_active='No' or docstatus!=1) @@ -33,6 +33,13 @@ def execute(): AND employee in (select name from `tabEmployee` where ifNull(status, '') != 'Left') """.format(cols), as_dict=1) + all_companies = frappe.db.get_all("Company", fields=["name", "default_currency"]) + for d in all_companies: + company = d.name + company_currency = d.default_currency + + frappe.db.sql("""update `tabSalary Structure` set currency = %s where company=%s""", (company_currency, company)) + for d in ss_details: try: joining_date, relieving_date = frappe.db.get_value("Employee", d.employee, @@ -42,6 +49,7 @@ def execute(): from_date = joining_date elif relieving_date and getdate(from_date) > relieving_date: continue + company_currency = frappe.db.get_value('Company', d.company, 'default_currency') s = frappe.new_doc("Salary Structure Assignment") s.employee = d.employee @@ -52,6 +60,7 @@ def execute(): s.base = d.get("base") s.variable = d.get("variable") s.company = d.company + s.currency = company_currency # to migrate the data of the old employees s.flags.old_employee = True diff --git a/erpnext/patches/v12_0/generate_leave_ledger_entries.py b/erpnext/patches/v12_0/generate_leave_ledger_entries.py index 342c12996d..fe072d7eb9 100644 --- a/erpnext/patches/v12_0/generate_leave_ledger_entries.py +++ b/erpnext/patches/v12_0/generate_leave_ledger_entries.py @@ -11,8 +11,6 @@ def execute(): frappe.reload_doc("HR", "doctype", "Leave Ledger Entry") frappe.reload_doc("HR", "doctype", "Leave Encashment") frappe.reload_doc("HR", "doctype", "Leave Type") - if frappe.db.a_row_exists("Leave Ledger Entry"): - return if not frappe.get_meta("Leave Allocation").has_field("unused_leaves"): frappe.reload_doc("HR", "doctype", "Leave Allocation") @@ -53,7 +51,7 @@ def generate_encashment_leave_ledger_entries(): for encashment in leave_encashments: if not frappe.db.exists("Leave Ledger Entry", {'transaction_type': 'Leave Encashment', 'transaction_name': encashment.name}): - frappe.get_doc("Leave Enchashment", encashment).create_leave_ledger_entry() + frappe.get_doc("Leave Encashment", encashment).create_leave_ledger_entry() def generate_expiry_allocation_ledger_entries(): ''' fix ledger entries for missing leave allocation transaction ''' diff --git a/erpnext/patches/v13_0/add_po_to_global_search.py b/erpnext/patches/v13_0/add_po_to_global_search.py new file mode 100644 index 0000000000..1c60b18e5b --- /dev/null +++ b/erpnext/patches/v13_0/add_po_to_global_search.py @@ -0,0 +1,17 @@ +from __future__ import unicode_literals +import frappe + + +def execute(): + global_search_settings = frappe.get_single("Global Search Settings") + + if "Purchase Order" in ( + dt.document_type for dt in global_search_settings.allowed_in_global_search + ): + return + + global_search_settings.append( + "allowed_in_global_search", {"document_type": "Purchase Order"} + ) + + global_search_settings.save(ignore_permissions=True) diff --git a/erpnext/patches/v13_0/create_leave_policy_assignment_based_on_employee_current_leave_policy.py b/erpnext/patches/v13_0/create_leave_policy_assignment_based_on_employee_current_leave_policy.py new file mode 100644 index 0000000000..90dc0e2e18 --- /dev/null +++ b/erpnext/patches/v13_0/create_leave_policy_assignment_based_on_employee_current_leave_policy.py @@ -0,0 +1,79 @@ +# Copyright (c) 2019, Frappe and Contributors +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals + +import frappe + +def execute(): + if "leave_policy" in frappe.db.get_table_columns("Employee"): + employees_with_leave_policy = frappe.db.sql("SELECT name, leave_policy FROM `tabEmployee` WHERE leave_policy IS NOT NULL and leave_policy != ''", as_dict = 1) + + employee_with_assignment = [] + leave_policy =[] + + #for employee + + for employee in employees_with_leave_policy: + alloc = frappe.db.exists("Leave Allocation", {"employee":employee.name, "leave_policy": employee.leave_policy, "docstatus": 1}) + if not alloc: + create_assignment(employee.name, employee.leave_policy) + + employee_with_assignment.append(employee.name) + leave_policy.append(employee.leave_policy) + + + if "default_leave_policy" in frappe.db.get_table_columns("Employee"): + employee_grade_with_leave_policy = frappe.db.sql("SELECT name, default_leave_policy FROM `tabEmployee Grade` WHERE default_leave_policy IS NOT NULL and default_leave_policy!=''", as_dict = 1) + + #for whole employee Grade + + for grade in employee_grade_with_leave_policy: + employees = get_employee_with_grade(grade.name) + for employee in employees: + + if employee not in employee_with_assignment: #Will ensure no duplicate + alloc = frappe.db.exists("Leave Allocation", {"employee":employee.name, "leave_policy": grade.default_leave_policy, "docstatus": 1}) + if not alloc: + create_assignment(employee.name, grade.default_leave_policy) + leave_policy.append(grade.default_leave_policy) + + #for old Leave allocation and leave policy from allocation, which may got updated in employee grade. + leave_allocations = frappe.db.sql("SELECT leave_policy, leave_period, employee FROM `tabLeave Allocation` WHERE leave_policy IS NOT NULL and leave_policy != '' and docstatus = 1 ", as_dict = 1) + + for allocation in leave_allocations: + if allocation.leave_policy not in leave_policy: + create_assignment(allocation.employee, allocation.leave_policy, leave_period=allocation.leave_period, + allocation_exists=True) + +def create_assignment(employee, leave_policy, leave_period=None, allocation_exists = False): + + filters = {"employee":employee, "leave_policy": leave_policy} + if leave_period: + filters["leave_period"] = leave_period + + frappe.reload_doc('hr', 'doctype', 'leave_policy_assignment') + + if not frappe.db.exists("Leave Policy Assignment" , filters): + lpa = frappe.new_doc("Leave Policy Assignment") + lpa.employee = employee + lpa.leave_policy = leave_policy + + lpa.flags.ignore_mandatory = True + if allocation_exists: + lpa.assignment_based_on = 'Leave Period' + lpa.leave_period = leave_period + lpa.leaves_allocated = 1 + + lpa.save() + if allocation_exists: + lpa.submit() + #Updating old Leave Allocation + frappe.db.sql("Update `tabLeave Allocation` set leave_policy_assignment = %s", lpa.name) + + +def get_employee_with_grade(grade): + return frappe.get_list("Employee", filters = {"grade": grade}) + + + diff --git a/erpnext/patches/v13_0/rename_issue_doctype_fields.py b/erpnext/patches/v13_0/rename_issue_doctype_fields.py index 96a63623c0..fa1dfed643 100644 --- a/erpnext/patches/v13_0/rename_issue_doctype_fields.py +++ b/erpnext/patches/v13_0/rename_issue_doctype_fields.py @@ -29,7 +29,7 @@ def execute(): 'response_by_variance': response_by_variance, 'resolution_by_variance': resolution_by_variance, 'first_response_time': mins_to_first_response - }) + }, update_modified=False) # commit after every 100 updates count += 1 if count%100 == 0: @@ -44,7 +44,7 @@ def execute(): count = 0 for entry in opportunities: mins_to_first_response = convert_to_seconds(entry.mins_to_first_response, 'Minutes') - frappe.db.set_value('Opportunity', entry.name, 'first_response_time', mins_to_first_response) + frappe.db.set_value('Opportunity', entry.name, 'first_response_time', mins_to_first_response, update_modified=False) # commit after every 100 updates count += 1 if count%100 == 0: diff --git a/erpnext/patches/v13_0/update_custom_fields_for_shopify.py b/erpnext/patches/v13_0/update_custom_fields_for_shopify.py new file mode 100644 index 0000000000..f1d2ea2d74 --- /dev/null +++ b/erpnext/patches/v13_0/update_custom_fields_for_shopify.py @@ -0,0 +1,10 @@ +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors +# MIT License. See license.txt + +from __future__ import unicode_literals +import frappe +from erpnext.erpnext_integrations.doctype.shopify_settings.shopify_settings import setup_custom_fields + +def execute(): + if frappe.db.get_single_value('Shopify Settings', 'enable_shopify'): + setup_custom_fields() diff --git a/erpnext/patches/v13_0/update_returned_qty_in_pr_dn.py b/erpnext/patches/v13_0/update_returned_qty_in_pr_dn.py new file mode 100644 index 0000000000..7f42cd92e3 --- /dev/null +++ b/erpnext/patches/v13_0/update_returned_qty_in_pr_dn.py @@ -0,0 +1,27 @@ +# Copyright (c) 2019, Frappe and Contributors +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import frappe + +def execute(): + frappe.reload_doc('stock', 'doctype', 'purchase_receipt') + frappe.reload_doc('stock', 'doctype', 'purchase_receipt_item') + frappe.reload_doc('stock', 'doctype', 'delivery_note') + frappe.reload_doc('stock', 'doctype', 'delivery_note_item') + + def update_from_return_docs(doctype): + for return_doc in frappe.get_all(doctype, filters={'is_return' : 1, 'docstatus' : 1}): + # Update original receipt/delivery document from return + return_doc = frappe.get_cached_doc(doctype, return_doc.name) + return_doc.update_prevdoc_status() + return_against = frappe.get_doc(doctype, return_doc.return_against) + return_against.update_billing_status() + + # Set received qty in stock uom in PR, as returned qty is checked against it + frappe.db.sql(""" update `tabPurchase Receipt Item` + set received_stock_qty = received_qty * conversion_factor + where docstatus = 1 """) + + for doctype in ('Purchase Receipt', 'Delivery Note'): + update_from_return_docs(doctype) \ No newline at end of file diff --git a/erpnext/patches/v13_0/updates_for_multi_currency_payroll.py b/erpnext/patches/v13_0/updates_for_multi_currency_payroll.py new file mode 100644 index 0000000000..340bf4947b --- /dev/null +++ b/erpnext/patches/v13_0/updates_for_multi_currency_payroll.py @@ -0,0 +1,136 @@ +# Copyright (c) 2019, Frappe and Contributors +# License: GNU General Public License v3. See license.txt + +import frappe +from frappe import _ +from frappe.model.utils.rename_field import rename_field + +def execute(): + + frappe.reload_doc('Accounts', 'doctype', 'Salary Component Account') + if frappe.db.has_column('Salary Component Account', 'default_account'): + rename_field("Salary Component Account", "default_account", "account") + + doctype_list = [ + { + 'module':'HR', + 'doctype':'Employee Advance' + }, + { + 'module':'HR', + 'doctype':'Leave Encashment' + }, + { + 'module':'Payroll', + 'doctype':'Additional Salary' + }, + { + 'module':'Payroll', + 'doctype':'Employee Benefit Application' + }, + { + 'module':'Payroll', + 'doctype':'Employee Benefit Claim' + }, + { + 'module':'Payroll', + 'doctype':'Employee Incentive' + }, + { + 'module':'Payroll', + 'doctype':'Employee Tax Exemption Declaration' + }, + { + 'module':'Payroll', + 'doctype':'Employee Tax Exemption Proof Submission' + }, + { + 'module':'Payroll', + 'doctype':'Income Tax Slab' + }, + { + 'module':'Payroll', + 'doctype':'Payroll Entry' + }, + { + 'module':'Payroll', + 'doctype':'Retention Bonus' + }, + { + 'module':'Payroll', + 'doctype':'Salary Structure' + }, + { + 'module':'Payroll', + 'doctype':'Salary Structure Assignment' + }, + { + 'module':'Payroll', + 'doctype':'Salary Slip' + }, + ] + + for item in doctype_list: + frappe.reload_doc(item['module'], 'doctype', item['doctype']) + + # update company in employee advance based on employee company + for dt in ['Employee Incentive', 'Leave Encashment', 'Employee Benefit Application', 'Employee Benefit Claim']: + frappe.db.sql(""" + update `tab{doctype}` + set company = (select company from tabEmployee where name=`tab{doctype}`.employee) + """.format(doctype=dt)) + + # update exchange rate for employee advance + frappe.db.sql("update `tabEmployee Advance` set exchange_rate=1") + + # get all companies and it's currency + all_companies = frappe.db.get_all("Company", fields=["name", "default_currency", "default_payroll_payable_account"]) + for d in all_companies: + company = d.name + company_currency = d.default_currency + default_payroll_payable_account = d.default_payroll_payable_account + + if not default_payroll_payable_account: + default_payroll_payable_account = frappe.db.get_value("Account", + {"account_name": _("Payroll Payable"), "company": company, "account_currency": company_currency, "is_group": 0}) + + # update currency in following doctypes based on company currency + doctypes_for_currency = ['Employee Advance', 'Leave Encashment', 'Employee Benefit Application', + 'Employee Benefit Claim', 'Employee Incentive', 'Additional Salary', + 'Employee Tax Exemption Declaration', 'Employee Tax Exemption Proof Submission', + 'Income Tax Slab', 'Retention Bonus', 'Salary Structure'] + + for dt in doctypes_for_currency: + frappe.db.sql("""update `tab{doctype}` set currency = %s where company=%s""" + .format(doctype=dt), (company_currency, company)) + + # update fields in payroll entry + frappe.db.sql(""" + update `tabPayroll Entry` + set currency = %s, + exchange_rate = 1, + payroll_payable_account=%s + where company=%s + """, (company_currency, default_payroll_payable_account, company)) + + # update fields in Salary Structure Assignment + frappe.db.sql(""" + update `tabSalary Structure Assignment` + set currency = %s, + payroll_payable_account=%s + where company=%s + """, (company_currency, default_payroll_payable_account, company)) + + # update fields in Salary Slip + frappe.db.sql(""" + update `tabSalary Slip` + set currency = %s, + exchange_rate = 1, + base_hour_rate = hour_rate, + base_gross_pay = gross_pay, + base_total_deduction = total_deduction, + base_net_pay = net_pay, + base_rounded_total = rounded_total, + base_total_in_words = total_in_words + where company=%s + """, (company_currency, company)) diff --git a/erpnext/patches/v7_0/po_status_issue_for_pr_return.py b/erpnext/patches/v7_0/po_status_issue_for_pr_return.py index 6e92ffb8a0..910814fd22 100644 --- a/erpnext/patches/v7_0/po_status_issue_for_pr_return.py +++ b/erpnext/patches/v7_0/po_status_issue_for_pr_return.py @@ -7,19 +7,23 @@ import frappe def execute(): parent_list = [] count = 0 - for data in frappe.db.sql(""" - select + + frappe.reload_doc('stock', 'doctype', 'purchase_receipt') + frappe.reload_doc('stock', 'doctype', 'purchase_receipt_item') + + for data in frappe.db.sql(""" + select `tabPurchase Receipt Item`.purchase_order, `tabPurchase Receipt Item`.name, `tabPurchase Receipt Item`.item_code, `tabPurchase Receipt Item`.idx, `tabPurchase Receipt Item`.parent - from + from `tabPurchase Receipt Item`, `tabPurchase Receipt` where `tabPurchase Receipt Item`.parent = `tabPurchase Receipt`.name and `tabPurchase Receipt Item`.purchase_order_item is null and `tabPurchase Receipt Item`.purchase_order is not null and `tabPurchase Receipt`.is_return = 1""", as_dict=1): - name = frappe.db.get_value('Purchase Order Item', + name = frappe.db.get_value('Purchase Order Item', {'item_code': data.item_code, 'parent': data.purchase_order, 'idx': data.idx}, 'name') if name: diff --git a/erpnext/payroll/doctype/additional_salary/additional_salary.js b/erpnext/payroll/doctype/additional_salary/additional_salary.js index d56cd4e967..0784de93eb 100644 --- a/erpnext/payroll/doctype/additional_salary/additional_salary.js +++ b/erpnext/payroll/doctype/additional_salary/additional_salary.js @@ -12,5 +12,57 @@ frappe.ui.form.on('Additional Salary', { } }; }); + + if (!frm.doc.currency) return; + frm.set_query("salary_component", function() { + return { + query: "erpnext.payroll.doctype.salary_structure.salary_structure.get_earning_deduction_components", + filters: {currency: frm.doc.currency, company: frm.doc.company} + }; + }); + }, + + employee: function(frm) { + if (frm.doc.employee) { + frappe.run_serially([ + () => frm.trigger('get_employee_currency'), + () => frm.trigger('set_company') + ]); + } else { + frm.set_value("company", null); + } + }, + + set_company: function(frm) { + frappe.call({ + method: "frappe.client.get_value", + args: { + doctype: "Employee", + fieldname: "company", + filters: { + name: frm.doc.employee + } + }, + callback: function(data) { + if (data.message) { + frm.set_value("company", data.message.company); + } + } + }); + }, + + get_employee_currency: function(frm) { + frappe.call({ + method: "erpnext.payroll.doctype.salary_structure_assignment.salary_structure_assignment.get_employee_currency", + args: { + employee: frm.doc.employee, + }, + callback: function(r) { + if (r.message) { + frm.set_value('currency', r.message); + frm.refresh_fields(); + } + } + }); }, }); diff --git a/erpnext/payroll/doctype/additional_salary/additional_salary.json b/erpnext/payroll/doctype/additional_salary/additional_salary.json index 69cb5da893..2b29f667fb 100644 --- a/erpnext/payroll/doctype/additional_salary/additional_salary.json +++ b/erpnext/payroll/doctype/additional_salary/additional_salary.json @@ -11,20 +11,21 @@ "employee", "employee_name", "salary_component", - "overwrite_salary_structure_amount", - "deduct_full_tax_on_selected_payroll_date", + "type", + "amount", "ref_doctype", "ref_docname", + "amended_from", "column_break_5", "company", - "is_recurring", + "department", + "currency", "from_date", "to_date", "payroll_date", - "type", - "department", - "amount", - "amended_from" + "is_recurring", + "overwrite_salary_structure_amount", + "deduct_full_tax_on_selected_payroll_date" ], "fields": [ { @@ -59,6 +60,7 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Amount", + "options": "currency", "reqd": 1 }, { @@ -159,11 +161,22 @@ "label": "Reference Document", "options": "ref_doctype", "read_only": 1 + }, + { + "default": "Company:company:default_currency", + "depends_on": "eval:(doc.docstatus==1 || doc.employee)", + "fieldname": "currency", + "fieldtype": "Link", + "label": "Currency", + "options": "Currency", + "print_hide": 1, + "read_only": 1, + "reqd": 1 } ], "is_submittable": 1, "links": [], - "modified": "2020-06-22 21:10:50.374063", + "modified": "2020-10-20 17:51:13.419716", "modified_by": "Administrator", "module": "Payroll", "name": "Additional Salary", diff --git a/erpnext/payroll/doctype/additional_salary/additional_salary.py b/erpnext/payroll/doctype/additional_salary/additional_salary.py index e3dc9070ec..f5af677fce 100644 --- a/erpnext/payroll/doctype/additional_salary/additional_salary.py +++ b/erpnext/payroll/doctype/additional_salary/additional_salary.py @@ -22,10 +22,15 @@ class AdditionalSalary(Document): def validate(self): self.validate_dates() + self.validate_salary_structure() self.validate_recurring_additional_salary_overlap() if self.amount < 0: frappe.throw(_("Amount should not be less than zero.")) + def validate_salary_structure(self): + if not frappe.db.exists('Salary Structure Assignment', {'employee': self.employee}): + frappe.throw(_("There is no Salary Structure assigned to {0}. First assign a Salary Stucture.").format(self.employee)) + def validate_recurring_additional_salary_overlap(self): if self.is_recurring: additional_salaries = frappe.db.sql(""" diff --git a/erpnext/payroll/doctype/additional_salary/test_additional_salary.py b/erpnext/payroll/doctype/additional_salary/test_additional_salary.py index de26543b57..4d47f25fcf 100644 --- a/erpnext/payroll/doctype/additional_salary/test_additional_salary.py +++ b/erpnext/payroll/doctype/additional_salary/test_additional_salary.py @@ -8,6 +8,7 @@ from frappe.utils import nowdate, add_days from erpnext.hr.doctype.employee.test_employee import make_employee from erpnext.payroll.doctype.salary_component.test_salary_component import create_salary_component from erpnext.payroll.doctype.salary_slip.test_salary_slip import make_employee_salary_slip, setup_test +from erpnext.payroll.doctype.salary_structure.test_salary_structure import make_salary_structure class TestAdditionalSalary(unittest.TestCase): @@ -15,12 +16,19 @@ class TestAdditionalSalary(unittest.TestCase): def setUp(self): setup_test() + def tearDown(self): + for dt in ["Salary Slip", "Additional Salary", "Salary Structure Assignment", "Salary Structure"]: + frappe.db.sql("delete from `tab%s`" % dt) + def test_recurring_additional_salary(self): + amount = 0 + salary_component = None emp_id = make_employee("test_additional@salary.com") frappe.db.set_value("Employee", emp_id, "relieving_date", add_days(nowdate(), 1800)) + salary_structure = make_salary_structure("Test Salary Structure Additional Salary", "Monthly", employee=emp_id) add_sal = get_additional_salary(emp_id) - - ss = make_employee_salary_slip("test_additional@salary.com", "Monthly") + + ss = make_employee_salary_slip("test_additional@salary.com", "Monthly", salary_structure=salary_structure.name) for earning in ss.earnings: if earning.salary_component == "Recurring Salary Component": amount = earning.amount @@ -29,8 +37,6 @@ class TestAdditionalSalary(unittest.TestCase): self.assertEqual(amount, add_sal.amount) self.assertEqual(salary_component, add_sal.salary_component) - - def get_additional_salary(emp_id): create_salary_component("Recurring Salary Component") add_sal = frappe.new_doc("Additional Salary") @@ -40,6 +46,7 @@ def get_additional_salary(emp_id): add_sal.from_date = add_days(nowdate(), -50) add_sal.to_date = add_days(nowdate(), 180) add_sal.amount = 5000 + add_sal.currency = erpnext.get_default_currency() add_sal.save() add_sal.submit() diff --git a/erpnext/payroll/doctype/employee_benefit_application/employee_benefit_application.js b/erpnext/payroll/doctype/employee_benefit_application/employee_benefit_application.js index f509df31e8..6756cd93e7 100644 --- a/erpnext/payroll/doctype/employee_benefit_application/employee_benefit_application.js +++ b/erpnext/payroll/doctype/employee_benefit_application/employee_benefit_application.js @@ -3,7 +3,12 @@ frappe.ui.form.on('Employee Benefit Application', { employee: function(frm) { - frm.trigger('set_earning_component'); + if (frm.doc.employee) { + frappe.run_serially([ + () => frm.trigger('get_employee_currency'), + () => frm.trigger('set_earning_component') + ]); + } var method, args; if(frm.doc.employee && frm.doc.date && frm.doc.payroll_period){ method = "erpnext.payroll.doctype.employee_benefit_application.employee_benefit_application.get_max_benefits_remaining"; @@ -38,9 +43,26 @@ frappe.ui.form.on('Employee Benefit Application', { }); }, + get_employee_currency: function(frm) { + if (frm.doc.employee) { + frappe.call({ + method: "erpnext.payroll.doctype.salary_structure_assignment.salary_structure_assignment.get_employee_currency", + args: { + employee: frm.doc.employee, + }, + callback: function(r) { + if (r.message) { + frm.set_value('currency', r.message); + frm.refresh_fields(); + } + } + }); + } + }, + payroll_period: function(frm) { var method, args; - if(frm.doc.employee && frm.doc.date && frm.doc.payroll_period){ + if (frm.doc.employee && frm.doc.date && frm.doc.payroll_period) { method = "erpnext.payroll.doctype.employee_benefit_application.employee_benefit_application.get_max_benefits_remaining"; args = { employee: frm.doc.employee, @@ -60,11 +82,14 @@ var get_max_benefits=function(frm, method, args) { method: method, args: args, callback: function (data) { - if(!data.exc){ - if(data.message){ + if (!data.exc) { + if (data.message) { frm.set_value("max_benefits", data.message); + } else { + frm.set_value("max_benefits", 0); } } + frm.refresh_fields(); } }); }; @@ -82,14 +107,19 @@ var calculate_all = function(doc) { var tbl = doc.employee_benefits || []; var pro_rata_dispensed_amount = 0; var total_amount = 0; - for(var i = 0; i < tbl.length; i++){ - if(cint(tbl[i].amount) > 0) { - total_amount += flt(tbl[i].amount); - } - if(tbl[i].pay_against_benefit_claim != 1){ - pro_rata_dispensed_amount += flt(tbl[i].amount); + if (doc.max_benefits === 0) { + doc.employee_benefits = []; + } else { + for (var i = 0; i < tbl.length; i++) { + if (cint(tbl[i].amount) > 0) { + total_amount += flt(tbl[i].amount); + } + if (tbl[i].pay_against_benefit_claim != 1) { + pro_rata_dispensed_amount += flt(tbl[i].amount); + } } } + doc.total_amount = total_amount; doc.remaining_benefit = doc.max_benefits - total_amount; doc.pro_rata_dispensed_amount = pro_rata_dispensed_amount; diff --git a/erpnext/payroll/doctype/employee_benefit_application/employee_benefit_application.json b/erpnext/payroll/doctype/employee_benefit_application/employee_benefit_application.json index b0c1bd6c3e..9a5a463152 100644 --- a/erpnext/payroll/doctype/employee_benefit_application/employee_benefit_application.json +++ b/erpnext/payroll/doctype/employee_benefit_application/employee_benefit_application.json @@ -10,12 +10,14 @@ "field_order": [ "employee", "employee_name", + "currency", "max_benefits", "remaining_benefit", "column_break_2", "date", "payroll_period", "department", + "company", "amended_from", "section_break_4", "employee_benefits", @@ -43,12 +45,14 @@ "fieldname": "max_benefits", "fieldtype": "Currency", "label": "Max Benefits (Yearly)", + "options": "currency", "read_only": 1 }, { "fieldname": "remaining_benefit", "fieldtype": "Currency", "label": "Remaining Benefits (Yearly)", + "options": "currency", "read_only": 1 }, { @@ -108,18 +112,38 @@ "fieldname": "total_amount", "fieldtype": "Currency", "label": "Total Amount", + "options": "currency", "read_only": 1 }, { "fieldname": "pro_rata_dispensed_amount", "fieldtype": "Currency", "label": "Dispensed Amount (Pro-rated)", + "options": "currency", "read_only": 1 + }, + { + "default": "Company:company:default_currency", + "depends_on": "eval:(doc.docstatus==1 || doc.employee)", + "fieldname": "currency", + "fieldtype": "Link", + "label": "Currency", + "options": "Currency", + "read_only": 1, + "reqd": 1 + }, + { + "fetch_from": "employee.company", + "fieldname": "company", + "fieldtype": "Link", + "label": "Company", + "options": "Company", + "reqd": 1 } ], "is_submittable": 1, "links": [], - "modified": "2020-06-22 22:58:31.271922", + "modified": "2020-11-25 11:49:05.095101", "modified_by": "Administrator", "module": "Payroll", "name": "Employee Benefit Application", diff --git a/erpnext/payroll/doctype/employee_benefit_application/employee_benefit_application.py b/erpnext/payroll/doctype/employee_benefit_application/employee_benefit_application.py index ef844fbd3b..27df30a459 100644 --- a/erpnext/payroll/doctype/employee_benefit_application/employee_benefit_application.py +++ b/erpnext/payroll/doctype/employee_benefit_application/employee_benefit_application.py @@ -33,8 +33,8 @@ class EmployeeBenefitApplication(Document): benefit_given = get_sal_slip_total_benefit_given(self.employee, payroll_period, component = benefit.earning_component) benefit_claim_remining = benefit_claimed - benefit_given if benefit_claimed > 0 and benefit_claim_remining > benefit.amount: - frappe.throw(_("An amount of {0} already claimed for the component {1},\ - set the amount equal or greater than {2}").format(benefit_claimed, benefit.earning_component, benefit_claim_remining)) + frappe.throw(_("An amount of {0} already claimed for the component {1}, set the amount equal or greater than {2}").format( + benefit_claimed, benefit.earning_component, benefit_claim_remining)) def validate_remaining_benefit_amount(self): # check salary structure earnings have flexi component (sum of max_benefit_amount) @@ -62,11 +62,11 @@ class EmployeeBenefitApplication(Document): if pro_rata_amount == 0 and non_pro_rata_amount == 0: frappe.throw(_("Please add the remaining benefits {0} to any of the existing component").format(self.remaining_benefit)) elif non_pro_rata_amount > 0 and non_pro_rata_amount < rounded(self.remaining_benefit): - frappe.throw(_("You can claim only an amount of {0}, the rest amount {1} should be in the application \ - as pro-rata component").format(non_pro_rata_amount, self.remaining_benefit - non_pro_rata_amount)) + frappe.throw(_("You can claim only an amount of {0}, the rest amount {1} should be in the application as pro-rata component").format( + non_pro_rata_amount, self.remaining_benefit - non_pro_rata_amount)) elif non_pro_rata_amount == 0: - frappe.throw(_("Please add the remaining benefits {0} to the application as \ - pro-rata component").format(self.remaining_benefit)) + frappe.throw(_("Please add the remaining benefits {0} to the application as pro-rata component").format( + self.remaining_benefit)) def validate_max_benefit_for_component(self): if self.employee_benefits: @@ -115,7 +115,7 @@ def get_max_benefits_remaining(employee, on_date, payroll_period): if max_benefits and max_benefits > 0: have_depends_on_payment_days = False per_day_amount_total = 0 - payroll_period_days = get_payroll_period_days(on_date, on_date, employee)[0] + payroll_period_days = get_payroll_period_days(on_date, on_date, employee)[1] payroll_period_obj = frappe.get_doc("Payroll Period", payroll_period) # Get all salary slip flexi amount in the payroll period @@ -239,4 +239,17 @@ def get_earning_components(doctype, txt, searchfield, start, page_len, filters): """, salary_structure) else: frappe.throw(_("Salary Structure not found for employee {0} and date {1}") - .format(filters['employee'], filters['date'])) \ No newline at end of file + .format(filters['employee'], filters['date'])) + +@frappe.whitelist() +def get_earning_components_max_benefits(employee, date, earning_component): + salary_structure = get_assigned_salary_structure(employee, date) + amount = frappe.db.sql(""" + select amount + from `tabSalary Detail` + where parent = %s and is_flexible_benefit = 1 + and salary_component = %s + order by name + """, salary_structure, earning_component) + + return amount if amount else 0 \ No newline at end of file diff --git a/erpnext/payroll/doctype/employee_benefit_application_detail/employee_benefit_application_detail.json b/erpnext/payroll/doctype/employee_benefit_application_detail/employee_benefit_application_detail.json index fa6b4da2af..c93d356c20 100644 --- a/erpnext/payroll/doctype/employee_benefit_application_detail/employee_benefit_application_detail.json +++ b/erpnext/payroll/doctype/employee_benefit_application_detail/employee_benefit_application_detail.json @@ -33,6 +33,7 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Max Benefit Amount", + "options": "currency", "read_only": 1 }, { @@ -40,12 +41,13 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Amount", + "options": "currency", "reqd": 1 } ], "istable": 1, "links": [], - "modified": "2020-06-22 23:45:00.519134", + "modified": "2020-09-29 16:22:15.783854", "modified_by": "Administrator", "module": "Payroll", "name": "Employee Benefit Application Detail", diff --git a/erpnext/payroll/doctype/employee_benefit_claim/employee_benefit_claim.js b/erpnext/payroll/doctype/employee_benefit_claim/employee_benefit_claim.js index 6db6cb86b3..ea9ccd5205 100644 --- a/erpnext/payroll/doctype/employee_benefit_claim/employee_benefit_claim.js +++ b/erpnext/payroll/doctype/employee_benefit_claim/employee_benefit_claim.js @@ -12,5 +12,24 @@ frappe.ui.form.on('Employee Benefit Claim', { }, employee: function(frm) { frm.set_value("earning_component", null); + if (frm.doc.employee) { + frappe.call({ + method: "erpnext.payroll.doctype.salary_structure_assignment.salary_structure_assignment.get_employee_currency", + args: { + employee: frm.doc.employee, + }, + callback: function(r) { + if (r.message) { + frm.set_value('currency', r.message); + frm.set_df_property('currency', 'hidden', 0); + } + } + }); + } + if (!frm.doc.earning_component) { + frm.doc.max_amount_eligible = null; + frm.doc.claimed_amount = null; + } + frm.refresh_fields(); } }); diff --git a/erpnext/payroll/doctype/employee_benefit_claim/employee_benefit_claim.json b/erpnext/payroll/doctype/employee_benefit_claim/employee_benefit_claim.json index ae4c218615..da24aacda1 100644 --- a/erpnext/payroll/doctype/employee_benefit_claim/employee_benefit_claim.json +++ b/erpnext/payroll/doctype/employee_benefit_claim/employee_benefit_claim.json @@ -12,6 +12,8 @@ "department", "column_break_3", "claim_date", + "currency", + "company", "benefit_type_and_amount", "earning_component", "max_amount_eligible", @@ -76,6 +78,7 @@ "fieldname": "max_amount_eligible", "fieldtype": "Currency", "label": "Max Amount Eligible", + "options": "currency", "read_only": 1 }, { @@ -92,6 +95,7 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Claimed Amount", + "options": "currency", "reqd": 1 }, { @@ -119,11 +123,29 @@ "fieldname": "attachments", "fieldtype": "Attach", "label": "Attachments" + }, + { + "default": "Company:company:default_currency", + "fieldname": "currency", + "fieldtype": "Link", + "hidden": 1, + "label": "Currency", + "options": "Currency", + "read_only": 1, + "reqd": 1 + }, + { + "fetch_from": "employee.company", + "fieldname": "company", + "fieldtype": "Link", + "label": "Company", + "options": "Company", + "reqd": 1 } ], "is_submittable": 1, "links": [], - "modified": "2020-06-22 23:01:50.791676", + "modified": "2020-11-25 11:49:56.097352", "modified_by": "Administrator", "module": "Payroll", "name": "Employee Benefit Claim", diff --git a/erpnext/payroll/doctype/employee_incentive/employee_incentive.js b/erpnext/payroll/doctype/employee_incentive/employee_incentive.js index db0f83aac9..85d1c54a22 100644 --- a/erpnext/payroll/doctype/employee_incentive/employee_incentive.js +++ b/erpnext/payroll/doctype/employee_incentive/employee_incentive.js @@ -11,12 +11,57 @@ frappe.ui.form.on('Employee Incentive', { }; }); + if (!frm.doc.currency) return; frm.set_query("salary_component", function() { return { - filters: { - "type": "Earning" - } + query: "erpnext.payroll.doctype.salary_structure.salary_structure.get_earning_deduction_components", + filters: {type: "earning", currency: frm.doc.currency, company: frm.doc.company} }; }); - } + + }, + + employee: function(frm) { + if (frm.doc.employee) { + frappe.run_serially([ + () => frm.trigger('get_employee_currency'), + () => frm.trigger('set_company') + ]); + } else { + frm.set_value("company", null); + } + }, + + set_company: function(frm) { + frappe.call({ + method: "frappe.client.get_value", + args: { + doctype: "Employee", + fieldname: "company", + filters: { + name: frm.doc.employee + } + }, + callback: function(data) { + if (data.message) { + frm.set_value("company", data.message.company); + } + } + }); + }, + + get_employee_currency: function(frm) { + frappe.call({ + method: "erpnext.payroll.doctype.salary_structure_assignment.salary_structure_assignment.get_employee_currency", + args: { + employee: frm.doc.employee, + }, + callback: function(r) { + if (r.message) { + frm.set_value('currency', r.message); + frm.refresh_fields(); + } + } + }); + }, }); diff --git a/erpnext/payroll/doctype/employee_incentive/employee_incentive.json b/erpnext/payroll/doctype/employee_incentive/employee_incentive.json index 204c9a40b1..e5b1052b3a 100644 --- a/erpnext/payroll/doctype/employee_incentive/employee_incentive.json +++ b/erpnext/payroll/doctype/employee_incentive/employee_incentive.json @@ -7,10 +7,12 @@ "engine": "InnoDB", "field_order": [ "employee", - "incentive_amount", "employee_name", - "salary_component", + "company", + "currency", + "incentive_amount", "column_break_5", + "salary_component", "payroll_date", "department", "amended_from" @@ -28,6 +30,7 @@ "fieldname": "incentive_amount", "fieldtype": "Currency", "label": "Incentive Amount", + "options": "currency", "reqd": 1 }, { @@ -70,11 +73,29 @@ "label": "Salary Component", "options": "Salary Component", "reqd": 1 + }, + { + "default": "Company:company:default_currency", + "depends_on": "eval:(doc.docstatus==1 || doc.employee)", + "fieldname": "currency", + "fieldtype": "Link", + "label": "Currency", + "options": "Currency", + "print_hide": 1, + "read_only": 1, + "reqd": 1 + }, + { + "fieldname": "company", + "fieldtype": "Link", + "label": "Company", + "options": "Company", + "reqd": 1 } ], "is_submittable": 1, "links": [], - "modified": "2020-06-22 22:42:51.209630", + "modified": "2020-10-20 17:22:16.468042", "modified_by": "Administrator", "module": "Payroll", "name": "Employee Incentive", diff --git a/erpnext/payroll/doctype/employee_incentive/employee_incentive.py b/erpnext/payroll/doctype/employee_incentive/employee_incentive.py index 84a97f6bb2..ead3db126f 100644 --- a/erpnext/payroll/doctype/employee_incentive/employee_incentive.py +++ b/erpnext/payroll/doctype/employee_incentive/employee_incentive.py @@ -4,14 +4,23 @@ from __future__ import unicode_literals import frappe +from frappe import _ from frappe.model.document import Document class EmployeeIncentive(Document): + def validate(self): + self.validate_salary_structure() + + def validate_salary_structure(self): + if not frappe.db.exists('Salary Structure Assignment', {'employee': self.employee}): + frappe.throw(_("There is no Salary Structure assigned to {0}. First assign a Salary Stucture.").format(self.employee)) + def on_submit(self): company = frappe.db.get_value('Employee', self.employee, 'company') additional_salary = frappe.new_doc('Additional Salary') additional_salary.employee = self.employee + additional_salary.currency = self.currency additional_salary.salary_component = self.salary_component additional_salary.overwrite_salary_structure_amount = 0 additional_salary.amount = self.incentive_amount diff --git a/erpnext/payroll/doctype/employee_tax_exemption_declaration/employee_tax_exemption_declaration.json b/erpnext/payroll/doctype/employee_tax_exemption_declaration/employee_tax_exemption_declaration.json index de7c348bb2..83d4ae53df 100644 --- a/erpnext/payroll/doctype/employee_tax_exemption_declaration/employee_tax_exemption_declaration.json +++ b/erpnext/payroll/doctype/employee_tax_exemption_declaration/employee_tax_exemption_declaration.json @@ -14,6 +14,7 @@ "column_break_2", "payroll_period", "company", + "currency", "amended_from", "section_break_8", "declarations", @@ -92,6 +93,7 @@ "fieldname": "total_declared_amount", "fieldtype": "Currency", "label": "Total Declared Amount", + "options": "currency", "read_only": 1 }, { @@ -102,12 +104,22 @@ "fieldname": "total_exemption_amount", "fieldtype": "Currency", "label": "Total Exemption Amount", + "options": "currency", "read_only": 1 + }, + { + "default": "Company:company:default_currency", + "fieldname": "currency", + "fieldtype": "Link", + "label": "Currency", + "options": "Currency", + "print_hide": 1, + "reqd": 1 } ], "is_submittable": 1, "links": [], - "modified": "2020-06-22 22:49:43.829892", + "modified": "2020-10-20 16:42:24.493761", "modified_by": "Administrator", "module": "Payroll", "name": "Employee Tax Exemption Declaration", diff --git a/erpnext/payroll/doctype/employee_tax_exemption_declaration/test_employee_tax_exemption_declaration.py b/erpnext/payroll/doctype/employee_tax_exemption_declaration/test_employee_tax_exemption_declaration.py index 9549fd1b75..0609d19149 100644 --- a/erpnext/payroll/doctype/employee_tax_exemption_declaration/test_employee_tax_exemption_declaration.py +++ b/erpnext/payroll/doctype/employee_tax_exemption_declaration/test_employee_tax_exemption_declaration.py @@ -22,6 +22,7 @@ class TestEmployeeTaxExemptionDeclaration(unittest.TestCase): "employee": frappe.get_value("Employee", {"user_id":"employee@taxexepmtion.com"}, "name"), "company": erpnext.get_default_company(), "payroll_period": "_Test Payroll Period", + "currency": erpnext.get_default_currency(), "declarations": [ dict(exemption_sub_category = "_Test Sub Category", exemption_category = "_Test Category", @@ -39,6 +40,7 @@ class TestEmployeeTaxExemptionDeclaration(unittest.TestCase): "employee": frappe.get_value("Employee", {"user_id":"employee@taxexepmtion.com"}, "name"), "company": erpnext.get_default_company(), "payroll_period": "_Test Payroll Period", + "currency": erpnext.get_default_currency(), "declarations": [ dict(exemption_sub_category = "_Test Sub Category", exemption_category = "_Test Category", @@ -54,6 +56,7 @@ class TestEmployeeTaxExemptionDeclaration(unittest.TestCase): "employee": frappe.get_value("Employee", {"user_id":"employee@taxexepmtion.com"}, "name"), "company": erpnext.get_default_company(), "payroll_period": "_Test Payroll Period", + "currency": erpnext.get_default_currency(), "declarations": [ dict(exemption_sub_category = "_Test Sub Category", exemption_category = "_Test Category", @@ -70,6 +73,7 @@ class TestEmployeeTaxExemptionDeclaration(unittest.TestCase): "employee": frappe.get_value("Employee", {"user_id":"employee@taxexepmtion.com"}, "name"), "company": erpnext.get_default_company(), "payroll_period": "_Test Payroll Period", + "currency": erpnext.get_default_currency(), "declarations": [ dict(exemption_sub_category = "_Test Sub Category", exemption_category = "_Test Category", diff --git a/erpnext/payroll/doctype/employee_tax_exemption_declaration_category/employee_tax_exemption_declaration_category.json b/erpnext/payroll/doctype/employee_tax_exemption_declaration_category/employee_tax_exemption_declaration_category.json index 8c2f9aa370..723a3df3c7 100644 --- a/erpnext/payroll/doctype/employee_tax_exemption_declaration_category/employee_tax_exemption_declaration_category.json +++ b/erpnext/payroll/doctype/employee_tax_exemption_declaration_category/employee_tax_exemption_declaration_category.json @@ -35,6 +35,7 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Maximum Exempted Amount", + "options": "currency", "read_only": 1, "reqd": 1 }, @@ -43,12 +44,13 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Declared Amount", + "options": "currency", "reqd": 1 } ], "istable": 1, "links": [], - "modified": "2020-06-22 23:41:03.638739", + "modified": "2020-10-20 16:43:09.606265", "modified_by": "Administrator", "module": "Payroll", "name": "Employee Tax Exemption Declaration Category", diff --git a/erpnext/payroll/doctype/employee_tax_exemption_proof_submission/employee_tax_exemption_proof_submission.js b/erpnext/payroll/doctype/employee_tax_exemption_proof_submission/employee_tax_exemption_proof_submission.js index 715d7553b0..497f35c41e 100644 --- a/erpnext/payroll/doctype/employee_tax_exemption_proof_submission/employee_tax_exemption_proof_submission.js +++ b/erpnext/payroll/doctype/employee_tax_exemption_proof_submission/employee_tax_exemption_proof_submission.js @@ -54,5 +54,9 @@ frappe.ui.form.on('Employee Tax Exemption Proof Submission', { }); }); } + }, + + currency: function(frm) { + frm.refresh_fields(); } }); diff --git a/erpnext/payroll/doctype/employee_tax_exemption_proof_submission/employee_tax_exemption_proof_submission.json b/erpnext/payroll/doctype/employee_tax_exemption_proof_submission/employee_tax_exemption_proof_submission.json index b62b5aab0b..53f18cb1fe 100644 --- a/erpnext/payroll/doctype/employee_tax_exemption_proof_submission/employee_tax_exemption_proof_submission.json +++ b/erpnext/payroll/doctype/employee_tax_exemption_proof_submission/employee_tax_exemption_proof_submission.json @@ -11,6 +11,7 @@ "employee", "employee_name", "department", + "currency", "column_break_2", "submission_date", "payroll_period", @@ -97,6 +98,7 @@ "fieldname": "total_actual_amount", "fieldtype": "Currency", "label": "Total Actual Amount", + "options": "currency", "read_only": 1 }, { @@ -107,6 +109,7 @@ "fieldname": "exemption_amount", "fieldtype": "Currency", "label": "Total Exemption Amount", + "options": "currency", "read_only": 1 }, { @@ -126,11 +129,20 @@ "options": "Employee Tax Exemption Proof Submission", "print_hide": 1, "read_only": 1 + }, + { + "default": "Company:company:default_currency", + "fieldname": "currency", + "fieldtype": "Link", + "label": "Currency", + "options": "Currency", + "print_hide": 1, + "reqd": 1 } ], "is_submittable": 1, "links": [], - "modified": "2020-06-22 22:53:10.412321", + "modified": "2020-10-20 16:47:03.410020", "modified_by": "Administrator", "module": "Payroll", "name": "Employee Tax Exemption Proof Submission", diff --git a/erpnext/payroll/doctype/employee_tax_exemption_proof_submission_detail/employee_tax_exemption_proof_submission_detail.json b/erpnext/payroll/doctype/employee_tax_exemption_proof_submission_detail/employee_tax_exemption_proof_submission_detail.json index c1f532050a..2fd8b94efd 100644 --- a/erpnext/payroll/doctype/employee_tax_exemption_proof_submission_detail/employee_tax_exemption_proof_submission_detail.json +++ b/erpnext/payroll/doctype/employee_tax_exemption_proof_submission_detail/employee_tax_exemption_proof_submission_detail.json @@ -34,6 +34,7 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Maximum Exemption Amount", + "options": "currency", "read_only": 1, "reqd": 1 }, @@ -48,12 +49,13 @@ "fieldname": "amount", "fieldtype": "Currency", "in_list_view": 1, - "label": "Actual Amount" + "label": "Actual Amount", + "options": "currency" } ], "istable": 1, "links": [], - "modified": "2020-06-22 23:37:08.265600", + "modified": "2020-10-20 16:47:31.480870", "modified_by": "Administrator", "module": "Payroll", "name": "Employee Tax Exemption Proof Submission Detail", diff --git a/erpnext/payroll/doctype/income_tax_slab/income_tax_slab.js b/erpnext/payroll/doctype/income_tax_slab/income_tax_slab.js index 73a54eb8dd..7d780d3b04 100644 --- a/erpnext/payroll/doctype/income_tax_slab/income_tax_slab.js +++ b/erpnext/payroll/doctype/income_tax_slab/income_tax_slab.js @@ -2,5 +2,7 @@ // For license information, please see license.txt frappe.ui.form.on('Income Tax Slab', { - + currency: function(frm) { + frm.refresh_fields(); + } }); diff --git a/erpnext/payroll/doctype/income_tax_slab/income_tax_slab.json b/erpnext/payroll/doctype/income_tax_slab/income_tax_slab.json index 6337d5a6d3..9fa261dea2 100644 --- a/erpnext/payroll/doctype/income_tax_slab/income_tax_slab.json +++ b/erpnext/payroll/doctype/income_tax_slab/income_tax_slab.json @@ -9,8 +9,9 @@ "effective_from", "company", "column_break_3", - "allow_tax_exemption", + "currency", "standard_tax_exemption_amount", + "allow_tax_exemption", "disabled", "amended_from", "taxable_salary_slabs_section", @@ -70,7 +71,7 @@ "fieldname": "standard_tax_exemption_amount", "fieldtype": "Currency", "label": "Standard Tax Exemption Amount", - "options": "Company:company:default_currency" + "options": "currency" }, { "fieldname": "company", @@ -90,11 +91,20 @@ "fieldtype": "Table", "label": "Other Taxes and Charges", "options": "Income Tax Slab Other Charges" + }, + { + "default": "Company:company:default_currency", + "fieldname": "currency", + "fieldtype": "Link", + "label": "Currency", + "options": "Currency", + "print_hide": 1, + "reqd": 1 } ], "is_submittable": 1, "links": [], - "modified": "2020-06-22 20:27:13.425084", + "modified": "2020-10-19 13:54:24.728075", "modified_by": "Administrator", "module": "Payroll", "name": "Income Tax Slab", diff --git a/erpnext/payroll/doctype/income_tax_slab_other_charges/income_tax_slab_other_charges.json b/erpnext/payroll/doctype/income_tax_slab_other_charges/income_tax_slab_other_charges.json index 7f21204591..0dba338250 100644 --- a/erpnext/payroll/doctype/income_tax_slab_other_charges/income_tax_slab_other_charges.json +++ b/erpnext/payroll/doctype/income_tax_slab_other_charges/income_tax_slab_other_charges.json @@ -45,7 +45,7 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Min Taxable Income", - "options": "Company:company:default_currency" + "options": "currency" }, { "fieldname": "column_break_7", @@ -57,12 +57,12 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Max Taxable Income", - "options": "Company:company:default_currency" + "options": "currency" } ], "istable": 1, "links": [], - "modified": "2020-06-22 23:33:17.931912", + "modified": "2020-10-19 13:45:12.850090", "modified_by": "Administrator", "module": "Payroll", "name": "Income Tax Slab Other Charges", diff --git a/erpnext/payroll/doctype/payroll_employee_detail/payroll_employee_detail.json b/erpnext/payroll/doctype/payroll_employee_detail/payroll_employee_detail.json index bb68e1814a..8a55224dca 100644 --- a/erpnext/payroll/doctype/payroll_employee_detail/payroll_employee_detail.json +++ b/erpnext/payroll/doctype/payroll_employee_detail/payroll_employee_detail.json @@ -52,7 +52,7 @@ ], "istable": 1, "links": [], - "modified": "2020-06-22 23:25:13.779032", + "modified": "2020-09-30 12:40:07.999878", "modified_by": "Administrator", "module": "Payroll", "name": "Payroll Employee Detail", diff --git a/erpnext/payroll/doctype/payroll_entry/payroll_entry.js b/erpnext/payroll/doctype/payroll_entry/payroll_entry.js index 1abc869c53..cb48abbc36 100644 --- a/erpnext/payroll/doctype/payroll_entry/payroll_entry.js +++ b/erpnext/payroll/doctype/payroll_entry/payroll_entry.js @@ -17,6 +17,16 @@ frappe.ui.form.on('Payroll Entry', { } }; }); + + frm.set_query("payroll_payable_account", function() { + return { + filters: { + "company": frm.doc.company, + "root_type": "Liability", + "is_group": 0, + } + }; + }); }, refresh: function(frm) { @@ -139,6 +149,36 @@ frappe.ui.form.on('Payroll Entry', { frm.events.clear_employee_table(frm); }, + currency: function (frm) { + var company_currency; + if (!frm.doc.company) { + company_currency = erpnext.get_currency(frappe.defaults.get_default("Company")); + } else { + company_currency = erpnext.get_currency(frm.doc.company); + } + if (frm.doc.currency) { + if (company_currency != frm.doc.currency) { + frappe.call({ + method: "erpnext.setup.utils.get_exchange_rate", + args: { + from_currency: frm.doc.currency, + to_currency: company_currency, + }, + callback: function(r) { + frm.set_value("exchange_rate", flt(r.message)); + frm.set_df_property('exchange_rate', 'hidden', 0); + frm.set_df_property("exchange_rate", "description", "1 " + frm.doc.currency + + " = [?] " + company_currency); + } + }); + } else { + frm.set_value("exchange_rate", 1.0); + frm.set_df_property('exchange_rate', 'hidden', 1); + frm.set_df_property("exchange_rate", "description", "" ); + } + } + }, + department: function (frm) { frm.events.clear_employee_table(frm); }, diff --git a/erpnext/payroll/doctype/payroll_entry/payroll_entry.json b/erpnext/payroll/doctype/payroll_entry/payroll_entry.json index 31a899699d..7a48dd1475 100644 --- a/erpnext/payroll/doctype/payroll_entry/payroll_entry.json +++ b/erpnext/payroll/doctype/payroll_entry/payroll_entry.json @@ -11,8 +11,11 @@ "column_break0", "posting_date", "payroll_frequency", - "column_break1", "company", + "column_break1", + "currency", + "exchange_rate", + "payroll_payable_account", "section_break_8", "branch", "department", @@ -257,12 +260,37 @@ { "fieldname": "column_break_33", "fieldtype": "Column Break" + }, + { + "depends_on": "company", + "fieldname": "currency", + "fieldtype": "Link", + "in_list_view": 1, + "label": "Currency", + "options": "Currency", + "reqd": 1 + }, + { + "depends_on": "company", + "fieldname": "exchange_rate", + "fieldtype": "Float", + "label": "Exchange Rate", + "precision": "9", + "reqd": 1 + }, + { + "depends_on": "company", + "fieldname": "payroll_payable_account", + "fieldtype": "Link", + "label": "Payroll Payable Account", + "options": "Account", + "reqd": 1 } ], "icon": "fa fa-cog", "is_submittable": 1, "links": [], - "modified": "2020-06-22 20:06:06.953904", + "modified": "2020-10-23 13:00:33.753228", "modified_by": "Administrator", "module": "Payroll", "name": "Payroll Entry", diff --git a/erpnext/payroll/doctype/payroll_entry/payroll_entry.py b/erpnext/payroll/doctype/payroll_entry/payroll_entry.py index 30ea432678..8c2d9740ec 100644 --- a/erpnext/payroll/doctype/payroll_entry/payroll_entry.py +++ b/erpnext/payroll/doctype/payroll_entry/payroll_entry.py @@ -3,7 +3,7 @@ # For license information, please see license.txt from __future__ import unicode_literals -import frappe +import frappe, erpnext from frappe.model.document import Document from dateutil.relativedelta import relativedelta from frappe.utils import cint, flt, nowdate, add_days, getdate, fmt_money, add_to_date, DATE_FORMAT, date_diff @@ -51,13 +51,15 @@ class PayrollEntry(Document): where docstatus = 1 and is_active = 'Yes' - and company = %(company)s and + and company = %(company)s + and currency = %(currency)s and ifnull(salary_slip_based_on_timesheet,0) = %(salary_slip_based_on_timesheet)s {condition}""".format(condition=condition), - {"company": self.company, "salary_slip_based_on_timesheet":self.salary_slip_based_on_timesheet}) + {"company": self.company, "currency": self.currency, "salary_slip_based_on_timesheet":self.salary_slip_based_on_timesheet}) if sal_struct: cond += "and t2.salary_structure IN %(sal_struct)s " + cond += "and t2.payroll_payable_account = %(payroll_payable_account)s " cond += "and %(from_date)s >= t2.from_date" emp_list = frappe.db.sql(""" select @@ -68,14 +70,26 @@ class PayrollEntry(Document): t1.name = t2.employee and t2.docstatus = 1 %s order by t2.from_date desc - """ % cond, {"sal_struct": tuple(sal_struct), "from_date": self.end_date}, as_dict=True) + """ % cond, {"sal_struct": tuple(sal_struct), "from_date": self.end_date, "payroll_payable_account": self.payroll_payable_account}, as_dict=True) return emp_list def fill_employee_details(self): self.set('employees', []) employees = self.get_emp_list() if not employees: - frappe.throw(_("No employees for the mentioned criteria")) + error_msg = _("No employees found for the mentioned criteria:
Company: {0}
Currency: {1}
Payroll Payable Account: {2}").format( + frappe.bold(self.company), frappe.bold(self.currency), frappe.bold(self.payroll_payable_account)) + if self.branch: + error_msg += "
" + _("Branch: {0}").format(frappe.bold(self.branch)) + if self.department: + error_msg += "
" + _("Department: {0}").format(frappe.bold(self.department)) + if self.designation: + error_msg += "
" + _("Designation: {0}").format(frappe.bold(self.designation)) + if self.start_date: + error_msg += "
" + _("Start date: {0}").format(frappe.bold(self.start_date)) + if self.end_date: + error_msg += "
" + _("End date: {0}").format(frappe.bold(self.end_date)) + frappe.throw(error_msg, title=_("No employees found")) for d in employees: self.append('employees', d) @@ -123,7 +137,9 @@ class PayrollEntry(Document): "posting_date": self.posting_date, "deduct_tax_for_unclaimed_employee_benefits": self.deduct_tax_for_unclaimed_employee_benefits, "deduct_tax_for_unsubmitted_tax_exemption_proof": self.deduct_tax_for_unsubmitted_tax_exemption_proof, - "payroll_entry": self.name + "payroll_entry": self.name, + "exchange_rate": self.exchange_rate, + "currency": self.currency }) if len(emp_list) > 30: frappe.enqueue(create_salary_slips_for_employees, timeout=600, employees=emp_list, args=args) @@ -160,10 +176,10 @@ class PayrollEntry(Document): def get_salary_component_account(self, salary_component): account = frappe.db.get_value("Salary Component Account", - {"parent": salary_component, "company": self.company}, "default_account") + {"parent": salary_component, "company": self.company}, "account") if not account: - frappe.throw(_("Please set default account in Salary Component {0}") + frappe.throw(_("Please set account in Salary Component {0}") .format(salary_component)) return account @@ -203,21 +219,11 @@ class PayrollEntry(Document): account_dict[(account, key[1])] = account_dict.get((account, key[1]), 0) + amount return account_dict - def get_default_payroll_payable_account(self): - payroll_payable_account = frappe.get_cached_value('Company', - {"company_name": self.company}, "default_payroll_payable_account") - - if not payroll_payable_account: - frappe.throw(_("Please set Default Payroll Payable Account in Company {0}") - .format(self.company)) - - return payroll_payable_account - def make_accrual_jv_entry(self): self.check_permission('write') earnings = self.get_salary_component_total(component_type = "earnings") or {} deductions = self.get_salary_component_total(component_type = "deductions") or {} - default_payroll_payable_account = self.get_default_payroll_payable_account() + payroll_payable_account = self.payroll_payable_account jv_name = "" precision = frappe.get_precision("Journal Entry Account", "debit_in_account_currency") @@ -230,14 +236,19 @@ class PayrollEntry(Document): journal_entry.posting_date = self.posting_date accounts = [] + currencies = [] payable_amount = 0 + multi_currency = 0 + company_currency = erpnext.get_company_currency(self.company) # Earnings for acc_cc, amount in earnings.items(): + exchange_rate, amt = self.get_amount_and_exchange_rate_for_journal_entry(acc_cc[0], amount, company_currency, currencies) payable_amount += flt(amount, precision) accounts.append({ "account": acc_cc[0], - "debit_in_account_currency": flt(amount, precision), + "debit_in_account_currency": flt(amt, precision), + "exchange_rate": flt(exchange_rate), "party_type": '', "cost_center": acc_cc[1] or self.cost_center, "project": self.project @@ -245,25 +256,32 @@ class PayrollEntry(Document): # Deductions for acc_cc, amount in deductions.items(): + exchange_rate, amt = self.get_amount_and_exchange_rate_for_journal_entry(acc_cc[0], amount, company_currency, currencies) payable_amount -= flt(amount, precision) accounts.append({ "account": acc_cc[0], - "credit_in_account_currency": flt(amount, precision), + "credit_in_account_currency": flt(amt, precision), + "exchange_rate": flt(exchange_rate), "cost_center": acc_cc[1] or self.cost_center, "party_type": '', "project": self.project }) # Payable amount + exchange_rate, payable_amt = self.get_amount_and_exchange_rate_for_journal_entry(payroll_payable_account, payable_amount, company_currency, currencies) accounts.append({ - "account": default_payroll_payable_account, - "credit_in_account_currency": flt(payable_amount, precision), + "account": payroll_payable_account, + "credit_in_account_currency": flt(payable_amt, precision), + "exchange_rate": flt(exchange_rate), "party_type": '', "cost_center": self.cost_center }) journal_entry.set("accounts", accounts) - journal_entry.title = default_payroll_payable_account + if len(currencies) > 1: + multi_currency = 1 + journal_entry.multi_currency = multi_currency + journal_entry.title = payroll_payable_account journal_entry.save() try: @@ -271,10 +289,24 @@ class PayrollEntry(Document): jv_name = journal_entry.name self.update_salary_slip_status(jv_name = jv_name) except Exception as e: - frappe.msgprint(e) + if type(e) in (str, list, tuple): + frappe.msgprint(e) + raise return jv_name + def get_amount_and_exchange_rate_for_journal_entry(self, account, amount, company_currency, currencies): + conversion_rate = 1 + exchange_rate = self.exchange_rate + account_currency = frappe.db.get_value('Account', account, 'account_currency') + if account_currency not in currencies: + currencies.append(account_currency) + if account_currency == company_currency: + conversion_rate = self.exchange_rate + exchange_rate = 1 + amount = flt(amount) * flt(conversion_rate) + return exchange_rate, amount + def make_payment_entry(self): self.check_permission('write') @@ -303,31 +335,43 @@ class PayrollEntry(Document): self.create_journal_entry(salary_slip_total, "salary") def create_journal_entry(self, je_payment_amount, user_remark): - default_payroll_payable_account = self.get_default_payroll_payable_account() + payroll_payable_account = self.payroll_payable_account precision = frappe.get_precision("Journal Entry Account", "debit_in_account_currency") + accounts = [] + currencies = [] + multi_currency = 0 + company_currency = erpnext.get_company_currency(self.company) + + exchange_rate, amount = self.get_amount_and_exchange_rate_for_journal_entry(self.payment_account, je_payment_amount, company_currency, currencies) + accounts.append({ + "account": self.payment_account, + "bank_account": self.bank_account, + "credit_in_account_currency": flt(amount, precision), + "exchange_rate": flt(exchange_rate), + }) + + exchange_rate, amount = self.get_amount_and_exchange_rate_for_journal_entry(payroll_payable_account, je_payment_amount, company_currency, currencies) + accounts.append({ + "account": payroll_payable_account, + "debit_in_account_currency": flt(amount, precision), + "exchange_rate": flt(exchange_rate), + "reference_type": self.doctype, + "reference_name": self.name + }) + + if len(currencies) > 1: + multi_currency = 1 + journal_entry = frappe.new_doc('Journal Entry') journal_entry.voucher_type = 'Bank Entry' journal_entry.user_remark = _('Payment of {0} from {1} to {2}')\ .format(user_remark, self.start_date, self.end_date) journal_entry.company = self.company journal_entry.posting_date = self.posting_date + journal_entry.multi_currency = multi_currency - payment_amount = flt(je_payment_amount, precision) - - journal_entry.set("accounts", [ - { - "account": self.payment_account, - "bank_account": self.bank_account, - "credit_in_account_currency": payment_amount - }, - { - "account": default_payroll_payable_account, - "debit_in_account_currency": payment_amount, - "reference_type": self.doctype, - "reference_name": self.name - } - ]) + journal_entry.set("accounts", accounts) journal_entry.save(ignore_permissions = True) def update_salary_slip_status(self, jv_name = None): @@ -344,9 +388,13 @@ class PayrollEntry(Document): employees_to_mark_attendance = [] days_in_payroll, days_holiday, days_attendance_marked = 0, 0, 0 for employee_detail in self.employees: - days_holiday = self.get_count_holidays_of_employee(employee_detail.employee) - days_attendance_marked = self.get_count_employee_attendance(employee_detail.employee) - days_in_payroll = date_diff(self.end_date, self.start_date) + 1 + employee_joining_date = frappe.db.get_value("Employee", employee_detail.employee, 'date_of_joining') + start_date = self.start_date + if employee_joining_date > getdate(self.start_date): + start_date = employee_joining_date + days_holiday = self.get_count_holidays_of_employee(employee_detail.employee, start_date) + days_attendance_marked = self.get_count_employee_attendance(employee_detail.employee, start_date) + days_in_payroll = date_diff(self.end_date, start_date) + 1 if days_in_payroll > days_holiday + days_attendance_marked: employees_to_mark_attendance.append({ "employee": employee_detail.employee, @@ -354,22 +402,25 @@ class PayrollEntry(Document): }) return employees_to_mark_attendance - def get_count_holidays_of_employee(self, employee): + def get_count_holidays_of_employee(self, employee, start_date): holiday_list = get_holiday_list_for_employee(employee) holidays = 0 if holiday_list: days = frappe.db.sql("""select count(*) from tabHoliday where parent=%s and holiday_date between %s and %s""", (holiday_list, - self.start_date, self.end_date)) + start_date, self.end_date)) if days and days[0][0]: holidays = days[0][0] return holidays - def get_count_employee_attendance(self, employee): + def get_count_employee_attendance(self, employee, start_date): marked_days = 0 - attendances = frappe.db.sql("""select count(*) from tabAttendance where - employee=%s and docstatus=1 and attendance_date between %s and %s""", - (employee, self.start_date, self.end_date)) + attendances = frappe.get_all("Attendance", + fields = ["count(*)"], + filters = { + "employee": employee, + "attendance_date": ('between', [start_date, self.end_date]) + }, as_list=1) if attendances and attendances[0][0]: marked_days = attendances[0][0] return marked_days @@ -489,6 +540,21 @@ def create_salary_slips_for_employees(employees, args, publish_progress=True): if publish_progress: frappe.publish_progress(count*100/len(set(employees) - set(salary_slips_exists_for)), title = _("Creating Salary Slips...")) + else: + salary_slip_name = frappe.db.sql( + '''SELECT + name + FROM `tabSalary Slip` + WHERE company=%s + AND start_date >= %s + AND end_date <= %s + AND employee = %s + ''', (args.company, args.start_date, args.end_date, emp), as_dict=True) + + salary_slip_doc = frappe.get_doc('Salary Slip', salary_slip_name[0].name) + salary_slip_doc.exchange_rate = args.exchange_rate + salary_slip_doc.set_totals() + salary_slip_doc.db_update() payroll_entry = frappe.get_doc("Payroll Entry", args.payroll_entry) payroll_entry.db_set("salary_slips_created", 1) diff --git a/erpnext/payroll/doctype/payroll_entry/test_payroll_entry.py b/erpnext/payroll/doctype/payroll_entry/test_payroll_entry.py index b0f225d909..54106c8d16 100644 --- a/erpnext/payroll/doctype/payroll_entry/test_payroll_entry.py +++ b/erpnext/payroll/doctype/payroll_entry/test_payroll_entry.py @@ -10,8 +10,8 @@ from frappe.utils import add_months from erpnext.payroll.doctype.payroll_entry.payroll_entry import get_start_end_dates, get_end_date from erpnext.hr.doctype.employee.test_employee import make_employee from erpnext.payroll.doctype.salary_slip.test_salary_slip import get_salary_component_account, \ - make_earning_salary_component, make_deduction_salary_component, create_account -from erpnext.payroll.doctype.salary_structure.test_salary_structure import make_salary_structure + make_earning_salary_component, make_deduction_salary_component, create_account, make_employee_salary_slip +from erpnext.payroll.doctype.salary_structure.test_salary_structure import make_salary_structure, create_salary_structure_assignment from erpnext.loan_management.doctype.loan.test_loan import create_loan, make_loan_disbursement_entry from erpnext.loan_management.doctype.process_loan_interest_accrual.process_loan_interest_accrual import process_loan_interest_accrual_for_term_loans @@ -34,10 +34,47 @@ class TestPayrollEntry(unittest.TestCase): get_salary_component_account(data.name) employee = frappe.db.get_value("Employee", {'company': company}) - make_salary_structure("_Test Salary Structure", "Monthly", employee, company=company) + company_doc = frappe.get_doc('Company', company) + make_salary_structure("_Test Salary Structure", "Monthly", employee, company=company, currency=company_doc.default_currency) dates = get_start_end_dates('Monthly', nowdate()) if not frappe.db.get_value("Salary Slip", {"start_date": dates.start_date, "end_date": dates.end_date}): - make_payroll_entry(start_date=dates.start_date, end_date=dates.end_date) + make_payroll_entry(start_date=dates.start_date, end_date=dates.end_date, payable_account=company_doc.default_payroll_payable_account, + currency=company_doc.default_currency) + + def test_multi_currency_payroll_entry(self): # pylint: disable=no-self-use + company = erpnext.get_default_company() + employee = make_employee("test_muti_currency_employee@payroll.com", company=company) + for data in frappe.get_all('Salary Component', fields = ["name"]): + if not frappe.db.get_value('Salary Component Account', + {'parent': data.name, 'company': company}, 'name'): + get_salary_component_account(data.name) + + company_doc = frappe.get_doc('Company', company) + salary_structure = make_salary_structure("_Test Multi Currency Salary Structure", "Monthly", company=company, currency='USD') + create_salary_structure_assignment(employee, salary_structure.name, company=company) + frappe.db.sql("""delete from `tabSalary Slip` where employee=%s""",(frappe.db.get_value("Employee", {"user_id": "test_muti_currency_employee@payroll.com"}))) + salary_slip = get_salary_slip("test_muti_currency_employee@payroll.com", "Monthly", "_Test Multi Currency Salary Structure") + dates = get_start_end_dates('Monthly', nowdate()) + payroll_entry = make_payroll_entry(start_date=dates.start_date, end_date=dates.end_date, + payable_account=company_doc.default_payroll_payable_account, currency='USD', exchange_rate=70) + payroll_entry.make_payment_entry() + + salary_slip.load_from_db() + + payroll_je = salary_slip.journal_entry + payroll_je_doc = frappe.get_doc('Journal Entry', payroll_je) + + self.assertEqual(salary_slip.base_gross_pay, payroll_je_doc.total_debit) + self.assertEqual(salary_slip.base_gross_pay, payroll_je_doc.total_credit) + + payment_entry = frappe.db.sql(''' + Select ifnull(sum(je.total_debit),0) as total_debit, ifnull(sum(je.total_credit),0) as total_credit from `tabJournal Entry` je, `tabJournal Entry Account` jea + Where je.name = jea.parent + And jea.reference_name = %s + ''', (payroll_entry.name), as_dict=1) + + self.assertEqual(salary_slip.base_net_pay, payment_entry[0].total_debit) + self.assertEqual(salary_slip.base_net_pay, payment_entry[0].total_credit) def test_payroll_entry_with_employee_cost_center(self): # pylint: disable=no-self-use for data in frappe.get_all('Salary Component', fields = ["name"]): @@ -52,24 +89,32 @@ class TestPayrollEntry(unittest.TestCase): "company": "_Test Company" }).insert() + frappe.db.sql("""delete from `tabEmployee` where employee_name='test_employee1@example.com' """) + frappe.db.sql("""delete from `tabEmployee` where employee_name='test_employee2@example.com' """) + frappe.db.sql("""delete from `tabSalary Structure` where name='_Test Salary Structure 1' """) + frappe.db.sql("""delete from `tabSalary Structure` where name='_Test Salary Structure 2' """) + employee1 = make_employee("test_employee1@example.com", payroll_cost_center="_Test Cost Center - _TC", department="cc - _TC", company="_Test Company") employee2 = make_employee("test_employee2@example.com", payroll_cost_center="_Test Cost Center 2 - _TC", department="cc - _TC", company="_Test Company") - make_salary_structure("_Test Salary Structure 1", "Monthly", employee1, company="_Test Company") - make_salary_structure("_Test Salary Structure 2", "Monthly", employee2, company="_Test Company") - if not frappe.db.exists("Account", "_Test Payroll Payable - _TC"): - create_account(account_name="_Test Payroll Payable", - company="_Test Company", parent_account="Current Liabilities - _TC") - frappe.db.set_value("Company", "_Test Company", "default_payroll_payable_account", - "_Test Payroll Payable - _TC") + create_account(account_name="_Test Payroll Payable", + company="_Test Company", parent_account="Current Liabilities - _TC") + + if not frappe.db.get_value("Company", "_Test Company", "default_payroll_payable_account") or \ + frappe.db.get_value("Company", "_Test Company", "default_payroll_payable_account") != "_Test Payroll Payable - _TC": + frappe.db.set_value("Company", "_Test Company", "default_payroll_payable_account", + "_Test Payroll Payable - _TC") + + make_salary_structure("_Test Salary Structure 1", "Monthly", employee1, company="_Test Company", currency=frappe.db.get_value("Company", "_Test Company", "default_currency")) + make_salary_structure("_Test Salary Structure 2", "Monthly", employee2, company="_Test Company", currency=frappe.db.get_value("Company", "_Test Company", "default_currency")) dates = get_start_end_dates('Monthly', nowdate()) if not frappe.db.get_value("Salary Slip", {"start_date": dates.start_date, "end_date": dates.end_date}): - pe = make_payroll_entry(start_date=dates.start_date, end_date=dates.end_date, - department="cc - _TC", company="_Test Company", payment_account="Cash - _TC", cost_center="Main - _TC") + pe = make_payroll_entry(start_date=dates.start_date, end_date=dates.end_date, payable_account="_Test Payroll Payable - _TC", + currency=frappe.db.get_value("Company", "_Test Company", "default_currency"), department="cc - _TC", company="_Test Company", payment_account="Cash - _TC", cost_center="Main - _TC") je = frappe.db.get_value("Salary Slip", {"payroll_entry": pe.name}, "journal_entry") je_entries = frappe.db.sql(""" select account, cost_center, debit, credit @@ -121,7 +166,7 @@ class TestPayrollEntry(unittest.TestCase): employee_doc.save() salary_structure = "Test Salary Structure for Loan" - make_salary_structure(salary_structure, "Monthly", employee=employee_doc.name, company="_Test Company") + make_salary_structure(salary_structure, "Monthly", employee=employee_doc.name, company="_Test Company", currency=company_doc.default_currency) loan = create_loan(applicant, "Car Loan", 280000, "Repay Over Number of Periods", 20, posting_date=add_months(nowdate(), -1)) loan.repay_from_salary = 1 @@ -133,8 +178,8 @@ class TestPayrollEntry(unittest.TestCase): dates = get_start_end_dates('Monthly', nowdate()) - make_payroll_entry(company="_Test Company", start_date=dates.start_date, - end_date=dates.end_date, branch=branch, cost_center="Main - _TC", payment_account="Cash - _TC") + make_payroll_entry(company="_Test Company", start_date=dates.start_date, payable_account=company_doc.default_payroll_payable_account, + currency=company_doc.default_currency, end_date=dates.end_date, branch=branch, cost_center="Main - _TC", payment_account="Cash - _TC") name = frappe.db.get_value('Salary Slip', {'posting_date': nowdate(), 'employee': applicant}, 'name') @@ -165,6 +210,9 @@ def make_payroll_entry(**args): payroll_entry.payroll_frequency = "Monthly" payroll_entry.branch = args.branch or None payroll_entry.department = args.department or None + payroll_entry.payroll_payable_account = args.payable_account + payroll_entry.currency = args.currency + payroll_entry.exchange_rate = args.exchange_rate or 1 if args.cost_center: payroll_entry.cost_center = args.cost_center @@ -212,3 +260,11 @@ def make_holiday(holiday_list_name): }).insert() return holiday_list_name + +def get_salary_slip(user, period, salary_structure): + salary_slip = make_employee_salary_slip(user, period, salary_structure) + salary_slip.exchange_rate = 70 + salary_slip.calculate_net_pay() + salary_slip.db_update() + + return salary_slip \ No newline at end of file diff --git a/erpnext/payroll/doctype/payroll_entry/test_set_salary_components.js b/erpnext/payroll/doctype/payroll_entry/test_set_salary_components.js index 8ff55151f6..092cbd8974 100644 --- a/erpnext/payroll/doctype/payroll_entry/test_set_salary_components.js +++ b/erpnext/payroll/doctype/payroll_entry/test_set_salary_components.js @@ -9,45 +9,45 @@ QUnit.test("test: Set Salary Components", function (assert) { () => { var row = frappe.model.add_child(cur_frm.doc, "Salary Component Account", "accounts"); row.company = 'For Testing'; - row.default_account = 'Salary - FT'; + row.account = 'Salary - FT'; }, () => cur_frm.save(), () => frappe.timeout(2), - () => assert.equal(cur_frm.doc.accounts[0].default_account, 'Salary - FT'), + () => assert.equal(cur_frm.doc.accounts[0].account, 'Salary - FT'), () => frappe.set_route('Form', 'Salary Component', 'Basic'), () => { var row = frappe.model.add_child(cur_frm.doc, "Salary Component Account", "accounts"); row.company = 'For Testing'; - row.default_account = 'Salary - FT'; + row.account = 'Salary - FT'; }, () => cur_frm.save(), () => frappe.timeout(2), - () => assert.equal(cur_frm.doc.accounts[0].default_account, 'Salary - FT'), + () => assert.equal(cur_frm.doc.accounts[0].account, 'Salary - FT'), () => frappe.set_route('Form', 'Salary Component', 'Income Tax'), () => { var row = frappe.model.add_child(cur_frm.doc, "Salary Component Account", "accounts"); row.company = 'For Testing'; - row.default_account = 'Salary - FT'; + row.account = 'Salary - FT'; }, () => cur_frm.save(), () => frappe.timeout(2), - () => assert.equal(cur_frm.doc.accounts[0].default_account, 'Salary - FT'), + () => assert.equal(cur_frm.doc.accounts[0].account, 'Salary - FT'), () => frappe.set_route('Form', 'Salary Component', 'Arrear'), () => { var row = frappe.model.add_child(cur_frm.doc, "Salary Component Account", "accounts"); row.company = 'For Testing'; - row.default_account = 'Salary - FT'; + row.account = 'Salary - FT'; }, () => cur_frm.save(), () => frappe.timeout(2), - () => assert.equal(cur_frm.doc.accounts[0].default_account, 'Salary - FT'), + () => assert.equal(cur_frm.doc.accounts[0].account, 'Salary - FT'), () => frappe.set_route('Form', 'Company', 'For Testing'), () => cur_frm.set_value('default_payroll_payable_account', 'Payroll Payable - FT'), diff --git a/erpnext/payroll/doctype/retention_bonus/retention_bonus.js b/erpnext/payroll/doctype/retention_bonus/retention_bonus.js index 64e726db85..6fe8ccad46 100644 --- a/erpnext/payroll/doctype/retention_bonus/retention_bonus.js +++ b/erpnext/payroll/doctype/retention_bonus/retention_bonus.js @@ -18,5 +18,22 @@ frappe.ui.form.on('Retention Bonus', { } }; }); + }, + + employee: function(frm) { + if (frm.doc.employee) { + frappe.call({ + method: "erpnext.payroll.doctype.salary_structure_assignment.salary_structure_assignment.get_employee_currency", + args: { + employee: frm.doc.employee, + }, + callback: function(r) { + if (r.message) { + frm.set_value('currency', r.message); + frm.refresh_fields(); + } + } + }); + } } }); diff --git a/erpnext/payroll/doctype/retention_bonus/retention_bonus.json b/erpnext/payroll/doctype/retention_bonus/retention_bonus.json index da884c2f28..6647230078 100644 --- a/erpnext/payroll/doctype/retention_bonus/retention_bonus.json +++ b/erpnext/payroll/doctype/retention_bonus/retention_bonus.json @@ -17,7 +17,8 @@ "column_break_6", "employee_name", "department", - "date_of_joining" + "date_of_joining", + "currency" ], "fields": [ { @@ -46,6 +47,7 @@ "fieldname": "bonus_amount", "fieldtype": "Currency", "label": "Bonus Amount", + "options": "currency", "reqd": 1 }, { @@ -89,11 +91,22 @@ "label": "Salary Component", "options": "Salary Component", "reqd": 1 + }, + { + "default": "Company:company:default_currency", + "depends_on": "eval:(doc.docstatus==1 || doc.employee)", + "fieldname": "currency", + "fieldtype": "Link", + "label": "Currency", + "options": "Currency", + "print_hide": 1, + "read_only": 1, + "reqd": 1 } ], "is_submittable": 1, "links": [], - "modified": "2020-06-22 22:42:05.251951", + "modified": "2020-10-20 17:27:47.003134", "modified_by": "Administrator", "module": "Payroll", "name": "Retention Bonus", @@ -151,7 +164,6 @@ "share": 1 } ], - "quick_entry": 1, "sort_field": "modified", "sort_order": "DESC", "track_changes": 1 diff --git a/erpnext/payroll/doctype/salary_component/salary_component.js b/erpnext/payroll/doctype/salary_component/salary_component.js index c455eb3303..dbf75140ac 100644 --- a/erpnext/payroll/doctype/salary_component/salary_component.js +++ b/erpnext/payroll/doctype/salary_component/salary_component.js @@ -3,7 +3,7 @@ frappe.ui.form.on('Salary Component', { setup: function(frm) { - frm.set_query("default_account", "accounts", function(doc, cdt, cdn) { + frm.set_query("account", "accounts", function(doc, cdt, cdn) { var d = locals[cdt][cdn]; return { filters: { diff --git a/erpnext/payroll/doctype/salary_detail/salary_detail.json b/erpnext/payroll/doctype/salary_detail/salary_detail.json index eedb56ec08..5c1eb61281 100644 --- a/erpnext/payroll/doctype/salary_detail/salary_detail.json +++ b/erpnext/payroll/doctype/salary_detail/salary_detail.json @@ -147,7 +147,7 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Amount", - "options": "Company:company:default_currency" + "options": "currency" }, { "default": "0", @@ -160,7 +160,7 @@ "fieldname": "default_amount", "fieldtype": "Currency", "label": "Default Amount", - "options": "Company:company:default_currency", + "options": "currency", "print_hide": 1 }, { @@ -169,6 +169,7 @@ "hidden": 1, "label": "Additional Amount", "no_copy": 1, + "options": "currency", "print_hide": 1, "read_only": 1 }, @@ -177,6 +178,7 @@ "fieldname": "tax_on_flexible_benefit", "fieldtype": "Currency", "label": "Tax on flexible benefit", + "options": "currency", "read_only": 1 }, { @@ -184,6 +186,7 @@ "fieldname": "tax_on_additional_salary", "fieldtype": "Currency", "label": "Tax on additional salary", + "options": "currency", "read_only": 1 }, { @@ -227,7 +230,7 @@ ], "istable": 1, "links": [], - "modified": "2020-10-07 20:39:41.619283", + "modified": "2020-11-25 13:12:41.081106", "modified_by": "Administrator", "module": "Payroll", "name": "Salary Detail", diff --git a/erpnext/payroll/doctype/salary_slip/salary_slip.js b/erpnext/payroll/doctype/salary_slip/salary_slip.js index 7b69dbe8d6..f7e22c6387 100644 --- a/erpnext/payroll/doctype/salary_slip/salary_slip.js +++ b/erpnext/payroll/doctype/salary_slip/salary_slip.js @@ -13,12 +13,12 @@ frappe.ui.form.on("Salary Slip", { ]; }); - frm.fields_dict["timesheets"].grid.get_field("time_sheet").get_query = function(){ + frm.fields_dict["timesheets"].grid.get_field("time_sheet").get_query = function() { return { filters: { employee: frm.doc.employee } - } + }; }; frm.set_query("salary_component", "earnings", function() { @@ -26,7 +26,7 @@ frappe.ui.form.on("Salary Slip", { filters: { type: "earning" } - } + }; }); frm.set_query("salary_component", "deductions", function() { @@ -34,18 +34,18 @@ frappe.ui.form.on("Salary Slip", { filters: { type: "deduction" } - } + }; }); frm.set_query("employee", function() { - return{ + return { query: "erpnext.controllers.queries.employee_query" - } + }; }); }, - start_date: function(frm){ - if(frm.doc.start_date){ + start_date: function(frm) { + if (frm.doc.start_date) { frm.trigger("set_end_date"); } }, @@ -54,7 +54,7 @@ frappe.ui.form.on("Salary Slip", { frm.events.get_emp_and_working_day_details(frm); }, - set_end_date: function(frm){ + set_end_date: function(frm) { frappe.call({ method: 'erpnext.payroll.doctype.payroll_entry.payroll_entry.get_end_date', args: { @@ -66,22 +66,93 @@ frappe.ui.form.on("Salary Slip", { frm.set_value('end_date', r.message.end_date); } } - }) + }); }, company: function(frm) { var company = locals[':Company'][frm.doc.company]; - if(!frm.doc.letter_head && company.default_letter_head) { + if (!frm.doc.letter_head && company.default_letter_head) { frm.set_value('letter_head', company.default_letter_head); } + frm.trigger("set_dynamic_labels"); + }, + + set_dynamic_labels: function(frm) { + var company_currency = frm.doc.company? erpnext.get_currency(frm.doc.company): frappe.defaults.get_default("currency"); + frappe.run_serially([ + () => frm.events.set_exchange_rate(frm, company_currency), + () => frm.events.change_form_labels(frm, company_currency), + () => frm.events.change_grid_labels(frm), + () => frm.refresh_fields() + ]); + }, + + set_exchange_rate: function(frm, company_currency) { + if (frm.doc.docstatus === 0) { + if (frm.doc.currency) { + var from_currency = frm.doc.currency; + if (from_currency != company_currency) { + frm.events.hide_loan_section(frm); + frappe.call({ + method: "erpnext.setup.utils.get_exchange_rate", + args: { + from_currency: from_currency, + to_currency: company_currency, + }, + callback: function(r) { + frm.set_value("exchange_rate", flt(r.message)); + frm.set_df_property('exchange_rate', 'hidden', 0); + frm.set_df_property("exchange_rate", "description", "1 " + frm.doc.currency + + " = [?] " + company_currency); + } + }); + } else { + frm.set_value("exchange_rate", 1.0); + frm.set_df_property('exchange_rate', 'hidden', 1); + frm.set_df_property("exchange_rate", "description", "" ); + } + } + } + }, + + exchange_rate: function(frm) { + calculate_totals(frm); + }, + + hide_loan_section: function(frm) { + frm.set_df_property('section_break_43', 'hidden', 1); + }, + + change_form_labels: function(frm, company_currency) { + frm.set_currency_labels(["base_hour_rate", "base_gross_pay", "base_total_deduction", + "base_net_pay", "base_rounded_total", "base_total_in_words"], + company_currency); + + frm.set_currency_labels(["hour_rate", "gross_pay", "total_deduction", "net_pay", "rounded_total", "total_in_words"], + frm.doc.currency); + + // toggle fields + frm.toggle_display(["exchange_rate", "base_hour_rate", "base_gross_pay", "base_total_deduction", + "base_net_pay", "base_rounded_total", "base_total_in_words"], + frm.doc.currency != company_currency); + }, + + change_grid_labels: function(frm) { + frm.set_currency_labels(["amount", "default_amount", "additional_amount", "tax_on_flexible_benefit", + "tax_on_additional_salary"], frm.doc.currency, "earnings"); + + frm.set_currency_labels(["amount", "default_amount", "additional_amount", "tax_on_flexible_benefit", + "tax_on_additional_salary"], frm.doc.currency, "deductions"); }, refresh: function(frm) { - frm.trigger("toggle_fields") + frm.trigger("toggle_fields"); var salary_detail_fields = ["formula", "abbr", "statistical_component", "variable_based_on_taxable_salary"]; - cur_frm.fields_dict['earnings'].grid.set_column_disp(salary_detail_fields,false); - cur_frm.fields_dict['deductions'].grid.set_column_disp(salary_detail_fields,false); + frm.fields_dict['earnings'].grid.set_column_disp(salary_detail_fields, false); + frm.fields_dict['deductions'].grid.set_column_disp(salary_detail_fields, false); + calculate_totals(frm); + frm.trigger("set_dynamic_labels"); }, salary_slip_based_on_timesheet: function(frm) { @@ -98,12 +169,12 @@ frappe.ui.form.on("Salary Slip", { frm.events.get_emp_and_working_day_details(frm); }, - leave_without_pay: function(frm){ + leave_without_pay: function(frm) { if (frm.doc.employee && frm.doc.start_date && frm.doc.end_date) { return frappe.call({ method: 'process_salary_based_on_working_days', doc: frm.doc, - callback: function(r, rt) { + callback: function() { frm.refresh(); } }); @@ -118,51 +189,94 @@ frappe.ui.form.on("Salary Slip", { }, get_emp_and_working_day_details: function(frm) { - return frappe.call({ - method: 'get_emp_and_working_day_details', - doc: frm.doc, - callback: function(r, rt) { - frm.refresh(); - if (r.message){ - frm.fields_dict.absent_days.set_description("Unmarked Days is treated as "+ r.message +". You can can change this in " + frappe.utils.get_form_link("Payroll Settings", "Payroll Settings", true)); + if (frm.doc.employee) { + return frappe.call({ + method: 'get_emp_and_working_day_details', + doc: frm.doc, + callback: function(r) { + if (r.message[1] !== "Leave" && r.message[0]) { + frm.fields_dict.absent_days.set_description(__("Unmarked Days is treated as {0}. You can can change this in {1}", [r.message, frappe.utils.get_form_link("Payroll Settings", "Payroll Settings", true)])); + } + frm.refresh(); } - } - }); + }); + } } }); frappe.ui.form.on('Salary Slip Timesheet', { - time_sheet: function(frm, dt, dn) { - total_work_hours(frm, dt, dn); + time_sheet: function(frm) { + calculate_totals(frm); }, - timesheets_remove: function(frm, dt, dn) { - total_work_hours(frm, dt, dn); + timesheets_remove: function(frm) { + calculate_totals(frm); } }); -// calculate total working hours, earnings based on hourly wages and totals -var total_work_hours = function(frm, dt, dn) { - var total_working_hours = 0.0; - $.each(frm.doc["timesheets"] || [], function(i, timesheet) { - total_working_hours += timesheet.working_hours; - }); - frm.set_value('total_working_hours', total_working_hours); - - var wages_amount = frm.doc.total_working_hours * frm.doc.hour_rate; - - frappe.db.get_value('Salary Structure', {'name': frm.doc.salary_structure}, 'salary_component', (r) => { - var gross_pay = 0.0; - $.each(frm.doc["earnings"], function(i, earning) { - if (earning.salary_component == r.salary_component) { - earning.amount = wages_amount; - frm.refresh_fields('earnings'); +var calculate_totals = function(frm) { + if (frm.doc.earnings || frm.doc.deductions) { + frappe.call({ + method: "set_totals", + doc: frm.doc, + callback: function() { + frm.refresh_fields(); } - gross_pay += earning.amount; }); - frm.set_value('gross_pay', gross_pay); + } +}; - frm.doc.net_pay = flt(frm.doc.gross_pay) - flt(frm.doc.total_deduction); - frm.doc.rounded_total = Math.round(frm.doc.net_pay); - refresh_many(['net_pay', 'rounded_total']); - }); -} +frappe.ui.form.on('Salary Detail', { + amount: function(frm) { + calculate_totals(frm); + }, + + earnings_remove: function(frm) { + calculate_totals(frm); + }, + + deductions_remove: function(frm) { + calculate_totals(frm); + }, + + salary_component: function(frm, cdt, cdn) { + var child = locals[cdt][cdn]; + if (child.salary_component) { + frappe.call({ + method: "frappe.client.get", + args: { + doctype: "Salary Component", + name: child.salary_component + }, + callback: function(data) { + if (data.message) { + var result = data.message; + frappe.model.set_value(cdt, cdn, 'condition', result.condition); + frappe.model.set_value(cdt, cdn, 'amount_based_on_formula', result.amount_based_on_formula); + if (result.amount_based_on_formula === 1) { + frappe.model.set_value(cdt, cdn, 'formula', result.formula); + } else { + frappe.model.set_value(cdt, cdn, 'amount', result.amount); + } + frappe.model.set_value(cdt, cdn, 'statistical_component', result.statistical_component); + frappe.model.set_value(cdt, cdn, 'depends_on_payment_days', result.depends_on_payment_days); + frappe.model.set_value(cdt, cdn, 'do_not_include_in_total', result.do_not_include_in_total); + frappe.model.set_value(cdt, cdn, 'variable_based_on_taxable_salary', result.variable_based_on_taxable_salary); + frappe.model.set_value(cdt, cdn, 'is_tax_applicable', result.is_tax_applicable); + frappe.model.set_value(cdt, cdn, 'is_flexible_benefit', result.is_flexible_benefit); + refresh_field("earnings"); + refresh_field("deductions"); + } + } + }); + } + }, + + amount_based_on_formula: function(frm, cdt, cdn) { + var child = locals[cdt][cdn]; + if (child.amount_based_on_formula === 1) { + frappe.model.set_value(cdt, cdn, 'amount', null); + } else { + frappe.model.set_value(cdt, cdn, 'formula', null); + } + } +}); diff --git a/erpnext/payroll/doctype/salary_slip/salary_slip.json b/erpnext/payroll/doctype/salary_slip/salary_slip.json index 619c45fa4a..386618cf08 100644 --- a/erpnext/payroll/doctype/salary_slip/salary_slip.json +++ b/erpnext/payroll/doctype/salary_slip/salary_slip.json @@ -18,6 +18,8 @@ "journal_entry", "payroll_entry", "company", + "currency", + "exchange_rate", "letter_head", "section_break_10", "start_date", @@ -38,6 +40,7 @@ "column_break_20", "total_working_hours", "hour_rate", + "base_hour_rate", "section_break_26", "bank_name", "bank_account_no", @@ -52,8 +55,10 @@ "deductions", "totals", "gross_pay", + "base_gross_pay", "column_break_25", "total_deduction", + "base_total_deduction", "loan_repayment", "loans", "section_break_43", @@ -63,10 +68,15 @@ "total_loan_repayment", "net_pay_info", "net_pay", + "base_net_pay", "column_break_53", "rounded_total", + "base_rounded_total", "section_break_55", "total_in_words", + "column_break_69", + "base_total_in_words", + "section_break_75", "amended_from" ], "fields": [ @@ -205,9 +215,13 @@ { "fieldname": "salary_structure", "fieldtype": "Link", + "in_list_view": 1, + "in_standard_filter": 1, "label": "Salary Structure", "options": "Salary Structure", - "read_only": 1 + "read_only": 1, + "reqd": 1, + "search_index": 1 }, { "depends_on": "eval:(!doc.salary_slip_based_on_timesheet)", @@ -265,7 +279,7 @@ "fieldname": "hour_rate", "fieldtype": "Currency", "label": "Hour Rate", - "options": "Company:company:default_currency", + "options": "currency", "print_hide_if_no_value": 1 }, { @@ -347,24 +361,13 @@ "fieldname": "gross_pay", "fieldtype": "Currency", "label": "Gross Pay", - "oldfieldname": "gross_pay", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", + "options": "currency", "read_only": 1 }, { "fieldname": "column_break_25", "fieldtype": "Column Break" }, - { - "fieldname": "total_deduction", - "fieldtype": "Currency", - "label": "Total Deduction", - "oldfieldname": "total_deduction", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "read_only": 1 - }, { "depends_on": "total_loan_repayment", "fieldname": "loan_repayment", @@ -379,6 +382,7 @@ "print_hide": 1 }, { + "depends_on": "eval:doc.docstatus != 0", "fieldname": "section_break_43", "fieldtype": "Section Break" }, @@ -416,13 +420,10 @@ "label": "net pay info" }, { - "description": "Gross Pay - Total Deduction - Loan Repayment", "fieldname": "net_pay", "fieldtype": "Currency", "label": "Net Pay", - "oldfieldname": "net_pay", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", + "options": "currency", "read_only": 1 }, { @@ -434,22 +435,13 @@ "fieldname": "rounded_total", "fieldtype": "Currency", "label": "Rounded Total", - "options": "Company:company:default_currency", + "options": "currency", "read_only": 1 }, { "fieldname": "section_break_55", "fieldtype": "Section Break" }, - { - "description": "Net Pay (in words) will be visible once you save the Salary Slip.", - "fieldname": "total_in_words", - "fieldtype": "Data", - "label": "Total in words", - "oldfieldname": "net_pay_in_words", - "oldfieldtype": "Data", - "read_only": 1 - }, { "fieldname": "amended_from", "fieldtype": "Link", @@ -500,13 +492,99 @@ { "fieldname": "column_break_18", "fieldtype": "Column Break" + }, + { + "default": "Company:company:default_currency", + "depends_on": "eval:(doc.docstatus==1 || doc.salary_structure)", + "fetch_from": "salary_structure.currency", + "fieldname": "currency", + "fieldtype": "Link", + "label": "Currency", + "options": "Currency", + "print_hide": 1, + "read_only": 1, + "reqd": 1 + }, + { + "fieldname": "total_deduction", + "fieldtype": "Currency", + "label": "Total Deduction", + "options": "currency", + "read_only": 1 + }, + { + "fieldname": "total_in_words", + "fieldtype": "Data", + "label": "Total in words", + "length": 240, + "read_only": 1 + }, + { + "fieldname": "section_break_75", + "fieldtype": "Section Break" + }, + { + "fieldname": "base_hour_rate", + "fieldtype": "Currency", + "label": "Hour Rate (Company Currency)", + "options": "Company:company:default_currency", + "print_hide_if_no_value": 1 + }, + { + "fieldname": "base_gross_pay", + "fieldtype": "Currency", + "label": "Gross Pay (Company Currency)", + "options": "Company:company:default_currency", + "read_only": 1 + }, + { + "default": "1.0", + "fieldname": "exchange_rate", + "fieldtype": "Float", + "hidden": 1, + "label": "Exchange Rate", + "print_hide": 1, + "reqd": 1 + }, + { + "fieldname": "base_total_deduction", + "fieldtype": "Currency", + "label": "Total Deduction (Company Currency)", + "options": "Company:company:default_currency", + "read_only": 1 + }, + { + "fieldname": "base_net_pay", + "fieldtype": "Currency", + "label": "Net Pay (Company Currency)", + "options": "Company:company:default_currency", + "read_only": 1 + }, + { + "bold": 1, + "fieldname": "base_rounded_total", + "fieldtype": "Currency", + "label": "Rounded Total (Company Currency)", + "options": "Company:company:default_currency", + "read_only": 1 + }, + { + "fieldname": "base_total_in_words", + "fieldtype": "Data", + "label": "Total in words (Company Currency)", + "length": 240, + "read_only": 1 + }, + { + "fieldname": "column_break_69", + "fieldtype": "Column Break" } ], "icon": "fa fa-file-text", "idx": 9, "is_submittable": 1, "links": [], - "modified": "2020-08-11 17:37:54.274384", + "modified": "2020-10-21 23:02:59.400249", "modified_by": "Administrator", "module": "Payroll", "name": "Salary Slip", diff --git a/erpnext/payroll/doctype/salary_slip/salary_slip.py b/erpnext/payroll/doctype/salary_slip/salary_slip.py index 4ccf56435d..20365b191d 100644 --- a/erpnext/payroll/doctype/salary_slip/salary_slip.py +++ b/erpnext/payroll/doctype/salary_slip/salary_slip.py @@ -50,16 +50,20 @@ class SalarySlip(TransactionBase): self.calculate_net_pay() - company_currency = erpnext.get_company_currency(self.company) - total = self.net_pay if self.is_rounding_total_disabled() else self.rounded_total - self.total_in_words = money_in_words(total, company_currency) - if frappe.db.get_single_value("Payroll Settings", "max_working_hours_against_timesheet"): max_working_hours = frappe.db.get_single_value("Payroll Settings", "max_working_hours_against_timesheet") if self.salary_slip_based_on_timesheet and (self.total_working_hours > int(max_working_hours)): frappe.msgprint(_("Total working hours should not be greater than max working hours {0}"). format(max_working_hours), alert=True) + def set_net_total_in_words(self): + doc_currency = self.currency + company_currency = erpnext.get_company_currency(self.company) + total = self.net_pay if self.is_rounding_total_disabled() else self.rounded_total + base_total = self.base_net_pay if self.is_rounding_total_disabled() else self.base_rounded_total + self.total_in_words = money_in_words(total, doc_currency) + self.base_total_in_words = money_in_words(base_total, company_currency) + def on_submit(self): if self.net_pay < 0: frappe.throw(_("Net Pay cannot be less than 0")) @@ -136,8 +140,8 @@ class SalarySlip(TransactionBase): self.salary_slip_based_on_timesheet = self._salary_structure_doc.salary_slip_based_on_timesheet or 0 self.set_time_sheet() self.pull_sal_struct() - consider_unmarked_attendance_as = frappe.db.get_value("Payroll Settings", None, "consider_unmarked_attendance_as") or "Present" - return consider_unmarked_attendance_as + payroll_based_on, consider_unmarked_attendance_as = frappe.db.get_value("Payroll Settings", None, ["payroll_based_on","consider_unmarked_attendance_as"]) + return [payroll_based_on, consider_unmarked_attendance_as] def set_time_sheet(self): if self.salary_slip_based_on_timesheet: @@ -182,6 +186,7 @@ class SalarySlip(TransactionBase): if self.salary_slip_based_on_timesheet: self.salary_structure = self._salary_structure_doc.name self.hour_rate = self._salary_structure_doc.hour_rate + self.base_hour_rate = flt(self.hour_rate) * flt(self.exchange_rate) self.total_working_hours = sum([d.working_hours or 0.0 for d in self.timesheets]) or 0.0 wages_amount = self.hour_rate * self.total_working_hours @@ -210,10 +215,10 @@ class SalarySlip(TransactionBase): frappe.throw(_("Please set Payroll based on in Payroll settings")) if payroll_based_on == "Attendance": - actual_lwp, absent = self.calculate_lwp_and_absent_days_based_on_attendance(holidays) + actual_lwp, absent = self.calculate_lwp_ppl_and_absent_days_based_on_attendance(holidays) self.absent_days = absent else: - actual_lwp = self.calculate_lwp_based_on_leave_application(holidays, working_days) + actual_lwp = self.calculate_lwp_or_ppl_based_on_leave_application(holidays, working_days) if not lwp: lwp = actual_lwp @@ -240,7 +245,6 @@ class SalarySlip(TransactionBase): self.absent_days += unmarked_days #will be treated as absent self.payment_days -= unmarked_days if include_holidays_in_total_working_days: - self.absent_days -= len(holidays) for holiday in holidays: if not frappe.db.exists("Attendance", {"employee": self.employee, "attendance_date": holiday, "docstatus": 1 }): self.payment_days += 1 @@ -301,7 +305,7 @@ class SalarySlip(TransactionBase): return holidays - def calculate_lwp_based_on_leave_application(self, holidays, working_days): + def calculate_lwp_or_ppl_based_on_leave_application(self, holidays, working_days): lwp = 0 holidays = "','".join(holidays) daily_wages_fraction_for_half_day = \ @@ -312,10 +316,12 @@ class SalarySlip(TransactionBase): leave = frappe.db.sql(""" SELECT t1.name, CASE WHEN (t1.half_day_date = %(dt)s or t1.to_date = t1.from_date) - THEN t1.half_day else 0 END + THEN t1.half_day else 0 END, + t2.is_ppl, + t2.fraction_of_daily_salary_per_leave FROM `tabLeave Application` t1, `tabLeave Type` t2 WHERE t2.name = t1.leave_type - AND t2.is_lwp = 1 + AND (t2.is_lwp = 1 or t2.is_ppl = 1) AND t1.docstatus = 1 AND t1.employee = %(employee)s AND ifnull(t1.salary_slip, '') = '' @@ -328,19 +334,35 @@ class SalarySlip(TransactionBase): """.format(holidays), {"employee": self.employee, "dt": dt}) if leave: + equivalent_lwp_count = 0 is_half_day_leave = cint(leave[0][1]) - lwp += (1 - daily_wages_fraction_for_half_day) if is_half_day_leave else 1 + is_partially_paid_leave = cint(leave[0][2]) + fraction_of_daily_salary_per_leave = flt(leave[0][3]) + + equivalent_lwp_count = (1 - daily_wages_fraction_for_half_day) if is_half_day_leave else 1 + + if is_partially_paid_leave: + equivalent_lwp_count *= fraction_of_daily_salary_per_leave if fraction_of_daily_salary_per_leave else 1 + + lwp += equivalent_lwp_count return lwp - def calculate_lwp_and_absent_days_based_on_attendance(self, holidays): + def calculate_lwp_ppl_and_absent_days_based_on_attendance(self, holidays): lwp = 0 absent = 0 daily_wages_fraction_for_half_day = \ flt(frappe.db.get_value("Payroll Settings", None, "daily_wages_fraction_for_half_day")) or 0.5 - lwp_leave_types = dict(frappe.get_all("Leave Type", {"is_lwp": 1}, ["name", "include_holiday"], as_list=1)) + leave_types = frappe.get_all("Leave Type", + or_filters=[["is_ppl", "=", 1], ["is_lwp", "=", 1]], + fields =["name", "is_lwp", "is_ppl", "fraction_of_daily_salary_per_leave", "include_holiday"]) + + leave_type_map = {} + for leave_type in leave_types: + leave_type_map[leave_type.name] = leave_type + attendances = frappe.db.sql(''' SELECT attendance_date, status, leave_type FROM `tabAttendance` @@ -352,21 +374,30 @@ class SalarySlip(TransactionBase): ''', values=(self.employee, self.start_date, self.end_date), as_dict=1) for d in attendances: - if d.status in ('Half Day', 'On Leave') and d.leave_type and d.leave_type not in lwp_leave_types: + if d.status in ('Half Day', 'On Leave') and d.leave_type and d.leave_type not in leave_type_map.keys(): continue if formatdate(d.attendance_date, "yyyy-mm-dd") in holidays: if d.status == "Absent" or \ - (d.leave_type and d.leave_type in lwp_leave_types and not lwp_leave_types[d.leave_type]): + (d.leave_type and d.leave_type in leave_type_map.keys() and not leave_type_map[d.leave_type]['include_holiday']): continue + if d.leave_type: + fraction_of_daily_salary_per_leave = leave_type_map[d.leave_type]["fraction_of_daily_salary_per_leave"] + if d.status == "Half Day": - lwp += (1 - daily_wages_fraction_for_half_day) - elif d.status == "On Leave" and d.leave_type in lwp_leave_types: - lwp += 1 + equivalent_lwp = (1 - daily_wages_fraction_for_half_day) + + if d.leave_type in leave_type_map.keys() and leave_type_map[d.leave_type]["is_ppl"]: + equivalent_lwp *= fraction_of_daily_salary_per_leave if fraction_of_daily_salary_per_leave else 1 + lwp += equivalent_lwp + elif d.status == "On Leave" and d.leave_type and d.leave_type in leave_type_map.keys(): + equivalent_lwp = 1 + if leave_type_map[d.leave_type]["is_ppl"]: + equivalent_lwp *= fraction_of_daily_salary_per_leave if fraction_of_daily_salary_per_leave else 1 + lwp += equivalent_lwp elif d.status == "Absent": absent += 1 - return lwp, absent def add_earning_for_hourly_wages(self, doc, salary_component, amount): @@ -391,15 +422,22 @@ class SalarySlip(TransactionBase): if self.salary_structure: self.calculate_component_amounts("earnings") self.gross_pay = self.get_component_totals("earnings") + self.base_gross_pay = flt(flt(self.gross_pay) * flt(self.exchange_rate), self.precision('base_gross_pay')) if self.salary_structure: self.calculate_component_amounts("deductions") self.total_deduction = self.get_component_totals("deductions") + self.base_total_deduction = flt(flt(self.total_deduction) * flt(self.exchange_rate), self.precision('base_total_deduction')) self.set_loan_repayment() self.net_pay = flt(self.gross_pay) - (flt(self.total_deduction) + flt(self.total_loan_repayment)) self.rounded_total = rounded(self.net_pay) + self.base_net_pay = flt(flt(self.net_pay) * flt(self.exchange_rate), self.precision('base_net_pay')) + self.base_rounded_total = flt(rounded(self.base_net_pay), self.precision('base_net_pay')) + if self.hour_rate: + self.base_hour_rate = flt(flt(self.hour_rate) * flt(self.exchange_rate), self.precision('base_hour_rate')) + self.set_net_total_in_words() def calculate_component_amounts(self, component_type): if not getattr(self, '_salary_structure_doc', None): @@ -950,9 +988,9 @@ class SalarySlip(TransactionBase): amounts = calculate_amounts(payment.loan, self.posting_date, "Regular Payment") total_amount = amounts['interest_amount'] + amounts['payable_principal_amount'] if payment.total_payment > total_amount: - frappe.throw(_("""Row {0}: Paid amount {1} is greater than pending accrued amount {2} - against loan {3}""").format(payment.idx, frappe.bold(payment.total_payment), - frappe.bold(total_amount), frappe.bold(payment.loan))) + frappe.throw(_("""Row {0}: Paid amount {1} is greater than pending accrued amount {2} against loan {3}""") + .format(payment.idx, frappe.bold(payment.total_payment), + frappe.bold(total_amount), frappe.bold(payment.loan))) self.total_interest_amount += payment.interest_amount self.total_principal_amount += payment.principal_amount @@ -1047,6 +1085,46 @@ class SalarySlip(TransactionBase): self.get_working_days_details(lwp=self.leave_without_pay) self.calculate_net_pay() + def set_totals(self): + self.gross_pay = 0 + if self.salary_slip_based_on_timesheet == 1: + self.calculate_total_for_salary_slip_based_on_timesheet() + else: + self.total_deduction = 0 + if self.earnings: + for earning in self.earnings: + self.gross_pay += flt(earning.amount) + if self.deductions: + for deduction in self.deductions: + self.total_deduction += flt(deduction.amount) + self.net_pay = flt(self.gross_pay) - flt(self.total_deduction) - flt(self.total_loan_repayment) + self.set_base_totals() + + def set_base_totals(self): + self.base_gross_pay = flt(self.gross_pay) * flt(self.exchange_rate) + self.base_total_deduction = flt(self.total_deduction) * flt(self.exchange_rate) + self.rounded_total = rounded(self.net_pay) + self.base_net_pay = flt(self.net_pay) * flt(self.exchange_rate) + self.base_rounded_total = rounded(self.base_net_pay) + self.set_net_total_in_words() + + #calculate total working hours, earnings based on hourly wages and totals + def calculate_total_for_salary_slip_based_on_timesheet(self): + if self.timesheets: + for timesheet in self.timesheets: + if timesheet.working_hours: + self.total_working_hours += timesheet.working_hours + + wages_amount = self.total_working_hours * self.hour_rate + self.base_hour_rate = flt(self.hour_rate) * flt(self.exchange_rate) + salary_component = frappe.db.get_value('Salary Structure', {'name': self.salary_structure}, 'salary_component') + if self.earnings: + for i, earning in enumerate(self.earnings): + if earning.salary_component == salary_component: + self.earnings[i].amount = wages_amount + self.gross_pay += self.earnings[i].amount + self.net_pay = flt(self.gross_pay) - flt(self.total_deduction) + def unlink_ref_doc_from_salary_slip(ref_no): linked_ss = frappe.db.sql_list("""select name from `tabSalary Slip` where journal_entry=%s and docstatus < 2""", (ref_no)) diff --git a/erpnext/payroll/doctype/salary_slip/test_salary_slip.py b/erpnext/payroll/doctype/salary_slip/test_salary_slip.py index 7fe4165362..5daf1d439d 100644 --- a/erpnext/payroll/doctype/salary_slip/test_salary_slip.py +++ b/erpnext/payroll/doctype/salary_slip/test_salary_slip.py @@ -13,6 +13,8 @@ from frappe.utils import getdate, nowdate, add_days, add_months, flt, get_first_ from erpnext.payroll.doctype.salary_structure.salary_structure import make_salary_slip from erpnext.payroll.doctype.payroll_entry.payroll_entry import get_month_details from erpnext.hr.doctype.employee.test_employee import make_employee +from erpnext.hr.doctype.leave_allocation.test_leave_allocation import create_leave_allocation +from erpnext.hr.doctype.leave_type.test_leave_type import create_leave_type from erpnext.payroll.doctype.employee_tax_exemption_declaration.test_employee_tax_exemption_declaration \ import create_payroll_period, create_exemption_category @@ -31,7 +33,7 @@ class TestSalarySlip(unittest.TestCase): frappe.db.set_value("Payroll Settings", None, "payroll_based_on", "Attendance") frappe.db.set_value("Payroll Settings", None, "daily_wages_fraction_for_half_day", 0.75) - emp_id = make_employee("test_for_attendance@salary.com") + emp_id = make_employee("test_payment_days_based_on_attendance@salary.com") frappe.db.set_value("Employee", emp_id, {"relieving_date": None, "status": "Active"}) frappe.db.set_value("Leave Type", "Leave Without Pay", "include_holiday", 0) @@ -53,7 +55,7 @@ class TestSalarySlip(unittest.TestCase): mark_attendance(emp_id, add_days(first_sunday, 4), 'On Leave', leave_type='Casual Leave', ignore_validate=True) # invalid lwp mark_attendance(emp_id, add_days(first_sunday, 7), 'On Leave', leave_type='Leave Without Pay', ignore_validate=True) # invalid lwp - ss = make_employee_salary_slip("test_for_attendance@salary.com", "Monthly") + ss = make_employee_salary_slip("test_payment_days_based_on_attendance@salary.com", "Monthly", "Test Payment Based On Attendence") self.assertEqual(ss.leave_without_pay, 1.25) self.assertEqual(ss.absent_days, 1) @@ -76,7 +78,7 @@ class TestSalarySlip(unittest.TestCase): # Payroll based on attendance frappe.db.set_value("Payroll Settings", None, "payroll_based_on", "Leave") - emp_id = make_employee("test_for_attendance@salary.com") + emp_id = make_employee("test_payment_days_based_on_leave_application@salary.com") frappe.db.set_value("Employee", emp_id, {"relieving_date": None, "status": "Active"}) frappe.db.set_value("Leave Type", "Leave Without Pay", "include_holiday", 0) @@ -93,31 +95,40 @@ class TestSalarySlip(unittest.TestCase): make_leave_application(emp_id, first_sunday, add_days(first_sunday, 3), "Leave Without Pay") - ss = make_employee_salary_slip("test_for_attendance@salary.com", "Monthly") + leave_type_ppl = create_leave_type(leave_type_name="Test Partially Paid Leave", is_ppl = 1) + leave_type_ppl.save() - self.assertEqual(ss.leave_without_pay, 3) + alloc = create_leave_allocation( + employee = emp_id, from_date = add_days(first_sunday, 4), + to_date = add_days(first_sunday, 10), new_leaves_allocated = 3, + leave_type = "Test Partially Paid Leave") + alloc.save() + alloc.submit() + + #two day leave ppl with fraction_of_daily_salary_per_leave = 0.5 equivalent to single day lwp + make_leave_application(emp_id, add_days(first_sunday, 4), add_days(first_sunday, 5), "Test Partially Paid Leave") + + ss = make_employee_salary_slip("test_payment_days_based_on_leave_application@salary.com", "Monthly", "Test Payment Based On Leave Application") + + + self.assertEqual(ss.leave_without_pay, 4) days_in_month = no_of_days[0] no_of_holidays = no_of_days[1] - self.assertEqual(ss.payment_days, days_in_month - no_of_holidays - 3) - - #Gross pay calculation based on attendances - gross_pay = 78000 - ((78000 / (days_in_month - no_of_holidays)) * flt(ss.leave_without_pay)) - - self.assertEqual(flt(ss.gross_pay, 2), flt(gross_pay, 2)) + self.assertEqual(ss.payment_days, days_in_month - no_of_holidays - 4) frappe.db.set_value("Payroll Settings", None, "payroll_based_on", "Leave") def test_salary_slip_with_holidays_included(self): no_of_days = self.get_no_of_days() frappe.db.set_value("Payroll Settings", None, "include_holidays_in_total_working_days", 1) - make_employee("test_employee@salary.com") + make_employee("test_salary_slip_with_holidays_included@salary.com") frappe.db.set_value("Employee", frappe.get_value("Employee", - {"employee_name":"test_employee@salary.com"}, "name"), "relieving_date", None) + {"employee_name":"test_salary_slip_with_holidays_included@salary.com"}, "name"), "relieving_date", None) frappe.db.set_value("Employee", frappe.get_value("Employee", - {"employee_name":"test_employee@salary.com"}, "name"), "status", "Active") - ss = make_employee_salary_slip("test_employee@salary.com", "Monthly") + {"employee_name":"test_salary_slip_with_holidays_included@salary.com"}, "name"), "status", "Active") + ss = make_employee_salary_slip("test_salary_slip_with_holidays_included@salary.com", "Monthly", "Test Salary Slip With Holidays Included") self.assertEqual(ss.total_working_days, no_of_days[0]) self.assertEqual(ss.payment_days, no_of_days[0]) @@ -128,12 +139,12 @@ class TestSalarySlip(unittest.TestCase): def test_salary_slip_with_holidays_excluded(self): no_of_days = self.get_no_of_days() frappe.db.set_value("Payroll Settings", None, "include_holidays_in_total_working_days", 0) - make_employee("test_employee@salary.com") + make_employee("test_salary_slip_with_holidays_excluded@salary.com") frappe.db.set_value("Employee", frappe.get_value("Employee", - {"employee_name":"test_employee@salary.com"}, "name"), "relieving_date", None) + {"employee_name":"test_salary_slip_with_holidays_excluded@salary.com"}, "name"), "relieving_date", None) frappe.db.set_value("Employee", frappe.get_value("Employee", - {"employee_name":"test_employee@salary.com"}, "name"), "status", "Active") - ss = make_employee_salary_slip("test_employee@salary.com", "Monthly") + {"employee_name":"test_salary_slip_with_holidays_excluded@salary.com"}, "name"), "status", "Active") + ss = make_employee_salary_slip("test_salary_slip_with_holidays_excluded@salary.com", "Monthly", "Test Salary Slip With Holidays Excluded") self.assertEqual(ss.total_working_days, no_of_days[0] - no_of_days[1]) self.assertEqual(ss.payment_days, no_of_days[0] - no_of_days[1]) @@ -148,7 +159,7 @@ class TestSalarySlip(unittest.TestCase): frappe.db.set_value("Payroll Settings", None, "include_holidays_in_total_working_days", 1) # set joinng date in the same month - make_employee("test_employee@salary.com") + make_employee("test_payment_days@salary.com") if getdate(nowdate()).day >= 15: relieving_date = getdate(add_days(nowdate(),-10)) date_of_joining = getdate(add_days(nowdate(),-10)) @@ -163,39 +174,39 @@ class TestSalarySlip(unittest.TestCase): relieving_date = getdate(nowdate()) frappe.db.set_value("Employee", frappe.get_value("Employee", - {"employee_name":"test_employee@salary.com"}, "name"), "date_of_joining", date_of_joining) + {"employee_name":"test_payment_days@salary.com"}, "name"), "date_of_joining", date_of_joining) frappe.db.set_value("Employee", frappe.get_value("Employee", - {"employee_name":"test_employee@salary.com"}, "name"), "relieving_date", None) + {"employee_name":"test_payment_days@salary.com"}, "name"), "relieving_date", None) frappe.db.set_value("Employee", frappe.get_value("Employee", - {"employee_name":"test_employee@salary.com"}, "name"), "status", "Active") + {"employee_name":"test_payment_days@salary.com"}, "name"), "status", "Active") - ss = make_employee_salary_slip("test_employee@salary.com", "Monthly") + ss = make_employee_salary_slip("test_payment_days@salary.com", "Monthly", "Test Payment Days") self.assertEqual(ss.total_working_days, no_of_days[0]) self.assertEqual(ss.payment_days, (no_of_days[0] - getdate(date_of_joining).day + 1)) # set relieving date in the same month frappe.db.set_value("Employee",frappe.get_value("Employee", - {"employee_name":"test_employee@salary.com"}, "name"), "date_of_joining", (add_days(nowdate(),-60))) + {"employee_name":"test_payment_days@salary.com"}, "name"), "date_of_joining", (add_days(nowdate(),-60))) frappe.db.set_value("Employee", frappe.get_value("Employee", - {"employee_name":"test_employee@salary.com"}, "name"), "relieving_date", relieving_date) + {"employee_name":"test_payment_days@salary.com"}, "name"), "relieving_date", relieving_date) frappe.db.set_value("Employee", frappe.get_value("Employee", - {"employee_name":"test_employee@salary.com"}, "name"), "status", "Left") + {"employee_name":"test_payment_days@salary.com"}, "name"), "status", "Left") ss.save() self.assertEqual(ss.total_working_days, no_of_days[0]) self.assertEqual(ss.payment_days, getdate(relieving_date).day) frappe.db.set_value("Employee", frappe.get_value("Employee", - {"employee_name":"test_employee@salary.com"}, "name"), "relieving_date", None) + {"employee_name":"test_payment_days@salary.com"}, "name"), "relieving_date", None) frappe.db.set_value("Employee", frappe.get_value("Employee", - {"employee_name":"test_employee@salary.com"}, "name"), "status", "Active") + {"employee_name":"test_payment_days@salary.com"}, "name"), "status", "Active") def test_employee_salary_slip_read_permission(self): - make_employee("test_employee@salary.com") + make_employee("test_employee_salary_slip_read_permission@salary.com") - salary_slip_test_employee = make_employee_salary_slip("test_employee@salary.com", "Monthly") - frappe.set_user("test_employee@salary.com") + salary_slip_test_employee = make_employee_salary_slip("test_employee_salary_slip_read_permission@salary.com", "Monthly", "Test Employee Salary Slip Read Permission") + frappe.set_user("test_employee_salary_slip_read_permission@salary.com") self.assertTrue(salary_slip_test_employee.has_permission("read")) def test_email_salary_slip(self): @@ -203,8 +214,8 @@ class TestSalarySlip(unittest.TestCase): frappe.db.set_value("Payroll Settings", None, "email_salary_slip_to_employee", 1) - make_employee("test_employee@salary.com") - ss = make_employee_salary_slip("test_employee@salary.com", "Monthly") + make_employee("test_email_salary_slip@salary.com") + ss = make_employee_salary_slip("test_email_salary_slip@salary.com", "Monthly", "Test Salary Slip Email") ss.company = "_Test Company" ss.save() ss.submit() @@ -215,8 +226,9 @@ class TestSalarySlip(unittest.TestCase): def test_loan_repayment_salary_slip(self): from erpnext.loan_management.doctype.loan.test_loan import create_loan_type, create_loan, make_loan_disbursement_entry, create_loan_accounts from erpnext.loan_management.doctype.process_loan_interest_accrual.process_loan_interest_accrual import process_loan_interest_accrual_for_term_loans + from erpnext.payroll.doctype.salary_structure.test_salary_structure import make_salary_structure - applicant = make_employee("test_loanemployee@salary.com", company="_Test Company") + applicant = make_employee("test_loan_repayment_salary_slip@salary.com", company="_Test Company") create_loan_accounts() @@ -228,6 +240,8 @@ class TestSalarySlip(unittest.TestCase): interest_income_account='Interest Income Account - _TC', penalty_income_account='Penalty Income Account - _TC') + make_salary_structure("Test Loan Repayment Salary Structure", "Monthly", employee=applicant, currency='INR') + frappe.db.sql("""delete from `tabLoan""") loan = create_loan(applicant, "Car Loan", 11000, "Repay Over Number of Periods", 20, posting_date=add_months(nowdate(), -1)) loan.repay_from_salary = 1 loan.submit() @@ -236,7 +250,7 @@ class TestSalarySlip(unittest.TestCase): process_loan_interest_accrual_for_term_loans(posting_date=nowdate()) - ss = make_employee_salary_slip("test_loanemployee@salary.com", "Monthly") + ss = make_employee_salary_slip("test_loan_repayment_salary_slip@salary.com", "Monthly", "Test Loan Repayment Salary Structure") ss.submit() self.assertEqual(ss.total_loan_repayment, 592) @@ -249,7 +263,7 @@ class TestSalarySlip(unittest.TestCase): for payroll_frequency in ["Monthly", "Bimonthly", "Fortnightly", "Weekly", "Daily"]: make_employee(payroll_frequency + "_test_employee@salary.com") - ss = make_employee_salary_slip(payroll_frequency + "_test_employee@salary.com", payroll_frequency) + ss = make_employee_salary_slip(payroll_frequency + "_test_employee@salary.com", payroll_frequency, payroll_frequency + "_Test Payroll Frequency") if payroll_frequency == "Monthly": self.assertEqual(ss.end_date, m['month_end_date']) elif payroll_frequency == "Bimonthly": @@ -264,6 +278,18 @@ class TestSalarySlip(unittest.TestCase): elif payroll_frequency == "Daily": self.assertEqual(ss.end_date, nowdate()) + def test_multi_currency_salary_slip(self): + from erpnext.payroll.doctype.salary_structure.test_salary_structure import make_salary_structure + applicant = make_employee("test_multi_currency_salary_slip@salary.com", company="_Test Company") + frappe.db.sql("""delete from `tabSalary Structure` where name='Test Multi Currency Salary Slip'""") + salary_structure = make_salary_structure("Test Multi Currency Salary Slip", "Monthly", employee=applicant, company="_Test Company", currency='USD') + salary_slip = make_salary_slip(salary_structure.name, employee = applicant) + salary_slip.exchange_rate = 70 + salary_slip.calculate_net_pay() + + self.assertEqual(salary_slip.gross_pay, 78000) + self.assertEqual(salary_slip.base_gross_pay, 78000*70) + def test_tax_for_payroll_period(self): data = {} # test the impact of tax exemption declaration, tax exemption proof submission @@ -384,16 +410,21 @@ def make_employee_salary_slip(user, payroll_frequency, salary_structure=None): salary_structure = payroll_frequency + " Salary Structure Test for Salary Slip" employee = frappe.db.get_value("Employee", {"user_id": user}) - salary_structure_doc = make_salary_structure(salary_structure, payroll_frequency, employee) - salary_slip = frappe.db.get_value("Salary Slip", {"employee": frappe.db.get_value("Employee", {"user_id": user})}) + if not frappe.db.exists('Salary Structure', salary_structure): + salary_structure_doc = make_salary_structure(salary_structure, payroll_frequency, employee) + else: + salary_structure_doc = frappe.get_doc('Salary Structure', salary_structure) + salary_slip_name = frappe.db.get_value("Salary Slip", {"employee": frappe.db.get_value("Employee", {"user_id": user})}) - if not salary_slip: + if not salary_slip_name: salary_slip = make_salary_slip(salary_structure_doc.name, employee = employee) salary_slip.employee_name = frappe.get_value("Employee", {"name":frappe.db.get_value("Employee", {"user_id": user})}, "employee_name") salary_slip.payroll_frequency = payroll_frequency salary_slip.posting_date = nowdate() salary_slip.insert() + else: + salary_slip = frappe.get_doc('Salary Slip', salary_slip_name) return salary_slip @@ -434,7 +465,7 @@ def get_salary_component_account(sal_comp, company_list=None): sal_comp.append("accounts", { "company": d, - "default_account": create_account(account_name, d, parent_account) + "account": create_account(account_name, d, parent_account) }) sal_comp.save() @@ -561,7 +592,8 @@ def create_exemption_declaration(employee, payroll_period): "doctype": "Employee Tax Exemption Declaration", "employee": employee, "payroll_period": payroll_period, - "company": erpnext.get_default_company() + "company": erpnext.get_default_company(), + "currency": erpnext.get_default_currency() }) declaration.append("declarations", { "exemption_sub_category": "_Test Sub Category", @@ -576,7 +608,8 @@ def create_proof_submission(employee, payroll_period, amount): "doctype": "Employee Tax Exemption Proof Submission", "employee": employee, "payroll_period": payroll_period.name, - "submission_date": submission_date + "submission_date": submission_date, + "currency": erpnext.get_default_currency() }) proof_submission.append("tax_exemption_proofs", { "exemption_sub_category": "_Test Sub Category", @@ -593,13 +626,13 @@ def create_benefit_claim(employee, payroll_period, amount, component): "employee": employee, "claimed_amount": amount, "claim_date": claim_date, - "earning_component": component + "earning_component": component, + "currency": erpnext.get_default_currency() }).submit() return claim_date -def create_tax_slab(payroll_period, effective_date = None, allow_tax_exemption = False, dont_submit = False): - if frappe.db.exists("Income Tax Slab", "Tax Slab: " + payroll_period.name): - return +def create_tax_slab(payroll_period, effective_date = None, allow_tax_exemption = False, dont_submit = False, currency=erpnext.get_default_currency()): + frappe.db.sql("""delete from `tabIncome Tax Slab`""") slabs = [ { @@ -622,6 +655,7 @@ def create_tax_slab(payroll_period, effective_date = None, allow_tax_exemption = income_tax_slab = frappe.new_doc("Income Tax Slab") income_tax_slab.name = "Tax Slab: " + payroll_period.name income_tax_slab.effective_from = effective_date or add_days(payroll_period.start_date, -2) + income_tax_slab.currency = currency if allow_tax_exemption: income_tax_slab.allow_tax_exemption = 1 @@ -672,7 +706,8 @@ def create_additional_salary(employee, payroll_period, amount): "salary_component": "Performance Bonus", "payroll_date": salary_date, "amount": amount, - "type": "Earning" + "type": "Earning", + "currency": erpnext.get_default_currency() }).submit() return salary_date diff --git a/erpnext/payroll/doctype/salary_structure/salary_structure.js b/erpnext/payroll/doctype/salary_structure/salary_structure.js index ad93a2fa4b..7daae49c58 100755 --- a/erpnext/payroll/doctype/salary_structure/salary_structure.js +++ b/erpnext/payroll/doctype/salary_structure/salary_structure.js @@ -41,20 +41,6 @@ frappe.ui.form.on('Salary Structure', { frm.toggle_reqd(['payroll_frequency'], !frm.doc.salary_slip_based_on_timesheet) - frm.set_query("salary_component", "earnings", function() { - return { - filters: { - type: "earning" - } - } - }); - frm.set_query("salary_component", "deductions", function() { - return { - filters: { - type: "deduction" - } - } - }); frm.set_query("payment_account", function () { var account_types = ["Bank", "Cash"]; return { @@ -65,9 +51,48 @@ frappe.ui.form.on('Salary Structure', { } }; }); + frm.trigger('set_earning_deduction_component'); + }, + + set_earning_deduction_component: function(frm) { + if(!frm.doc.currency && !frm.doc.company) return; + frm.set_query("salary_component", "earnings", function() { + return { + query : "erpnext.payroll.doctype.salary_structure.salary_structure.get_earning_deduction_components", + filters: {type: "earning", currency: frm.doc.currency, company: frm.doc.company} + }; + }); + frm.set_query("salary_component", "deductions", function() { + return { + query : "erpnext.payroll.doctype.salary_structure.salary_structure.get_earning_deduction_components", + filters: {type: "deduction", currency: frm.doc.currency, company: frm.doc.company} + }; + }); + }, + + + currency: function(frm) { + calculate_totals(frm.doc); + frm.trigger("set_dynamic_labels") + frm.trigger('set_earning_deduction_component'); + frm.refresh() + }, + + set_dynamic_labels: function(frm) { + frm.set_currency_labels(["net_pay","hour_rate", "leave_encashment_amount_per_day", "max_benefits", "total_earning", + "total_deduction"], frm.doc.currency); + + frm.set_currency_labels(["amount", "additional_amount", "tax_on_flexible_benefit", "tax_on_additional_salary"], + frm.doc.currency, "earnings"); + + frm.set_currency_labels(["amount", "additional_amount", "tax_on_flexible_benefit", "tax_on_additional_salary"], + frm.doc.currency, "deductions"); + + frm.refresh_fields(); }, refresh: function(frm) { + frm.trigger("set_dynamic_labels") frm.trigger("toggle_fields"); frm.fields_dict['earnings'].grid.set_column_disp("default_amount", false); frm.fields_dict['deductions'].grid.set_column_disp("default_amount", false); @@ -101,10 +126,12 @@ frappe.ui.form.on('Salary Structure', { fields: [ {fieldname: "sec_break", fieldtype: "Section Break", label: __("Filter Employees By (Optional)")}, {fieldname: "company", fieldtype: "Link", options: "Company", label: __("Company"), default: frm.doc.company, read_only:1}, + {fieldname: "currency", fieldtype: "Link", options: "Currency", label: __("Currency"), default: frm.doc.currency, read_only:1}, {fieldname: "grade", fieldtype: "Link", options: "Employee Grade", label: __("Employee Grade")}, {fieldname:'department', fieldtype:'Link', options: 'Department', label: __('Department')}, {fieldname:'designation', fieldtype:'Link', options: 'Designation', label: __('Designation')}, - {fieldname:"employee", fieldtype: "Link", options: "Employee", label: __("Employee")}, + {fieldname:"employee", fieldtype: "Link", options: "Employee", label: __("Employee")}, + {fieldname:"payroll_payable_account", fieldtype: "Link", options: "Account", filters: {"company": frm.doc.company, "root_type": "Liability", "is_group": 0, "account_currency": frm.doc.currency}, label: __("Payroll Payable Account")}, {fieldname:'base_variable', fieldtype:'Section Break'}, {fieldname:'from_date', fieldtype:'Date', label: __('From Date'), "reqd": 1}, {fieldname:'income_tax_slab', fieldtype:'Link', label: __('Income Tax Slab'), options: 'Income Tax Slab'}, diff --git a/erpnext/payroll/doctype/salary_structure/salary_structure.json b/erpnext/payroll/doctype/salary_structure/salary_structure.json index 5f94929f0b..de56fc8457 100644 --- a/erpnext/payroll/doctype/salary_structure/salary_structure.json +++ b/erpnext/payroll/doctype/salary_structure/salary_structure.json @@ -13,6 +13,7 @@ "column_break1", "is_active", "payroll_frequency", + "currency", "is_default", "time_sheet_earning_detail", "salary_slip_based_on_timesheet", @@ -26,9 +27,9 @@ "deductions", "conditions_and_formula_variable_and_example", "net_pay_detail", - "column_break2", "total_earning", "total_deduction", + "column_break2", "net_pay", "account", "mode_of_payment", @@ -43,23 +44,17 @@ "label": "Company", "options": "Company", "remember_last_selected_value": 1, - "reqd": 1, - "show_days": 1, - "show_seconds": 1 + "reqd": 1 }, { "fieldname": "letter_head", "fieldtype": "Link", "label": "Letter Head", - "options": "Letter Head", - "show_days": 1, - "show_seconds": 1 + "options": "Letter Head" }, { "fieldname": "column_break1", "fieldtype": "Column Break", - "show_days": 1, - "show_seconds": 1, "width": "50%" }, { @@ -72,9 +67,7 @@ "oldfieldname": "is_active", "oldfieldtype": "Select", "options": "\nYes\nNo", - "reqd": 1, - "show_days": 1, - "show_seconds": 1 + "reqd": 1 }, { "default": "Monthly", @@ -82,9 +75,7 @@ "fieldname": "payroll_frequency", "fieldtype": "Select", "label": "Payroll Frequency", - "options": "\nMonthly\nFortnightly\nBimonthly\nWeekly\nDaily", - "show_days": 1, - "show_seconds": 1 + "options": "\nMonthly\nFortnightly\nBimonthly\nWeekly\nDaily" }, { "default": "No", @@ -95,62 +86,46 @@ "no_copy": 1, "options": "Yes\nNo", "print_hide": 1, - "read_only": 1, - "show_days": 1, - "show_seconds": 1 + "read_only": 1 }, { "fieldname": "time_sheet_earning_detail", - "fieldtype": "Section Break", - "show_days": 1, - "show_seconds": 1 + "fieldtype": "Section Break" }, { "default": "0", "fieldname": "salary_slip_based_on_timesheet", "fieldtype": "Check", - "label": "Salary Slip Based on Timesheet", - "show_days": 1, - "show_seconds": 1 + "label": "Salary Slip Based on Timesheet" }, { "fieldname": "column_break_17", - "fieldtype": "Column Break", - "show_days": 1, - "show_seconds": 1 + "fieldtype": "Column Break" }, { "description": "Salary Component for timesheet based payroll.", "fieldname": "salary_component", "fieldtype": "Link", "label": "Salary Component", - "options": "Salary Component", - "show_days": 1, - "show_seconds": 1 + "options": "Salary Component" }, { "fieldname": "hour_rate", "fieldtype": "Currency", "label": "Hour Rate", - "options": "Company:company:default_currency", - "show_days": 1, - "show_seconds": 1 + "options": "currency" }, { "fieldname": "leave_encashment_amount_per_day", "fieldtype": "Currency", "label": "Leave Encashment Amount Per Day", - "options": "Company:company:default_currency", - "show_days": 1, - "show_seconds": 1 + "options": "currency" }, { "fieldname": "max_benefits", "fieldtype": "Currency", "label": "Max Benefits (Amount)", - "options": "Company:company:default_currency", - "show_days": 1, - "show_seconds": 1 + "options": "currency" }, { "description": "Salary breakup based on Earning and Deduction.", @@ -158,9 +133,7 @@ "fieldtype": "Section Break", "oldfieldname": "earning_deduction", "oldfieldtype": "Section Break", - "precision": "2", - "show_days": 1, - "show_seconds": 1 + "precision": "2" }, { "fieldname": "earnings", @@ -168,9 +141,7 @@ "label": "Earnings", "oldfieldname": "earning_details", "oldfieldtype": "Table", - "options": "Salary Detail", - "show_days": 1, - "show_seconds": 1 + "options": "Salary Detail" }, { "fieldname": "deductions", @@ -178,22 +149,16 @@ "label": "Deductions", "oldfieldname": "deduction_details", "oldfieldtype": "Table", - "options": "Salary Detail", - "show_days": 1, - "show_seconds": 1 + "options": "Salary Detail" }, { "fieldname": "net_pay_detail", "fieldtype": "Section Break", - "options": "Simple", - "show_days": 1, - "show_seconds": 1 + "options": "Simple" }, { "fieldname": "column_break2", "fieldtype": "Column Break", - "show_days": 1, - "show_seconds": 1, "width": "50%" }, { @@ -201,63 +166,45 @@ "fieldtype": "Currency", "hidden": 1, "label": "Total Earning", - "oldfieldname": "total_earning", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "read_only": 1, - "show_days": 1, - "show_seconds": 1 + "options": "currency", + "read_only": 1 }, { "fieldname": "total_deduction", "fieldtype": "Currency", "hidden": 1, "label": "Total Deduction", - "oldfieldname": "total_deduction", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "read_only": 1, - "show_days": 1, - "show_seconds": 1 + "options": "currency", + "read_only": 1 }, { "fieldname": "net_pay", "fieldtype": "Currency", "hidden": 1, "label": "Net Pay", - "options": "Company:company:default_currency", - "read_only": 1, - "show_days": 1, - "show_seconds": 1 + "options": "currency", + "read_only": 1 }, { "fieldname": "account", "fieldtype": "Section Break", - "label": "Account", - "show_days": 1, - "show_seconds": 1 + "label": "Account" }, { "fieldname": "mode_of_payment", "fieldtype": "Link", "label": "Mode of Payment", - "options": "Mode of Payment", - "show_days": 1, - "show_seconds": 1 + "options": "Mode of Payment" }, { "fieldname": "column_break_28", - "fieldtype": "Column Break", - "show_days": 1, - "show_seconds": 1 + "fieldtype": "Column Break" }, { "fieldname": "payment_account", "fieldtype": "Link", "label": "Payment Account", - "options": "Account", - "show_days": 1, - "show_seconds": 1 + "options": "Account" }, { "fieldname": "amended_from", @@ -266,23 +213,26 @@ "no_copy": 1, "options": "Salary Structure", "print_hide": 1, - "read_only": 1, - "show_days": 1, - "show_seconds": 1 + "read_only": 1 }, { "fieldname": "conditions_and_formula_variable_and_example", "fieldtype": "HTML", - "label": "Conditions and Formula variable and example", - "show_days": 1, - "show_seconds": 1 + "label": "Conditions and Formula variable and example" + }, + { + "fieldname": "currency", + "fieldtype": "Link", + "label": "Currency", + "options": "Currency", + "reqd": 1 } ], "icon": "fa fa-file-text", "idx": 1, "is_submittable": 1, "links": [], - "modified": "2020-06-22 17:07:26.129355", + "modified": "2020-09-30 11:30:32.190798", "modified_by": "Administrator", "module": "Payroll", "name": "Salary Structure", diff --git a/erpnext/payroll/doctype/salary_structure/salary_structure.py b/erpnext/payroll/doctype/salary_structure/salary_structure.py index ffc16d73c2..877e41d93c 100644 --- a/erpnext/payroll/doctype/salary_structure/salary_structure.py +++ b/erpnext/payroll/doctype/salary_structure/salary_structure.py @@ -2,7 +2,7 @@ # License: GNU General Public License v3. See license.txt from __future__ import unicode_literals -import frappe +import frappe, erpnext from frappe.utils import flt, cint, cstr from frappe import _ @@ -88,24 +88,26 @@ class SalaryStructure(Document): return employees @frappe.whitelist() - def assign_salary_structure(self, company=None, grade=None, department=None, designation=None,employee=None, - from_date=None, base=None, variable=None, income_tax_slab=None): - employees = self.get_employees(company= company, grade= grade,department= department,designation= designation,name=employee) + def assign_salary_structure(self, grade=None, department=None, designation=None,employee=None, + payroll_payable_account=None, from_date=None, base=None, variable=None, income_tax_slab=None): + employees = self.get_employees(company= self.company, grade= grade,department= department,designation= designation,name=employee) if employees: if len(employees) > 20: frappe.enqueue(assign_salary_structure_for_employees, timeout=600, - employees=employees, salary_structure=self,from_date=from_date, - base=base, variable=variable, income_tax_slab=income_tax_slab) + employees=employees, salary_structure=self, + payroll_payable_account=payroll_payable_account, + from_date=from_date, base=base, variable=variable, income_tax_slab=income_tax_slab) else: - assign_salary_structure_for_employees(employees, self, from_date=from_date, - base=base, variable=variable, income_tax_slab=income_tax_slab) + assign_salary_structure_for_employees(employees, self, + payroll_payable_account=payroll_payable_account, + from_date=from_date, base=base, variable=variable, income_tax_slab=income_tax_slab) else: frappe.msgprint(_("No Employee Found")) -def assign_salary_structure_for_employees(employees, salary_structure, from_date=None, base=None, variable=None, income_tax_slab=None): +def assign_salary_structure_for_employees(employees, salary_structure, payroll_payable_account=None, from_date=None, base=None, variable=None, income_tax_slab=None): salary_structures_assignments = [] existing_assignments_for = get_existing_assignments(employees, salary_structure, from_date) count=0 @@ -115,7 +117,7 @@ def assign_salary_structure_for_employees(employees, salary_structure, from_date count +=1 salary_structures_assignment = create_salary_structures_assignment(employee, - salary_structure, from_date, base, variable, income_tax_slab) + salary_structure, payroll_payable_account, from_date, base, variable, income_tax_slab) salary_structures_assignments.append(salary_structures_assignment) frappe.publish_progress(count*100/len(set(employees) - set(existing_assignments_for)), title = _("Assigning Structures...")) @@ -123,11 +125,22 @@ def assign_salary_structure_for_employees(employees, salary_structure, from_date frappe.msgprint(_("Structures have been assigned successfully")) -def create_salary_structures_assignment(employee, salary_structure, from_date, base, variable, income_tax_slab=None): +def create_salary_structures_assignment(employee, salary_structure, payroll_payable_account, from_date, base, variable, income_tax_slab=None): + if not payroll_payable_account: + payroll_payable_account = frappe.db.get_value('Company', salary_structure.company, 'default_payroll_payable_account') + if not payroll_payable_account: + frappe.throw(_('Please set "Default Payroll Payable Account" in Company Defaults')) + payroll_payable_account_currency = frappe.db.get_value('Account', payroll_payable_account, 'account_currency') + company_curency = erpnext.get_company_currency(salary_structure.company) + if payroll_payable_account_currency != salary_structure.currency and payroll_payable_account_currency != company_curency: + frappe.throw(_("Invalid Payroll Payable Account. The account currency must be {0} or {1}").format(salary_structure.currency, company_curency)) + assignment = frappe.new_doc("Salary Structure Assignment") assignment.employee = employee assignment.salary_structure = salary_structure.name assignment.company = salary_structure.company + assignment.currency = salary_structure.currency + assignment.payroll_payable_account = payroll_payable_account assignment.from_date = from_date assignment.base = base assignment.variable = variable @@ -170,7 +183,8 @@ def make_salary_slip(source_name, target_doc = None, employee = None, as_print = "doctype": "Salary Slip", "field_map": { "total_earning": "gross_pay", - "name": "salary_structure" + "name": "salary_structure", + "currency": "currency" } } }, target_doc, postprocess, ignore_child_tables=True, ignore_permissions=ignore_permissions) @@ -188,7 +202,22 @@ def get_employees(salary_structure): filters={'salary_structure': salary_structure, 'docstatus': 1}, fields=['employee']) if not employees: - frappe.throw(_("There's no Employee with Salary Structure: {0}. \ - Assign {1} to an Employee to preview Salary Slip").format(salary_structure, salary_structure)) + frappe.throw(_("There's no Employee with Salary Structure: {0}. Assign {1} to an Employee to preview Salary Slip").format( + salary_structure, salary_structure)) return list(set([d.employee for d in employees])) + +@frappe.whitelist() +@frappe.validate_and_sanitize_search_inputs +def get_earning_deduction_components(doctype, txt, searchfield, start, page_len, filters): + if len(filters) < 3: + return {} + + return frappe.db.sql(""" + select t1.salary_component + from `tabSalary Component` t1, `tabSalary Component Account` t2 + where t1.salary_component = t2.parent + and t1.type = %s + and t2.company = %s + order by salary_component + """, (filters['type'], filters['company']) ) diff --git a/erpnext/payroll/doctype/salary_structure/test_salary_structure.py b/erpnext/payroll/doctype/salary_structure/test_salary_structure.py index e04fda8120..abb669740b 100644 --- a/erpnext/payroll/doctype/salary_structure/test_salary_structure.py +++ b/erpnext/payroll/doctype/salary_structure/test_salary_structure.py @@ -94,7 +94,8 @@ class TestSalaryStructure(unittest.TestCase): self.assertFalse(("\n" in row.formula) or ("\n" in row.condition)) def test_salary_structures_assignment(self): - salary_structure = make_salary_structure("Salary Structure Sample", "Monthly") + company_currency = erpnext.get_default_currency() + salary_structure = make_salary_structure("Salary Structure Sample", "Monthly", currency=company_currency) employee = "test_assign_stucture@salary.com" employee_doc_name = make_employee(employee) # clear the already assigned stuctures @@ -107,8 +108,13 @@ class TestSalaryStructure(unittest.TestCase): self.assertEqual(salary_structure_assignment.base, 5000) self.assertEqual(salary_structure_assignment.variable, 200) + def test_multi_currency_salary_structure(self): + make_employee("test_muti_currency_employee@salary.com") + sal_struct = make_salary_structure("Salary Structure Multi Currency", "Monthly", currency='USD') + self.assertEqual(sal_struct.currency, 'USD') + def make_salary_structure(salary_structure, payroll_frequency, employee=None, dont_submit=False, other_details=None, - test_tax=False, company=None): + test_tax=False, company=None, currency=erpnext.get_default_currency()): if test_tax: frappe.db.sql("""delete from `tabSalary Structure` where name=%s""",(salary_structure)) @@ -120,7 +126,8 @@ def make_salary_structure(salary_structure, payroll_frequency, employee=None, do "earnings": make_earning_salary_component(test_tax=test_tax, company_list=["_Test Company"]), "deductions": make_deduction_salary_component(test_tax=test_tax, company_list=["_Test Company"]), "payroll_frequency": payroll_frequency, - "payment_account": get_random("Account") + "payment_account": get_random("Account", filters={'account_currency': currency}), + "currency": currency } if other_details and isinstance(other_details, dict): details.update(other_details) @@ -134,16 +141,16 @@ def make_salary_structure(salary_structure, payroll_frequency, employee=None, do if employee and not frappe.db.get_value("Salary Structure Assignment", {'employee':employee, 'docstatus': 1}) and salary_structure_doc.docstatus==1: - create_salary_structure_assignment(employee, salary_structure, company=company) + create_salary_structure_assignment(employee, salary_structure, company=company, currency=currency) return salary_structure_doc -def create_salary_structure_assignment(employee, salary_structure, from_date=None, company=None): +def create_salary_structure_assignment(employee, salary_structure, from_date=None, company=None, currency=erpnext.get_default_currency()): if frappe.db.exists("Salary Structure Assignment", {"employee": employee}): frappe.db.sql("""delete from `tabSalary Structure Assignment` where employee=%s""",(employee)) payroll_period = create_payroll_period() - create_tax_slab(payroll_period, allow_tax_exemption=True) + create_tax_slab(payroll_period, allow_tax_exemption=True, currency=currency) salary_structure_assignment = frappe.new_doc("Salary Structure Assignment") salary_structure_assignment.employee = employee @@ -151,8 +158,15 @@ def create_salary_structure_assignment(employee, salary_structure, from_date=Non salary_structure_assignment.variable = 5000 salary_structure_assignment.from_date = from_date or add_days(nowdate(), -1) salary_structure_assignment.salary_structure = salary_structure + salary_structure_assignment.currency = currency + salary_structure_assignment.payroll_payable_account = get_payable_account(company) salary_structure_assignment.company = company or erpnext.get_default_company() salary_structure_assignment.save(ignore_permissions=True) salary_structure_assignment.income_tax_slab = "Tax Slab: _Test Payroll Period" salary_structure_assignment.submit() return salary_structure_assignment + +def get_payable_account(company=None): + if not company: + company = erpnext.get_default_company() + return frappe.db.get_value("Company", company, "default_payroll_payable_account") \ No newline at end of file diff --git a/erpnext/payroll/doctype/salary_structure_assignment/salary_structure_assignment.js b/erpnext/payroll/doctype/salary_structure_assignment/salary_structure_assignment.js index 818e853154..6cd897e95d 100644 --- a/erpnext/payroll/doctype/salary_structure_assignment/salary_structure_assignment.js +++ b/erpnext/payroll/doctype/salary_structure_assignment/salary_structure_assignment.js @@ -6,9 +6,6 @@ frappe.ui.form.on('Salary Structure Assignment', { frm.set_query("employee", function() { return { query: "erpnext.controllers.queries.employee_query", - filters: { - company: frm.doc.company - } } }); frm.set_query("salary_structure", function() { @@ -26,11 +23,25 @@ frappe.ui.form.on('Salary Structure Assignment', { filters: { company: frm.doc.company, docstatus: 1, - disabled: 0 + disabled: 0, + currency: frm.doc.currency + } + }; + }); + + frm.set_query("payroll_payable_account", function() { + var company_currency = erpnext.get_currency(frm.doc.company); + return { + filters: { + "company": frm.doc.company, + "root_type": "Liability", + "is_group": 0, + "account_currency": ["in", [frm.doc.currency, company_currency]], } } }); }, + employee: function(frm) { if(frm.doc.employee){ frappe.call({ @@ -52,5 +63,13 @@ frappe.ui.form.on('Salary Structure Assignment', { else{ frm.set_value("company", null); } + }, + + company: function(frm) { + if (frm.doc.company) { + frappe.db.get_value("Company", frm.doc.company, "default_payroll_payable_account", (r) => { + frm.set_value("payroll_payable_account", r.default_payroll_payable_account); + }); + } } }); diff --git a/erpnext/payroll/doctype/salary_structure_assignment/salary_structure_assignment.json b/erpnext/payroll/doctype/salary_structure_assignment/salary_structure_assignment.json index c84e034c72..92bb347661 100644 --- a/erpnext/payroll/doctype/salary_structure_assignment/salary_structure_assignment.json +++ b/erpnext/payroll/doctype/salary_structure_assignment/salary_structure_assignment.json @@ -11,11 +11,13 @@ "employee_name", "department", "company", + "payroll_payable_account", "column_break_6", "designation", "salary_structure", "from_date", "income_tax_slab", + "currency", "section_break_7", "base", "column_break_9", @@ -94,7 +96,7 @@ "fieldname": "base", "fieldtype": "Currency", "label": "Base", - "options": "Company:company:default_currency" + "options": "currency" }, { "fieldname": "column_break_9", @@ -104,7 +106,7 @@ "fieldname": "variable", "fieldtype": "Currency", "label": "Variable", - "options": "Company:company:default_currency" + "options": "currency" }, { "fieldname": "amended_from", @@ -116,15 +118,35 @@ "read_only": 1 }, { + "depends_on": "salary_structure", "fieldname": "income_tax_slab", "fieldtype": "Link", "label": "Income Tax Slab", "options": "Income Tax Slab" + }, + { + "default": "Company:company:default_currency", + "depends_on": "eval:(doc.docstatus==1 || doc.salary_structure)", + "fetch_from": "salary_structure.currency", + "fieldname": "currency", + "fieldtype": "Link", + "label": "Currency", + "options": "Currency", + "print_hide": 1, + "read_only": 1, + "reqd": 1 + }, + { + "depends_on": "employee", + "fieldname": "payroll_payable_account", + "fieldtype": "Link", + "label": "Payroll Payable Account", + "options": "Account" } ], "is_submittable": 1, "links": [], - "modified": "2020-06-22 19:58:09.964692", + "modified": "2020-11-30 18:07:48.251311", "modified_by": "Administrator", "module": "Payroll", "name": "Salary Structure Assignment", diff --git a/erpnext/payroll/doctype/salary_structure_assignment/salary_structure_assignment.py b/erpnext/payroll/doctype/salary_structure_assignment/salary_structure_assignment.py index 668e0ec471..dccb5df1a1 100644 --- a/erpnext/payroll/doctype/salary_structure_assignment/salary_structure_assignment.py +++ b/erpnext/payroll/doctype/salary_structure_assignment/salary_structure_assignment.py @@ -13,6 +13,8 @@ class DuplicateAssignment(frappe.ValidationError): pass class SalaryStructureAssignment(Document): def validate(self): self.validate_dates() + self.validate_income_tax_slab() + self.set_payroll_payable_account() def validate_dates(self): joining_date, relieving_date = frappe.db.get_value("Employee", self.employee, @@ -31,6 +33,24 @@ class SalaryStructureAssignment(Document): frappe.throw(_("From Date {0} cannot be after employee's relieving Date {1}") .format(self.from_date, relieving_date)) + def validate_income_tax_slab(self): + if not self.income_tax_slab: + return + + income_tax_slab_currency = frappe.db.get_value('Income Tax Slab', self.income_tax_slab, 'currency') + if self.currency != income_tax_slab_currency: + frappe.throw(_("Currency of selected Income Tax Slab should be {0} instead of {1}").format(self.currency, income_tax_slab_currency)) + + def set_payroll_payable_account(self): + if not self.payroll_payable_account: + payroll_payable_account = frappe.db.get_value('Company', self.company, 'default_payable_account') + if not payroll_payable_account: + payroll_payable_account = frappe.db.get_value( + "Account", { + "account_name": _("Payroll Payable"), "company": self.company, "account_currency": frappe.db.get_value( + "Company", self.company, "default_currency"), "is_group": 0}) + self.payroll_payable_account = payroll_payable_account + def get_assigned_salary_structure(employee, on_date): if not employee or not on_date: return None @@ -43,3 +63,10 @@ def get_assigned_salary_structure(employee, on_date): 'on_date': on_date, }) return salary_structure[0][0] if salary_structure else None + +@frappe.whitelist() +def get_employee_currency(employee): + employee_currency = frappe.db.get_value('Salary Structure Assignment', {'employee': employee}, 'currency') + if not employee_currency: + frappe.throw(_("There is no Salary Structure assigned to {0}. First assign a Salary Stucture.").format(employee)) + return employee_currency \ No newline at end of file diff --git a/erpnext/payroll/doctype/taxable_salary_slab/taxable_salary_slab.json b/erpnext/payroll/doctype/taxable_salary_slab/taxable_salary_slab.json index 94eda4c043..65d3824f3a 100644 --- a/erpnext/payroll/doctype/taxable_salary_slab/taxable_salary_slab.json +++ b/erpnext/payroll/doctype/taxable_salary_slab/taxable_salary_slab.json @@ -19,13 +19,15 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "From Amount", + "options": "currency", "reqd": 1 }, { "fieldname": "to_amount", "fieldtype": "Currency", "in_list_view": 1, - "label": "To Amount" + "label": "To Amount", + "options": "currency" }, { "default": "0", @@ -53,7 +55,7 @@ ], "istable": 1, "links": [], - "modified": "2020-06-22 18:16:07.596493", + "modified": "2020-10-19 13:44:39.549337", "modified_by": "Administrator", "module": "Payroll", "name": "Taxable Salary Slab", diff --git a/erpnext/payroll/report/bank_remittance/bank_remittance.py b/erpnext/payroll/report/bank_remittance/bank_remittance.py index 4b052bf5c4..500543ceb0 100644 --- a/erpnext/payroll/report/bank_remittance/bank_remittance.py +++ b/erpnext/payroll/report/bank_remittance/bank_remittance.py @@ -47,33 +47,39 @@ def execute(filters=None): "fieldtype": "Int", "fieldname": "employee_account_no", "width": 50 - }, - { + } + ] + + if frappe.db.has_column('Employee', 'ifsc_code'): + columns.append({ "label": _("IFSC Code"), "fieldtype": "Data", "fieldname": "bank_code", "width": 100 - }, - { - "label": _("Currency"), - "fieldtype": "Data", - "fieldname": "currency", - "width": 50 - }, - { - "label": _("Net Salary Amount"), - "fieldtype": "Currency", - "options": "currency", - "fieldname": "amount", - "width": 100 - } - ] + }) + + columns += [{ + "label": _("Currency"), + "fieldtype": "Data", + "fieldname": "currency", + "width": 50 + }, + { + "label": _("Net Salary Amount"), + "fieldtype": "Currency", + "options": "currency", + "fieldname": "amount", + "width": 100 + }] + data = [] accounts = get_bank_accounts() payroll_entries = get_payroll_entries(accounts, filters) salary_slips = get_salary_slips(payroll_entries) - get_emp_bank_ifsc_code(salary_slips) + + if frappe.db.has_column('Employee', 'ifsc_code'): + get_emp_bank_ifsc_code(salary_slips) for salary in salary_slips: if salary.bank_name and salary.bank_account_no and salary.debit_acc_no and salary.status in ["Submitted", "Paid"]: diff --git a/erpnext/payroll/report/salary_register/salary_register.js b/erpnext/payroll/report/salary_register/salary_register.js index 885e3d13c7..eb4acb91a7 100644 --- a/erpnext/payroll/report/salary_register/salary_register.js +++ b/erpnext/payroll/report/salary_register/salary_register.js @@ -8,34 +8,48 @@ frappe.query_reports["Salary Register"] = { "label": __("From"), "fieldtype": "Date", "default": frappe.datetime.add_months(frappe.datetime.get_today(),-1), - "reqd": 1 + "reqd": 1, + "width": "100px" }, { "fieldname":"to_date", "label": __("To"), "fieldtype": "Date", "default": frappe.datetime.get_today(), - "reqd": 1 + "reqd": 1, + "width": "100px" + }, + { + "fieldname": "currency", + "fieldtype": "Link", + "options": "Currency", + "label": __("Currency"), + "default": erpnext.get_currency(frappe.defaults.get_default("Company")), + "width": "50px" }, { "fieldname":"employee", "label": __("Employee"), "fieldtype": "Link", - "options": "Employee" + "options": "Employee", + "width": "100px" }, { "fieldname":"company", "label": __("Company"), "fieldtype": "Link", "options": "Company", - "default": frappe.defaults.get_user_default("Company") + "default": frappe.defaults.get_user_default("Company"), + "width": "100px", + "reqd": 1 }, { "fieldname":"docstatus", "label":__("Document Status"), "fieldtype":"Select", "options":["Draft", "Submitted", "Cancelled"], - "default":"Submitted" + "default": "Submitted", + "width": "100px" } ] } diff --git a/erpnext/payroll/report/salary_register/salary_register.py b/erpnext/payroll/report/salary_register/salary_register.py index 87010855fd..a1b1a8c56b 100644 --- a/erpnext/payroll/report/salary_register/salary_register.py +++ b/erpnext/payroll/report/salary_register/salary_register.py @@ -2,18 +2,22 @@ # License: GNU General Public License v3. See license.txt from __future__ import unicode_literals -import frappe +import frappe, erpnext from frappe.utils import flt from frappe import _ def execute(filters=None): if not filters: filters = {} - salary_slips = get_salary_slips(filters) + currency = None + if filters.get('currency'): + currency = filters.get('currency') + company_currency = erpnext.get_company_currency(filters.get("company")) + salary_slips = get_salary_slips(filters, company_currency) if not salary_slips: return [], [] columns, earning_types, ded_types = get_columns(salary_slips) - ss_earning_map = get_ss_earning_map(salary_slips) - ss_ded_map = get_ss_ded_map(salary_slips) + ss_earning_map = get_ss_earning_map(salary_slips, currency, company_currency) + ss_ded_map = get_ss_ded_map(salary_slips,currency, company_currency) doj_map = get_employee_doj_map() data = [] @@ -21,24 +25,30 @@ def execute(filters=None): row = [ss.name, ss.employee, ss.employee_name, doj_map.get(ss.employee), ss.branch, ss.department, ss.designation, ss.company, ss.start_date, ss.end_date, ss.leave_without_pay, ss.payment_days] - if not ss.branch == None:columns[3] = columns[3].replace('-1','120') - if not ss.department == None: columns[4] = columns[4].replace('-1','120') - if not ss.designation == None: columns[5] = columns[5].replace('-1','120') - if not ss.leave_without_pay == None: columns[9] = columns[9].replace('-1','130') + if ss.branch is not None: columns[3] = columns[3].replace('-1','120') + if ss.department is not None: columns[4] = columns[4].replace('-1','120') + if ss.designation is not None: columns[5] = columns[5].replace('-1','120') + if ss.leave_without_pay is not None: columns[9] = columns[9].replace('-1','130') for e in earning_types: row.append(ss_earning_map.get(ss.name, {}).get(e)) - row += [ss.gross_pay] + if currency == company_currency: + row += [flt(ss.gross_pay) * flt(ss.exchange_rate)] + else: + row += [ss.gross_pay] for d in ded_types: row.append(ss_ded_map.get(ss.name, {}).get(d)) row.append(ss.total_loan_repayment) - row += [ss.total_deduction, ss.net_pay] - + if currency == company_currency: + row += [flt(ss.total_deduction) * flt(ss.exchange_rate), flt(ss.net_pay) * flt(ss.exchange_rate)] + else: + row += [ss.total_deduction, ss.net_pay] + row.append(currency or company_currency) data.append(row) return columns, data @@ -46,10 +56,19 @@ def execute(filters=None): def get_columns(salary_slips): """ columns = [ - _("Salary Slip ID") + ":Link/Salary Slip:150",_("Employee") + ":Link/Employee:120", _("Employee Name") + "::140", - _("Date of Joining") + "::80", _("Branch") + ":Link/Branch:120", _("Department") + ":Link/Department:120", - _("Designation") + ":Link/Designation:120", _("Company") + ":Link/Company:120", _("Start Date") + "::80", - _("End Date") + "::80", _("Leave Without Pay") + ":Float:130", _("Payment Days") + ":Float:120" + _("Salary Slip ID") + ":Link/Salary Slip:150", + _("Employee") + ":Link/Employee:120", + _("Employee Name") + "::140", + _("Date of Joining") + "::80", + _("Branch") + ":Link/Branch:120", + _("Department") + ":Link/Department:120", + _("Designation") + ":Link/Designation:120", + _("Company") + ":Link/Company:120", + _("Start Date") + "::80", + _("End Date") + "::80", + _("Leave Without Pay") + ":Float:130", + _("Payment Days") + ":Float:120", + _("Currency") + ":Link/Currency:80" ] """ columns = [ @@ -73,15 +92,15 @@ def get_columns(salary_slips): return columns, salary_components[_("Earning")], salary_components[_("Deduction")] -def get_salary_slips(filters): +def get_salary_slips(filters, company_currency): filters.update({"from_date": filters.get("from_date"), "to_date":filters.get("to_date")}) - conditions, filters = get_conditions(filters) + conditions, filters = get_conditions(filters, company_currency) salary_slips = frappe.db.sql("""select * from `tabSalary Slip` where %s order by employee""" % conditions, filters, as_dict=1) return salary_slips or [] -def get_conditions(filters): +def get_conditions(filters, company_currency): conditions = "" doc_status = {"Draft": 0, "Submitted": 1, "Cancelled": 2} @@ -92,6 +111,8 @@ def get_conditions(filters): if filters.get("to_date"): conditions += " and end_date <= %(to_date)s" if filters.get("company"): conditions += " and company = %(company)s" if filters.get("employee"): conditions += " and employee = %(employee)s" + if filters.get("currency") and filters.get("currency") != company_currency: + conditions += " and currency = %(currency)s" return conditions, filters @@ -103,26 +124,32 @@ def get_employee_doj_map(): FROM `tabEmployee` """)) -def get_ss_earning_map(salary_slips): - ss_earnings = frappe.db.sql("""select parent, salary_component, amount - from `tabSalary Detail` where parent in (%s)""" % +def get_ss_earning_map(salary_slips, currency, company_currency): + ss_earnings = frappe.db.sql("""select sd.parent, sd.salary_component, sd.amount, ss.exchange_rate, ss.name + from `tabSalary Detail` sd, `tabSalary Slip` ss where sd.parent=ss.name and sd.parent in (%s)""" % (', '.join(['%s']*len(salary_slips))), tuple([d.name for d in salary_slips]), as_dict=1) ss_earning_map = {} for d in ss_earnings: ss_earning_map.setdefault(d.parent, frappe._dict()).setdefault(d.salary_component, []) - ss_earning_map[d.parent][d.salary_component] = flt(d.amount) + if currency == company_currency: + ss_earning_map[d.parent][d.salary_component] = flt(d.amount) * flt(d.exchange_rate if d.exchange_rate else 1) + else: + ss_earning_map[d.parent][d.salary_component] = flt(d.amount) return ss_earning_map -def get_ss_ded_map(salary_slips): - ss_deductions = frappe.db.sql("""select parent, salary_component, amount - from `tabSalary Detail` where parent in (%s)""" % +def get_ss_ded_map(salary_slips, currency, company_currency): + ss_deductions = frappe.db.sql("""select sd.parent, sd.salary_component, sd.amount, ss.exchange_rate, ss.name + from `tabSalary Detail` sd, `tabSalary Slip` ss where sd.parent=ss.name and sd.parent in (%s)""" % (', '.join(['%s']*len(salary_slips))), tuple([d.name for d in salary_slips]), as_dict=1) ss_ded_map = {} for d in ss_deductions: ss_ded_map.setdefault(d.parent, frappe._dict()).setdefault(d.salary_component, []) - ss_ded_map[d.parent][d.salary_component] = flt(d.amount) + if currency == company_currency: + ss_ded_map[d.parent][d.salary_component] = flt(d.amount) * flt(d.exchange_rate if d.exchange_rate else 1) + else: + ss_ded_map[d.parent][d.salary_component] = flt(d.amount) return ss_ded_map diff --git a/erpnext/projects/doctype/task/task.js b/erpnext/projects/doctype/task/task.js index 8c6a9cf8d7..002ddb2f40 100644 --- a/erpnext/projects/doctype/task/task.js +++ b/erpnext/projects/doctype/task/task.js @@ -49,7 +49,10 @@ frappe.ui.form.on("Task", { }, callback: function (r) { if (r.message.length > 0) { - frappe.msgprint(__(`Cannot convert it to non-group. The following child Tasks exist: ${r.message.join(", ")}.`)); + let message = __('Cannot convert Task to non-group because the following child Tasks exist: {0}.', + [r.message.join(", ")] + ); + frappe.msgprint(message); frm.reload_doc(); } } diff --git a/erpnext/projects/doctype/timesheet/timesheet.js b/erpnext/projects/doctype/timesheet/timesheet.js index 607c3fd974..b068245a8b 100644 --- a/erpnext/projects/doctype/timesheet/timesheet.js +++ b/erpnext/projects/doctype/timesheet/timesheet.js @@ -133,6 +133,11 @@ frappe.ui.form.on("Timesheet", { frm: frm }); }, + + project: function(frm) { + set_project_in_timelog(frm); + }, + }); frappe.ui.form.on("Timesheet Detail", { @@ -162,7 +167,11 @@ frappe.ui.form.on("Timesheet Detail", { frappe.model.set_value(cdt, cdn, "hours", hours); }, - time_logs_add: function(frm) { + time_logs_add: function(frm, cdt, cdn) { + if(frm.doc.project) { + frappe.model.set_value(cdt, cdn, 'project', frm.doc.project); + } + var $trigger_again = $('.form-grid').find('.grid-row').find('.btn-open-row'); $trigger_again.on('click', () => { $('.form-grid') @@ -297,3 +306,9 @@ const set_employee_and_company = function(frm) { } }); }; + +function set_project_in_timelog(frm) { + if(frm.doc.project){ + erpnext.utils.copy_value_in_all_rows(frm.doc, frm.doc.doctype, frm.doc.name, "time_logs", "project"); + } +} \ No newline at end of file diff --git a/erpnext/projects/doctype/timesheet/timesheet.json b/erpnext/projects/doctype/timesheet/timesheet.json index c29c11b746..4c2edf4f03 100644 --- a/erpnext/projects/doctype/timesheet/timesheet.json +++ b/erpnext/projects/doctype/timesheet/timesheet.json @@ -1,1133 +1,352 @@ { - "allow_copy": 0, - "allow_events_in_timeline": 0, - "allow_guest_to_view": 0, - "allow_import": 1, - "allow_rename": 0, - "autoname": "naming_series:", - "beta": 0, - "creation": "2013-02-28 17:57:33", - "custom": 0, - "description": "", - "docstatus": 0, - "doctype": "DocType", - "document_type": "Document", - "editable_grid": 1, + "actions": [], + "allow_import": 1, + "autoname": "naming_series:", + "creation": "2013-02-28 17:57:33", + "doctype": "DocType", + "document_type": "Document", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "title", + "naming_series", + "company", + "sales_invoice", + "column_break_3", + "salary_slip", + "status", + "project", + "employee_detail", + "employee", + "employee_name", + "department", + "column_break_9", + "user", + "start_date", + "end_date", + "section_break_5", + "time_logs", + "working_hours", + "total_hours", + "billing_details", + "total_billable_hours", + "total_billed_hours", + "total_costing_amount", + "column_break_10", + "total_billable_amount", + "total_billed_amount", + "per_billed", + "section_break_18", + "note", + "amended_from" + ], "fields": [ { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "{employee_name}", - "fieldname": "title", - "fieldtype": "Data", - "hidden": 1, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Title", - "length": 0, - "no_copy": 1, - "permlevel": 0, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "allow_on_submit": 1, + "default": "{employee_name}", + "fieldname": "title", + "fieldtype": "Data", + "hidden": 1, + "label": "Title", + "no_copy": 1, + "print_hide": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "", - "fieldname": "naming_series", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Series", - "length": 0, - "no_copy": 0, - "options": "TS-.YYYY.-", - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 1, - "translatable": 0, - "unique": 0 - }, + "fieldname": "naming_series", + "fieldtype": "Select", + "label": "Series", + "options": "TS-.YYYY.-", + "reqd": 1, + "set_only_once": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "company", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Company", - "length": 0, - "no_copy": 0, - "options": "Company", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "company", + "fieldtype": "Link", + "label": "Company", + "options": "Company", + "remember_last_selected_value": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "depends_on": "", - "description": "", - "fieldname": "sales_invoice", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Sales Invoice", - "length": 0, - "no_copy": 1, - "options": "Sales Invoice", - "permlevel": 0, - "print_hide": 1, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "sales_invoice", + "fieldtype": "Link", + "label": "Sales Invoice", + "no_copy": 1, + "options": "Sales Invoice", + "print_hide": 1, + "read_only": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "column_break_3", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "column_break_3", + "fieldtype": "Column Break" + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "depends_on": "", - "fieldname": "salary_slip", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Salary Slip", - "length": 0, - "no_copy": 1, - "options": "Salary Slip", - "permlevel": 0, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "salary_slip", + "fieldtype": "Link", + "label": "Salary Slip", + "no_copy": 1, + "options": "Salary Slip", + "print_hide": 1, + "read_only": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "Draft", - "fieldname": "status", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 1, - "label": "Status", - "length": 0, - "no_copy": 1, - "options": "Draft\nSubmitted\nBilled\nPayslip\nCompleted\nCancelled", - "permlevel": 0, - "print_hide": 1, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "default": "Draft", + "fieldname": "status", + "fieldtype": "Select", + "in_standard_filter": 1, + "label": "Status", + "no_copy": 1, + "options": "Draft\nSubmitted\nBilled\nPayslip\nCompleted\nCancelled", + "print_hide": 1, + "read_only": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": "", - "columns": 0, - "depends_on": "eval:!doc.work_order || doc.docstatus == 1", - "fieldname": "employee_detail", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Employee Detail", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "depends_on": "eval:!doc.work_order || doc.docstatus == 1", + "fieldname": "employee_detail", + "fieldtype": "Section Break", + "label": "Employee Detail" + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "depends_on": "", - "description": "", - "fieldname": "employee", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 1, - "label": "Employee", - "length": 0, - "no_copy": 0, - "options": "Employee", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "employee", + "fieldtype": "Link", + "in_standard_filter": 1, + "label": "Employee", + "options": "Employee" + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "depends_on": "employee", - "fieldname": "employee_name", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 1, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Employee Name", - "length": 0, - "no_copy": 0, - "options": "", - "permlevel": 0, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "depends_on": "employee", + "fieldname": "employee_name", + "fieldtype": "Data", + "in_global_search": 1, + "label": "Employee Name", + "print_hide": 1, + "read_only": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fetch_from": "employee.department", - "fieldname": "department", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Department", - "length": 0, - "no_copy": 0, - "options": "Department", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fetch_from": "employee.department", + "fieldname": "department", + "fieldtype": "Link", + "label": "Department", + "options": "Department", + "read_only": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "column_break_9", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "column_break_9", + "fieldtype": "Column Break" + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "user", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 1, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "User", - "length": 0, - "no_copy": 0, - "options": "User", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "user", + "fieldtype": "Link", + "in_global_search": 1, + "label": "User", + "options": "User", + "read_only": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "start_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Start Date", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "start_date", + "fieldtype": "Date", + "in_list_view": 1, + "label": "Start Date", + "print_hide": 1, + "read_only": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "end_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "End Date", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "end_date", + "fieldtype": "Date", + "label": "End Date", + "print_hide": 1, + "read_only": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "section_break_5", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "section_break_5", + "fieldtype": "Section Break" + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "time_logs", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Time Sheets", - "length": 0, - "no_copy": 0, - "options": "Timesheet Detail", - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "time_logs", + "fieldtype": "Table", + "label": "Time Sheets", + "options": "Timesheet Detail", + "reqd": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "working_hours", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "working_hours", + "fieldtype": "Section Break" + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "0", - "description": "", - "fieldname": "total_hours", - "fieldtype": "Float", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Total Working Hours", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "allow_on_submit": 1, + "default": "0", + "fieldname": "total_hours", + "fieldtype": "Float", + "in_list_view": 1, + "label": "Total Working Hours", + "read_only": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "columns": 0, - "fieldname": "billing_details", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Billing Details", - "length": 0, - "no_copy": 0, - "permlevel": 1, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "collapsible": 1, + "fieldname": "billing_details", + "fieldtype": "Section Break", + "label": "Billing Details", + "permlevel": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "total_billable_hours", - "fieldtype": "Float", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Total Billable Hours", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "allow_on_submit": 1, + "fieldname": "total_billable_hours", + "fieldtype": "Float", + "label": "Total Billable Hours", + "print_hide": 1, + "read_only": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "total_billed_hours", - "fieldtype": "Float", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Total Billed Hours", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "allow_on_submit": 1, + "fieldname": "total_billed_hours", + "fieldtype": "Float", + "in_list_view": 1, + "label": "Total Billed Hours", + "print_hide": 1, + "read_only": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "total_costing_amount", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Total Costing Amount", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "allow_on_submit": 1, + "fieldname": "total_costing_amount", + "fieldtype": "Currency", + "label": "Total Costing Amount", + "print_hide": 1, + "read_only": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "column_break_10", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "column_break_10", + "fieldtype": "Column Break" + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "0", - "depends_on": "", - "description": "", - "fieldname": "total_billable_amount", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Total Billable Amount", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "allow_on_submit": 1, + "default": "0", + "fieldname": "total_billable_amount", + "fieldtype": "Currency", + "label": "Total Billable Amount", + "read_only": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "total_billed_amount", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Total Billed Amount", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "allow_on_submit": 1, + "fieldname": "total_billed_amount", + "fieldtype": "Currency", + "label": "Total Billed Amount", + "print_hide": 1, + "read_only": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "per_billed", - "fieldtype": "Percent", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "% Amount Billed", - "length": 0, - "no_copy": 1, - "permlevel": 0, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "allow_on_submit": 1, + "fieldname": "per_billed", + "fieldtype": "Percent", + "label": "% Amount Billed", + "no_copy": 1, + "print_hide": 1, + "read_only": 1 + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "section_break_18", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "section_break_18", + "fieldtype": "Section Break" + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "note", - "fieldtype": "Text Editor", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Note", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 - }, + "fieldname": "note", + "fieldtype": "Text Editor", + "label": "Note" + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "amended_from", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 1, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Amended From", - "length": 0, - "no_copy": 1, - "options": "Timesheet", - "permlevel": 0, - "print_hide": 1, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 + "fieldname": "amended_from", + "fieldtype": "Link", + "ignore_user_permissions": 1, + "label": "Amended From", + "no_copy": 1, + "options": "Timesheet", + "print_hide": 1, + "read_only": 1 + }, + { + "fieldname": "project", + "fieldtype": "Link", + "label": "Project", + "options": "Project" } - ], - "has_web_view": 0, - "hide_heading": 0, - "hide_toolbar": 0, - "icon": "fa fa-clock-o", - "idx": 1, - "image_view": 0, - "in_create": 0, - "is_submittable": 1, - "issingle": 0, - "istable": 0, - "max_attachments": 0, - "modified": "2019-03-05 21:54:02.654690", - "modified_by": "Administrator", - "module": "Projects", - "name": "Timesheet", - "owner": "Administrator", + ], + "icon": "fa fa-clock-o", + "idx": 1, + "is_submittable": 1, + "links": [], + "modified": "2020-10-29 07:50:35.938231", + "modified_by": "Administrator", + "module": "Projects", + "name": "Timesheet", + "owner": "Administrator", "permissions": [ { - "amend": 1, - "cancel": 1, - "create": 1, - "delete": 1, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Projects User", - "set_user_permissions": 0, - "share": 1, - "submit": 1, + "amend": 1, + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Projects User", + "share": 1, + "submit": 1, "write": 1 - }, + }, { - "amend": 1, - "cancel": 1, - "create": 1, - "delete": 1, - "email": 1, - "export": 1, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "HR User", - "set_user_permissions": 0, - "share": 1, - "submit": 1, + "amend": 1, + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "HR User", + "share": 1, + "submit": 1, "write": 1 - }, + }, { - "amend": 1, - "cancel": 1, - "create": 1, - "delete": 1, - "email": 1, - "export": 1, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Manufacturing User", - "set_user_permissions": 0, - "share": 1, - "submit": 1, + "amend": 1, + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Manufacturing User", + "share": 1, + "submit": 1, "write": 1 - }, + }, { - "amend": 0, - "cancel": 0, - "create": 1, - "delete": 0, - "email": 0, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 0, - "read": 1, - "report": 0, - "role": "Employee", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "create": 1, + "read": 1, + "role": "Employee", "write": 1 - }, + }, { - "amend": 1, - "cancel": 1, - "create": 1, - "delete": 1, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 0, - "read": 1, - "report": 1, - "role": "Accounts User", - "set_user_permissions": 0, - "share": 0, - "submit": 1, + "amend": 1, + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "read": 1, + "report": 1, + "role": "Accounts User", + "submit": 1, "write": 1 - }, + }, { - "amend": 0, - "cancel": 0, - "create": 0, - "delete": 0, - "email": 0, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 1, - "print": 0, - "read": 1, - "report": 0, - "role": "Accounts User", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "permlevel": 1, + "read": 1, + "role": "Accounts User", "write": 1 } - ], - "quick_entry": 0, - "read_only": 0, - "read_only_onload": 0, - "show_name_in_global_search": 0, - "sort_order": "ASC", - "title_field": "title", - "track_changes": 0, - "track_seen": 0, - "track_views": 0 + ], + "sort_field": "modified", + "sort_order": "ASC", + "title_field": "title" } \ No newline at end of file diff --git a/erpnext/public/build.json b/erpnext/public/build.json index 2695502269..2f15cbcef1 100644 --- a/erpnext/public/build.json +++ b/erpnext/public/build.json @@ -49,7 +49,8 @@ "public/js/education/assessment_result_tool.html", "public/js/hub/hub_factory.js", "public/js/call_popup/call_popup.js", - "public/js/utils/dimension_tree_filter.js" + "public/js/utils/dimension_tree_filter.js", + "public/js/telephony.js" ], "js/item-dashboard.min.js": [ "stock/dashboard/item_dashboard.html", diff --git a/erpnext/public/js/call_popup/call_popup.js b/erpnext/public/js/call_popup/call_popup.js index 5e4d4a585f..aeb3b387f2 100644 --- a/erpnext/public/js/call_popup/call_popup.js +++ b/erpnext/public/js/call_popup/call_popup.js @@ -74,7 +74,7 @@ class CallPopup { 'click': () => { const call_summary = this.dialog.get_value('call_summary'); if (!call_summary) return; - frappe.xcall('erpnext.communication.doctype.call_log.call_log.add_call_summary', { + frappe.xcall('erpnext.telephony.doctype.call_log.call_log.add_call_summary', { 'call_log': this.call_log.name, 'summary': call_summary, }).then(() => { diff --git a/erpnext/public/js/controllers/accounts.js b/erpnext/public/js/controllers/accounts.js index 6e97d811fc..29f35958e1 100644 --- a/erpnext/public/js/controllers/accounts.js +++ b/erpnext/public/js/controllers/accounts.js @@ -146,18 +146,18 @@ cur_frm.cscript.account_head = function(doc, cdt, cdn) { if(!d.charge_type && d.account_head){ frappe.msgprint(__("Please select Charge Type first")); frappe.model.set_value(cdt, cdn, "account_head", ""); - } else if(d.account_head && d.charge_type!=="Actual") { + } else if (d.account_head) { frappe.call({ type:"GET", method: "erpnext.controllers.accounts_controller.get_tax_rate", args: {"account_head":d.account_head}, callback: function(r) { - frappe.model.set_value(cdt, cdn, "rate", r.message.tax_rate || 0); + if (d.charge_type!=="Actual") { + frappe.model.set_value(cdt, cdn, "rate", r.message.tax_rate || 0); + } frappe.model.set_value(cdt, cdn, "description", r.message.account_name); } }) - } else if (d.charge_type == 'Actual' && d.account_head) { - frappe.model.set_value(cdt, cdn, "description", d.account_head.split(' - ')[0]); } } diff --git a/erpnext/public/js/controllers/buying.js b/erpnext/public/js/controllers/buying.js index cb76c87b62..db85a3ec99 100644 --- a/erpnext/public/js/controllers/buying.js +++ b/erpnext/public/js/controllers/buying.js @@ -189,6 +189,7 @@ erpnext.buying.BuyingController = erpnext.TransactionController.extend({ frappe.model.round_floats_in(item, ["qty", "received_qty"]); item.rejected_qty = flt(item.received_qty - item.qty, precision("rejected_qty", item)); + item.received_stock_qty = flt(item.conversion_factor, precision("conversion_factor", item)) * flt(item.received_qty); } this._super(doc, cdt, cdn); @@ -218,8 +219,7 @@ erpnext.buying.BuyingController = erpnext.TransactionController.extend({ var is_negative_qty = false; for(var i = 0; i 0 && qty > 0 && cur_frm.doc.items[i].item_code == d.item_code && !cur_frm.doc.items[i].material_request_item) - { - cur_frm.doc.items[i].material_request = d.mr_name; - cur_frm.doc.items[i].material_request_item = d.mr_item; - var my_qty = Math.min(qty, d.qty); - qty = qty - my_qty; - d.qty = d.qty - my_qty; - cur_frm.doc.items[i].stock_qty = my_qty*cur_frm.doc.items[i].conversion_factor; - cur_frm.doc.items[i].qty = my_qty; - - frappe.msgprint("Assigning " + d.mr_name + " to " + d.item_code + " (row " + cur_frm.doc.items[i].idx + ")"); - if (qty > 0) - { - frappe.msgprint("Splitting " + qty + " units of " + d.item_code); - var newrow = frappe.model.add_child(cur_frm.doc, cur_frm.doc.items[i].doctype, "items"); - item_length++; - - for (var key in cur_frm.doc.items[i]) - { - newrow[key] = cur_frm.doc.items[i][key]; - } - - newrow.idx = item_length; - newrow["stock_qty"] = newrow.conversion_factor*qty; - newrow["qty"] = qty; - - newrow["material_request"] = ""; - newrow["material_request_item"] = ""; - - } - } - }); - i++; - } - refresh_field("items"); - //cur_frm.save(); - } - } - }); - }, - update_auto_repeat_reference: function(doc) { if (doc.auto_repeat) { frappe.call({ @@ -422,6 +359,62 @@ erpnext.buying.BuyingController = erpnext.TransactionController.extend({ cur_frm.add_fetch('project', 'cost_center', 'cost_center'); +erpnext.buying.link_to_mrs = function(frm) { + frappe.call({ + method: "erpnext.buying.utils.get_linked_material_requests", + args:{ + items: frm.doc.items.map((item) => item.item_code) + }, + callback: function(r) { + if (!r.message || r.message.length == 0) { + frappe.throw({ + message: __("No pending Material Requests found to link for the given items."), + title: __("Note") + }); + } + + var item_length = frm.doc.items.length; + for (let item of frm.doc.items) { + var qty = item.qty; + (r.message[0] || []).forEach(function(d) { + if (d.qty > 0 && qty > 0 && item.item_code == d.item_code && !item.material_request_item) + { + item.material_request = d.mr_name; + item.material_request_item = d.mr_item; + var my_qty = Math.min(qty, d.qty); + qty = qty - my_qty; + d.qty = d.qty - my_qty; + item.stock_qty = my_qty*item.conversion_factor; + item.qty = my_qty; + + frappe.msgprint("Assigning " + d.mr_name + " to " + d.item_code + " (row " + item.idx + ")"); + if (qty > 0) + { + frappe.msgprint("Splitting " + qty + " units of " + d.item_code); + var newrow = frappe.model.add_child(frm.doc, item.doctype, "items"); + item_length++; + + for (var key in item) + { + newrow[key] = item[key]; + } + + newrow.idx = item_length; + newrow["stock_qty"] = newrow.conversion_factor*qty; + newrow["qty"] = qty; + + newrow["material_request"] = ""; + newrow["material_request_item"] = ""; + + } + } + }); + } + refresh_field("items"); + } + }); +} + erpnext.buying.get_default_bom = function(frm) { $.each(frm.doc["items"] || [], function(i, d) { if (d.item_code && d.bom === "") { diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index 1358a4bd08..7f08cd1359 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -209,6 +209,17 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ }); } + if (this.frm.fields_dict.taxes_and_charges) { + this.frm.set_query("taxes_and_charges", function() { + return { + filters: [ + ['company', '=', me.frm.doc.company], + ['docstatus', '!=', 2] + ] + }; + }); + } + }, onload: function() { var me = this; diff --git a/erpnext/public/js/hub/pages/Category.vue b/erpnext/public/js/hub/pages/Category.vue index 057fe8bc61..16d06018ff 100644 --- a/erpnext/public/js/hub/pages/Category.vue +++ b/erpnext/public/js/hub/pages/Category.vue @@ -32,7 +32,7 @@ export default { item_id_fieldname: 'name', // Constants - empty_state_message: __(`No items in this category yet.`), + empty_state_message: __('No items in this category yet.'), search_value: '', diff --git a/erpnext/public/js/hub/pages/FeaturedItems.vue b/erpnext/public/js/hub/pages/FeaturedItems.vue index ab9990a323..63ae7e99bb 100644 --- a/erpnext/public/js/hub/pages/FeaturedItems.vue +++ b/erpnext/public/js/hub/pages/FeaturedItems.vue @@ -33,10 +33,8 @@ export default { // Constants page_title: __('Your Featured Items'), - empty_state_message: __(`No featured items yet. Got to your - - Published Items - and feature upto 8 items that you want to highlight to your customers.`) + empty_state_message: __('No featured items yet. Got to your {0} and feature up to eight items that you want to highlight to your customers.', + [`${__("Published Items")}`]) }; }, created() { @@ -71,9 +69,9 @@ export default { const item_name = this.items.filter(item => item.hub_item_name === hub_item_name); - alert = frappe.show_alert(__(`${item_name} removed. - Undo`), - grace_period/1000, + alert_message = __('{0} removed. {1}', [item_name, + `${__('Undo')}`]); + alert = frappe.show_alert(alert_message, grace_period / 1000, { 'undo-remove': undo_remove.bind(this) } diff --git a/erpnext/public/js/hub/pages/Item.vue b/erpnext/public/js/hub/pages/Item.vue index 51ade42cba..93002a7b27 100644 --- a/erpnext/public/js/hub/pages/Item.vue +++ b/erpnext/public/js/hub/pages/Item.vue @@ -113,12 +113,12 @@ export default { let stats = __('No views yet'); if (this.item.view_count) { - const views_message = __(`${this.item.view_count} Views`); + const views_message = __('{0} Views', [this.item.view_count]); const rating_html = get_rating_html(this.item.average_rating); const rating_count = this.item.no_of_ratings > 0 - ? `${this.item.no_of_ratings} reviews` + ? __('{0} reviews', [this.item.no_of_ratings]) : __('No reviews yet'); stats = [views_message, rating_html, rating_count]; @@ -310,7 +310,7 @@ export default { return this.get_item_details(); }) .then(() => { - frappe.show_alert(__(`${this.item.item_name} Updated`)); + frappe.show_alert(__('{0} Updated', [this.item.item_name])); }); }, @@ -337,7 +337,7 @@ export default { }, unpublish_item() { - frappe.confirm(__(`Unpublish {0}?`, [this.item.item_name]), () => { + frappe.confirm(__('Unpublish {0}?', [this.item.item_name]), () => { frappe .call('erpnext.hub_node.api.unpublish_item', { item_code: this.item.item_code, diff --git a/erpnext/public/js/hub/pages/NotFound.vue b/erpnext/public/js/hub/pages/NotFound.vue index 246d31bc68..8901b97802 100644 --- a/erpnext/public/js/hub/pages/NotFound.vue +++ b/erpnext/public/js/hub/pages/NotFound.vue @@ -27,7 +27,7 @@ export default { }, // Constants - empty_state_message: __(`Sorry! I could not find what you were looking for.`) + empty_state_message: __('Sorry! We could not find what you were looking for.') }; }, } diff --git a/erpnext/public/js/hub/pages/Publish.vue b/erpnext/public/js/hub/pages/Publish.vue index 735f2b92ec..96fa0aae4e 100644 --- a/erpnext/public/js/hub/pages/Publish.vue +++ b/erpnext/public/js/hub/pages/Publish.vue @@ -75,14 +75,11 @@ export default { // TODO: multiline translations don't work page_title: __('Publish Items'), search_placeholder: __('Search Items ...'), - empty_state_message: __(`No Items selected yet. Browse and click on items below to publish.`), - valid_items_instruction: __(`Only items with an image and description can be published. Please update them if an item in your inventory does not appear.`), + empty_state_message: __('No Items selected yet. Browse and click on items below to publish.'), + valid_items_instruction: __('Only items with an image and description can be published. Please update them if an item in your inventory does not appear.'), last_sync_message: (hub.settings.last_sync_datetime) - ? __(`Last sync was - - ${comment_when(hub.settings.last_sync_datetime)}. - - See your Published Items.`) + ? __('Last sync was {0}.', [`${comment_when(hub.settings.last_sync_datetime)}`]) + + ` ${__('See your Published Items.')}` : '' }; }, @@ -147,11 +144,9 @@ export default { }, add_last_sync_message() { - this.last_sync_message = __(`Last sync was - - ${comment_when(hub.settings.last_sync_datetime)}. - - See your Published Items.`); + this.last_sync_message = __('Last sync was {0}.', + [`${comment_when(hub.settings.last_sync_datetime)}`] + ) + `${__('See your Published Items')}.`; }, clear_last_sync_message() { diff --git a/erpnext/public/js/hub/pages/SavedItems.vue b/erpnext/public/js/hub/pages/SavedItems.vue index c29675acd3..7007ddcf8e 100644 --- a/erpnext/public/js/hub/pages/SavedItems.vue +++ b/erpnext/public/js/hub/pages/SavedItems.vue @@ -29,7 +29,7 @@ export default { // Constants page_title: __('Saved Items'), - empty_state_message: __(`You haven't saved any items yet.`) + empty_state_message: __('You have not saved any items yet.') }; }, created() { @@ -64,8 +64,13 @@ export default { const item_name = this.items.filter(item => item.hub_item_name === hub_item_name); - alert = frappe.show_alert(__(`${item_name} removed. - Undo`), + alert = frappe.show_alert(` + + ${__('{0} removed.', [item_name], 'A specific Item has been removed.')} + + ${__('Undo', None, 'Undo removal of item.')} + + `, grace_period/1000, { 'undo-remove': undo_remove.bind(this) diff --git a/erpnext/public/js/hub/pages/Search.vue b/erpnext/public/js/hub/pages/Search.vue index 103284289b..c10841e984 100644 --- a/erpnext/public/js/hub/pages/Search.vue +++ b/erpnext/public/js/hub/pages/Search.vue @@ -42,7 +42,10 @@ export default { computed: { page_title() { return this.items.length - ? __(`Results for "${this.search_value}" ${this.category !== 'All'? `in category ${this.category}` : ''}`) + ? __('Results for "{0}" {1}', [ + this.search_value, + this.category !== 'All' ? __('in category {0}', [this.category]) : '' + ]) : __('No Items found.'); } }, diff --git a/erpnext/public/js/hub/pages/Seller.vue b/erpnext/public/js/hub/pages/Seller.vue index e339eaa3e5..c0903c64c3 100644 --- a/erpnext/public/js/hub/pages/Seller.vue +++ b/erpnext/public/js/hub/pages/Seller.vue @@ -136,7 +136,7 @@ export default { this.init = false; this.profile = data.profile; this.items = data.items; - this.item_container_heading = data.is_featured_item? "Features Items":"Popular Items"; + this.item_container_heading = data.is_featured_item ? __('Featured Items') : __('Popular Items'); this.hub_seller = this.items[0].hub_seller; this.recent_seller_reviews = data.recent_seller_reviews; this.seller_product_view_stats = data.seller_product_view_stats; @@ -147,7 +147,7 @@ export default { this.country = __(profile.country); this.site_name = __(profile.site_name); - this.joined_when = __(`Joined ${comment_when(profile.creation)}`); + this.joined_when = __('Joined {0}', [comment_when(profile.creation)]); this.image = profile.logo; this.sections = [ diff --git a/erpnext/public/js/salary_slip_deductions_report_filters.js b/erpnext/public/js/salary_slip_deductions_report_filters.js index 2b30e65075..1ca36600c3 100644 --- a/erpnext/public/js/salary_slip_deductions_report_filters.js +++ b/erpnext/public/js/salary_slip_deductions_report_filters.js @@ -45,7 +45,7 @@ erpnext.salary_slip_deductions_report_filters = { }, { fieldname: "branch", - label: __("Barnch"), + label: __("Branch"), fieldtype: "Link", options: "Branch", } @@ -63,4 +63,4 @@ erpnext.salary_slip_deductions_report_filters = { } }); } -} \ No newline at end of file +} diff --git a/erpnext/public/js/setup_wizard.js b/erpnext/public/js/setup_wizard.js index 5d21190e37..092f83903e 100644 --- a/erpnext/public/js/setup_wizard.js +++ b/erpnext/public/js/setup_wizard.js @@ -161,7 +161,10 @@ erpnext.setup.slides_settings = [ if(r.message){ exist = r.message; me.get_field("bank_account").set_value(""); - frappe.msgprint(__(`Account ${me.values.bank_account} already exists, enter a different name for your bank account`)); + let message = __('Account {0} already exists. Please enter a different name for your bank account.', + [me.values.bank_account] + ); + frappe.msgprint(message); } } }); diff --git a/erpnext/public/js/telephony.js b/erpnext/public/js/telephony.js new file mode 100644 index 0000000000..bd7f890306 --- /dev/null +++ b/erpnext/public/js/telephony.js @@ -0,0 +1,23 @@ +frappe.ui.form.ControlData = frappe.ui.form.ControlData.extend( { + make_input() { + this._super(); + if (this.df.options == 'Phone') { + this.setup_phone(); + } + }, + setup_phone() { + if (frappe.phone_call.handler) { + this.$wrapper.find('.control-input') + .append(` + + + + + `) + .find('.phone-btn') + .click(() => { + frappe.phone_call.handler(this.get_value(), this.frm); + }); + } + } +}); \ No newline at end of file diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js index ea2093eee1..891bbe5b59 100755 --- a/erpnext/public/js/utils.js +++ b/erpnext/public/js/utils.js @@ -539,7 +539,7 @@ erpnext.utils.update_child_items = function(opts) { fieldtype: "Table", label: "Items", cannot_add_rows: cannot_add_row, - in_place_edit: true, + in_place_edit: false, reqd: 1, data: this.data, get_data: () => { diff --git a/erpnext/regional/doctype/datev_settings/datev_settings.js b/erpnext/regional/doctype/datev_settings/datev_settings.js index 69747b0b89..f04705929f 100644 --- a/erpnext/regional/doctype/datev_settings/datev_settings.js +++ b/erpnext/regional/doctype/datev_settings/datev_settings.js @@ -2,7 +2,7 @@ // For license information, please see license.txt frappe.ui.form.on('DATEV Settings', { - // refresh: function(frm) { - - // } + refresh: function(frm) { + frm.add_custom_button('Show Report', () => frappe.set_route('query-report', 'DATEV'), "fa fa-table"); + } }); diff --git a/erpnext/regional/doctype/datev_settings/datev_settings.json b/erpnext/regional/doctype/datev_settings/datev_settings.json index 39486dfc12..713e8e34ef 100644 --- a/erpnext/regional/doctype/datev_settings/datev_settings.json +++ b/erpnext/regional/doctype/datev_settings/datev_settings.json @@ -1,4 +1,5 @@ { + "actions": [], "autoname": "field:client", "creation": "2019-08-13 23:56:34.259906", "doctype": "DocType", @@ -6,6 +7,7 @@ "engine": "InnoDB", "field_order": [ "client", + "account_number_length", "column_break_2", "client_number", "section_break_4", @@ -28,8 +30,8 @@ "fieldtype": "Data", "in_list_view": 1, "label": "Client ID", - "reqd": 1, - "length": 5 + "length": 5, + "reqd": 1 }, { "fieldname": "consultant", @@ -43,8 +45,8 @@ "fieldtype": "Data", "in_list_view": 1, "label": "Consultant ID", - "reqd": 1, - "length": 7 + "length": 7, + "reqd": 1 }, { "fieldname": "column_break_2", @@ -57,9 +59,17 @@ { "fieldname": "column_break_6", "fieldtype": "Column Break" + }, + { + "default": "4", + "fieldname": "account_number_length", + "fieldtype": "Int", + "label": "Account Number Length", + "reqd": 1 } ], - "modified": "2019-08-14 00:03:26.616460", + "links": [], + "modified": "2020-11-05 17:52:11.674329", "modified_by": "Administrator", "module": "Regional", "name": "DATEV Settings", @@ -104,4 +114,4 @@ "sort_field": "modified", "sort_order": "DESC", "track_changes": 1 -} +} \ No newline at end of file diff --git a/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.py b/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.py index 787d557e80..68c8a0d4d3 100644 --- a/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.py +++ b/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.py @@ -192,19 +192,20 @@ class GSTR3BReport(Document): for d in self.report_dict["itc_elg"]["itc_avl"]: itc_type = itc_type_map.get(d["ty"]) - gst_category = ["Registered Regular"] if d["ty"] == 'ISRC': - reverse_charge = "Y" + reverse_charge = ["Y"] itc_type = 'All Other ITC' gst_category = ['Unregistered', 'Overseas'] else: - reverse_charge = "N" + gst_category = ['Unregistered', 'Overseas', 'Registered Regular'] + reverse_charge = ["N", "Y"] for account_head in self.account_heads: for category in gst_category: - for key in [['iamt', 'igst_account'], ['camt', 'cgst_account'], ['samt', 'sgst_account'], ['csamt', 'cess_account']]: - d[key[0]] += flt(itc_details.get((category, itc_type, reverse_charge, account_head.get(key[1])), {}).get("amount"), 2) + for charge_type in reverse_charge: + for key in [['iamt', 'igst_account'], ['camt', 'cgst_account'], ['samt', 'sgst_account'], ['csamt', 'cess_account']]: + d[key[0]] += flt(itc_details.get((category, itc_type, charge_type, account_head.get(key[1])), {}).get("amount"), 2) for key in ['iamt', 'camt', 'samt', 'csamt']: net_itc[key] += flt(d[key], 2) @@ -264,7 +265,8 @@ class GSTR3BReport(Document): def get_itc_details(self): itc_amount = frappe.db.sql(""" - select s.gst_category, sum(t.tax_amount_after_discount_amount) as tax_amount, t.account_head, s.eligibility_for_itc, s.reverse_charge + select s.gst_category, sum(t.base_tax_amount_after_discount_amount) as tax_amount, + t.account_head, s.eligibility_for_itc, s.reverse_charge from `tabPurchase Invoice` s , `tabPurchase Taxes and Charges` t where s.docstatus = 1 and t.parent = s.name and month(s.posting_date) = %s and year(s.posting_date) = %s and s.company = %s @@ -387,7 +389,7 @@ class GSTR3BReport(Document): tax_template = 'Purchase Taxes and Charges' tax_amounts = frappe.db.sql(""" - select s.gst_category, sum(t.tax_amount_after_discount_amount) as tax_amount, t.account_head + select s.gst_category, sum(t.base_tax_amount_after_discount_amount) as tax_amount, t.account_head from `tab{doctype}` s , `tab{template}` t where s.docstatus = 1 and t.parent = s.name and s.reverse_charge = %s and month(s.posting_date) = %s and year(s.posting_date) = %s and s.company = %s diff --git a/erpnext/regional/doctype/uae_vat_account/__init__.py b/erpnext/regional/doctype/uae_vat_account/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/regional/doctype/uae_vat_account/uae_vat_account.json b/erpnext/regional/doctype/uae_vat_account/uae_vat_account.json new file mode 100644 index 0000000000..73a8169207 --- /dev/null +++ b/erpnext/regional/doctype/uae_vat_account/uae_vat_account.json @@ -0,0 +1,35 @@ +{ + "actions": [], + "autoname": "account", + "creation": "2020-09-28 11:30:45.472053", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "account" + ], + "fields": [ + { + "allow_in_quick_entry": 1, + "fieldname": "account", + "fieldtype": "Link", + "in_list_view": 1, + "in_preview": 1, + "label": "Account", + "options": "Account" + } + ], + "index_web_pages_for_search": 1, + "istable": 1, + "links": [], + "modified": "2020-09-28 12:02:56.444007", + "modified_by": "Administrator", + "module": "Regional", + "name": "UAE VAT Account", + "owner": "Administrator", + "permissions": [], + "quick_entry": 1, + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 +} \ No newline at end of file diff --git a/erpnext/regional/doctype/uae_vat_account/uae_vat_account.py b/erpnext/regional/doctype/uae_vat_account/uae_vat_account.py new file mode 100644 index 0000000000..80d6b3a5f1 --- /dev/null +++ b/erpnext/regional/doctype/uae_vat_account/uae_vat_account.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +# import frappe +from frappe.model.document import Document + +class UAEVATAccount(Document): + pass diff --git a/erpnext/regional/doctype/uae_vat_settings/__init__.py b/erpnext/regional/doctype/uae_vat_settings/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/regional/doctype/uae_vat_settings/test_uae_vat_settings.py b/erpnext/regional/doctype/uae_vat_settings/test_uae_vat_settings.py new file mode 100644 index 0000000000..b88439f9b8 --- /dev/null +++ b/erpnext/regional/doctype/uae_vat_settings/test_uae_vat_settings.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals + +# import frappe +import unittest + +class TestUAEVATSettings(unittest.TestCase): + pass diff --git a/erpnext/regional/doctype/uae_vat_settings/uae_vat_settings.js b/erpnext/regional/doctype/uae_vat_settings/uae_vat_settings.js new file mode 100644 index 0000000000..07a93010b5 --- /dev/null +++ b/erpnext/regional/doctype/uae_vat_settings/uae_vat_settings.js @@ -0,0 +1,8 @@ +// Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +frappe.ui.form.on('UAE VAT Settings', { + // refresh: function(frm) { + + // } +}); diff --git a/erpnext/regional/doctype/uae_vat_settings/uae_vat_settings.json b/erpnext/regional/doctype/uae_vat_settings/uae_vat_settings.json new file mode 100644 index 0000000000..ce2c1d4e14 --- /dev/null +++ b/erpnext/regional/doctype/uae_vat_settings/uae_vat_settings.json @@ -0,0 +1,55 @@ +{ + "actions": [], + "autoname": "field:company", + "creation": "2020-09-25 12:48:51.463265", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "company", + "uae_vat_accounts" + ], + "fields": [ + { + "fieldname": "company", + "fieldtype": "Link", + "in_list_view": 1, + "label": "Company", + "options": "Company", + "reqd": 1, + "unique": 1 + }, + { + "fieldname": "uae_vat_accounts", + "fieldtype": "Table", + "label": "UAE VAT Accounts", + "options": "UAE VAT Account", + "reqd": 1 + } + ], + "index_web_pages_for_search": 1, + "links": [], + "modified": "2020-09-30 20:08:18.764798", + "modified_by": "Administrator", + "module": "Regional", + "name": "UAE VAT Settings", + "owner": "Administrator", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "write": 1 + } + ], + "quick_entry": 1, + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 +} \ No newline at end of file diff --git a/erpnext/regional/doctype/uae_vat_settings/uae_vat_settings.py b/erpnext/regional/doctype/uae_vat_settings/uae_vat_settings.py new file mode 100644 index 0000000000..20dc604510 --- /dev/null +++ b/erpnext/regional/doctype/uae_vat_settings/uae_vat_settings.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +# import frappe +from frappe.model.document import Document + +class UAEVATSettings(Document): + pass diff --git a/erpnext/regional/germany/accounts_controller.py b/erpnext/regional/germany/accounts_controller.py index 193c8e14a3..5b2b31f204 100644 --- a/erpnext/regional/germany/accounts_controller.py +++ b/erpnext/regional/germany/accounts_controller.py @@ -15,8 +15,7 @@ REQUIRED_FIELDS = { }, { "field_name": "taxes", - "regulation": "§ 14 Abs. 4 Nr. 8 UStG", - "condition": "not exempt_from_sales_tax" + "regulation": "§ 14 Abs. 4 Nr. 8 UStG" }, { "field_name": "customer_address", diff --git a/erpnext/regional/germany/utils/datev/datev_csv.py b/erpnext/regional/germany/utils/datev/datev_csv.py index aae734f8e2..f138a807bc 100644 --- a/erpnext/regional/germany/utils/datev/datev_csv.py +++ b/erpnext/regional/germany/utils/datev/datev_csv.py @@ -104,9 +104,9 @@ def get_header(filters, csv_class): # L = Tax client number (Mandantennummer) datev_settings.get('client_number', '00000'), # M = Start of the fiscal year (Wirtschaftsjahresbeginn) - frappe.utils.formatdate(frappe.defaults.get_user_default('year_start_date'), 'yyyyMMdd'), + frappe.utils.formatdate(filters.get('fiscal_year_start'), 'yyyyMMdd'), # N = Length of account numbers (Sachkontenlänge) - datev_settings.get('account_number_length', '4'), + str(filters.get('account_number_length', 4)), # O = Transaction batch start date (YYYYMMDD) frappe.utils.formatdate(filters.get('from_date'), 'yyyyMMdd') if csv_class.DATA_CATEGORY == DataCategory.TRANSACTIONS else '', # P = Transaction batch end date (YYYYMMDD) @@ -155,20 +155,22 @@ def get_header(filters, csv_class): return header -def download_csv_files_as_zip(csv_data_list): +def zip_and_download(zip_filename, csv_files): """ Put CSV files in a zip archive and send that to the client. Params: - csv_data_list -- list of dicts [{'file_name': 'EXTF_Buchunsstapel.zip', 'csv_data': get_datev_csv()}] + zip_filename Name of the zip file + csv_files list of dicts [{'file_name': 'my_file.csv', 'csv_data': 'comma,separated,values'}] """ zip_buffer = BytesIO() - datev_zip = zipfile.ZipFile(zip_buffer, mode='w', compression=zipfile.ZIP_DEFLATED) - for csv_file in csv_data_list: - datev_zip.writestr(csv_file.get('file_name'), csv_file.get('csv_data')) - datev_zip.close() + zip_file = zipfile.ZipFile(zip_buffer, mode='w', compression=zipfile.ZIP_DEFLATED) + for csv_file in csv_files: + zip_file.writestr(csv_file.get('file_name'), csv_file.get('csv_data')) + + zip_file.close() frappe.response['filecontent'] = zip_buffer.getvalue() - frappe.response['filename'] = 'DATEV.zip' + frappe.response['filename'] = zip_filename frappe.response['type'] = 'binary' diff --git a/erpnext/regional/india/taxes.js b/erpnext/regional/india/taxes.js index 3b6a28f52c..b70b2ec48c 100644 --- a/erpnext/regional/india/taxes.js +++ b/erpnext/regional/india/taxes.js @@ -19,6 +19,7 @@ erpnext.setup_auto_gst_taxation = (doctype) => { 'shipping_address': frm.doc.shipping_address || '', 'shipping_address_name': frm.doc.shipping_address_name || '', 'customer_address': frm.doc.customer_address || '', + 'supplier_address': frm.doc.supplier_address, 'customer': frm.doc.customer, 'supplier': frm.doc.supplier, 'supplier_gstin': frm.doc.supplier_gstin, @@ -31,12 +32,12 @@ erpnext.setup_auto_gst_taxation = (doctype) => { args: { party_details: JSON.stringify(party_details), doctype: frm.doc.doctype, - company: frm.doc.company, - return_taxes: 1 + company: frm.doc.company }, callback: function(r) { if(r.message) { frm.set_value('taxes_and_charges', r.message.taxes_and_charges); + frm.set_value('place_of_supply', r.message.place_of_supply); } else if (frm.doc.is_internal_supplier || frm.doc.is_internal_customer) { frm.set_value('taxes_and_charges', ''); frm.set_value('taxes', []); diff --git a/erpnext/regional/india/utils.py b/erpnext/regional/india/utils.py index dd87f0f660..f8520c2d00 100644 --- a/erpnext/regional/india/utils.py +++ b/erpnext/regional/india/utils.py @@ -12,6 +12,7 @@ from erpnext.regional.india import number_state_mapping from six import string_types from erpnext.accounts.general_ledger import make_gl_entries from erpnext.accounts.utils import get_account_currency +from frappe.model.utils import get_fetch_values def validate_gstin_for_india(doc, method): if hasattr(doc, 'gst_state') and doc.gst_state: @@ -51,6 +52,13 @@ def validate_gstin_for_india(doc, method): frappe.throw(_("Invalid GSTIN! First 2 digits of GSTIN should match with State number {0}.") .format(doc.gst_state_number)) +def validate_tax_category(doc, method): + if doc.get('gst_state') and frappe.db.get_value('Tax category', {'gst_state': doc.gst_state, 'is_inter_state': doc.is_inter_state}): + if doc.is_inter_state: + frappe.throw(_("Inter State tax category for GST State {0} already exists").format(doc.gst_state)) + else: + frappe.throw(_("Intra State tax category for GST State {0} already exists").format(doc.gst_state)) + def update_gst_category(doc, method): for link in doc.links: if link.link_doctype in ['Customer', 'Supplier']: @@ -85,8 +93,7 @@ def validate_gstin_check_digit(gstin, label='GSTIN'): total += digit factor = 2 if factor == 1 else 1 if gstin[-1] != code_point_chars[((mod - (total % mod)) % mod)]: - frappe.throw(_("""Invalid {0}! The check digit validation has failed. - Please ensure you've typed the {0} correctly.""".format(label))) + frappe.throw(_("""Invalid {0}! The check digit validation has failed. Please ensure you've typed the {0} correctly.""").format(label)) def get_itemised_tax_breakup_header(item_doctype, tax_accounts): if frappe.get_meta(item_doctype).has_field('gst_hsn_code'): @@ -150,17 +157,19 @@ def get_place_of_supply(party_details, doctype): return cstr(address.gst_state_number) + "-" + cstr(address.gst_state) @frappe.whitelist() -def get_regional_address_details(party_details, doctype, company, return_taxes=None): +def get_regional_address_details(party_details, doctype, company): if isinstance(party_details, string_types): party_details = json.loads(party_details) party_details = frappe._dict(party_details) + update_party_details(party_details, doctype) + party_details.place_of_supply = get_place_of_supply(party_details, doctype) if is_internal_transfer(party_details, doctype): party_details.taxes_and_charges = '' party_details.taxes = '' - return + return party_details if doctype in ("Sales Invoice", "Delivery Note", "Sales Order"): master_doctype = "Sales Taxes and Charges Template" @@ -168,26 +177,26 @@ def get_regional_address_details(party_details, doctype, company, return_taxes=N get_tax_template_for_sez(party_details, master_doctype, company, 'Customer') get_tax_template_based_on_category(master_doctype, company, party_details) - if party_details.get('taxes_and_charges') and return_taxes: + if party_details.get('taxes_and_charges'): return party_details if not party_details.company_gstin: - return + return party_details elif doctype in ("Purchase Invoice", "Purchase Order", "Purchase Receipt"): master_doctype = "Purchase Taxes and Charges Template" get_tax_template_for_sez(party_details, master_doctype, company, 'Supplier') get_tax_template_based_on_category(master_doctype, company, party_details) - if party_details.get('taxes_and_charges') and return_taxes: + if party_details.get('taxes_and_charges'): return party_details if not party_details.supplier_gstin: - return + return party_details - if not party_details.place_of_supply: return + if not party_details.place_of_supply: return party_details - if not party_details.company_gstin: return + if not party_details.company_gstin: return party_details if ((doctype in ("Sales Invoice", "Delivery Note", "Sales Order") and party_details.company_gstin and party_details.company_gstin[:2] != party_details.place_of_supply[:2]) or (doctype in ("Purchase Invoice", @@ -197,12 +206,16 @@ def get_regional_address_details(party_details, doctype, company, return_taxes=N default_tax = get_tax_template(master_doctype, company, 0, party_details.company_gstin[:2]) if not default_tax: - return + return party_details party_details["taxes_and_charges"] = default_tax party_details.taxes = get_taxes_and_charges(master_doctype, default_tax) - if return_taxes: - return party_details + return party_details + +def update_party_details(party_details, doctype): + for address_field in ['shipping_address', 'company_address', 'supplier_address', 'shipping_address_name', 'customer_address']: + if party_details.get(address_field): + party_details.update(get_fetch_values(doctype, address_field, party_details.get(address_field))) def is_internal_transfer(party_details, doctype): if doctype in ("Sales Invoice", "Delivery Note", "Sales Order"): @@ -236,7 +249,7 @@ def get_tax_template(master_doctype, company, is_inter_state, state_code): if tax_category.gst_state == number_state_mapping[state_code] or \ (not default_tax and not tax_category.gst_state): default_tax = frappe.db.get_value(master_doctype, - {'disabled': 0, 'tax_category': tax_category.name}, 'name') + {'company': company, 'disabled': 0, 'tax_category': tax_category.name}, 'name') return default_tax def get_tax_template_for_sez(party_details, master_doctype, company, party_type): @@ -517,6 +530,9 @@ def get_address_details(data, doc, company_address, billing_address): data.actualToStateCode = data.toStateCode shipping_address = billing_address + if doc.gst_category == 'SEZ': + data.toStateCode = 99 + return data def get_item_list(data, doc): @@ -752,4 +768,4 @@ def make_regional_gl_entries(gl_entries, doc): }, account_currency, item=tax) ) - return gl_entries \ No newline at end of file + return gl_entries diff --git a/erpnext/regional/report/datev/datev.js b/erpnext/regional/report/datev/datev.js index 55f12cf373..4124e3df19 100644 --- a/erpnext/regional/report/datev/datev.js +++ b/erpnext/regional/report/datev/datev.js @@ -11,14 +11,14 @@ frappe.query_reports["DATEV"] = { { "fieldname": "from_date", "label": __("From Date"), - "default": frappe.datetime.month_start(), + "default": moment().subtract(1, 'month').startOf('month').format(), "fieldtype": "Date", "reqd": 1 }, { "fieldname": "to_date", "label": __("To Date"), - "default": frappe.datetime.now_date(), + "default": moment().subtract(1, 'month').endOf('month').format(), "fieldtype": "Date", "reqd": 1 }, @@ -30,9 +30,23 @@ frappe.query_reports["DATEV"] = { } ], onload: function(query_report) { + let company = frappe.query_report.get_filter_value('company'); + frappe.db.exists('DATEV Settings', company).then((settings_exist) => { + if (!settings_exist) { + frappe.confirm(__('DATEV Settings for your Company are missing. Would you like to create them now?'), + () => frappe.new_doc('DATEV Settings', {'company': company}) + ); + } + }); + query_report.page.add_menu_item(__("Download DATEV File"), () => { const filters = JSON.stringify(query_report.get_values()); window.open(`/api/method/erpnext.regional.report.datev.datev.download_datev_csv?filters=${filters}`); }); + + query_report.page.add_menu_item(__("Change DATEV Settings"), () => { + let company = frappe.query_report.get_filter_value('company'); // read company from filters again – it might have changed by now. + frappe.set_route('Form', 'DATEV Settings', company); + }); } }; diff --git a/erpnext/regional/report/datev/datev.py b/erpnext/regional/report/datev/datev.py index dd818e6054..1e39c57786 100644 --- a/erpnext/regional/report/datev/datev.py +++ b/erpnext/regional/report/datev/datev.py @@ -11,9 +11,11 @@ from __future__ import unicode_literals import json import frappe -from frappe import _ from six import string_types -from erpnext.regional.germany.utils.datev.datev_csv import download_csv_files_as_zip, get_datev_csv + +from frappe import _ +from erpnext.accounts.utils import get_fiscal_year +from erpnext.regional.germany.utils.datev.datev_csv import zip_and_download, get_datev_csv from erpnext.regional.germany.utils.datev.datev_constants import Transactions, DebtorsCreditors, AccountNames COLUMNS = [ @@ -92,25 +94,44 @@ COLUMNS = [ def execute(filters=None): """Entry point for frappe.""" - validate(filters) - return COLUMNS, get_transactions(filters, as_dict=0) + data = [] + if filters and validate(filters): + data = get_transactions(filters, as_dict=0) + + return COLUMNS, data def validate(filters): """Make sure all mandatory filters and settings are present.""" - if not filters.get('company'): + company = filters.get('company') + if not company: frappe.throw(_('Company is a mandatory filter.')) - if not filters.get('from_date'): + from_date = filters.get('from_date') + if not from_date: frappe.throw(_('From Date is a mandatory filter.')) - if not filters.get('to_date'): + to_date = filters.get('to_date') + if not to_date: frappe.throw(_('To Date is a mandatory filter.')) - try: - frappe.get_doc('DATEV Settings', filters.get('company')) - except frappe.DoesNotExistError: - frappe.throw(_('Please create DATEV Settings for Company {}.').format(filters.get('company'))) + validate_fiscal_year(from_date, to_date, company) + + if not frappe.db.exists('DATEV Settings', filters.get('company')): + frappe.log_error(_('Please create {} for Company {}.').format( + '{}'.format(_('DATEV Settings')), + frappe.bold(filters.get('company')) + )) + return False + + return True + + +def validate_fiscal_year(from_date, to_date, company): + from_fiscal_year = get_fiscal_year(date=from_date, company=company) + to_fiscal_year = get_fiscal_year(date=to_date, company=company) + if from_fiscal_year != to_fiscal_year: + frappe.throw(_('Dates {} and {} are not in the same fiscal year.').format(from_date, to_date)) def get_transactions(filters, as_dict=1): @@ -317,17 +338,24 @@ def download_datev_csv(filters): filters = json.loads(filters) validate(filters) + company = filters.get('company') + + fiscal_year = get_fiscal_year(date=filters.get('from_date'), company=company) + filters['fiscal_year_start'] = fiscal_year[1] # set chart of accounts used - coa = frappe.get_value('Company', filters.get('company'), 'chart_of_accounts') + coa = frappe.get_value('Company', company, 'chart_of_accounts') filters['skr'] = '04' if 'SKR04' in coa else ('03' if 'SKR03' in coa else '') + filters['account_number_length'] = frappe.get_value('DATEV Settings', company, 'account_number_length') + transactions = get_transactions(filters) account_names = get_account_names(filters) customers = get_customers(filters) suppliers = get_suppliers(filters) - download_csv_files_as_zip([ + zip_name = '{} DATEV.zip'.format(frappe.utils.datetime.date.today()) + zip_and_download(zip_name, [ { 'file_name': 'EXTF_Buchungsstapel.csv', 'csv_data': get_datev_csv(transactions, filters, csv_class=Transactions) diff --git a/erpnext/regional/report/gstr_1/gstr_1.py b/erpnext/regional/report/gstr_1/gstr_1.py index 282efe4790..837929709e 100644 --- a/erpnext/regional/report/gstr_1/gstr_1.py +++ b/erpnext/regional/report/gstr_1/gstr_1.py @@ -78,7 +78,7 @@ class Gstr1Report(object): place_of_supply = invoice_details.get("place_of_supply") ecommerce_gstin = invoice_details.get("ecommerce_gstin") - b2cs_output.setdefault((rate, place_of_supply, ecommerce_gstin),{ + b2cs_output.setdefault((rate, place_of_supply, ecommerce_gstin, inv),{ "place_of_supply": "", "ecommerce_gstin": "", "rate": "", @@ -90,7 +90,7 @@ class Gstr1Report(object): "invoice_value": invoice_details.get("base_grand_total"), }) - row = b2cs_output.get((rate, place_of_supply, ecommerce_gstin)) + row = b2cs_output.get((rate, place_of_supply, ecommerce_gstin, inv)) row["place_of_supply"] = place_of_supply row["ecommerce_gstin"] = ecommerce_gstin row["rate"] = rate diff --git a/erpnext/regional/report/uae_vat_201/__init__.py b/erpnext/regional/report/uae_vat_201/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/regional/report/uae_vat_201/test_uae_vat_201.py b/erpnext/regional/report/uae_vat_201/test_uae_vat_201.py new file mode 100644 index 0000000000..daa69768c5 --- /dev/null +++ b/erpnext/regional/report/uae_vat_201/test_uae_vat_201.py @@ -0,0 +1,239 @@ +# coding=utf-8 +from __future__ import unicode_literals + +import erpnext +import frappe +from unittest import TestCase +from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice +from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice +from erpnext.stock.doctype.warehouse.test_warehouse import get_warehouse_account +from erpnext.regional.report.uae_vat_201.uae_vat_201 import ( + get_total_emiratewise, + get_tourist_tax_return_total, + get_tourist_tax_return_tax, + get_zero_rated_total, + get_exempt_total, + get_standard_rated_expenses_total, + get_standard_rated_expenses_tax, +) + +test_dependencies = ["Territory", "Customer Group", "Supplier Group", "Item"] + +class TestUaeVat201(TestCase): + def setUp(self): + frappe.set_user("Administrator") + + frappe.db.sql("delete from `tabSales Invoice` where company='_Test Company UAE VAT'") + frappe.db.sql("delete from `tabPurchase Invoice` where company='_Test Company UAE VAT'") + + make_company("_Test Company UAE VAT", "_TCUV") + set_vat_accounts() + + make_customer() + + make_supplier() + + create_warehouse("_Test UAE VAT Supplier Warehouse", company="_Test Company UAE VAT") + + make_item("_Test UAE VAT Item", properties = {"is_zero_rated": 0, "is_exempt": 0}) + make_item("_Test UAE VAT Zero Rated Item", properties = {"is_zero_rated": 1, "is_exempt": 0}) + make_item("_Test UAE VAT Exempt Item", properties = {"is_zero_rated": 0, "is_exempt": 1}) + + make_sales_invoices() + + create_purchase_invoices() + + def test_uae_vat_201_report(self): + filters = {"company": "_Test Company UAE VAT"} + total_emiratewise = get_total_emiratewise(filters) + amounts_by_emirate = {} + for data in total_emiratewise: + emirate, amount, vat = data + amounts_by_emirate[emirate] = { + "raw_amount": amount, + "raw_vat_amount": vat, + } + self.assertEqual(amounts_by_emirate["Sharjah"]["raw_amount"],100) + self.assertEqual(amounts_by_emirate["Sharjah"]["raw_vat_amount"],5) + self.assertEqual(amounts_by_emirate["Dubai"]["raw_amount"],200) + self.assertEqual(amounts_by_emirate["Dubai"]["raw_vat_amount"],10) + self.assertEqual(get_tourist_tax_return_total(filters),100) + self.assertEqual(get_tourist_tax_return_tax(filters),2) + self.assertEqual(get_zero_rated_total(filters),100) + self.assertEqual(get_exempt_total(filters),100) + self.assertEqual(get_standard_rated_expenses_total(filters),250) + self.assertEqual(get_standard_rated_expenses_tax(filters),1) + +def make_company(company_name, abbr): + if not frappe.db.exists("Company", company_name): + company = frappe.get_doc({ + "doctype": "Company", + "company_name": company_name, + "abbr": abbr, + "default_currency": "AED", + "country": "United Arab Emirates", + "create_chart_of_accounts_based_on": "Standard Template", + }) + company.insert() + else: + company = frappe.get_doc("Company", company_name) + + company.create_default_warehouses() + + if not frappe.db.get_value("Cost Center", {"is_group": 0, "company": company.name}): + company.create_default_cost_center() + + company.save() + return company + +def set_vat_accounts(): + if not frappe.db.exists("UAE VAT Settings", "_Test Company UAE VAT"): + vat_accounts = frappe.get_all( + "Account", + fields=["name"], + filters = { + "company": "_Test Company UAE VAT", + "is_group": 0, + "account_type": "Tax" + } + ) + + uae_vat_accounts = [] + for account in vat_accounts: + uae_vat_accounts.append({ + "doctype": "UAE VAT Account", + "account": account.name + }) + + frappe.get_doc({ + "company": "_Test Company UAE VAT", + "uae_vat_accounts": uae_vat_accounts, + "doctype": "UAE VAT Settings", + }).insert() + +def make_customer(): + if not frappe.db.exists("Customer", "_Test UAE Customer"): + customer = frappe.get_doc({ + "doctype": "Customer", + "customer_name": "_Test UAE Customer", + "customer_type": "Company", + }) + customer.insert() + else: + customer = frappe.get_doc("Customer", "_Test UAE Customer") + +def make_supplier(): + if not frappe.db.exists("Supplier", "_Test UAE Supplier"): + frappe.get_doc({ + "supplier_group": "Local", + "supplier_name": "_Test UAE Supplier", + "supplier_type": "Individual", + "doctype": "Supplier", + }).insert() + +def create_warehouse(warehouse_name, properties=None, company=None): + if not company: + company = "_Test Company" + + warehouse_id = erpnext.encode_company_abbr(warehouse_name, company) + if not frappe.db.exists("Warehouse", warehouse_id): + warehouse = frappe.new_doc("Warehouse") + warehouse.warehouse_name = warehouse_name + warehouse.parent_warehouse = "All Warehouses - _TCUV" + warehouse.company = company + warehouse.account = get_warehouse_account(warehouse_name, company) + if properties: + warehouse.update(properties) + warehouse.save() + return warehouse.name + else: + return warehouse_id + +def make_item(item_code, properties=None): + if frappe.db.exists("Item", item_code): + return frappe.get_doc("Item", item_code) + + item = frappe.get_doc({ + "doctype": "Item", + "item_code": item_code, + "item_name": item_code, + "description": item_code, + "item_group": "Products" + }) + + if properties: + item.update(properties) + + item.insert() + + return item + +def make_sales_invoices(): + def make_sales_invoices_wrapper(emirate, item, tax = True, tourist_tax= False): + si = create_sales_invoice( + company="_Test Company UAE VAT", + customer = '_Test UAE Customer', + currency = 'AED', + warehouse = 'Finished Goods - _TCUV', + debit_to = 'Debtors - _TCUV', + income_account = 'Sales - _TCUV', + expense_account = 'Cost of Goods Sold - _TCUV', + cost_center = 'Main - _TCUV', + item = item, + do_not_save=1 + ) + si.vat_emirate = emirate + if tax: + si.append( + "taxes", { + "charge_type": "On Net Total", + "account_head": "VAT 5% - _TCUV", + "cost_center": "Main - _TCUV", + "description": "VAT 5% @ 5.0", + "rate": 5.0 + } + ) + if tourist_tax: + si.tourist_tax_return = 2 + si.submit() + + #Define Item Names + uae_item = "_Test UAE VAT Item" + uae_exempt_item = "_Test UAE VAT Exempt Item" + uae_zero_rated_item = "_Test UAE VAT Zero Rated Item" + + #Sales Invoice with standard rated expense in Dubai + make_sales_invoices_wrapper('Dubai', uae_item) + #Sales Invoice with standard rated expense in Sharjah + make_sales_invoices_wrapper('Sharjah', uae_item) + #Sales Invoice with Tourist Tax Return + make_sales_invoices_wrapper('Dubai', uae_item, True, True) + #Sales Invoice with Exempt Item + make_sales_invoices_wrapper('Sharjah', uae_exempt_item, False) + #Sales Invoice with Zero Rated Item + make_sales_invoices_wrapper('Sharjah', uae_zero_rated_item, False) + +def create_purchase_invoices(): + pi = make_purchase_invoice( + company="_Test Company UAE VAT", + supplier = '_Test UAE Supplier', + supplier_warehouse = '_Test UAE VAT Supplier Warehouse - _TCUV', + warehouse = '_Test UAE VAT Supplier Warehouse - _TCUV', + currency = 'AED', + cost_center = 'Main - _TCUV', + expense_account = 'Cost of Goods Sold - _TCUV', + item = "_Test UAE VAT Item", + do_not_save=1, + uom = "Nos" + ) + pi.append("taxes", { + "charge_type": "On Net Total", + "account_head": "VAT 5% - _TCUV", + "cost_center": "Main - _TCUV", + "description": "VAT 5% @ 5.0", + "rate": 5.0 + }) + + pi.recoverable_standard_rated_expenses = 1 + + pi.submit() diff --git a/erpnext/regional/report/uae_vat_201/uae_vat_201.html b/erpnext/regional/report/uae_vat_201/uae_vat_201.html new file mode 100644 index 0000000000..d9b9968d90 --- /dev/null +++ b/erpnext/regional/report/uae_vat_201/uae_vat_201.html @@ -0,0 +1,77 @@ +{% + var report_columns = report.get_columns_for_print(); + report_columns = report_columns.filter(col => !col.hidden); +%} + + +

{%= __(report.report_name) %}

+ +

{%= __("VAT on Sales and All Other Outputs") %}

+ + + + + + + + {% for (let i=2; i{%= report_columns[i].label %} + {% } %} + + + + {% for (let j=1; j<12; j++) { %} + {% + var row = data[j]; + %} + + {% for (let i=0; i + {% const fieldname = report_columns[i].fieldname; %} + {% if (!is_null(row[fieldname])) { %} + {%= frappe.format(row[fieldname], report_columns[i], {}, row) %} + {% } %} + + {% } %} + + {% } %} + +
{%= report_columns[0].label %}{%= report_columns[1].label %}
+ +

{%= __("VAT on Expenses and All Other Inputs") %}

+ + + + + + + {% for (let i=2; i{%= report_columns[i].label %} + {% } %} + + + + {% for (let j=14; j + {% for (let i=0; i + {% const fieldname = report_columns[i].fieldname; %} + {% if (!is_null(row[fieldname])) { %} + {%= frappe.format(row[fieldname], report_columns[i], {}, row) %} + {% } %} + + {% } %} + + {% } %} + + +
{%= report_columns[0].label %}{%= report_columns[1].label %}
\ No newline at end of file diff --git a/erpnext/regional/report/uae_vat_201/uae_vat_201.js b/erpnext/regional/report/uae_vat_201/uae_vat_201.js new file mode 100644 index 0000000000..5957424770 --- /dev/null +++ b/erpnext/regional/report/uae_vat_201/uae_vat_201.js @@ -0,0 +1,40 @@ +// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt +/* eslint-disable */ + +frappe.query_reports["UAE VAT 201"] = { + "filters": [ + { + "fieldname": "company", + "label": __("Company"), + "fieldtype": "Link", + "options": "Company", + "reqd": 1, + "default": frappe.defaults.get_user_default("Company") + }, + { + "fieldname": "from_date", + "label": __("From Date"), + "fieldtype": "Date", + "reqd": 1, + "default": frappe.datetime.add_months(frappe.datetime.get_today(), -3), + }, + { + "fieldname": "to_date", + "label": __("To Date"), + "fieldtype": "Date", + "reqd": 1, + "default": frappe.datetime.get_today() + }, + ], + "formatter": function(value, row, column, data, default_formatter) { + if (data + && (data.legend=='VAT on Sales and All Other Outputs' || data.legend=='VAT on Expenses and All Other Inputs') + && data.legend==value) { + value = $(`${value}`); + var $value = $(value).css("font-weight", "bold"); + value = $value.wrap("

").parent().html(); + } + return value; + }, +}; diff --git a/erpnext/regional/report/uae_vat_201/uae_vat_201.json b/erpnext/regional/report/uae_vat_201/uae_vat_201.json new file mode 100644 index 0000000000..8a88bcd3e2 --- /dev/null +++ b/erpnext/regional/report/uae_vat_201/uae_vat_201.json @@ -0,0 +1,22 @@ +{ + "add_total_row": 0, + "columns": [], + "creation": "2020-09-10 08:51:02.298482", + "disable_prepared_report": 0, + "disabled": 0, + "docstatus": 0, + "doctype": "Report", + "filters": [], + "idx": 0, + "is_standard": "Yes", + "modified": "2020-09-10 08:51:02.298482", + "modified_by": "Administrator", + "module": "Regional", + "name": "UAE VAT 201", + "owner": "Administrator", + "prepared_report": 0, + "ref_doctype": "GL Entry", + "report_name": "UAE VAT 201", + "report_type": "Script Report", + "roles": [] +} \ No newline at end of file diff --git a/erpnext/regional/report/uae_vat_201/uae_vat_201.py b/erpnext/regional/report/uae_vat_201/uae_vat_201.py new file mode 100644 index 0000000000..b0614238ba --- /dev/null +++ b/erpnext/regional/report/uae_vat_201/uae_vat_201.py @@ -0,0 +1,339 @@ +# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe +from frappe import _ + +def execute(filters=None): + columns = get_columns() + data, emirates, amounts_by_emirate = get_data(filters) + return columns, data + +def get_columns(): + """Creates a list of dictionaries that are used to generate column headers of the data table.""" + return [ + { + "fieldname": "no", + "label": _("No"), + "fieldtype": "Data", + "width": 50 + }, + { + "fieldname": "legend", + "label": _("Legend"), + "fieldtype": "Data", + "width": 300 + }, + { + "fieldname": "amount", + "label": _("Amount (AED)"), + "fieldtype": "Currency", + "width": 125, + }, + { + "fieldname": "vat_amount", + "label": _("VAT Amount (AED)"), + "fieldtype": "Currency", + "width": 150, + } + ] + +def get_data(filters = None): + """Returns the list of dictionaries. Each dictionary is a row in the datatable and chart data.""" + data = [] + emirates, amounts_by_emirate = append_vat_on_sales(data, filters) + append_vat_on_expenses(data, filters) + return data, emirates, amounts_by_emirate + +def append_vat_on_sales(data, filters): + """Appends Sales and All Other Outputs.""" + append_data(data, '', _('VAT on Sales and All Other Outputs'), '', '') + + emirates, amounts_by_emirate = standard_rated_expenses_emiratewise(data, filters) + + append_data(data, '2', + _('Tax Refunds provided to Tourists under the Tax Refunds for Tourists Scheme'), + frappe.format((-1) * get_tourist_tax_return_total(filters), 'Currency'), + frappe.format((-1) * get_tourist_tax_return_tax(filters), 'Currency')) + + append_data(data, '3', _('Supplies subject to the reverse charge provision'), + frappe.format(get_reverse_charge_total(filters), 'Currency'), + frappe.format(get_reverse_charge_tax(filters), 'Currency')) + + append_data(data, '4', _('Zero Rated'), + frappe.format(get_zero_rated_total(filters), 'Currency'), "-") + + append_data(data, '5', _('Exempt Supplies'), + frappe.format(get_exempt_total(filters), 'Currency'),"-") + + append_data(data, '', '', '', '') + + return emirates, amounts_by_emirate + +def standard_rated_expenses_emiratewise(data, filters): + """Append emiratewise standard rated expenses and vat.""" + total_emiratewise = get_total_emiratewise(filters) + emirates = get_emirates() + amounts_by_emirate = {} + for emirate, amount, vat in total_emiratewise: + amounts_by_emirate[emirate] = { + "legend": emirate, + "raw_amount": amount, + "raw_vat_amount": vat, + "amount": frappe.format(amount, 'Currency'), + "vat_amount": frappe.format(vat, 'Currency'), + } + amounts_by_emirate = append_emiratewise_expenses(data, emirates, amounts_by_emirate) + return emirates, amounts_by_emirate + +def append_emiratewise_expenses(data, emirates, amounts_by_emirate): + """Append emiratewise standard rated expenses and vat.""" + for no, emirate in enumerate(emirates, 97): + if emirate in amounts_by_emirate: + amounts_by_emirate[emirate]["no"] = _('1{0}').format(chr(no)) + amounts_by_emirate[emirate]["legend"] = _('Standard rated supplies in {0}').format(emirate) + data.append(amounts_by_emirate[emirate]) + else: + append_data(data, _('1{0}').format(chr(no)), + _('Standard rated supplies in {0}').format(emirate), + frappe.format(0, 'Currency'), frappe.format(0, 'Currency')) + return amounts_by_emirate + +def append_vat_on_expenses(data, filters): + """Appends Expenses and All Other Inputs.""" + append_data(data, '', _('VAT on Expenses and All Other Inputs'), '', '') + append_data(data, '9', _('Standard Rated Expenses'), + frappe.format(get_standard_rated_expenses_total(filters), 'Currency'), + frappe.format(get_standard_rated_expenses_tax(filters), 'Currency')) + append_data(data, '10', _('Supplies subject to the reverse charge provision'), + frappe.format(get_reverse_charge_recoverable_total(filters), 'Currency'), + frappe.format(get_reverse_charge_recoverable_tax(filters), 'Currency')) + +def append_data(data, no, legend, amount, vat_amount): + """Returns data with appended value.""" + data.append({"no": no, "legend":legend, "amount": amount, "vat_amount": vat_amount}) + +def get_total_emiratewise(filters): + """Returns Emiratewise Amount and Taxes.""" + conditions = get_conditions(filters) + try: + return frappe.db.sql(""" + select + s.vat_emirate as emirate, sum(i.base_amount) as total, sum(s.total_taxes_and_charges) + from + `tabSales Invoice Item` i inner join `tabSales Invoice` s + on + i.parent = s.name + where + s.docstatus = 1 and i.is_exempt != 1 and i.is_zero_rated != 1 + {where_conditions} + group by + s.vat_emirate; + """.format(where_conditions=conditions), filters) + except (IndexError, TypeError): + return 0 + +def get_emirates(): + """Returns a List of emirates in the order that they are to be displayed.""" + return [ + 'Abu Dhabi', + 'Dubai', + 'Sharjah', + 'Ajman', + 'Umm Al Quwain', + 'Ras Al Khaimah', + 'Fujairah' + ] + +def get_filters(filters): + """The conditions to be used to filter data to calculate the total sale.""" + query_filters = [] + if filters.get("company"): + query_filters.append(["company", '=', filters['company']]) + if filters.get("from_date"): + query_filters.append(["posting_date", '>=', filters['from_date']]) + if filters.get("from_date"): + query_filters.append(["posting_date", '<=', filters['to_date']]) + return query_filters + +def get_reverse_charge_total(filters): + """Returns the sum of the total of each Purchase invoice made.""" + query_filters = get_filters(filters) + query_filters.append(['reverse_charge', '=', 'Y']) + query_filters.append(['docstatus', '=', 1]) + try: + return frappe.db.get_all('Purchase Invoice', + filters = query_filters, + fields = ['sum(total)'], + as_list=True, + limit = 1 + )[0][0] or 0 + except (IndexError, TypeError): + return 0 + +def get_reverse_charge_tax(filters): + """Returns the sum of the tax of each Purchase invoice made.""" + conditions = get_conditions_join(filters) + return frappe.db.sql(""" + select sum(debit) from + `tabPurchase Invoice` p inner join `tabGL Entry` gl + on + gl.voucher_no = p.name + where + p.reverse_charge = "Y" + and p.docstatus = 1 + and gl.docstatus = 1 + and account in (select account from `tabUAE VAT Account` where parent=%(company)s) + {where_conditions} ; + """.format(where_conditions=conditions), filters)[0][0] or 0 + +def get_reverse_charge_recoverable_total(filters): + """Returns the sum of the total of each Purchase invoice made with recoverable reverse charge.""" + query_filters = get_filters(filters) + query_filters.append(['reverse_charge', '=', 'Y']) + query_filters.append(['recoverable_reverse_charge', '>', '0']) + query_filters.append(['docstatus', '=', 1]) + try: + return frappe.db.get_all('Purchase Invoice', + filters = query_filters, + fields = ['sum(total)'], + as_list=True, + limit = 1 + )[0][0] or 0 + except (IndexError, TypeError): + return 0 + +def get_reverse_charge_recoverable_tax(filters): + """Returns the sum of the tax of each Purchase invoice made.""" + conditions = get_conditions_join(filters) + return frappe.db.sql(""" + select + sum(debit * p.recoverable_reverse_charge / 100) + from + `tabPurchase Invoice` p inner join `tabGL Entry` gl + on + gl.voucher_no = p.name + where + p.reverse_charge = "Y" + and p.docstatus = 1 + and p.recoverable_reverse_charge > 0 + and gl.docstatus = 1 + and account in (select account from `tabUAE VAT Account` where parent=%(company)s) + {where_conditions} ; + """.format(where_conditions=conditions), filters)[0][0] or 0 + +def get_conditions_join(filters): + """The conditions to be used to filter data to calculate the total vat.""" + conditions = "" + for opts in (("company", " and p.company=%(company)s"), + ("from_date", " and p.posting_date>=%(from_date)s"), + ("to_date", " and p.posting_date<=%(to_date)s")): + if filters.get(opts[0]): + conditions += opts[1] + return conditions + +def get_standard_rated_expenses_total(filters): + """Returns the sum of the total of each Purchase invoice made with recoverable reverse charge.""" + query_filters = get_filters(filters) + query_filters.append(['recoverable_standard_rated_expenses', '>', 0]) + query_filters.append(['docstatus', '=', 1]) + try: + return frappe.db.get_all('Purchase Invoice', + filters = query_filters, + fields = ['sum(total)'], + as_list=True, + limit = 1 + )[0][0] or 0 + except (IndexError, TypeError): + return 0 + +def get_standard_rated_expenses_tax(filters): + """Returns the sum of the tax of each Purchase invoice made.""" + query_filters = get_filters(filters) + query_filters.append(['recoverable_standard_rated_expenses', '>', 0]) + query_filters.append(['docstatus', '=', 1]) + try: + return frappe.db.get_all('Purchase Invoice', + filters = query_filters, + fields = ['sum(recoverable_standard_rated_expenses)'], + as_list=True, + limit = 1 + )[0][0] or 0 + except (IndexError, TypeError): + return 0 + +def get_tourist_tax_return_total(filters): + """Returns the sum of the total of each Sales invoice with non zero tourist_tax_return.""" + query_filters = get_filters(filters) + query_filters.append(['tourist_tax_return', '>', 0]) + query_filters.append(['docstatus', '=', 1]) + try: + return frappe.db.get_all('Sales Invoice', + filters = query_filters, + fields = ['sum(total)'], + as_list=True, + limit = 1 + )[0][0] or 0 + except (IndexError, TypeError): + return 0 + +def get_tourist_tax_return_tax(filters): + """Returns the sum of the tax of each Sales invoice with non zero tourist_tax_return.""" + query_filters = get_filters(filters) + query_filters.append(['tourist_tax_return', '>', 0]) + query_filters.append(['docstatus', '=', 1]) + try: + return frappe.db.get_all('Sales Invoice', + filters = query_filters, + fields = ['sum(tourist_tax_return)'], + as_list=True, + limit = 1 + )[0][0] or 0 + except (IndexError, TypeError): + return 0 + +def get_zero_rated_total(filters): + """Returns the sum of each Sales Invoice Item Amount which is zero rated.""" + conditions = get_conditions(filters) + try: + return frappe.db.sql(""" + select + sum(i.base_amount) as total + from + `tabSales Invoice Item` i inner join `tabSales Invoice` s + on + i.parent = s.name + where + s.docstatus = 1 and i.is_zero_rated = 1 + {where_conditions} ; + """.format(where_conditions=conditions), filters)[0][0] or 0 + except (IndexError, TypeError): + return 0 + +def get_exempt_total(filters): + """Returns the sum of each Sales Invoice Item Amount which is Vat Exempt.""" + conditions = get_conditions(filters) + try: + return frappe.db.sql(""" + select + sum(i.base_amount) as total + from + `tabSales Invoice Item` i inner join `tabSales Invoice` s + on + i.parent = s.name + where + s.docstatus = 1 and i.is_exempt = 1 + {where_conditions} ; + """.format(where_conditions=conditions), filters)[0][0] or 0 + except (IndexError, TypeError): + return 0 +def get_conditions(filters): + """The conditions to be used to filter data to calculate the total sale.""" + conditions = "" + for opts in (("company", " and company=%(company)s"), + ("from_date", " and posting_date>=%(from_date)s"), + ("to_date", " and posting_date<=%(to_date)s")): + if filters.get(opts[0]): + conditions += opts[1] + return conditions diff --git a/erpnext/regional/united_arab_emirates/setup.py b/erpnext/regional/united_arab_emirates/setup.py index 250659e54d..013ae5cf73 100644 --- a/erpnext/regional/united_arab_emirates/setup.py +++ b/erpnext/regional/united_arab_emirates/setup.py @@ -5,24 +5,30 @@ from __future__ import unicode_literals import frappe, os, json from frappe.custom.doctype.custom_field.custom_field import create_custom_fields +from frappe.permissions import add_permission, update_permission_property from erpnext.setup.setup_wizard.operations.taxes_setup import create_sales_tax def setup(company=None, patch=True): make_custom_fields() add_print_formats() - + add_custom_roles_for_reports() + add_permissions() if company: create_sales_tax(company) def make_custom_fields(): + is_zero_rated = dict(fieldname='is_zero_rated', label='Is Zero Rated', + fieldtype='Check', fetch_from='item_code.is_zero_rated', insert_after='description', + print_hide=1) + is_exempt = dict(fieldname='is_exempt', label='Is Exempt', + fieldtype='Check', fetch_from='item_code.is_exempt', insert_after='is_zero_rated', + print_hide=1) + invoice_fields = [ dict(fieldname='vat_section', label='VAT Details', fieldtype='Section Break', insert_after='group_same_items', print_hide=1, collapsible=1), dict(fieldname='permit_no', label='Permit Number', fieldtype='Data', insert_after='vat_section', print_hide=1), - dict(fieldname='reverse_charge_applicable', label='Reverse Charge Applicable', - fieldtype='Select', insert_after='permit_no', print_hide=1, - options='Y\nN', default='N') ] purchase_invoice_fields = [ @@ -31,7 +37,16 @@ def make_custom_fields(): fetch_from='company.tax_id', print_hide=1), dict(fieldname='supplier_name_in_arabic', label='Supplier Name in Arabic', fieldtype='Read Only', insert_after='supplier_name', - fetch_from='supplier.supplier_name_in_arabic', print_hide=1) + fetch_from='supplier.supplier_name_in_arabic', print_hide=1), + dict(fieldname='recoverable_standard_rated_expenses', print_hide=1, default='0', + label='Recoverable Standard Rated Expenses (AED)', insert_after='permit_no', + fieldtype='Currency', ), + dict(fieldname='reverse_charge', label='Reverse Charge Applicable', + fieldtype='Select', insert_after='recoverable_standard_rated_expenses', print_hide=1, + options='Y\nN', default='N'), + dict(fieldname='recoverable_reverse_charge', label='Recoverable Reverse Charge (Percentage)', + insert_after='reverse_charge', fieldtype='Percent', print_hide=1, + depends_on="eval:doc.reverse_charge=='Y'", default='100.000'), ] sales_invoice_fields = [ @@ -41,6 +56,11 @@ def make_custom_fields(): dict(fieldname='customer_name_in_arabic', label='Customer Name in Arabic', fieldtype='Read Only', insert_after='customer_name', fetch_from='customer.customer_name_in_arabic', print_hide=1), + dict(fieldname='vat_emirate', label='VAT Emirate', insert_after='permit_no', fieldtype='Select', + options='\nAbu Dhabi\nAjman\nDubai\nFujairah\nRas Al Khaimah\nSharjah\nUmm Al Quwain', + fetch_from='company_address.emirate'), + dict(fieldname='tourist_tax_return', label='Tax Refund provided to Tourists (AED)', + insert_after='vat_emirate', fieldtype='Currency', print_hide=1, default='0'), ] invoice_item_fields = [ @@ -67,6 +87,12 @@ def make_custom_fields(): 'Item': [ dict(fieldname='tax_code', label='Tax Code', fieldtype='Data', insert_after='item_group'), + dict(fieldname='is_zero_rated', label='Is Zero Rated', + fieldtype='Check', insert_after='tax_code', + print_hide=1), + dict(fieldname='is_exempt', label='Is Exempt', + fieldtype='Check', insert_after='is_zero_rated', + print_hide=1) ], 'Customer': [ dict(fieldname='customer_name_in_arabic', label='Customer Name in Arabic', @@ -76,13 +102,17 @@ def make_custom_fields(): dict(fieldname='supplier_name_in_arabic', label='Supplier Name in Arabic', fieldtype='Data', insert_after='supplier_name'), ], + 'Address': [ + dict(fieldname='emirate', label='Emirate', fieldtype='Select', insert_after='state', + options='\nAbu Dhabi\nAjman\nDubai\nFujairah\nRas Al Khaimah\nSharjah\nUmm Al Quwain') + ], 'Purchase Invoice': purchase_invoice_fields + invoice_fields, 'Purchase Order': purchase_invoice_fields + invoice_fields, 'Purchase Receipt': purchase_invoice_fields + invoice_fields, 'Sales Invoice': sales_invoice_fields + invoice_fields, 'Sales Order': sales_invoice_fields + invoice_fields, 'Delivery Note': sales_invoice_fields + invoice_fields, - 'Sales Invoice Item': invoice_item_fields + delivery_date_field, + 'Sales Invoice Item': invoice_item_fields + delivery_date_field + [is_zero_rated, is_exempt], 'Purchase Invoice Item': invoice_item_fields, 'Sales Order Item': invoice_item_fields, 'Delivery Note Item': invoice_item_fields, @@ -101,3 +131,25 @@ def add_print_formats(): frappe.db.sql(""" update `tabPrint Format` set disabled = 0 where name in('Simplified Tax Invoice', 'Detailed Tax Invoice', 'Tax Invoice') """) + +def add_custom_roles_for_reports(): + """Add Access Control to UAE VAT 201.""" + if not frappe.db.get_value('Custom Role', dict(report='UAE VAT 201')): + frappe.get_doc(dict( + doctype='Custom Role', + report='UAE VAT 201', + roles= [ + dict(role='Accounts User'), + dict(role='Accounts Manager'), + dict(role='Auditor') + ] + )).insert() + +def add_permissions(): + """Add Permissions for UAE VAT Settings and UAE VAT Account.""" + for doctype in ('UAE VAT Settings', 'UAE VAT Account'): + add_permission(doctype, 'All', 0) + for role in ('Accounts Manager', 'Accounts User', 'System Manager'): + add_permission(doctype, role, 0) + update_permission_property(doctype, role, 0, 'write', 1) + update_permission_property(doctype, role, 0, 'create', 1) diff --git a/erpnext/regional/united_arab_emirates/utils.py b/erpnext/regional/united_arab_emirates/utils.py index a0425f6b1c..7d5fd6ecf8 100644 --- a/erpnext/regional/united_arab_emirates/utils.py +++ b/erpnext/regional/united_arab_emirates/utils.py @@ -1,6 +1,8 @@ from __future__ import unicode_literals import frappe -from frappe.utils import flt +from frappe import _ +import erpnext +from frappe.utils import flt, round_based_on_smallest_currency_fraction, money_in_words from erpnext.controllers.taxes_and_totals import get_itemised_tax from six import iteritems @@ -26,4 +28,134 @@ def update_itemised_tax_data(doc): row.tax_rate = flt(tax_rate, row.precision("tax_rate")) row.tax_amount = flt((row.net_amount * tax_rate) / 100, row.precision("net_amount")) - row.total_amount = flt((row.net_amount + row.tax_amount), row.precision("total_amount")) \ No newline at end of file + row.total_amount = flt((row.net_amount + row.tax_amount), row.precision("total_amount")) + +def get_account_currency(account): + """Helper function to get account currency.""" + if not account: + return + def generator(): + account_currency, company = frappe.get_cached_value( + "Account", + account, + ["account_currency", + "company"] + ) + if not account_currency: + account_currency = frappe.get_cached_value('Company', company, "default_currency") + + return account_currency + + return frappe.local_cache("account_currency", account, generator) + +def get_tax_accounts(company): + """Get the list of tax accounts for a specific company.""" + tax_accounts_dict = frappe._dict() + tax_accounts_list = frappe.get_all("UAE VAT Account", + filters={"parent": company}, + fields=["Account"] + ) + + if not tax_accounts_list and not frappe.flags.in_test: + frappe.throw(_('Please set Vat Accounts for Company: "{0}" in UAE VAT Settings').format(company)) + for tax_account in tax_accounts_list: + for account, name in tax_account.items(): + tax_accounts_dict[name] = name + + return tax_accounts_dict + +def update_grand_total_for_rcm(doc, method): + """If the Reverse Charge is Applicable subtract the tax amount from the grand total and update in the form.""" + country = frappe.get_cached_value('Company', doc.company, 'country') + + if country != 'United Arab Emirates': + return + + if not doc.total_taxes_and_charges: + return + + if doc.reverse_charge == 'Y': + tax_accounts = get_tax_accounts(doc.company) + + base_vat_tax = 0 + vat_tax = 0 + + for tax in doc.get('taxes'): + if tax.category not in ("Total", "Valuation and Total"): + continue + + if flt(tax.base_tax_amount_after_discount_amount) and tax.account_head in tax_accounts: + base_vat_tax += tax.base_tax_amount_after_discount_amount + vat_tax += tax.tax_amount_after_discount_amount + + doc.taxes_and_charges_added -= vat_tax + doc.total_taxes_and_charges -= vat_tax + doc.base_taxes_and_charges_added -= base_vat_tax + doc.base_total_taxes_and_charges -= base_vat_tax + + update_totals(vat_tax, base_vat_tax, doc) + +def update_totals(vat_tax, base_vat_tax, doc): + """Update the grand total values in the form.""" + doc.base_grand_total -= base_vat_tax + doc.grand_total -= vat_tax + + if doc.meta.get_field("rounded_total"): + + if doc.is_rounded_total_disabled(): + doc.outstanding_amount = doc.grand_total + + else: + doc.rounded_total = round_based_on_smallest_currency_fraction(doc.grand_total, + doc.currency, doc.precision("rounded_total")) + doc.rounding_adjustment = flt(doc.rounded_total - doc.grand_total, + doc.precision("rounding_adjustment")) + doc.outstanding_amount = doc.rounded_total or doc.grand_total + + doc.in_words = money_in_words(doc.grand_total, doc.currency) + doc.base_in_words = money_in_words(doc.base_grand_total, erpnext.get_company_currency(doc.company)) + doc.set_payment_schedule() + +def make_regional_gl_entries(gl_entries, doc): + """Hooked to make_regional_gl_entries in Purchase Invoice.It appends the region specific general ledger entries to the list of GL Entries.""" + country = frappe.get_cached_value('Company', doc.company, 'country') + + if country != 'United Arab Emirates': + return gl_entries + + if doc.reverse_charge == 'Y': + tax_accounts = get_tax_accounts(doc.company) + for tax in doc.get('taxes'): + if tax.category not in ("Total", "Valuation and Total"): + continue + gl_entries = make_gl_entry(tax, gl_entries, doc, tax_accounts) + return gl_entries + +def make_gl_entry(tax, gl_entries, doc, tax_accounts): + dr_or_cr = "credit" if tax.add_deduct_tax == "Add" else "debit" + if flt(tax.base_tax_amount_after_discount_amount) and tax.account_head in tax_accounts: + account_currency = get_account_currency(tax.account_head) + + gl_entries.append(doc.get_gl_dict({ + "account": tax.account_head, + "cost_center": tax.cost_center, + "posting_date": doc.posting_date, + "against": doc.supplier, + dr_or_cr: tax.base_tax_amount_after_discount_amount, + dr_or_cr + "_in_account_currency": tax.base_tax_amount_after_discount_amount \ + if account_currency==doc.company_currency \ + else tax.tax_amount_after_discount_amount + }, account_currency, item=tax + )) + return gl_entries + + +def validate_returns(doc, method): + """Standard Rated expenses should not be set when Reverse Charge Applicable is set.""" + country = frappe.get_cached_value('Company', doc.company, 'country') + if country != 'United Arab Emirates': + return + if doc.reverse_charge == 'Y' and flt(doc.recoverable_standard_rated_expenses) != 0: + frappe.throw(_( + "Recoverable Standard Rated expenses should not be set when Reverse Charge Applicable is Y" + )) diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js index 12f32602f5..661e107e1e 100644 --- a/erpnext/selling/doctype/quotation/quotation.js +++ b/erpnext/selling/doctype/quotation/quotation.js @@ -116,7 +116,7 @@ erpnext.selling.QuotationController = erpnext.selling.SellingController.extend({ company: me.frm.doc.company } }) - }, __("Get items from"), "btn-default"); + }, __("Get Items From"), "btn-default"); } this.toggle_reqd_lead_customer(); diff --git a/erpnext/selling/doctype/quotation/quotation.json b/erpnext/selling/doctype/quotation/quotation.json index 5b85187ccb..3eba62bc19 100644 --- a/erpnext/selling/doctype/quotation/quotation.json +++ b/erpnext/selling/doctype/quotation/quotation.json @@ -1,5 +1,6 @@ { "actions": [], + "allow_auto_repeat": 1, "allow_import": 1, "autoname": "naming_series:", "creation": "2013-05-24 19:29:08", @@ -932,7 +933,7 @@ "is_submittable": 1, "links": [], "max_attachments": 1, - "modified": "2020-07-26 17:46:19.951223", + "modified": "2020-10-30 13:58:59.212060", "modified_by": "Administrator", "module": "Selling", "name": "Quotation", diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js index 989bd33e42..d4fb07cc27 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.js +++ b/erpnext/selling/doctype/sales_order/sales_order.js @@ -8,7 +8,7 @@ frappe.ui.form.on("Sales Order", { frm.custom_make_buttons = { 'Delivery Note': 'Delivery Note', 'Pick List': 'Pick List', - 'Sales Invoice': 'Invoice', + 'Sales Invoice': 'Sales Invoice', 'Material Request': 'Material Request', 'Purchase Order': 'Purchase Order', 'Project': 'Project', @@ -236,7 +236,7 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend( status: ["!=", "Lost"] } }) - }, __("Get items from")); + }, __("Get Items From")); } this.order_type(doc); @@ -326,8 +326,7 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend( callback: function(r) { if(r.message) { frappe.msgprint({ - message: __('Work Orders Created: {0}', - [r.message.map(function(d) { + message: __('Work Orders Created: {0}', [r.message.map(function(d) { return repl('%(name)s', {name:d}) }).join(', ')]), indicator: 'green' @@ -572,12 +571,6 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend( "fieldname": "against_default_supplier", "default": 0 }, - { - "fieldtype": "Section Break", - "label": "", - "fieldname": "sec_break_dialog", - "hide_border": 1 - }, { fieldname: 'items_for_po', fieldtype: 'Table', label: 'Select Items', fields: [ @@ -616,16 +609,13 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend( read_only:1, in_list_view:1 }, - ], - data: me.frm.doc.items.map((item) =>{ - item.pending_qty = (flt(item.stock_qty) - flt(item.ordered_qty)) / flt(item.conversion_factor); - return item; - }).filter((item) => {return item.pending_qty > 0;}) + ] } ], primary_action_label: 'Create Purchase Order', primary_action (args) { if (!args) return; + let selected_items = dialog.fields_dict.items_for_po.grid.get_selected_children(); if(selected_items.length == 0) { frappe.throw({message: 'Please select Items from the Table', title: __('Items Required'), indicator:'blue'}) @@ -635,8 +625,9 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend( var method = args.against_default_supplier ? "make_purchase_order_for_default_supplier" : "make_purchase_order" return frappe.call({ - type: "GET", method: "erpnext.selling.doctype.sales_order.sales_order." + method, + freeze: true, + freeze_message: __("Creating Purchase Order ..."), args: { "source_name": me.frm.doc.name, "selected_items": selected_items @@ -660,8 +651,9 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend( } }); - dialog.fields_dict["against_default_supplier"].df.onchange = () => { - console.log("yo"); + dialog.fields_dict["against_default_supplier"].df.onchange = () => set_po_items_data(dialog); + + function set_po_items_data (dialog) { var against_default_supplier = dialog.get_value("against_default_supplier"); var items_for_po = dialog.get_value("items_for_po"); @@ -671,16 +663,28 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend( dialog.fields_dict["items_for_po"].df.data = items_with_supplier; dialog.get_field("items_for_po").refresh(); } else { - let pending_items = me.frm.doc.items.map((item) =>{ - item.pending_qty = (flt(item.stock_qty) - flt(item.ordered_qty)) / flt(item.conversion_factor); - return item; - }).filter((item) => {return item.pending_qty > 0;}); + let po_items = []; + me.frm.doc.items.forEach(d => { + let pending_qty = (flt(d.stock_qty) - flt(d.ordered_qty)) / flt(d.conversion_factor); + if (pending_qty > 0) { + po_items.push({ + "doctype": "Sales Order Item", + "name": d.name, + "item_name": d.item_name, + "item_code": d.item_code, + "pending_qty": pending_qty, + "uom": d.uom, + "supplier": d.supplier + }); + } + }); - dialog.fields_dict["items_for_po"].df.data = pending_items; + dialog.fields_dict["items_for_po"].df.data = po_items; dialog.get_field("items_for_po").refresh(); } } + set_po_items_data(dialog); dialog.get_field("items_for_po").grid.only_sortable(); dialog.get_field("items_for_po").refresh(); dialog.wrapper.find('.grid-heading-row .grid-row-check').click(); diff --git a/erpnext/selling/doctype/sales_order/sales_order.json b/erpnext/selling/doctype/sales_order/sales_order.json index 77c1787c26..3d64ac3780 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.json +++ b/erpnext/selling/doctype/sales_order/sales_order.json @@ -1,5 +1,6 @@ { "actions": [], + "allow_auto_repeat": 1, "allow_import": 1, "autoname": "naming_series:", "creation": "2013-06-18 12:39:59", @@ -1460,7 +1461,7 @@ "idx": 105, "is_submittable": 1, "links": [], - "modified": "2020-10-07 14:30:01.782617", + "modified": "2020-10-30 13:59:18.628077", "modified_by": "Administrator", "module": "Selling", "name": "Sales Order", diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index ae227e0110..04d85e575c 100755 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -779,7 +779,9 @@ def get_events(start, end, filters=None): return data @frappe.whitelist() -def make_purchase_order_for_default_supplier(source_name, selected_items=[], target_doc=None): +def make_purchase_order_for_default_supplier(source_name, selected_items=None, target_doc=None): + if not selected_items: return + if isinstance(selected_items, string_types): selected_items = json.loads(selected_items) @@ -842,7 +844,8 @@ def make_purchase_order_for_default_supplier(source_name, selected_items=[], tar "contact_email", "contact_person", "taxes_and_charges", - "shipping_address" + "shipping_address", + "terms" ], "validation": { "docstatus": ["=", 1] @@ -861,7 +864,10 @@ def make_purchase_order_for_default_supplier(source_name, selected_items=[], tar "field_no_map": [ "rate", "price_list_rate", - "item_tax_template" + "item_tax_template", + "discount_percentage", + "discount_amount", + "pricing_rules" ], "postprocess": update_item, "condition": lambda doc: doc.ordered_qty < doc.stock_qty and doc.supplier == supplier and doc.item_code in items_to_map @@ -878,7 +884,9 @@ def make_purchase_order_for_default_supplier(source_name, selected_items=[], tar frappe.msgprint(_("Purchase Order already created for all Sales Order items")) @frappe.whitelist() -def make_purchase_order(source_name, selected_items=[], target_doc=None): +def make_purchase_order(source_name, selected_items=None, target_doc=None): + if not selected_items: return + if isinstance(selected_items, string_types): selected_items = json.loads(selected_items) @@ -913,7 +921,8 @@ def make_purchase_order(source_name, selected_items=[], target_doc=None): "contact_email", "contact_person", "taxes_and_charges", - "shipping_address" + "shipping_address", + "terms" ], "validation": { "docstatus": ["=", 1] @@ -933,7 +942,10 @@ def make_purchase_order(source_name, selected_items=[], target_doc=None): "rate", "price_list_rate", "item_tax_template", - "supplier" + "discount_percentage", + "discount_amount", + "supplier", + "pricing_rules" ], "postprocess": update_item, "condition": lambda doc: doc.ordered_qty < doc.stock_qty and doc.item_code in items_to_map diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py index a33d401b57..643e7cf38b 100644 --- a/erpnext/selling/doctype/sales_order/test_sales_order.py +++ b/erpnext/selling/doctype/sales_order/test_sales_order.py @@ -1064,6 +1064,7 @@ def make_sales_order(**args): so.company = args.company or "_Test Company" so.customer = args.customer or "_Test Customer" so.currency = args.currency or "INR" + so.po_no = args.po_no or '12345' if args.selling_price_list: so.selling_price_list = args.selling_price_list diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.py b/erpnext/selling/page/point_of_sale/point_of_sale.py index a690050f79..062cba19e6 100644 --- a/erpnext/selling/page/point_of_sale/point_of_sale.py +++ b/erpnext/selling/page/point_of_sale/point_of_sale.py @@ -62,6 +62,7 @@ def get_items(start, page_length, price_list, item_group, pos_profile, search_va `tabItem` item {bin_join_selection} WHERE item.disabled = 0 + AND item.is_stock_item = 1 AND item.has_variants = 0 AND item.is_sales_item = 1 AND item.is_fixed_asset = 0 diff --git a/erpnext/selling/page/point_of_sale/pos_controller.js b/erpnext/selling/page/point_of_sale/pos_controller.js index f7d1fa4ded..ad1633e71d 100644 --- a/erpnext/selling/page/point_of_sale/pos_controller.js +++ b/erpnext/selling/page/point_of_sale/pos_controller.js @@ -555,6 +555,8 @@ erpnext.PointOfSale.Controller = class { frappe.utils.play_sound("error"); return; } + if (!item_code) return; + item_selected_from_selector && (value = flt(value)) const args = { item_code, batch_no, [field]: value }; @@ -642,8 +644,7 @@ erpnext.PointOfSale.Controller = class { }) } else if (available_qty < qty_needed) { frappe.show_alert({ - message: __('Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.', - [bold_item_code, bold_warehouse, bold_available_qty]), + message: __('Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.', [bold_item_code, bold_warehouse, bold_available_qty]), indicator: 'orange' }); frappe.utils.play_sound("error"); diff --git a/erpnext/selling/page/point_of_sale/pos_item_details.js b/erpnext/selling/page/point_of_sale/pos_item_details.js index 9874d1b5f9..a4de9f165d 100644 --- a/erpnext/selling/page/point_of_sale/pos_item_details.js +++ b/erpnext/selling/page/point_of_sale/pos_item_details.js @@ -372,12 +372,13 @@ erpnext.PointOfSale.ItemDetails = class { this.$form_container.on('click', '.auto-fetch-btn', () => { this.batch_no_control && this.batch_no_control.set_value(''); let qty = this.qty_control.get_value(); + let conversion_factor = this.conversion_factor_control.get_value(); let expiry_date = this.item_row.has_batch_no ? this.events.get_frm().doc.posting_date : ""; let numbers = frappe.call({ method: "erpnext.stock.doctype.serial_no.serial_no.auto_fetch_serial_number", args: { - qty, + qty: qty * conversion_factor, item_code: this.current_item.item_code, warehouse: this.warehouse_control.get_value() || '', batch_nos: this.current_item.batch_no || '', diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js index 002cfe41e1..7f00fca8f0 100644 --- a/erpnext/selling/sales_common.js +++ b/erpnext/selling/sales_common.js @@ -42,16 +42,6 @@ erpnext.selling.SellingController = erpnext.TransactionController.extend({ me.frm.set_query('customer_address', erpnext.queries.address_query); me.frm.set_query('shipping_address_name', erpnext.queries.address_query); - if(this.frm.fields_dict.taxes_and_charges) { - this.frm.set_query("taxes_and_charges", function() { - return { - filters: [ - ['Sales Taxes and Charges Template', 'company', '=', me.frm.doc.company], - ['Sales Taxes and Charges Template', 'docstatus', '!=', 2] - ] - } - }); - } if(this.frm.fields_dict.selling_price_list) { this.frm.set_query("selling_price_list", function() { @@ -479,7 +469,7 @@ frappe.ui.form.on(cur_frm.doctype,"project", function(frm) { $.each(frm.doc["items"] || [], function(i, row) { if(r.message) { frappe.model.set_value(row.doctype, row.name, "cost_center", r.message); - frappe.msgprint(__("Cost Center For Item with Item Code '"+row.item_name+"' has been Changed to "+ r.message)); + frappe.msgprint(__("Cost Center For Item with Item Code {0} has been Changed to {1}", [row.item_name, r.message])); } }) } diff --git a/erpnext/setup/desk_page/home/home.json b/erpnext/setup/desk_page/home/home.json index 9cf9f41907..0fbd0eccda 100644 --- a/erpnext/setup/desk_page/home/home.json +++ b/erpnext/setup/desk_page/home/home.json @@ -1,25 +1,5 @@ { "cards": [ - { - "hidden": 0, - "label": "Healthcare", - "links": "[\n {\n \"label\": \"Patient\",\n \"name\": \"Patient\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Diagnosis\",\n \"name\": \"Diagnosis\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n }\n]" - }, - { - "hidden": 0, - "label": "Agriculture", - "links": "[\n {\n \"label\": \"Crop\",\n \"name\": \"Crop\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Crop Cycle\",\n \"name\": \"Crop Cycle\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Location\",\n \"name\": \"Location\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Fertilizer\",\n \"name\": \"Fertilizer\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n }\n]" - }, - { - "hidden": 0, - "label": "Education", - "links": "[\n {\n \"label\": \"Student\",\n \"name\": \"Student\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Course\",\n \"name\": \"Course\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Instructor\",\n \"name\": \"Instructor\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Room\",\n \"name\": \"Room\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n }\n]" - }, - { - "hidden": 0, - "label": "Non Profit", - "links": "[\n {\n \"description\": \"Member information.\",\n \"label\": \"Member\",\n \"name\": \"Member\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Volunteer information.\",\n \"label\": \"Volunteer\",\n \"name\": \"Volunteer\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Chapter information.\",\n \"label\": \"Chapter\",\n \"name\": \"Chapter\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Donor information.\",\n \"label\": \"Donor\",\n \"name\": \"Donor\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n }\n]" - }, { "hidden": 0, "label": "Stock", @@ -54,10 +34,11 @@ "docstatus": 0, "doctype": "Desk Page", "extends_another_page": 0, + "hide_custom": 0, "idx": 0, "is_standard": 1, "label": "Home", - "modified": "2020-05-11 10:20:37.358701", + "modified": "2020-12-07 14:22:38.667767", "modified_by": "Administrator", "module": "Setup", "name": "Home", @@ -96,4 +77,4 @@ "type": "Page" } ] -} \ No newline at end of file +} diff --git a/erpnext/setup/doctype/company/company.js b/erpnext/setup/doctype/company/company.js index f882db60c5..cbf67b4cd6 100644 --- a/erpnext/setup/doctype/company/company.js +++ b/erpnext/setup/doctype/company/company.js @@ -90,29 +90,41 @@ frappe.ui.form.on("Company", { frm.toggle_enable("default_currency", (frm.doc.__onload && !frm.doc.__onload.transactions_exist)); - frm.add_custom_button(__('Create Tax Template'), function() { - frm.trigger("make_default_tax_template"); - }); + if (frm.has_perm('write')) { + frm.add_custom_button(__('Create Tax Template'), function() { + frm.trigger("make_default_tax_template"); + }); + } - frm.add_custom_button(__('Cost Centers'), function() { - frappe.set_route('Tree', 'Cost Center', {'company': frm.doc.name}) - }, __("View")); + if (frappe.perm.has_perm("Cost Center", 0, 'read')) { + frm.add_custom_button(__('Cost Centers'), function() { + frappe.set_route('Tree', 'Cost Center', {'company': frm.doc.name}); + }, __("View")); + } - frm.add_custom_button(__('Chart of Accounts'), function() { - frappe.set_route('Tree', 'Account', {'company': frm.doc.name}) - }, __("View")); + if (frappe.perm.has_perm("Account", 0, 'read')) { + frm.add_custom_button(__('Chart of Accounts'), function() { + frappe.set_route('Tree', 'Account', {'company': frm.doc.name}); + }, __("View")); + } - frm.add_custom_button(__('Sales Tax Template'), function() { - frappe.set_route('List', 'Sales Taxes and Charges Template', {'company': frm.doc.name}); - }, __("View")); + if (frappe.perm.has_perm("Sales Taxes and Charges Template", 0, 'read')) { + frm.add_custom_button(__('Sales Tax Template'), function() { + frappe.set_route('List', 'Sales Taxes and Charges Template', {'company': frm.doc.name}); + }, __("View")); + } - frm.add_custom_button(__('Purchase Tax Template'), function() { - frappe.set_route('List', 'Purchase Taxes and Charges Template', {'company': frm.doc.name}); - }, __("View")); + if (frappe.perm.has_perm("Purchase Taxes and Charges Template", 0, 'read')) { + frm.add_custom_button(__('Purchase Tax Template'), function() { + frappe.set_route('List', 'Purchase Taxes and Charges Template', {'company': frm.doc.name}); + }, __("View")); + } - frm.add_custom_button(__('Default Tax Template'), function() { - frm.trigger("make_default_tax_template"); - }, __('Create')); + if (frm.has_perm('write')) { + frm.add_custom_button(__('Default Tax Template'), function() { + frm.trigger("make_default_tax_template"); + }, __('Create')); + } } erpnext.company.set_chart_of_accounts_options(frm.doc); diff --git a/erpnext/setup/doctype/company/delete_company_transactions.py b/erpnext/setup/doctype/company/delete_company_transactions.py index c94831ef93..566f20cfa1 100644 --- a/erpnext/setup/doctype/company/delete_company_transactions.py +++ b/erpnext/setup/doctype/company/delete_company_transactions.py @@ -27,7 +27,8 @@ def delete_company_transactions(company_name): if doctype not in ("Account", "Cost Center", "Warehouse", "Budget", "Party Account", "Employee", "Sales Taxes and Charges Template", "Purchase Taxes and Charges Template", "POS Profile", "BOM", - "Company", "Bank Account"): + "Company", "Bank Account", "Item Tax Template", "Mode Of Payment", + "Item Default"): delete_for_doctype(doctype, company_name) # reset company values diff --git a/erpnext/setup/doctype/email_digest/email_digest.py b/erpnext/setup/doctype/email_digest/email_digest.py index b30bd7814b..cbb4c7c5de 100644 --- a/erpnext/setup/doctype/email_digest/email_digest.py +++ b/erpnext/setup/doctype/email_digest/email_digest.py @@ -48,12 +48,8 @@ class EmailDigest(Document): recipients = list(filter(lambda r: r in valid_users, self.recipient_list.split("\n"))) - original_user = frappe.session.user - if recipients: for user_id in recipients: - frappe.set_user(user_id) - frappe.set_user_lang(user_id) msg_for_this_recipient = self.get_msg_html() if msg_for_this_recipient: frappe.sendmail( @@ -64,9 +60,6 @@ class EmailDigest(Document): reference_name = self.name, unsubscribe_message = _("Unsubscribe from this Email Digest")) - frappe.set_user(original_user) - frappe.set_user_lang(original_user) - def get_msg_html(self): """Build email digest content""" frappe.flags.ignore_account_permission = True diff --git a/erpnext/setup/doctype/sales_person/sales_person.js b/erpnext/setup/doctype/sales_person/sales_person.js index 8f7593d6ee..b71a92f8a9 100644 --- a/erpnext/setup/doctype/sales_person/sales_person.js +++ b/erpnext/setup/doctype/sales_person/sales_person.js @@ -5,8 +5,7 @@ frappe.ui.form.on('Sales Person', { refresh: function(frm) { if(frm.doc.__onload && frm.doc.__onload.dashboard_info) { var info = frm.doc.__onload.dashboard_info; - frm.dashboard.add_indicator(__('Total Contribution Amount: {0}', - [format_currency(info.allocated_amount, info.currency)]), 'blue'); + frm.dashboard.add_indicator(__('Total Contribution Amount: {0}', [format_currency(info.allocated_amount, info.currency)]), 'blue'); } }, diff --git a/erpnext/shopping_cart/cart.py b/erpnext/shopping_cart/cart.py index 0ccc0252c3..c2549fe7dd 100644 --- a/erpnext/shopping_cart/cart.py +++ b/erpnext/shopping_cart/cart.py @@ -345,7 +345,7 @@ def _set_price_list(cart_settings, quotation=None): selling_price_list = None # check if default customer price list exists - if party_name: + if party_name and frappe.db.exists("Customer", party_name): selling_price_list = get_default_price_list(frappe.get_doc("Customer", party_name)) # check default price list in shopping cart diff --git a/erpnext/stock/desk_page/stock/stock.json b/erpnext/stock/desk_page/stock/stock.json index 390fcd91e3..9068e338c3 100644 --- a/erpnext/stock/desk_page/stock/stock.json +++ b/erpnext/stock/desk_page/stock/stock.json @@ -8,7 +8,7 @@ { "hidden": 0, "label": "Stock Transactions", - "links": "[\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"label\": \"Material Request\",\n \"name\": \"Material Request\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"label\": \"Stock Entry\",\n \"name\": \"Stock Entry\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\",\n \"Customer\"\n ],\n \"label\": \"Delivery Note\",\n \"name\": \"Delivery Note\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\",\n \"Supplier\"\n ],\n \"label\": \"Purchase Receipt\",\n \"name\": \"Purchase Receipt\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"label\": \"Pick List\",\n \"name\": \"Pick List\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Delivery Trip\",\n \"name\": \"Delivery Trip\",\n \"type\": \"doctype\"\n }\n]" + "links": "[\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"label\": \"Material Request\",\n \"name\": \"Material Request\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"label\": \"Stock Entry\",\n \"name\": \"Stock Entry\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\",\n \"Customer\"\n ],\n \"label\": \"Delivery Note\",\n \"name\": \"Delivery Note\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\",\n \"Supplier\"\n ],\n \"label\": \"Purchase Receipt\",\n \"name\": \"Purchase Receipt\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"label\": \"Pick List\",\n \"name\": \"Pick List\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Shipment\",\n \"name\": \"Shipment\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Delivery Trip\",\n \"name\": \"Delivery Trip\",\n \"type\": \"doctype\"\n }\n]" }, { "hidden": 0, @@ -58,7 +58,7 @@ "idx": 0, "is_standard": 1, "label": "Stock", - "modified": "2020-10-07 18:40:17.130207", + "modified": "2020-12-02 15:47:41.532942", "modified_by": "Administrator", "module": "Stock", "name": "Stock", diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js index 19d0bec26c..03921c554e 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.js +++ b/erpnext/stock/doctype/delivery_note/delivery_note.js @@ -151,11 +151,16 @@ erpnext.stock.DeliveryNoteController = erpnext.selling.SellingController.extend( project: me.frm.doc.project || undefined, } }) - }, __("Get items from")); + }, __("Get Items From")); } } if (!doc.is_return && doc.status!="Closed") { + if(doc.docstatus == 1) { + this.frm.add_custom_button(__('Shipment'), function() { + me.make_shipment() }, __('Create')); + } + if(flt(doc.per_installed, 2) < 100 && doc.docstatus==1) this.frm.add_custom_button(__('Installation Note'), function() { me.make_installation_note() }, __('Create')); @@ -220,6 +225,13 @@ erpnext.stock.DeliveryNoteController = erpnext.selling.SellingController.extend( } }, + make_shipment: function() { + frappe.model.open_mapped_doc({ + method: "erpnext.stock.doctype.delivery_note.delivery_note.make_shipment", + frm: this.frm + }) + }, + make_sales_invoice: function() { frappe.model.open_mapped_doc({ method: "erpnext.stock.doctype.delivery_note.delivery_note.make_sales_invoice", diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.json b/erpnext/stock/doctype/delivery_note/delivery_note.json index ea385c8b2a..c9f8d0810e 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.json +++ b/erpnext/stock/doctype/delivery_note/delivery_note.json @@ -1,5 +1,6 @@ { "actions": [], + "allow_auto_repeat": 1, "allow_import": 1, "autoname": "naming_series:", "creation": "2013-05-24 19:29:09", @@ -132,6 +133,7 @@ "per_installed", "installation_status", "column_break_89", + "per_returned", "excise_page", "instructions", "subscription_section", @@ -413,7 +415,8 @@ { "fieldname": "company_address_display", "fieldtype": "Small Text", - "label": "Company Address" + "label": "Company Address", + "read_only": 1 }, { "collapsible": 1, @@ -1097,7 +1100,7 @@ "no_copy": 1, "oldfieldname": "status", "oldfieldtype": "Select", - "options": "\nDraft\nTo Bill\nCompleted\nCancelled\nClosed", + "options": "\nDraft\nTo Bill\nCompleted\nReturn Issued\nCancelled\nClosed", "print_hide": 1, "print_width": "150px", "read_only": 1, @@ -1249,13 +1252,22 @@ "fieldtype": "Link", "label": "Inter Company Reference", "options": "Purchase Receipt" + }, + { + "depends_on": "eval:!doc.__islocal", + "fieldname": "per_returned", + "fieldtype": "Percent", + "label": "% Returned", + "no_copy": 1, + "print_hide": 1, + "read_only": 1 } ], "icon": "fa fa-truck", "idx": 146, "is_submittable": 1, "links": [], - "modified": "2020-08-03 23:18:47.739997", + "modified": "2020-11-30 12:54:45.407289", "modified_by": "Administrator", "module": "Stock", "name": "Delivery Note", diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py index d04cf785ab..3f3407e350 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.py +++ b/erpnext/stock/doctype/delivery_note/delivery_note.py @@ -55,7 +55,7 @@ class DeliveryNote(SellingController): 'no_allowance': 1 }] if cint(self.is_return): - self.status_updater.append({ + self.status_updater.extend([{ 'source_dt': 'Delivery Note Item', 'target_dt': 'Sales Order Item', 'join_field': 'so_detail', @@ -69,7 +69,19 @@ class DeliveryNote(SellingController): where name=`tabDelivery Note Item`.parent and is_return=1)""", 'second_source_extra_cond': """ and exists (select name from `tabSales Invoice` where name=`tabSales Invoice Item`.parent and is_return=1 and update_stock=1)""" - }) + }, + { + 'source_dt': 'Delivery Note Item', + 'target_dt': 'Delivery Note Item', + 'join_field': 'dn_detail', + 'target_field': 'returned_qty', + 'target_parent_dt': 'Delivery Note', + 'target_parent_field': 'per_returned', + 'target_ref_field': 'stock_qty', + 'source_field': '-1 * stock_qty', + 'percent_join_field_parent': 'return_against' + } + ]) def before_print(self): def toggle_print_hide(meta, fieldname): @@ -569,6 +581,62 @@ def make_packing_slip(source_name, target_doc=None): return doclist +@frappe.whitelist() +def make_shipment(source_name, target_doc=None): + def postprocess(source, target): + user = frappe.db.get_value("User", frappe.session.user, ['email', 'full_name', 'phone', 'mobile_no'], as_dict=1) + target.pickup_contact_email = user.email + pickup_contact_display = '{}'.format(user.full_name) + if user: + if user.email: + pickup_contact_display += '
' + user.email + if user.phone: + pickup_contact_display += '
' + user.phone + if user.mobile_no and not user.phone: + pickup_contact_display += '
' + user.mobile_no + target.pickup_contact = pickup_contact_display + + contact = frappe.db.get_value("Contact", source.contact_person, ['email_id', 'phone', 'mobile_no'], as_dict=1) + delivery_contact_display = '{}'.format(source.contact_display) + if contact: + if contact.email_id: + delivery_contact_display += '
' + contact.email_id + if contact.phone: + delivery_contact_display += '
' + contact.phone + if contact.mobile_no and not contact.phone: + delivery_contact_display += '
' + contact.mobile_no + target.delivery_contact = delivery_contact_display + + doclist = get_mapped_doc("Delivery Note", source_name, { + "Delivery Note": { + "doctype": "Shipment", + "field_map": { + "grand_total": "value_of_goods", + "company": "pickup_company", + "company_address": "pickup_address_name", + "company_address_display": "pickup_address", + "address_display": "delivery_address", + "customer": "delivery_customer", + "shipping_address_name": "delivery_address_name", + "contact_person": "delivery_contact_name", + "contact_email": "delivery_contact_email" + }, + "validation": { + "docstatus": ["=", 1] + } + }, + "Delivery Note Item": { + "doctype": "Shipment Delivery Note", + "field_map": { + "name": "prevdoc_detail_docname", + "parent": "prevdoc_docname", + "parenttype": "prevdoc_doctype", + "base_amount": "grand_total" + } + } + }, target_doc, postprocess) + + return doclist @frappe.whitelist() def make_sales_return(source_name, target_doc=None): diff --git a/erpnext/stock/doctype/delivery_note/delivery_note_list.js b/erpnext/stock/doctype/delivery_note/delivery_note_list.js index 0ae7c37b3f..4a6500cfd8 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note_list.js +++ b/erpnext/stock/doctype/delivery_note/delivery_note_list.js @@ -6,9 +6,11 @@ frappe.listview_settings['Delivery Note'] = { return [__("Return"), "darkgrey", "is_return,=,Yes"]; } else if (doc.status === "Closed") { return [__("Closed"), "green", "status,=,Closed"]; + } else if (flt(doc.per_returned, 2) === 100) { + return [__("Return Issued"), "grey", "per_returned,=,100"]; } else if (flt(doc.per_billed, 2) < 100) { return [__("To Bill"), "orange", "per_billed,<,100"]; - } else if (flt(doc.per_billed, 2) == 100) { + } else if (flt(doc.per_billed, 2) === 100) { return [__("Completed"), "green", "per_billed,=,100"]; } }, diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py index 0168613415..6b4663a688 100644 --- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py +++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py @@ -206,7 +206,7 @@ class TestDeliveryNote(unittest.TestCase): for field, value in field_values.items(): self.assertEqual(cstr(serial_no.get(field)), value) - def test_sales_return_for_non_bundled_items(self): + def test_sales_return_for_non_bundled_items_partial(self): company = frappe.db.get_value('Warehouse', 'Stores - TCP1', 'company') make_stock_entry(item_code="_Test Item", target="Stores - TCP1", qty=50, basic_rate=100) @@ -225,7 +225,10 @@ class TestDeliveryNote(unittest.TestCase): # return entry dn1 = create_delivery_note(is_return=1, return_against=dn.name, qty=-2, rate=500, - company=company, warehouse="Stores - TCP1", expense_account="Cost of Goods Sold - TCP1", cost_center="Main - TCP1") + company=company, warehouse="Stores - TCP1", expense_account="Cost of Goods Sold - TCP1", + cost_center="Main - TCP1", do_not_submit=1) + dn1.items[0].dn_detail = dn.items[0].name + dn1.submit() actual_qty_2 = get_qty_after_transaction(warehouse="Stores - TCP1") @@ -243,6 +246,70 @@ class TestDeliveryNote(unittest.TestCase): self.assertEqual(gle_warehouse_amount, stock_value_difference) + # hack because new_doc isn't considering is_return portion of status_updater + returned = frappe.get_doc("Delivery Note", dn1.name) + returned.update_prevdoc_status() + dn.load_from_db() + + # Check if Original DN updated + self.assertEqual(dn.items[0].returned_qty, 2) + self.assertEqual(dn.per_returned, 40) + + from erpnext.controllers.sales_and_purchase_return import make_return_doc + return_dn_2 = make_return_doc("Delivery Note", dn.name) + + # Check if unreturned amount is mapped in 2nd return + self.assertEqual(return_dn_2.items[0].qty, -3) + + si = make_sales_invoice(dn.name) + si.submit() + + self.assertEqual(si.items[0].qty, 3) + + dn.load_from_db() + # DN should be completed on billing all unreturned amount + self.assertEqual(dn.items[0].billed_amt, 1500) + self.assertEqual(dn.per_billed, 100) + self.assertEqual(dn.status, 'Completed') + + si.load_from_db() + si.cancel() + + dn.load_from_db() + self.assertEqual(dn.per_billed, 0) + + dn1.cancel() + dn.cancel() + + def test_sales_return_for_non_bundled_items_full(self): + from erpnext.stock.doctype.item.test_item import make_item + + company = frappe.db.get_value('Warehouse', 'Stores - TCP1', 'company') + + make_item("Box", {'is_stock_item': 1}) + + make_stock_entry(item_code="Box", target="Stores - TCP1", qty=10, basic_rate=100) + + dn = create_delivery_note(item_code="Box", qty=5, rate=500, warehouse="Stores - TCP1", company=company, + expense_account="Cost of Goods Sold - TCP1", cost_center="Main - TCP1") + + #return entry + dn1 = create_delivery_note(item_code="Box", is_return=1, return_against=dn.name, qty=-5, rate=500, + company=company, warehouse="Stores - TCP1", expense_account="Cost of Goods Sold - TCP1", + cost_center="Main - TCP1", do_not_submit=1) + dn1.items[0].dn_detail = dn.items[0].name + dn1.submit() + + # hack because new_doc isn't considering is_return portion of status_updater + returned = frappe.get_doc("Delivery Note", dn1.name) + returned.update_prevdoc_status() + dn.load_from_db() + + # Check if Original DN updated + self.assertEqual(dn.items[0].returned_qty, 5) + self.assertEqual(dn.per_returned, 100) + self.assertEqual(dn.status, 'Return Issued') + def test_return_single_item_from_bundled_items(self): company = frappe.db.get_value('Warehouse', 'Stores - TCP1', 'company') @@ -442,9 +509,15 @@ class TestDeliveryNote(unittest.TestCase): self.assertEqual(dn.status, "To Bill") self.assertEqual(dn.per_billed, 0) + # Testing if Customer's Purchase Order No was rightly copied + self.assertEqual(dn.po_no, so.po_no) + si = make_sales_invoice(dn.name) si.submit() + # Testing if Customer's Purchase Order No was rightly copied + self.assertEqual(dn.po_no, si.po_no) + dn.load_from_db() self.assertEqual(dn.get("items")[0].billed_amt, 200) self.assertEqual(dn.per_billed, 100) @@ -461,16 +534,25 @@ class TestDeliveryNote(unittest.TestCase): si.insert() si.submit() + # Testing if Customer's Purchase Order No was rightly copied + self.assertEqual(so.po_no, si.po_no) + frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1) dn1 = make_delivery_note(so.name) dn1.get("items")[0].qty = 2 dn1.submit() + # Testing if Customer's Purchase Order No was rightly copied + self.assertEqual(so.po_no, dn1.po_no) + dn2 = make_delivery_note(so.name) dn2.get("items")[0].qty = 3 dn2.submit() + # Testing if Customer's Purchase Order No was rightly copied + self.assertEqual(so.po_no, dn2.po_no) + dn1.load_from_db() self.assertEqual(dn1.get("items")[0].billed_amt, 200) self.assertEqual(dn1.per_billed, 100) @@ -492,9 +574,15 @@ class TestDeliveryNote(unittest.TestCase): dn1.get("items")[0].qty = 2 dn1.submit() + # Testing if Customer's Purchase Order No was rightly copied + self.assertEqual(dn1.po_no, so.po_no) + si1 = make_sales_invoice(dn1.name) si1.submit() + # Testing if Customer's Purchase Order No was rightly copied + self.assertEqual(dn1.po_no, si1.po_no) + dn1.load_from_db() self.assertEqual(dn1.per_billed, 100) @@ -502,10 +590,16 @@ class TestDeliveryNote(unittest.TestCase): si2.get("items")[0].qty = 4 si2.submit() + # Testing if Customer's Purchase Order No was rightly copied + self.assertEqual(si2.po_no, so.po_no) + dn2 = make_delivery_note(so.name) dn2.get("items")[0].qty = 5 dn2.submit() + # Testing if Customer's Purchase Order No was rightly copied + self.assertEqual(dn2.po_no, so.po_no) + dn1.load_from_db() self.assertEqual(dn1.get("items")[0].billed_amt, 200) self.assertEqual(dn1.per_billed, 100) @@ -525,9 +619,15 @@ class TestDeliveryNote(unittest.TestCase): si = make_sales_invoice(so.name) si.submit() + # Testing if Customer's Purchase Order No was rightly copied + self.assertEqual(so.po_no, si.po_no) + dn = make_delivery_note(si.name) dn.submit() + # Testing if Customer's Purchase Order No was rightly copied + self.assertEqual(dn.po_no, si.po_no) + self.assertEqual(dn.get("items")[0].billed_amt, 1000) self.assertEqual(dn.per_billed, 100) self.assertEqual(dn.status, "Completed") diff --git a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json index 3d57f47601..7b471874af 100644 --- a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json +++ b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json @@ -1,4 +1,5 @@ { + "actions": [], "autoname": "hash", "creation": "2013-04-22 13:15:44", "doctype": "DocType", @@ -24,7 +25,10 @@ "col_break2", "uom", "conversion_factor", + "stock_qty_sec_break", "stock_qty", + "stock_qty_col_break", + "returned_qty", "section_break_17", "price_list_rate", "base_price_list_rate", @@ -211,7 +215,7 @@ { "fieldname": "stock_qty", "fieldtype": "Float", - "label": "Qty as per Stock UOM", + "label": "Qty in Stock UOM", "no_copy": 1, "print_hide": 1, "read_only": 1 @@ -715,12 +719,29 @@ "no_copy": 1, "print_hide": 1, "read_only": 1 + }, + { + "fieldname": "stock_qty_sec_break", + "fieldtype": "Section Break" + }, + { + "fieldname": "stock_qty_col_break", + "fieldtype": "Column Break" + }, + { + "depends_on": "returned_qty", + "fieldname": "returned_qty", + "fieldtype": "Float", + "label": "Returned Qty in Stock UOM", + "no_copy": 1, + "print_hide": 1, + "read_only": 1 } ], "idx": 1, "istable": 1, "links": [], - "modified": "2020-07-20 12:25:06.177894", + "modified": "2020-07-31 20:12:43.054342", "modified_by": "Administrator", "module": "Stock", "name": "Delivery Note Item", diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py index 3b62c38b86..be845d9d9d 100644 --- a/erpnext/stock/doctype/item/item.py +++ b/erpnext/stock/doctype/item/item.py @@ -977,15 +977,20 @@ class Item(WebsiteGenerator): # For "Is Stock Item", following doctypes is important # because reserved_qty, ordered_qty and requested_qty updated from these doctypes if field == "is_stock_item": - linked_doctypes += ["Sales Order Item", "Purchase Order Item", "Material Request Item"] + linked_doctypes += ["Sales Order Item", "Purchase Order Item", "Material Request Item", "Product Bundle"] for doctype in linked_doctypes: + filters={"item_code": self.name, "docstatus": 1} + + if doctype == "Product Bundle": + filters={"new_item_code": self.name} + if doctype in ("Purchase Invoice Item", "Sales Invoice Item",): # If Invoice has Stock impact, only then consider it. if self.stock_ledger_created(): return True - elif frappe.db.get_value(doctype, filters={"item_code": self.name, "docstatus": 1}): + elif frappe.db.get_value(doctype, filters): return True def validate_auto_reorder_enabled_in_stock_settings(self): diff --git a/erpnext/stock/doctype/item_price/item_price.py b/erpnext/stock/doctype/item_price/item_price.py index 51b47c50a3..bed5ea9ab6 100644 --- a/erpnext/stock/doctype/item_price/item_price.py +++ b/erpnext/stock/doctype/item_price/item_price.py @@ -4,14 +4,13 @@ from __future__ import unicode_literals import frappe from frappe import _ - - -class ItemPriceDuplicateItem(frappe.ValidationError): pass - - from frappe.model.document import Document +class ItemPriceDuplicateItem(frappe.ValidationError): + pass + + class ItemPrice(Document): def validate(self): @@ -23,7 +22,7 @@ class ItemPrice(Document): def validate_item(self): if not frappe.db.exists("Item", self.item_code): - frappe.throw(_("Item {0} not found").format(self.item_code)) + frappe.throw(_("Item {0} not found.").format(self.item_code)) def validate_dates(self): if self.valid_from and self.valid_upto: @@ -38,40 +37,45 @@ class ItemPrice(Document): if not price_list_details: link = frappe.utils.get_link_to_form('Price List', self.price_list) - frappe.throw("The price list {0} does not exists or disabled". - format(link)) + frappe.throw("The price list {0} does not exist or is disabled".format(link)) self.buying, self.selling, self.currency = price_list_details def update_item_details(self): if self.item_code: - self.item_name, self.item_description = frappe.db.get_value("Item", - self.item_code,["item_name", "description"]) + self.item_name, self.item_description = frappe.db.get_value("Item", self.item_code,["item_name", "description"]) def check_duplicates(self): - conditions = "where item_code=%(item_code)s and price_list=%(price_list)s and name != %(name)s" - condition_data_dict = dict(item_code=self.item_code, price_list=self.price_list, name=self.name) + conditions = """where item_code = %(item_code)s and price_list = %(price_list)s and name != %(name)s""" - for field in ['uom', 'valid_from', - 'valid_upto', 'packing_unit', 'customer', 'supplier']: + for field in [ + "uom", + "valid_from", + "valid_upto", + "packing_unit", + "customer", + "supplier",]: if self.get(field): - conditions += " and {0} = %({1})s".format(field, field) - condition_data_dict[field] = self.get(field) + conditions += " and {0} = %({0})s ".format(field) + else: + conditions += "and (isnull({0}) or {0} = '')".format(field) price_list_rate = frappe.db.sql(""" - SELECT price_list_rate - FROM `tabItem Price` - {conditions} """.format(conditions=conditions), condition_data_dict) + select price_list_rate + from `tabItem Price` + {conditions} + """.format(conditions=conditions), + self.as_dict(),) - if price_list_rate : - frappe.throw(_("Item Price appears multiple times based on Price List, Supplier/Customer, Currency, Item, UOM, Qty and Dates."), ItemPriceDuplicateItem) + if price_list_rate: + frappe.throw(_("Item Price appears multiple times based on Price List, Supplier/Customer, Currency, Item, UOM, Qty, and Dates."), ItemPriceDuplicateItem,) def before_save(self): if self.selling: self.reference = self.customer if self.buying: self.reference = self.supplier - + if self.selling and not self.buying: # if only selling then remove supplier self.supplier = None diff --git a/erpnext/stock/doctype/item_price/test_item_price.py b/erpnext/stock/doctype/item_price/test_item_price.py index 702acc38fe..f3d406eeca 100644 --- a/erpnext/stock/doctype/item_price/test_item_price.py +++ b/erpnext/stock/doctype/item_price/test_item_price.py @@ -138,4 +138,23 @@ class TestItemPrice(unittest.TestCase): # Valid price list must already exist self.assertRaises(frappe.ValidationError, doc.save) + def test_empty_duplicate_validation(self): + # Check if none/empty values are not compared during insert validation + doc = frappe.copy_doc(test_records[2]) + doc.customer = None + doc.price_list_rate = 21 + doc.insert() + + args = { + "price_list": doc.price_list, + "uom": "_Test UOM", + "transaction_date": '2017-04-18', + "qty": 7 + } + + price = get_price_list_rate_for(args, doc.item_code) + frappe.db.rollback() + + self.assertEqual(price, 21) + test_records = frappe.get_test_records('Item Price') diff --git a/erpnext/stock/doctype/item_quality_inspection_parameter/item_quality_inspection_parameter.json b/erpnext/stock/doctype/item_quality_inspection_parameter/item_quality_inspection_parameter.json index f1e1fd3679..888bc2de47 100644 --- a/erpnext/stock/doctype/item_quality_inspection_parameter/item_quality_inspection_parameter.json +++ b/erpnext/stock/doctype/item_quality_inspection_parameter/item_quality_inspection_parameter.json @@ -1,88 +1,57 @@ { - "allow_copy": 0, - "allow_import": 0, - "allow_rename": 0, - "autoname": "hash", - "beta": 0, - "creation": "2013-02-22 01:28:01", - "custom": 0, - "docstatus": 0, - "doctype": "DocType", - "editable_grid": 1, + "actions": [], + "autoname": "hash", + "creation": "2013-02-22 01:28:01", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "specification", + "value", + "column_break_3", + "acceptance_formula" + ], "fields": [ { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "specification", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Parameter", - "length": 0, - "no_copy": 0, - "oldfieldname": "specification", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": "200px", - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "fieldname": "specification", + "fieldtype": "Data", + "in_list_view": 1, + "label": "Parameter", + "oldfieldname": "specification", + "oldfieldtype": "Data", + "print_width": "200px", + "reqd": 1, "width": "200px" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "value", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Acceptance Criteria", - "length": 0, - "no_copy": 0, - "oldfieldname": "value", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 + "fieldname": "value", + "fieldtype": "Data", + "in_list_view": 1, + "label": "Acceptance Criteria", + "oldfieldname": "value", + "oldfieldtype": "Data" + }, + { + "fieldname": "column_break_3", + "fieldtype": "Column Break" + }, + { + "description": "Simple Python formula based on numeric Readings.
Example 1: reading_1 > 0.2 and reading_1 < 0.5
\nExample 2: (reading_1 + reading_2) / 2 < 10", + "fieldname": "acceptance_formula", + "fieldtype": "Code", + "in_list_view": 1, + "label": "Acceptance Criteria Formula" } - ], - "hide_heading": 0, - "hide_toolbar": 0, - "idx": 1, - "image_view": 0, - "in_create": 0, - - "is_submittable": 0, - "issingle": 0, - "istable": 1, - "max_attachments": 0, - "modified": "2016-07-11 03:28:01.074316", - "modified_by": "Administrator", - "module": "Stock", - "name": "Item Quality Inspection Parameter", - "owner": "Administrator", - "permissions": [], - "quick_entry": 0, - "read_only": 0, - "read_only_onload": 0, - "track_seen": 0 + ], + "idx": 1, + "istable": 1, + "links": [], + "modified": "2020-11-16 16:33:42.421842", + "modified_by": "Administrator", + "module": "Stock", + "name": "Item Quality Inspection Parameter", + "owner": "Administrator", + "permissions": [], + "sort_field": "modified", + "sort_order": "DESC" } \ No newline at end of file diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js index 8c470988c8..01edd99e9d 100644 --- a/erpnext/stock/doctype/material_request/material_request.js +++ b/erpnext/stock/doctype/material_request/material_request.js @@ -90,7 +90,7 @@ frappe.ui.form.on('Material Request', { make_custom_buttons: function(frm) { if (frm.doc.docstatus==0) { frm.add_custom_button(__("Bill of Materials"), - () => frm.events.get_items_from_bom(frm), __("Get items from")); + () => frm.events.get_items_from_bom(frm), __("Get Items From")); } if (frm.doc.docstatus == 1 && frm.doc.status != 'Stopped') { @@ -147,7 +147,7 @@ frappe.ui.form.on('Material Request', { if (frm.doc.docstatus===0) { frm.add_custom_button(__('Sales Order'), () => frm.events.get_items_from_sales_order(frm), - __("Get items from")); + __("Get Items From")); } if (frm.doc.docstatus == 1 && frm.doc.status == 'Stopped') { @@ -173,7 +173,8 @@ frappe.ui.form.on('Material Request', { source_doctype: "Sales Order", target: frm, setters: { - customer: frm.doc.customer || undefined + customer: frm.doc.customer || undefined, + delivery_date: undefined, }, get_query_filters: { docstatus: 1, @@ -280,8 +281,7 @@ frappe.ui.form.on('Material Request', { fieldname:'default_supplier', fieldtype: 'Link', options: 'Supplier', - description: __('Select a Supplier from the Default Suppliers of the items below. \ - On selection, a Purchase Order will be made against items belonging to the selected Supplier only.'), + description: __('Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.'), get_query: () => { return{ query: "erpnext.stock.doctype.material_request.material_request.get_default_supplier_query", diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js index c504e23677..bc1d81d356 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js @@ -128,6 +128,7 @@ erpnext.stock.PurchaseReceiptController = erpnext.buying.BuyingController.extend target: me.frm, setters: { supplier: me.frm.doc.supplier, + schedule_date: undefined }, get_query_filters: { docstatus: 1, @@ -136,7 +137,7 @@ erpnext.stock.PurchaseReceiptController = erpnext.buying.BuyingController.extend company: me.frm.doc.company } }) - }, __("Get items from")); + }, __("Get Items From")); } if(this.frm.doc.docstatus == 1 && this.frm.doc.status!="Closed") { diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json index ce54fc883f..5bb3095708 100755 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json @@ -1,5 +1,6 @@ { "actions": [], + "allow_auto_repeat": 1, "allow_import": 1, "autoname": "naming_series:", "creation": "2013-05-21 16:16:39", @@ -110,6 +111,7 @@ "range", "column_break4", "per_billed", + "per_returned", "is_internal_supplier", "inter_company_reference", "subscription_detail", @@ -894,7 +896,7 @@ "no_copy": 1, "oldfieldname": "status", "oldfieldtype": "Select", - "options": "\nDraft\nTo Bill\nCompleted\nCancelled\nClosed", + "options": "\nDraft\nTo Bill\nCompleted\nReturn Issued\nCancelled\nClosed", "print_hide": 1, "print_width": "150px", "read_only": 1, @@ -1103,13 +1105,22 @@ "fieldtype": "Small Text", "label": "Billing Address", "read_only": 1 + }, + { + "depends_on": "eval:!doc.__islocal", + "fieldname": "per_returned", + "fieldtype": "Percent", + "label": "% Returned", + "no_copy": 1, + "print_hide": 1, + "read_only": 1 } ], "icon": "fa fa-truck", "idx": 261, "is_submittable": 1, "links": [], - "modified": "2020-08-03 23:20:26.381024", + "modified": "2020-11-30 12:54:23.278500", "modified_by": "Administrator", "module": "Stock", "name": "Purchase Receipt", diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py index faa9dd944b..97e0fa738c 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py @@ -55,20 +55,33 @@ class PurchaseReceipt(BuyingController): 'percent_join_field': 'material_request' }] if cint(self.is_return): - self.status_updater.append({ - 'source_dt': 'Purchase Receipt Item', - 'target_dt': 'Purchase Order Item', - 'join_field': 'purchase_order_item', - 'target_field': 'returned_qty', - 'source_field': '-1 * qty', - 'second_source_dt': 'Purchase Invoice Item', - 'second_source_field': '-1 * qty', - 'second_join_field': 'po_detail', - 'extra_cond': """ and exists (select name from `tabPurchase Receipt` - where name=`tabPurchase Receipt Item`.parent and is_return=1)""", - 'second_source_extra_cond': """ and exists (select name from `tabPurchase Invoice` - where name=`tabPurchase Invoice Item`.parent and is_return=1 and update_stock=1)""" - }) + self.status_updater.extend([ + { + 'source_dt': 'Purchase Receipt Item', + 'target_dt': 'Purchase Order Item', + 'join_field': 'purchase_order_item', + 'target_field': 'returned_qty', + 'source_field': '-1 * qty', + 'second_source_dt': 'Purchase Invoice Item', + 'second_source_field': '-1 * qty', + 'second_join_field': 'po_detail', + 'extra_cond': """ and exists (select name from `tabPurchase Receipt` + where name=`tabPurchase Receipt Item`.parent and is_return=1)""", + 'second_source_extra_cond': """ and exists (select name from `tabPurchase Invoice` + where name=`tabPurchase Invoice Item`.parent and is_return=1 and update_stock=1)""" + }, + { + 'source_dt': 'Purchase Receipt Item', + 'target_dt': 'Purchase Receipt Item', + 'join_field': 'purchase_receipt_item', + 'target_field': 'returned_qty', + 'target_parent_dt': 'Purchase Receipt', + 'target_parent_field': 'per_returned', + 'target_ref_field': 'received_stock_qty', + 'source_field': '-1 * received_stock_qty', + 'percent_join_field_parent': 'return_against' + } + ]) def validate(self): self.validate_posting_time() @@ -478,7 +491,7 @@ class PurchaseReceipt(BuyingController): frappe.db.set_value("Asset", asset.name, "purchase_receipt_amount", flt(valuation_rate)) def update_status(self, status): - self.set_status(update=True, status = status) + self.set_status(update=True, status=status) self.notify_update() clear_doctype_notifications(self) @@ -490,7 +503,7 @@ class PurchaseReceipt(BuyingController): for pr in set(updated_pr): pr_doc = self if (pr == self.name) else frappe.get_doc("Purchase Receipt", pr) - pr_doc.update_billing_percentage(update_modified=update_modified) + update_billing_percentage(pr_doc, update_modified=update_modified) self.load_from_db() @@ -500,7 +513,7 @@ def update_billed_amount_based_on_po(po_detail, update_modified=True): where po_detail=%s and (pr_detail is null or pr_detail = '') and docstatus=1""", po_detail) billed_against_po = billed_against_po and billed_against_po[0][0] or 0 - # Get all Delivery Note Item rows against the Sales Order Item row + # Get all Purchase Receipt Item rows against the Purchase Order Item row pr_details = frappe.db.sql("""select pr_item.name, pr_item.amount, pr_item.parent from `tabPurchase Receipt Item` pr_item, `tabPurchase Receipt` pr where pr.name=pr_item.parent and pr_item.purchase_order_item=%s @@ -530,9 +543,44 @@ def update_billed_amount_based_on_po(po_detail, update_modified=True): return updated_pr +def update_billing_percentage(pr_doc, update_modified=True): + # Reload as billed amount was set in db directly + pr_doc.load_from_db() + + # Update Billing % based on pending accepted qty + total_amount, total_billed_amount = 0, 0 + for item in pr_doc.items: + return_data = frappe.db.get_list("Purchase Receipt", + fields = [ + "sum(abs(`tabPurchase Receipt Item`.qty)) as qty" + ], + filters = [ + ["Purchase Receipt", "docstatus", "=", 1], + ["Purchase Receipt", "is_return", "=", 1], + ["Purchase Receipt Item", "purchase_receipt_item", "=", item.name] + ]) + + returned_qty = return_data[0].qty if return_data else 0 + returned_amount = flt(returned_qty) * flt(item.rate) + pending_amount = flt(item.amount) - returned_amount + total_billable_amount = pending_amount if item.billed_amt <= pending_amount else item.billed_amt + + total_amount += total_billable_amount + total_billed_amount += flt(item.billed_amt) + + percent_billed = round(100 * (total_billed_amount / (total_amount or 1)), 6) + pr_doc.db_set("per_billed", percent_billed) + pr_doc.load_from_db() + + if update_modified: + pr_doc.set_status(update=True) + pr_doc.notify_update() + @frappe.whitelist() def make_purchase_invoice(source_name, target_doc=None): from frappe.model.mapper import get_mapped_doc + from erpnext.accounts.party import get_payment_terms_template + doc = frappe.get_doc('Purchase Receipt', source_name) returned_qty_map = get_returned_qty_map(source_name) invoiced_qty_map = get_invoiced_qty_map(source_name) @@ -543,12 +591,14 @@ def make_purchase_invoice(source_name, target_doc=None): doc = frappe.get_doc(target) doc.ignore_pricing_rule = 1 + doc.payment_terms_template = get_payment_terms_template(source.supplier, "Supplier", source.company) doc.run_method("onload") doc.run_method("set_missing_values") doc.run_method("calculate_taxes_and_totals") def update_item(source_doc, target_doc, source_parent): target_doc.qty, returned_qty = get_pending_qty(source_doc) + target_doc.stock_qty = flt(target_doc.qty) * flt(target_doc.conversion_factor, target_doc.precision("conversion_factor")) returned_qty_map[source_doc.name] = returned_qty def get_pending_qty(item_row): @@ -569,7 +619,8 @@ def make_purchase_invoice(source_name, target_doc=None): "doctype": "Purchase Invoice", "field_map": { "supplier_warehouse":"supplier_warehouse", - "is_return": "is_return" + "is_return": "is_return", + "bill_date": "bill_date" }, "validation": { "docstatus": ["=", 1], diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js index e81f323a46..c9501a409a 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js @@ -6,9 +6,11 @@ frappe.listview_settings['Purchase Receipt'] = { return [__("Return"), "darkgrey", "is_return,=,Yes"]; } else if (doc.status === "Closed") { return [__("Closed"), "green", "status,=,Closed"]; + } else if (flt(doc.per_returned, 2) === 100) { + return [__("Return Issued"), "grey", "per_returned,=,100"]; } else if (flt(doc.grand_total) !== 0 && flt(doc.per_billed, 2) < 100) { return [__("To Bill"), "orange", "per_billed,<,100"]; - } else if (flt(doc.grand_total) === 0 || flt(doc.per_billed, 2) == 100) { + } else if (flt(doc.grand_total) === 0 || flt(doc.per_billed, 2) === 100) { return [__("Completed"), "green", "per_billed,=,100"]; } } diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py index a1e01bf7ce..9b8eeed1a1 100644 --- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py @@ -42,6 +42,30 @@ class TestPurchaseReceipt(unittest.TestCase): frappe.db.set_value('UOM', '_Test UOM', 'must_be_whole_number', 1) def test_make_purchase_invoice(self): + if not frappe.db.exists('Payment Terms Template', '_Test Payment Terms Template For Purchase Invoice'): + frappe.get_doc({ + 'doctype': 'Payment Terms Template', + 'template_name': '_Test Payment Terms Template For Purchase Invoice', + 'allocate_payment_based_on_payment_terms': 1, + 'terms': [ + { + 'doctype': 'Payment Terms Template Detail', + 'invoice_portion': 50.00, + 'credit_days_based_on': 'Day(s) after invoice date', + 'credit_days': 00 + }, + { + 'doctype': 'Payment Terms Template Detail', + 'invoice_portion': 50.00, + 'credit_days_based_on': 'Day(s) after invoice date', + 'credit_days': 30 + }] + }).insert() + + template = frappe.db.get_value('Payment Terms Template', '_Test Payment Terms Template For Purchase Invoice') + old_template_in_supplier = frappe.db.get_value("Supplier", "_Test Supplier", "payment_terms") + frappe.db.set_value("Supplier", "_Test Supplier", "payment_terms", template) + pr = make_purchase_receipt(do_not_save=True) self.assertRaises(frappe.ValidationError, make_purchase_invoice, pr.name) pr.submit() @@ -51,10 +75,23 @@ class TestPurchaseReceipt(unittest.TestCase): self.assertEqual(pi.doctype, "Purchase Invoice") self.assertEqual(len(pi.get("items")), len(pr.get("items"))) - # modify rate + # test maintaining same rate throughout purchade cycle pi.get("items")[0].rate = 200 self.assertRaises(frappe.ValidationError, frappe.get_doc(pi).submit) + # test if payment terms are fetched and set in PI + self.assertEqual(pi.payment_terms_template, template) + self.assertEqual(pi.payment_schedule[0].payment_amount, flt(pi.grand_total)/2) + self.assertEqual(pi.payment_schedule[0].invoice_portion, 50) + self.assertEqual(pi.payment_schedule[1].payment_amount, flt(pi.grand_total)/2) + self.assertEqual(pi.payment_schedule[1].invoice_portion, 50) + + # teardown + pi.delete() # draft PI + pr.cancel() + frappe.db.set_value("Supplier", "_Test Supplier", "payment_terms", old_template_in_supplier) + frappe.get_doc('Payment Terms Template', '_Test Payment Terms Template For Purchase Invoice').delete() + def test_purchase_receipt_no_gl_entry(self): company = frappe.db.get_value('Warehouse', '_Test Warehouse - _TC', 'company') @@ -100,7 +137,10 @@ class TestPurchaseReceipt(unittest.TestCase): self.assertFalse(frappe.db.get_all('Serial No', {'batch_no': batch_no})) def test_purchase_receipt_gl_entry(self): - pr = make_purchase_receipt(company="_Test Company with perpetual inventory", warehouse = "Stores - TCP1", supplier_warehouse = "Work in Progress - TCP1", get_multiple_items = True, get_taxes_and_charges = True) + pr = make_purchase_receipt(company="_Test Company with perpetual inventory", + warehouse = "Stores - TCP1", supplier_warehouse = "Work in Progress - TCP1", + get_multiple_items = True, get_taxes_and_charges = True) + self.assertEqual(cint(erpnext.is_perpetual_inventory_enabled(pr.company)), 1) gl_entries = get_gl_entries("Purchase Receipt", pr.name) @@ -244,11 +284,15 @@ class TestPurchaseReceipt(unittest.TestCase): self.assertEqual(frappe.db.get_value("Serial No", serial_no, "warehouse"), pr.get("items")[0].rejected_warehouse) - def test_purchase_return(self): + def test_purchase_return_partial(self): + pr = make_purchase_receipt(company="_Test Company with perpetual inventory", + warehouse = "Stores - TCP1", supplier_warehouse = "Work in Progress - TCP1") - pr = make_purchase_receipt(company="_Test Company with perpetual inventory", warehouse = "Stores - TCP1", supplier_warehouse = "Work in Progress - TCP1") - - return_pr = make_purchase_receipt(company="_Test Company with perpetual inventory", warehouse = "Stores - TCP1", supplier_warehouse = "Work in Progress - TCP1", is_return=1, return_against=pr.name, qty=-2) + return_pr = make_purchase_receipt(company="_Test Company with perpetual inventory", + warehouse = "Stores - TCP1", supplier_warehouse = "Work in Progress - TCP1", + is_return=1, return_against=pr.name, qty=-2, do_not_submit=1) + return_pr.items[0].purchase_receipt_item = pr.items[0].name + return_pr.submit() # check sle outgoing_rate = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Purchase Receipt", @@ -272,6 +316,60 @@ class TestPurchaseReceipt(unittest.TestCase): self.assertEqual(expected_values[gle.account][0], gle.debit) self.assertEqual(expected_values[gle.account][1], gle.credit) + # hack because new_doc isn't considering is_return portion of status_updater + returned = frappe.get_doc("Purchase Receipt", return_pr.name) + returned.update_prevdoc_status() + pr.load_from_db() + + # Check if Original PR updated + self.assertEqual(pr.items[0].returned_qty, 2) + self.assertEqual(pr.per_returned, 40) + + from erpnext.controllers.sales_and_purchase_return import make_return_doc + return_pr_2 = make_return_doc("Purchase Receipt", pr.name) + + # Check if unreturned amount is mapped in 2nd return + self.assertEqual(return_pr_2.items[0].qty, -3) + + # Make PI against unreturned amount + pi = make_purchase_invoice(pr.name) + pi.submit() + + self.assertEqual(pi.items[0].qty, 3) + + pr.load_from_db() + # PR should be completed on billing all unreturned amount + self.assertEqual(pr.items[0].billed_amt, 150) + self.assertEqual(pr.per_billed, 100) + self.assertEqual(pr.status, 'Completed') + + pi.load_from_db() + pi.cancel() + + pr.load_from_db() + self.assertEqual(pr.per_billed, 0) + + return_pr.cancel() + pr.cancel() + + def test_purchase_return_full(self): + pr = make_purchase_receipt(company="_Test Company with perpetual inventory", warehouse = "Stores - TCP1", + supplier_warehouse = "Work in Progress - TCP1") + + return_pr = make_purchase_receipt(company="_Test Company with perpetual inventory", warehouse = "Stores - TCP1", + supplier_warehouse = "Work in Progress - TCP1", is_return=1, return_against=pr.name, qty=-5, do_not_submit=1) + return_pr.items[0].purchase_receipt_item = pr.items[0].name + return_pr.submit() + + # hack because new_doc isn't considering is_return portion of status_updater + returned = frappe.get_doc("Purchase Receipt", return_pr.name) + returned.update_prevdoc_status() + pr.load_from_db() + + # Check if Original PR updated + self.assertEqual(pr.items[0].returned_qty, 5) + self.assertEqual(pr.per_returned, 100) + self.assertEqual(pr.status, 'Return Issued') def test_purchase_return_for_rejected_qty(self): from erpnext.stock.doctype.warehouse.test_warehouse import get_warehouse @@ -379,6 +477,7 @@ class TestPurchaseReceipt(unittest.TestCase): self.assertEqual(pr1.per_billed, 100) self.assertEqual(pr1.status, "Completed") + pr2.load_from_db() self.assertEqual(pr2.get("items")[0].billed_amt, 2000) self.assertEqual(pr2.per_billed, 80) self.assertEqual(pr2.status, "To Bill") diff --git a/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json b/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json index c1e1f901ba..84c64aa8f8 100644 --- a/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json +++ b/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json @@ -28,9 +28,13 @@ "uom", "stock_uom", "conversion_factor", - "stock_qty", "retain_sample", "sample_quantity", + "tracking_section", + "received_stock_qty", + "stock_qty", + "col_break_tracking_section", + "returned_qty", "rate_and_amount", "price_list_rate", "discount_percentage", @@ -526,7 +530,7 @@ { "fieldname": "stock_qty", "fieldtype": "Float", - "label": "Accepted Qty as per Stock UOM", + "label": "Accepted Qty in Stock UOM", "oldfieldname": "stock_qty", "oldfieldtype": "Currency", "print_hide": 1, @@ -834,12 +838,35 @@ "collapsible": 1, "fieldname": "image_column", "fieldtype": "Column Break" + }, + { + "fieldname": "tracking_section", + "fieldtype": "Section Break" + }, + { + "fieldname": "col_break_tracking_section", + "fieldtype": "Column Break" + }, + { + "depends_on": "returned_qty", + "fieldname": "returned_qty", + "fieldtype": "Float", + "label": "Returned Qty in Stock UOM", + "no_copy": 1, + "print_hide": 1, + "read_only": 1 + }, + { + "fieldname": "received_stock_qty", + "fieldtype": "Float", + "label": "Received Qty in Stock UOM", + "print_hide": 1 } ], "idx": 1, "istable": 1, "links": [], - "modified": "2020-04-28 19:01:21.154963", + "modified": "2020-11-02 10:00:38.204294", "modified_by": "Administrator", "module": "Stock", "name": "Purchase Receipt Item", diff --git a/erpnext/stock/doctype/quality_inspection/quality_inspection.js b/erpnext/stock/doctype/quality_inspection/quality_inspection.js index 22f29e05b4..376848afaa 100644 --- a/erpnext/stock/doctype/quality_inspection/quality_inspection.js +++ b/erpnext/stock/doctype/quality_inspection/quality_inspection.js @@ -31,17 +31,27 @@ frappe.ui.form.on("Quality Inspection", { // item code based on GRN/DN cur_frm.fields_dict['item_code'].get_query = function(doc, cdt, cdn) { - const doctype = (doc.reference_type == "Stock Entry") ? - "Stock Entry Detail" : doc.reference_type + " Item"; + let doctype = doc.reference_type; + + if (doc.reference_type !== "Job Card") { + doctype = (doc.reference_type == "Stock Entry") ? + "Stock Entry Detail" : doc.reference_type + " Item"; + } if (doc.reference_type && doc.reference_name) { + let filters = { + "from": doctype, + "inspection_type": doc.inspection_type + }; + + if (doc.reference_type == doctype) + filters["reference_name"] = doc.reference_name; + else + filters["parent"] = doc.reference_name; + return { query: "erpnext.stock.doctype.quality_inspection.quality_inspection.item_query", - filters: { - "from": doctype, - "parent": doc.reference_name, - "inspection_type": doc.inspection_type - } + filters: filters }; } }, diff --git a/erpnext/stock/doctype/quality_inspection/quality_inspection.json b/erpnext/stock/doctype/quality_inspection/quality_inspection.json index dd95075e28..f6d76194d9 100644 --- a/erpnext/stock/doctype/quality_inspection/quality_inspection.json +++ b/erpnext/stock/doctype/quality_inspection/quality_inspection.json @@ -73,7 +73,7 @@ "fieldname": "reference_type", "fieldtype": "Select", "label": "Reference Type", - "options": "\nPurchase Receipt\nPurchase Invoice\nDelivery Note\nSales Invoice\nStock Entry", + "options": "\nPurchase Receipt\nPurchase Invoice\nDelivery Note\nSales Invoice\nStock Entry\nJob Card", "reqd": 1 }, { @@ -236,7 +236,7 @@ "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2020-10-21 13:03:11.938072", + "modified": "2020-11-19 17:06:05.409963", "modified_by": "Administrator", "module": "Stock", "name": "Quality Inspection", diff --git a/erpnext/stock/doctype/quality_inspection/quality_inspection.py b/erpnext/stock/doctype/quality_inspection/quality_inspection.py index c3bb514184..ae4eb9b995 100644 --- a/erpnext/stock/doctype/quality_inspection/quality_inspection.py +++ b/erpnext/stock/doctype/quality_inspection/quality_inspection.py @@ -4,15 +4,20 @@ from __future__ import unicode_literals import frappe from frappe.model.document import Document +from frappe.model.mapper import get_mapped_doc +from frappe import _ +from frappe.utils import flt from erpnext.stock.doctype.quality_inspection_template.quality_inspection_template \ import get_template_details -from frappe.model.mapper import get_mapped_doc class QualityInspection(Document): def validate(self): if not self.readings and self.item_code: self.get_item_specification_details() + if self.readings: + self.set_status_based_on_acceptance_formula() + def get_item_specification_details(self): if not self.quality_inspection_template: self.quality_inspection_template = frappe.db.get_value('Item', @@ -26,6 +31,7 @@ class QualityInspection(Document): child = self.append('readings', {}) child.specification = d.specification child.value = d.value + child.acceptance_formula = d.acceptance_formula child.status = "Accepted" def get_quality_inspection_template(self): @@ -47,16 +53,51 @@ class QualityInspection(Document): def update_qc_reference(self): quality_inspection = self.name if self.docstatus == 1 else "" - doctype = self.reference_type + ' Item' - if self.reference_type == 'Stock Entry': - doctype = 'Stock Entry Detail' - if self.reference_type and self.reference_name: - frappe.db.sql("""update `tab{child_doc}` t1, `tab{parent_doc}` t2 - set t1.quality_inspection = %s, t2.modified = %s - where t1.parent = %s and t1.item_code = %s and t1.parent = t2.name""" - .format(parent_doc=self.reference_type, child_doc=doctype), - (quality_inspection, self.modified, self.reference_name, self.item_code)) + if self.reference_type == 'Job Card': + if self.reference_name: + frappe.db.sql(""" + UPDATE `tab{doctype}` + SET quality_inspection = %s, modified = %s + WHERE name = %s and production_item = %s + """.format(doctype=self.reference_type), + (quality_inspection, self.modified, self.reference_name, self.item_code)) + + else: + doctype = self.reference_type + ' Item' + if self.reference_type == 'Stock Entry': + doctype = 'Stock Entry Detail' + + if self.reference_type and self.reference_name: + frappe.db.sql(""" + UPDATE `tab{child_doc}` t1, `tab{parent_doc}` t2 + SET t1.quality_inspection = %s, t2.modified = %s + WHERE t1.parent = %s and t1.item_code = %s and t1.parent = t2.name + """.format(parent_doc=self.reference_type, child_doc=doctype), + (quality_inspection, self.modified, self.reference_name, self.item_code)) + + def set_status_based_on_acceptance_formula(self): + for reading in self.readings: + if not reading.acceptance_formula: continue + + condition = reading.acceptance_formula + data = {} + for i in range(1, 11): + field = "reading_" + str(i) + data[field] = flt(reading.get(field)) or 0 + + try: + result = frappe.safe_eval(condition, None, data) + reading.status = "Accepted" if result else "Rejected" + except SyntaxError: + frappe.throw(_("Row #{0}: Acceptance Criteria Formula is incorrect.").format(reading.idx), + title=_("Invalid Formula")) + except NameError as e: + field = frappe.bold(e.args[0].split()[1]) + frappe.throw(_("Row #{0}: {1} is not a valid reading field. Please refer to the field description.") + .format(reading.idx, field), + title=_("Invalid Formula")) + @frappe.whitelist() @frappe.validate_and_sanitize_search_inputs @@ -66,27 +107,44 @@ def item_query(doctype, txt, searchfield, start, page_len, filters): mcond = get_match_cond(filters["from"]) cond, qi_condition = "", "and (quality_inspection is null or quality_inspection = '')" - if filters.get('from') in ['Purchase Invoice Item', 'Purchase Receipt Item']\ - and filters.get("inspection_type") != "In Process": - cond = """and item_code in (select name from `tabItem` where - inspection_required_before_purchase = 1)""" - elif filters.get('from') in ['Sales Invoice Item', 'Delivery Note Item']\ - and filters.get("inspection_type") != "In Process": - cond = """and item_code in (select name from `tabItem` where - inspection_required_before_delivery = 1)""" - elif filters.get('from') == 'Stock Entry Detail': - cond = """and s_warehouse is null""" + if filters.get("parent"): + if filters.get('from') in ['Purchase Invoice Item', 'Purchase Receipt Item']\ + and filters.get("inspection_type") != "In Process": + cond = """and item_code in (select name from `tabItem` where + inspection_required_before_purchase = 1)""" + elif filters.get('from') in ['Sales Invoice Item', 'Delivery Note Item']\ + and filters.get("inspection_type") != "In Process": + cond = """and item_code in (select name from `tabItem` where + inspection_required_before_delivery = 1)""" + elif filters.get('from') == 'Stock Entry Detail': + cond = """and s_warehouse is null""" - if filters.get('from') in ['Supplier Quotation Item']: - qi_condition = "" + if filters.get('from') in ['Supplier Quotation Item']: + qi_condition = "" - return frappe.db.sql(""" select item_code from `tab{doc}` - where parent=%(parent)s and docstatus < 2 and item_code like %(txt)s - {qi_condition} {cond} {mcond} - order by item_code limit {start}, {page_len}""".format(doc=filters.get('from'), - parent=filters.get('parent'), cond = cond, mcond = mcond, start = start, - page_len = page_len, qi_condition = qi_condition), - {'parent': filters.get('parent'), 'txt': "%%%s%%" % txt}) + return frappe.db.sql(""" + SELECT item_code + FROM `tab{doc}` + WHERE parent=%(parent)s and docstatus < 2 and item_code like %(txt)s + {qi_condition} {cond} {mcond} + ORDER BY item_code limit {start}, {page_len} + """.format(doc=filters.get('from'), + cond = cond, mcond = mcond, start = start, + page_len = page_len, qi_condition = qi_condition), + {'parent': filters.get('parent'), 'txt': "%%%s%%" % txt}) + + elif filters.get("reference_name"): + return frappe.db.sql(""" + SELECT production_item + FROM `tab{doc}` + WHERE name = %(reference_name)s and docstatus < 2 and production_item like %(txt)s + {qi_condition} {cond} {mcond} + ORDER BY production_item + LIMIT {start}, {page_len} + """.format(doc=filters.get("from"), + cond = cond, mcond = mcond, start = start, + page_len = page_len, qi_condition = qi_condition), + {'reference_name': filters.get('reference_name'), 'txt': "%%%s%%" % txt}) @frappe.whitelist() @frappe.validate_and_sanitize_search_inputs diff --git a/erpnext/stock/doctype/quality_inspection/test_quality_inspection.py b/erpnext/stock/doctype/quality_inspection/test_quality_inspection.py index bb535c1f6a..2c40009426 100644 --- a/erpnext/stock/doctype/quality_inspection/test_quality_inspection.py +++ b/erpnext/stock/doctype/quality_inspection/test_quality_inspection.py @@ -7,6 +7,7 @@ import unittest from frappe.utils import nowdate from erpnext.stock.doctype.item.test_item import create_item from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note +from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry from erpnext.controllers.stock_controller import QualityInspectionRejectedError, QualityInspectionRequiredError, QualityInspectionNotSubmittedError # test_records = frappe.get_test_records('Quality Inspection') @@ -17,10 +18,12 @@ class TestQualityInspection(unittest.TestCase): frappe.db.set_value("Item", "_Test Item with QA", "inspection_required_before_delivery", 1) def test_qa_for_delivery(self): + make_stock_entry(item_code="_Test Item with QA", target="_Test Warehouse - _TC", qty=1, basic_rate=100) dn = create_delivery_note(item_code="_Test Item with QA", do_not_submit=True) + self.assertRaises(QualityInspectionRequiredError, dn.submit) - qa = create_quality_inspection(reference_type="Delivery Note", reference_name=dn.name, status="Rejected", submit=True) + qa = create_quality_inspection(reference_type="Delivery Note", reference_name=dn.name, status="Rejected") dn.reload() self.assertRaises(QualityInspectionRejectedError, dn.submit) @@ -28,12 +31,51 @@ class TestQualityInspection(unittest.TestCase): dn.reload() dn.submit() + qa.cancel() + dn.reload() + dn.cancel() + def test_qa_not_submit(self): dn = create_delivery_note(item_code="_Test Item with QA", do_not_submit=True) - qa = create_quality_inspection(reference_type="Delivery Note", reference_name=dn.name, submit = False) + qa = create_quality_inspection(reference_type="Delivery Note", reference_name=dn.name, do_not_submit=True) dn.items[0].quality_inspection = qa.name self.assertRaises(QualityInspectionNotSubmittedError, dn.submit) + qa.delete() + dn.delete() + + def test_formula_based_qi_readings(self): + dn = create_delivery_note(item_code="_Test Item with QA", do_not_submit=True) + readings = [{ + "specification": "Iron Content", + "acceptance_formula": "reading_1 > 0.35 and reading_1 < 0.50", + "reading_1": 0.4 + }, + { + "specification": "Calcium Content", + "acceptance_formula": "reading_1 > 0.20 and reading_1 < 0.50", + "reading_1": 0.7 + }, + { + "specification": "Mg Content", + "acceptance_formula": "(reading_1 + reading_2 + reading_3) / 3 < 0.9", + "reading_1": 0.5, + "reading_2": 0.7, + "reading_3": "random text" # check if random string input causes issues + }] + + qa = create_quality_inspection(reference_type="Delivery Note", reference_name=dn.name, + readings=readings, do_not_save=True) + qa.save() + + # status must be auto set as per formula + self.assertEqual(qa.readings[0].status, "Accepted") + self.assertEqual(qa.readings[1].status, "Rejected") + self.assertEqual(qa.readings[2].status, "Accepted") + + qa.delete() + dn.delete() + def create_quality_inspection(**args): args = frappe._dict(args) qa = frappe.new_doc("Quality Inspection") @@ -44,12 +86,18 @@ def create_quality_inspection(**args): qa.item_code = args.item_code or "_Test Item with QA" qa.sample_size = 1 qa.inspected_by = frappe.session.user - qa.append("readings", { - "specification": "Size", - "status": args.status - }) - qa.save() - if args.submit: - qa.submit() + + readings = args.readings or {"specification": "Size", "status": args.status} + + if isinstance(readings, list): + for entry in readings: + qa.append("readings", entry) + else: + qa.append("readings", readings) + + if not args.do_not_save: + qa.save() + if not args.do_not_submit: + qa.submit() return qa diff --git a/erpnext/stock/doctype/quality_inspection_reading/quality_inspection_reading.json b/erpnext/stock/doctype/quality_inspection_reading/quality_inspection_reading.json index f9f8a71c02..c1976dd1fb 100644 --- a/erpnext/stock/doctype/quality_inspection_reading/quality_inspection_reading.json +++ b/erpnext/stock/doctype/quality_inspection_reading/quality_inspection_reading.json @@ -1,22 +1,29 @@ { + "actions": [], "autoname": "hash", "creation": "2013-02-22 01:27:43", "doctype": "DocType", "editable_grid": 1, + "engine": "InnoDB", "field_order": [ "specification", "value", + "status", + "column_break_4", + "acceptance_formula", + "section_break_3", "reading_1", "reading_2", "reading_3", + "column_break_10", "reading_4", "reading_5", "reading_6", + "column_break_14", "reading_7", "reading_8", "reading_9", - "reading_10", - "status" + "reading_10" ], "fields": [ { @@ -124,15 +131,40 @@ "oldfieldname": "status", "oldfieldtype": "Select", "options": "Accepted\nRejected" + }, + { + "fieldname": "section_break_3", + "fieldtype": "Section Break" + }, + { + "fieldname": "column_break_4", + "fieldtype": "Column Break" + }, + { + "description": "Simple Python formula based on numeric Readings.
Example 1: reading_1 > 0.2 and reading_1 < 0.5
\nExample 2: (reading_1 + reading_2) / 2 < 10", + "fieldname": "acceptance_formula", + "fieldtype": "Code", + "label": "Acceptance Criteria Formula" + }, + { + "fieldname": "column_break_10", + "fieldtype": "Column Break" + }, + { + "fieldname": "column_break_14", + "fieldtype": "Column Break" } ], "idx": 1, "istable": 1, - "modified": "2019-07-11 18:48:12.667404", + "links": [], + "modified": "2020-11-16 16:34:29.947856", "modified_by": "Administrator", "module": "Stock", "name": "Quality Inspection Reading", "owner": "Administrator", "permissions": [], + "sort_field": "modified", + "sort_order": "DESC", "track_changes": 1 } \ No newline at end of file diff --git a/erpnext/stock/doctype/quality_inspection_template/quality_inspection_template.py b/erpnext/stock/doctype/quality_inspection_template/quality_inspection_template.py index 0d9a90312b..e2848469b8 100644 --- a/erpnext/stock/doctype/quality_inspection_template/quality_inspection_template.py +++ b/erpnext/stock/doctype/quality_inspection_template/quality_inspection_template.py @@ -12,5 +12,7 @@ class QualityInspectionTemplate(Document): def get_template_details(template): if not template: return [] - return frappe.get_all('Item Quality Inspection Parameter', fields=["specification", "value"], - filters={'parenttype': 'Quality Inspection Template', 'parent': template}, order_by="idx") \ No newline at end of file + return frappe.get_all('Item Quality Inspection Parameter', + fields=["specification", "value", "acceptance_formula"], + filters={'parenttype': 'Quality Inspection Template', 'parent': template}, + order_by="idx") \ No newline at end of file diff --git a/erpnext/stock/doctype/shipment/__init__.py b/erpnext/stock/doctype/shipment/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/stock/doctype/shipment/shipment.js b/erpnext/stock/doctype/shipment/shipment.js new file mode 100644 index 0000000000..5ccb7d2ff6 --- /dev/null +++ b/erpnext/stock/doctype/shipment/shipment.js @@ -0,0 +1,447 @@ +// Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +frappe.ui.form.on('Shipment', { + address_query: function(frm, link_doctype, link_name, is_your_company_address) { + return { + query: 'frappe.contacts.doctype.address.address.address_query', + filters: { + link_doctype: link_doctype, + link_name: link_name, + is_your_company_address: is_your_company_address + } + }; + }, + contact_query: function(frm, link_doctype, link_name) { + return { + query: 'frappe.contacts.doctype.contact.contact.contact_query', + filters: { + link_doctype: link_doctype, + link_name: link_name + } + }; + }, + onload: function(frm) { + frm.set_query("delivery_address_name", () => { + let delivery_to = `delivery_${frappe.model.scrub(frm.doc.delivery_to_type)}`; + return frm.events.address_query(frm, frm.doc.delivery_to_type, frm.doc[delivery_to], frm.doc.delivery_to_type === 'Company' ? 1 : 0); + }); + frm.set_query("pickup_address_name", () => { + let pickup_from = `pickup_${frappe.model.scrub(frm.doc.pickup_from_type)}`; + return frm.events.address_query(frm, frm.doc.pickup_from_type, frm.doc[pickup_from], frm.doc.pickup_from_type === 'Company' ? 1 : 0); + }); + frm.set_query("delivery_contact_name", () => { + let delivery_to = `delivery_${frappe.model.scrub(frm.doc.delivery_to_type)}`; + return frm.events.contact_query(frm, frm.doc.delivery_to_type, frm.doc[delivery_to]); + }); + frm.set_query("pickup_contact_name", () => { + let pickup_from = `pickup_${frappe.model.scrub(frm.doc.pickup_from_type)}`; + return frm.events.contact_query(frm, frm.doc.pickup_from_type, frm.doc[pickup_from]); + }); + frm.set_query("delivery_note", "shipment_delivery_note", function() { + let customer = ''; + if (frm.doc.delivery_to_type == "Customer") { + customer = frm.doc.delivery_customer; + } + if (frm.doc.delivery_to_type == "Company") { + customer = frm.doc.delivery_company; + } + if (customer) { + return { + filters: { + customer: customer, + docstatus: 1, + status: ["not in", ["Cancelled"]] + } + }; + } + }); + }, + refresh: function() { + $('div[data-fieldname=pickup_address] > div > .clearfix').hide(); + $('div[data-fieldname=pickup_contact] > div > .clearfix').hide(); + $('div[data-fieldname=delivery_address] > div > .clearfix').hide(); + $('div[data-fieldname=delivery_contact] > div > .clearfix').hide(); + }, + before_save: function(frm) { + let delivery_to = `delivery_${frappe.model.scrub(frm.doc.delivery_to_type)}`; + frm.set_value("delivery_to", frm.doc[delivery_to]); + let pickup_from = `pickup_${frappe.model.scrub(frm.doc.pickup_from_type)}`; + frm.set_value("pickup", frm.doc[pickup_from]); + }, + set_pickup_company_address: function(frm) { + frappe.db.get_value('Address', { + address_title: frm.doc.pickup_company, + is_your_company_address: 1 + }, 'name', (r) => { + frm.set_value("pickup_address_name", r.name); + }); + }, + set_delivery_company_address: function(frm) { + frappe.db.get_value('Address', { + address_title: frm.doc.delivery_company, + is_your_company_address: 1 + }, 'name', (r) => { + frm.set_value("delivery_address_name", r.name); + }); + }, + pickup_from_type: function(frm) { + if (frm.doc.pickup_from_type == 'Company') { + frm.set_value("pickup_company", frappe.defaults.get_default('company')); + frm.set_value("pickup_customer", ''); + frm.set_value("pickup_supplier", ''); + } else { + frm.trigger('clear_pickup_fields'); + } + if (frm.doc.pickup_from_type == 'Customer') { + frm.set_value("pickup_company", ''); + frm.set_value("pickup_supplier", ''); + } + if (frm.doc.pickup_from_type == 'Supplier') { + frm.set_value("pickup_customer", ''); + frm.set_value("pickup_company", ''); + } + }, + delivery_to_type: function(frm) { + if (frm.doc.delivery_to_type == 'Company') { + frm.set_value("delivery_company", frappe.defaults.get_default('company')); + frm.set_value("delivery_customer", ''); + frm.set_value("delivery_supplier", ''); + } else { + frm.trigger('clear_delivery_fields'); + } + if (frm.doc.delivery_to_type == 'Customer') { + frm.set_value("delivery_company", ''); + frm.set_value("delivery_supplier", ''); + } + if (frm.doc.delivery_to_type == 'Supplier') { + frm.set_value("delivery_customer", ''); + frm.set_value("delivery_company", ''); + frm.toggle_display("shipment_delivery_note", false); + } else { + frm.toggle_display("shipment_delivery_note", true); + } + }, + delivery_address_name: function(frm) { + if (frm.doc.delivery_to_type == 'Company') { + erpnext.utils.get_address_display(frm, 'delivery_address_name', 'delivery_address', true); + } else { + erpnext.utils.get_address_display(frm, 'delivery_address_name', 'delivery_address', false); + } + }, + pickup_address_name: function(frm) { + if (frm.doc.pickup_from_type == 'Company') { + erpnext.utils.get_address_display(frm, 'pickup_address_name', 'pickup_address', true); + } else { + erpnext.utils.get_address_display(frm, 'pickup_address_name', 'pickup_address', false); + } + }, + get_contact_display: function(frm, contact_name, contact_type) { + frappe.call({ + method: "frappe.contacts.doctype.contact.contact.get_contact_details", + args: { contact: contact_name }, + callback: function(r) { + if (r.message) { + if (!(r.message.contact_email && (r.message.contact_phone || r.message.contact_mobile))) { + if (contact_type == 'Delivery') { + frm.set_value('delivery_contact_name', ''); + frm.set_value('delivery_contact', ''); + } else { + frm.set_value('pickup_contact_name', ''); + frm.set_value('pickup_contact', ''); + } + frappe.throw(__("Email or Phone/Mobile of the Contact are mandatory to continue.") + "
" + __("Please set Email/Phone for the contact") + ` ${contact_name}`); + } + let contact_display = r.message.contact_display; + if (r.message.contact_email) { + contact_display += '
' + r.message.contact_email; + } + if (r.message.contact_phone) { + contact_display += '
' + r.message.contact_phone; + } + if (r.message.contact_mobile && !r.message.contact_phone) { + contact_display += '
' + r.message.contact_mobile; + } + if (contact_type == 'Delivery') { + frm.set_value('delivery_contact', contact_display); + if (r.message.contact_email) { + frm.set_value('delivery_contact_email', r.message.contact_email); + } + } else { + frm.set_value('pickup_contact', contact_display); + if (r.message.contact_email) { + frm.set_value('pickup_contact_email', r.message.contact_email); + } + } + } + } + }); + }, + delivery_contact_name: function(frm) { + if (frm.doc.delivery_contact_name) { + frm.events.get_contact_display(frm, frm.doc.delivery_contact_name, 'Delivery'); + } + }, + pickup_contact_name: function(frm) { + if (frm.doc.pickup_contact_name) { + frm.events.get_contact_display(frm, frm.doc.pickup_contact_name, 'Pickup'); + } + }, + pickup_contact_person: function(frm) { + if (frm.doc.pickup_contact_person) { + frappe.call({ + method: "erpnext.stock.doctype.shipment.shipment.get_company_contact", + args: { user: frm.doc.pickup_contact_person }, + callback: function({ message }) { + const r = message; + let contact_display = `${r.first_name} ${r.last_name}`; + if (r.email) { + contact_display += `
${ r.email }`; + frm.set_value('pickup_contact_email', r.email); + } + if (r.phone) { + contact_display += `
${ r.phone }`; + } + if (r.mobile_no && !r.phone) { + contact_display += `
${ r.mobile_no }`; + } + frm.set_value('pickup_contact', contact_display); + } + }); + } else { + if (frm.doc.pickup_from_type === 'Company') { + frappe.call({ + method: "erpnext.stock.doctype.shipment.shipment.get_company_contact", + args: { user: frappe.session.user }, + callback: function({ message }) { + const r = message; + let contact_display = `${r.first_name} ${r.last_name}`; + if (r.email) { + contact_display += `
${ r.email }`; + frm.set_value('pickup_contact_email', r.email); + } + if (r.phone) { + contact_display += `
${ r.phone }`; + } + if (r.mobile_no && !r.phone) { + contact_display += `
${ r.mobile_no }`; + } + frm.set_value('pickup_contact', contact_display); + } + }); + } + } + }, + set_company_contact: function(frm, delivery_type) { + frappe.db.get_value('User', { name: frappe.session.user }, ['full_name', 'last_name', 'email', 'phone', 'mobile_no'], (r) => { + if (!(r.last_name && r.email && (r.phone || r.mobile_no))) { + if (delivery_type == 'Delivery') { + frm.set_value('delivery_company', ''); + frm.set_value('delivery_contact', ''); + } else { + frm.set_value('pickup_company', ''); + frm.set_value('pickup_contact', ''); + } + frappe.throw(__("Last Name, Email or Phone/Mobile of the user are mandatory to continue.") + "
" + __("Please first set Last Name, Email and Phone for the user") + ` ${frappe.session.user}`); + } + let contact_display = r.full_name; + if (r.email) { + contact_display += '
' + r.email; + } + if (r.phone) { + contact_display += '
' + r.phone; + } + if (r.mobile_no && !r.phone) { + contact_display += '
' + r.mobile_no; + } + if (delivery_type == 'Delivery') { + frm.set_value('delivery_contact', contact_display); + if (r.email) { + frm.set_value('delivery_contact_email', r.email); + } + } else { + frm.set_value('pickup_contact', contact_display); + if (r.email) { + frm.set_value('pickup_contact_email', r.email); + } + } + }); + frm.set_value('pickup_contact_person', frappe.session.user); + }, + pickup_company: function(frm) { + if (frm.doc.pickup_from_type == 'Company' && frm.doc.pickup_company) { + frm.trigger('set_pickup_company_address'); + frm.events.set_company_contact(frm, 'Pickup'); + } + }, + delivery_company: function(frm) { + if (frm.doc.delivery_to_type == 'Company' && frm.doc.delivery_company) { + frm.trigger('set_delivery_company_address'); + frm.events.set_company_contact(frm, 'Delivery'); + } + }, + delivery_customer: function(frm) { + frm.trigger('clear_delivery_fields'); + if (frm.doc.delivery_customer) { + frm.events.set_address_name(frm, 'Customer', frm.doc.delivery_customer, 'Delivery'); + frm.events.set_contact_name(frm, 'Customer', frm.doc.delivery_customer, 'Delivery'); + } + }, + delivery_supplier: function(frm) { + frm.trigger('clear_delivery_fields'); + if (frm.doc.delivery_supplier) { + frm.events.set_address_name(frm, 'Supplier', frm.doc.delivery_supplier, 'Delivery'); + frm.events.set_contact_name(frm, 'Supplier', frm.doc.delivery_supplier, 'Delivery'); + } + }, + pickup_customer: function(frm) { + if (frm.doc.pickup_customer) { + frm.events.set_address_name(frm, 'Customer', frm.doc.pickup_customer, 'Pickup'); + frm.events.set_contact_name(frm, 'Customer', frm.doc.pickup_customer, 'Pickup'); + } + }, + pickup_supplier: function(frm) { + if (frm.doc.pickup_supplier) { + frm.events.set_address_name(frm, 'Supplier', frm.doc.pickup_supplier, 'Pickup'); + frm.events.set_contact_name(frm, 'Supplier', frm.doc.pickup_supplier, 'Pickup'); + } + }, + set_address_name: function(frm, ref_doctype, ref_docname, delivery_type) { + frappe.call({ + method: "erpnext.stock.doctype.shipment.shipment.get_address_name", + args: { + ref_doctype: ref_doctype, + docname: ref_docname + }, + callback: function(r) { + if (r.message) { + if (delivery_type == 'Delivery') { + frm.set_value('delivery_address_name', r.message); + } else { + frm.set_value('pickup_address_name', r.message); + } + } + } + }); + }, + set_contact_name: function(frm, ref_doctype, ref_docname, delivery_type) { + frappe.call({ + method: "erpnext.stock.doctype.shipment.shipment.get_contact_name", + args: { + ref_doctype: ref_doctype, + docname: ref_docname + }, + callback: function(r) { + if (r.message) { + if (delivery_type == 'Delivery') { + frm.set_value('delivery_contact_name', r.message); + } else { + frm.set_value('pickup_contact_name', r.message); + } + } + } + }); + }, + add_template: function(frm) { + if (frm.doc.parcel_template) { + frappe.model.with_doc("Shipment Parcel Template", frm.doc.parcel_template, () => { + let parcel_template = frappe.model.get_doc("Shipment Parcel Template", frm.doc.parcel_template); + let row = frappe.model.add_child(frm.doc, "Shipment Parcel", "shipment_parcel"); + row.length = parcel_template.length; + row.width = parcel_template.width; + row.height = parcel_template.height; + row.weight = parcel_template.weight; + frm.refresh_fields("shipment_parcel"); + }); + } + }, + pickup_date: function(frm) { + if (frm.doc.pickup_date < frappe.datetime.get_today()) { + frappe.throw(__("Pickup Date cannot be before this day")); + } + if (frm.doc.pickup_date == frappe.datetime.get_today()) { + var pickup_time = frm.events.get_pickup_time(frm); + frm.set_value("pickup_from", pickup_time); + frm.trigger('set_pickup_to_time'); + } + }, + pickup_from: function(frm) { + var pickup_time = frm.events.get_pickup_time(frm); + if (frm.doc.pickup_from && frm.doc.pickup_date == frappe.datetime.get_today()) { + let current_hour = pickup_time.split(':')[0]; + let current_min = pickup_time.split(':')[1]; + let pickup_hour = frm.doc.pickup_from.split(':')[0]; + let pickup_min = frm.doc.pickup_from.split(':')[1]; + if (pickup_hour < current_hour || (pickup_hour == current_hour && pickup_min < current_min)) { + frm.set_value("pickup_from", pickup_time); + frappe.throw(__("Pickup Time cannot be in the past")); + } + } + frm.trigger('set_pickup_to_time'); + }, + get_pickup_time: function() { + let current_hour = new Date().getHours(); + let current_min = new Date().toLocaleString('en-US', {minute: 'numeric'}); + if (current_min < 30) { + current_min = '30'; + } else { + current_min = '00'; + current_hour = Number(current_hour)+1; + } + let pickup_time = current_hour +':'+ current_min; + return pickup_time; + }, + set_pickup_to_time: function(frm) { + let pickup_to_hour = Number(frm.doc.pickup_from.split(':')[0])+5; + let pickup_to_min = frm.doc.pickup_from.split(':')[1]; + let pickup_to = pickup_to_hour +':'+ pickup_to_min; + frm.set_value("pickup_to", pickup_to); + }, + clear_pickup_fields: function(frm) { + let fields = ["pickup_address_name", "pickup_contact_name", "pickup_address", "pickup_contact", "pickup_contact_email", "pickup_contact_person"]; + for (let field of fields) { + frm.set_value(field, ''); + } + }, + clear_delivery_fields: function(frm) { + let fields = ["delivery_address_name", "delivery_contact_name", "delivery_address", "delivery_contact", "delivery_contact_email"]; + for (let field of fields) { + frm.set_value(field, ''); + } + }, + remove_email_row: function(frm, table, fieldname) { + $.each(frm.doc[table] || [], function(i, detail) { + if (detail.email === fieldname) { + cur_frm.get_field(table).grid.grid_rows[i].remove(); + } + }); + } +}); + +frappe.ui.form.on('Shipment Delivery Note', { + delivery_note: function(frm, cdt, cdn) { + let row = locals[cdt][cdn]; + if (row.delivery_note) { + let row_index = row.idx - 1; + if (validate_duplicate(frm, 'shipment_delivery_note', row.delivery_note, row_index)) { + frappe.throw(__("You have entered a duplicate Delivery Note on Row") + ` ${row.idx}. ` + __("Please rectify and try again.")); + } + } + }, + grand_total: function(frm, cdt, cdn) { + let row = locals[cdt][cdn]; + if (row.grand_total) { + var value_of_goods = parseFloat(frm.doc.value_of_goods)+parseFloat(row.grand_total); + frm.set_value("value_of_goods", Math.round(value_of_goods)); + frm.refresh_fields("value_of_goods"); + } + }, +}); + +var validate_duplicate = function(frm, table, fieldname, index) { + return ( + table === 'shipment_delivery_note' + ? frm.doc[table].some((detail, i) => detail.delivery_note === fieldname && !(index === i)) + : frm.doc[table].some((detail, i) => detail.email === fieldname && !(index === i)) + ); +}; diff --git a/erpnext/stock/doctype/shipment/shipment.json b/erpnext/stock/doctype/shipment/shipment.json new file mode 100644 index 0000000000..37a9cc6c02 --- /dev/null +++ b/erpnext/stock/doctype/shipment/shipment.json @@ -0,0 +1,471 @@ +{ + "actions": [], + "autoname": "SHIPMENT-.#####", + "creation": "2020-07-09 10:58:52.508703", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "heading_pickup_from", + "pickup_from_type", + "pickup_company", + "pickup_customer", + "pickup_supplier", + "pickup", + "pickup_address_name", + "pickup_address", + "pickup_contact_person", + "pickup_contact_name", + "pickup_contact_email", + "pickup_contact", + "column_break_2", + "heading_delivery_to", + "delivery_to_type", + "delivery_company", + "delivery_customer", + "delivery_supplier", + "delivery_to", + "delivery_address_name", + "delivery_address", + "delivery_contact_name", + "delivery_contact_email", + "delivery_contact", + "parcels_section", + "shipment_parcel", + "parcel_template", + "add_template", + "column_break_28", + "shipment_delivery_note", + "shipment_details_section", + "pallets", + "value_of_goods", + "pickup_date", + "pickup_from", + "pickup_to", + "column_break_36", + "shipment_type", + "pickup_type", + "incoterm", + "description_of_content", + "section_break_40", + "shipment_information_section", + "service_provider", + "shipment_id", + "shipment_amount", + "status", + "tracking_url", + "column_break_55", + "carrier", + "carrier_service", + "awb_number", + "tracking_status", + "tracking_status_info", + "amended_from" + ], + "fields": [ + { + "fieldname": "heading_pickup_from", + "fieldtype": "Heading", + "label": "Pickup from" + }, + { + "default": "Company", + "fieldname": "pickup_from_type", + "fieldtype": "Select", + "label": "Pickup from", + "options": "Company\nCustomer\nSupplier" + }, + { + "depends_on": "eval:doc.pickup_from_type == 'Company'", + "fieldname": "pickup_company", + "fieldtype": "Link", + "label": "Company", + "options": "Company" + }, + { + "depends_on": "eval:doc.pickup_from_type == 'Customer'", + "fieldname": "pickup_customer", + "fieldtype": "Link", + "label": "Customer", + "options": "Customer" + }, + { + "depends_on": "eval:doc.pickup_from_type == 'Supplier'", + "fieldname": "pickup_supplier", + "fieldtype": "Link", + "label": "Supplier", + "options": "Supplier" + }, + { + "fieldname": "pickup", + "fieldtype": "Data", + "hidden": 1, + "in_list_view": 1, + "label": "Pickup From", + "read_only": 1 + }, + { + "depends_on": "eval: doc.pickup_customer || doc.pickup_supplier || doc.pickup_from_type == \"Company\"", + "fieldname": "pickup_address_name", + "fieldtype": "Link", + "label": "Address", + "options": "Address", + "reqd": 1 + }, + { + "fieldname": "pickup_address", + "fieldtype": "Small Text", + "read_only": 1 + }, + { + "depends_on": "eval: doc.pickup_customer || doc.pickup_supplier || doc.pickup_from_type !== \"Company\"", + "fieldname": "pickup_contact_name", + "fieldtype": "Link", + "label": "Contact", + "mandatory_depends_on": "eval: doc.pickup_from_type !== 'Company'", + "options": "Contact" + }, + { + "fieldname": "pickup_contact_email", + "fieldtype": "Data", + "hidden": 1, + "label": "Contact Email", + "read_only": 1 + }, + { + "fieldname": "pickup_contact", + "fieldtype": "Small Text", + "read_only": 1 + }, + { + "fieldname": "column_break_2", + "fieldtype": "Column Break" + }, + { + "fieldname": "heading_delivery_to", + "fieldtype": "Heading", + "label": "Delivery to" + }, + { + "default": "Customer", + "fieldname": "delivery_to_type", + "fieldtype": "Select", + "label": "Delivery to", + "options": "Company\nCustomer\nSupplier" + }, + { + "depends_on": "eval:doc.delivery_to_type == 'Company'", + "fieldname": "delivery_company", + "fieldtype": "Link", + "label": "Company", + "options": "Company" + }, + { + "depends_on": "eval:doc.delivery_to_type == 'Customer'", + "fieldname": "delivery_customer", + "fieldtype": "Link", + "label": "Customer", + "options": "Customer" + }, + { + "depends_on": "eval:doc.delivery_to_type == 'Supplier'", + "fieldname": "delivery_supplier", + "fieldtype": "Link", + "label": "Supplier", + "options": "Supplier" + }, + { + "fieldname": "delivery_to", + "fieldtype": "Data", + "hidden": 1, + "in_list_view": 1, + "label": "Delivery To", + "read_only": 1 + }, + { + "depends_on": "eval: doc.delivery_customer || doc.delivery_supplier || doc.delivery_to_type == \"Company\"", + "fieldname": "delivery_address_name", + "fieldtype": "Link", + "label": "Address", + "options": "Address", + "reqd": 1 + }, + { + "fieldname": "delivery_address", + "fieldtype": "Small Text", + "read_only": 1 + }, + { + "depends_on": "eval: doc.delivery_customer || doc.delivery_supplier || doc.delivery_to_type == \"Company\"", + "fieldname": "delivery_contact_name", + "fieldtype": "Link", + "label": "Contact", + "mandatory_depends_on": "eval: doc.delivery_from_type !== 'Company'", + "options": "Contact" + }, + { + "fieldname": "delivery_contact_email", + "fieldtype": "Data", + "hidden": 1, + "label": "Contact Email", + "read_only": 1 + }, + { + "depends_on": "eval:doc.delivery_contact_name", + "fieldname": "delivery_contact", + "fieldtype": "Small Text", + "read_only": 1 + }, + { + "fieldname": "parcels_section", + "fieldtype": "Section Break", + "label": "Parcels" + }, + { + "fieldname": "shipment_parcel", + "fieldtype": "Table", + "label": "Shipment Parcel", + "options": "Shipment Parcel" + }, + { + "fieldname": "parcel_template", + "fieldtype": "Link", + "label": "Parcel Template", + "options": "Shipment Parcel Template" + }, + { + "depends_on": "eval:doc.docstatus !== 1\n", + "fieldname": "add_template", + "fieldtype": "Button", + "label": "Add Template" + }, + { + "fieldname": "column_break_28", + "fieldtype": "Column Break" + }, + { + "fieldname": "shipment_details_section", + "fieldtype": "Section Break", + "label": "Shipment details" + }, + { + "default": "No", + "fieldname": "pallets", + "fieldtype": "Select", + "label": "Pallets", + "options": "No\nYes" + }, + { + "fieldname": "value_of_goods", + "fieldtype": "Currency", + "label": "Value of Goods", + "precision": "2", + "reqd": 1 + }, + { + "allow_on_submit": 1, + "fieldname": "pickup_date", + "fieldtype": "Date", + "in_list_view": 1, + "label": "Pickup Date", + "reqd": 1 + }, + { + "allow_on_submit": 1, + "default": "09:00", + "fieldname": "pickup_from", + "fieldtype": "Time", + "label": "Pickup from" + }, + { + "allow_on_submit": 1, + "default": "17:00", + "fieldname": "pickup_to", + "fieldtype": "Time", + "label": "Pickup to" + }, + { + "fieldname": "column_break_36", + "fieldtype": "Column Break" + }, + { + "default": "Goods", + "fieldname": "shipment_type", + "fieldtype": "Select", + "label": "Shipment Type", + "options": "Goods\nDocuments" + }, + { + "default": "Pickup", + "fieldname": "pickup_type", + "fieldtype": "Select", + "label": "Pickup Type", + "options": "Pickup\nSelf delivery" + }, + { + "fieldname": "description_of_content", + "fieldtype": "Small Text", + "label": "Description of Content", + "reqd": 1 + }, + { + "fieldname": "section_break_40", + "fieldtype": "Section Break" + }, + { + "fieldname": "shipment_information_section", + "fieldtype": "Section Break", + "label": "Shipment Information" + }, + { + "fieldname": "service_provider", + "fieldtype": "Data", + "label": "Service Provider", + "no_copy": 1, + "print_hide": 1 + }, + { + "fieldname": "shipment_id", + "fieldtype": "Data", + "label": "Shipment ID", + "no_copy": 1, + "print_hide": 1 + }, + { + "fieldname": "shipment_amount", + "fieldtype": "Currency", + "label": "Shipment Amount", + "no_copy": 1, + "precision": "2", + "print_hide": 1 + }, + { + "fieldname": "status", + "fieldtype": "Select", + "label": "Status", + "no_copy": 1, + "options": "Draft\nSubmitted\nBooked\nCancelled\nCompleted", + "print_hide": 1 + }, + { + "fieldname": "tracking_url", + "fieldtype": "Small Text", + "hidden": 1, + "label": "Tracking URL", + "no_copy": 1, + "print_hide": 1, + "read_only": 1 + }, + { + "fieldname": "carrier", + "fieldtype": "Data", + "label": "Carrier", + "no_copy": 1, + "print_hide": 1 + }, + { + "fieldname": "carrier_service", + "fieldtype": "Data", + "label": "Carrier Service", + "no_copy": 1, + "print_hide": 1 + }, + { + "fieldname": "awb_number", + "fieldtype": "Data", + "label": "AWB Number", + "no_copy": 1, + "print_hide": 1 + }, + { + "fieldname": "tracking_status", + "fieldtype": "Select", + "label": "Tracking Status", + "no_copy": 1, + "options": "\nIn Progress\nDelivered\nReturned\nLost", + "print_hide": 1 + }, + { + "fieldname": "tracking_status_info", + "fieldtype": "Data", + "label": "Tracking Status Info", + "no_copy": 1, + "print_hide": 1, + "read_only": 1 + }, + { + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 1, + "label": "Amended From", + "no_copy": 1, + "options": "Shipment", + "print_hide": 1, + "read_only": 1 + }, + { + "fieldname": "column_break_55", + "fieldtype": "Column Break" + }, + { + "fieldname": "incoterm", + "fieldtype": "Select", + "label": "Incoterm", + "options": "EXW (Ex Works)\nFCA (Free Carrier)\nCPT (Carriage Paid To)\nCIP (Carriage and Insurance Paid to)\nDPU (Delivered At Place Unloaded)\nDAP (Delivered At Place)\nDDP (Delivered Duty Paid)" + }, + { + "fieldname": "shipment_delivery_note", + "fieldtype": "Table", + "label": "Shipment Delivery Note", + "options": "Shipment Delivery Note" + }, + { + "depends_on": "eval:doc.pickup_from_type === 'Company'", + "fieldname": "pickup_contact_person", + "fieldtype": "Link", + "label": "Pickup Contact Person", + "mandatory_depends_on": "eval:doc.pickup_from_type === 'Company'", + "options": "User" + } + ], + "is_submittable": 1, + "links": [], + "modified": "2020-12-02 15:43:44.607039", + "modified_by": "Administrator", + "module": "Stock", + "name": "Shipment", + "owner": "Administrator", + "permissions": [ + { + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Stock Manager", + "share": 1, + "submit": 1, + "write": 1 + }, + { + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "submit": 1, + "write": 1 + } + ], + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 +} \ No newline at end of file diff --git a/erpnext/stock/doctype/shipment/shipment.py b/erpnext/stock/doctype/shipment/shipment.py new file mode 100644 index 0000000000..de0c243b05 --- /dev/null +++ b/erpnext/stock/doctype/shipment/shipment.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe +from frappe import _ +from frappe.utils import flt +from frappe.model.document import Document +from erpnext.accounts.party import get_party_shipping_address +from frappe.contacts.doctype.contact.contact import get_default_contact + +class Shipment(Document): + def validate(self): + self.validate_weight() + self.set_value_of_goods() + if self.docstatus == 0: + self.status = 'Draft' + + def on_submit(self): + if not self.shipment_parcel: + frappe.throw(_('Please enter Shipment Parcel information')) + if self.value_of_goods == 0: + frappe.throw(_('Value of goods cannot be 0')) + self.status = 'Submitted' + + def on_cancel(self): + self.status = 'Cancelled' + + def validate_weight(self): + for parcel in self.shipment_parcel: + if flt(parcel.weight) <= 0: + frappe.throw(_('Parcel weight cannot be 0')) + + def set_value_of_goods(self): + value_of_goods = 0 + for entry in self.get("shipment_delivery_note"): + value_of_goods += flt(entry.get("grand_total")) + self.value_of_goods = value_of_goods if value_of_goods else self.value_of_goods + +@frappe.whitelist() +def get_address_name(ref_doctype, docname): + # Return address name + return get_party_shipping_address(ref_doctype, docname) + +@frappe.whitelist() +def get_contact_name(ref_doctype, docname): + # Return address name + return get_default_contact(ref_doctype, docname) + +@frappe.whitelist() +def get_company_contact(user): + contact = frappe.db.get_value('User', user, [ + 'first_name', + 'last_name', + 'email', + 'phone', + 'mobile_no', + 'gender', + ], as_dict=1) + if not contact.phone: + contact.phone = contact.mobile_no + return contact diff --git a/erpnext/stock/doctype/shipment/shipment_list.js b/erpnext/stock/doctype/shipment/shipment_list.js new file mode 100644 index 0000000000..52b052c81f --- /dev/null +++ b/erpnext/stock/doctype/shipment/shipment_list.js @@ -0,0 +1,8 @@ +frappe.listview_settings['Shipment'] = { + add_fields: ["status"], + get_indicator: function(doc) { + if (doc.status=='Booked') { + return [__("Booked"), "green"]; + } + } +}; \ No newline at end of file diff --git a/erpnext/stock/doctype/shipment/test_shipment.py b/erpnext/stock/doctype/shipment/test_shipment.py new file mode 100644 index 0000000000..e1fa207a21 --- /dev/null +++ b/erpnext/stock/doctype/shipment/test_shipment.py @@ -0,0 +1,240 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals +from datetime import date, timedelta + +import frappe +import unittest +from erpnext.stock.doctype.delivery_note.delivery_note import make_shipment + +class TestShipment(unittest.TestCase): + def test_shipment_from_delivery_note(self): + delivery_note = create_test_delivery_note() + delivery_note.submit() + shipment = create_test_shipment([ delivery_note ]) + shipment.submit() + second_shipment = make_shipment(delivery_note.name) + self.assertEqual(second_shipment.value_of_goods, delivery_note.grand_total) + self.assertEqual(len(second_shipment.shipment_delivery_note), 1) + self.assertEqual(second_shipment.shipment_delivery_note[0].delivery_note, delivery_note.name) + +def create_test_delivery_note(): + company = get_shipment_company() + customer = get_shipment_customer() + item = get_shipment_item(company.name) + posting_date = date.today() + timedelta(days=1) + + create_material_receipt(item, company.name) + delivery_note = frappe.new_doc("Delivery Note") + delivery_note.company = company.name + delivery_note.posting_date = posting_date.strftime("%Y-%m-%d") + delivery_note.posting_time = '10:00' + delivery_note.customer = customer.name + delivery_note.append('items', + { + "item_code": item.name, + "item_name": item.item_name, + "description": 'Test delivery note for shipment', + "qty": 5, + "uom": 'Nos', + "warehouse": 'Stores - SC', + "rate": item.standard_rate, + "cost_center": 'Main - SC' + } + ) + delivery_note.insert() + frappe.db.commit() + return delivery_note + + +def create_test_shipment(delivery_notes = None): + company = get_shipment_company() + company_address = get_shipment_company_address(company.name) + customer = get_shipment_customer() + customer_address = get_shipment_customer_address(customer.name) + customer_contact = get_shipment_customer_contact(customer.name) + posting_date = date.today() + timedelta(days=5) + + shipment = frappe.new_doc("Shipment") + shipment.pickup_from_type = 'Company' + shipment.pickup_company = company.name + shipment.pickup_address_name = company_address.name + shipment.delivery_to_type = 'Customer' + shipment.delivery_customer = customer.name + shipment.delivery_address_name = customer_address.name + shipment.delivery_contact_name = customer_contact.name + shipment.pallets = 'No' + shipment.shipment_type = 'Goods' + shipment.value_of_goods = 1000 + shipment.pickup_type = 'Pickup' + shipment.pickup_date = posting_date.strftime("%Y-%m-%d") + shipment.pickup_from = '09:00' + shipment.pickup_to = '17:00' + shipment.description_of_content = 'unit test entry' + for delivery_note in delivery_notes: + shipment.append('shipment_delivery_note', + { + "delivery_note": delivery_note.name + } + ) + shipment.append('shipment_parcel', + { + "length": 5, + "width": 5, + "height": 5, + "weight": 5, + "count": 5 + } + ) + shipment.insert() + frappe.db.commit() + return shipment + + +def get_shipment_customer_contact(customer_name): + contact_fname = 'Customer Shipment' + contact_lname = 'Testing' + customer_name = contact_fname + ' ' + contact_lname + contacts = frappe.get_all("Contact", fields=["name"], filters = {"name": customer_name}) + if len(contacts): + return contacts[0] + else: + return create_customer_contact(contact_fname, contact_lname) + + +def get_shipment_customer_address(customer_name): + address_title = customer_name + ' address 123' + customer_address = frappe.get_all("Address", fields=["name"], filters = {"address_title": address_title}) + if len(customer_address): + return customer_address[0] + else: + return create_shipment_address(address_title, customer_name, 81929) + +def get_shipment_customer(): + customer_name = 'Shipment Customer' + customer = frappe.get_all("Customer", fields=["name"], filters = {"name": customer_name}) + if len(customer): + return customer[0] + else: + return create_shipment_customer(customer_name) + +def get_shipment_company_address(company_name): + address_title = company_name + ' address 123' + addresses = frappe.get_all("Address", fields=["name"], filters = {"address_title": address_title}) + if len(addresses): + return addresses[0] + else: + return create_shipment_address(address_title, company_name, 80331) + +def get_shipment_company(): + company_name = 'Shipment Company' + abbr = 'SC' + companies = frappe.get_all("Company", fields=["name"], filters = {"company_name": company_name}) + if len(companies): + return companies[0] + else: + return create_shipment_company(company_name, abbr) + +def get_shipment_item(company_name): + item_name = 'Testing Shipment item' + items = frappe.get_all("Item", + fields=["name", "item_name", "item_code", "standard_rate"], + filters = {"item_name": item_name} + ) + if len(items): + return items[0] + else: + return create_shipment_item(item_name, company_name) + +def create_shipment_address(address_title, company_name, postal_code): + address = frappe.new_doc("Address") + address.address_title = address_title + address.address_type = 'Shipping' + address.address_line1 = company_name + ' address line 1' + address.city = 'Random City' + address.postal_code = postal_code + address.country = 'Germany' + address.insert() + return address + + +def create_customer_contact(fname, lname): + customer = frappe.new_doc("Contact") + customer.customer_name = fname + ' ' + lname + customer.first_name = fname + customer.last_name = lname + customer.is_primary_contact = 1 + customer.is_billing_contact = 1 + customer.append('email_ids', + { + 'email_id': 'randomme@email.com', + 'is_primary': 1 + } + ) + customer.append('phone_nos', + { + 'phone': '123123123', + 'is_primary_phone': 1, + 'is_primary_mobile_no': 1 + } + ) + customer.status = 'Passive' + customer.insert() + return customer + + +def create_shipment_company(company_name, abbr): + company = frappe.new_doc("Company") + company.company_name = company_name + company.abbr = abbr + company.default_currency = 'EUR' + company.country = 'Germany' + company.insert() + return company + +def create_shipment_customer(customer_name): + customer = frappe.new_doc("Customer") + customer.customer_name = customer_name + customer.customer_type = 'Company' + customer.customer_group = 'All Customer Groups' + customer.territory = 'All Territories' + customer.gst_category = 'Unregistered' + customer.insert() + return customer + +def create_material_receipt(item, company): + posting_date = date.today() + stock = frappe.new_doc("Stock Entry") + stock.company = company + stock.stock_entry_type = 'Material Receipt' + stock.posting_date = posting_date.strftime("%Y-%m-%d") + stock.append('items', + { + "t_warehouse": 'Stores - SC', + "item_code": item.name, + "qty": 5, + "uom": 'Nos', + "basic_rate": item.standard_rate, + "cost_center": 'Main - SC' + } + ) + stock.insert() + stock.submit() + + +def create_shipment_item(item_name, company_name): + item = frappe.new_doc("Item") + item.item_name = item_name + item.item_code = item_name + item.item_group = 'All Item Groups' + item.stock_uom = 'Nos' + item.standard_rate = 50 + item.append('item_defaults', + { + "company": company_name, + "default_warehouse": 'Stores - SC' + } + ) + item.insert() + return item diff --git a/erpnext/stock/doctype/shipment_delivery_note/__init__.py b/erpnext/stock/doctype/shipment_delivery_note/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/stock/doctype/shipment_delivery_note/shipment_delivery_note.json b/erpnext/stock/doctype/shipment_delivery_note/shipment_delivery_note.json new file mode 100644 index 0000000000..8625913718 --- /dev/null +++ b/erpnext/stock/doctype/shipment_delivery_note/shipment_delivery_note.json @@ -0,0 +1,40 @@ +{ + "actions": [], + "creation": "2020-07-09 11:52:57.939021", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "delivery_note", + "grand_total" + ], + "fields": [ + { + "fieldname": "delivery_note", + "fieldtype": "Link", + "in_list_view": 1, + "label": "Delivery Note", + "options": "Delivery Note", + "reqd": 1 + }, + { + "fieldname": "grand_total", + "fieldtype": "Currency", + "in_list_view": 1, + "label": "Value", + "read_only": 1 + } + ], + "istable": 1, + "links": [], + "modified": "2020-12-02 15:44:34.028703", + "modified_by": "Administrator", + "module": "Stock", + "name": "Shipment Delivery Note", + "owner": "Administrator", + "permissions": [], + "quick_entry": 1, + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 +} \ No newline at end of file diff --git a/erpnext/stock/doctype/shipment_delivery_note/shipment_delivery_note.py b/erpnext/stock/doctype/shipment_delivery_note/shipment_delivery_note.py new file mode 100644 index 0000000000..4342151605 --- /dev/null +++ b/erpnext/stock/doctype/shipment_delivery_note/shipment_delivery_note.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +# import frappe +from frappe.model.document import Document + +class ShipmentDeliveryNote(Document): + pass diff --git a/erpnext/stock/doctype/shipment_parcel/__init__.py b/erpnext/stock/doctype/shipment_parcel/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/stock/doctype/shipment_parcel/shipment_parcel.json b/erpnext/stock/doctype/shipment_parcel/shipment_parcel.json new file mode 100644 index 0000000000..6943edcdc9 --- /dev/null +++ b/erpnext/stock/doctype/shipment_parcel/shipment_parcel.json @@ -0,0 +1,65 @@ +{ + "actions": [], + "creation": "2020-07-09 11:28:48.887737", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "length", + "width", + "height", + "weight", + "count" + ], + "fields": [ + { + "fieldname": "length", + "fieldtype": "Int", + "in_list_view": 1, + "label": "Length (cm)", + "reqd": 1 + }, + { + "fieldname": "width", + "fieldtype": "Int", + "in_list_view": 1, + "label": "Width (cm)", + "reqd": 1 + }, + { + "fieldname": "height", + "fieldtype": "Int", + "in_list_view": 1, + "label": "Height (cm)", + "reqd": 1 + }, + { + "fieldname": "weight", + "fieldtype": "Float", + "in_list_view": 1, + "label": "Weight (kg)", + "precision": "1", + "reqd": 1 + }, + { + "default": "1", + "fieldname": "count", + "fieldtype": "Int", + "in_list_view": 1, + "label": "Count", + "reqd": 1 + } + ], + "istable": 1, + "links": [], + "modified": "2020-07-09 12:54:14.847170", + "modified_by": "Administrator", + "module": "Stock", + "name": "Shipment Parcel", + "owner": "Administrator", + "permissions": [], + "quick_entry": 1, + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 +} \ No newline at end of file diff --git a/erpnext/stock/doctype/shipment_parcel/shipment_parcel.py b/erpnext/stock/doctype/shipment_parcel/shipment_parcel.py new file mode 100644 index 0000000000..53e6ed55dd --- /dev/null +++ b/erpnext/stock/doctype/shipment_parcel/shipment_parcel.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +# import frappe +from frappe.model.document import Document + +class ShipmentParcel(Document): + pass diff --git a/erpnext/stock/doctype/shipment_parcel_template/__init__.py b/erpnext/stock/doctype/shipment_parcel_template/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/stock/doctype/shipment_parcel_template/shipment_parcel_template.js b/erpnext/stock/doctype/shipment_parcel_template/shipment_parcel_template.js new file mode 100644 index 0000000000..785a3b304d --- /dev/null +++ b/erpnext/stock/doctype/shipment_parcel_template/shipment_parcel_template.js @@ -0,0 +1,8 @@ +// Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +frappe.ui.form.on('Shipment Parcel Template', { + // refresh: function(frm) { + + // } +}); diff --git a/erpnext/stock/doctype/shipment_parcel_template/shipment_parcel_template.json b/erpnext/stock/doctype/shipment_parcel_template/shipment_parcel_template.json new file mode 100644 index 0000000000..4735d9f886 --- /dev/null +++ b/erpnext/stock/doctype/shipment_parcel_template/shipment_parcel_template.json @@ -0,0 +1,78 @@ +{ + "actions": [], + "autoname": "field:parcel_template_name", + "creation": "2020-07-09 11:43:43.470339", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "parcel_template_name", + "length", + "width", + "height", + "weight" + ], + "fields": [ + { + "fieldname": "length", + "fieldtype": "Int", + "in_list_view": 1, + "label": "Length (cm)", + "reqd": 1 + }, + { + "fieldname": "width", + "fieldtype": "Int", + "in_list_view": 1, + "label": "Width (cm)", + "reqd": 1 + }, + { + "fieldname": "height", + "fieldtype": "Int", + "in_list_view": 1, + "label": "Height (cm)", + "reqd": 1 + }, + { + "fieldname": "weight", + "fieldtype": "Float", + "in_list_view": 1, + "label": "Weight (kg)", + "precision": "1", + "reqd": 1 + }, + { + "fieldname": "parcel_template_name", + "fieldtype": "Data", + "in_list_view": 1, + "label": "Parcel Template Name", + "reqd": 1, + "unique": 1 + } + ], + "links": [], + "modified": "2020-09-28 12:51:00.320421", + "modified_by": "Administrator", + "module": "Stock", + "name": "Shipment Parcel Template", + "owner": "Administrator", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "write": 1 + } + ], + "quick_entry": 1, + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 +} \ No newline at end of file diff --git a/erpnext/stock/doctype/shipment_parcel_template/shipment_parcel_template.py b/erpnext/stock/doctype/shipment_parcel_template/shipment_parcel_template.py new file mode 100644 index 0000000000..2a8d58d830 --- /dev/null +++ b/erpnext/stock/doctype/shipment_parcel_template/shipment_parcel_template.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +# import frappe +from frappe.model.document import Document + +class ShipmentParcelTemplate(Document): + pass diff --git a/erpnext/stock/doctype/shipment_parcel_template/test_shipment_parcel_template.py b/erpnext/stock/doctype/shipment_parcel_template/test_shipment_parcel_template.py new file mode 100644 index 0000000000..6e2caa768b --- /dev/null +++ b/erpnext/stock/doctype/shipment_parcel_template/test_shipment_parcel_template.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals + +# import frappe +import unittest + +class TestShipmentParcelTemplate(unittest.TestCase): + pass diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js index 39fd029a89..91217582ca 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.js +++ b/erpnext/stock/doctype/stock_entry/stock_entry.js @@ -225,7 +225,7 @@ frappe.ui.form.on('Stock Entry', { docstatus: 1 } }) - }, __("Get items from")); + }, __("Get Items From")); frm.add_custom_button(__('Material Request'), function() { erpnext.utils.map_current_doc({ @@ -240,7 +240,7 @@ frappe.ui.form.on('Stock Entry', { status: ["not in", ["Transferred", "Issued"]] } }) - }, __("Get items from")); + }, __("Get Items From")); } if (frm.doc.docstatus===0 && frm.doc.purpose == "Material Issue") { frm.add_custom_button(__('Expired Batches'), function() { @@ -263,7 +263,7 @@ frappe.ui.form.on('Stock Entry', { } } }); - }, __("Get items from")); + }, __("Get Items From")); } frm.events.show_bom_custom_button(frm); @@ -282,7 +282,7 @@ frappe.ui.form.on('Stock Entry', { }, stock_entry_type: function(frm){ - frm.remove_custom_button('Bill of Materials', "Get items from"); + frm.remove_custom_button('Bill of Materials', "Get Items From"); frm.events.show_bom_custom_button(frm); frm.trigger('add_to_transit'); }, @@ -425,9 +425,9 @@ frappe.ui.form.on('Stock Entry', { show_bom_custom_button: function(frm){ if (frm.doc.docstatus === 0 && ['Material Issue', 'Material Receipt', 'Material Transfer', 'Send to Subcontractor'].includes(frm.doc.purpose)) { - frm.add_custom_button(__('Bill of Materials'), function() { - frm.events.get_items_from_bom(frm); - }, __("Get items from")); + frm.add_custom_button(__('Bill of Materials'), function() { + frm.events.get_items_from_bom(frm); + }, __("Get Items From")); } }, diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 768526705c..e3159b95c3 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -1227,8 +1227,6 @@ class StockEntry(StockController): return item_dict def add_to_stock_entry_detail(self, item_dict, bom_no=None): - cost_center = frappe.db.get_value("Company", self.company, 'cost_center') - for d in item_dict: stock_uom = item_dict[d].get("stock_uom") or frappe.db.get_value("Item", d, "stock_uom") @@ -1239,9 +1237,10 @@ class StockEntry(StockController): se_child.uom = item_dict[d]["uom"] if item_dict[d].get("uom") else stock_uom se_child.stock_uom = stock_uom se_child.qty = flt(item_dict[d]["qty"], se_child.precision("qty")) - se_child.cost_center = item_dict[d].get("cost_center") or cost_center se_child.allow_alternative_item = item_dict[d].get("allow_alternative_item", 0) se_child.subcontracted_item = item_dict[d].get("main_item_code") + se_child.cost_center = (item_dict[d].get("cost_center") or + get_default_cost_center(item_dict[d], company = self.company)) for field in ["idx", "po_detail", "original_item", "expense_account", "description", "item_name"]: diff --git a/erpnext/stock/doctype/stock_settings/stock_settings.json b/erpnext/stock/doctype/stock_settings/stock_settings.json index 067659f64a..a1666579d1 100644 --- a/erpnext/stock/doctype/stock_settings/stock_settings.json +++ b/erpnext/stock/doctype/stock_settings/stock_settings.json @@ -217,7 +217,7 @@ "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2020-10-13 10:33:29.147682", + "modified": "2020-11-23 15:26:54.225608", "modified_by": "Administrator", "module": "Stock", "name": "Stock Settings", @@ -235,5 +235,6 @@ ], "quick_entry": 1, "sort_field": "modified", - "sort_order": "ASC" + "sort_order": "ASC", + "track_changes": 1 } \ No newline at end of file diff --git a/erpnext/stock/doctype/stock_settings/stock_settings.py b/erpnext/stock/doctype/stock_settings/stock_settings.py index 4c7828b873..3b9608b805 100644 --- a/erpnext/stock/doctype/stock_settings/stock_settings.py +++ b/erpnext/stock/doctype/stock_settings/stock_settings.py @@ -55,7 +55,7 @@ class StockSettings(Document): """) if sle: - frappe.throw(_("Can't change valuation method, as there are transactions against some items which does not have it's own valuation method")) + frappe.throw(_("Can't change the valuation method, as there are transactions against some items which do not have its own valuation method")) def validate_clean_description_html(self): if int(self.clean_description_html or 0) \ diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index 8d8dcb74c3..08f7a83b89 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -559,23 +559,40 @@ def get_default_deferred_account(args, item, fieldname=None): else: return None -def get_default_cost_center(args, item, item_group, brand, company=None): +def get_default_cost_center(args, item=None, item_group=None, brand=None, company=None): cost_center = None + + if not company and args.get("company"): + company = args.get("company") + if args.get('project'): cost_center = frappe.db.get_value("Project", args.get("project"), "cost_center", cache=True) - if not cost_center: + if not cost_center and (item and item_group and brand): if args.get('customer'): cost_center = item.get('selling_cost_center') or item_group.get('selling_cost_center') or brand.get('selling_cost_center') else: cost_center = item.get('buying_cost_center') or item_group.get('buying_cost_center') or brand.get('buying_cost_center') - cost_center = cost_center or args.get("cost_center") + elif not cost_center and args.get("item_code") and company: + for method in ["get_item_defaults", "get_item_group_defaults", "get_brand_defaults"]: + path = "erpnext.stock.get_item_details.{0}".format(method) + data = frappe.get_attr(path)(args.get("item_code"), company) + + if data and (data.selling_cost_center or data.buying_cost_center): + return data.selling_cost_center or data.buying_cost_center + + if not cost_center and args.get("cost_center"): + cost_center = args.get("cost_center") if (company and cost_center and frappe.get_cached_value("Cost Center", cost_center, "company") != company): return None + if not cost_center and company: + cost_center = frappe.get_cached_value("Company", + company, "cost_center") + return cost_center def get_default_supplier(args, item, item_group, brand): diff --git a/erpnext/stock/report/stock_ageing/stock_ageing.py b/erpnext/stock/report/stock_ageing/stock_ageing.py index 3dc806fb43..8aaf7abcbe 100644 --- a/erpnext/stock/report/stock_ageing/stock_ageing.py +++ b/erpnext/stock/report/stock_ageing/stock_ageing.py @@ -20,7 +20,8 @@ def execute(filters=None): fifo_queue = sorted(filter(_func, item_dict["fifo_queue"]), key=_func) details = item_dict["details"] - if not fifo_queue and (not item_dict.get("total_qty")): continue + + if not fifo_queue: continue average_age = get_average_age(fifo_queue, to_date) earliest_age = date_diff(to_date, fifo_queue[0][1]) diff --git a/erpnext/stock/report/stock_balance/stock_balance.py b/erpnext/stock/report/stock_balance/stock_balance.py index 1339d9b682..ccd01001bb 100644 --- a/erpnext/stock/report/stock_balance/stock_balance.py +++ b/erpnext/stock/report/stock_balance/stock_balance.py @@ -164,7 +164,7 @@ def get_stock_ledger_entries(filters, items): select sle.item_code, warehouse, sle.posting_date, sle.actual_qty, sle.valuation_rate, sle.company, sle.voucher_type, sle.qty_after_transaction, sle.stock_value_difference, - sle.item_code as name, sle.voucher_no + sle.item_code as name, sle.voucher_no, sle.stock_value from `tabStock Ledger Entry` sle force index (posting_sort_index) where sle.docstatus < 2 %s %s @@ -197,7 +197,7 @@ def get_item_warehouse_map(filters, sle): else: qty_diff = flt(d.actual_qty) - value_diff = flt(d.stock_value_difference) + value_diff = flt(d.stock_value) - flt(qty_dict.bal_val) if d.posting_date < from_date: qty_dict.opening_qty += qty_diff diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py index 11e758fce3..f9ac25443e 100644 --- a/erpnext/stock/utils.py +++ b/erpnext/stock/utils.py @@ -288,7 +288,6 @@ def update_included_uom_in_report(columns, result, include_uom, conversion_facto return convertible_cols = {} - is_dict_obj = False if isinstance(result[0], dict): is_dict_obj = True @@ -310,13 +309,13 @@ def update_included_uom_in_report(columns, result, include_uom, conversion_facto for row_idx, row in enumerate(result): data = row.items() if is_dict_obj else enumerate(row) for key, value in data: - if not key in convertible_columns or not conversion_factors[row_idx]: + if key not in convertible_columns or not conversion_factors[row_idx-1]: continue if convertible_columns.get(key) == 'rate': - new_value = flt(value) * conversion_factors[row_idx] + new_value = flt(value) * conversion_factors[row_idx-1] else: - new_value = flt(value) / conversion_factors[row_idx] + new_value = flt(value) / conversion_factors[row_idx-1] if not is_dict_obj: row.insert(key+1, new_value) diff --git a/erpnext/support/doctype/issue/issue.js b/erpnext/support/doctype/issue/issue.js index fe01d4b983..086755be51 100644 --- a/erpnext/support/doctype/issue/issue.js +++ b/erpnext/support/doctype/issue/issue.js @@ -1,6 +1,13 @@ frappe.ui.form.on("Issue", { onload: function(frm) { frm.email_field = "raised_by"; + frm.set_query("customer", function () { + return { + filters: { + "disabled": 0 + } + }; + }); frappe.db.get_value("Support Settings", {name: "Support Settings"}, ["allow_resetting_service_level_agreement", "track_service_level_agreement"], (r) => { @@ -21,14 +28,14 @@ frappe.ui.form.on("Issue", { }, callback: function (r) { if (r && r.message) { - frm.set_query('priority', function() { + frm.set_query("priority", function() { return { filters: { "name": ["in", r.message.priority], } }; }); - frm.set_query('service_level_agreement', function() { + frm.set_query("service_level_agreement", function() { return { filters: { "name": ["in", r.message.service_level_agreements], @@ -45,9 +52,9 @@ frappe.ui.form.on("Issue", { if (frm.doc.status !== "Closed" && frm.doc.agreement_status === "Ongoing") { if (frm.doc.service_level_agreement) { frappe.call({ - 'method': 'frappe.client.get', + "method": "frappe.client.get", args: { - doctype: 'Service Level Agreement', + doctype: "Service Level Agreement", name: frm.doc.service_level_agreement }, callback: function(data) { @@ -127,8 +134,8 @@ frappe.ui.form.on("Issue", { reset_sla.clear(); frappe.show_alert({ - indicator: 'green', - message: __('Resetting Service Level Agreement.') + indicator: "green", + message: __("Resetting Service Level Agreement.") }); frm.call("reset_service_level_agreement", { @@ -145,35 +152,36 @@ frappe.ui.form.on("Issue", { reset_sla.show(); }, + timeline_refresh: function(frm) { // create button for "Help Article" - if(frappe.model.can_create('Help Article')) { + if (frappe.model.can_create("Help Article")) { // Removing Help Article button if exists to avoid multiple occurance frm.timeline.wrapper.find('.comment-header .asset-details .btn-add-to-kb').remove(); $('') .appendTo(frm.timeline.wrapper.find('.comment-header .asset-details:not([data-communication-type="Comment"])')) - .on('click', function() { - var content = $(this).parents('.timeline-item:first').find('.timeline-item-content').html(); - var doc = frappe.model.get_new_doc('Help Article'); + .on("click", function() { + var content = $(this).parents(".timeline-item:first").find(".timeline-item-content").html(); + var doc = frappe.model.get_new_doc("Help Article"); doc.title = frm.doc.subject; doc.content = content; - frappe.set_route('Form', 'Help Article', doc.name); + frappe.set_route("Form", "Help Article", doc.name); }); } - if (!frm.timeline.wrapper.find('.btn-split-issue').length) { + if (!frm.timeline.wrapper.find(".btn-split-issue").length) { let split_issue = __("Split Issue") $(``) .appendTo(frm.timeline.wrapper.find('.comment-header .asset-details:not([data-communication-type="Comment"])')) if (!frm.timeline.wrapper.data("split-issue-event-attached")){ - frm.timeline.wrapper.on('click', '.btn-split-issue', (e) => { + frm.timeline.wrapper.on("click", ".btn-split-issue", (e) => { var dialog = new frappe.ui.Dialog({ title: __("Split Issue"), fields: [ - {fieldname: 'subject', fieldtype: 'Data', reqd:1, label: __('Subject'), description: __('All communications including and above this shall be moved into the new Issue')} + {fieldname: "subject", fieldtype: "Data", reqd: 1, label: __("Subject"), description: __("All communications including and above this shall be moved into the new Issue")} ], primary_action_label: __("Split"), primary_action: function() { @@ -226,7 +234,7 @@ function set_time_to_resolve_and_response(frm) { function get_time_left(timestamp, agreement_status) { const diff = moment(timestamp).diff(moment()); const diff_display = diff >= 44500 ? moment.duration(diff).humanize() : "Failed"; - let indicator = (diff_display == 'Failed' && agreement_status != "Fulfilled") ? "red" : "green"; + let indicator = (diff_display == "Failed" && agreement_status != "Fulfilled") ? "red" : "green"; return {"diff_display": diff_display, "indicator": indicator}; } diff --git a/erpnext/telephony/__init__.py b/erpnext/telephony/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/telephony/doctype/__init__.py b/erpnext/telephony/doctype/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/telephony/doctype/call_log/__init__.py b/erpnext/telephony/doctype/call_log/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/telephony/doctype/call_log/call_log.js b/erpnext/telephony/doctype/call_log/call_log.js new file mode 100644 index 0000000000..977f86da0d --- /dev/null +++ b/erpnext/telephony/doctype/call_log/call_log.js @@ -0,0 +1,8 @@ +// Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +frappe.ui.form.on('Call Log', { + // refresh: function(frm) { + + // } +}); diff --git a/erpnext/communication/doctype/call_log/call_log.json b/erpnext/telephony/doctype/call_log/call_log.json similarity index 97% rename from erpnext/communication/doctype/call_log/call_log.json rename to erpnext/telephony/doctype/call_log/call_log.json index 31e79f17cd..55ad2baefd 100644 --- a/erpnext/communication/doctype/call_log/call_log.json +++ b/erpnext/telephony/doctype/call_log/call_log.json @@ -137,12 +137,11 @@ "read_only": 1 } ], - "in_create": 1, "index_web_pages_for_search": 1, "links": [], - "modified": "2020-08-25 17:08:34.085731", + "modified": "2020-11-25 14:32:44.407815", "modified_by": "Administrator", - "module": "Communication", + "module": "Telephony", "name": "Call Log", "owner": "Administrator", "permissions": [ diff --git a/erpnext/communication/doctype/call_log/call_log.py b/erpnext/telephony/doctype/call_log/call_log.py similarity index 100% rename from erpnext/communication/doctype/call_log/call_log.py rename to erpnext/telephony/doctype/call_log/call_log.py diff --git a/erpnext/telephony/doctype/call_log/test_call_log.py b/erpnext/telephony/doctype/call_log/test_call_log.py new file mode 100644 index 0000000000..faa63041ba --- /dev/null +++ b/erpnext/telephony/doctype/call_log/test_call_log.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals + +# import frappe +import unittest + +class TestCallLog(unittest.TestCase): + pass diff --git a/erpnext/telephony/doctype/incoming_call_handling_schedule/__init__.py b/erpnext/telephony/doctype/incoming_call_handling_schedule/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/telephony/doctype/incoming_call_handling_schedule/incoming_call_handling_schedule.json b/erpnext/telephony/doctype/incoming_call_handling_schedule/incoming_call_handling_schedule.json new file mode 100644 index 0000000000..6d46b4e2cd --- /dev/null +++ b/erpnext/telephony/doctype/incoming_call_handling_schedule/incoming_call_handling_schedule.json @@ -0,0 +1,60 @@ +{ + "actions": [], + "creation": "2020-11-19 11:15:54.967710", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "day_of_week", + "from_time", + "to_time", + "agent_group" + ], + "fields": [ + { + "fieldname": "day_of_week", + "fieldtype": "Select", + "in_list_view": 1, + "label": "Day Of Week", + "options": "Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday", + "reqd": 1 + }, + { + "default": "9:00:00", + "fieldname": "from_time", + "fieldtype": "Time", + "in_list_view": 1, + "label": "From Time", + "reqd": 1 + }, + { + "default": "17:00:00", + "fieldname": "to_time", + "fieldtype": "Time", + "in_list_view": 1, + "label": "To Time", + "reqd": 1 + }, + { + "fieldname": "agent_group", + "fieldtype": "Link", + "in_list_view": 1, + "label": "Agent Group", + "options": "Employee Group", + "reqd": 1 + } + ], + "index_web_pages_for_search": 1, + "istable": 1, + "links": [], + "modified": "2020-11-19 11:15:54.967710", + "modified_by": "Administrator", + "module": "Telephony", + "name": "Incoming Call Handling Schedule", + "owner": "Administrator", + "permissions": [], + "quick_entry": 1, + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 +} \ No newline at end of file diff --git a/erpnext/telephony/doctype/incoming_call_handling_schedule/incoming_call_handling_schedule.py b/erpnext/telephony/doctype/incoming_call_handling_schedule/incoming_call_handling_schedule.py new file mode 100644 index 0000000000..fcf29745e2 --- /dev/null +++ b/erpnext/telephony/doctype/incoming_call_handling_schedule/incoming_call_handling_schedule.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +# import frappe +from frappe.model.document import Document + +class IncomingCallHandlingSchedule(Document): + pass diff --git a/erpnext/telephony/doctype/incoming_call_settings/__init__.py b/erpnext/telephony/doctype/incoming_call_settings/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/telephony/doctype/incoming_call_settings/incoming_call_settings.js b/erpnext/telephony/doctype/incoming_call_settings/incoming_call_settings.js new file mode 100644 index 0000000000..1bcc846132 --- /dev/null +++ b/erpnext/telephony/doctype/incoming_call_settings/incoming_call_settings.js @@ -0,0 +1,102 @@ +// Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +function time_to_seconds(time_str) { + // Convert time string of format HH:MM:SS into seconds. + let seq = time_str.split(':'); + seq = seq.map((n) => parseInt(n)); + return (seq[0]*60*60) + (seq[1]*60) + seq[2]; +} + +function number_sort(array, ascending=true) { + let array_copy = [...array]; + if (ascending) { + array_copy.sort((a, b) => a-b); // ascending order + } else { + array_copy.sort((a, b) => b-a); // descending order + } + return array_copy; +} + +function groupby(items, key) { + // Group the list of items using the given key. + const obj = {}; + items.forEach((item) => { + if (item[key] in obj) { + obj[item[key]].push(item); + } else { + obj[item[key]] = [item]; + } + }); + return obj; +} + +function check_timeslot_overlap(ts1, ts2) { + /// Timeslot is a an array of length 2 ex: [from_time, to_time] + /// time in timeslot is an integer represents number of seconds. + if ((ts1[0] < ts2[0] && ts1[1] <= ts2[0]) || (ts1[0] >= ts2[1] && ts1[1] > ts2[1])) { + return false; + } + return true; +} + +function validate_call_schedule(schedule) { + validate_call_schedule_timeslot(schedule); + validate_call_schedule_overlaps(schedule); +} + +function validate_call_schedule_timeslot(schedule) { + // Make sure that to time slot is ahead of from time slot. + let errors = []; + + for (let row in schedule) { + let record = schedule[row]; + let from_time_in_secs = time_to_seconds(record.from_time); + let to_time_in_secs = time_to_seconds(record.to_time); + if (from_time_in_secs >= to_time_in_secs) { + errors.push(__('Call Schedule Row {0}: To time slot should always be ahead of From time slot.', [row])); + } + } + + if (errors.length > 0) { + frappe.throw(errors.join("
")); + } +} + +function is_call_schedule_overlapped(day_schedule) { + // Check if any time slots are overlapped in a day schedule. + let timeslots = []; + day_schedule.forEach((record)=> { + timeslots.push([time_to_seconds(record.from_time), time_to_seconds(record.to_time)]); + }); + + if (timeslots.length < 2) { + return false; + } + + timeslots = number_sort(timeslots); + + // Sorted timeslots will be in ascending order if not overlapped. + for (let i=1; i < timeslots.length; i++) { + if (check_timeslot_overlap(timeslots[i-1], timeslots[i])) { + return true; + } + } + return false; +} + +function validate_call_schedule_overlaps(schedule) { + let group_by_day = groupby(schedule, 'day_of_week'); + for (const [day, day_schedule] of Object.entries(group_by_day)) { + if (is_call_schedule_overlapped(day_schedule)) { + frappe.throw(__('Please fix overlapping time slots for {0}', [day])); + } + } +} + +frappe.ui.form.on('Incoming Call Settings', { + validate(frm) { + validate_call_schedule(frm.doc.call_handling_schedule); + } +}); + diff --git a/erpnext/telephony/doctype/incoming_call_settings/incoming_call_settings.json b/erpnext/telephony/doctype/incoming_call_settings/incoming_call_settings.json new file mode 100644 index 0000000000..3ffb3e49db --- /dev/null +++ b/erpnext/telephony/doctype/incoming_call_settings/incoming_call_settings.json @@ -0,0 +1,82 @@ +{ + "actions": [], + "autoname": "Prompt", + "creation": "2020-11-19 10:37:20.734245", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "call_routing", + "column_break_2", + "greeting_message", + "agent_busy_message", + "agent_unavailable_message", + "section_break_6", + "call_handling_schedule" + ], + "fields": [ + { + "default": "Sequential", + "fieldname": "call_routing", + "fieldtype": "Select", + "in_list_view": 1, + "label": "Call Routing", + "options": "Sequential\nSimultaneous" + }, + { + "fieldname": "greeting_message", + "fieldtype": "Data", + "label": "Greeting Message" + }, + { + "fieldname": "agent_busy_message", + "fieldtype": "Data", + "label": "Agent Busy Message" + }, + { + "fieldname": "agent_unavailable_message", + "fieldtype": "Data", + "label": "Agent Unavailable Message" + }, + { + "fieldname": "column_break_2", + "fieldtype": "Column Break" + }, + { + "fieldname": "section_break_6", + "fieldtype": "Section Break" + }, + { + "fieldname": "call_handling_schedule", + "fieldtype": "Table", + "label": "Call Handling Schedule", + "options": "Incoming Call Handling Schedule", + "reqd": 1 + } + ], + "index_web_pages_for_search": 1, + "links": [], + "modified": "2020-11-19 11:17:14.527862", + "modified_by": "Administrator", + "module": "Telephony", + "name": "Incoming Call Settings", + "owner": "Administrator", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "write": 1 + } + ], + "quick_entry": 1, + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 +} \ No newline at end of file diff --git a/erpnext/telephony/doctype/incoming_call_settings/incoming_call_settings.py b/erpnext/telephony/doctype/incoming_call_settings/incoming_call_settings.py new file mode 100644 index 0000000000..2b2008a8ab --- /dev/null +++ b/erpnext/telephony/doctype/incoming_call_settings/incoming_call_settings.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe +from frappe.model.document import Document +from datetime import datetime +from typing import Tuple +from frappe import _ + +class IncomingCallSettings(Document): + def validate(self): + """List of validations + * Make sure that to time slot is ahead of from time slot in call schedule + * Make sure that no overlapping timeslots for a given day + """ + self.validate_call_schedule_timeslot(self.call_handling_schedule) + self.validate_call_schedule_overlaps(self.call_handling_schedule) + + def validate_call_schedule_timeslot(self, schedule: list): + """ Make sure that to time slot is ahead of from time slot. + """ + errors = [] + for record in schedule: + from_time = self.time_to_seconds(record.from_time) + to_time = self.time_to_seconds(record.to_time) + if from_time >= to_time: + errors.append( + _('Call Schedule Row {0}: To time slot should always be ahead of From time slot.').format(record.idx) + ) + + if errors: + frappe.throw('
'.join(errors)) + + def validate_call_schedule_overlaps(self, schedule: list): + """Check if any time slots are overlapped in a day schedule. + """ + week_days = set([each.day_of_week for each in schedule]) + + for day in week_days: + timeslots = [(record.from_time, record.to_time) for record in schedule if record.day_of_week==day] + + # convert time in timeslot into an integer represents number of seconds + timeslots = sorted(map(lambda seq: tuple(map(self.time_to_seconds, seq)), timeslots)) + if len(timeslots) < 2: continue + + for i in range(1, len(timeslots)): + if self.check_timeslots_overlap(timeslots[i-1], timeslots[i]): + frappe.throw(_('Please fix overlapping time slots for {0}.').format(day)) + + @staticmethod + def check_timeslots_overlap(ts1: Tuple[int, int], ts2: Tuple[int, int]) -> bool: + if (ts1[0] < ts2[0] and ts1[1] <= ts2[0]) or (ts1[0] >= ts2[1] and ts1[1] > ts2[1]): + return False + return True + + @staticmethod + def time_to_seconds(time: str) -> int: + """Convert time string of format HH:MM:SS into seconds + """ + date_time = datetime.strptime(time, "%H:%M:%S") + return date_time - datetime(1900, 1, 1) diff --git a/erpnext/telephony/doctype/incoming_call_settings/test_incoming_call_settings.py b/erpnext/telephony/doctype/incoming_call_settings/test_incoming_call_settings.py new file mode 100644 index 0000000000..c058c117b3 --- /dev/null +++ b/erpnext/telephony/doctype/incoming_call_settings/test_incoming_call_settings.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals + +# import frappe +import unittest + +class TestIncomingCallSettings(unittest.TestCase): + pass diff --git a/erpnext/templates/pages/material_request_info.html b/erpnext/templates/pages/material_request_info.html index 9d189895b6..c7a78027b1 100644 --- a/erpnext/templates/pages/material_request_info.html +++ b/erpnext/templates/pages/material_request_info.html @@ -25,7 +25,7 @@
- {{ frappe.utils.formatdate(doc.transaction_date, 'medium') }} + {{ frappe.utils.format_date(doc.transaction_date, 'medium') }}
diff --git a/erpnext/templates/pages/order.html b/erpnext/templates/pages/order.html index 01b5f6df6c..af7af11677 100644 --- a/erpnext/templates/pages/order.html +++ b/erpnext/templates/pages/order.html @@ -42,10 +42,10 @@
- {{ frappe.utils.formatdate(doc.transaction_date, 'medium') }} + {{ frappe.utils.format_date(doc.transaction_date, 'medium') }} {% if doc.valid_till %}

- {{ _("Valid Till") }}: {{ frappe.utils.formatdate(doc.valid_till, 'medium') }} + {{ _("Valid Till") }}: {{ frappe.utils.format_date(doc.valid_till, 'medium') }}

{% endif %}
diff --git a/erpnext/translations/af.csv b/erpnext/translations/af.csv index 3cb1bd8d7e..45435d8600 100644 --- a/erpnext/translations/af.csv +++ b/erpnext/translations/af.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',Kan nie Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',Kan nie aftrek as die kategorie vir 'Waardasie' of 'Vaulering en Totaal' is nie., "Cannot delete Serial No {0}, as it is used in stock transactions","Kan nie reeksnommer {0} uitvee nie, aangesien dit in voorraadtransaksies gebruik word", Cannot enroll more than {0} students for this student group.,Kan nie meer as {0} studente vir hierdie studente groep inskryf nie., -Cannot find Item with this barcode,Kan geen item met hierdie strepieskode vind nie, Cannot find active Leave Period,Kan nie aktiewe verlofperiode vind nie, Cannot produce more Item {0} than Sales Order quantity {1},Kan nie meer item {0} produseer as hoeveelheid van die bestelling {1}, Cannot promote Employee with status Left,Kan nie werknemer bevorder met status links nie, @@ -690,7 +689,6 @@ Create Variants,Skep variante, "Create and manage daily, weekly and monthly email digests.","Skep en bestuur daaglikse, weeklikse en maandelikse e-posverdelings.", Create customer quotes,Skep kliënte kwotasies, Create rules to restrict transactions based on values.,Skep reëls om transaksies gebaseer op waardes te beperk., -Created By,Gemaak deur, Created {0} scorecards for {1} between: ,Geskep {0} telkaarte vir {1} tussen:, Creating Company and Importing Chart of Accounts,Skep 'n maatskappy en voer rekeningrekeninge in, Creating Fees,Fooie skep, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Vir die pakhuis word vereis voor indieni For row {0}: Enter Planned Qty,Vir ry {0}: Gee beplande hoeveelheid, "For {0}, only credit accounts can be linked against another debit entry",Vir {0} kan slegs kredietrekeninge gekoppel word teen 'n ander debietinskrywing, "For {0}, only debit accounts can be linked against another credit entry",Vir {0} kan slegs debietrekeninge gekoppel word teen 'n ander kredietinskrywing, -Form View,Form View, Forum Activity,Forum Aktiwiteit, Free item code is not selected,Gratis itemkode word nie gekies nie, Freight and Forwarding Charges,Vrag en vragkoste, @@ -2638,7 +2635,6 @@ Send SMS,Stuur SMS, Send mass SMS to your contacts,Stuur massa-SMS na jou kontakte, Sensitivity,sensitiwiteit, Sent,gestuur, -Serial #,Serie #, Serial No and Batch,Serial No and Batch, Serial No is mandatory for Item {0},Volgnummer is verpligtend vir item {0}, Serial No {0} does not belong to Batch {1},Reeksnommer {0} hoort nie by bondel {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Welkom by ERPNext, What do you need help with?,Waarmee het jy hulp nodig?, What does it do?,Wat doen dit?, Where manufacturing operations are carried.,Waar vervaardigingsbedrywighede uitgevoer word., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Terwyl u rekening vir kindermaatskappy {0} skep, word ouerrekening {1} nie gevind nie. Skep asseblief die ouerrekening in die ooreenstemmende COA", White,wit, Wire Transfer,Elektroniese oorbetaling, WooCommerce Products,WooCommerce Produkte, @@ -3493,6 +3488,7 @@ Likes,Hou, Merge with existing,Voeg saam met bestaande, Office,kantoor, Orientation,geaardheid, +Parent,Ouer, Passive,passiewe, Payment Failed,Betaling misluk, Percent,persent, @@ -3543,6 +3539,7 @@ Shift,verskuiwing, Show {0},Wys {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Spesiale karakters behalwe "-", "#", ".", "/", "{" En "}" word nie toegelaat in die naamreekse nie", Target Details,Teikenbesonderhede, +{0} already has a Parent Procedure {1}.,{0} het reeds 'n ouerprosedure {1}., API,API, Annual,jaarlikse, Approved,goedgekeur, @@ -4241,7 +4238,6 @@ Download as JSON,Laai af as Json, End date can not be less than start date,Einddatum kan nie minder wees as die begin datum nie, For Default Supplier (Optional),Vir Standaardverskaffer (opsioneel), From date cannot be greater than To date,Vanaf datum kan nie groter wees as Datum, -Get items from,Kry items van, Group by,Groep By, In stock,In voorraad, Item name,Item naam, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Parameter vir gehalte-terugvoersjabloon, Quality Goal,Kwaliteit doel, Monitoring Frequency,Monitor frekwensie, Weekday,weekdag, -January-April-July-October,Januarie-April-Julie-Oktober, -Revision and Revised On,Hersiening en hersien op, -Revision,hersiening, -Revised On,Hersien op, Objectives,doelwitte, Quality Goal Objective,Kwaliteit Doelwit, Objective,Doel, @@ -7574,7 +7566,6 @@ Parent Procedure,Ouerprosedure, Processes,prosesse, Quality Procedure Process,Kwaliteit prosedure proses, Process Description,Prosesbeskrywing, -Child Procedure,Kinderprosedure, Link existing Quality Procedure.,Koppel die bestaande kwaliteitsprosedure., Additional Information,Bykomende inligting, Quality Review Objective,Doel van gehaltehersiening, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Aankooporders, Purchase Receipt Trends,Aankoopontvangstendense, Purchase Register,Aankoopregister, Quotation Trends,Aanhalingstendense, -Quoted Item Comparison,Genoteerde Item Vergelyking, Received Items To Be Billed,Items ontvang om gefaktureer te word, Qty to Order,Hoeveelheid om te bestel, Requested Items To Be Transferred,Gevraagde items wat oorgedra moet word, @@ -9091,7 +9081,6 @@ Unmarked days,Ongemerkte dae, Absent Days,Afwesige dae, Conditions and Formula variable and example,Voorwaardes en formule veranderlike en voorbeeld, Feedback By,Terugvoer deur, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Vervaardigingsafdeling, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",Die kliëntnaam word standaard ingestel volgens die volledige naam wat ingevoer is. As u wil hê dat klante deur 'n, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Stel die standaardpryslys op wanneer u 'n nuwe verkoopstransaksie skep. Itempryse word uit hierdie pryslys gehaal., @@ -9692,7 +9681,6 @@ Available Balance,Beskikbare balans, Reserved Balance,Gereserveerde balans, Uncleared Balance,Onduidelike balans, Payment related to {0} is not completed,Betaling wat verband hou met {0} is nie voltooi nie, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Ry # {}: reeksnommer {}. {} is reeds oorgedra na 'n ander POS-faktuur. Kies 'n geldige reeksnr., Row #{}: Item Code: {} is not available under warehouse {}.,Ry # {}: Itemkode: {} is nie beskikbaar onder pakhuis {} nie., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Ry # {}: voorraadhoeveelheid nie genoeg vir artikelkode: {} onder pakhuis {}. Beskikbare hoeveelheid {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Ry # {}: kies 'n reeksnommer en 'n bondel teenoor item: {} of verwyder dit om die transaksie te voltooi., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Hoeveelheid nie beskikbaar vir { Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Aktiveer asseblief Laat negatiewe voorraad toe in voorraadinstellings of skep voorraadinskrywing om voort te gaan., No Inpatient Record found against patient {0},Geen pasiëntrekord gevind teen pasiënt nie {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Daar bestaan reeds 'n medikasiebevel vir binnepasiënte {0} teen pasiëntontmoeting {1}., +Allow In Returns,Laat opbrengste toe, +Hide Unavailable Items,Versteek nie-beskikbare items, +Apply Discount on Discounted Rate,Pas afslag toe op afslag, +Therapy Plan Template,Terapieplan-sjabloon, +Fetching Template Details,Haal sjabloonbesonderhede op, +Linked Item Details,Gekoppelde itembesonderhede, +Therapy Types,Terapie tipes, +Therapy Plan Template Detail,Terapieplan sjabloonbesonderhede, +Non Conformance,Nie-ooreenstemming, +Process Owner,Proses eienaar, +Corrective Action,Korrektiewe aksie, +Preventive Action,Voorkomende aksie, +Problem,Probleem, +Responsible,Verantwoordelik, +Completion By,Voltooiing deur, +Process Owner Full Name,Proses eienaar se volle naam, +Right Index,Regte indeks, +Left Index,Linkse indeks, +Sub Procedure,Subprosedure, +Passed,Geslaag, +Print Receipt,Drukbewys, +Edit Receipt,Wysig kwitansie, +Focus on search input,Fokus op soekinsette, +Focus on Item Group filter,Fokus op Item Group filter, +Checkout Order / Submit Order / New Order,Afhandeling Bestelling / Dien Bestelling / Nuwe Bestelling in, +Add Order Discount,Bestel afslag byvoeg, +Item Code: {0} is not available under warehouse {1}.,Itemkode: {0} is nie beskikbaar onder pakhuis {1} nie., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Reeksnommers nie beskikbaar vir item {0} onder pakhuis {1} nie. Probeer om die pakhuis te verander., +Fetched only {0} available serial numbers.,Slegs {0} beskikbare reeksnommers gekry., +Switch Between Payment Modes,Skakel tussen betaalmetodes, +Enter {0} amount.,Voer {0} bedrag in., +You don't have enough points to redeem.,U het nie genoeg punte om af te los nie., +You can redeem upto {0}.,U kan tot {0} gebruik., +Enter amount to be redeemed.,Voer die bedrag in wat afgelos moet word., +You cannot redeem more than {0}.,U kan nie meer as {0} gebruik nie., +Open Form View,Maak vormaansig oop, +POS invoice {0} created succesfully,POS-faktuur {0} suksesvol geskep, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Voorraadhoeveelheid nie genoeg vir artikelkode: {0} onder pakhuis {1}. Beskikbare hoeveelheid {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Serienommer: {0} is reeds oorgedra na 'n ander POS-faktuur., +Balance Serial No,Saldo Reeksnr, +Warehouse: {0} does not belong to {1},Pakhuis: {0} behoort nie tot {1}, +Please select batches for batched item {0},Kies groepe vir 'n partytjie-item {0}, +Please select quantity on row {0},Kies hoeveelheid in ry {0}, +Please enter serial numbers for serialized item {0},Voer die reeksnommers in vir die reeks-item {0}, +Batch {0} already selected.,Bondel {0} reeds gekies., +Please select a warehouse to get available quantities,Kies 'n pakhuis om beskikbare hoeveelhede te kry, +"For transfer from source, selected quantity cannot be greater than available quantity",Vir oordrag vanaf die bron kan die gekose hoeveelheid nie groter wees as die beskikbare hoeveelheid nie, +Cannot find Item with this Barcode,Kan nie item met hierdie strepieskode vind nie, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} is verpligtend. Miskien word valuta-rekord nie vir {1} tot {2} geskep nie, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,"{} het bates wat daaraan gekoppel is, ingedien. U moet die bates kanselleer om die aankoopopbrengs te skep.", +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"Kan nie hierdie dokument kanselleer nie, want dit is gekoppel aan die ingediende bate {0}. Kanselleer dit asseblief om voort te gaan.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Ry # {}: Reeksnr. {} Is reeds oorgedra na 'n ander POS-faktuur. Kies 'n geldige reeksnr., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Ry # {}: reeksnommers. {} Is reeds in 'n ander POS-faktuur oorgedra. Kies 'n geldige reeksnr., +Item Unavailable,Item nie beskikbaar nie, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"Ry # {}: reeksnommer {} kan nie teruggestuur word nie, aangesien dit nie op die oorspronklike faktuur gedoen is nie {}", +Please set default Cash or Bank account in Mode of Payment {},Stel die verstek kontant- of bankrekening in die betaalmetode {}, +Please set default Cash or Bank account in Mode of Payments {},Stel asseblief die standaard kontant- of bankrekening in die modus van betalings {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Maak seker dat die {} rekening 'n balansstaatrekening is. U kan die ouerrekening in 'n balansrekening verander of 'n ander rekening kies., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Maak seker dat die {} rekening 'n betaalbare rekening is. Verander die rekeningtipe na Betaalbaar of kies 'n ander rekening., +Row {}: Expense Head changed to {} ,Ry {}: Onkostekop verander na {}, +because account {} is not linked to warehouse {} ,omdat rekening {} nie aan pakhuis gekoppel is nie {}, +or it is not the default inventory account,of dit is nie die standaardvoorraadrekening nie, +Expense Head Changed,Uitgawehoof verander, +because expense is booked against this account in Purchase Receipt {},omdat die onkoste teen hierdie rekening in die aankoopbewys {} bespreek word, +as no Purchase Receipt is created against Item {}. ,aangesien geen aankoopbewys teen item {} geskep word nie., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Dit word gedoen om rekeningkunde te hanteer vir gevalle waar aankoopbewys na aankoopfaktuur geskep word, +Purchase Order Required for item {},Bestelling benodig vir item {}, +To submit the invoice without purchase order please set {} ,Stel die {} in om die faktuur sonder 'n bestelling in te dien, +as {} in {},soos in {}, +Mandatory Purchase Order,Verpligte bestelling, +Purchase Receipt Required for item {},Aankoopbewys benodig vir item {}, +To submit the invoice without purchase receipt please set {} ,Stel die {} in om die faktuur sonder aankoopbewys in te dien., +Mandatory Purchase Receipt,Verpligte aankoopbewys, +POS Profile {} does not belongs to company {},POS-profiel {} behoort nie tot die maatskappy nie {}, +User {} is disabled. Please select valid user/cashier,Gebruiker {} is gedeaktiveer. Kies 'n geldige gebruiker / kassier, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Ry # {}: oorspronklike faktuur {} van retourfaktuur {} is {}., +Original invoice should be consolidated before or along with the return invoice.,Die oorspronklike faktuur moet voor of saam met die retoervaktuur gekonsolideer word., +You can add original invoice {} manually to proceed.,U kan oorspronklike fakture {} handmatig byvoeg om voort te gaan., +Please ensure {} account is a Balance Sheet account. ,Maak seker dat die {} rekening 'n balansstaatrekening is., +You can change the parent account to a Balance Sheet account or select a different account.,U kan die ouerrekening in 'n balansrekening verander of 'n ander rekening kies., +Please ensure {} account is a Receivable account. ,Maak seker dat die {} rekening 'n ontvangbare rekening is., +Change the account type to Receivable or select a different account.,Verander die rekeningtipe na Ontvangbaar of kies 'n ander rekening., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} kan nie gekanselleer word nie omdat die verdienste van die Lojaliteitspunte afgelos is. Kanselleer eers die {} Nee {}, +already exists,bestaan alreeds, +POS Closing Entry {} against {} between selected period,POS-sluitingsinskrywing {} teen {} tussen die gekose periode, +POS Invoice is {},POS-faktuur is {}, +POS Profile doesn't matches {},POS-profiel stem nie ooreen nie {}, +POS Invoice is not {},POS-faktuur is nie {}, +POS Invoice isn't created by user {},POS-faktuur word nie deur gebruiker {} geskep nie, +Row #{}: {},Ry # {}: {}, +Invalid POS Invoices,Ongeldige POS-fakture, +Please add the account to root level Company - {},Voeg die rekening by die maatskappy se wortelvlak - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Terwyl u 'n rekening vir Child Company {0} skep, word die ouerrekening {1} nie gevind nie. Skep asseblief die ouerrekening in ooreenstemmende COA", +Account Not Found,Rekening nie gevind nie, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Terwyl u 'n rekening vir Child Company {0} skep, word die ouerrekening {1} as 'n grootboekrekening gevind.", +Please convert the parent account in corresponding child company to a group account.,Skakel asseblief die ouerrekening in die ooreenstemmende kindermaatskappy om na 'n groeprekening., +Invalid Parent Account,Ongeldige ouerrekening, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Om dit te hernoem, is slegs toegelaat via moedermaatskappy {0}, om wanverhouding te voorkom.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","As u {0} {1} hoeveelhede van die artikel {2} het, sal die skema {3} op die item toegepas word.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","As u {0} {1} die waarde van item {2} het, sal die skema {3} op die item toegepas word.", +"As the field {0} is enabled, the field {1} is mandatory.","Aangesien die veld {0} geaktiveer is, is die veld {1} verpligtend.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Aangesien die veld {0} geaktiveer is, moet die waarde van die veld {1} meer as 1 wees.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Kan nie reeksnommer {0} van die artikel {1} lewer nie, aangesien dit gereserveer is vir die volledige bestelling {2}", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.",Verkooporder {0} het 'n bespreking vir die artikel {1}. U kan slegs gereserveerde {1} teen {0} aflewer., +{0} Serial No {1} cannot be delivered,{0} Reeksnr. {1} kan nie afgelewer word nie, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Ry {0}: Item uit die onderkontrak is verpligtend vir die grondstof {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Aangesien daar voldoende grondstowwe is, is materiaalversoek nie nodig vir pakhuis {0} nie.", +" If you still want to proceed, please enable {0}.",Skakel {0} aan as u nog steeds wil voortgaan., +The item referenced by {0} - {1} is already invoiced,Die item waarna verwys word deur {0} - {1} word reeds gefaktureer, +Therapy Session overlaps with {0},Terapiesessie oorvleuel met {0}, +Therapy Sessions Overlapping,Terapiesessies oorvleuel, +Therapy Plans,Terapieplanne, +"Item Code, warehouse, quantity are required on row {0}","Itemkode, pakhuis, hoeveelheid word in ry {0} vereis", +Get Items from Material Requests against this Supplier,Kry items uit materiaalversoeke teen hierdie verskaffer, +Enable European Access,Aktiveer Europese toegang, +Creating Purchase Order ...,Skep tans bestelling ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",Kies 'n verskaffer uit die verstekverskaffers van die onderstaande items. By seleksie sal 'n bestelling slegs gemaak word teen items wat tot die geselekteerde verskaffer behoort., +Row #{}: You must select {} serial numbers for item {}.,Ry # {}: u moet {} reeksnommers vir item {} kies., diff --git a/erpnext/translations/am.csv b/erpnext/translations/am.csv index 907fd07bff..554b0a54f1 100644 --- a/erpnext/translations/am.csv +++ b/erpnext/translations/am.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',በም Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',በምድብ «ግምቱ 'ወይም' Vaulation እና ጠቅላላ 'ነው ጊዜ ቀነሰ አይቻልም, "Cannot delete Serial No {0}, as it is used in stock transactions",መሰረዝ አይቻልም መለያ የለም {0}: ይህ የአክሲዮን ግብይቶች ላይ የዋለው እንደ, Cannot enroll more than {0} students for this student group.,ይህ ተማሪ ቡድን {0} ተማሪዎች በላይ መመዝገብ አይችልም., -Cannot find Item with this barcode,በዚህ የአሞሌ ኮድን ንጥል ነገር ማግኘት አልተቻለም ፡፡, Cannot find active Leave Period,ንቁ የቆየውን ጊዜ ማግኘት አይቻልም, Cannot produce more Item {0} than Sales Order quantity {1},የሽያጭ ትዕዛዝ ብዛት የበለጠ ንጥል {0} ማፍራት የማይችሉ {1}, Cannot promote Employee with status Left,በአስተዳዳሪ ሁኔታ ወደ ሠራተኛ ማስተዋወቅ አይቻልም, @@ -690,7 +689,6 @@ Create Variants,ተለዋጮችን ይፍጠሩ።, "Create and manage daily, weekly and monthly email digests.","ይፍጠሩ እና, ዕለታዊ ሳምንታዊ እና ወርሃዊ የኢሜይል ዜናዎች ያስተዳድሩ.", Create customer quotes,የደንበኛ ጥቅሶችን ፍጠር, Create rules to restrict transactions based on values.,እሴቶች ላይ የተመሠረተ ግብይቶችን ለመገደብ ደንቦች ይፍጠሩ., -Created By,የተፈጠረ, Created {0} scorecards for {1} between: ,በ {1} መካከል {0} የካታኬት ካርዶች በ:, Creating Company and Importing Chart of Accounts,ኩባኒያን መፍጠር እና የመለያዎች ገበታ ማስመጣት ፡፡, Creating Fees,ክፍያዎች በመፍጠር, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,መጋዘን አስገባ በፊት ያ For row {0}: Enter Planned Qty,ለረድፍ {0}: የታቀዱ qty አስገባ, "For {0}, only credit accounts can be linked against another debit entry",{0}: ብቻ የክሬዲት መለያዎች ሌላ ዴቢት ግቤት ላይ የተገናኘ ሊሆን ይችላል, "For {0}, only debit accounts can be linked against another credit entry",{0}: ብቻ ዴቢት መለያዎች ሌላ ክሬዲት ግቤት ላይ የተገናኘ ሊሆን ይችላል, -Form View,የቅፅ እይታ, Forum Activity,የውይይት መድረክ, Free item code is not selected,የነፃ ንጥል ኮድ አልተመረጠም።, Freight and Forwarding Charges,ጭነት እና ማስተላለፍ ክፍያዎች, @@ -2638,7 +2635,6 @@ Send SMS,ኤስ ኤም ኤስ ላክ, Send mass SMS to your contacts,የመገናኛ ኤስ የእርስዎን እውቂያዎች ላክ, Sensitivity,ትብነት, Sent,ተልኳል, -Serial #,ተከታታይ #, Serial No and Batch,ተከታታይ የለም እና ባች, Serial No is mandatory for Item {0},ተከታታይ ምንም ንጥል ግዴታ ነው {0}, Serial No {0} does not belong to Batch {1},Serial No {0} የቡድን {1} አይደለም, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ERPNext ወደ እንኳን ደህና መጡ, What do you need help with?,ምን ጋር እርዳታ የሚያስፈልጋቸው ለምንድን ነው?, What does it do?,ምን ያደርጋል?, Where manufacturing operations are carried.,"ባለማምረታቸው, ቀዶ የት ተሸክመው ነው.", -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",ለህፃናት ኩባንያ {0} መለያ በሚፈጥሩበት ጊዜ ፣ የወላጅ መለያ {1} አልተገኘም። እባክዎን የወላጅ መለያ ተጓዳኝ COA ን ይፍጠሩ።, White,ነጭ, Wire Transfer,የሃዋላ ገንዘብ መላኪያ, WooCommerce Products,WooCommerce ምርቶች።, @@ -3493,6 +3488,7 @@ Likes,የተወደዱ, Merge with existing,ነባር ጋር አዋህድ, Office,ቢሮ, Orientation,አቀማመጥ, +Parent,ወላጅ, Passive,የማይሠራ, Payment Failed,ክፍያ አልተሳካም, Percent,መቶኛ, @@ -3543,6 +3539,7 @@ Shift,ቀይር, Show {0},አሳይ {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",ከ "-" ፣ "#" ፣ "፣" ፣ "/" ፣ "{" እና "}" በስተቀር ልዩ ቁምፊዎች ከመለያ መሰየሚያ አይፈቀድም, Target Details,የ Detailsላማ ዝርዝሮች።, +{0} already has a Parent Procedure {1}.,{0} ቀድሞውኑ የወላጅ አሰራር ሂደት አለው {1}።, API,ኤ ፒ አይ, Annual,ዓመታዊ, Approved,ጸድቋል, @@ -4241,7 +4238,6 @@ Download as JSON,እንደ ጆንሰን አውርድ ፡፡, End date can not be less than start date,የማብቂያ ቀን ከመጀመሪያ ቀን ያነሰ መሆን አይችልም, For Default Supplier (Optional),ነባሪ አቅራቢ (አማራጭ), From date cannot be greater than To date,ቀን ቀን ወደ በላይ ሊሆን አይችልም ከ, -Get items from,ከ ንጥሎችን ያግኙ, Group by,ቡድን በ, In stock,ለሽያጭ የቀረበ እቃ, Item name,ንጥል ስም, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,የጥራት ግብረ መልስ አብነ Quality Goal,ጥራት ያለው ግብ።, Monitoring Frequency,ድግግሞሽ መቆጣጠር።, Weekday,የሳምንቱ ቀናት።, -January-April-July-October,ከጥር - ኤፕሪል-ሐምሌ-ጥቅምት ፡፡, -Revision and Revised On,ክለሳ እና ገምጋሚ ፡፡, -Revision,ክለሳ, -Revised On,ተሻሽሎ በርቷል, Objectives,ዓላማዎች ፡፡, Quality Goal Objective,ጥራት ያለው ግብ ግብ ፡፡, Objective,ዓላማ።, @@ -7574,7 +7566,6 @@ Parent Procedure,የወላጅ አሠራር።, Processes,ሂደቶች, Quality Procedure Process,የጥራት ሂደት, Process Description,የሂደት መግለጫ, -Child Procedure,የሕፃናት አሠራር, Link existing Quality Procedure.,አሁን ያለውን የጥራት አሠራር ያገናኙ ፡፡, Additional Information,ተጭማሪ መረጃ, Quality Review Objective,የጥራት ግምገማ ዓላማ።, @@ -8557,7 +8548,6 @@ Purchase Order Trends,ትዕዛዝ በመታየት ላይ ይግዙ, Purchase Receipt Trends,የግዢ ደረሰኝ በመታየት ላይ ያሉ, Purchase Register,የግዢ ይመዝገቡ, Quotation Trends,በትዕምርተ ጥቅስ አዝማሚያዎች, -Quoted Item Comparison,የተጠቀሰ ንጥል ንጽጽር, Received Items To Be Billed,ተቀብሏል ንጥሎች እንዲከፍሉ ለማድረግ, Qty to Order,ለማዘዝ ብዛት, Requested Items To Be Transferred,ተጠይቋል ንጥሎች መወሰድ, @@ -9091,7 +9081,6 @@ Unmarked days,ምልክት ያልተደረገባቸው ቀናት, Absent Days,የቀሩ ቀናት, Conditions and Formula variable and example,ሁኔታዎች እና የቀመር ተለዋዋጭ እና ምሳሌ, Feedback By,ግብረመልስ በ, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY.-MM. - ዲ.ዲ.-, Manufacturing Section,የማምረቻ ክፍል, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",በነባሪነት የደንበኛው ስም እንደገባው ሙሉ ስም ይዋቀራል ፡፡ ደንበኞች በ ሀ እንዲሰየሙ ከፈለጉ, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,አዲስ የሽያጭ ግብይት ሲፈጥሩ ነባሪውን የዋጋ ዝርዝር ያዋቅሩ። የእቃ ዋጋዎች ከዚህ የዋጋ ዝርዝር ውስጥ ይፈለጋሉ።, @@ -9692,7 +9681,6 @@ Available Balance,የሚገኝ ሚዛን, Reserved Balance,የተጠበቀ ሚዛን, Uncleared Balance,ያልተስተካከለ ሚዛን, Payment related to {0} is not completed,ከ {0} ጋር የተገናኘ ክፍያ አልተጠናቀቀም, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,ረድፍ # {}: ተከታታይ ቁጥር {}. {} ቀድሞውኑ ወደ ሌላ POS ደረሰኝ ተቀይሯል። እባክዎ ትክክለኛ ተከታታይ ቁጥር ይምረጡ።, Row #{}: Item Code: {} is not available under warehouse {}.,ረድፍ # {} ንጥል ኮድ {} በመጋዘን ስር አይገኝም {}።, Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,ረድፍ # {}: ለዕቃው ኮድ በቂ ያልሆነ የአክሲዮን ብዛት {} ከመጋዘን በታች {}። የሚገኝ ብዛት {}, Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,ረድፍ # {}: እባክዎ ተከታታይ ቁጥርን ይምረጡ እና በንጥል ላይ ድምርን ይምረጡ ፦ {} ወይም ግብይቱን ለማጠናቀቅ ያስወግዱት።, @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},ብዛት ለ {0} መጋዘን Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,እባክዎ በክምችት ቅንብሮች ውስጥ አሉታዊ ክምችት ይፍቀዱ ወይም ለመቀጠል የአክሲዮን ግባ ይፍጠሩ።, No Inpatient Record found against patient {0},በታካሚው {0} ላይ ምንም የታካሚ መዝገብ አልተገኘም, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,የታካሚ ገጠመኝን {0} የታካሚ ገጠመኝ መድኃኒት {1} ቀድሞውኑ አለ።, +Allow In Returns,ተመላሽ አድርግ, +Hide Unavailable Items,የማይገኙ ዕቃዎችን ደብቅ, +Apply Discount on Discounted Rate,በቅናሽ ዋጋ ላይ ቅናሽ ይተግብሩ, +Therapy Plan Template,ቴራፒ እቅድ አብነት, +Fetching Template Details,የአብነት ዝርዝሮችን በማምጣት ላይ, +Linked Item Details,የተገናኙ ንጥል ዝርዝሮች, +Therapy Types,የሕክምና ዓይነቶች, +Therapy Plan Template Detail,ቴራፒ እቅድ አብነት ዝርዝር, +Non Conformance,ያልሆነ አፈፃፀም, +Process Owner,የሂደት ባለቤት, +Corrective Action,የማስተካከያ እርምጃ, +Preventive Action,የመከላከያ እርምጃ, +Problem,ችግር, +Responsible,ኃላፊነት የሚሰማው, +Completion By,ማጠናቀቂያ በ, +Process Owner Full Name,የሂደት ባለቤት ሙሉ ስም, +Right Index,የቀኝ ማውጫ, +Left Index,የግራ ማውጫ, +Sub Procedure,ንዑስ አሠራር, +Passed,አል .ል, +Print Receipt,ደረሰኝ ያትሙ, +Edit Receipt,ደረሰኝ ያርትዑ, +Focus on search input,በፍለጋ ግብዓት ላይ ያተኩሩ, +Focus on Item Group filter,በእቃ ቡድን ማጣሪያ ላይ ያተኩሩ, +Checkout Order / Submit Order / New Order,የመውጫ ክፍያ ትዕዛዝ / ትዕዛዝ ያስገቡ / አዲስ ትዕዛዝ, +Add Order Discount,የትእዛዝ ቅናሽ ያክሉ, +Item Code: {0} is not available under warehouse {1}.,የእቃ ኮድ {0} በመጋዘን ስር አይገኝም {1}።, +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,ተከታታይ ቁጥሮች ለንጥል {0} በመጋዘን ስር {1} አይገኙም። እባክዎን መጋዝን ለመቀየር ይሞክሩ።, +Fetched only {0} available serial numbers.,የተገኙት {0} ተከታታይ ቁጥሮች ብቻ ተገኝተዋል።, +Switch Between Payment Modes,በክፍያ ሁነታዎች መካከል ይቀያይሩ, +Enter {0} amount.,{0} መጠን ያስገቡ።, +You don't have enough points to redeem.,ለማስመለስ በቂ ነጥቦች የሉዎትም።, +You can redeem upto {0}.,እስከ {0} ድረስ ማስመለስ ይችላሉ, +Enter amount to be redeemed.,ለማስመለስ መጠን ያስገቡ።, +You cannot redeem more than {0}.,ከ {0} በላይ ማስመለስ አይችሉም።, +Open Form View,የቅጽ እይታን ይክፈቱ, +POS invoice {0} created succesfully,የ POS ደረሰኝ {0} በተሳካ ሁኔታ ፈጠረ, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,ለንጥል ኮድ በቂ ያልሆነ የአክሲዮን ብዛት {0} ከመጋዘን በታች {1}። የሚገኝ ብዛት {2}።, +Serial No: {0} has already been transacted into another POS Invoice.,የመለያ ቁጥር {0} ቀድሞውኑ ወደ ሌላ POS ደረሰኝ ተቀይሯል።, +Balance Serial No,ሚዛን ተከታታይ ቁጥር, +Warehouse: {0} does not belong to {1},መጋዘን {0} የ {1} አይደለም, +Please select batches for batched item {0},እባክዎን ለተጣራ ንጥል ስብስቦችን ይምረጡ {0}, +Please select quantity on row {0},እባክዎ በረድፍ {0} ላይ ብዛትን ይምረጡ, +Please enter serial numbers for serialized item {0},እባክዎ ለተከታታይ ንጥል {0} ተከታታይ ቁጥሮች ያስገቡ, +Batch {0} already selected.,ባች {0} ቀድሞውኑ ተመርጧል።, +Please select a warehouse to get available quantities,የሚገኙ መጠኖችን ለማግኘት እባክዎ መጋዘን ይምረጡ, +"For transfer from source, selected quantity cannot be greater than available quantity",ከምንጭ ለማስተላለፍ የተመረጠው ብዛት ከሚገኘው ብዛት ሊበልጥ አይችልም, +Cannot find Item with this Barcode,በዚህ ባርኮድ አማካኝነት ንጥል ማግኘት አልተቻለም, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} ግዴታ ነው ምናልባት የምንዛሬ ልውውጥ መዝገብ ለ {1} እስከ {2} አልተፈጠረም, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} ከሱ ጋር የተገናኙ ንብረቶችን አስገብቷል። የግዢ ተመላሽ ለመፍጠር ንብረቶቹን መሰረዝ ያስፈልግዎታል።, +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,ይህ ሰነድ ከቀረበው ንብረት {0} ጋር የተገናኘ በመሆኑ መሰረዝ አልተቻለም። ለመቀጠል እባክዎ ይሰርዙት።, +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,ረድፍ # {}: የመለያ ቁጥር {} ቀድሞውኑ ወደ ሌላ POS ደረሰኝ ተቀይሯል። እባክዎ ትክክለኛ ተከታታይ ቁጥር ይምረጡ።, +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,ረድፍ # {}: ተከታታይ ቁጥሮች {} ቀድሞውኑ ወደ ሌላ POS ደረሰኝ ተቀይሯል። እባክዎ ትክክለኛ ተከታታይ ቁጥር ይምረጡ።, +Item Unavailable,ንጥል አይገኝም, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},ረድፍ # {}: ተከታታይ ቁጥር {} በመጀመሪያው የክፍያ መጠየቂያ ውስጥ ስለማይነካ መመለስ አይቻልም {}, +Please set default Cash or Bank account in Mode of Payment {},እባክዎ ነባሪ ጥሬ ገንዘብ ወይም የባንክ ሂሳብ በክፍያ ሁኔታ ውስጥ ያዘጋጁ {}, +Please set default Cash or Bank account in Mode of Payments {},እባክዎን ነባሪ ጥሬ ገንዘብ ወይም የባንክ ሂሳብ በክፍያዎች ሁኔታ ያዘጋጁ {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,እባክዎ {} መለያ የሂሳብ ሚዛን መለያ መሆኑን ያረጋግጡ። የወላጅ ሂሳብን ወደ ሚዛናዊ ሉህ መለያ መለወጥ ወይም የተለየ መለያ መምረጥ ይችላሉ።, +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,እባክዎ {} መለያ የሚከፈልበት መለያ መሆኑን ያረጋግጡ። የመለያውን ዓይነት ወደ ተከፈለ ይለውጡ ወይም የተለየ መለያ ይምረጡ።, +Row {}: Expense Head changed to {} ,ረድፍ {}: የወጪ ጭንቅላት ወደ {} ተለውጧል, +because account {} is not linked to warehouse {} ,ምክንያቱም መለያ {} ከመጋዘን ጋር አልተያያዘም {}, +or it is not the default inventory account,ወይም ነባሪው የመለያ ሂሳብ አይደለም, +Expense Head Changed,የወጪ ጭንቅላት ተቀየረ, +because expense is booked against this account in Purchase Receipt {},ምክንያቱም በግዢ ደረሰኝ {} ውስጥ በዚህ ሂሳብ ላይ ወጪ ተይ becauseል, +as no Purchase Receipt is created against Item {}. ,በእቃው ላይ ምንም የግዢ ደረሰኝ ስለማይፈጠር {}።, +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,ይህ ከግዢ ደረሰኝ በኋላ የግዢ ደረሰኝ ሲፈጠር ለጉዳዮች የሂሳብ አያያዝን ለመቆጣጠር ነው, +Purchase Order Required for item {},ለንጥል የግዢ ትዕዛዝ ያስፈልጋል {}, +To submit the invoice without purchase order please set {} ,የክፍያ መጠየቂያውን ያለግዢ ትዕዛዝ ለማስገባት እባክዎ ያዘጋጁ {}, +as {} in {},እንደ {} በ {}, +Mandatory Purchase Order,የግዴታ የግዢ ትዕዛዝ, +Purchase Receipt Required for item {},የግዢ ደረሰኝ ለንጥል ያስፈልጋል {}, +To submit the invoice without purchase receipt please set {} ,የክፍያ መጠየቂያ ደረሰኝ ያለ ግዢ ደረሰኝ ለማስገባት እባክዎ ያዘጋጁ {}, +Mandatory Purchase Receipt,የግዴታ የግዢ ደረሰኝ, +POS Profile {} does not belongs to company {},የ POS መገለጫ {} የድርጅት አይደለም {}, +User {} is disabled. Please select valid user/cashier,ተጠቃሚው {} ተሰናክሏል እባክዎ ትክክለኛ ተጠቃሚ / ገንዘብ ተቀባይ ይምረጡ, +Row #{}: Original Invoice {} of return invoice {} is {}. ,ረድፍ # {}: የመጀመሪያው የክፍያ መጠየቂያ {} የመመለሻ መጠየቂያ {} {} ነው።, +Original invoice should be consolidated before or along with the return invoice.,ኦሪጅናል የክፍያ መጠየቂያ ከመመለሻ መጠየቂያ በፊት ወይም አብሮ መጠናከር አለበት ፡፡, +You can add original invoice {} manually to proceed.,ለመቀጠል የመጀመሪያውን የክፍያ መጠየቂያ {} በእጅ ማከል ይችላሉ።, +Please ensure {} account is a Balance Sheet account. ,እባክዎ {} መለያ የሂሳብ ሚዛን መለያ መሆኑን ያረጋግጡ።, +You can change the parent account to a Balance Sheet account or select a different account.,የወላጅ ሂሳብን ወደ ሚዛናዊ ሉህ መለያ መለወጥ ወይም የተለየ መለያ መምረጥ ይችላሉ።, +Please ensure {} account is a Receivable account. ,እባክዎ {} መለያ ተቀባይነት ያለው መለያ መሆኑን ያረጋግጡ።, +Change the account type to Receivable or select a different account.,የመለያውን ዓይነት ወደ ደረሰኝ ይለውጡ ወይም የተለየ መለያ ይምረጡ።, +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},የተገኘው የታማኝነት ነጥቦች ስለተመለሱ {} መሰረዝ አይቻልም። መጀመሪያ {} አይ {} ን ሰርዝ, +already exists,አስቀድሞ አለ, +POS Closing Entry {} against {} between selected period,በተመረጠው ጊዜ መካከል የ POS መዝጊያ መግቢያ {} ከ {} ጋር, +POS Invoice is {},POS ደረሰኝ {} ነው, +POS Profile doesn't matches {},የ POS መገለጫ ከ {} ጋር አይዛመድም, +POS Invoice is not {},POS ደረሰኝ {} አይደለም, +POS Invoice isn't created by user {},POS ደረሰኝ በተጠቃሚ አልተፈጠረም {}, +Row #{}: {},ረድፍ # {}: {}, +Invalid POS Invoices,ልክ ያልሆኑ የ POS ደረሰኞች, +Please add the account to root level Company - {},እባክዎ መለያውን ወደ ስር ደረጃ ኩባንያ ያክሉ - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",ለህፃናት ኩባንያ {0} መለያ በሚፈጥሩበት ጊዜ ፣ የወላጅ መለያ {1} አልተገኘም። እባክዎን በተጓዳኝ COA ውስጥ የወላጅ መለያ ይፍጠሩ, +Account Not Found,መለያ አልተገኘም, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",ለህፃናት ኩባንያ {0} መለያ በሚፈጥሩበት ጊዜ ፣ የወላጅ መለያ {1} እንደ የሂሳብ መዝገብ መዝገብ ተገኝቷል።, +Please convert the parent account in corresponding child company to a group account.,እባክዎ በተዛማጅ ልጅ ኩባንያ ውስጥ ያለውን የወላጅ መለያ ወደ ቡድን መለያ ይለውጡ።, +Invalid Parent Account,ልክ ያልሆነ የወላጅ መለያ, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",ዳግም መሰየምን የተሳሳተ ላለመሆን ለመከላከል በወላጅ ኩባንያ {0} በኩል ብቻ ነው የሚፈቀደው።, +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.",እርስዎ {0} {1} የእቃው ብዛት {2} ከሆነ ፣ መርሃግብሩ {3} በእቃው ላይ ይተገበራል።, +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.",እርስዎ {0} {1} ዋጋ ያለው ዋጋ {2} ከሆነ ፣ መርሃግብሩ {3} በእቃው ላይ ይተገበራል።, +"As the field {0} is enabled, the field {1} is mandatory.",መስኩ {0} እንደነቃ ፣ መስኩ {1} ግዴታ ነው።, +"As the field {0} is enabled, the value of the field {1} should be more than 1.",መስኩ {0} እንደነቃ ፣ የመስኩ {1} ዋጋ ከ 1 በላይ መሆን አለበት።, +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},የመለያ ቁጥር {1} ንጥል {1} ን ለመሙላት የሽያጭ ትዕዛዝ የተያዘ ስለሆነ ማቅረብ አይቻልም {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.",የሽያጭ ትዕዛዝ {0} ለንጥል {1} ቦታ ማስያዝ አለው ፣ እርስዎ የተያዙትን በ {1} በ {0} ብቻ ሊያደርሱ ይችላሉ።, +{0} Serial No {1} cannot be delivered,{0} ተከታታይ ቁጥር {1} ማድረስ አይቻልም, +Row {0}: Subcontracted Item is mandatory for the raw material {1},ረድፍ {0} ለንዑስ ግብይት የተቀናበረ ንጥል አስገዳጅ ነው {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.",በቂ ጥሬ ዕቃዎች ስላሉት ቁሳቁስ መጋዘን ለ መጋዘን {0} አያስፈልግም።, +" If you still want to proceed, please enable {0}.",አሁንም መቀጠል ከፈለጉ እባክዎ {0} ን ያንቁ።, +The item referenced by {0} - {1} is already invoiced,የተጠቀሰው ንጥል በ {0} - {1} አስቀድሞ ደረሰኝ ተደርጓል, +Therapy Session overlaps with {0},ቴራፒ ክፍለ-ጊዜ ከ {0} ጋር ይደራረባል, +Therapy Sessions Overlapping,ቴራፒ ክፍለ-ጊዜዎች መደራረብ, +Therapy Plans,የሕክምና ዕቅዶች, +"Item Code, warehouse, quantity are required on row {0}",የእቃ ኮድ ፣ መጋዘን ፣ ብዛት በረድፍ {0} ላይ ያስፈልጋሉ, +Get Items from Material Requests against this Supplier,በዚህ አቅራቢ ላይ እቃዎችን ከቁሳዊ ጥያቄዎች ያግኙ, +Enable European Access,የአውሮፓ መዳረሻን ያንቁ, +Creating Purchase Order ...,የግዢ ትዕዛዝ በመፍጠር ላይ ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",ከዚህ በታች ካሉ ዕቃዎች ነባሪ አቅራቢዎች አቅራቢ ይምረጡ። በምርጫ ወቅት ለተመረጠው አቅራቢ ብቻ በሆኑ ዕቃዎች ላይ የግዢ ትዕዛዝ ይደረጋል።, +Row #{}: You must select {} serial numbers for item {}.,ረድፍ # {}: {} ለንጥል ተከታታይ ቁጥሮች {} መምረጥ አለብዎት።, diff --git a/erpnext/translations/ar.csv b/erpnext/translations/ar.csv index 0cb50bb9ee..91a9da9f16 100644 --- a/erpnext/translations/ar.csv +++ b/erpnext/translations/ar.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"لا ي Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',لا يمكن خصمها عند الفئة ' التقييم ' أو ' التقييم والمجموع '\n
\nCannot deduct when category is for 'Valuation' or 'Valuation and Total', "Cannot delete Serial No {0}, as it is used in stock transactions",لا يمكن حذف الرقم التسلسلي {0}، لانه يتم استخدامها في قيود المخزون, Cannot enroll more than {0} students for this student group.,لا يمكن تسجيل أكثر من {0} طلاب لمجموعة الطلاب هذه., -Cannot find Item with this barcode,لا يمكن العثور على العنصر مع هذا الرمز الشريطي, Cannot find active Leave Period,لا يمكن ايجاد فترة الاجازة النشطة, Cannot produce more Item {0} than Sales Order quantity {1},لا يمكن أن تنتج المزيد من البند {0} اكثر من كمية طلب المبيعات {1}, Cannot promote Employee with status Left,لا يمكن ترقية موظف بحالة مغادرة, @@ -690,7 +689,6 @@ Create Variants,إنشاء المتغيرات, "Create and manage daily, weekly and monthly email digests.",إنشاء وإدارة البريد الإلكتروني يوميا وأسبوعية وشهرية ., Create customer quotes,إنشاء عروض مسعرة للزبائن, Create rules to restrict transactions based on values.,إنشاء قواعد لتقييد المعاملات على أساس القيم., -Created By,منشئه بواسطه, Created {0} scorecards for {1} between: ,تم إنشاء {0} بطاقات الأداء {1} بين:, Creating Company and Importing Chart of Accounts,إنشاء شركة واستيراد مخطط الحسابات, Creating Fees,إنشاء الرسوم, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,مستودع (الى) مطلوب قبل For row {0}: Enter Planned Qty,بالنسبة إلى الصف {0}: أدخل الكمية المخطط لها, "For {0}, only credit accounts can be linked against another debit entry","ل {0}, فقط الحسابات الدائنة ممكن أن تكون مقابل مدخل مدين أخر.\n
\nFor {0}, only credit accounts can be linked against another debit entry", "For {0}, only debit accounts can be linked against another credit entry","ل {0}, فقط حسابات المدينة يمكن أن تكون مقابل مدخل دائن أخر.\n
\nFor {0}, only debit accounts can be linked against another credit entry", -Form View,عرض النموذج, Forum Activity,نشاط المنتدى, Free item code is not selected,لم يتم تحديد رمز العنصر المجاني, Freight and Forwarding Charges,رسوم الشحن, @@ -2638,7 +2635,6 @@ Send SMS,SMS أرسل رسالة, Send mass SMS to your contacts,إرسال SMS الشامل لجهات الاتصال الخاصة بك, Sensitivity,حساسية, Sent,أرسلت, -Serial #,المسلسل #, Serial No and Batch,الرقم التسلسلي والدفعة, Serial No is mandatory for Item {0},رقم المسلسل إلزامي القطعة ل {0}, Serial No {0} does not belong to Batch {1},المسلسل لا {0} لا ينتمي إلى الدفعة {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,مرحبًا بكم في ERPNext, What do you need help with?,ما الذى تحتاج المساعدة به؟, What does it do?,مجال عمل الشركة؟, Where manufacturing operations are carried.,حيث تتم عمليات التصنيع., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",أثناء إنشاء حساب لشركة تابعة {0} ، لم يتم العثور على الحساب الأصل {1}. يرجى إنشاء الحساب الأصل في شهادة توثيق البرامج المقابلة, White,أبيض, Wire Transfer,حوالة مصرفية, WooCommerce Products,منتجات WooCommerce, @@ -3493,6 +3488,7 @@ Likes,اعجابات, Merge with existing,دمج مع الحالي, Office,مكتب, Orientation,توجيه, +Parent,رقم الاب, Passive,غير فعال, Payment Failed,عملية الدفع فشلت, Percent,في المئة, @@ -3543,6 +3539,7 @@ Shift,تحول, Show {0},عرض {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",الأحرف الخاصة باستثناء "-" ، "#" ، "." ، "/" ، "{" و "}" غير مسموح في سلسلة التسمية, Target Details,تفاصيل الهدف, +{0} already has a Parent Procedure {1}.,{0} يحتوي بالفعل على إجراء الأصل {1}., API,API, Annual,سنوي, Approved,موافق عليه, @@ -4241,7 +4238,6 @@ Download as JSON,تنزيل باسم Json, End date can not be less than start date,تاريخ النهاية لا يمكن أن يكون اقل من تاريخ البدء\n
\nEnd Date can not be less than Start Date, For Default Supplier (Optional),للمورد الافتراضي (اختياري), From date cannot be greater than To date,(من تاريخ) لا يمكن أن يكون أكبر (الي التاريخ), -Get items from,الحصول على البنود من, Group by,المجموعة حسب, In stock,في المخزن, Item name,اسم السلعة, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,نوعية ردود الفعل قالب ال Quality Goal,هدف الجودة, Monitoring Frequency,مراقبة التردد, Weekday,يوم من أيام الأسبوع, -January-April-July-October,من يناير إلى أبريل ويوليو وأكتوبر, -Revision and Revised On,مراجعة وتنقيح, -Revision,مراجعة, -Revised On,المنقحة في, Objectives,الأهداف, Quality Goal Objective,هدف جودة الهدف, Objective,موضوعي, @@ -7574,7 +7566,6 @@ Parent Procedure,الإجراء الرئيسي, Processes,العمليات, Quality Procedure Process,عملية إجراءات الجودة, Process Description,وصف العملية, -Child Procedure,إجراء الطفل, Link existing Quality Procedure.,ربط إجراءات الجودة الحالية., Additional Information,معلومة اضافية, Quality Review Objective,هدف مراجعة الجودة, @@ -8557,7 +8548,6 @@ Purchase Order Trends,اتجهات امر الشراء, Purchase Receipt Trends,شراء اتجاهات الإيصال, Purchase Register,سجل شراء, Quotation Trends,مؤشرات المناقصة, -Quoted Item Comparison,مقارنة بند المناقصة, Received Items To Be Billed,العناصر الواردة إلى أن توصف, Qty to Order,الكمية للطلب, Requested Items To Be Transferred,العناصر المطلوبة على أن يتم تحويلها, @@ -9091,7 +9081,6 @@ Unmarked days,أيام غير محددة, Absent Days,أيام الغياب, Conditions and Formula variable and example,متغير الشروط والصيغة والمثال, Feedback By,ردود الفعل من, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,قسم التصنيع, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",بشكل افتراضي ، يتم تعيين اسم العميل وفقًا للاسم الكامل الذي تم إدخاله. إذا كنت تريد تسمية العملاء بواسطة أ, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,تكوين قائمة الأسعار الافتراضية عند إنشاء معاملة مبيعات جديدة. سيتم جلب أسعار العناصر من قائمة الأسعار هذه., @@ -9692,7 +9681,6 @@ Available Balance,الرصيد المتوفر, Reserved Balance,رصيد محجوز, Uncleared Balance,رصيد غير مصفى, Payment related to {0} is not completed,الدفع المتعلق بـ {0} لم يكتمل, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,الصف # {}: الرقم التسلسلي {}. تم بالفعل تحويل {} إلى فاتورة نقطة بيع أخرى. الرجاء تحديد رقم تسلسلي صالح., Row #{}: Item Code: {} is not available under warehouse {}.,الصف # {}: رمز العنصر: {} غير متوفر ضمن المستودع {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,الصف # {}: كمية المخزون غير كافية لرمز الصنف: {} تحت المستودع {}. الكمية المتوفرة {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,الصف # {}: الرجاء تحديد رقم تسلسلي ودفعة مقابل العنصر: {} أو إزالته لإكمال المعاملة., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},الكمية غير متوفرة Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,يرجى تمكين السماح بالمخزون السلبي في إعدادات المخزون أو إنشاء إدخال المخزون للمتابعة., No Inpatient Record found against patient {0},لم يتم العثور على سجل للمرضى الداخليين للمريض {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,يوجد بالفعل طلب دواء للمرضى الداخليين {0} ضد مقابلة المريض {1}., +Allow In Returns,السماح في المرتجعات, +Hide Unavailable Items,إخفاء العناصر غير المتوفرة, +Apply Discount on Discounted Rate,تطبيق الخصم على السعر المخفض, +Therapy Plan Template,نموذج خطة العلاج, +Fetching Template Details,إحضار تفاصيل النموذج, +Linked Item Details,تفاصيل العنصر المرتبط, +Therapy Types,أنواع العلاج, +Therapy Plan Template Detail,تفاصيل نموذج خطة العلاج, +Non Conformance,غير مطابقة, +Process Owner,صاحب العملية, +Corrective Action,اجراء تصحيحي, +Preventive Action,إجراءات وقائية, +Problem,مشكلة, +Responsible,مسؤول, +Completion By,اكتمال بواسطة, +Process Owner Full Name,الاسم الكامل لصاحب العملية, +Right Index,الفهرس الأيمن, +Left Index,الفهرس الأيسر, +Sub Procedure,الإجراء الفرعي, +Passed,تم الاجتياز بنجاح, +Print Receipt,اطبع الايصال, +Edit Receipt,تحرير الإيصال, +Focus on search input,ركز على إدخال البحث, +Focus on Item Group filter,التركيز على عامل تصفية مجموعة العناصر, +Checkout Order / Submit Order / New Order,طلب الخروج / إرسال الطلب / طلب جديد, +Add Order Discount,أضف خصم الطلب, +Item Code: {0} is not available under warehouse {1}.,رمز العنصر: {0} غير متوفر ضمن المستودع {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,الأرقام التسلسلية غير متاحة للعنصر {0} تحت المستودع {1}. يرجى محاولة تغيير المستودع., +Fetched only {0} available serial numbers.,تم جلب {0} من الأرقام التسلسلية المتوفرة فقط., +Switch Between Payment Modes,التبديل بين طرق الدفع, +Enter {0} amount.,أدخل مبلغ {0}., +You don't have enough points to redeem.,ليس لديك ما يكفي من النقاط لاستردادها., +You can redeem upto {0}.,يمكنك استرداد ما يصل إلى {0}., +Enter amount to be redeemed.,أدخل المبلغ المراد استرداده., +You cannot redeem more than {0}.,لا يمكنك استرداد أكثر من {0}., +Open Form View,افتح طريقة عرض النموذج, +POS invoice {0} created succesfully,تم إنشاء فاتورة نقاط البيع {0} بنجاح, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,كمية المخزون غير كافية لرمز الصنف: {0} تحت المستودع {1}. الكمية المتوفرة {2}., +Serial No: {0} has already been transacted into another POS Invoice.,الرقم التسلسلي: تم بالفعل معاملة {0} في فاتورة نقطة بيع أخرى., +Balance Serial No,الرقم التسلسلي للميزان, +Warehouse: {0} does not belong to {1},المستودع: {0} لا ينتمي إلى {1}, +Please select batches for batched item {0},الرجاء تحديد دفعات للصنف المجمّع {0}, +Please select quantity on row {0},الرجاء تحديد الكمية في الصف {0}, +Please enter serial numbers for serialized item {0},الرجاء إدخال الأرقام التسلسلية للعنصر المسلسل {0}, +Batch {0} already selected.,الدفعة {0} محددة بالفعل., +Please select a warehouse to get available quantities,الرجاء تحديد مستودع للحصول على الكميات المتاحة, +"For transfer from source, selected quantity cannot be greater than available quantity",للتحويل من المصدر ، لا يمكن أن تكون الكمية المحددة أكبر من الكمية المتاحة, +Cannot find Item with this Barcode,لا يمكن العثور على عنصر بهذا الرمز الشريطي, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} إلزامي. ربما لم يتم إنشاء سجل صرف العملات من {1} إلى {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,قام {} بتقديم أصول مرتبطة به. تحتاج إلى إلغاء الأصول لإنشاء عائد شراء., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,لا يمكن إلغاء هذا المستند لأنه مرتبط بالأصل المقدم {0}. من فضلك قم بإلغائها للمتابعة., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,الصف # {}: الرقم التسلسلي {} تم بالفعل التعامل معه في فاتورة نقطة بيع أخرى. الرجاء تحديد رقم تسلسلي صالح., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,الصف # {}: تم بالفعل التعامل مع الأرقام التسلسلية. {} في فاتورة نقطة بيع أخرى. الرجاء تحديد رقم تسلسلي صالح., +Item Unavailable,العنصر غير متوفر, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},الصف # {}: لا يمكن إرجاع الرقم التسلسلي {} لأنه لم يتم التعامل معه في الفاتورة الأصلية {}, +Please set default Cash or Bank account in Mode of Payment {},الرجاء تعيين حساب نقدي أو مصرفي افتراضي في طريقة الدفع {}, +Please set default Cash or Bank account in Mode of Payments {},الرجاء تعيين حساب نقدي أو مصرفي افتراضي في طريقة الدفع {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,يرجى التأكد من أن حساب {} هو حساب الميزانية العمومية. يمكنك تغيير الحساب الرئيسي إلى حساب الميزانية العمومية أو تحديد حساب مختلف., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,الرجاء التأكد من أن حساب {} حساب قابل للدفع. قم بتغيير نوع الحساب إلى "مستحق الدفع" أو حدد حسابًا مختلفًا., +Row {}: Expense Head changed to {} ,الصف {}: تم تغيير رأس المصاريف إلى {}, +because account {} is not linked to warehouse {} ,لأن الحساب {} غير مرتبط بالمستودع {}, +or it is not the default inventory account,أو أنه ليس حساب المخزون الافتراضي, +Expense Head Changed,تغيير رأس المصاريف, +because expense is booked against this account in Purchase Receipt {},لأنه تم حجز المصروفات مقابل هذا الحساب في إيصال الشراء {}, +as no Purchase Receipt is created against Item {}. ,حيث لم يتم إنشاء إيصال شراء مقابل العنصر {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,يتم إجراء ذلك للتعامل مع محاسبة الحالات التي يتم فيها إنشاء إيصال الشراء بعد فاتورة الشراء, +Purchase Order Required for item {},طلب الشراء مطلوب للعنصر {}, +To submit the invoice without purchase order please set {} ,لإرسال الفاتورة بدون أمر شراء ، يرجى تعيين {}, +as {} in {},كـ {} في {}, +Mandatory Purchase Order,أمر شراء إلزامي, +Purchase Receipt Required for item {},إيصال الشراء مطلوب للعنصر {}, +To submit the invoice without purchase receipt please set {} ,لإرسال الفاتورة بدون إيصال شراء ، يرجى تعيين {}, +Mandatory Purchase Receipt,إيصال الشراء الإلزامي, +POS Profile {} does not belongs to company {},الملف الشخصي لنقاط البيع {} لا ينتمي إلى الشركة {}, +User {} is disabled. Please select valid user/cashier,المستخدم {} معطل. الرجاء تحديد مستخدم / أمين صندوق صالح, +Row #{}: Original Invoice {} of return invoice {} is {}. ,الصف رقم {}: الفاتورة الأصلية {} فاتورة الإرجاع {} هي {}., +Original invoice should be consolidated before or along with the return invoice.,يجب دمج الفاتورة الأصلية قبل أو مع فاتورة الإرجاع., +You can add original invoice {} manually to proceed.,يمكنك إضافة الفاتورة الأصلية {} يدويًا للمتابعة., +Please ensure {} account is a Balance Sheet account. ,يرجى التأكد من أن حساب {} هو حساب الميزانية العمومية., +You can change the parent account to a Balance Sheet account or select a different account.,يمكنك تغيير الحساب الرئيسي إلى حساب الميزانية العمومية أو تحديد حساب مختلف., +Please ensure {} account is a Receivable account. ,يرجى التأكد من أن حساب {} هو حساب مدينة., +Change the account type to Receivable or select a different account.,قم بتغيير نوع الحساب إلى "ذمم مدينة" أو حدد حسابًا مختلفًا., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},لا يمكن إلغاء {} نظرًا لاسترداد نقاط الولاء المكتسبة. قم أولاً بإلغاء {} لا {}, +already exists,موجود أصلا, +POS Closing Entry {} against {} between selected period,دخول إغلاق نقطة البيع {} مقابل {} بين الفترة المحددة, +POS Invoice is {},فاتورة نقاط البيع {}, +POS Profile doesn't matches {},الملف الشخصي لنقطة البيع لا يتطابق مع {}, +POS Invoice is not {},فاتورة نقاط البيع ليست {}, +POS Invoice isn't created by user {},لم ينشئ المستخدم فاتورة نقاط البيع {}, +Row #{}: {},رقم الصف {}: {}, +Invalid POS Invoices,فواتير نقاط البيع غير صالحة, +Please add the account to root level Company - {},الرجاء إضافة الحساب إلى شركة على مستوى الجذر - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",أثناء إنشاء حساب Child Company {0} ، لم يتم العثور على الحساب الرئيسي {1}. الرجاء إنشاء الحساب الرئيسي في شهادة توثيق البرامج المقابلة, +Account Not Found,الحساب غير موجود, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",أثناء إنشاء حساب الشركة الفرعية {0} ، تم العثور على الحساب الرئيسي {1} كحساب دفتر أستاذ., +Please convert the parent account in corresponding child company to a group account.,الرجاء تحويل الحساب الرئيسي في الشركة الفرعية المقابلة إلى حساب مجموعة., +Invalid Parent Account,حساب الوالد غير صالح, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",يُسمح بإعادة تسميته فقط عبر الشركة الأم {0} ، لتجنب عدم التطابق., +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.",إذا قمت {0} {1} بكميات العنصر {2} ، فسيتم تطبيق المخطط {3} على العنصر., +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.",إذا كنت {0} {1} تستحق العنصر {2} ، فسيتم تطبيق النظام {3} على العنصر., +"As the field {0} is enabled, the field {1} is mandatory.",نظرًا لتمكين الحقل {0} ، يكون الحقل {1} إلزاميًا., +"As the field {0} is enabled, the value of the field {1} should be more than 1.",أثناء تمكين الحقل {0} ، يجب أن تكون قيمة الحقل {1} أكثر من 1., +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},لا يمكن تسليم الرقم التسلسلي {0} للصنف {1} لأنه محجوز لملء طلب المبيعات {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.",طلب المبيعات {0} لديه حجز للعنصر {1} ، يمكنك فقط تسليم {1} محجوز مقابل {0}., +{0} Serial No {1} cannot be delivered,لا يمكن تسليم {0} الرقم التسلسلي {1}, +Row {0}: Subcontracted Item is mandatory for the raw material {1},الصف {0}: العنصر المتعاقد عليه من الباطن إلزامي للمادة الخام {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.",نظرًا لوجود مواد خام كافية ، فإن طلب المواد ليس مطلوبًا للمستودع {0}., +" If you still want to proceed, please enable {0}.",إذا كنت لا تزال تريد المتابعة ، فيرجى تمكين {0}., +The item referenced by {0} - {1} is already invoiced,العنصر المشار إليه بواسطة {0} - {1} تم تحرير فاتورة به بالفعل, +Therapy Session overlaps with {0},تتداخل جلسة العلاج مع {0}, +Therapy Sessions Overlapping,جلسات العلاج متداخلة, +Therapy Plans,خطط العلاج, +"Item Code, warehouse, quantity are required on row {0}",مطلوب رمز الصنف والمستودع والكمية في الصف {0}, +Get Items from Material Requests against this Supplier,الحصول على عناصر من طلبات المواد ضد هذا المورد, +Enable European Access,تمكين الوصول الأوروبي, +Creating Purchase Order ...,إنشاء أمر شراء ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",حدد موردًا من الموردين الافتراضيين للعناصر أدناه. عند التحديد ، سيتم إجراء طلب الشراء مقابل العناصر التي تنتمي إلى المورد المحدد فقط., +Row #{}: You must select {} serial numbers for item {}.,الصف # {}: يجب تحديد {} الأرقام التسلسلية للعنصر {}., diff --git a/erpnext/translations/bg.csv b/erpnext/translations/bg.csv index 5af3b09add..15278a6a40 100644 --- a/erpnext/translations/bg.csv +++ b/erpnext/translations/bg.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',Не м Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',Не може да се приспадне при категория е за "оценка" или "Vaulation и Total", "Cannot delete Serial No {0}, as it is used in stock transactions","Не може да се изтрие Пореден № {0}, тъй като се използва в транзакции с материали", Cannot enroll more than {0} students for this student group.,Не може да се запишат повече от {0} студенти за този студентска група., -Cannot find Item with this barcode,Не може да се намери елемент с този баркод, Cannot find active Leave Period,Не може да се намери активен период на отпуск, Cannot produce more Item {0} than Sales Order quantity {1},Не може да се произвежда повече позиция {0} от количеството в поръчка за продажба {1}, Cannot promote Employee with status Left,Не мога да популяризирам служител със състояние вляво, @@ -690,7 +689,6 @@ Create Variants,Създаване на варианти, "Create and manage daily, weekly and monthly email digests.","Създаване и управление на дневни, седмични и месечни имейл бюлетини.", Create customer quotes,Създаване на оферти на клиенти, Create rules to restrict transactions based on values.,"Създаване на правила за ограничаване на транзакции, основани на стойност.", -Created By,Създаден от, Created {0} scorecards for {1} between: ,Създадохте {0} scorecards за {1} между:, Creating Company and Importing Chart of Accounts,Създаване на компания и импортиране на сметкоплан, Creating Fees,Създаване на такси, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,За склад се изисква пр For row {0}: Enter Planned Qty,За ред {0}: Въведете планираните количества, "For {0}, only credit accounts can be linked against another debit entry","За {0}, само кредитни сметки могат да бъдат свързани с друг запис дебитна", "For {0}, only debit accounts can be linked against another credit entry","За {0}, само дебитни сметки могат да бъдат свързани с друга кредитна влизане", -Form View,Изглед на формата, Forum Activity,Форумна активност, Free item code is not selected,Безплатният код на артикула не е избран, Freight and Forwarding Charges,Товарни и спедиция Такси, @@ -2638,7 +2635,6 @@ Send SMS,Изпратете SMS, Send mass SMS to your contacts,Изпратете маса SMS към вашите контакти, Sensitivity,чувствителност, Sent,Изпратено, -Serial #,Serial #, Serial No and Batch,Сериен № и Партида, Serial No is mandatory for Item {0},Сериен № е задължително за позиция {0}, Serial No {0} does not belong to Batch {1},Сериен номер {0} не принадлежи на партида {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Добре дошли в ERPNext, What do you need help with?,За какво ти е необходима помощ?, What does it do?,Какво прави?, Where manufacturing operations are carried.,Когато се извършват производствени операции., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Докато създавате акаунт за дъщерна компания {0}, родителски акаунт {1} не е намерен. Моля, създайте родителския акаунт в съответния COA", White,бял, Wire Transfer,Банков превод, WooCommerce Products,Продукти на WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Харесва, Merge with existing,Обединяване със съществуващото, Office,Офис, Orientation,ориентация, +Parent,Родител, Passive,Пасивен, Payment Failed,Неуспешно плащане, Percent,Процент, @@ -3543,6 +3539,7 @@ Shift,изместване, Show {0},Показване на {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Специални символи, с изключение на "-", "#", ".", "/", "{" И "}" не са позволени в именуването на серии", Target Details,Детайли за целта, +{0} already has a Parent Procedure {1}.,{0} вече има родителска процедура {1}., API,API, Annual,Годишен, Approved,Одобрен, @@ -4241,7 +4238,6 @@ Download as JSON,Изтеглете като JSON, End date can not be less than start date,Крайна дата не може да бъде по-малка от началната дата, For Default Supplier (Optional),За доставчик по подразбиране (по избор), From date cannot be greater than To date,От дата не може да бъде по-голямо от до дата, -Get items from,Вземете елементи от, Group by,Групирай по, In stock,В наличност, Item name,Име на артикул, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Параметър на шаблона за Quality Goal,Цел за качество, Monitoring Frequency,Мониторинг на честотата, Weekday,делничен, -January-April-July-October,За периода януари-април до юли до октомври, -Revision and Revised On,Ревизия и ревизия на, -Revision,ревизия, -Revised On,Ревизиран на, Objectives,Цели, Quality Goal Objective,Цел за качество, Objective,Обективен, @@ -7574,7 +7566,6 @@ Parent Procedure,Процедура за родители, Processes,процеси, Quality Procedure Process,Процес на качествена процедура, Process Description,Описание на процеса, -Child Procedure,Детска процедура, Link existing Quality Procedure.,Свържете съществуващата процедура за качество., Additional Information,Допълнителна информация, Quality Review Objective,Цел за преглед на качеството, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Поръчката Trends, Purchase Receipt Trends,Покупка Квитанция Trends, Purchase Register,Покупка Регистрация, Quotation Trends,Оферта Тенденции, -Quoted Item Comparison,Сравнение на редове от оферти, Received Items To Be Billed,"Приети артикули, които да се фактирират", Qty to Order,Количество към поръчка, Requested Items To Be Transferred,Желани артикули да бъдат прехвърлени, @@ -9091,7 +9081,6 @@ Unmarked days,Немаркирани дни, Absent Days,Отсъстващи дни, Conditions and Formula variable and example,Условия и формула променлива и пример, Feedback By,Обратна връзка от, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Производствена секция, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",По подразбиране Името на клиента се задава според въведеното Пълно име. Ако искате клиентите да бъдат именувани от, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,"Конфигурирайте ценовата листа по подразбиране, когато създавате нова транзакция за продажби. Цените на артикулите ще бъдат извлечени от тази ценова листа.", @@ -9692,7 +9681,6 @@ Available Balance,Наличен баланс, Reserved Balance,Запазен баланс, Uncleared Balance,Неизчистен баланс, Payment related to {0} is not completed,"Плащането, свързано с {0}, не е завършено", -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,"Ред № {}: Сериен номер {}. {} вече е транзактиран в друга POS фактура. Моля, изберете валиден сериен номер.", Row #{}: Item Code: {} is not available under warehouse {}.,Ред № {}: Код на артикула: {} не е наличен в склада {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Ред № {}: Количеството на склад не е достатъчно за Код на артикула: {} под склад {}. Налично количество {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,"Ред № {}: Моля, изберете сериен номер и партида срещу елемент: {} или го премахнете, за да завършите транзакцията.", @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Количеството не е Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,"Моля, активирайте Разрешаване на отрицателни запаси в настройките на запасите или създайте запис на запаси, за да продължите.", No Inpatient Record found against patient {0},Не е открит стационарен запис срещу пациент {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Вече съществува заповед за стационарно лечение {0} срещу среща с пациент {1}., +Allow In Returns,Разрешаване на връщания, +Hide Unavailable Items,Скриване на недостъпните елементи, +Apply Discount on Discounted Rate,Приложете отстъпка при отстъпка, +Therapy Plan Template,Шаблон за план за терапия, +Fetching Template Details,Извличане на подробности за шаблона, +Linked Item Details,Свързани подробности за артикула, +Therapy Types,Видове терапия, +Therapy Plan Template Detail,Подробности за шаблона на терапевтичния план, +Non Conformance,Несъответствие, +Process Owner,Собственик на процеса, +Corrective Action,Коригиращи действия, +Preventive Action,Превантивно действие, +Problem,Проблем, +Responsible,Отговорен, +Completion By,Завършване от, +Process Owner Full Name,Пълно име на собственика на процеса, +Right Index,Индекс вдясно, +Left Index,Ляв указател, +Sub Procedure,Подпроцедура, +Passed,Преминали, +Print Receipt,Разписка за печат, +Edit Receipt,Редактиране на разписка, +Focus on search input,Фокусирайте се върху въвеждането при търсене, +Focus on Item Group filter,Съсредоточете се върху филтъра за група артикули, +Checkout Order / Submit Order / New Order,Поръчка за плащане / Изпращане на поръчка / Нова поръчка, +Add Order Discount,Добавете отстъпка за поръчка, +Item Code: {0} is not available under warehouse {1}.,Код на артикула: {0} не е наличен в склада {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,"Серийни номера не са налични за артикул {0} под склад {1}. Моля, опитайте да смените склада.", +Fetched only {0} available serial numbers.,Извлечени са само {0} налични серийни номера., +Switch Between Payment Modes,Превключване между режимите на плащане, +Enter {0} amount.,Въведете {0} сума., +You don't have enough points to redeem.,"Нямате достатъчно точки, за да осребрите.", +You can redeem upto {0}.,Можете да осребрите до {0}., +Enter amount to be redeemed.,Въведете сума за осребряване., +You cannot redeem more than {0}.,Не можете да осребрите повече от {0}., +Open Form View,Отворете изгледа на формуляра, +POS invoice {0} created succesfully,POS фактура {0} е създадена успешно, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Количеството на склад не е достатъчно за Код на артикула: {0} под склад {1}. Налично количество {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Сериен номер: {0} вече е транзактиран в друга POS фактура., +Balance Serial No,Сериен номер на баланса, +Warehouse: {0} does not belong to {1},Склад: {0} не принадлежи на {1}, +Please select batches for batched item {0},"Моля, изберете партиди за групиран елемент {0}", +Please select quantity on row {0},"Моля, изберете количество на ред {0}", +Please enter serial numbers for serialized item {0},"Моля, въведете серийни номера за сериализиран елемент {0}", +Batch {0} already selected.,Партида {0} вече е избрана., +Please select a warehouse to get available quantities,"Моля, изберете склад, за да получите налични количества", +"For transfer from source, selected quantity cannot be greater than available quantity",За прехвърляне от източник избраното количество не може да бъде по-голямо от наличното количество, +Cannot find Item with this Barcode,Не може да се намери елемент с този баркод, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} е задължително. Може би записът за обмяна на валута не е създаден за {1} до {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,"{} изпрати активи, свързани с него. Трябва да анулирате активите, за да създадете възвръщаемост на покупката.", +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"Не може да се анулира този документ, тъй като е свързан с изпратен актив {0}. Моля, отменете го, за да продължите.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,"Ред № {}: Сериен номер {} вече е транзактиран в друга POS фактура. Моля, изберете валиден сериен номер.", +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,"Ред № {}: Серийни номера. {} Вече е транзактиран в друга POS фактура. Моля, изберете валиден сериен номер.", +Item Unavailable,Артикулът не е наличен, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"Ред № {}: Пореден номер {} не може да бъде върнат, тъй като не е бил транзактиран в оригинална фактура {}", +Please set default Cash or Bank account in Mode of Payment {},"Моля, задайте по подразбиране Парична или банкова сметка в режим на плащане {}", +Please set default Cash or Bank account in Mode of Payments {},"Моля, задайте по подразбиране Парична или банкова сметка в режим на плащане {}", +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,"Моля, уверете се, че {} акаунтът е акаунт в баланса. Можете да промените родителския акаунт на акаунт в баланс или да изберете друг акаунт.", +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,"Моля, уверете се, че {} акаунтът е платежна сметка. Променете типа акаунт на Платимо или изберете друг акаунт.", +Row {}: Expense Head changed to {} ,Ред {}: Разходната глава е променена на {}, +because account {} is not linked to warehouse {} ,защото акаунтът {} не е свързан със склад {}, +or it is not the default inventory account,или това не е основната сметка за инвентара, +Expense Head Changed,Главата на разходите е променена, +because expense is booked against this account in Purchase Receipt {},защото разходите се записват срещу този акаунт в разписка за покупка {}, +as no Purchase Receipt is created against Item {}. ,тъй като не се създава разписка за покупка срещу артикул {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,"Това се прави, за да се обработи счетоводното отчитане на случаи, когато разписка за покупка се създава след фактура за покупка", +Purchase Order Required for item {},Поръчка за покупка се изисква за артикул {}, +To submit the invoice without purchase order please set {} ,"За да подадете фактура без поръчка за покупка, моля, задайте {}", +as {} in {},като {} в {}, +Mandatory Purchase Order,Задължителна поръчка за покупка, +Purchase Receipt Required for item {},Изисква се разписка за покупка за артикул {}, +To submit the invoice without purchase receipt please set {} ,"За да подадете фактурата без разписка за покупка, моля, задайте {}", +Mandatory Purchase Receipt,Задължителна разписка за покупка, +POS Profile {} does not belongs to company {},POS профил {} не принадлежи на компания {}, +User {} is disabled. Please select valid user/cashier,"Потребителят {} е деактивиран. Моля, изберете валиден потребител / касиер", +Row #{}: Original Invoice {} of return invoice {} is {}. ,Ред № {}: Оригинална фактура {} на фактура за връщане {} е {}., +Original invoice should be consolidated before or along with the return invoice.,Оригиналната фактура трябва да бъде консолидирана преди или заедно с фактурата за връщане., +You can add original invoice {} manually to proceed.,"Можете да добавите оригинална фактура {} ръчно, за да продължите.", +Please ensure {} account is a Balance Sheet account. ,"Моля, уверете се, че {} акаунтът е акаунт в баланса.", +You can change the parent account to a Balance Sheet account or select a different account.,Можете да промените родителския акаунт на акаунт в баланс или да изберете друг акаунт., +Please ensure {} account is a Receivable account. ,"Моля, уверете се, че {} акаунтът е сметка за вземания.", +Change the account type to Receivable or select a different account.,Променете типа акаунт на Вземане или изберете друг акаунт., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},"{} не може да бъде отменено, тъй като спечелените точки за лоялност са осребрени. Първо анулирайте {} Не {}", +already exists,вече съществува, +POS Closing Entry {} against {} between selected period,Затваряне на POS влизане {} срещу {} между избрания период, +POS Invoice is {},POS фактурата е {}, +POS Profile doesn't matches {},POS профилът не съвпада с {}, +POS Invoice is not {},POS фактура не е {}, +POS Invoice isn't created by user {},POS фактура не е създадена от потребител {}, +Row #{}: {},Ред № {}: {}, +Invalid POS Invoices,Невалидни POS фактури, +Please add the account to root level Company - {},"Моля, добавете акаунта към основна компания - {}", +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Докато създавате акаунт за Child Company {0}, родителският акаунт {1} не е намерен. Моля, създайте родителския акаунт в съответното COA", +Account Not Found,Акаунтът не е намерен, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Докато създавахте акаунт за Child Company {0}, родителският акаунт {1} беше намерен като акаунт в дневник.", +Please convert the parent account in corresponding child company to a group account.,"Моля, конвертирайте родителския акаунт в съответната дъщерна компания в групов акаунт.", +Invalid Parent Account,Невалиден родителски акаунт, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Преименуването му е разрешено само чрез компанията майка {0}, за да се избегне несъответствие.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Ако {0} {1} количество от артикула {2}, схемата {3} ще бъде приложена върху артикула.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Ако {0} {1} си заслужавате елемент {2}, схемата {3} ще бъде приложена върху елемента.", +"As the field {0} is enabled, the field {1} is mandatory.","Тъй като полето {0} е активирано, полето {1} е задължително.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Тъй като полето {0} е активирано, стойността на полето {1} трябва да бъде повече от 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Не може да се достави сериен номер {0} на артикул {1}, тъй като е резервиран за пълна поръчка за продажба {2}", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Поръчката за продажба {0} има резервация за артикула {1}, можете да доставите само резервирана {1} срещу {0}.", +{0} Serial No {1} cannot be delivered,{0} Сериен номер {1} не може да бъде доставен, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Ред {0}: Подизпълнителят е задължителен за суровината {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Тъй като има достатъчно суровини, не е необходима заявка за материал за Склад {0}.", +" If you still want to proceed, please enable {0}.","Ако все пак искате да продължите, моля, активирайте {0}.", +The item referenced by {0} - {1} is already invoiced,"Позицията, посочена от {0} - {1}, вече е фактурирана", +Therapy Session overlaps with {0},Терапевтичната сесия се припокрива с {0}, +Therapy Sessions Overlapping,Терапевтични сесии Припокриване, +Therapy Plans,Планове за терапия, +"Item Code, warehouse, quantity are required on row {0}","Код на артикул, склад, количество се изискват на ред {0}", +Get Items from Material Requests against this Supplier,Вземете артикули от заявки за материали срещу този доставчик, +Enable European Access,Активирайте европейския достъп, +Creating Purchase Order ...,Създаване на поръчка ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Изберете доставчик от доставчиците по подразбиране на елементите по-долу. При избора ще бъде направена Поръчка за покупка срещу артикули, принадлежащи само на избрания Доставчик.", +Row #{}: You must select {} serial numbers for item {}.,Ред № {}: Трябва да изберете {} серийни номера за артикул {}., diff --git a/erpnext/translations/bn.csv b/erpnext/translations/bn.csv index 3c5cb54f43..cf0971667b 100644 --- a/erpnext/translations/bn.csv +++ b/erpnext/translations/bn.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',বি Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',কেটে যাবে না যখন আরো মূল্যনির্ধারণ 'বা' Vaulation এবং মোট 'জন্য নয়, "Cannot delete Serial No {0}, as it is used in stock transactions","মুছে ফেলা যায় না সিরিয়াল কোন {0}, এটা শেয়ার লেনদেনের ক্ষেত্রে ব্যবহার করা হয় যেমন", Cannot enroll more than {0} students for this student group.,{0} এই ছাত্র দলের জন্য ছাত্রদের তুলনায় আরো নথিভুক্ত করা যায় না., -Cannot find Item with this barcode,এই বারকোড সহ আইটেমটি খুঁজে পাওয়া যায় না, Cannot find active Leave Period,সক্রিয় ছাড়ের সময়কাল খুঁজে পাওয়া যাবে না, Cannot produce more Item {0} than Sales Order quantity {1},সেলস আদেশ পরিমাণ বেশী আইটেম {0} সৃষ্টি করতে পারে না {1}, Cannot promote Employee with status Left,কর্মচারী উন্নয়নে স্থিরতা বজায় রাখতে পারে না, @@ -690,7 +689,6 @@ Create Variants,ধরন তৈরি, "Create and manage daily, weekly and monthly email digests.","তৈরি করুন এবং দৈনিক, সাপ্তাহিক এবং মাসিক ইমেল digests পরিচালনা.", Create customer quotes,গ্রাহকের কোট তৈরি করুন, Create rules to restrict transactions based on values.,মান উপর ভিত্তি করে লেনদেনের সীমিত করার নিয়ম তৈরি করুন., -Created By,দ্বারা নির্মিত, Created {0} scorecards for {1} between: ,{1} এর জন্য {1} স্কোরকার্ড তৈরি করেছেন:, Creating Company and Importing Chart of Accounts,সংস্থা তৈরি করা এবং অ্যাকাউন্টগুলির আমদানি চার্ট, Creating Fees,ফি তৈরি করা, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,গুদাম জন্য জমা For row {0}: Enter Planned Qty,সারি {0} জন্য: পরিকল্পিত পরিমাণ লিখুন, "For {0}, only credit accounts can be linked against another debit entry","{0}, শুধুমাত্র ক্রেডিট অ্যাকাউন্ট অন্য ডেবিট এন্ট্রি বিরুদ্ধে সংযুক্ত করা যাবে জন্য", "For {0}, only debit accounts can be linked against another credit entry","{0}, শুধুমাত্র ডেবিট অ্যাকাউন্ট অন্য ক্রেডিট এন্ট্রি বিরুদ্ধে সংযুক্ত করা যাবে জন্য", -Form View,ফর্ম দেখুন, Forum Activity,ফোরাম কার্যক্রম, Free item code is not selected,ফ্রি আইটেম কোড নির্বাচন করা হয়নি, Freight and Forwarding Charges,মাল ও ফরোয়ার্ডিং চার্জ, @@ -2638,7 +2635,6 @@ Send SMS,এসএমএস পাঠান, Send mass SMS to your contacts,ভর এসএমএস আপনার পরিচিতি পাঠান, Sensitivity,সংবেদনশীলতা, Sent,প্রেরিত, -Serial #,সিরিয়াল #, Serial No and Batch,ক্রমিক নং এবং ব্যাচ, Serial No is mandatory for Item {0},সিরিয়াল কোন আইটেম জন্য বাধ্যতামূলক {0}, Serial No {0} does not belong to Batch {1},সিরিয়াল না {0} ব্যাচের অন্তর্গত নয় {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ERPNext স্বাগতম, What do you need help with?,আপনি সাহায্য প্রয়োজন কি?, What does it do?,এটার কাজ কি?, Where manufacturing operations are carried.,উত্পাদন অপারেশন কোথায় সম্পন্ন হয়., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","চাইল্ড কোম্পানির জন্য অ্যাকাউন্ট তৈরি করার সময় {0}, প্যারেন্ট অ্যাকাউন্ট {1} পাওয়া যায় নি। অনুগ্রহ করে সংশ্লিষ্ট সিওএতে প্যারেন্ট অ্যাকাউন্টটি তৈরি করুন", White,সাদা, Wire Transfer,ওয়্যার ট্রান্সফার, WooCommerce Products,WooCommerce পণ্য, @@ -3493,6 +3488,7 @@ Likes,পছন্দ, Merge with existing,বিদ্যমান সাথে একত্রীকরণ, Office,অফিস, Orientation,ঝোঁক, +Parent,মাতা, Passive,নিষ্ক্রিয়, Payment Failed,পেমেন্ট ব্যর্থ হয়েছে, Percent,শতাংশ, @@ -3543,6 +3539,7 @@ Shift,পরিবর্তন, Show {0},{0} দেখান, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","নামকরণ সিরিজে "-", "#", "।", "/", "{" এবং "}" ব্যতীত বিশেষ অক্ষর অনুমোদিত নয়", Target Details,টার্গেটের বিশদ, +{0} already has a Parent Procedure {1}.,{0} ইতিমধ্যে একটি মূল পদ্ধতি আছে {1}।, API,এপিআই, Annual,বার্ষিক, Approved,অনুমোদিত, @@ -4241,7 +4238,6 @@ Download as JSON,জসন হিসাবে ডাউনলোড করুন End date can not be less than start date,শেষ তারিখ শুরু তারিখ থেকে কম হতে পারে না, For Default Supplier (Optional),ডিফল্ট সরবরাহকারীর জন্য (ঐচ্ছিক), From date cannot be greater than To date,তারিখ থেকে তারিখের চেয়ে বেশি হতে পারে না, -Get items from,থেকে আইটেম পান, Group by,গ্রুপ দ্বারা, In stock,স্টক ইন, Item name,আইটেম নাম, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,গুণমানের প্রতিক Quality Goal,মান লক্ষ্য, Monitoring Frequency,নিরীক্ষণ ফ্রিকোয়েন্সি, Weekday,রবিবার বাদে সপ্তাহের যে-কোন দিন, -January-April-July-October,জানুয়ারি-এপ্রিল-জুলাই-অক্টোবর, -Revision and Revised On,রিভিশন এবং সংশোধিত চালু, -Revision,সংস্করণ, -Revised On,সংশোধিত অন, Objectives,উদ্দেশ্য, Quality Goal Objective,গুণগত লক্ষ্য লক্ষ্য, Objective,উদ্দেশ্য, @@ -7574,7 +7566,6 @@ Parent Procedure,মূল প্রক্রিয়া, Processes,প্রসেস, Quality Procedure Process,গুণমান প্রক্রিয়া প্রক্রিয়া, Process Description,প্রক্রিয়া বর্ণনা, -Child Procedure,শিশু প্রক্রিয়া, Link existing Quality Procedure.,বিদ্যমান গুণমানের পদ্ধতিটি লিঙ্ক করুন।, Additional Information,অতিরিক্ত তথ্য, Quality Review Objective,গুণ পর্যালোচনা উদ্দেশ্য, @@ -8557,7 +8548,6 @@ Purchase Order Trends,অর্ডার প্রবণতা ক্রয়, Purchase Receipt Trends,কেনার রসিদ প্রবণতা, Purchase Register,ক্রয় নিবন্ধন, Quotation Trends,উদ্ধৃতি প্রবণতা, -Quoted Item Comparison,উদ্ধৃত আইটেম তুলনা, Received Items To Be Billed,গৃহীত চলছে বিল তৈরি করা, Qty to Order,অর্ডার Qty, Requested Items To Be Transferred,অনুরোধ করা চলছে স্থানান্তর করা, @@ -9091,7 +9081,6 @@ Unmarked days,চিহ্নহীন দিনগুলি, Absent Days,অনুপস্থিত দিন, Conditions and Formula variable and example,শর্ত এবং সূত্র পরিবর্তনশীল এবং উদাহরণ, Feedback By,প্রতিক্রিয়া দ্বারা, -MTNG-.YYYY.-.MM.-.DD.-,এমটিএনজি -হায়িওয়াই .- এমএম .-। ডিডি.-, Manufacturing Section,উত্পাদন বিভাগ, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","ডিফল্টরূপে, গ্রাহকের নাম প্রবেশ সম্পূর্ণ নাম অনুসারে সেট করা হয়। আপনি যদি চান গ্রাহকদের একটি দ্বারা নামকরণ করা", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,নতুন বিক্রয় লেনদেন তৈরি করার সময় ডিফল্ট মূল্য তালিকাকে কনফিগার করুন। এই মূল্য তালিকা থেকে আইটেমের দামগুলি আনা হবে।, @@ -9692,7 +9681,6 @@ Available Balance,পর্যাপ্ত টাকা, Reserved Balance,সংরক্ষিত ভারসাম্য, Uncleared Balance,অপরিচ্ছন্ন ব্যালেন্স, Payment related to {0} is not completed,{0} সম্পর্কিত অর্থ প্রদান সম্পূর্ণ হয়নি, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,সারি # {}: ক্রমিক নং {}} {already ইতিমধ্যে অন্য একটি পস ইনভয়েসে লেনদেন হয়েছে। দয়া করে বৈধ সিরিয়াল নম্বর নির্বাচন করুন।, Row #{}: Item Code: {} is not available under warehouse {}.,সারি # {}: আইটেম কোড: {w গুদাম under} এর অধীন উপলব্ধ}, Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,সারি # {}: স্টক পরিমাণ আইটেম কোডের জন্য পর্যাপ্ত নয়: are w গুদাম}} এর অধীনে} উপলব্ধ পরিমাণ {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,সারি # {}: দয়া করে একটি সিরিয়াল নং এবং আইটেমের বিরুদ্ধে ব্যাচ নির্বাচন করুন::} বা লেনদেন সম্পূর্ণ করতে এটি সরান।, @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},গুদামে {0} এর Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,স্টক সেটিংসে নেতিবাচক স্টককে মঞ্জুরি দিন বা এগিয়ে যাওয়ার জন্য স্টক এন্ট্রি তৈরি করুন।, No Inpatient Record found against patient {0},রোগীর বিরুদ্ধে কোনও ইনপিশেন্ট রেকর্ড পাওয়া যায় নি {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,রোগী এনকাউন্টার} 1} এর বিপরীতে একটি ইনপিশেন্ট icationষধ আদেশ {0} ইতিমধ্যে বিদ্যমান।, +Allow In Returns,রিটার্নগুলিতে অনুমতি দিন, +Hide Unavailable Items,উপলভ্য আইটেমগুলি লুকান, +Apply Discount on Discounted Rate,ছাড়ের হারে ছাড় প্রয়োগ করুন, +Therapy Plan Template,থেরাপি পরিকল্পনা টেম্পলেট, +Fetching Template Details,টেমপ্লেটের বিশদ সংগ্রহ করা হচ্ছে, +Linked Item Details,লিঙ্কযুক্ত আইটেমের বিশদ, +Therapy Types,থেরাপির প্রকারগুলি, +Therapy Plan Template Detail,থেরাপি পরিকল্পনা টেম্পলেট বিস্তারিত, +Non Conformance,নন কনফারেন্স, +Process Owner,প্রক্রিয়া মালিক, +Corrective Action,সংশোধনমূলক কাজ, +Preventive Action,প্রতিরোধী ব্যবস্থা, +Problem,সমস্যা, +Responsible,দায়বদ্ধ, +Completion By,সমাপ্তি দ্বারা, +Process Owner Full Name,প্রক্রিয়া মালিকের পুরো নাম, +Right Index,রাইট ইনডেক্স, +Left Index,বাম সূচক, +Sub Procedure,উপ পদ্ধতি, +Passed,পাস করেছেন, +Print Receipt,রশিদ প্রিন্ট করুন, +Edit Receipt,প্রাপ্তি সম্পাদনা করুন, +Focus on search input,অনুসন্ধান ইনপুট উপর ফোকাস, +Focus on Item Group filter,আইটেম গ্রুপ ফিল্টার উপর ফোকাস, +Checkout Order / Submit Order / New Order,চেকআউট অর্ডার / অর্ডার জমা / নতুন আদেশ, +Add Order Discount,অর্ডার ছাড় ছাড়ুন, +Item Code: {0} is not available under warehouse {1}.,আইটেম কোড: {0 w গুদাম {1} এর অধীন উপলব্ধ নয়}, +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,গুদাম {1} এর অধীনে আইটেম {0} এর জন্য ক্রমিক সংখ্যা অনুপলব্ধ} গুদাম পরিবর্তন করার চেষ্টা করুন।, +Fetched only {0} available serial numbers.,কেবল পাওয়া যায় serial 0 serial ক্রমিক সংখ্যা।, +Switch Between Payment Modes,পেমেন্ট মোডগুলির মধ্যে স্যুইচ করুন, +Enter {0} amount.,{0} পরিমাণ লিখুন।, +You don't have enough points to redeem.,খালাস দেওয়ার মতো পর্যাপ্ত পয়েন্ট আপনার কাছে নেই।, +You can redeem upto {0}.,আপনি {0 to অবধি রিডিম করতে পারেন}, +Enter amount to be redeemed.,খালাস পাওয়ার পরিমাণ প্রবেশ করান।, +You cannot redeem more than {0}.,আপনি {0 than এর বেশি খালাস করতে পারবেন না}, +Open Form View,ফর্ম ভিউ খুলুন, +POS invoice {0} created succesfully,পস চালান {0 suc সফলভাবে তৈরি করা হয়েছে, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,আইটেম কোডের জন্য স্টকের পরিমাণ পর্যাপ্ত নয়: {0 w গুদাম {1} এর অধীনে} উপলব্ধ পরিমাণ {2}।, +Serial No: {0} has already been transacted into another POS Invoice.,ক্রমিক নং: {0 already ইতিমধ্যে অন্য একটি পস ইনভয়েসে লেনদেন হয়েছে।, +Balance Serial No,ব্যালেন্স সিরিয়াল নং, +Warehouse: {0} does not belong to {1},গুদাম: {0} {1} এর সাথে সম্পর্কিত নয়, +Please select batches for batched item {0},ব্যাচযুক্ত আইটেমের জন্য ব্যাচগুলি নির্বাচন করুন {0}, +Please select quantity on row {0},দয়া করে সারিতে পরিমাণ নির্বাচন করুন quantity 0}, +Please enter serial numbers for serialized item {0},ক্রমিক আইটেম for 0 for জন্য ক্রমিক নম্বর লিখুন, +Batch {0} already selected.,ব্যাচ {0} ইতিমধ্যে নির্বাচিত।, +Please select a warehouse to get available quantities,উপলব্ধ পরিমাণে পেতে একটি গুদাম নির্বাচন করুন, +"For transfer from source, selected quantity cannot be greater than available quantity","উত্স থেকে স্থানান্তর করার জন্য, নির্বাচিত পরিমাণ উপলব্ধ পরিমাণের চেয়ে বড় হতে পারে না", +Cannot find Item with this Barcode,এই বারকোড সহ আইটেমটি খুঁজে পাওয়া যায় না, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} বাধ্যতামূলক। হতে পারে মুদ্রা বিনিময় রেকর্ডটি {1} থেকে {2} এর জন্য তৈরি করা হয়নি, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{it এর সাথে সংযুক্ত সম্পদ জমা দিয়েছে। ক্রয় রিটার্ন তৈরি করতে আপনার সম্পত্তিগুলি বাতিল করতে হবে।, +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,জমা দেওয়া সম্পদ {0} এর সাথে সংযুক্ত থাকায় এই দস্তাবেজটি বাতিল করতে পারবেন না} চালিয়ে যেতে দয়া করে এটি বাতিল করুন।, +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,সারি # {}: সিরিয়াল নং {already ইতিমধ্যে অন্য একটি পস ইনভয়েসে লেনদেন হয়েছে। দয়া করে বৈধ সিরিয়াল নম্বর নির্বাচন করুন।, +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,সারি # {}: সিরিয়াল নম্বর {already ইতিমধ্যে অন্য একটি পস ইনভয়েসে লেনদেন হয়েছে। দয়া করে বৈধ সিরিয়াল নম্বর নির্বাচন করুন।, +Item Unavailable,আইটেম অনুপলব্ধ, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},সারি # {}: সিরিয়াল নং {returned আসল চালানে লেনদেন না হওয়ায় এটি ফেরানো যাবে না {}, +Please set default Cash or Bank account in Mode of Payment {},দয়া করে প্রদানের পদ্ধতিতে ডিফল্ট নগদ বা ব্যাংক অ্যাকাউন্ট সেট করুন {, +Please set default Cash or Bank account in Mode of Payments {},অর্থপ্রদানের মোডে দয়া করে ডিফল্ট নগদ বা ব্যাংক অ্যাকাউন্ট সেট করুন {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,দয়া করে নিশ্চিত করুন যে}} অ্যাকাউন্টটি ব্যালেন্স শীট অ্যাকাউন্ট। আপনি প্যারেন্ট অ্যাকাউন্টটি ব্যালেন্স শীট অ্যাকাউন্টে পরিবর্তন করতে পারেন বা একটি আলাদা অ্যাকাউন্ট নির্বাচন করতে পারেন।, +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,দয়া করে নিশ্চিত করুন যে {} অ্যাকাউন্টটি একটি প্রদেয় অ্যাকাউন্ট। অ্যাকাউন্টের ধরণটি প্রদানযোগ্য হিসাবে পরিবর্তন করুন বা একটি আলাদা অ্যাকাউন্ট নির্বাচন করুন।, +Row {}: Expense Head changed to {} ,সারি {}: ব্যয় হেড পরিবর্তন করে {to, +because account {} is not linked to warehouse {} ,কারণ অ্যাকাউন্ট {} গুদামের সাথে যুক্ত নয় {linked, +or it is not the default inventory account,বা এটি ডিফল্ট ইনভেন্টরি অ্যাকাউন্ট নয়, +Expense Head Changed,ব্যয় মাথা পরিবর্তন হয়েছে, +because expense is booked against this account in Purchase Receipt {},কেননা ব্যয় ক্রয় রশিদে এই অ্যাকাউন্টের বিরুদ্ধে বুকিং করা হয়েছে is}, +as no Purchase Receipt is created against Item {}. ,আইটেম against against এর বিপরীতে কোনও ক্রয়ের রশিদ তৈরি হয় না}, +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,ক্রয়ের চালানের পরে যখন ক্রয় রশিদ তৈরি হয় তখন অ্যাকাউন্টগুলির জন্য অ্যাকাউন্টিং পরিচালনা করতে এটি করা হয়, +Purchase Order Required for item {},আইটেমের জন্য ক্রয়ের অর্ডার প্রয়োজনীয় {}, +To submit the invoice without purchase order please set {} ,ক্রয়ের আদেশ ছাড়াই চালান জমা দিতে দয়া করে set set সেট করুন, +as {} in {},{} হিসাবে {, +Mandatory Purchase Order,বাধ্যতামূলক ক্রয়ের আদেশ, +Purchase Receipt Required for item {},আইটেমের জন্য প্রয়োজনীয় ক্রয়ের রশিদ}}, +To submit the invoice without purchase receipt please set {} ,ক্রয় প্রাপ্তি ছাড়াই চালান জমা দিতে দয়া করে {set সেট করুন, +Mandatory Purchase Receipt,বাধ্যতামূলক ক্রয়ের রশিদ, +POS Profile {} does not belongs to company {},পস প্রোফাইল {} সংস্থার নয় {company, +User {} is disabled. Please select valid user/cashier,ব্যবহারকারী {disabled অক্ষম। বৈধ ব্যবহারকারী / ক্যাশিয়ার নির্বাচন করুন, +Row #{}: Original Invoice {} of return invoice {} is {}. ,সারি # {}: রিটার্ন চালানের মূল চালান {} {}}}}, +Original invoice should be consolidated before or along with the return invoice.,আসল চালানটি রিটার্ন চালানের আগে বা তার সাথে একীভূত করা উচিত।, +You can add original invoice {} manually to proceed.,আপনি এগিয়ে চলার জন্য ম্যানুয়ালি মূল চালান can {যুক্ত করতে পারেন।, +Please ensure {} account is a Balance Sheet account. ,দয়া করে নিশ্চিত করুন যে}} অ্যাকাউন্টটি ব্যালেন্স শীট অ্যাকাউন্ট।, +You can change the parent account to a Balance Sheet account or select a different account.,আপনি প্যারেন্ট অ্যাকাউন্টটি ব্যালেন্স শীট অ্যাকাউন্টে পরিবর্তন করতে পারেন বা একটি আলাদা অ্যাকাউন্ট নির্বাচন করতে পারেন।, +Please ensure {} account is a Receivable account. ,দয়া করে নিশ্চিত করুন যে {} অ্যাকাউন্টটি একটি গ্রহণযোগ্য অ্যাকাউন্ট।, +Change the account type to Receivable or select a different account.,প্রাপ্তির জন্য অ্যাকাউন্টের ধরণটি পরিবর্তন করুন বা একটি আলাদা অ্যাকাউন্ট নির্বাচন করুন।, +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},অর্জিত আনুগত্য পয়েন্টগুলি খালাস করার পরে L canceled বাতিল করা যাবে না। প্রথমে {} না {cancel বাতিল করুন, +already exists,আগে থেকেই আছে, +POS Closing Entry {} against {} between selected period,নির্বাচিত সময়ের মধ্যে POS সমাপ্তি এন্ট্রি}} এর বিপরীতে।।, +POS Invoice is {},পস চালান {}, +POS Profile doesn't matches {},পোস প্রোফাইল {matches এর সাথে মেলে না, +POS Invoice is not {},পস চালান {is নয়, +POS Invoice isn't created by user {},পস চালান ব্যবহারকারী user by দ্বারা তৈরি করা হয়নি, +Row #{}: {},সারি # {}: {}, +Invalid POS Invoices,অবৈধ পস চালানগুলি, +Please add the account to root level Company - {},অ্যাকাউন্টটি মূল স্তরের সংস্থায় যুক্ত করুন - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","চাইল্ড কোম্পানির জন্য অ্যাকাউন্ট তৈরি করার সময় {0।, প্যারেন্ট অ্যাকাউন্ট {1} পাওয়া যায় নি। অনুগ্রহ করে সংশ্লিষ্ট সিওএতে প্যারেন্ট অ্যাকাউন্টটি তৈরি করুন", +Account Not Found,অ্যাকাউন্ট পাওয়া যায় না, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","চাইল্ড কোম্পানির জন্য অ্যাকাউন্ট তৈরি করার সময় {0}, পিতৃ অ্যাকাউন্ট {1 a একটি খাত্তরের অ্যাকাউন্ট হিসাবে পাওয়া গেছে।", +Please convert the parent account in corresponding child company to a group account.,অনুগ্রহ করে সংশ্লিষ্ট শিশু সংস্থায় পিতৃ অ্যাকাউন্টটি একটি গোষ্ঠী অ্যাকাউন্টে রূপান্তর করুন।, +Invalid Parent Account,অবৈধ প্যারেন্ট অ্যাকাউন্ট, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",অমিলটি এড়ানোর জন্য এটির পুনঃনামকরণ কেবলমাত্র মূল সংস্থা {0} এর মাধ্যমে অনুমোদিত।, +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.",আপনি যদি আইটেমের পরিমাণ {0} {1} {2} করেন তবে স্কিম {3 the আইটেমটিতে প্রয়োগ করা হবে।, +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.",আপনি যদি {0} {1} মূল্যবান আইটেম {2} করেন তবে স্কিমে {3 the আইটেমটিতে প্রয়োগ করা হবে।, +"As the field {0} is enabled, the field {1} is mandatory.",ক্ষেত্রটি {0} সক্ষম করা হওয়ায় ক্ষেত্র {1} বাধ্যতামূলক।, +"As the field {0} is enabled, the value of the field {1} should be more than 1.",ক্ষেত্রের {0} সক্ষম করা হওয়ায় ক্ষেত্রের মান {1} 1 এর বেশি হওয়া উচিত।, +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},আইটেম Ser 1} এর ক্রমিক নং {0 deliver সরবরাহ করতে পারে না কেননা এটি বিক্রয় পূর্ণ অর্ডার অর্ডার {2 to, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","বিক্রয় অর্ডার {0} এর আইটেমটির জন্য সংরক্ষণ রয়েছে {1}, আপনি কেবল reserved 0} এর বিপরীতে সংরক্ষিত {1 deliver সরবরাহ করতে পারেন}", +{0} Serial No {1} cannot be delivered,{0} ক্রমিক নং {1} সরবরাহ করা যায় না, +Row {0}: Subcontracted Item is mandatory for the raw material {1},সারি {0}: সাবকন্ট্রাক্ট আইটেমটি কাঁচামালের জন্য বাধ্যতামূলক for 1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","যেহেতু পর্যাপ্ত কাঁচামাল রয়েছে, গুদাম {0} এর জন্য সামগ্রীর অনুরোধের প্রয়োজন নেই}", +" If you still want to proceed, please enable {0}.",আপনি যদি এখনও এগিয়ে যেতে চান তবে দয়া করে {0 enable সক্ষম করুন}, +The item referenced by {0} - {1} is already invoiced,{0} - {1} দ্বারা রেফারেন্স করা আইটেমটি ইতিমধ্যে চালিত, +Therapy Session overlaps with {0},থেরাপি সেশন {0 with দিয়ে ওভারল্যাপ করে, +Therapy Sessions Overlapping,থেরাপি সেশনস ওভারল্যাপিং, +Therapy Plans,থেরাপি পরিকল্পনা, +"Item Code, warehouse, quantity are required on row {0}","আইটেম কোড, গুদাম, পরিমাণ সারিতে প্রয়োজন {0}", +Get Items from Material Requests against this Supplier,এই সরবরাহকারীর বিরুদ্ধে উপাদান অনুরোধগুলি থেকে আইটেমগুলি পান, +Enable European Access,ইউরোপীয় অ্যাক্সেস সক্ষম করুন, +Creating Purchase Order ...,ক্রয় ক্রম তৈরি করা হচ্ছে ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","নীচের আইটেমগুলির ডিফল্ট সরবরাহকারী থেকে কোনও সরবরাহকারী নির্বাচন করুন। নির্বাচনের সময়, কেবলমাত্র নির্বাচিত সরবরাহকারীর অন্তর্ভুক্ত আইটেমগুলির বিরুদ্ধে ক্রয় আদেশ দেওয়া হবে।", +Row #{}: You must select {} serial numbers for item {}.,সারি # {}: আইটেমের জন্য আপনাকে অবশ্যই}} ক্রমিক সংখ্যা নির্বাচন করতে হবে {}।, diff --git a/erpnext/translations/bs.csv b/erpnext/translations/bs.csv index e5b19dae32..6ef445a1af 100644 --- a/erpnext/translations/bs.csv +++ b/erpnext/translations/bs.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Ne mogu Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',Ne mogu odbiti kada kategorija je za 'Vrednovanje' ili 'Vaulation i Total', "Cannot delete Serial No {0}, as it is used in stock transactions","Ne možete izbrisati serijski broj {0}, koji se koristi u prodaji transakcije", Cannot enroll more than {0} students for this student group.,Ne može upisati više od {0} studenata za ovu grupa studenata., -Cannot find Item with this barcode,Stavka sa ovim barkodom nije pronađena, Cannot find active Leave Period,Ne mogu pronaći aktivni period otpusta, Cannot produce more Item {0} than Sales Order quantity {1},Ne može proizvesti više predmeta {0} od prodajnog naloga količina {1}, Cannot promote Employee with status Left,Ne može promovirati zaposlenika sa statusom levo, @@ -690,7 +689,6 @@ Create Variants,Kreirajte Varijante, "Create and manage daily, weekly and monthly email digests.","Stvaranje i upravljanje dnevne , tjedne i mjesečne e razgradnju .", Create customer quotes,Napravi citati kupac, Create rules to restrict transactions based on values.,Stvaranje pravila za ograničavanje prometa na temelju vrijednosti ., -Created By,Kreirao, Created {0} scorecards for {1} between: ,Napravljene {0} pokazivačke karte za {1} između:, Creating Company and Importing Chart of Accounts,Stvaranje preduzeća i uvoz računa, Creating Fees,Kreiranje naknada, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Jer je potrebno Warehouse prije Podnijet For row {0}: Enter Planned Qty,Za red {0}: Unesite planirani broj, "For {0}, only credit accounts can be linked against another debit entry","Za {0}, samo kredit računa može biti povezan protiv drugog ulaska debit", "For {0}, only debit accounts can be linked against another credit entry","Za {0}, samo debitne račune mogu povezati protiv druge kreditne unos", -Form View,Form View, Forum Activity,Aktivnost foruma, Free item code is not selected,Besplatni kod artikla nije odabran, Freight and Forwarding Charges,Teretni i Forwarding Optužbe, @@ -2638,7 +2635,6 @@ Send SMS,Pošalji SMS, Send mass SMS to your contacts,Pošalji masovne SMS poruke svojim kontaktima, Sensitivity,Osjetljivost, Sent,Poslano, -Serial #,Serial #, Serial No and Batch,Serijski broj i Batch, Serial No is mandatory for Item {0},Serijski Nema je obvezna za točke {0}, Serial No {0} does not belong to Batch {1},Serijski broj {0} ne pripada Batch {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Dobrodošli na ERPNext, What do you need help with?,Šta ti je potrebna pomoć?, What does it do?,Što učiniti ?, Where manufacturing operations are carried.,Gdje se obavljaju proizvodne operacije., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Dok ste kreirali račun za nadređeno preduzeće {0}, roditeljski račun {1} nije pronađen. Napravite roditeljski račun u odgovarajućem COA", White,Bijel, Wire Transfer,Wire Transfer, WooCommerce Products,WooCommerce Proizvodi, @@ -3493,6 +3488,7 @@ Likes,Like, Merge with existing,Merge sa postojećim, Office,Ured, Orientation,orijentacija, +Parent,Roditelj, Passive,Pasiva, Payment Failed,plaćanje nije uspjelo, Percent,Postotak, @@ -3543,6 +3539,7 @@ Shift,Shift, Show {0},Prikaži {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Posebni znakovi osim "-", "#", ".", "/", "{" I "}" nisu dozvoljeni u imenovanju serija", Target Details,Detalji cilja, +{0} already has a Parent Procedure {1}.,{0} već ima roditeljsku proceduru {1}., API,API, Annual,godišnji, Approved,Odobreno, @@ -4241,7 +4238,6 @@ Download as JSON,Preuzmi kao JSON, End date can not be less than start date,Datum završetka ne može biti manja od početnog datuma, For Default Supplier (Optional),Za podrazumevani dobavljač, From date cannot be greater than To date,Od datuma ne može biti veća od To Date, -Get items from,Get stavke iz, Group by,Group By, In stock,Na zalihama, Item name,Naziv artikla, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Parametar predloška za povratne informacije Quality Goal,Cilj kvaliteta, Monitoring Frequency,Frekvencija praćenja, Weekday,Radnim danom, -January-April-July-October,Januar-april-juli-oktobar, -Revision and Revised On,Revizija i revizija dalje, -Revision,Revizija, -Revised On,Izmijenjeno, Objectives,Ciljevi, Quality Goal Objective,Cilj kvaliteta kvaliteta, Objective,Cilj, @@ -7574,7 +7566,6 @@ Parent Procedure,Postupak roditelja, Processes,Procesi, Quality Procedure Process,Proces postupka kvaliteta, Process Description,Opis procesa, -Child Procedure,Dječiji postupak, Link existing Quality Procedure.,Povežite postojeći postupak kvaliteta., Additional Information,Dodatne informacije, Quality Review Objective,Cilj pregleda kvaliteta, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Trendovi narudžbenica kupnje, Purchase Receipt Trends,Račun kupnje trendovi, Purchase Register,Kupnja Registracija, Quotation Trends,Trendovi ponude, -Quoted Item Comparison,Citirano Stavka Poređenje, Received Items To Be Billed,Primljeni Proizvodi se naplaćuje, Qty to Order,Količina za narudžbu, Requested Items To Be Transferred,Traženi stavki za prijenos, @@ -9091,7 +9081,6 @@ Unmarked days,Neoznačeni dani, Absent Days,Dani odsutnosti, Conditions and Formula variable and example,Uvjeti i varijabla formule i primjer, Feedback By,Povratne informacije od, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.GGGG .-. MM .-. DD.-, Manufacturing Section,Odjel za proizvodnju, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Po defaultu, Korisničko ime je postavljeno prema punom imenu. Ako želite da kupce imenuje a", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Konfigurirajte zadani cjenik prilikom kreiranja nove prodajne transakcije. Cijene stavki će se preuzeti iz ovog cjenika., @@ -9692,7 +9681,6 @@ Available Balance,Dostupno stanje, Reserved Balance,Rezervisano stanje, Uncleared Balance,Nerazjašnjeni bilans, Payment related to {0} is not completed,Isplata vezana za {0} nije završena, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Red # {}: serijski broj {}. {} je već prebačen na drugu POS fakturu. Odaberite važeći serijski broj., Row #{}: Item Code: {} is not available under warehouse {}.,Red # {}: Kod artikla: {} nije dostupan u skladištu {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Red # {}: Količina zaliha nije dovoljna za šifru artikla: {} ispod skladišta {}. Dostupna količina {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Red # {}: Odaberite serijski broj i seriju stavke: {} ili ga uklonite da biste dovršili transakciju., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Količina nije dostupna za {0} u Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Omogućite Dozvoli negativne zalihe u postavkama zaliha ili kreirajte unos zaliha da biste nastavili., No Inpatient Record found against patient {0},Nije pronađen nijedan stacionarni zapis protiv pacijenta {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Nalog stacionarnih lijekova {0} protiv susreta s pacijentima {1} već postoji., +Allow In Returns,Omogući povratak, +Hide Unavailable Items,Sakrij nedostupne stavke, +Apply Discount on Discounted Rate,Primijenite popust na sniženu stopu, +Therapy Plan Template,Predložak plana terapije, +Fetching Template Details,Preuzimanje podataka o predlošku, +Linked Item Details,Povezani detalji predmeta, +Therapy Types,Vrste terapije, +Therapy Plan Template Detail,Pojedinosti predloška plana terapije, +Non Conformance,Neusklađenost, +Process Owner,Vlasnik procesa, +Corrective Action,Korektivna akcija, +Preventive Action,Preventivna akcija, +Problem,Problem, +Responsible,Odgovorno, +Completion By,Završetak, +Process Owner Full Name,Puno ime vlasnika procesa, +Right Index,Desni indeks, +Left Index,Lijevi indeks, +Sub Procedure,Potprocedura, +Passed,Prošao, +Print Receipt,Potvrda o ispisu, +Edit Receipt,Uredi potvrdu, +Focus on search input,Usredotočite se na unos pretraživanja, +Focus on Item Group filter,Usredotočite se na filter grupe predmeta, +Checkout Order / Submit Order / New Order,Narudžba za plaćanje / Predaja naloga / Nova narudžba, +Add Order Discount,Dodajte popust za narudžbinu, +Item Code: {0} is not available under warehouse {1}.,Šifra artikla: {0} nije dostupno u skladištu {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Serijski brojevi nisu dostupni za artikl {0} u skladištu {1}. Pokušajte promijeniti skladište., +Fetched only {0} available serial numbers.,Preuzeto je samo {0} dostupnih serijskih brojeva., +Switch Between Payment Modes,Prebacivanje između načina plaćanja, +Enter {0} amount.,Unesite iznos od {0}., +You don't have enough points to redeem.,Nemate dovoljno bodova za iskorištavanje., +You can redeem upto {0}.,Možete iskoristiti do {0}., +Enter amount to be redeemed.,Unesite iznos koji treba iskoristiti., +You cannot redeem more than {0}.,Ne možete iskoristiti više od {0}., +Open Form View,Otvorite prikaz obrasca, +POS invoice {0} created succesfully,POS račun {0} je uspješno kreiran, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Količina zaliha nije dovoljna za šifru artikla: {0} ispod skladišta {1}. Dostupna količina {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Serijski broj: {0} je već prebačen na drugu POS fakturu., +Balance Serial No,Serijski br. Stanja, +Warehouse: {0} does not belong to {1},Skladište: {0} ne pripada {1}, +Please select batches for batched item {0},Odaberite serije za serijsku stavku {0}, +Please select quantity on row {0},Odaberite količinu u retku {0}, +Please enter serial numbers for serialized item {0},Unesite serijske brojeve za serijsku stavku {0}, +Batch {0} already selected.,Paket {0} je već odabran., +Please select a warehouse to get available quantities,Odaberite skladište da biste dobili dostupne količine, +"For transfer from source, selected quantity cannot be greater than available quantity","Za prijenos iz izvora, odabrana količina ne može biti veća od dostupne količine", +Cannot find Item with this Barcode,Ne mogu pronaći predmet sa ovim crtičnim kodom, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} je obavezno. Možda zapis mjenjačnice nije kreiran za {1} do {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} je poslao sredstva povezana s tim. Morate otkazati imovinu da biste stvorili povrat kupovine., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Ovaj dokument nije moguće otkazati jer je povezan sa dostavljenim materijalom {0}. Otkažite ga da biste nastavili., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Red # {}: Serijski broj {} je već prebačen na drugu POS fakturu. Odaberite važeći serijski broj., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Red # {}: Serijski brojevi. {} Je već prebačen na drugu POS fakturu. Odaberite važeći serijski broj., +Item Unavailable,Predmet nije dostupan, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Red # {}: Serijski broj {} se ne može vratiti jer nije izvršen u originalnoj fakturi {}, +Please set default Cash or Bank account in Mode of Payment {},Postavite zadani gotovinski ili bankovni račun u načinu plaćanja {}, +Please set default Cash or Bank account in Mode of Payments {},Postavite zadani gotovinski ili bankovni račun u načinu plaćanja {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Molimo provjerite je li račun {} račun bilance stanja. Možete promijeniti roditeljski račun u račun bilansa stanja ili odabrati drugi račun., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Molimo provjerite je li račun {} račun koji se plaća. Promijenite vrstu računa u Plativo ili odaberite drugi račun., +Row {}: Expense Head changed to {} ,Red {}: Glava rashoda promijenjena u {}, +because account {} is not linked to warehouse {} ,jer račun {} nije povezan sa skladištem {}, +or it is not the default inventory account,ili to nije zadani račun zaliha, +Expense Head Changed,Promijenjena glava rashoda, +because expense is booked against this account in Purchase Receipt {},jer je račun evidentiran na ovom računu u potvrdi o kupovini {}, +as no Purchase Receipt is created against Item {}. ,jer se prema stavci {} ne kreira potvrda o kupovini., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,To se radi radi obračunavanja slučajeva kada se potvrda o kupovini kreira nakon fakture za kupovinu, +Purchase Order Required for item {},Narudžbenica potrebna za stavku {}, +To submit the invoice without purchase order please set {} ,"Da biste predali račun bez narudžbenice, postavite {}", +as {} in {},kao u {}, +Mandatory Purchase Order,Obavezna narudžbenica, +Purchase Receipt Required for item {},Potvrda o kupovini za stavku {}, +To submit the invoice without purchase receipt please set {} ,"Da biste predali račun bez potvrde o kupovini, postavite {}", +Mandatory Purchase Receipt,Obavezna potvrda o kupovini, +POS Profile {} does not belongs to company {},POS profil {} ne pripada kompaniji {}, +User {} is disabled. Please select valid user/cashier,Korisnik {} je onemogućen. Odaberite valjanog korisnika / blagajnika, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Redak {{}: Originalna faktura {} fakture za povrat {} je {}., +Original invoice should be consolidated before or along with the return invoice.,Originalnu fakturu treba konsolidirati prije ili zajedno s povratnom fakturom., +You can add original invoice {} manually to proceed.,Možete nastaviti originalnu fakturu {} ručno da biste nastavili., +Please ensure {} account is a Balance Sheet account. ,Molimo provjerite je li račun {} račun bilance stanja., +You can change the parent account to a Balance Sheet account or select a different account.,Možete promijeniti roditeljski račun u račun bilansa stanja ili odabrati drugi račun., +Please ensure {} account is a Receivable account. ,Molimo provjerite je li račun} račun potraživanja., +Change the account type to Receivable or select a different account.,Promijenite vrstu računa u Potraživanje ili odaberite drugi račun., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} se ne može otkazati jer su iskorišteni bodovi za lojalnost iskorišteni. Prvo otkažite {} Ne {}, +already exists,već postoji, +POS Closing Entry {} against {} between selected period,Zatvaranje unosa POS-a {} protiv {} između izabranog perioda, +POS Invoice is {},POS račun je {}, +POS Profile doesn't matches {},POS profil se ne podudara sa {}, +POS Invoice is not {},POS račun nije {}, +POS Invoice isn't created by user {},POS račun ne kreira korisnik {}, +Row #{}: {},Red # {}: {}, +Invalid POS Invoices,Nevažeći POS računi, +Please add the account to root level Company - {},Molimo dodajte račun korijenskom nivou kompanije - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Tokom kreiranja računa za kompaniju Child Child {0}, nadređeni račun {1} nije pronađen. Molimo kreirajte roditeljski račun u odgovarajućem COA", +Account Not Found,Račun nije pronađen, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Prilikom kreiranja računa za Child Company {0}, roditeljski račun {1} je pronađen kao račun glavne knjige.", +Please convert the parent account in corresponding child company to a group account.,Molimo konvertujte roditeljski račun u odgovarajućem podređenom preduzeću u grupni račun., +Invalid Parent Account,Nevažeći račun roditelja, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Preimenovanje je dozvoljeno samo preko matične kompanije {0}, kako bi se izbjegla neusklađenost.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Ako {0} {1} količinu predmeta {2}, shema {3} primijenit će se na stavku.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Ako {0} {1} vrijedite stavku {2}, shema {3} primijenit će se na stavku.", +"As the field {0} is enabled, the field {1} is mandatory.","Kako je polje {0} omogućeno, polje {1} je obavezno.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Kako je polje {0} omogućeno, vrijednost polja {1} trebala bi biti veća od 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Nije moguće isporučiti serijski broj {0} stavke {1} jer je rezervisan za puni popunjeni prodajni nalog {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Prodajni nalog {0} ima rezervaciju za artikal {1}, rezervisani {1} možete dostaviti samo protiv {0}.", +{0} Serial No {1} cannot be delivered,{0} Serijski broj {1} nije moguće isporučiti, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Red {0}: Predmet podugovaranja je obavezan za sirovinu {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Budući da postoji dovoljno sirovina, zahtjev za materijal nije potreban za Skladište {0}.", +" If you still want to proceed, please enable {0}.","Ako i dalje želite nastaviti, omogućite {0}.", +The item referenced by {0} - {1} is already invoiced,Stavka na koju se poziva {0} - {1} već je fakturirana, +Therapy Session overlaps with {0},Sjednica terapije preklapa se sa {0}, +Therapy Sessions Overlapping,Preklapanje terapijskih sesija, +Therapy Plans,Planovi terapije, +"Item Code, warehouse, quantity are required on row {0}","Šifra artikla, skladište, količina su obavezni na retku {0}", +Get Items from Material Requests against this Supplier,Nabavite predmete od materijalnih zahtjeva protiv ovog dobavljača, +Enable European Access,Omogućiti evropski pristup, +Creating Purchase Order ...,Kreiranje narudžbenice ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Odaberite dobavljača od zadanih dobavljača dolje navedenih stavki. Nakon odabira, narudžbenica će se izvršiti samo za proizvode koji pripadaju odabranom dobavljaču.", +Row #{}: You must select {} serial numbers for item {}.,Red # {}: Morate odabrati {} serijske brojeve za stavku {}., diff --git a/erpnext/translations/ca.csv b/erpnext/translations/ca.csv index 638b47a4fb..18fa52a2b7 100644 --- a/erpnext/translations/ca.csv +++ b/erpnext/translations/ca.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',No es po Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',No es pot deduir que és la categoria de 'de Valoració "o" Vaulation i Total', "Cannot delete Serial No {0}, as it is used in stock transactions","No es pot eliminar de sèrie n {0}, ja que s'utilitza en les transaccions de valors", Cannot enroll more than {0} students for this student group.,No es pot inscriure més de {0} estudiants d'aquest grup d'estudiants., -Cannot find Item with this barcode,No es pot trobar cap element amb aquest codi de barres, Cannot find active Leave Period,No es pot trobar el període d'abandonament actiu, Cannot produce more Item {0} than Sales Order quantity {1},No es pot produir més Article {0} que en la quantitat de comandes de client {1}, Cannot promote Employee with status Left,No es pot promocionar l'empleat amb estatus d'esquerra, @@ -690,7 +689,6 @@ Create Variants,Crear Variants, "Create and manage daily, weekly and monthly email digests.","Creació i gestió de resums de correu electrònic diàries, setmanals i mensuals.", Create customer quotes,Crear cites de clients, Create rules to restrict transactions based on values.,Crear regles per restringir les transaccions basades en valors., -Created By,Creat per, Created {0} scorecards for {1} between: ,S'ha creat {0} quadres de paràgraf per {1} entre:, Creating Company and Importing Chart of Accounts,Creació de l'empresa i importació de gràfics de comptes, Creating Fees,Creació de tarifes, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Cal informar del magatzem destí abans d For row {0}: Enter Planned Qty,Per a la fila {0}: introduïu el qty planificat, "For {0}, only credit accounts can be linked against another debit entry","Per {0}, només els comptes de crèdit es poden vincular amb un altre seient de dèbit", "For {0}, only debit accounts can be linked against another credit entry","Per {0}, només els comptes de dèbit poden ser enllaçats amb una altra entrada de crèdit", -Form View,Vista de formularis, Forum Activity,Activitat del fòrum, Free item code is not selected,El codi de l’element gratuït no està seleccionat, Freight and Forwarding Charges,Freight and Forwarding Charges, @@ -2638,7 +2635,6 @@ Send SMS,Enviar SMS, Send mass SMS to your contacts,Enviar SMS massiu als seus contactes, Sensitivity,Sensibilitat, Sent,Enviat, -Serial #,Serial #, Serial No and Batch,Número de sèrie i de lot, Serial No is mandatory for Item {0},Nombre de sèrie és obligatòria per Punt {0}, Serial No {0} does not belong to Batch {1},El número de sèrie {0} no pertany a Batch {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Benvingut a ERPNext, What do you need help with?,En què necessites ajuda?, What does it do?,Què fa?, Where manufacturing operations are carried.,On es realitzen les operacions de fabricació., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Durant la creació d'un compte per a la companyia infantil {0}, no s'ha trobat el compte pare {1}. Creeu el compte pare al COA corresponent", White,Blanc, Wire Transfer,Transferència bancària, WooCommerce Products,Productes WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Gustos, Merge with existing,Combinar amb existent, Office,Oficina, Orientation,Orientació, +Parent,Pare, Passive,Passiu, Payment Failed,Error en el pagament, Percent,Per cent, @@ -3543,6 +3539,7 @@ Shift,Majúscules, Show {0},Mostra {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Caràcters especials, excepte "-", "#", ".", "/", "{" I "}" no estan permesos en nomenar sèries", Target Details,Detalls de l'objectiu, +{0} already has a Parent Procedure {1}.,{0} ja té un procediment progenitor {1}., API,API, Annual,Anual, Approved,Aprovat, @@ -4241,7 +4238,6 @@ Download as JSON,Descarregueu com a Json, End date can not be less than start date,Data de finalització no pot ser inferior a data d'inici, For Default Supplier (Optional),Per proveïdor predeterminat (opcional), From date cannot be greater than To date,Des de la data no pot ser superior a la data, -Get items from,Obtenir articles de, Group by,Agrupar per, In stock,En estoc, Item name,Nom de l'article, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Paràmetre de plantilla de comentaris de qua Quality Goal,Objectiu de qualitat, Monitoring Frequency,Freqüència de seguiment, Weekday,Dia de la setmana, -January-April-July-October,Gener-abril-juliol-octubre, -Revision and Revised On,Revisat i revisat, -Revision,Revisió, -Revised On,Revisat el dia, Objectives,Objectius, Quality Goal Objective,Objectiu de Qualitat, Objective,Objectiu, @@ -7574,7 +7566,6 @@ Parent Procedure,Procediment de pares, Processes,Processos, Quality Procedure Process,Procés de procediment de qualitat, Process Description,Descripció del procés, -Child Procedure,Procediment infantil, Link existing Quality Procedure.,Enllaça el procediment de qualitat existent., Additional Information,Informació adicional, Quality Review Objective,Objectiu de revisió de qualitat, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Compra Tendències Sol·licitar, Purchase Receipt Trends,Purchase Receipt Trends, Purchase Register,Compra de Registre, Quotation Trends,Quotation Trends, -Quoted Item Comparison,Citat article Comparació, Received Items To Be Billed,Articles rebuts per a facturar, Qty to Order,Quantitat de comanda, Requested Items To Be Transferred,Articles sol·licitats per a ser transferits, @@ -9091,7 +9081,6 @@ Unmarked days,Dies sense marcar, Absent Days,Dies absents, Conditions and Formula variable and example,Condició i variable de fórmula i exemple, Feedback By,Opinió de, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.AAAA .-. MM .-. DD.-, Manufacturing Section,Secció de fabricació, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Per defecte, el nom del client s'estableix segons el nom complet introduït. Si voleu que els clients siguin nomenats per un", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Configureu la llista de preus predeterminada quan creeu una nova transacció de vendes. Els preus dels articles s’obtindran d’aquesta llista de preus., @@ -9692,7 +9681,6 @@ Available Balance,Saldo disponible, Reserved Balance,Saldo reservat, Uncleared Balance,Saldo no esborrat, Payment related to {0} is not completed,El pagament relacionat amb {0} no s'ha completat, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Fila núm. {}: Número de sèrie {}. {} ja s'ha transaccionat a una altra factura TPV. Seleccioneu el número de sèrie vàlid., Row #{}: Item Code: {} is not available under warehouse {}.,Fila núm. {}: Codi d'article: {} no està disponible al magatzem {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Fila núm. {}: Quantitat d'estoc insuficient per al codi de l'article: {} sota magatzem {}. Quantitat disponible {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Fila núm. {}: Seleccioneu un número de sèrie i feu un lot contra l'element: {} o traieu-lo per completar la transacció., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Quantitat no disponible per a {0 Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Habiliteu Permet l'acció negativa a la configuració d'estoc o creeu l'entrada d'estoc per continuar., No Inpatient Record found against patient {0},No s'ha trobat cap registre d'hospitalització del pacient {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Ja existeix una ordre de medicació hospitalària {0} contra la trobada de pacients {1}., +Allow In Returns,Permetre devolucions, +Hide Unavailable Items,Amaga els elements no disponibles, +Apply Discount on Discounted Rate,Apliqueu un descompte en la tarifa amb descompte, +Therapy Plan Template,Plantilla de pla de teràpia, +Fetching Template Details,S'estan obtenint els detalls de la plantilla, +Linked Item Details,Detalls de l’enllaç enllaçat, +Therapy Types,Tipus de teràpia, +Therapy Plan Template Detail,Detall de plantilla de pla de teràpia, +Non Conformance,No conformitat, +Process Owner,Propietari del procés, +Corrective Action,Acció correctiva, +Preventive Action,Acció preventiva, +Problem,Problema, +Responsible,Responsable, +Completion By,Finalització per, +Process Owner Full Name,Nom complet del propietari del procés, +Right Index,Índex correcte, +Left Index,Índex esquerre, +Sub Procedure,Subprocediment, +Passed,Aprovat, +Print Receipt,Imprimir el resguard, +Edit Receipt,Edita el rebut, +Focus on search input,Centreu-vos en l’entrada de cerca, +Focus on Item Group filter,Centreu-vos en el filtre del grup d’elements, +Checkout Order / Submit Order / New Order,Comanda de compra / Enviar comanda / Comanda nova, +Add Order Discount,Afegiu un descompte de comanda, +Item Code: {0} is not available under warehouse {1}.,Codi de l'article: {0} no està disponible al magatzem {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Els números de sèrie no estan disponibles per a l'article {0} al magatzem {1}. Proveu de canviar de magatzem., +Fetched only {0} available serial numbers.,S'han obtingut només {0} números de sèrie disponibles., +Switch Between Payment Modes,Canvia entre els modes de pagament, +Enter {0} amount.,Introduïu l'import de {0}., +You don't have enough points to redeem.,No teniu prou punts per bescanviar., +You can redeem upto {0}.,Podeu bescanviar fins a {0}., +Enter amount to be redeemed.,Introduïu l'import a canviar., +You cannot redeem more than {0}.,No podeu bescanviar més de {0}., +Open Form View,Obre la vista de formulari, +POS invoice {0} created succesfully,La factura TPV {0} s'ha creat correctament, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Quantitat d’estoc insuficient per al codi de l’article: {0} al magatzem {1}. Quantitat disponible {2}., +Serial No: {0} has already been transacted into another POS Invoice.,No de sèrie: {0} ja s'ha transaccionat a una altra factura TPV., +Balance Serial No,Núm. De sèrie de saldo, +Warehouse: {0} does not belong to {1},Magatzem: {0} no pertany a {1}, +Please select batches for batched item {0},Seleccioneu lots per a l'element per lots {0}, +Please select quantity on row {0},Seleccioneu la quantitat a la fila {0}, +Please enter serial numbers for serialized item {0},Introduïu els números de sèrie de l'element serialitzat {0}, +Batch {0} already selected.,El lot {0} ja està seleccionat., +Please select a warehouse to get available quantities,Seleccioneu un magatzem per obtenir les quantitats disponibles, +"For transfer from source, selected quantity cannot be greater than available quantity","Per a la transferència des de la font, la quantitat seleccionada no pot ser superior a la quantitat disponible", +Cannot find Item with this Barcode,No es pot trobar un element amb aquest codi de barres, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} és obligatori. Potser el registre de canvi de moneda no es crea de {1} a {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} ha enviat recursos que hi estan vinculats. Heu de cancel·lar els actius per crear la devolució de la compra., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"No es pot cancel·lar aquest document, ja que està enllaçat amb el recurs enviat {0}. Cancel·leu-lo per continuar.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Fila núm. {}: El número de sèrie {} ja s'ha transaccionat a una altra factura TPV. Seleccioneu el número de sèrie vàlid., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Fila núm. {}: Els números de sèrie {} ja s'han transaccionat a una altra factura TPV. Seleccioneu el número de sèrie vàlid., +Item Unavailable,Article no disponible, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"Fila núm. {}: No es pot retornar el número de sèrie {}, ja que no es va transmetre a la factura original {}", +Please set default Cash or Bank account in Mode of Payment {},Establiu el compte bancari o efectiu per defecte al mode de pagament {}, +Please set default Cash or Bank account in Mode of Payments {},Establiu el compte bancari o efectiu per defecte al mode de pagaments {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Assegureu-vos que el compte {} és un compte de balanç. Podeu canviar el compte principal per un compte de balanç o seleccionar un altre compte., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Assegureu-vos que el compte {} és un compte de pagament. Canvieu el tipus de compte a Pagable o seleccioneu un altre compte., +Row {}: Expense Head changed to {} ,Fila {}: el cap de despesa ha canviat a {}, +because account {} is not linked to warehouse {} ,perquè el compte {} no està enllaçat amb el magatzem {}, +or it is not the default inventory account,o no és el compte d'inventari predeterminat, +Expense Head Changed,Cap de despesa canviat, +because expense is booked against this account in Purchase Receipt {},perquè la despesa es reserva en aquest compte al rebut de compra {}, +as no Purchase Receipt is created against Item {}. ,ja que no es crea cap rebut de compra contra l'article {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Això es fa per gestionar la comptabilitat dels casos en què es crea el rebut de compra després de la factura de compra, +Purchase Order Required for item {},Cal fer una comanda de compra per a l'article {}, +To submit the invoice without purchase order please set {} ,"Per enviar la factura sense comanda de compra, configureu {}", +as {} in {},com a {}, +Mandatory Purchase Order,Ordre de compra obligatòria, +Purchase Receipt Required for item {},Cal comprovar el comprovant de l'article {}, +To submit the invoice without purchase receipt please set {} ,"Per enviar la factura sense comprovant de compra, configureu {}", +Mandatory Purchase Receipt,Rebut de compra obligatori, +POS Profile {} does not belongs to company {},El perfil de TPV {} no pertany a l'empresa {}, +User {} is disabled. Please select valid user/cashier,L'usuari {} està desactivat. Seleccioneu un usuari / caixer vàlid, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Fila núm. {}: La factura original {} de la factura de devolució {} és {}., +Original invoice should be consolidated before or along with the return invoice.,La factura original s’ha de consolidar abans o junt amb la factura de devolució., +You can add original invoice {} manually to proceed.,Podeu afegir la factura original {} manualment per continuar., +Please ensure {} account is a Balance Sheet account. ,Assegureu-vos que el compte {} és un compte de balanç., +You can change the parent account to a Balance Sheet account or select a different account.,Podeu canviar el compte principal per un compte de balanç o seleccionar un altre compte., +Please ensure {} account is a Receivable account. ,Assegureu-vos que el compte {} és un compte per cobrar., +Change the account type to Receivable or select a different account.,Canvieu el tipus de compte a Cobrar o seleccioneu un altre compte., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} no es pot cancel·lar ja que s'han bescanviat els Punts de fidelitat guanyats. Primer cancel·leu el {} No {}, +already exists,ja existeix, +POS Closing Entry {} against {} between selected period,Entrada de tancament de TPV {} contra {} entre el període seleccionat, +POS Invoice is {},La factura TPV és {}, +POS Profile doesn't matches {},El perfil de TPV no coincideix amb {}, +POS Invoice is not {},La factura TPV no és {}, +POS Invoice isn't created by user {},L'usuari {} no crea la factura TPV, +Row #{}: {},Fila núm. {}: {}, +Invalid POS Invoices,Factures de TPV no vàlides, +Please add the account to root level Company - {},Afegiu el compte a l'empresa de nivell root - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","En crear un compte per a Child Company {0}, no s'ha trobat el compte principal {1}. Creeu el compte principal al COA corresponent", +Account Not Found,Compte no trobat, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","En crear un compte per a Child Company {0}, el compte principal {1} es va trobar com a compte de llibres majors.", +Please convert the parent account in corresponding child company to a group account.,Convertiu el compte principal de l'empresa secundària corresponent en un compte de grup., +Invalid Parent Account,Compte principal no vàlid, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",Només es permet canviar el nom a través de l'empresa matriu {0} per evitar desajustos., +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Si {0} {1} quantitats de l'article {2}, l'aplicació {3} s'aplicarà a l'article.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Si {0} {1} valeu l'article {2}, l'aplicació {3} s'aplicarà a l'element.", +"As the field {0} is enabled, the field {1} is mandatory.","Com que el camp {0} està habilitat, el camp {1} és obligatori.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Com que el camp {0} està habilitat, el valor del camp {1} ha de ser superior a 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"No es pot lliurar el número de sèrie {0} de l'article {1}, ja que està reservat per omplir la comanda de venda {2}", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.",La comanda de vendes {0} té reserva per a l'article {1}; només podeu enviar reservades {1} contra {0}., +{0} Serial No {1} cannot be delivered,{0} No de sèrie {1} no es pot lliurar, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Fila {0}: l'element subcontractat és obligatori per a la matèria primera {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Com que hi ha prou matèries primeres, la sol·licitud de material no és necessària per a Magatzem {0}.", +" If you still want to proceed, please enable {0}.","Si encara voleu continuar, activeu {0}.", +The item referenced by {0} - {1} is already invoiced,L'element a què fa referència {0} - {1} ja està facturat, +Therapy Session overlaps with {0},La sessió de teràpia es coincideix amb {0}, +Therapy Sessions Overlapping,Sessions de teràpia superposades, +Therapy Plans,Plans de teràpia, +"Item Code, warehouse, quantity are required on row {0}","El codi de l'article, el magatzem, la quantitat són obligatoris a la fila {0}", +Get Items from Material Requests against this Supplier,Obteniu articles de sol·licituds de material contra aquest proveïdor, +Enable European Access,Activa l'accés europeu, +Creating Purchase Order ...,S'està creant una comanda de compra ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Seleccioneu un proveïdor dels proveïdors predeterminats dels articles següents. En seleccionar-lo, es farà una Comanda de compra únicament contra articles pertanyents al Proveïdor seleccionat.", +Row #{}: You must select {} serial numbers for item {}.,Fila núm. {}: Heu de seleccionar {} números de sèrie de l'element {}., diff --git a/erpnext/translations/cs.csv b/erpnext/translations/cs.csv index 03760a1ef2..705e471d27 100644 --- a/erpnext/translations/cs.csv +++ b/erpnext/translations/cs.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Nelze o Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',"Nemůže odečíst, pokud kategorie je pro "ocenění" nebo "Vaulation a Total"", "Cannot delete Serial No {0}, as it is used in stock transactions","Nelze odstranit Pořadové číslo {0}, který se používá na skladě transakcích", Cannot enroll more than {0} students for this student group.,Nemůže přihlásit více než {0} studentů na této studentské skupiny., -Cannot find Item with this barcode,Nelze najít položku s tímto čárovým kódem, Cannot find active Leave Period,Nelze najít aktivní období dovolené, Cannot produce more Item {0} than Sales Order quantity {1},Nelze produkují více položku {0} než prodejní objednávky množství {1}, Cannot promote Employee with status Left,Zaměstnanec se stavem vlevo nelze podpořit, @@ -690,7 +689,6 @@ Create Variants,Vytvoření variant, "Create and manage daily, weekly and monthly email digests.","Vytvářet a spravovat denní, týdenní a měsíční e-mailové digest.", Create customer quotes,Vytvořit citace zákazníků, Create rules to restrict transactions based on values.,Vytvoření pravidla pro omezení transakce na základě hodnot., -Created By,Vytvořeno (kým), Created {0} scorecards for {1} between: ,Vytvořili {0} skóre pro {1} mezi:, Creating Company and Importing Chart of Accounts,Vytváření firemních a importních účtů, Creating Fees,Vytváření poplatků, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Pro Sklad je povinné před Odesláním, For row {0}: Enter Planned Qty,Pro řádek {0}: Zadejte plánované množství, "For {0}, only credit accounts can be linked against another debit entry","Pro {0}, tak úvěrové účty mohou být propojeny na jinou položku debetní", "For {0}, only debit accounts can be linked against another credit entry","Pro {0}, tak debetní účty mohou být spojeny proti jinému připsání", -Form View,Zobrazení formuláře, Forum Activity,Aktivita fóra, Free item code is not selected,Volný kód položky není vybrán, Freight and Forwarding Charges,Nákladní a Spediční Poplatky, @@ -2638,7 +2635,6 @@ Send SMS,Pošlete SMS, Send mass SMS to your contacts,Posílat hromadné SMS vašim kontaktům, Sensitivity,Citlivost, Sent,Odesláno, -Serial #,Serial #, Serial No and Batch,Pořadové číslo a Batch, Serial No is mandatory for Item {0},Pořadové číslo je povinná k bodu {0}, Serial No {0} does not belong to Batch {1},Sériové číslo {0} nepatří do skupiny Batch {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Vítejte na ERPNext, What do you need help with?,S čím potřebuješ pomoci?, What does it do?,Co to dělá?, Where manufacturing operations are carried.,"Tam, kde jsou výrobní operace prováděny.", -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",Při vytváření účtu pro podřízenou společnost {0} nebyl nadřazený účet {1} nalezen. Vytvořte prosím nadřazený účet v odpovídající COA, White,Bílá, Wire Transfer,Bankovní převod, WooCommerce Products,Produkty WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Záliby, Merge with existing,Sloučit s existujícím, Office,Kancelář, Orientation,Orientace, +Parent,Nadřazeno, Passive,Pasivní, Payment Failed,Platba selhala, Percent,Procento, @@ -3543,6 +3539,7 @@ Shift,Posun, Show {0},Zobrazit {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Zvláštní znaky kromě "-", "#", ".", "/", "{" A "}" nejsou v názvových řadách povoleny", Target Details,Podrobnosti o cíli, +{0} already has a Parent Procedure {1}.,{0} již má rodičovský postup {1}., API,API, Annual,Roční, Approved,Schválený, @@ -4241,7 +4238,6 @@ Download as JSON,Stáhnout jako JSON, End date can not be less than start date,Datum ukončení nesmí být menší než datum zahájení, For Default Supplier (Optional),Výchozí dodavatel (volitelné), From date cannot be greater than To date,Od Datum nemůže být větší než Datum, -Get items from,Položka získaná z, Group by,Seskupit podle, In stock,Na skladě, Item name,Název položky, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Parametr šablony zpětné vazby kvality, Quality Goal,Kvalitní cíl, Monitoring Frequency,Frekvence monitorování, Weekday,Všední den, -January-April-July-October,Leden-duben-červenec-říjen, -Revision and Revised On,Revize a revize dne, -Revision,Revize, -Revised On,Revidováno dne, Objectives,Cíle, Quality Goal Objective,Cíl kvality, Objective,Objektivní, @@ -7574,7 +7566,6 @@ Parent Procedure,Rodičovský postup, Processes,Procesy, Quality Procedure Process,Proces řízení kvality, Process Description,Popis procesu, -Child Procedure,Postup dítěte, Link existing Quality Procedure.,Propojte stávající postup kvality., Additional Information,dodatečné informace, Quality Review Objective,Cíl kontroly kvality, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Nákupní objednávka trendy, Purchase Receipt Trends,Doklad o koupi Trendy, Purchase Register,Nákup Register, Quotation Trends,Uvozovky Trendy, -Quoted Item Comparison,Citoval Položka Porovnání, Received Items To Be Billed,"Přijaté položek, které mají být účtovány", Qty to Order,Množství k objednávce, Requested Items To Be Transferred,Požadované položky mají být převedeny, @@ -9091,7 +9081,6 @@ Unmarked days,Neoznačené dny, Absent Days,Chybějící dny, Conditions and Formula variable and example,Podmínky a proměnná vzorce a příklad, Feedback By,Zpětná vazba od, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.RRRR .-. MM .-. DD.-, Manufacturing Section,Sekce výroby, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Ve výchozím nastavení je jméno zákazníka nastaveno podle zadaného celého jména. Pokud chcete, aby zákazníci byli pojmenováni a", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Při vytváření nové prodejní transakce nakonfigurujte výchozí ceník. Ceny položek budou načteny z tohoto ceníku., @@ -9692,7 +9681,6 @@ Available Balance,Dostupná částka, Reserved Balance,Rezervovaný zůstatek, Uncleared Balance,Nejasný zůstatek, Payment related to {0} is not completed,Platba související s {0} není dokončena, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Řádek č. {}: Sériové číslo {}. {} již byl převeden do jiné POS faktury. Vyberte prosím platné sériové číslo., Row #{}: Item Code: {} is not available under warehouse {}.,Řádek č. {}: Kód položky: {} není k dispozici ve skladu {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Řádek {{}: Množství skladu nestačí pro kód položky: {} ve skladu {}. Dostupné množství {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Řádek # {}: Vyberte sériové číslo a proveďte dávku proti položce: {} nebo ji odstraňte a transakce se dokončí., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Množství není k dispozici pro Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,"Chcete-li pokračovat, povolte možnost Povolit negativní akcie v nastavení akcií nebo vytvořte položku Stock.", No Inpatient Record found against patient {0},Proti pacientovi {0} nebyl nalezen záznam o hospitalizaci, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Příkaz k hospitalizaci {0} proti setkání pacientů {1} již existuje., +Allow In Returns,Povolit vrácení, +Hide Unavailable Items,Skrýt nedostupné položky, +Apply Discount on Discounted Rate,Uplatnit slevu na zlevněnou sazbu, +Therapy Plan Template,Šablona plánu terapie, +Fetching Template Details,Načítání podrobností šablony, +Linked Item Details,Podrobnosti propojené položky, +Therapy Types,Typy terapie, +Therapy Plan Template Detail,Detail šablony plánu léčby, +Non Conformance,Neshoda, +Process Owner,Vlastník procesu, +Corrective Action,Nápravné opatření, +Preventive Action,Preventivní akce, +Problem,Problém, +Responsible,Odpovědný, +Completion By,Dokončení do, +Process Owner Full Name,Celé jméno vlastníka procesu, +Right Index,Správný index, +Left Index,Levý rejstřík, +Sub Procedure,Dílčí postup, +Passed,Prošel, +Print Receipt,Tisk účtenky, +Edit Receipt,Upravit potvrzení, +Focus on search input,Zaměřte se na vstup vyhledávání, +Focus on Item Group filter,Zaměřte se na filtr Skupiny položek, +Checkout Order / Submit Order / New Order,Pokladna Objednávka / Odeslat objednávku / Nová objednávka, +Add Order Discount,Přidejte slevu na objednávku, +Item Code: {0} is not available under warehouse {1}.,Kód položky: {0} není k dispozici ve skladu {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Sériová čísla nejsou u položky {0} ve skladu {1} k dispozici. Zkuste změnit sklad., +Fetched only {0} available serial numbers.,Načteno pouze {0} dostupných sériových čísel., +Switch Between Payment Modes,Přepínání mezi režimy platby, +Enter {0} amount.,Zadejte částku {0}., +You don't have enough points to redeem.,Nemáte dostatek bodů k uplatnění., +You can redeem upto {0}.,Můžete uplatnit až {0}., +Enter amount to be redeemed.,Zadejte částku k uplatnění., +You cannot redeem more than {0}.,Nelze uplatnit více než {0}., +Open Form View,Otevřete formulářové zobrazení, +POS invoice {0} created succesfully,POS faktura {0} vytvořena úspěšně, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Skladové množství nestačí pro kód položky: {0} ve skladu {1}. Dostupné množství {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Sériové číslo: {0} již bylo převedeno do jiné faktury POS., +Balance Serial No,Sériové číslo zůstatku, +Warehouse: {0} does not belong to {1},Sklad: {0} nepatří do {1}, +Please select batches for batched item {0},Vyberte dávky pro dávkovou položku {0}, +Please select quantity on row {0},Vyberte prosím množství na řádku {0}, +Please enter serial numbers for serialized item {0},Zadejte sériová čísla pro serializovanou položku {0}, +Batch {0} already selected.,Dávka {0} je již vybrána., +Please select a warehouse to get available quantities,"Chcete-li získat dostupná množství, vyberte sklad", +"For transfer from source, selected quantity cannot be greater than available quantity",U přenosu ze zdroje nemůže být vybrané množství větší než dostupné množství, +Cannot find Item with this Barcode,Nelze najít položku s tímto čárovým kódem, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} je povinné. Možná není vytvořen záznam směnárny pro {1} až {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,"{} odeslal aktiva s ním spojená. Chcete-li vytvořit návratnost nákupu, musíte aktiva zrušit.", +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"Tento dokument nelze zrušit, protože je propojen s odeslaným dílem {0}. Chcete-li pokračovat, zrušte jej.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Řádek {}: Sériové číslo {} již byl převeden do jiné faktury POS. Vyberte prosím platné sériové číslo., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Řádek # {}: Sériová čísla {} již byla převedena do jiné faktury POS. Vyberte prosím platné sériové číslo., +Item Unavailable,Zboží není k dispozici, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"Řádek č. {}: Sériové číslo {} nelze vrátit, protože nebylo provedeno v původní faktuře {}", +Please set default Cash or Bank account in Mode of Payment {},V platebním režimu nastavte výchozí hotovost nebo bankovní účet {}, +Please set default Cash or Bank account in Mode of Payments {},V platebním režimu prosím nastavte výchozí hotovostní nebo bankovní účet {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,"Ujistěte se, že účet {} je účet v rozvaze. Mateřský účet můžete změnit na účet v rozvaze nebo vybrat jiný účet.", +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,"Ujistěte se, že účet {} je splatným účtem. Změňte typ účtu na Splatný nebo vyberte jiný účet.", +Row {}: Expense Head changed to {} ,Řádek {}: Hlava výdajů změněna na {}, +because account {} is not linked to warehouse {} ,protože účet {} není propojen se skladem {}, +or it is not the default inventory account,nebo to není výchozí účet inventáře, +Expense Head Changed,Výdajová hlava změněna, +because expense is booked against this account in Purchase Receipt {},protože výdaj je zaúčtován proti tomuto účtu v dokladu o nákupu {}, +as no Purchase Receipt is created against Item {}. ,protože u položky {} není vytvořen žádný doklad o nákupu., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,"To se provádí za účelem účtování v případech, kdy je po nákupní faktuře vytvořen nákupní doklad", +Purchase Order Required for item {},U položky {} je požadována nákupní objednávka, +To submit the invoice without purchase order please set {} ,"Chcete-li odeslat fakturu bez objednávky, nastavte {}", +as {} in {},jako v {}, +Mandatory Purchase Order,Povinná nákupní objednávka, +Purchase Receipt Required for item {},U položky {} je vyžadováno potvrzení o nákupu, +To submit the invoice without purchase receipt please set {} ,"Chcete-li odeslat fakturu bez dokladu o nákupu, nastavte {}", +Mandatory Purchase Receipt,Povinné potvrzení o nákupu, +POS Profile {} does not belongs to company {},POS profil {} nepatří společnosti {}, +User {} is disabled. Please select valid user/cashier,Uživatel {} je deaktivován. Vyberte prosím platného uživatele / pokladníka, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Řádek {}: Původní faktura {} ze zpáteční faktury {} je {}., +Original invoice should be consolidated before or along with the return invoice.,Původní faktura by měla být sloučena před nebo spolu se zpětnou fakturou., +You can add original invoice {} manually to proceed.,"Chcete-li pokračovat, můžete přidat původní fakturu {} ručně.", +Please ensure {} account is a Balance Sheet account. ,"Ujistěte se, že účet {} je účet v rozvaze.", +You can change the parent account to a Balance Sheet account or select a different account.,Mateřský účet můžete změnit na účet v rozvaze nebo vybrat jiný účet., +Please ensure {} account is a Receivable account. ,"Ujistěte se, že účet {} je pohledávkovým účtem.", +Change the account type to Receivable or select a different account.,Změňte typ účtu na Přijatelné nebo vyberte jiný účet., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},"Službu {} nelze zrušit, protože byly uplatněny získané věrnostní body. Nejprve zrušte {} Ne {}", +already exists,již existuje, +POS Closing Entry {} against {} between selected period,Uzavírací vstup POS {} proti {} mezi vybraným obdobím, +POS Invoice is {},POS faktura je {}, +POS Profile doesn't matches {},POS profil neodpovídá {}, +POS Invoice is not {},POS faktura není {}, +POS Invoice isn't created by user {},Faktura POS není vytvořena uživatelem {}, +Row #{}: {},Řádek #{}: {}, +Invalid POS Invoices,Neplatné faktury POS, +Please add the account to root level Company - {},Přidejte účet do společnosti na kořenové úrovni - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",Při vytváření účtu pro podřízenou společnost {0} nebyl nadřazený účet {1} nalezen. Vytvořte prosím nadřazený účet v odpovídajícím certifikátu pravosti, +Account Not Found,Účet nenalezen, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",Při vytváření účtu pro podřízenou společnost {0} byl nadřazený účet {1} nalezen jako účet hlavní knihy., +Please convert the parent account in corresponding child company to a group account.,Převeďte prosím nadřazený účet v odpovídající podřízené společnosti na skupinový účet., +Invalid Parent Account,Neplatný nadřazený účet, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Přejmenování je povoleno pouze prostřednictvím mateřské společnosti {0}, aby nedošlo k nesouladu.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Pokud {0} {1} množství položky {2}, bude na položku použito schéma {3}.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Pokud {0} {1} máte hodnotu položky {2}, použije se na položku schéma {3}.", +"As the field {0} is enabled, the field {1} is mandatory.","Protože je pole {0} povoleno, je pole {1} povinné.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Protože je pole {0} povoleno, měla by být hodnota pole {1} větší než 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Nelze doručit sériové číslo {0} položky {1}, protože je vyhrazeno k vyplnění prodejní objednávky {2}", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Zakázka odběratele {0} má rezervaci pro položku {1}, můžete doručit pouze rezervovanou {1} proti {0}.", +{0} Serial No {1} cannot be delivered,{0} Sériové číslo {1} nelze doručit, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Řádek {0}: Subdodavatelská položka je u suroviny povinná {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Jelikož je k dispozici dostatek surovin, není požadavek na materiál pro sklad {0} vyžadován.", +" If you still want to proceed, please enable {0}.","Pokud přesto chcete pokračovat, povolte {0}.", +The item referenced by {0} - {1} is already invoiced,"Položka, na kterou odkazuje {0} - {1}, je již fakturována", +Therapy Session overlaps with {0},Terapie se překrývá s {0}, +Therapy Sessions Overlapping,Terapeutické relace se překrývají, +Therapy Plans,Terapeutické plány, +"Item Code, warehouse, quantity are required on row {0}","Na řádku {0} je vyžadován kód položky, sklad, množství", +Get Items from Material Requests against this Supplier,Získejte položky z materiálových požadavků vůči tomuto dodavateli, +Enable European Access,Povolit evropský přístup, +Creating Purchase Order ...,Vytváření nákupní objednávky ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",Vyberte dodavatele z výchozích dodavatelů níže uvedených položek. Při výběru bude provedena objednávka pouze na položky patřící vybranému dodavateli., +Row #{}: You must select {} serial numbers for item {}.,Řádek # {}: Musíte vybrat {} sériová čísla pro položku {}., diff --git a/erpnext/translations/da.csv b/erpnext/translations/da.csv index 635ca00d64..c0d0146694 100644 --- a/erpnext/translations/da.csv +++ b/erpnext/translations/da.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Ikke ka Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',Kan ikke fratrække når kategori er for "Værdiansættelse" eller "Vaulation og Total ', "Cannot delete Serial No {0}, as it is used in stock transactions","Kan ikke slette serienummer {0}, eftersom det bruges på lagertransaktioner", Cannot enroll more than {0} students for this student group.,Kan ikke tilmelde mere end {0} studerende til denne elevgruppe., -Cannot find Item with this barcode,Kan ikke finde varen med denne stregkode, Cannot find active Leave Period,Kan ikke finde aktiv afgangsperiode, Cannot produce more Item {0} than Sales Order quantity {1},Kan ikke producere mere Item {0} end Sales Order mængde {1}, Cannot promote Employee with status Left,Kan ikke fremme medarbejder med status til venstre, @@ -690,7 +689,6 @@ Create Variants,Opret varianter, "Create and manage daily, weekly and monthly email digests.","Opret og administrér de daglige, ugentlige og månedlige e-mail-nyhedsbreve.", Create customer quotes,Opret tilbud til kunder, Create rules to restrict transactions based on values.,Oprette regler til at begrænse transaktioner baseret på værdier., -Created By,Oprettet af, Created {0} scorecards for {1} between: ,Oprettet {0} scorecards for {1} mellem:, Creating Company and Importing Chart of Accounts,Oprettelse af firma og import af kontoplan, Creating Fees,Oprettelse af gebyrer, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Til lager skal angives før godkendelse, For row {0}: Enter Planned Qty,For række {0}: Indtast Planlagt antal, "For {0}, only credit accounts can be linked against another debit entry",For {0} kan kun kredit konti knyttes mod en anden debet post, "For {0}, only debit accounts can be linked against another credit entry",For {0} kan kun betalingskort konti knyttes mod en anden kredit post, -Form View,Formularvisning, Forum Activity,Forumaktivitet, Free item code is not selected,Gratis varekode er ikke valgt, Freight and Forwarding Charges,Fragt og Forwarding Afgifter, @@ -2638,7 +2635,6 @@ Send SMS,Send SMS, Send mass SMS to your contacts,Send masse-SMS til dine kontakter, Sensitivity,Følsomhed, Sent,Sent, -Serial #,Serienummer, Serial No and Batch,Serienummer og parti, Serial No is mandatory for Item {0},Serienummer er obligatorisk for vare {0}, Serial No {0} does not belong to Batch {1},Serienummer {0} tilhører ikke Batch {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Velkommen til ERPNext, What do you need help with?,Hvad har du brug for hjælp til?, What does it do?,Hvad gør det?, Where manufacturing operations are carried.,Hvor fremstillingsprocesser gennemføres., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Mens du opretter konto for børneselskab {0}, blev moderkonto {1} ikke fundet. Opret venligst den overordnede konto i den tilsvarende COA", White,hvid, Wire Transfer,Bankoverførsel, WooCommerce Products,WooCommerce-produkter, @@ -3493,6 +3488,7 @@ Likes,Likes, Merge with existing,Sammenlæg med eksisterende, Office,Kontor, Orientation,Orientering, +Parent,Parent, Passive,Inaktiv, Payment Failed,Betaling mislykkedes, Percent,procent, @@ -3543,6 +3539,7 @@ Shift,Flytte, Show {0},Vis {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Specialtegn undtagen "-", "#", ".", "/", "{" Og "}" er ikke tilladt i navngivningsserier", Target Details,Måldetaljer, +{0} already has a Parent Procedure {1}.,{0} har allerede en overordnet procedure {1}., API,API, Annual,Årligt, Approved,godkendt, @@ -4241,7 +4238,6 @@ Download as JSON,Download som JSON, End date can not be less than start date,Slutdato kan ikke være mindre end startdato, For Default Supplier (Optional),For standardleverandør (valgfrit), From date cannot be greater than To date,Fra dato ikke kan være større end til dato, -Get items from,Hent varer fra, Group by,Sortér efter, In stock,På lager, Item name,Varenavn, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Skabelonparameter for kvalitet, Quality Goal,Kvalitetsmål, Monitoring Frequency,Overvågningsfrekvens, Weekday,Ugedag, -January-April-July-October,Januar til april juli til oktober, -Revision and Revised On,Revision og revideret på, -Revision,Revision, -Revised On,Revideret den, Objectives,mål, Quality Goal Objective,Kvalitetsmål Mål, Objective,Objektiv, @@ -7574,7 +7566,6 @@ Parent Procedure,Forældreprocedure, Processes,Processer, Quality Procedure Process,Kvalitetsprocedure, Process Description,Procesbeskrivelse, -Child Procedure,Børneprocedure, Link existing Quality Procedure.,Kobl den eksisterende kvalitetsprocedure., Additional Information,Yderligere Information, Quality Review Objective,Mål for kvalitetsgennemgang, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Indkøbsordre Trends, Purchase Receipt Trends,Købskvittering Tendenser, Purchase Register,Indkøb Register, Quotation Trends,Tilbud trends, -Quoted Item Comparison,Sammenligning Citeret Vare, Received Items To Be Billed,Modtagne varer skal faktureres, Qty to Order,Antal til ordre, Requested Items To Be Transferred,"Anmodet Varer, der skal overføres", @@ -9091,7 +9081,6 @@ Unmarked days,Umarkerede dage, Absent Days,Fraværende dage, Conditions and Formula variable and example,Betingelser og formelvariabel og eksempel, Feedback By,Feedback af, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Produktionssektion, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Som standard er kundenavnet indstillet i henhold til det indtastede fulde navn. Hvis du ønsker, at kunder skal navngives af en", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,"Konfigurer standardprislisten, når du opretter en ny salgstransaktion. Varepriser hentes fra denne prisliste.", @@ -9692,7 +9681,6 @@ Available Balance,Disponibel saldo, Reserved Balance,Reserveret saldo, Uncleared Balance,Uklart balance, Payment related to {0} is not completed,Betaling relateret til {0} er ikke afsluttet, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Række nr. {}: Serienr. {}. {} er allerede blevet overført til en anden POS-faktura. Vælg gyldigt serienummer., Row #{}: Item Code: {} is not available under warehouse {}.,Række nr. {}: Varekode: {} er ikke tilgængelig under lager {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Række nr. {}: Mængde på lager ikke til varekode: {} under lager {}. Tilgængelig mængde {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Række nr. {}: Vælg et serienummer og et parti mod varen: {} eller fjern det for at gennemføre transaktionen., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},"Mængde, der ikke er tilgængel Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,"Aktivér Tillad negativ beholdning i lagerindstillinger, eller opret lagerindgang for at fortsætte.", No Inpatient Record found against patient {0},Der blev ikke fundet nogen indlæggelsesjournal over patienten {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Der findes allerede en ordre om indlæggelse af medicin {0} mod patientmøde {1}., +Allow In Returns,Tillad returnerer, +Hide Unavailable Items,Skjul ikke-tilgængelige poster, +Apply Discount on Discounted Rate,Anvend rabat på nedsat sats, +Therapy Plan Template,Terapiplan skabelon, +Fetching Template Details,Henter skabelondetaljer, +Linked Item Details,Sammenkædede varedetaljer, +Therapy Types,Terapi Typer, +Therapy Plan Template Detail,Terapi plan skabelon detaljer, +Non Conformance,Manglende overensstemmelse, +Process Owner,Proces ejer, +Corrective Action,Korrigerende handling, +Preventive Action,Forebyggende handling, +Problem,Problem, +Responsible,Ansvarlig, +Completion By,Afslutning af, +Process Owner Full Name,Processejerens fulde navn, +Right Index,Højre indeks, +Left Index,Venstre indeks, +Sub Procedure,Underprocedure, +Passed,Bestået, +Print Receipt,Udskriv kvittering, +Edit Receipt,Rediger kvittering, +Focus on search input,Fokuser på søgeinput, +Focus on Item Group filter,Fokuser på varegruppefilter, +Checkout Order / Submit Order / New Order,Kasseordre / Afgiv ordre / Ny ordre, +Add Order Discount,Tilføj ordrerabat, +Item Code: {0} is not available under warehouse {1}.,Varekode: {0} er ikke tilgængelig under lageret {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Serienumre er ikke tilgængelige for vare {0} under lager {1}. Prøv at skifte lager., +Fetched only {0} available serial numbers.,Hentede kun {0} tilgængelige serienumre., +Switch Between Payment Modes,Skift mellem betalingsformer, +Enter {0} amount.,Indtast {0} beløb., +You don't have enough points to redeem.,Du har ikke nok point til at indløse., +You can redeem upto {0}.,Du kan indløse op til {0}., +Enter amount to be redeemed.,"Indtast det beløb, der skal indløses.", +You cannot redeem more than {0}.,Du kan ikke indløse mere end {0}., +Open Form View,Åbn formularvisning, +POS invoice {0} created succesfully,POS-faktura {0} oprettet med succes, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Lagermængde ikke nok til varekode: {0} under lager {1}. Tilgængelig mængde {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Serienr.: {0} er allerede blevet overført til en anden POS-faktura., +Balance Serial No,Balance Serienr, +Warehouse: {0} does not belong to {1},Lager: {0} tilhører ikke {1}, +Please select batches for batched item {0},Vælg batcher til batchvaren {0}, +Please select quantity on row {0},Vælg antal på række {0}, +Please enter serial numbers for serialized item {0},Indtast serienumre for serienummeret {0}, +Batch {0} already selected.,Batch {0} er allerede valgt., +Please select a warehouse to get available quantities,Vælg et lager for at få tilgængelige mængder, +"For transfer from source, selected quantity cannot be greater than available quantity",For overførsel fra kilde kan den valgte mængde ikke være større end den tilgængelige mængde, +Cannot find Item with this Barcode,Kan ikke finde element med denne stregkode, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} er obligatorisk. Måske oprettes der ikke valutaudveksling for {1} til {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} har indsendt aktiver tilknyttet det. Du skal annullere aktiverne for at oprette køberetur., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"Dette dokument kan ikke annulleres, da det er knyttet til det indsendte aktiv {0}. Annuller det for at fortsætte.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Række nr. {}: Serienr. {} Er allerede overført til en anden POS-faktura. Vælg gyldigt serienummer., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Række nr. {}: Serienumre. {} Er allerede blevet overført til en anden POS-faktura. Vælg gyldigt serienummer., +Item Unavailable,Varen er ikke tilgængelig, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"Række nr. {}: Serienr. {} Kan ikke returneres, da den ikke blev behandlet i original faktura {}", +Please set default Cash or Bank account in Mode of Payment {},Indstil standard kontanter eller bankkonto i betalingsmetode {}, +Please set default Cash or Bank account in Mode of Payments {},Angiv standard kontanter eller bankkonto i betalingsmetode {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,"Sørg for, at {} kontoen er en balancekonto. Du kan ændre moderkontoen til en balancekonto eller vælge en anden konto.", +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,"Sørg for, at {} kontoen er en konto, der skal betales. Skift kontotype til Betales, eller vælg en anden konto.", +Row {}: Expense Head changed to {} ,Række {}: Omkostningshoved ændret til {}, +because account {} is not linked to warehouse {} ,fordi konto {} ikke er knyttet til lager {}, +or it is not the default inventory account,eller det er ikke standardlagerkontoen, +Expense Head Changed,Omkostningshoved ændret, +because expense is booked against this account in Purchase Receipt {},fordi udgift bogføres på denne konto i købskvittering {}, +as no Purchase Receipt is created against Item {}. ,da der ikke oprettes nogen købskvittering mod varen {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,"Dette gøres for at håndtere bogføring af tilfælde, hvor købsmodtagelse oprettes efter købsfaktura", +Purchase Order Required for item {},Indkøbsordre påkrævet for vare {}, +To submit the invoice without purchase order please set {} ,For at indsende fakturaen uden indkøbsordre skal du angive {}, +as {} in {},som i {}, +Mandatory Purchase Order,Obligatorisk indkøbsordre, +Purchase Receipt Required for item {},Købskvittering påkrævet for vare {}, +To submit the invoice without purchase receipt please set {} ,For at indsende fakturaen uden købskvittering skal du angive {}, +Mandatory Purchase Receipt,Obligatorisk købskvittering, +POS Profile {} does not belongs to company {},POS-profil {} tilhører ikke firma {}, +User {} is disabled. Please select valid user/cashier,Bruger {} er deaktiveret. Vælg gyldig bruger / kasserer, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Række nr. {}: Originalfaktura {} af returfaktura {} er {}., +Original invoice should be consolidated before or along with the return invoice.,Originalfaktura skal konsolideres før eller sammen med returfakturaen., +You can add original invoice {} manually to proceed.,Du kan tilføje originalfaktura {} manuelt for at fortsætte., +Please ensure {} account is a Balance Sheet account. ,"Sørg for, at {} kontoen er en balancekonto.", +You can change the parent account to a Balance Sheet account or select a different account.,Du kan ændre moderkontoen til en balancekonto eller vælge en anden konto., +Please ensure {} account is a Receivable account. ,"Sørg for, at {} kontoen er en konto, der kan modtages.", +Change the account type to Receivable or select a different account.,"Skift kontotype til Modtagelig, eller vælg en anden konto.", +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},"{} kan ikke annulleres, da de optjente loyalitetspoint er blevet indløst. Annuller først {} Nej {}", +already exists,eksisterer allerede, +POS Closing Entry {} against {} between selected period,POS-afslutningspost {} mod {} mellem den valgte periode, +POS Invoice is {},POS-faktura er {}, +POS Profile doesn't matches {},POS-profil matcher ikke {}, +POS Invoice is not {},POS-faktura er ikke {}, +POS Invoice isn't created by user {},POS-faktura oprettes ikke af brugeren {}, +Row #{}: {},Række nr. {}: {}, +Invalid POS Invoices,Ugyldige POS-fakturaer, +Please add the account to root level Company - {},Føj kontoen til rodniveau Virksomhed - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",Under oprettelsen af en konto til Child Company {0} blev forældrekontoen {1} ikke fundet. Opret forældrekontoen i den tilsvarende COA, +Account Not Found,Konto ikke fundet, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",Under oprettelsen af en konto til Child Company {0} blev forældrekontoen {1} fundet som en hovedkontokonto., +Please convert the parent account in corresponding child company to a group account.,Konverter moderkontoen i det tilsvarende underordnede selskab til en gruppekonto., +Invalid Parent Account,Ugyldig moderkonto, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",Omdøbning er kun tilladt via moderselskabet {0} for at undgå uoverensstemmelse., +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Hvis du {0} {1} mængder af varen {2}, anvendes ordningen {3} på varen.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Hvis du {0} {1} har værdi {2}, anvendes ordningen {3} på varen.", +"As the field {0} is enabled, the field {1} is mandatory.","Da feltet {0} er aktiveret, er feltet {1} obligatorisk.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Da feltet {0} er aktiveret, skal værdien af feltet {1} være mere end 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Kan ikke levere serienummer {0} af varen {1}, da den er forbeholdt fuldt udfyldt salgsordre {2}", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Salgsordre {0} har reservation for varen {1}, du kan kun levere reserveret {1} mod {0}.", +{0} Serial No {1} cannot be delivered,{0} Serienummer {1} kan ikke leveres, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Række {0}: Vare i underentreprise er obligatorisk for råmaterialet {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Da der er tilstrækkelige råmaterialer, kræves der ikke materialeanmodning til lager {0}.", +" If you still want to proceed, please enable {0}.","Hvis du stadig vil fortsætte, skal du aktivere {0}.", +The item referenced by {0} - {1} is already invoiced,"Den vare, der henvises til af {0} - {1}, faktureres allerede", +Therapy Session overlaps with {0},Terapisession overlapper med {0}, +Therapy Sessions Overlapping,Terapisessioner overlapper hinanden, +Therapy Plans,Terapiplaner, +"Item Code, warehouse, quantity are required on row {0}","Varekode, lager, antal kræves i række {0}", +Get Items from Material Requests against this Supplier,Få varer fra materialeanmodninger mod denne leverandør, +Enable European Access,Aktiver europæisk adgang, +Creating Purchase Order ...,Opretter indkøbsordre ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Vælg en leverandør fra standardleverandørerne af nedenstående varer. Ved valg foretages en indkøbsordre kun mod varer, der tilhører den valgte leverandør.", +Row #{}: You must select {} serial numbers for item {}.,Række nr. {}: Du skal vælge {} serienumre for varen {}., diff --git a/erpnext/translations/de.csv b/erpnext/translations/de.csv index 5263b461f1..ca03a787cd 100644 --- a/erpnext/translations/de.csv +++ b/erpnext/translations/de.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Abzug n Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',"Kann nicht abschreiben, wenn die Kategorie ""Bewertung"" oder ""Bewertung und Total 'ist", "Cannot delete Serial No {0}, as it is used in stock transactions","Die Seriennummer {0} kann nicht gelöscht werden, da sie in Lagertransaktionen verwendet wird", Cannot enroll more than {0} students for this student group.,Kann nicht mehr als {0} Studenten für diese Studentengruppe einschreiben., -Cannot find Item with this barcode,Artikel mit diesem Barcode kann nicht gefunden werden, Cannot find active Leave Period,Aktive Abwesenheitszeit kann nicht gefunden werden, Cannot produce more Item {0} than Sales Order quantity {1},"Es können nicht mehr Artikel {0} produziert werden, als die über Kundenaufträge bestellte Stückzahl {1}", Cannot promote Employee with status Left,Mitarbeiter mit Status "Links" kann nicht gefördert werden, @@ -690,7 +689,6 @@ Create Variants,Varianten erstellen, "Create and manage daily, weekly and monthly email digests.","Tägliche, wöchentliche und monatliche E-Mail-Berichte erstellen und verwalten", Create customer quotes,Kunden Angebote erstellen, Create rules to restrict transactions based on values.,Regeln erstellen um Transaktionen auf Basis von Werten zu beschränken, -Created By,Erstellt von, Created {0} scorecards for {1} between: ,Erstellte {0} Scorecards für {1} zwischen:, Creating Company and Importing Chart of Accounts,Firma anlegen und Kontenplan importieren, Creating Fees,Gebühren anlegen, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,"""Für Lager"" wird vor dem Übertragen For row {0}: Enter Planned Qty,Für Zeile {0}: Geben Sie die geplante Menge ein, "For {0}, only credit accounts can be linked against another debit entry",Für {0} können nur Habenkonten mit einer weiteren Sollbuchung verknüpft werden, "For {0}, only debit accounts can be linked against another credit entry",Für {0} können nur Sollkonten mit einer weiteren Habenbuchung verknüpft werden, -Form View,Formularansicht, Forum Activity,Forum Aktivität, Free item code is not selected,Freier Artikelcode ist nicht ausgewählt, Freight and Forwarding Charges,Fracht- und Versandkosten, @@ -2638,7 +2635,6 @@ Send SMS,SMS verschicken, Send mass SMS to your contacts,Massen-SMS an Kontakte versenden, Sensitivity,Empfindlichkeit, Sent,Gesendet, -Serial #,Serien #, Serial No and Batch,Seriennummer und Chargen, Serial No is mandatory for Item {0},Seriennummer ist für Artikel {0} zwingend erforderlich, Serial No {0} does not belong to Batch {1},Seriennr. {0} gehört nicht zu Batch {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Willkommen bei ERPNext, What do you need help with?,Wofür benötigen Sie Hilfe?, What does it do?,Unternehmenszweck, Where manufacturing operations are carried.,"Ort, an dem Arbeitsgänge der Fertigung ablaufen.", -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",Beim Erstellen des Kontos für die untergeordnete Firma {0} wurde das übergeordnete Konto {1} nicht gefunden. Bitte erstellen Sie das übergeordnete Konto in der entsprechenden COA, White,Weiß, Wire Transfer,Überweisung, WooCommerce Products,WooCommerce-Produkte, @@ -3493,6 +3488,7 @@ Likes,Likes, Merge with existing,Mit Existierenden zusammenführen, Office,Büro, Orientation,Orientierung, +Parent,Übergeordnetes Element, Passive,Passiv, Payment Failed,Bezahlung fehlgeschlagen, Percent,Prozent, @@ -3543,6 +3539,7 @@ Shift,Verschiebung, Show {0},{0} anzeigen, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Sonderzeichen außer "-", "#", ".", "/", "{" Und "}" sind bei der Benennung von Serien nicht zulässig", Target Details,Zieldetails, +{0} already has a Parent Procedure {1}.,{0} hat bereits eine übergeordnete Prozedur {1}., API,API, Annual,Jährlich, Approved,Genehmigt, @@ -4241,7 +4238,6 @@ Download as JSON,Als JSON herunterladen, End date can not be less than start date,Das Enddatum darf nicht kleiner als das Startdatum sein, For Default Supplier (Optional),Für Standardlieferanten (optional), From date cannot be greater than To date,Das Ab-Datum kann nicht größer als das Bis-Datum sein, -Get items from,Holen Sie Elemente aus, Group by,Gruppieren nach, In stock,Auf Lager, Item name,Artikelname, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Qualitäts-Feedback-Vorlagenparameter, Quality Goal,Qualitätsziel, Monitoring Frequency,Überwachungsfrequenz, Weekday,Wochentag, -January-April-July-October,Januar-April-Juli-Oktober, -Revision and Revised On,Revision und Überarbeitet am, -Revision,Revision, -Revised On,Überarbeitet am, Objectives,Ziele, Quality Goal Objective,Qualitätsziel Ziel, Objective,Zielsetzung, @@ -7574,7 +7566,6 @@ Parent Procedure,Übergeordnetes Verfahren, Processes,Prozesse, Quality Procedure Process,Qualitätsprozess, Process Description,Prozessbeschreibung, -Child Procedure,Untergeordnete Prozedur, Link existing Quality Procedure.,Bestehendes Qualitätsverfahren verknüpfen., Additional Information,zusätzliche Information, Quality Review Objective,Qualitätsüberprüfungsziel, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Entwicklung Lieferantenaufträge, Purchase Receipt Trends,Trendanalyse Kaufbelege, Purchase Register,Übersicht über Einkäufe, Quotation Trends,Trendanalyse Angebote, -Quoted Item Comparison,Vergleich angebotener Artikel, Received Items To Be Billed,"Von Lieferanten gelieferte Artikel, die noch abgerechnet werden müssen", Qty to Order,Zu bestellende Menge, Requested Items To Be Transferred,"Angeforderte Artikel, die übertragen werden sollen", @@ -9091,7 +9081,6 @@ Unmarked days,Nicht markierte Tage, Absent Days,Abwesende Tage, Conditions and Formula variable and example,Bedingungen und Formelvariable und Beispiel, Feedback By,Feedback von, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Fertigungsabteilung, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Standardmäßig wird der Kundenname gemäß dem eingegebenen vollständigen Namen festgelegt. Wenn Sie möchten, dass Kunden von a benannt werden", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Konfigurieren Sie die Standardpreisliste beim Erstellen einer neuen Verkaufstransaktion. Artikelpreise werden aus dieser Preisliste abgerufen., @@ -9692,7 +9681,6 @@ Available Balance,Verfügbares Guthaben, Reserved Balance,Reservierter Saldo, Uncleared Balance,Ungeklärtes Gleichgewicht, Payment related to {0} is not completed,Die Zahlung für {0} ist nicht abgeschlossen, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Zeile # {}: Seriennummer {}. {} wurde bereits in eine andere POS-Rechnung umgesetzt. Bitte wählen Sie eine gültige Seriennummer., Row #{}: Item Code: {} is not available under warehouse {}.,Zeile # {}: Artikelcode: {} ist unter Lager {} nicht verfügbar., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Zeile # {}: Lagermenge reicht nicht für Artikelcode: {} unter Lager {}. Verfügbare Anzahl {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,"Zeile # {}: Bitte wählen Sie eine Seriennummer und stapeln Sie sie gegen Artikel: {} oder entfernen Sie sie, um die Transaktion abzuschließen.", @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Menge für {0} im Lager {1} nich Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,"Bitte aktivieren Sie Negative Bestände in Bestandseinstellungen zulassen oder erstellen Sie eine Bestandserfassung, um fortzufahren.", No Inpatient Record found against patient {0},Keine stationäre Akte gegen Patient {0} gefunden, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Es besteht bereits eine stationäre Medikamentenanweisung {0} gegen die Patientenbegegnung {1}., +Allow In Returns,Rückgabe zulassen, +Hide Unavailable Items,Nicht verfügbare Elemente ausblenden, +Apply Discount on Discounted Rate,Wenden Sie einen Rabatt auf den ermäßigten Preis an, +Therapy Plan Template,Therapieplanvorlage, +Fetching Template Details,Vorlagendetails abrufen, +Linked Item Details,Verknüpfte Artikeldetails, +Therapy Types,Therapietypen, +Therapy Plan Template Detail,Detail der Therapieplanvorlage, +Non Conformance,Nichtkonformität, +Process Owner,Prozessverantwortlicher, +Corrective Action,Korrekturmaßnahme, +Preventive Action,Präventivmaßnahmen, +Problem,Problem, +Responsible,Verantwortlich, +Completion By,Fertigstellung durch, +Process Owner Full Name,Vollständiger Name des Prozessinhabers, +Right Index,Richtiger Index, +Left Index,Linker Index, +Sub Procedure,Unterprozedur, +Passed,Bestanden, +Print Receipt,Druckeingang, +Edit Receipt,Beleg bearbeiten, +Focus on search input,Konzentrieren Sie sich auf die Sucheingabe, +Focus on Item Group filter,Fokus auf Artikelgruppenfilter, +Checkout Order / Submit Order / New Order,Kaufabwicklung / Bestellung abschicken / Neue Bestellung, +Add Order Discount,Bestellrabatt hinzufügen, +Item Code: {0} is not available under warehouse {1}.,Artikelcode: {0} ist unter Lager {1} nicht verfügbar., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Seriennummern für Artikel {0} unter Lager {1} nicht verfügbar. Bitte versuchen Sie das Lager zu wechseln., +Fetched only {0} available serial numbers.,Es wurden nur {0} verfügbare Seriennummern abgerufen., +Switch Between Payment Modes,Zwischen Zahlungsmodi wechseln, +Enter {0} amount.,Geben Sie den Betrag {0} ein., +You don't have enough points to redeem.,Sie haben nicht genug Punkte zum Einlösen., +You can redeem upto {0}.,Sie können bis zu {0} einlösen., +Enter amount to be redeemed.,Geben Sie den einzulösenden Betrag ein., +You cannot redeem more than {0}.,Sie können nicht mehr als {0} einlösen., +Open Form View,Öffnen Sie die Formularansicht, +POS invoice {0} created succesfully,POS-Rechnung {0} erfolgreich erstellt, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Lagermenge nicht ausreichend für Artikelcode: {0} unter Lager {1}. Verfügbare Menge {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Seriennummer: {0} wurde bereits in eine andere POS-Rechnung übertragen., +Balance Serial No,Balance Seriennr, +Warehouse: {0} does not belong to {1},Lager: {0} gehört nicht zu {1}, +Please select batches for batched item {0},Bitte wählen Sie Chargen für Chargenartikel {0} aus, +Please select quantity on row {0},Bitte wählen Sie die Menge in Zeile {0}, +Please enter serial numbers for serialized item {0},Bitte geben Sie die Seriennummern für den serialisierten Artikel {0} ein., +Batch {0} already selected.,Stapel {0} bereits ausgewählt., +Please select a warehouse to get available quantities,"Bitte wählen Sie ein Lager aus, um verfügbare Mengen zu erhalten", +"For transfer from source, selected quantity cannot be greater than available quantity",Bei der Übertragung von der Quelle darf die ausgewählte Menge nicht größer als die verfügbare Menge sein, +Cannot find Item with this Barcode,Artikel mit diesem Barcode kann nicht gefunden werden, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} ist obligatorisch. Möglicherweise wird kein Währungsumtauschdatensatz für {1} bis {2} erstellt., +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,"{} hat damit verknüpfte Assets eingereicht. Sie müssen die Assets stornieren, um eine Kaufrendite zu erstellen.", +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"Dieses Dokument kann nicht storniert werden, da es mit dem übermittelten Asset {0} verknüpft ist. Bitte stornieren Sie es, um fortzufahren.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Zeile # {}: Seriennummer {} wurde bereits in eine andere POS-Rechnung übertragen. Bitte wählen Sie eine gültige Seriennummer., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Zeile # {}: Seriennummern. {} Wurde bereits in eine andere POS-Rechnung übertragen. Bitte wählen Sie eine gültige Seriennummer., +Item Unavailable,Artikel nicht verfügbar, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"Zeile # {}: Seriennummer {} kann nicht zurückgegeben werden, da sie nicht in der Originalrechnung {} abgewickelt wurde", +Please set default Cash or Bank account in Mode of Payment {},Bitte setzen Sie das Standard-Bargeld- oder Bankkonto im Zahlungsmodus {}, +Please set default Cash or Bank account in Mode of Payments {},Bitte setzen Sie das Standard-Bargeld- oder Bankkonto im Zahlungsmodus {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,"Bitte stellen Sie sicher, dass das Konto {} ein Bilanzkonto ist. Sie können das übergeordnete Konto in ein Bilanzkonto ändern oder ein anderes Konto auswählen.", +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,"Bitte stellen Sie sicher, dass das Konto {} ein zahlbares Konto ist. Ändern Sie den Kontotyp in "Verbindlichkeiten" oder wählen Sie ein anderes Konto aus.", +Row {}: Expense Head changed to {} ,Zeile {}: Ausgabenkopf geändert in {}, +because account {} is not linked to warehouse {} ,weil das Konto {} nicht mit dem Lager {} verknüpft ist, +or it is not the default inventory account,oder es ist nicht das Standard-Inventarkonto, +Expense Head Changed,Ausgabenkopf geändert, +because expense is booked against this account in Purchase Receipt {},weil die Kosten für dieses Konto im Kaufbeleg {} gebucht werden, +as no Purchase Receipt is created against Item {}. ,da für Artikel {} kein Kaufbeleg erstellt wird., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,"Dies erfolgt zur Abrechnung von Fällen, in denen der Kaufbeleg nach der Kaufrechnung erstellt wird", +Purchase Order Required for item {},Bestellung erforderlich für Artikel {}, +To submit the invoice without purchase order please set {} ,"Um die Rechnung ohne Bestellung einzureichen, setzen Sie bitte {}", +as {} in {},wie in {}, +Mandatory Purchase Order,Obligatorische Bestellung, +Purchase Receipt Required for item {},Kaufbeleg für Artikel {} erforderlich, +To submit the invoice without purchase receipt please set {} ,"Um die Rechnung ohne Kaufbeleg einzureichen, setzen Sie bitte {}", +Mandatory Purchase Receipt,Obligatorischer Kaufbeleg, +POS Profile {} does not belongs to company {},Das POS-Profil {} gehört nicht zur Firma {}, +User {} is disabled. Please select valid user/cashier,Benutzer {} ist deaktiviert. Bitte wählen Sie einen gültigen Benutzer / Kassierer aus, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Zeile # {}: Die Originalrechnung {} der Rücksenderechnung {} ist {}., +Original invoice should be consolidated before or along with the return invoice.,Die Originalrechnung sollte vor oder zusammen mit der Rückrechnung konsolidiert werden., +You can add original invoice {} manually to proceed.,"Sie können die Originalrechnung {} manuell hinzufügen, um fortzufahren.", +Please ensure {} account is a Balance Sheet account. ,"Bitte stellen Sie sicher, dass das Konto {} ein Bilanzkonto ist.", +You can change the parent account to a Balance Sheet account or select a different account.,Sie können das übergeordnete Konto in ein Bilanzkonto ändern oder ein anderes Konto auswählen., +Please ensure {} account is a Receivable account. ,"Bitte stellen Sie sicher, dass das Konto {} ein Forderungskonto ist.", +Change the account type to Receivable or select a different account.,Ändern Sie den Kontotyp in "Forderung" oder wählen Sie ein anderes Konto aus., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},"{} kann nicht storniert werden, da die gesammelten Treuepunkte eingelöst wurden. Brechen Sie zuerst das {} Nein {} ab", +already exists,ist bereits vorhanden, +POS Closing Entry {} against {} between selected period,POS Closing Entry {} gegen {} zwischen dem ausgewählten Zeitraum, +POS Invoice is {},POS-Rechnung ist {}, +POS Profile doesn't matches {},POS-Profil stimmt nicht mit {} überein, +POS Invoice is not {},POS-Rechnung ist nicht {}, +POS Invoice isn't created by user {},Die POS-Rechnung wird nicht vom Benutzer {} erstellt, +Row #{}: {},Reihe #{}: {}, +Invalid POS Invoices,Ungültige POS-Rechnungen, +Please add the account to root level Company - {},Bitte fügen Sie das Konto der Root-Ebene Company - {} hinzu, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",Beim Erstellen eines Kontos für die untergeordnete Firma {0} wurde das übergeordnete Konto {1} nicht gefunden. Bitte erstellen Sie das übergeordnete Konto in der entsprechenden COA, +Account Not Found,Konto nicht gefunden, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",Beim Erstellen eines Kontos für die untergeordnete Firma {0} wurde das übergeordnete Konto {1} als Sachkonto gefunden., +Please convert the parent account in corresponding child company to a group account.,Bitte konvertieren Sie das Elternkonto in der entsprechenden Kinderfirma in ein Gruppenkonto., +Invalid Parent Account,Ungültiges übergeordnetes Konto, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Das Umbenennen ist nur über die Muttergesellschaft {0} zulässig, um Fehlanpassungen zu vermeiden.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Wenn Sie {0} {1} Mengen des Artikels {2} haben, wird das Schema {3} auf den Artikel angewendet.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Wenn Sie {0} {1} Gegenstand {2} wert sind, wird das Schema {3} auf den Gegenstand angewendet.", +"As the field {0} is enabled, the field {1} is mandatory.","Da das Feld {0} aktiviert ist, ist das Feld {1} obligatorisch.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Wenn das Feld {0} aktiviert ist, sollte der Wert des Feldes {1} größer als 1 sein.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Die Seriennummer {0} von Artikel {1} kann nicht geliefert werden, da sie für die Erfüllung des Kundenauftrags {2} reserviert ist.", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Kundenauftrag {0} hat eine Reservierung für den Artikel {1}, Sie können reservierte {1} nur gegen {0} liefern.", +{0} Serial No {1} cannot be delivered,{0} Seriennummer {1} kann nicht zugestellt werden, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Zeile {0}: Unterauftragsartikel sind für den Rohstoff {1} obligatorisch., +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Da genügend Rohstoffe vorhanden sind, ist für Warehouse {0} keine Materialanforderung erforderlich.", +" If you still want to proceed, please enable {0}.","Wenn Sie dennoch fortfahren möchten, aktivieren Sie bitte {0}.", +The item referenced by {0} - {1} is already invoiced,"Der Artikel, auf den {0} - {1} verweist, wird bereits in Rechnung gestellt", +Therapy Session overlaps with {0},Die Therapiesitzung überschneidet sich mit {0}, +Therapy Sessions Overlapping,Überlappende Therapiesitzungen, +Therapy Plans,Therapiepläne, +"Item Code, warehouse, quantity are required on row {0}","Artikelcode, Lager, Menge sind in Zeile {0} erforderlich.", +Get Items from Material Requests against this Supplier,Erhalten Sie Artikel aus Materialanfragen gegen diesen Lieferanten, +Enable European Access,Ermöglichen Sie den europäischen Zugang, +Creating Purchase Order ...,Bestellung anlegen ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Wählen Sie einen Lieferanten aus den Standardlieferanten der folgenden Artikel aus. Bei der Auswahl erfolgt eine Bestellung nur für Artikel, die dem ausgewählten Lieferanten gehören.", +Row #{}: You must select {} serial numbers for item {}.,Zeile # {}: Sie müssen {} Seriennummern für Artikel {} auswählen., diff --git a/erpnext/translations/el.csv b/erpnext/translations/el.csv index 5d45f0aad9..acf5db5d46 100644 --- a/erpnext/translations/el.csv +++ b/erpnext/translations/el.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',Δεν Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',δεν μπορεί να εκπέσει όταν η κατηγορία είναι για την «Αποτίμηση» ή «Vaulation και Total», "Cannot delete Serial No {0}, as it is used in stock transactions","Δεν μπορείτε να διαγράψετε Αύξων αριθμός {0}, όπως χρησιμοποιείται στις συναλλαγές μετοχών", Cannot enroll more than {0} students for this student group.,Δεν μπορούν να εγγραφούν περισσότερες από {0} μαθητές για αυτή την ομάδα των σπουδαστών., -Cannot find Item with this barcode,Δεν είναι δυνατή η εύρεση αντικειμένου με αυτόν τον γραμμωτό κώδικα, Cannot find active Leave Period,Δεν είναι δυνατή η εύρεση ενεργής περιόδου άδειας, Cannot produce more Item {0} than Sales Order quantity {1},Δεν γίνεται να παραχθούν είδη {0} περισσότερα από την ποσότητα παραγγελίας πώλησης {1}, Cannot promote Employee with status Left,Δεν είναι δυνατή η προώθηση του υπαλλήλου με κατάσταση αριστερά, @@ -690,7 +689,6 @@ Create Variants,Δημιουργήστε παραλλαγές, "Create and manage daily, weekly and monthly email digests.","Δημιουργία και διαχείριση ημερησίων, εβδομαδιαίων και μηνιαίων ενημερώσεν email.", Create customer quotes,Δημιουργία εισαγωγικά πελατών, Create rules to restrict transactions based on values.,Δημιουργία κανόνων για τον περιορισμό των συναλλαγών που βασίζονται σε αξίες., -Created By,Δημιουργήθηκε από, Created {0} scorecards for {1} between: ,Δημιουργήθηκαν {0} scorecards για {1} μεταξύ:, Creating Company and Importing Chart of Accounts,Δημιουργία Εταιρείας και Εισαγωγή Λογαριασμού, Creating Fees,Δημιουργία τελών, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Tο πεδίο για αποθήκη α For row {0}: Enter Planned Qty,Για τη σειρά {0}: Εισάγετε προγραμματισμένη ποσότητα, "For {0}, only credit accounts can be linked against another debit entry","Για {0}, μόνο πιστωτικοί λογαριασμοί μπορούν να συνδέονται με άλλες καταχωρήσεις χρέωσης", "For {0}, only debit accounts can be linked against another credit entry","Για {0}, μόνο χρεωστικοί λογαριασμοί μπορούν να συνδέονται με άλλες καταχωρήσεις πίστωσης", -Form View,Προβολή μορφής, Forum Activity,Δραστηριότητα Forum, Free item code is not selected,Ο ελεύθερος κωδικός είδους δεν έχει επιλεγεί, Freight and Forwarding Charges,Χρεώσεις μεταφοράς και προώθησης, @@ -2638,7 +2635,6 @@ Send SMS,Αποστολή SMS, Send mass SMS to your contacts,Αποστολή μαζικών SMS στις επαφές σας, Sensitivity,Ευαισθησία, Sent,Εστάλη, -Serial #,Σειριακός αριθμός #, Serial No and Batch,Αύξων αριθμός παρτίδας και, Serial No is mandatory for Item {0},Ο σειριακός αριθμός είναι απαραίτητος για το είδος {0}, Serial No {0} does not belong to Batch {1},Ο αριθμός σειράς {0} δεν ανήκει στην Παρτίδα {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Καλώς ήλθατε στο erpnext, What do you need help with?,Σε τι χρειάζεσαι βοήθεια?, What does it do?,Τι κάνει;, Where manufacturing operations are carried.,Που γίνονται οι μεταποιητικές εργασίες, -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Κατά τη δημιουργία λογαριασμού για την εταιρεία {0} παιδιού, ο γονικός λογαριασμός {1} δεν βρέθηκε. Δημιουργήστε το γονικό λογαριασμό σε αντίστοιχο COA", White,λευκό, Wire Transfer,Μεταφορά καλωδίων, WooCommerce Products,Προϊόντα WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Μου αρέσουν, Merge with existing,Συγχώνευση με τις υπάρχουσες, Office,Γραφείο, Orientation,Προσανατολισμός, +Parent,Γονέας, Passive,Αδρανής, Payment Failed,Η πληρωμή απέτυχε, Percent,Τοις εκατό, @@ -3543,6 +3539,7 @@ Shift,Βάρδια, Show {0},Εμφάνιση {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Ειδικοί χαρακτήρες εκτός από "-", "#", ".", "/", "" Και "}" δεν επιτρέπονται στη σειρά ονομασίας", Target Details,Στοιχεία στόχου, +{0} already has a Parent Procedure {1}.,{0} έχει ήδη μια διαδικασία γονέα {1}., API,API, Annual,Ετήσιος, Approved,Εγκρίθηκε, @@ -4241,7 +4238,6 @@ Download as JSON,Λήψη ως JSON, End date can not be less than start date,Η ημερομηνία λήξης δεν μπορεί να είναι προγενέστερη της ημερομηνίας έναρξης, For Default Supplier (Optional),Για προεπιλεγμένο προμηθευτή (προαιρετικό), From date cannot be greater than To date,Από την ημερομηνία αυτή δεν μπορεί να είναι μεταγενέστερη από την έως ημερομηνία, -Get items from,Πάρτε τα στοιχεία από, Group by,Ομαδοποίηση κατά, In stock,Σε απόθεμα, Item name,Όνομα είδους, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Παράμετρος πρότυπου ανα Quality Goal,Στόχος ποιότητας, Monitoring Frequency,Συχνότητα παρακολούθησης, Weekday,Καθημερινή, -January-April-July-October,Ιανουάριος-Απρίλιος-Ιούλιος-Οκτώβριος, -Revision and Revised On,Αναθεώρηση και αναθεωρήθηκε στις, -Revision,Αναθεώρηση, -Revised On,Αναθεωρημένη On, Objectives,Στόχοι, Quality Goal Objective,Στόχος στόχου ποιότητας, Objective,Σκοπός, @@ -7574,7 +7566,6 @@ Parent Procedure,Διαδικασία γονέων, Processes,Διαδικασίες, Quality Procedure Process,Διαδικασία ποιοτικής διαδικασίας, Process Description,Περιγραφή διαδικασίας, -Child Procedure,Διαδικασία παιδιού, Link existing Quality Procedure.,Συνδέστε την υφιστάμενη διαδικασία ποιότητας., Additional Information,Επιπλέον πληροφορίες, Quality Review Objective,Στόχος αναθεώρησης της ποιότητας, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Τάσεις παραγγελίας αγοράς, Purchase Receipt Trends,Τάσεις αποδεικτικού παραλαβής αγοράς, Purchase Register,Ταμείο αγορών, Quotation Trends,Τάσεις προσφορών, -Quoted Item Comparison,Εισηγμένες Στοιχείο Σύγκριση, Received Items To Be Billed,Είδη που παραλήφθηκαν και πρέπει να τιμολογηθούν, Qty to Order,Ποσότητα για παραγγελία, Requested Items To Be Transferred,Είδη που ζητήθηκε να μεταφερθούν, @@ -9091,7 +9081,6 @@ Unmarked days,Ημέρες χωρίς σήμανση, Absent Days,Απόντες ημέρες, Conditions and Formula variable and example,Συνθήκες και μεταβλητή τύπου και παράδειγμα, Feedback By,Σχόλια από, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Τμήμα κατασκευής, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Από προεπιλογή, το όνομα πελάτη ορίζεται σύμφωνα με το πλήρες όνομα που έχει εισαχθεί. Εάν θέλετε οι πελάτες να ονομάζονται από ένα", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Διαμορφώστε την προεπιλεγμένη λίστα τιμών κατά τη δημιουργία μιας νέας συναλλαγής πωλήσεων. Οι τιμές των αντικειμένων θα ληφθούν από αυτόν τον τιμοκατάλογο., @@ -9692,7 +9681,6 @@ Available Balance,διαθέσιμο υπόλοιπο, Reserved Balance,Διατηρημένο Υπόλοιπο, Uncleared Balance,Ακαθάριστο Υπόλοιπο, Payment related to {0} is not completed,Η πληρωμή που σχετίζεται με το {0} δεν έχει ολοκληρωθεί, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Σειρά # {}: Σειριακός αριθμός {}. Το {} έχει ήδη πραγματοποιηθεί συναλλαγή σε άλλο τιμολόγιο POS. Επιλέξτε έγκυρο αύξοντα αριθμό., Row #{}: Item Code: {} is not available under warehouse {}.,Σειρά # {}: Κωδικός είδους: {} δεν είναι διαθέσιμος στην αποθήκη {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Σειρά # {}: Η ποσότητα του αποθέματος δεν επαρκεί για τον κωδικό είδους: {} κάτω από την αποθήκη {}. Διαθέσιμη ποσότητα {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Σειρά # {}: Επιλέξτε ένα σειριακό αριθμό και παρτίδα έναντι αντικειμένου: {} ή αφαιρέστε το για να ολοκληρώσετε τη συναλλαγή., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Η ποσότητα δεν εί Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Ενεργοποιήστε το Allow Negative Stock σε Stock Settings ή δημιουργήστε Stock Entry για να συνεχίσετε., No Inpatient Record found against patient {0},Δεν βρέθηκε αρχείο εσωτερικών ασθενών κατά του ασθενούς {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Υπάρχει ήδη μια Εντολή Φαρμάκων Ενδονοσοκομειακών Θεμάτων {0} εναντίον Ασθενών {1}., +Allow In Returns,Να επιτρέπεται η επιστροφή, +Hide Unavailable Items,Απόκρυψη μη διαθέσιμων στοιχείων, +Apply Discount on Discounted Rate,Εφαρμόστε έκπτωση σε μειωμένη τιμή, +Therapy Plan Template,Πρότυπο σχεδίου θεραπείας, +Fetching Template Details,Λήψη λεπτομερειών προτύπου, +Linked Item Details,Λεπτομέρειες συνδεδεμένου στοιχείου, +Therapy Types,Τύποι θεραπείας, +Therapy Plan Template Detail,Λεπτομέρεια προτύπου σχεδίου θεραπείας, +Non Conformance,Μη συμμόρφωση, +Process Owner,Κάτοχος διαδικασίας, +Corrective Action,Διορθωτικά μέτρα, +Preventive Action,Προληπτική δράση, +Problem,Πρόβλημα, +Responsible,Υπεύθυνος, +Completion By,Ολοκλήρωση από, +Process Owner Full Name,Πλήρες όνομα κατόχου διαδικασίας, +Right Index,Δεξί ευρετήριο, +Left Index,Αριστερός δείκτης, +Sub Procedure,Υπο διαδικασία, +Passed,Πέρασε, +Print Receipt,Εκτύπωση απόδειξης, +Edit Receipt,Επεξεργασία απόδειξης, +Focus on search input,Εστίαση στην είσοδο αναζήτησης, +Focus on Item Group filter,Εστίαση στο φίλτρο ομάδας στοιχείων, +Checkout Order / Submit Order / New Order,Παραγγελία Παραγγελίας / Υποβολή Παραγγελίας / Νέα Παραγγελία, +Add Order Discount,Προσθήκη έκπτωσης παραγγελίας, +Item Code: {0} is not available under warehouse {1}.,Κωδικός είδους: {0} δεν είναι διαθέσιμο στην αποθήκη {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Οι σειριακοί αριθμοί δεν είναι διαθέσιμοι για το στοιχείο {0} υπό αποθήκη {1}. Δοκιμάστε να αλλάξετε την αποθήκη., +Fetched only {0} available serial numbers.,Λήψη μόνο {0} διαθέσιμων σειριακών αριθμών., +Switch Between Payment Modes,Εναλλαγή μεταξύ τρόπων πληρωμής, +Enter {0} amount.,Εισαγάγετε το ποσό {0}., +You don't have enough points to redeem.,Δεν έχετε αρκετούς πόντους για εξαργύρωση., +You can redeem upto {0}.,Μπορείτε να εξαργυρώσετε έως και {0}., +Enter amount to be redeemed.,Εισαγάγετε το ποσό που θα εξαργυρωθεί., +You cannot redeem more than {0}.,Δεν μπορείτε να εξαργυρώσετε περισσότερα από {0}., +Open Form View,Άνοιγμα προβολής φόρμας, +POS invoice {0} created succesfully,Το τιμολόγιο POS {0} δημιουργήθηκε με επιτυχία, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Η ποσότητα αποθεμάτων δεν επαρκεί για τον κωδικό είδους: {0} υπό αποθήκη {1}. Διαθέσιμη ποσότητα {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Σειριακός αριθμός: Το {0} έχει ήδη πραγματοποιηθεί συναλλαγή σε άλλο τιμολόγιο POS., +Balance Serial No,Υπόλοιπος αριθμός σειράς, +Warehouse: {0} does not belong to {1},Αποθήκη: {0} δεν ανήκει στο {1}, +Please select batches for batched item {0},Επιλέξτε παρτίδες για παρτίδες {0}, +Please select quantity on row {0},Επιλέξτε ποσότητα στη σειρά {0}, +Please enter serial numbers for serialized item {0},Εισαγάγετε σειριακούς αριθμούς για σειριακό στοιχείο {0}, +Batch {0} already selected.,Η παρτίδα {0} έχει ήδη επιλεγεί., +Please select a warehouse to get available quantities,Επιλέξτε αποθήκη για να λάβετε διαθέσιμες ποσότητες, +"For transfer from source, selected quantity cannot be greater than available quantity","Για μεταφορά από την πηγή, η επιλεγμένη ποσότητα δεν μπορεί να είναι μεγαλύτερη από τη διαθέσιμη ποσότητα", +Cannot find Item with this Barcode,Δεν είναι δυνατή η εύρεση αντικειμένου με αυτόν τον γραμμικό κώδικα, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},Το {0} είναι υποχρεωτικό. Ίσως η εγγραφή συναλλάγματος δεν έχει δημιουργηθεί για {1} έως {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,Ο χρήστης {} έχει υποβάλει στοιχεία που συνδέονται με αυτό. Πρέπει να ακυρώσετε τα στοιχεία για να δημιουργήσετε επιστροφή αγοράς., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Δεν είναι δυνατή η ακύρωση αυτού του εγγράφου καθώς συνδέεται με το υποβληθέν στοιχείο {0}. Ακυρώστε το για να συνεχίσετε., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Σειρά # {}: Ο αριθμός σειράς {} έχει ήδη πραγματοποιηθεί συναλλαγή σε άλλο τιμολόγιο POS. Επιλέξτε έγκυρο αύξοντα αριθμό., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Σειρά # {}: Οι σειριακοί αριθμοί. {} Έχουν ήδη πραγματοποιηθεί συναλλαγές σε άλλο τιμολόγιο POS. Επιλέξτε έγκυρο αύξοντα αριθμό., +Item Unavailable,Το στοιχείο δεν είναι διαθέσιμο, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Σειρά # {}: Ο αριθμός σειράς {} δεν μπορεί να επιστραφεί επειδή δεν πραγματοποιήθηκε συναλλαγή στο αρχικό τιμολόγιο {}, +Please set default Cash or Bank account in Mode of Payment {},Ορίστε τον προεπιλεγμένο μετρητά ή τραπεζικό λογαριασμό στον τρόπο πληρωμής {}, +Please set default Cash or Bank account in Mode of Payments {},Ορίστε τον προεπιλεγμένο μετρητά ή τον τραπεζικό λογαριασμό στη λειτουργία πληρωμής {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Βεβαιωθείτε ότι ο λογαριασμός {} είναι λογαριασμός ισολογισμού. Μπορείτε να αλλάξετε τον γονικό λογαριασμό σε λογαριασμό Ισολογισμού ή να επιλέξετε διαφορετικό λογαριασμό., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Βεβαιωθείτε ότι ο λογαριασμός {} είναι λογαριασμός πληρωτέος. Αλλάξτε τον τύπο λογαριασμού σε Πληρωτέο ή επιλέξτε διαφορετικό λογαριασμό., +Row {}: Expense Head changed to {} ,Σειρά {}: Η κεφαλή εξόδων άλλαξε σε {}, +because account {} is not linked to warehouse {} ,επειδή ο λογαριασμός {} δεν είναι συνδεδεμένος με αποθήκη {}, +or it is not the default inventory account,ή δεν είναι ο προεπιλεγμένος λογαριασμός αποθέματος, +Expense Head Changed,Η κεφαλή εξόδων άλλαξε, +because expense is booked against this account in Purchase Receipt {},επειδή τα έξοδα καταγράφονται σε αυτόν τον λογαριασμό στην απόδειξη αγοράς {}, +as no Purchase Receipt is created against Item {}. ,καθώς δεν δημιουργείται απόδειξη αγοράς έναντι αντικειμένου {}, +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Αυτό γίνεται για τον χειρισμό της λογιστικής για περιπτώσεις στις οποίες δημιουργείται απόδειξη αγοράς μετά το τιμολόγιο αγοράς, +Purchase Order Required for item {},Απαιτείται παραγγελία αγοράς για το στοιχείο {}, +To submit the invoice without purchase order please set {} ,"Για να υποβάλετε το τιμολόγιο χωρίς εντολή αγοράς, ορίστε {}", +as {} in {},όπως λέμε {}, +Mandatory Purchase Order,Υποχρεωτική εντολή αγοράς, +Purchase Receipt Required for item {},Απαιτείται απόδειξη αγοράς για το στοιχείο {}, +To submit the invoice without purchase receipt please set {} ,"Για να υποβάλετε το τιμολόγιο χωρίς απόδειξη αγοράς, ορίστε {}", +Mandatory Purchase Receipt,Υποχρεωτική απόδειξη αγοράς, +POS Profile {} does not belongs to company {},Το προφίλ POS {} δεν ανήκει στην εταιρεία {}, +User {} is disabled. Please select valid user/cashier,Ο χρήστης {} είναι απενεργοποιημένος. Επιλέξτε έγκυρο χρήστη / ταμία, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Σειρά # {}: Το αρχικό τιμολόγιο {} του τιμολογίου επιστροφής {} είναι {}., +Original invoice should be consolidated before or along with the return invoice.,Το αρχικό τιμολόγιο πρέπει να ενοποιείται πριν ή μαζί με το τιμολόγιο επιστροφής., +You can add original invoice {} manually to proceed.,Μπορείτε να προσθέσετε το αρχικό τιμολόγιο {} μη αυτόματα για να συνεχίσετε., +Please ensure {} account is a Balance Sheet account. ,Βεβαιωθείτε ότι ο λογαριασμός {} είναι λογαριασμός ισολογισμού., +You can change the parent account to a Balance Sheet account or select a different account.,Μπορείτε να αλλάξετε τον γονικό λογαριασμό σε λογαριασμό Ισολογισμού ή να επιλέξετε διαφορετικό λογαριασμό., +Please ensure {} account is a Receivable account. ,Βεβαιωθείτε ότι ο λογαριασμός {} είναι λογαριασμός εισπρακτέος., +Change the account type to Receivable or select a different account.,Αλλάξτε τον τύπο λογαριασμού σε Εισπρακτέο ή επιλέξτε διαφορετικό λογαριασμό., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},Το {} δεν μπορεί να ακυρωθεί αφού εξαργυρωθούν οι πόντοι επιβράβευσης που αποκτήθηκαν. Πρώτα ακυρώστε το {} Όχι {}, +already exists,υπάρχει ήδη, +POS Closing Entry {} against {} between selected period,POS Κλείσιμο καταχώρισης {} εναντίον {} μεταξύ της επιλεγμένης περιόδου, +POS Invoice is {},Το τιμολόγιο POS είναι {}, +POS Profile doesn't matches {},Το προφίλ POS δεν ταιριάζει {}, +POS Invoice is not {},Το τιμολόγιο POS δεν είναι {}, +POS Invoice isn't created by user {},Το τιμολόγιο POS δεν έχει δημιουργηθεί από τον χρήστη {}, +Row #{}: {},Σειρά # {}: {}, +Invalid POS Invoices,Μη έγκυρα τιμολόγια POS, +Please add the account to root level Company - {},Προσθέστε τον λογαριασμό στο ριζικό επίπεδο Εταιρεία - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Κατά τη δημιουργία λογαριασμού για την θυγατρική εταιρεία {0}, ο γονικός λογαριασμός {1} δεν βρέθηκε. Δημιουργήστε τον γονικό λογαριασμό στο αντίστοιχο COA", +Account Not Found,Ο λογαριασμός δεν βρέθηκε, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Κατά τη δημιουργία λογαριασμού για την θυγατρική εταιρεία {0}, ο γονικός λογαριασμός {1} βρέθηκε ως λογαριασμός καθολικού.", +Please convert the parent account in corresponding child company to a group account.,Μετατρέψτε τον γονικό λογαριασμό στην αντίστοιχη θυγατρική εταιρεία σε λογαριασμό ομάδας., +Invalid Parent Account,Μη έγκυρος γονικός λογαριασμός, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Η μετονομασία επιτρέπεται μόνο μέσω της μητρικής εταιρείας {0}, για την αποφυγή αναντιστοιχίας.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Εάν {0} {1} ποσότητες του αντικειμένου {2}, το σχήμα {3} θα εφαρμοστεί στο στοιχείο.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Εάν {0} {1} αξίζετε το στοιχείο {2}, το σχήμα {3} θα εφαρμοστεί στο στοιχείο.", +"As the field {0} is enabled, the field {1} is mandatory.","Καθώς το πεδίο {0} είναι ενεργοποιημένο, το πεδίο {1} είναι υποχρεωτικό.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Καθώς το πεδίο {0} είναι ενεργοποιημένο, η τιμή του πεδίου {1} θα πρέπει να είναι μεγαλύτερη από 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Δεν είναι δυνατή η παράδοση του σειριακού αριθμού {0} του στοιχείου {1}, καθώς προορίζεται για την πλήρωση της παραγγελίας πωλήσεων {2}", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Η παραγγελία πωλήσεων {0} έχει κράτηση για το αντικείμενο {1}, μπορείτε να παραδώσετε μόνο την κράτηση {1} έναντι {0}.", +{0} Serial No {1} cannot be delivered,Δεν είναι δυνατή η παράδοση του {0} σειριακού αριθμού {1}, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Σειρά {0}: Το αντικείμενο υπεργολαβίας είναι υποχρεωτικό για την πρώτη ύλη {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Δεδομένου ότι υπάρχουν επαρκείς πρώτες ύλες, δεν απαιτείται αίτημα υλικού για αποθήκη {0}.", +" If you still want to proceed, please enable {0}.","Εάν εξακολουθείτε να θέλετε να συνεχίσετε, ενεργοποιήστε το {0}.", +The item referenced by {0} - {1} is already invoiced,Το στοιχείο που αναφέρεται από {0} - {1} έχει ήδη τιμολογηθεί, +Therapy Session overlaps with {0},Η συνεδρία θεραπείας αλληλεπικαλύπτεται με {0}, +Therapy Sessions Overlapping,Συνεδρίες συνεδρίας, +Therapy Plans,Σχέδια θεραπείας, +"Item Code, warehouse, quantity are required on row {0}","Κωδικός είδους, αποθήκη, ποσότητα απαιτείται στη σειρά {0}", +Get Items from Material Requests against this Supplier,Λάβετε στοιχεία από αιτήματα υλικών έναντι αυτού του προμηθευτή, +Enable European Access,Ενεργοποίηση ευρωπαϊκής πρόσβασης, +Creating Purchase Order ...,Δημιουργία παραγγελίας αγοράς ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Επιλέξτε έναν προμηθευτή από τους προεπιλεγμένους προμηθευτές των παρακάτω στοιχείων. Κατά την επιλογή, μια εντολή αγοράς θα πραγματοποιείται έναντι αντικειμένων που ανήκουν στον επιλεγμένο Προμηθευτή μόνο.", +Row #{}: You must select {} serial numbers for item {}.,Σειρά # {}: Πρέπει να επιλέξετε {} σειριακούς αριθμούς για το στοιχείο {}., diff --git a/erpnext/translations/es.csv b/erpnext/translations/es.csv index a76643a892..0f2259db21 100644 --- a/erpnext/translations/es.csv +++ b/erpnext/translations/es.csv @@ -117,7 +117,7 @@ Add Item,Añadir artículo, Add Items,Añadir los artículos, Add Leads,Añadir Prospectos, Add Multiple Tasks,Agregar Tareas Múltiples, -Add Row,Añadir fila, +Add Row,Añadir Fila, Add Sales Partners,Añadir socios de ventas, Add Serial No,Agregar No. de serie, Add Students,Añadir estudiantes, @@ -421,7 +421,7 @@ Buildings,Edificios, Bundle items at time of sale.,Agrupe elementos al momento de la venta., Business Development Manager,Gerente de Desarrollo de Negocios, Buy,Comprar, -Buying,Comprando, +Buying,Compras, Buying Amount,Importe de compra, Buying Price List,Lista de precios de compra, Buying Rate,Tipo de Cambio de Compra, @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',No se pu Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',"No se puede deducir cuando la categoría es 'de Valoración ""o"" Vaulation y Total'", "Cannot delete Serial No {0}, as it is used in stock transactions","No se puede eliminar el No. de serie {0}, ya que esta siendo utilizado en transacciones de stock", Cannot enroll more than {0} students for this student group.,No se puede inscribir más de {0} estudiantes para este grupo de estudiantes., -Cannot find Item with this barcode,No se puede encontrar el artículo con este código de barras, Cannot find active Leave Period,No se puede encontrar el Período de permiso activo, Cannot produce more Item {0} than Sales Order quantity {1},No se puede producir una cantidad mayor del producto {0} que lo requerido en el pedido de venta {1}, Cannot promote Employee with status Left,No se puede promocionar Empleado con estado dejado, @@ -536,7 +535,7 @@ City/Town,Ciudad / Provincia, Claimed Amount,Cantidad reclamada, Clay,Arcilla, Clear filters,Filtros claros, -Clear values,Valores claros, +Clear values,Quitar valores, Clearance Date,Fecha de liquidación, Clearance Date not mentioned,Fecha de liquidación no definida, Clearance Date updated,Fecha de liquidación actualizada, @@ -690,7 +689,6 @@ Create Variants,Crear variantes, "Create and manage daily, weekly and monthly email digests.","Crear y gestionar resúmenes de correos; diarios, semanales y mensuales.", Create customer quotes,Crear cotizaciones de clientes, Create rules to restrict transactions based on values.,Crear reglas para restringir las transacciones basadas en valores., -Created By,Creado por, Created {0} scorecards for {1} between: ,Creó {0} tarjetas de puntuación para {1} entre:, Creating Company and Importing Chart of Accounts,Creación de empresa e importación de plan de cuentas, Creating Fees,Creación de Tarifas, @@ -730,7 +728,7 @@ Current Liabilities,Pasivo circulante, Current Qty,Cant. Actual, Current invoice {0} is missing,La factura actual {0} falta, Custom HTML,HTML Personalizado, -Custom?,Personalizado?, +Custom?,¿Personalizado?, Customer,Cliente, Customer Addresses And Contacts,Direcciones de clientes y contactos, Customer Contact,Contacto del Cliente, @@ -785,7 +783,7 @@ Default Activity Cost exists for Activity Type - {0},Existe una actividad de cos Default BOM ({0}) must be active for this item or its template,La lista de materiales (LdM) por defecto ({0}) debe estar activa para este producto o plantilla, Default BOM for {0} not found,BOM por defecto para {0} no encontrado, Default BOM not found for Item {0} and Project {1},La lista de materiales predeterminada no se encontró para el Elemento {0} y el Proyecto {1}, -Default Letter Head,Encabezado predeterminado, +Default Letter Head,Encabezado Predeterminado, Default Tax Template,Plantilla de impuesto predeterminado, Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You will need to create a new Item to use a different Default UOM.,Unidad de medida predeterminada para el artículo {0} no se puede cambiar directamente porque ya ha realizado alguna transacción (s) con otra UOM. Usted tendrá que crear un nuevo elemento a utilizar un UOM predeterminado diferente., Default Unit of Measure for Variant '{0}' must be same as in Template '{1}',Unidad de medida predeterminada para variante '{0}' debe ser la mismo que en la plantilla '{1}', @@ -968,7 +966,7 @@ Equity,Patrimonio, Error Log,Registro de Errores, Error evaluating the criteria formula,Error al evaluar la fórmula de criterios, Error in formula or condition: {0},Error Fórmula o Condición: {0}, -Error: Not a valid id?,Error: No es un ID válido?, +Error: Not a valid id?,Error: ¿No es un ID válido?, Estimated Cost,Costo estimado, Evaluation,Evaluación, "Even if there are multiple Pricing Rules with highest priority, then following internal priorities are applied:","Incluso si hay varias reglas de precios con mayor prioridad, se aplican entonces siguientes prioridades internas:", @@ -1020,7 +1018,7 @@ Fee Created,Tarifa creada, Fee Creation Failed,Error en la Creación de Cuotas, Fee Creation Pending,Creación de Cuotas Pendientes, Fee Records Created - {0},Registros de cuotas creados - {0}, -Feedback,Comentarios., +Feedback,Retroalimentación, Fees,Matrícula, Female,Femenino, Fetch Data,Obtener datos, @@ -1045,7 +1043,7 @@ Finished Good Item Code,Código de artículo bueno terminado, Finished Goods,Productos terminados, Finished Item {0} must be entered for Manufacture type entry,El producto terminado {0} debe ser introducido para el tipo de producción, Finished product quantity {0} and For Quantity {1} cannot be different,La cantidad de productos terminados {0} y Por cantidad {1} no puede ser diferente, -First Name,Nombre, +First Name,Primer Nombre, "Fiscal Regime is mandatory, kindly set the fiscal regime in the company {0}","El régimen fiscal es obligatorio, establezca amablemente el régimen fiscal en la empresa {0}", Fiscal Year,Año fiscal, Fiscal Year End Date should be one year after Fiscal Year Start Date,La fecha de finalización del año fiscal debe ser un año después de la fecha de inicio del año fiscal, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Para el almacén es requerido antes de e For row {0}: Enter Planned Qty,Para la fila {0}: ingrese cantidad planificada, "For {0}, only credit accounts can be linked against another debit entry","Para {0}, sólo las cuentas de crédito se pueden vincular con un asiento de débito", "For {0}, only debit accounts can be linked against another credit entry","Para {0}, sólo las cuentas de débito pueden vincular con un asiento de crédito", -Form View,Vista de formulario, Forum Activity,Actividad del foro, Free item code is not selected,El código de artículo gratuito no está seleccionado, Freight and Forwarding Charges,CARGOS DE TRANSITO Y TRANSPORTE, @@ -1341,7 +1338,7 @@ Issue Material,Distribuir materiales, Issued,Emitido, Issues,Incidencias, It is needed to fetch Item Details.,Se necesita a buscar Detalles del artículo., -Item,Productos, +Item,Producto, Item 1,Elemento 1, Item 2,Elemento 2, Item 3,Elemento 3, @@ -1429,7 +1426,7 @@ Last Purchase Price,Último precio de compra, Last Purchase Rate,Tasa de cambio de última compra, Latest,Más reciente, Latest price updated in all BOMs,Último precio actualizado en todas las Listas de Materiales, -Lead,Dirigir, +Lead,Iniciativa, Lead Count,Cuenta de Iniciativa, Lead Owner,Propietario de la iniciativa, Lead Owner cannot be same as the Lead,Propietario de Iniciativa no puede ser igual que el de la Iniciativa, @@ -1538,7 +1535,7 @@ Mark Attendance,Marcar Asistencia, Mark Half Day,Marcar medio día, Mark Present,Marcar Presente, Marketing,Márketing, -Marketing Expenses,GASTOS DE PUBLICIDAD, +Marketing Expenses,Gastos de Publicidad, Marketplace,Mercado, Marketplace Error,Error de Marketplace, Masters,Maestros, @@ -1595,7 +1592,7 @@ Message Examples,Ejemplos de Mensaje, Message Sent,Mensaje enviado, Method,Método, Middle Income,Ingreso medio, -Middle Name,Segundo nombre, +Middle Name,Segundo Nombre, Middle Name (Optional),Segundo nombre (Opcional), Min Amt can not be greater than Max Amt,La cantidad mínima no puede ser mayor que la cantidad máxima, Min Qty can not be greater than Max Qty,La cantidad mínima no puede ser mayor que la cantidad maxima, @@ -1870,7 +1867,7 @@ Parents Teacher Meeting Attendance,Padres Maestros Asistencia a la Reunión, Part-time,Tiempo parcial, Partially Depreciated,Despreciables Parcialmente, Partially Received,Parcialmente recibido, -Party,Partido, +Party,Tercero, Party Name,Nombre de Parte, Party Type,Tipo de entidad, Party Type and Party is mandatory for {0} account,Tipo de Tercero y Tercero es obligatorio para la Cuenta {0}, @@ -2030,7 +2027,7 @@ Please select Company first,"Por favor, seleccione primero la compañía", Please select Completion Date for Completed Asset Maintenance Log,Seleccione Fecha de Finalización para el Registro de Mantenimiento de Activos Completado, Please select Completion Date for Completed Repair,Seleccione Fecha de Finalización para la Reparación Completa, Please select Course,Por favor seleccione Curso, -Please select Drug,Seleccione Droga, +Please select Drug,Por favor seleccione fármaco, Please select Employee,Por favor selecciona Empleado, Please select Existing Company for creating Chart of Accounts,"Por favor, seleccione empresa ya existente para la creación del plan de cuentas", Please select Healthcare Service,Por favor seleccione Servicio de Salud, @@ -2121,7 +2118,7 @@ Please specify from/to range,"Por favor, especifique el rango (desde / hasta)", Please supply the specified items at the best possible rates,Por favor suministrar los elementos especificados en las mejores tasas posibles, Please update your status for this training event,Actualice su estado para este evento de capacitación., Please wait 3 days before resending the reminder.,Espere 3 días antes de volver a enviar el recordatorio., -Point of Sale,Punto de venta, +Point of Sale,Punto de Venta, Point-of-Sale,Punto de Venta (POS), Point-of-Sale Profile,Perfiles de punto de venta (POS), Portal,Portal, @@ -2556,8 +2553,8 @@ Sanctioned,Sancionada, Sanctioned Amount,Monto sancionado, Sanctioned Amount cannot be greater than Claim Amount in Row {0}.,Importe sancionado no puede ser mayor que el importe del reclamo en la línea {0}., Sand,Arena, -Saturday,Sábado., -Saved,Guardado., +Saturday,Sábado, +Saved,Guardado, Saving {0},Guardando {0}, Scan Barcode,Escanear Código de Barras, Schedule,Programa, @@ -2630,7 +2627,7 @@ Sell,Vender, Selling,Ventas, Selling Amount,Cantidad de venta, Selling Price List,Lista de precios de venta, -Selling Rate,Tasa de ventas, +Selling Rate,Precio de venta, "Selling must be checked, if Applicable For is selected as {0}","'Ventas' debe ser seleccionada, si la opción: 'Aplicable para' esta seleccionado como {0}", Send Grant Review Email,Enviar correo electrónico de revisión de subvención, Send Now,Enviar ahora, @@ -2638,7 +2635,6 @@ Send SMS,Enviar mensaje SMS, Send mass SMS to your contacts,Enviar mensajes SMS masivos a sus contactos, Sensitivity,Sensibilidad, Sent,Enviado, -Serial #,Serial #., Serial No and Batch,Número de serie y de lote, Serial No is mandatory for Item {0},No. de serie es obligatoria para el producto {0}, Serial No {0} does not belong to Batch {1},El número de serie {0} no pertenece al lote {1}, @@ -2704,9 +2700,9 @@ Setup cheque dimensions for printing,Configurar dimensiones de cheque para la im Setup default values for POS Invoices,Configurar los valores predeterminados para facturas de POS, Setup mode of POS (Online / Offline),Modo de configuración de POS (Online / Offline), Setup your Institute in ERPNext,Configura tu instituto en ERPNext, -Share Balance,Compartir Saldo, +Share Balance,Balance de Acciones, Share Ledger,Share Ledger, -Share Management,Gestión de Compartir, +Share Management,Administración de Acciones, Share Transfer,Transferir Acciones, Share Type,Tipo de acción, Shareholder,Accionista, @@ -2871,7 +2867,7 @@ Sum of points for all goals should be 100. It is {0},La suma de puntos para los Summary,Resumen, Summary for this month and pending activities,Resumen para este mes y actividades pendientes, Summary for this week and pending activities,Resumen para esta semana y actividades pendientes, -Sunday,Domingo., +Sunday,Domingo, Suplier,Proveedor, Supplier,Proveedor, Supplier Group,Grupo de proveedores, @@ -3303,11 +3299,10 @@ Welcome to ERPNext,Bienvenido a ERPNext, What do you need help with?,Con qué necesitas ayuda?, What does it do?,¿A qué se dedica?, Where manufacturing operations are carried.,Dónde se realizan las operaciones de producción, -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Al crear una cuenta para la empresa secundaria {0}, no se encontró la cuenta principal {1}. Cree la cuenta principal en el COA correspondiente", White,Blanco, Wire Transfer,Transferencia bancaria, WooCommerce Products,Productos WooCommerce, -Work In Progress,Trabajo en progreso, +Work In Progress,Trabajo en Proceso, Work Order,Orden de trabajo, Work Order already created for all items with BOM,Órden de Trabajo ya creada para todos los artículos con lista de materiales, Work Order cannot be raised against a Item Template,La Órden de Trabajo no puede levantarse contra una Plantilla de Artículo, @@ -3493,6 +3488,7 @@ Likes,Me Gustas, Merge with existing,Combinar con existente, Office,Oficina, Orientation,Orientación, +Parent,Principal, Passive,Pasivo, Payment Failed,Pago Fallido, Percent,Por ciento, @@ -3543,6 +3539,7 @@ Shift,Cambio, Show {0},Mostrar {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Caracteres especiales excepto "-", "#", ".", "/", "{" Y "}" no están permitidos en las series de nombres", Target Details,Detalles del objetivo, +{0} already has a Parent Procedure {1}.,{0} ya tiene un Procedimiento principal {1}., API,API, Annual,Anual, Approved,Aprobado, @@ -3585,7 +3582,7 @@ Accounting Masters,Maestros Contables, Accounting Period overlaps with {0},El período contable se superpone con {0}, Activity,Actividad, Add / Manage Email Accounts.,Añadir / Administrar cuentas de correo electrónico., -Add Child,Agregar niño, +Add Child,Agregar hijo, Add Loan Security,Agregar seguridad de préstamo, Add Multiple,Añadir Multiple, Add Participants,Agregar Participantes, @@ -3709,14 +3706,14 @@ Description,Descripción, Designation,Puesto, Difference Value,Valor de diferencia, Dimension Filter,Filtro de dimensiones, -Disabled,Discapacitado, +Disabled,Deshabilitado, Disbursement and Repayment,Desembolso y reembolso, Distance cannot be greater than 4000 kms,La distancia no puede ser mayor a 4000 kms, Do you want to submit the material request,¿Quieres enviar la solicitud de material?, Doctype,Doctype, Document {0} successfully uncleared,El documento {0} no se ha borrado correctamente, Download Template,Descargar plantilla, -Dr,Dr, +Dr,Dr., Due Date,Fecha de vencimiento, Duplicate,Duplicar, Duplicate Project with Tasks,Proyecto duplicado con tareas, @@ -4196,7 +4193,7 @@ Total Income This Year,Ingresos totales este año, Barcode,Código de barras, Bold,Negrita, Center,Centro, -Clear,Claro, +Clear,Quitar, Comment,Comentario, Comments,Comentarios, DocType,DocType, @@ -4241,7 +4238,6 @@ Download as JSON,Descargar como JSON, End date can not be less than start date,la fecha final no puede ser inferior a fecha de Inicio, For Default Supplier (Optional),Para el proveedor predeterminado (opcional), From date cannot be greater than To date,La fecha 'Desde' no puede ser mayor que la fecha 'Hasta', -Get items from,Obtener artículos de, Group by,Agrupar por, In stock,En stock, Item name,Nombre del producto, @@ -4308,7 +4304,7 @@ Assets not created for {0}. You will have to create asset manually.,Activos no c Invalid Account,Cuenta no válida, Purchase Order Required,Orden de compra requerida, Purchase Receipt Required,Recibo de compra requerido, -Account Missing,Falta la cuenta, +Account Missing,Cuenta Faltante, Requested,Solicitado, Partially Paid,Parcialmente pagado, Invalid Account Currency,Moneda de la cuenta no válida, @@ -5603,7 +5599,7 @@ Call Log,Registro de llamadas, Received By,Recibido por, Caller Information,Información de la llamada, Contact Name,Nombre de contacto, -Lead ,Dirigir, +Lead ,Iniciativa, Lead Name,Nombre de la iniciativa, Ringing,Zumbido, Missed,Perdido, @@ -6293,7 +6289,7 @@ Require Result Value,Requerir Valor de Resultado, Normal Test Template,Plantilla de Prueba Normal, Patient Demographics,Datos Demográficos del Paciente, HLC-PAT-.YYYY.-,HLC-PAT-.YYYY.-, -Middle Name (optional),Segundo nombre (opcional), +Middle Name (optional),Segundo Nombre (Opcional), Inpatient Status,Estado de paciente hospitalizado, "If ""Link Customer to Patient"" is checked in Healthcare Settings and an existing Customer is not selected then, a Customer will be created for this Patient for recording transactions in Accounts module.","Si "Vincular cliente a paciente" está marcado en Configuración de atención médica y no se selecciona un Cliente existente, se creará un Cliente para este Paciente para registrar transacciones en el módulo Cuentas.", Personal and Social History,Historia Personal y Social, @@ -6622,7 +6618,7 @@ Employee External Work History,Historial de de trabajos anteriores, Total Experience,Experiencia total, Default Leave Policy,Política de Licencia Predeterminada, Default Salary Structure,Estructura de Salario Predeterminada, -Employee Group Table,Mesa de grupo de empleados, +Employee Group Table,Tabla de grupo de empleados, ERPNext User ID,ERP ID de usuario siguiente, Employee Health Insurance,Seguro de Salud para Empleados, Health Insurance Name,Nombre del Seguro de Salud, @@ -6841,10 +6837,10 @@ Employees,Empleados, Number Of Employees,Número de Empleados, Employee Details,Detalles del Empleado, Validate Attendance,Validar la Asistencia, -Salary Slip Based on Timesheet,Nomina basada en el Parte de Horas, +Salary Slip Based on Timesheet,Nomina basada horas, Select Payroll Period,Seleccione el Período de Nómina, Deduct Tax For Unclaimed Employee Benefits,Deducir Impuestos para beneficios de Empleados no Reclamados, -Deduct Tax For Unsubmitted Tax Exemption Proof,Deducir impuestos por prueba de exención de impuestos sin enviar, +Deduct Tax For Unsubmitted Tax Exemption Proof,Deducir impuestos por soporte de exención de impuestos sin enviar, Select Payment Account to make Bank Entry,Seleccionar la cuenta de pago para hacer la entrada del Banco, Salary Slips Created,Salario Slips creado, Salary Slips Submitted,Nómina Salarial Validada, @@ -7096,7 +7092,7 @@ Total Amount Paid,Cantidad Total Pagada, Loan Manager,Gerente de préstamos, Loan Info,Información del Préstamo, Rate of Interest,Tasa de interés, -Proposed Pledges,Promesas Propuestas, +Proposed Pledges,Prendas Propuestas, Maximum Loan Amount,Cantidad máxima del préstamo, Repayment Info,Información de la Devolución, Total Payable Interest,Interés Total a Pagar, @@ -7343,7 +7339,7 @@ Available Qty at Source Warehouse,Cantidad Disponible en Almacén Fuente, Available Qty at WIP Warehouse,Cantidad Disponible en Almacén WIP, Work Order Operation,Operación de Órden de Trabajo, Operation Description,Descripción de la operación, -Operation completed for how many finished goods?,Se completo la operación para la cantidad de productos terminados?, +Operation completed for how many finished goods?,¿Operación completada para cuántos productos terminados?, Work in Progress,Trabajo en proceso, Estimated Time and Cost,Tiempo estimado y costo, Planned Start Time,Hora prevista de inicio, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Parámetro de plantilla de comentarios de ca Quality Goal,Objetivo de calidad, Monitoring Frequency,Frecuencia de monitoreo, Weekday,Día laborable, -January-April-July-October,Enero-abril-julio-octubre, -Revision and Revised On,Revisión y revisado en, -Revision,Revisión, -Revised On,Revisado en, Objectives,Objetivos, Quality Goal Objective,Objetivo de calidad Objetivo, Objective,Objetivo, @@ -7574,7 +7566,6 @@ Parent Procedure,Procedimiento para padres, Processes,Procesos, Quality Procedure Process,Proceso de procedimiento de calidad, Process Description,Descripción del proceso, -Child Procedure,Procedimiento infantil, Link existing Quality Procedure.,Enlace Procedimiento de calidad existente., Additional Information,Información Adicional, Quality Review Objective,Objetivo de revisión de calidad, @@ -8460,7 +8451,7 @@ Asset Depreciation Ledger,Libro Mayor Depreciacion de Activos, Asset Depreciations and Balances,Depreciaciones de Activos y Saldos, Available Stock for Packing Items,Inventario Disponible de Artículos de Embalaje, Bank Clearance Summary,Resumen de Cambios Bancarios, -Bank Remittance,Remesa bancaria, +Bank Remittance,Giro Bancario, Batch Item Expiry Status,Estado de Caducidad de Lote de Productos, Batch-Wise Balance History,Historial de Saldo por Lotes, BOM Explorer,BOM Explorer, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Tendencias de ordenes de compra, Purchase Receipt Trends,Tendencias de recibos de compra, Purchase Register,Registro de compras, Quotation Trends,Tendencias de Presupuestos, -Quoted Item Comparison,Comparación de artículos de Cotización, Received Items To Be Billed,Recepciones por facturar, Qty to Order,Cantidad a Solicitar, Requested Items To Be Transferred,Artículos solicitados para ser transferidos, @@ -9091,7 +9081,6 @@ Unmarked days,Días sin marcar, Absent Days,Días ausentes, Conditions and Formula variable and example,Condiciones y variable de fórmula y ejemplo, Feedback By,Comentarios de, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Sección de fabricación, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","De forma predeterminada, el nombre del cliente se establece según el nombre completo introducido. Si desea que los Clientes sean nombrados por un", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Configure la lista de precios predeterminada al crear una nueva transacción de ventas. Los precios de los artículos se obtendrán de esta lista de precios., @@ -9692,7 +9681,6 @@ Available Balance,Saldo disponible, Reserved Balance,Saldo reservado, Uncleared Balance,Saldo no liquidado, Payment related to {0} is not completed,El pago relacionado con {0} no se completó, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Fila # {}: número de serie {}. {} ya se ha transferido a otra factura de punto de venta. Seleccione un número de serie válido., Row #{}: Item Code: {} is not available under warehouse {}.,Fila # {}: Código de artículo: {} no está disponible en el almacén {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Fila # {}: la cantidad de existencias no es suficiente para el código de artículo: {} debajo del almacén {}. Cantidad disponible {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Fila # {}: seleccione un número de serie y un lote contra el artículo: {} o elimínelo para completar la transacción., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Cantidad no disponible para {0} Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Habilite Permitir stock negativo en la configuración de stock o cree Entrada de stock para continuar., No Inpatient Record found against patient {0},No se encontraron registros de pacientes hospitalizados del paciente {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Ya existe una orden de medicación para pacientes hospitalizados {0} contra el encuentro con el paciente {1}., +Allow In Returns,Permitir devoluciones, +Hide Unavailable Items,Ocultar elementos no disponibles, +Apply Discount on Discounted Rate,Aplicar descuento sobre tarifa con descuento, +Therapy Plan Template,Plantilla de plan de terapia, +Fetching Template Details,Obteniendo detalles de la plantilla, +Linked Item Details,Detalles del artículo vinculado, +Therapy Types,Tipos de terapia, +Therapy Plan Template Detail,Detalle de la plantilla del plan de terapia, +Non Conformance,No conformidad, +Process Owner,Dueño del proceso, +Corrective Action,Acción correctiva, +Preventive Action,Acción preventiva, +Problem,Problema, +Responsible,Responsable, +Completion By,Finalización por, +Process Owner Full Name,Nombre completo del propietario del proceso, +Right Index,Índice derecho, +Left Index,Índice izquierdo, +Sub Procedure,Subprocedimiento, +Passed,Aprobado, +Print Receipt,Imprimir el recibo, +Edit Receipt,Editar recibo, +Focus on search input,Centrarse en la entrada de búsqueda, +Focus on Item Group filter,Centrarse en el filtro de grupo de artículos, +Checkout Order / Submit Order / New Order,Realizar pedido / Enviar pedido / Nuevo pedido, +Add Order Discount,Agregar descuento de pedido, +Item Code: {0} is not available under warehouse {1}.,Código de artículo: {0} no está disponible en el almacén {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Los números de serie no están disponibles para el artículo {0} en almacén {1}. Intente cambiar de almacén., +Fetched only {0} available serial numbers.,Solo se obtuvieron {0} números de serie disponibles., +Switch Between Payment Modes,Cambiar entre modos de pago, +Enter {0} amount.,Ingrese {0} monto., +You don't have enough points to redeem.,No tienes suficientes puntos para canjear., +You can redeem upto {0}.,Puede canjear hasta {0}., +Enter amount to be redeemed.,Ingrese el monto a canjear., +You cannot redeem more than {0}.,No puede canjear más de {0}., +Open Form View,Abrir vista de formulario, +POS invoice {0} created succesfully,Factura de punto de venta {0} creada correctamente, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,La cantidad de existencias no es suficiente para el código de artículo: {0} en el almacén {1}. Cantidad disponible {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Número de serie: {0} ya se ha transferido a otra factura de punto de venta., +Balance Serial No,No de serie de la balanza, +Warehouse: {0} does not belong to {1},Almacén: {0} no pertenece a {1}, +Please select batches for batched item {0},Seleccione lotes para el artículo por lotes {0}, +Please select quantity on row {0},Seleccione la cantidad en la fila {0}, +Please enter serial numbers for serialized item {0},Ingrese los números de serie del artículo serializado {0}, +Batch {0} already selected.,Lote {0} ya seleccionado., +Please select a warehouse to get available quantities,Seleccione un almacén para obtener las cantidades disponibles, +"For transfer from source, selected quantity cannot be greater than available quantity","Para la transferencia desde la fuente, la cantidad seleccionada no puede ser mayor que la cantidad disponible", +Cannot find Item with this Barcode,No se puede encontrar el artículo con este código de barras, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} es obligatorio. Quizás no se crea el registro de cambio de moneda para {1} a {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} ha enviado elementos vinculados a él. Debe cancelar los activos para crear una devolución de compra., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,No se puede cancelar este documento porque está vinculado con el activo enviado {0}. Cancele para continuar., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Fila # {}: el número de serie {} ya se ha transferido a otra factura de punto de venta. Seleccione un número de serie válido., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Fila # {}: Los números de serie {} ya se han transferido a otra factura de punto de venta. Seleccione un número de serie válido., +Item Unavailable,Artículo no disponible, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Fila # {}: No de serie {} no se puede devolver porque no se tramitó en la factura original {}, +Please set default Cash or Bank account in Mode of Payment {},Establezca una cuenta bancaria o en efectivo predeterminada en el modo de pago {}, +Please set default Cash or Bank account in Mode of Payments {},Establezca la cuenta bancaria o en efectivo predeterminada en el modo de pago {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Asegúrese de que la cuenta {} sea una cuenta de balance. Puede cambiar la cuenta principal a una cuenta de balance o seleccionar una cuenta diferente., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Asegúrese de que la {} cuenta sea una cuenta a pagar. Cambie el tipo de cuenta a Pagable o seleccione una cuenta diferente., +Row {}: Expense Head changed to {} ,Fila {}: la cabeza de gastos cambió a {}, +because account {} is not linked to warehouse {} ,porque la cuenta {} no está vinculada al almacén {}, +or it is not the default inventory account,o no es la cuenta de inventario predeterminada, +Expense Head Changed,Cabeza de gastos cambiada, +because expense is booked against this account in Purchase Receipt {},porque el gasto se registra en esta cuenta en el recibo de compra {}, +as no Purchase Receipt is created against Item {}. ,ya que no se crea ningún recibo de compra para el artículo {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Esto se hace para manejar la contabilidad de los casos en los que el recibo de compra se crea después de la factura de compra., +Purchase Order Required for item {},Se requiere orden de compra para el artículo {}, +To submit the invoice without purchase order please set {} ,"Para enviar la factura sin orden de compra, configure {}", +as {} in {},como en {}, +Mandatory Purchase Order,Orden de compra obligatoria, +Purchase Receipt Required for item {},Se requiere recibo de compra para el artículo {}, +To submit the invoice without purchase receipt please set {} ,"Para enviar la factura sin el recibo de compra, configure {}", +Mandatory Purchase Receipt,Recibo de compra obligatorio, +POS Profile {} does not belongs to company {},El perfil de POS {} no pertenece a la empresa {}, +User {} is disabled. Please select valid user/cashier,El usuario {} está inhabilitado. Seleccione un usuario / cajero válido, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Fila # {}: la factura original {} de la factura de devolución {} es {}., +Original invoice should be consolidated before or along with the return invoice.,La factura original debe consolidarse antes o junto con la factura de devolución., +You can add original invoice {} manually to proceed.,Puede agregar la factura original {} manualmente para continuar., +Please ensure {} account is a Balance Sheet account. ,Asegúrese de que la cuenta {} sea una cuenta de balance., +You can change the parent account to a Balance Sheet account or select a different account.,Puede cambiar la cuenta principal a una cuenta de balance o seleccionar una cuenta diferente., +Please ensure {} account is a Receivable account. ,Asegúrese de que la {} cuenta sea una cuenta por cobrar., +Change the account type to Receivable or select a different account.,Cambie el tipo de cuenta a Cobrar o seleccione una cuenta diferente., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} no se puede cancelar ya que se canjearon los puntos de fidelidad ganados. Primero cancele el {} No {}, +already exists,ya existe, +POS Closing Entry {} against {} between selected period,Entrada de cierre de POS {} contra {} entre el período seleccionado, +POS Invoice is {},La factura de POS es {}, +POS Profile doesn't matches {},El perfil de POS no coincide {}, +POS Invoice is not {},La factura de POS no es {}, +POS Invoice isn't created by user {},La factura de punto de venta no la crea el usuario {}, +Row #{}: {},Fila #{}: {}, +Invalid POS Invoices,Facturas POS no válidas, +Please add the account to root level Company - {},Agregue la cuenta a la empresa de nivel raíz - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Al crear la cuenta para la empresa secundaria {0}, no se encontró la cuenta principal {1}. Cree la cuenta principal en el COA correspondiente", +Account Not Found,Cuenta no encontrada, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Al crear una cuenta para la empresa secundaria {0}, la cuenta principal {1} se encontró como una cuenta contable.", +Please convert the parent account in corresponding child company to a group account.,Convierta la cuenta principal de la empresa secundaria correspondiente en una cuenta de grupo., +Invalid Parent Account,Cuenta principal no válida, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Solo se permite cambiar el nombre a través de la empresa matriz {0}, para evitar discrepancias.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Si {0} {1} cantidades del artículo {2}, el esquema {3} se aplicará al artículo.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Si {0} {1} vale el artículo {2}, el esquema {3} se aplicará al artículo.", +"As the field {0} is enabled, the field {1} is mandatory.","Como el campo {0} está habilitado, el campo {1} es obligatorio.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Como el campo {0} está habilitado, el valor del campo {1} debe ser superior a 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},No se puede entregar el número de serie {0} del artículo {1} ya que está reservado para cumplir con el pedido de cliente {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Pedido de venta {0} tiene reserva para el artículo {1}, solo puede entregar reservado {1} contra {0}.", +{0} Serial No {1} cannot be delivered,No se puede entregar el {0} número de serie {1}, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Fila {0}: el artículo subcontratado es obligatorio para la materia prima {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Como hay suficientes materias primas, la Solicitud de material no es necesaria para Almacén {0}.", +" If you still want to proceed, please enable {0}.","Si aún desea continuar, habilite {0}.", +The item referenced by {0} - {1} is already invoiced,El artículo al que hace referencia {0} - {1} ya está facturado, +Therapy Session overlaps with {0},La sesión de terapia se superpone con {0}, +Therapy Sessions Overlapping,Superposición de sesiones de terapia, +Therapy Plans,Planes de terapia, +"Item Code, warehouse, quantity are required on row {0}","El código de artículo, el almacén y la cantidad son obligatorios en la fila {0}", +Get Items from Material Requests against this Supplier,Obtener artículos de solicitudes de material contra este proveedor, +Enable European Access,Habilitar el acceso europeo, +Creating Purchase Order ...,Creando orden de compra ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Seleccione un proveedor de los proveedores predeterminados de los artículos a continuación. En la selección, se realizará una orden de compra contra los artículos que pertenecen al proveedor seleccionado únicamente.", +Row #{}: You must select {} serial numbers for item {}.,Fila # {}: debe seleccionar {} números de serie para el artículo {}., diff --git a/erpnext/translations/es_ar.csv b/erpnext/translations/es_ar.csv index 9bdcba1195..1fd87236f1 100644 --- a/erpnext/translations/es_ar.csv +++ b/erpnext/translations/es_ar.csv @@ -1,5 +1,4 @@ Employee {0} on Half day on {1},"Empleado {0}, media jornada el día {1}", -Item,Producto, Communication,Comunicacion, Components,Componentes, Cheque Size,Tamaño de Cheque, diff --git a/erpnext/translations/es_gt.csv b/erpnext/translations/es_gt.csv index efd2daaa31..29ce2b8a87 100644 --- a/erpnext/translations/es_gt.csv +++ b/erpnext/translations/es_gt.csv @@ -1,4 +1,3 @@ -Item,Producto, Lead Time Days,Tiempo de ejecución en días, Outstanding,Pendiente, Outstanding Amount,Saldo Pendiente, diff --git a/erpnext/translations/es_pe.csv b/erpnext/translations/es_pe.csv index fdeadce176..108782c8ec 100644 --- a/erpnext/translations/es_pe.csv +++ b/erpnext/translations/es_pe.csv @@ -332,8 +332,6 @@ Sales campaigns.,Campañas de Ventas., Salutation,Saludo, Sample,Muestra, Sanctioned Amount,importe sancionado, -Saturday,Sábado, -Saved,Guardado, Schedule,Horario, Schedule Date,Horario Fecha, Scheduled,Programado, @@ -346,7 +344,6 @@ Securities & Commodity Exchanges,Valores y Bolsas de Productos, Select DocType,Seleccione tipo de documento, Select Fiscal Year...,Seleccione el año fiscal ..., "Selling must be checked, if Applicable For is selected as {0}","Ventas debe ser seleccionado, si se selecciona Aplicable Para como {0}", -Serial #,Serial #, Serial No is mandatory for Item {0},No de serie es obligatoria para el elemento {0}, Serial No {0} does not belong to Delivery Note {1},Número de orden {0} no pertenece a la nota de entrega {1}, Serial No {0} does not belong to Item {1},Número de orden {0} no pertenece al elemento {1}, @@ -412,7 +409,6 @@ Submit Salary Slip,Presentar nómina, Successfully Reconciled,Reconciliado con éxito, Successfully deleted all transactions related to this company!,Eliminado correctamente todas las transacciones relacionadas con esta empresa!, Sum of points for all goals should be 100. It is {0},Suma de puntos para todas las metas debe ser 100. Es {0}, -Sunday,Domingo, Supplier,Proveedores, Supplier Id,Proveedor Id, Supplier Invoice No,Factura del Proveedor No, @@ -513,6 +509,7 @@ cannot be greater than 100,No puede ser mayor que 100, {0}: {1} not found in Invoice Details table,{0}: {1} no se encuentra en el detalle de la factura, Email Settings,Configuración del correo electrónico, Import,Importación, +Parent,Padre, Shop,Tienda, Subsidiary,Filial, There were errors while sending email. Please try again.,"Hubo errores al enviar el correo electrónico. Por favor, inténtelo de nuevo.", diff --git a/erpnext/translations/et.csv b/erpnext/translations/et.csv index fd4d67b901..ba32187c68 100644 --- a/erpnext/translations/et.csv +++ b/erpnext/translations/et.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Ei saa Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',"Ei saa maha arvata, kui kategooria on "Hindamine" või "Vaulation ja kokku"", "Cannot delete Serial No {0}, as it is used in stock transactions","Ei saa kustutada Serial No {0}, sest seda kasutatakse laos tehingute", Cannot enroll more than {0} students for this student group.,Ei saa registreeruda rohkem kui {0} õpilasi tudeng rühm., -Cannot find Item with this barcode,Selle vöötkoodiga üksust ei leitud, Cannot find active Leave Period,Ei leia aktiivset puhkuseperioodi, Cannot produce more Item {0} than Sales Order quantity {1},Ei suuda toota rohkem Punkt {0} kui Sales Order koguse {1}, Cannot promote Employee with status Left,Ei saa edendada Töötajat staatusega Vasak, @@ -690,7 +689,6 @@ Create Variants,Loo variandid, "Create and manage daily, weekly and monthly email digests.","Luua ja hallata päeva, nädala ja kuu email digests.", Create customer quotes,Loo klientide hinnapakkumisi, Create rules to restrict transactions based on values.,"Loo reeglite piirata tehingud, mis põhinevad väärtustel.", -Created By,Loodud, Created {0} scorecards for {1} between: ,Loodud {0} tulemuskaardid {1} vahel:, Creating Company and Importing Chart of Accounts,Ettevõtte loomine ja kontoplaani importimine, Creating Fees,Tasude loomine, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Sest Warehouse on vaja enne Esita, For row {0}: Enter Planned Qty,Rida {0}: sisestage kavandatud kogus, "For {0}, only credit accounts can be linked against another debit entry","Sest {0}, ainult krediitkaardi kontod võivad olla seotud teise vastu deebetkanne", "For {0}, only debit accounts can be linked against another credit entry","Sest {0}, ainult deebetkontode võib olla seotud teise vastu kreeditlausend", -Form View,Vormi vaade, Forum Activity,Foorumi tegevus, Free item code is not selected,Vaba üksuse koodi ei valitud, Freight and Forwarding Charges,Kaubavedu ja Edasitoimetuskulude, @@ -2638,7 +2635,6 @@ Send SMS,Saada SMS, Send mass SMS to your contacts,Saada mass SMS oma kontaktid, Sensitivity,Tundlikkus, Sent,Saadetud, -Serial #,Serial #, Serial No and Batch,Järjekorra number ja partii, Serial No is mandatory for Item {0},Järjekorranumber on kohustuslik Punkt {0}, Serial No {0} does not belong to Batch {1},Seerianumber {0} ei kuulu partii {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Tere tulemast ERPNext, What do you need help with?,Millega sa abi vajad?, What does it do?,Mida ta teeb?, Where manufacturing operations are carried.,Kus tootmistegevus viiakse., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",Lapseettevõtte {0} konto loomisel emakontot {1} ei leitud. Looge vanemkonto vastavas autentsussertis, White,Valge, Wire Transfer,Raha telegraafiülekanne, WooCommerce Products,WooCommerce tooted, @@ -3493,6 +3488,7 @@ Likes,Likes, Merge with existing,Ühendamine olemasoleva, Office,Kontor, Orientation,orientatsioon, +Parent,Lapsevanem, Passive,Passiivne, Payment Failed,makse ebaõnnestus, Percent,Protsenti, @@ -3543,6 +3539,7 @@ Shift,Vahetus, Show {0},Kuva {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Erimärgid, välja arvatud "-", "#", ".", "/", "{" Ja "}" pole sarjade nimetamisel lubatud", Target Details,Sihtkoha üksikasjad, +{0} already has a Parent Procedure {1}.,{0} juba on vanemamenetlus {1}., API,API, Annual,Aastane, Approved,Kinnitatud, @@ -4241,7 +4238,6 @@ Download as JSON,Laadige alla kui Json, End date can not be less than start date,End Date saa olla väiksem kui alguskuupäev, For Default Supplier (Optional),Vaikimisi tarnija (valikuline), From date cannot be greater than To date,Siit kuupäev ei saa olla suurem kui kuupäev, -Get items from,Võta esemed, Group by,Group By, In stock,Laos, Item name,Toote nimi, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Kvaliteetse tagasiside malli parameeter, Quality Goal,Kvaliteetne eesmärk, Monitoring Frequency,Sageduse jälgimine, Weekday,Nädalapäev, -January-April-July-October,Jaanuar-aprill-juuli-oktoober, -Revision and Revised On,Redaktsioon ja parandatud sisse, -Revision,Redaktsioon, -Revised On,Muudetud Sisse, Objectives,Eesmärgid, Quality Goal Objective,Kvaliteedieesmärk, Objective,Objektiivne, @@ -7574,7 +7566,6 @@ Parent Procedure,Vanemamenetlus, Processes,Protsessid, Quality Procedure Process,Kvaliteediprotseduuri protsess, Process Description,Protsessi kirjeldus, -Child Procedure,Lapse protseduur, Link existing Quality Procedure.,Siduge olemasolev kvaliteediprotseduur., Additional Information,Lisainformatsioon, Quality Review Objective,Kvaliteedianalüüsi eesmärk, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Ostutellimuse Trends, Purchase Receipt Trends,Ostutšekk Trends, Purchase Register,Ostu Registreeri, Quotation Trends,Tsitaat Trends, -Quoted Item Comparison,Tsiteeritud Punkt võrdlus, Received Items To Be Billed,Saadud objekte arve, Qty to Order,Kogus tellida, Requested Items To Be Transferred,Taotletud üleantavate, @@ -9091,7 +9081,6 @@ Unmarked days,Märgistamata päevad, Absent Days,Puuduvad päevad, Conditions and Formula variable and example,Tingimused ja valemi muutuja ning näide, Feedback By,Tagasiside autor, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Tootmise sektsioon, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Vaikimisi määratakse kliendinimi sisestatud täisnime järgi. Kui soovite, et klientidele annaks nime a", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Uue müügitehingu loomisel konfigureerige vaikehinnakiri. Kauba hinnad saadakse sellest hinnakirjast., @@ -9692,7 +9681,6 @@ Available Balance,Vaba jääk, Reserved Balance,Reserveeritud saldo, Uncleared Balance,Tühjendamata saldo, Payment related to {0} is not completed,Kontoga {0} seotud makse pole lõpule viidud, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rida nr {}: seerianumber {}. {} on juba üle kantud teise POS-arvega. Valige kehtiv seerianumber., Row #{}: Item Code: {} is not available under warehouse {}.,Rida nr {}: üksuse kood: {} pole laos saadaval {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Rida nr {}: laokogusest ei piisa tootekoodi jaoks: {} lao all {}. Saadaval kogus {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Rida nr {}: tehingu lõpuleviimiseks valige seerianumber ja partii üksuse vastu: {} või eemaldage see., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Kogus {0} laos {1} pole saadaval Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Jätkamiseks lubage aktsiaseadetes Luba negatiivne varu või looge varude sisestus., No Inpatient Record found against patient {0},Patsiendi {0} kohta ei leitud statsionaarset dokumenti, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Statsionaarsete ravimite tellimus {0} patsiendi kohtumise vastu {1} on juba olemas., +Allow In Returns,Luba vastutasuks, +Hide Unavailable Items,Peida kättesaamatud üksused, +Apply Discount on Discounted Rate,Rakenda soodushinnale allahindlust, +Therapy Plan Template,Teraapiakava mall, +Fetching Template Details,Malli üksikasjade toomine, +Linked Item Details,Lingitud üksuse üksikasjad, +Therapy Types,Ravi tüübid, +Therapy Plan Template Detail,Teraapiakava malli üksikasjad, +Non Conformance,Mittevastavus, +Process Owner,Protsessi omanik, +Corrective Action,Parandusmeetmeid, +Preventive Action,Ennetav tegevus, +Problem,Probleem, +Responsible,Vastutav, +Completion By,Valmimine poolt, +Process Owner Full Name,Protsessi omaniku täielik nimi, +Right Index,Parem indeks, +Left Index,Vasak indeks, +Sub Procedure,Alammenetlus, +Passed,Läbitud, +Print Receipt,Prindi kviitung, +Edit Receipt,Redigeeri kviitungit, +Focus on search input,Keskenduge otsingusisendile, +Focus on Item Group filter,Keskenduge üksuserühma filtrile, +Checkout Order / Submit Order / New Order,Kassa tellimus / esitage tellimus / uus tellimus, +Add Order Discount,Lisa tellimuse allahindlus, +Item Code: {0} is not available under warehouse {1}.,Tootekood: {0} pole laos {1} saadaval., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Seerianumbrid pole saadaval kauba {0} laos {1} all. Proovige ladu vahetada., +Fetched only {0} available serial numbers.,Tõmmati ainult {0} saadaolevat seerianumbrit., +Switch Between Payment Modes,Makseviiside vahel vahetamine, +Enter {0} amount.,Sisestage summa {0}., +You don't have enough points to redeem.,Teil pole lunastamiseks piisavalt punkte., +You can redeem upto {0}.,Saate lunastada kuni {0}., +Enter amount to be redeemed.,Sisestage lunastatav summa., +You cannot redeem more than {0}.,Te ei saa lunastada rohkem kui {0}., +Open Form View,Avage vormivaade, +POS invoice {0} created succesfully,POS-arve {0} loodi edukalt, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Laokogusest ei piisa tootekoodi jaoks: {0} lao all {1}. Saadaval kogus {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Seerianumber: {0} on juba üle kantud teise POS-arvega., +Balance Serial No,Tasakaalu seerianumber, +Warehouse: {0} does not belong to {1},Ladu: {0} ei kuulu domeenile {1}, +Please select batches for batched item {0},Valige partii pakendatud üksuse jaoks {0}, +Please select quantity on row {0},Valige real {0} kogus, +Please enter serial numbers for serialized item {0},Sisestage jadatud üksuse {0} seerianumbrid, +Batch {0} already selected.,Pakett {0} on juba valitud., +Please select a warehouse to get available quantities,Saadavate koguste saamiseks valige ladu, +"For transfer from source, selected quantity cannot be greater than available quantity",Allikast ülekandmiseks ei tohi valitud kogus olla suurem kui saadaolev kogus, +Cannot find Item with this Barcode,Selle vöötkoodiga üksust ei leia, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} on kohustuslik. Võib-olla pole valuutavahetuse kirjet loodud {1} - {2} jaoks, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} on esitanud sellega seotud varad. Ostu tagastamise loomiseks peate vara tühistama., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"Seda dokumenti ei saa tühistada, kuna see on seotud esitatud varaga {0}. Jätkamiseks tühistage see.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rida nr {}: seerianumber {} on juba üle kantud teise POS-arvega. Valige kehtiv seerianumber., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rida nr {}: seerianumbrid {} on juba üle kantud teise POS-arvega. Valige kehtiv seerianumber., +Item Unavailable,Üksus pole saadaval, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"Rida nr {}: seerianumbrit {} ei saa tagastada, kuna seda ei tehtud algses arves {}", +Please set default Cash or Bank account in Mode of Payment {},Valige makseviisiks vaikesularaha või pangakonto {}, +Please set default Cash or Bank account in Mode of Payments {},Valige makserežiimis vaikesularaha või pangakonto {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,"Veenduge, et konto {} oleks bilansikonto. Saate muuta vanemkonto bilansikontoks või valida teise konto.", +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,"Veenduge, et konto {} oleks tasuline. Muutke konto tüüp tasutavaks või valige mõni muu konto.", +Row {}: Expense Head changed to {} ,Rida {}: kulu pealkirjaks muudeti {, +because account {} is not linked to warehouse {} ,kuna konto {} pole lingiga seotud {}, +or it is not the default inventory account,või see pole vaikekonto konto, +Expense Head Changed,Kulu pea vahetatud, +because expense is booked against this account in Purchase Receipt {},kuna kulu broneeritakse selle konto arvel ostutšekis {}, +as no Purchase Receipt is created against Item {}. ,kuna üksuse {} vastu ei looda ostutšekki., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,"Seda tehakse raamatupidamise juhtumite jaoks, kui ostuarve järel luuakse ostutšekk", +Purchase Order Required for item {},Üksuse {} jaoks on vajalik ostutellimus, +To submit the invoice without purchase order please set {} ,Arve esitamiseks ilma ostutellimuseta määrake {}, +as {} in {},nagu {}, +Mandatory Purchase Order,Kohustuslik ostutellimus, +Purchase Receipt Required for item {},Üksuse {} jaoks on nõutav ostutšekk, +To submit the invoice without purchase receipt please set {} ,Arve esitamiseks ilma ostutšekita määrake {}, +Mandatory Purchase Receipt,Kohustuslik ostutšekk, +POS Profile {} does not belongs to company {},POS-profiil {} ei kuulu ettevõttele {}, +User {} is disabled. Please select valid user/cashier,Kasutaja {} on keelatud. Valige kehtiv kasutaja / kassapidaja, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Rida nr {}: tagastatava arve {} originaalarve {} on {}., +Original invoice should be consolidated before or along with the return invoice.,Algne arve tuleks koondada enne tagastusarvet või koos sellega., +You can add original invoice {} manually to proceed.,Jätkamiseks saate algse arve {} käsitsi lisada., +Please ensure {} account is a Balance Sheet account. ,"Veenduge, et konto {} oleks bilansikonto.", +You can change the parent account to a Balance Sheet account or select a different account.,Saate muuta vanemkonto bilansikontoks või valida teise konto., +Please ensure {} account is a Receivable account. ,"Veenduge, et konto {} oleks saadaolev konto.", +Change the account type to Receivable or select a different account.,Muutke konto tüüp olekuks Saada või valige mõni teine konto., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},"{} ei saa tühistada, kuna teenitud lojaalsuspunktid on lunastatud. Kõigepealt tühistage {} Ei {}", +already exists,juba eksisteerib, +POS Closing Entry {} against {} between selected period,POSi sulgemiskanne {} vastu {} valitud perioodi vahel, +POS Invoice is {},POS-arve on {}, +POS Profile doesn't matches {},POS-profiil ei ühti {}, +POS Invoice is not {},POS-arve pole {}, +POS Invoice isn't created by user {},POS-arvet ei loonud kasutaja {}, +Row #{}: {},Rida nr {}: {}, +Invalid POS Invoices,Vale POS-arve, +Please add the account to root level Company - {},Lisage konto juurtaseme ettevõttele - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",Lapseettevõttele {0} konto loomisel ei leitud vanemkontot {1}. Looge vanemakonto vastavas COA-s, +Account Not Found,Kontot ei leitud, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",Lapseettevõttele {0} konto loomisel leiti vanemkonto {1} pearaamatu kontona., +Please convert the parent account in corresponding child company to a group account.,Teisendage vastava alaettevõtte vanemkonto grupikontoks., +Invalid Parent Account,Vale vanemakonto, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",Selle erinevuse vältimiseks on selle ümbernimetamine lubatud ainult emaettevõtte {0} kaudu., +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.",{0} {1} üksuse koguste {2} kasutamisel rakendatakse üksusele skeemi {3}., +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Kui {0} {1} väärt üksust {2}, rakendatakse üksusele skeemi {3}.", +"As the field {0} is enabled, the field {1} is mandatory.","Kuna väli {0} on lubatud, on väli {1} kohustuslik.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Kuna väli {0} on lubatud, peaks välja {1} väärtus olema suurem kui 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Üksuse {0} seerianumbrit {1} ei saa edastada, kuna see on reserveeritud müügitellimuse täitmiseks {2}", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Müügitellimusel {0} on üksuse {1} reservatsioon, saate reserveeritud {1} kohale toimetada ainult vastu {0}.", +{0} Serial No {1} cannot be delivered,{0} Seerianumbrit {1} ei saa edastada, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Rida {0}: allhankeüksus on tooraine jaoks kohustuslik {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Kuna toorainet on piisavalt, pole Ladu {0} vaja materjalitaotlust.", +" If you still want to proceed, please enable {0}.","Kui soovite siiski jätkata, lubage {0}.", +The item referenced by {0} - {1} is already invoiced,"Üksus, millele viitab {0} - {1}, on juba arvega", +Therapy Session overlaps with {0},Teraapiaseanss kattub rakendusega {0}, +Therapy Sessions Overlapping,Teraapiaseansid kattuvad, +Therapy Plans,Teraapiakavad, +"Item Code, warehouse, quantity are required on row {0}","Real {0} on nõutav kaubakood, ladu ja kogus", +Get Items from Material Requests against this Supplier,Hankige esemeid selle tarnija vastu esitatud materjalitaotlustest, +Enable European Access,Luba Euroopa juurdepääs, +Creating Purchase Order ...,Ostutellimuse loomine ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",Valige allpool olevate üksuste vaiketarnijatest tarnija. Valiku alusel tehakse ostutellimus ainult valitud tarnijale kuuluvate kaupade kohta., +Row #{}: You must select {} serial numbers for item {}.,Rida nr {}: peate valima {} üksuse seerianumbrid {}., diff --git a/erpnext/translations/fa.csv b/erpnext/translations/fa.csv index 797389449a..4a7c979499 100644 --- a/erpnext/translations/fa.csv +++ b/erpnext/translations/fa.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',نمی Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',نمی توانید کسر وقتی دسته است برای ارزش گذاری "یا" Vaulation و مجموع:, "Cannot delete Serial No {0}, as it is used in stock transactions",نمی توانید حذف سریال نه {0}، آن را به عنوان در معاملات سهام مورد استفاده, Cannot enroll more than {0} students for this student group.,نمی توانید بیش از {0} دانش آموزان برای این گروه از دانشجویان ثبت نام., -Cannot find Item with this barcode,با این بارکد نمی توان مورد را یافت, Cannot find active Leave Period,می توانید دوره فعال خروج را پیدا نکنید, Cannot produce more Item {0} than Sales Order quantity {1},می تواند مورد دیگر {0} از مقدار سفارش فروش تولید نمی {1}, Cannot promote Employee with status Left,کارمند با وضعیت چپ را نمیتوان ارتقا داد, @@ -690,7 +689,6 @@ Create Variants,ایجاد انواع, "Create and manage daily, weekly and monthly email digests.",ایجاد و مدیریت روزانه، هفتگی و ماهانه هضم ایمیل., Create customer quotes,درست به نقل از مشتری, Create rules to restrict transactions based on values.,ایجاد قوانین برای محدود کردن معاملات بر اساس ارزش., -Created By,خلق شده توسط, Created {0} scorecards for {1} between: ,{0} کارت امتیازی برای {1} ایجاد شده بین:, Creating Company and Importing Chart of Accounts,ایجاد شرکت و وارد کردن نمودار حساب, Creating Fees,ایجاد هزینه ها, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,ذخیره سازی قبل از ارسا For row {0}: Enter Planned Qty,برای ردیف {0}: تعداد برنامه ریزی شده را وارد کنید, "For {0}, only credit accounts can be linked against another debit entry",برای {0}، تنها حساب های اعتباری می تواند در مقابل ورود بدهی دیگر مرتبط, "For {0}, only debit accounts can be linked against another credit entry",برای {0}، تنها حساب های بانکی را می توان در برابر ورود اعتباری دیگر مرتبط, -Form View,فرم مشاهده, Forum Activity,فعالیت انجمن, Free item code is not selected,کد مورد رایگان انتخاب نشده است, Freight and Forwarding Charges,حمل و نقل و حمل و نقل اتهامات, @@ -2638,7 +2635,6 @@ Send SMS,ارسال اس ام اس, Send mass SMS to your contacts,ارسال اس ام اس انبوه به مخاطبین خود, Sensitivity,حساسیت, Sent,فرستاده, -Serial #,سریال #, Serial No and Batch,سریال نه و دسته ای, Serial No is mandatory for Item {0},سریال بدون برای مورد الزامی است {0}, Serial No {0} does not belong to Batch {1},شماره سریال {0} به دسته {1} تعلق ندارد, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,به ERPNext خوش آمدید, What do you need help with?,به چه نیاز دارید کمک کنیم؟, What does it do?,چه کاری انجام میدهد؟, Where manufacturing operations are carried.,که در آن عملیات ساخت در حال انجام شده است., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",هنگام ایجاد حساب کاربری برای شرکت کودک {0} ، حساب والدین {1} یافت نشد. لطفاً حساب والدین را در COA مربوطه ایجاد کنید, White,سفید, Wire Transfer,انتقال سیم, WooCommerce Products,محصولات WooCommerce, @@ -3493,6 +3488,7 @@ Likes,دوست دارد, Merge with existing,ادغام با موجود, Office,دفتر, Orientation,گرایش, +Parent,والدین, Passive,غیر فعال, Payment Failed,پرداخت ناموفق, Percent,در صد, @@ -3543,6 +3539,7 @@ Shift,تغییر مکان, Show {0},نمایش {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",کاراکترهای خاص به جز "-" ، "#" ، "." ، "/" ، "{" و "}" در سریال نامگذاری مجاز نیستند, Target Details,جزئیات هدف, +{0} already has a Parent Procedure {1}.,{0} در حال حاضر یک روش والدین {1} دارد., API,API, Annual,سالیانه, Approved,تایید, @@ -4241,7 +4238,6 @@ Download as JSON,به عنوان JSON بارگیری کنید, End date can not be less than start date,تاریخ پایان نمی تواند کمتر از تاریخ شروع, For Default Supplier (Optional),برای تامین کننده پیش فرض (اختیاری), From date cannot be greater than To date,از تاریخ نمی تواند بیشتر از تاریخ باشد, -Get items from,گرفتن اقلام از, Group by,گروه توسط, In stock,در انبار, Item name,نام آیتم, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,پارامتر قالب بازخورد کی Quality Goal,هدف کیفیت, Monitoring Frequency,فرکانس نظارت, Weekday,روز هفته, -January-April-July-October,ژانویه-آوریل-جولای-اکتبر, -Revision and Revised On,بازبینی و اصلاح شده در, -Revision,تجدید نظر, -Revised On,اصلاح شده در, Objectives,اهداف, Quality Goal Objective,هدف کیفیت هدف, Objective,هدف، واقعگرایانه, @@ -7574,7 +7566,6 @@ Parent Procedure,رویه والدین, Processes,مراحل, Quality Procedure Process,فرایند روش کیفیت, Process Description,شرح فرایند, -Child Procedure,رویه کودک, Link existing Quality Procedure.,رویه کیفیت موجود را پیوند دهید., Additional Information,اطلاعات اضافی, Quality Review Objective,هدف مرور کیفیت, @@ -8557,7 +8548,6 @@ Purchase Order Trends,خرید سفارش روند, Purchase Receipt Trends,روند رسید خرید, Purchase Register,خرید ثبت نام, Quotation Trends,روند نقل قول, -Quoted Item Comparison,مورد نقل مقایسه, Received Items To Be Billed,دریافت گزینه هایی که صورتحساب, Qty to Order,تعداد سفارش, Requested Items To Be Transferred,آیتم ها درخواست می شود منتقل, @@ -9091,7 +9081,6 @@ Unmarked days,روزهای بدون علامت, Absent Days,روزهای غایب, Conditions and Formula variable and example,شرایط و متغیر فرمول و مثال, Feedback By,بازخورد توسط, -MTNG-.YYYY.-.MM.-.DD.-,MTNG -. آره. -. MM. -. DD - -, Manufacturing Section,بخش ساخت, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",به طور پیش فرض ، نام مشتری بر اساس نام کامل وارد شده تنظیم می شود. اگر می خواهید مشتریان توسط الف نامگذاری شوند, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,هنگام ایجاد یک معامله جدید فروش ، لیست قیمت پیش فرض را پیکربندی کنید. قیمت اقلام از این لیست قیمت دریافت می شود., @@ -9692,7 +9681,6 @@ Available Balance,موجودی موجود, Reserved Balance,موجودی رزرو شده, Uncleared Balance,تراز نامشخص, Payment related to {0} is not completed,پرداخت مربوط به {0} تکمیل نشده است, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,ردیف # {}: شماره سریال {}. {} قبلاً به فاکتور POS دیگری معامله شده است. لطفا شماره سریال معتبر را انتخاب کنید., Row #{}: Item Code: {} is not available under warehouse {}.,ردیف # {}: کد مورد: {} در انبار موجود نیست {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,ردیف # {}: مقدار سهام برای کد مورد کافی نیست: {} زیر انبار {}. مقدار موجود {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,ردیف شماره {}: لطفاً شماره سریال و دسته ای از موارد را انتخاب کنید: {} یا آن را حذف کنید تا معامله کامل شود., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},مقدار برای {0} در ا Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,لطفاً اجازه دهید سهام منفی را در تنظیمات سهام فعال کنید یا ورود سهام را برای ادامه ایجاد کنید., No Inpatient Record found against patient {0},هیچ سابقه بستری در مورد بیمار یافت نشد {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,یک دستور دارویی در بیماران بستری {0} علیه ملاقات با بیمار {1} از قبل موجود است., +Allow In Returns,در بازگشت مجاز است, +Hide Unavailable Items,موارد موجود را پنهان کنید, +Apply Discount on Discounted Rate,تخفیف را با نرخ تخفیف اعمال کنید, +Therapy Plan Template,الگوی طرح درمانی, +Fetching Template Details,واکشی جزئیات الگو, +Linked Item Details,جزئیات مورد پیوند داده شده, +Therapy Types,انواع درمان, +Therapy Plan Template Detail,جزئیات الگوی طرح درمانی, +Non Conformance,عدم انطباق, +Process Owner,صاحب فرآیند, +Corrective Action,اقدام اصلاحی, +Preventive Action,اقدام پیشگیرانه, +Problem,مسئله, +Responsible,مسئول, +Completion By,تکمیل توسط, +Process Owner Full Name,نام کامل مالک فرآیند, +Right Index,نمایه درست, +Left Index,شاخص چپ, +Sub Procedure,روش فرعی, +Passed,گذشت, +Print Receipt,رسید چاپ, +Edit Receipt,رسید را ویرایش کنید, +Focus on search input,بر ورودی جستجو تمرکز کنید, +Focus on Item Group filter,روی فیلتر گروه مورد تمرکز کنید, +Checkout Order / Submit Order / New Order,سفارش پرداخت / ارسال سفارش / سفارش جدید, +Add Order Discount,تخفیف سفارش را اضافه کنید, +Item Code: {0} is not available under warehouse {1}.,کد مورد: {0} در انبار موجود نیست {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,شماره های سریال برای مورد {0} زیر انبار {1} در دسترس نیست. لطفاً انبار را تغییر دهید., +Fetched only {0} available serial numbers.,فقط {0} شماره سریال موجود دریافت شد., +Switch Between Payment Modes,جابجایی بین حالت های پرداخت, +Enter {0} amount.,{0} مقدار را وارد کنید., +You don't have enough points to redeem.,شما امتیاز کافی برای استفاده ندارید., +You can redeem upto {0}.,می توانید تا {0} استفاده کنید., +Enter amount to be redeemed.,مبلغی را که باید استفاده شود وارد کنید., +You cannot redeem more than {0}.,نمی توانید بیش از {0} استفاده کنید., +Open Form View,نمای فرم را باز کنید, +POS invoice {0} created succesfully,فاکتور POS {0} با موفقیت ایجاد شد, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,مقدار سهام برای کد مورد کافی نیست: {0} زیر انبار {1}. مقدار موجود {2}., +Serial No: {0} has already been transacted into another POS Invoice.,شماره سریال: {0} قبلاً به فاکتور POS دیگری معامله شده است., +Balance Serial No,شماره سریال موجودی, +Warehouse: {0} does not belong to {1},انبار: {0} متعلق به {1} نیست, +Please select batches for batched item {0},لطفاً دسته ها را برای مورد دسته ای انتخاب کنید {0}, +Please select quantity on row {0},لطفاً مقدار را در ردیف {0} انتخاب کنید, +Please enter serial numbers for serialized item {0},لطفا شماره سریال را برای مورد سریال وارد کنید {0}, +Batch {0} already selected.,دسته ای {0} از قبل انتخاب شده است., +Please select a warehouse to get available quantities,لطفاً یک انبار را برای دریافت مقادیر موجود انتخاب کنید, +"For transfer from source, selected quantity cannot be greater than available quantity",برای انتقال از منبع ، مقدار انتخاب شده نمی تواند بیشتر از مقدار موجود باشد, +Cannot find Item with this Barcode,با این بارکد نمی توانید مورد را پیدا کنید, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} اجباری است. شاید سابقه تبدیل ارز برای {1} تا {2} ایجاد نشده باشد, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} دارایی های مرتبط با آن را ارسال کرده است. برای ایجاد بازده خرید ، باید دارایی ها را لغو کنید., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,نمی توان این سند را لغو کرد زیرا با دارایی ارسالی {0} مرتبط است. لطفاً برای ادامه آن را لغو کنید., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,ردیف شماره {}: شماره سریال {} قبلاً به فاکتور POS دیگری انتقال داده شده است. لطفا شماره سریال معتبر را انتخاب کنید., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,ردیف # {}: شماره سریال. {} قبلاً به یک فاکتور POS دیگر تبدیل شده است. لطفا شماره سریال معتبر را انتخاب کنید., +Item Unavailable,مورد موجود نیست, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},ردیف # {}: شماره سریال {} قابل بازگشت نیست زیرا در فاکتور اصلی معامله نشده است {}, +Please set default Cash or Bank account in Mode of Payment {},لطفاً پول نقد یا حساب بانکی پیش فرض را در روش پرداخت تنظیم کنید {}, +Please set default Cash or Bank account in Mode of Payments {},لطفاً پول نقد یا حساب بانکی پیش فرض را در حالت پرداخت تنظیم کنید {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,لطفاً اطمینان حاصل کنید که {} حساب یک حساب ترازنامه است. می توانید حساب والد را به یک حساب ترازنامه تغییر دهید یا یک حساب دیگر انتخاب کنید., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,لطفاً اطمینان حاصل کنید که حساب {} یک حساب قابل پرداخت است. نوع حساب را به Payable تغییر دهید یا حساب دیگری را انتخاب کنید., +Row {}: Expense Head changed to {} ,ردیف {}: سر هزینه به {} تغییر یافت, +because account {} is not linked to warehouse {} ,زیرا حساب {} به انبار پیوند ندارد {}, +or it is not the default inventory account,یا حساب موجودی پیش فرض نیست, +Expense Head Changed,سر هزینه تغییر کرد, +because expense is booked against this account in Purchase Receipt {},زیرا هزینه در قبض خرید در مقابل این حساب رزرو شده است {}, +as no Purchase Receipt is created against Item {}. ,چون هیچ رسید خریدی در برابر مورد {} ایجاد نمی شود., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,این کار برای رسیدگی به حسابداری در مواردی است که پس از فاکتور خرید ، رسید خرید ایجاد می شود, +Purchase Order Required for item {},سفارش خرید برای مورد مورد نیاز است {}, +To submit the invoice without purchase order please set {} ,برای ارسال فاکتور بدون سفارش خرید لطفاً {}, +as {} in {},به عنوان {} در {}, +Mandatory Purchase Order,سفارش خرید اجباری, +Purchase Receipt Required for item {},رسید خرید برای مورد نیاز است {}, +To submit the invoice without purchase receipt please set {} ,برای ارسال فاکتور بدون رسید خرید لطفاً تنظیم کنید {}, +Mandatory Purchase Receipt,رسید خرید اجباری, +POS Profile {} does not belongs to company {},نمایه POS {} متعلق به شرکت نیست {}, +User {} is disabled. Please select valid user/cashier,کاربر {} غیرفعال است. لطفاً کاربر / صندوقدار معتبر را انتخاب کنید, +Row #{}: Original Invoice {} of return invoice {} is {}. ,ردیف # {}: فاکتور اصلی {} فاکتور برگشت {} {} است., +Original invoice should be consolidated before or along with the return invoice.,فاکتور اصلی باید قبل یا همراه با فاکتور برگشت ادغام شود., +You can add original invoice {} manually to proceed.,برای ادامه کار می توانید فاکتور اصلی را {} به صورت دستی اضافه کنید., +Please ensure {} account is a Balance Sheet account. ,لطفاً اطمینان حاصل کنید که {} حساب یک حساب ترازنامه است., +You can change the parent account to a Balance Sheet account or select a different account.,می توانید حساب والد را به یک حساب ترازنامه تغییر دهید یا یک حساب دیگر انتخاب کنید., +Please ensure {} account is a Receivable account. ,لطفاً مطمئن شوید که {} حساب یک حساب قابل دریافت است., +Change the account type to Receivable or select a different account.,نوع حساب را به قابل دریافت تغییر دهید یا حساب دیگری را انتخاب کنید., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},از زمان استفاده از امتیازات وفاداری کسب شده ، {} قابل لغو نیست. ابتدا {} نه {} را لغو کنید, +already exists,درحال حاضر وجود دارد, +POS Closing Entry {} against {} between selected period,ورودی بسته شدن POS بین دوره انتخاب شده {} در برابر {}, +POS Invoice is {},فاکتور POS {} است, +POS Profile doesn't matches {},نمایه POS مطابقت ندارد {}, +POS Invoice is not {},فاکتور POS {} نیست, +POS Invoice isn't created by user {},فاکتور POS توسط کاربر ایجاد نشده است {}, +Row #{}: {},ردیف شماره {}: {}, +Invalid POS Invoices,فاکتورهای POS نامعتبر است, +Please add the account to root level Company - {},لطفاً حساب را به سطح root شرکت اضافه کنید - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",هنگام ایجاد حساب برای شرکت کودک {0} ، حساب والد {1} پیدا نشد. لطفاً حساب والدین را در COA مربوطه ایجاد کنید, +Account Not Found,حساب یافت نشد, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",هنگام ایجاد حساب برای شرکت کودک {0} ، حساب والد {1} به عنوان یک حساب دفتر پیدا شد., +Please convert the parent account in corresponding child company to a group account.,لطفاً حساب والدین را در شرکت مربوط به فرزند به یک حساب گروهی تبدیل کنید., +Invalid Parent Account,حساب والد نامعتبر است, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",تغییر نام آن فقط از طریق شرکت مادر {0} مجاز است تا از عدم تطابق جلوگیری شود., +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.",اگر {0} {1} مقادیر مورد {2} داشته باشید ، طرح {3} روی مورد اعمال می شود., +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.",اگر {0} {1} مورد موردی را داشته باشید {2} ، طرح {3} روی مورد اعمال می شود., +"As the field {0} is enabled, the field {1} is mandatory.",همانطور که قسمت {0} فعال است ، قسمت {1} اجباری است., +"As the field {0} is enabled, the value of the field {1} should be more than 1.",همانطور که قسمت {0} فعال است ، مقدار فیلد {1} باید بیش از 1 باشد., +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},نمی توان شماره سریال {0} مورد {1} را تحویل داد زیرا برای تکمیل سفارش فروش {2} محفوظ است, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.",سفارش فروش {0} برای مورد رزرو دارد {1} ، شما فقط می توانید رزرو شده {1} را در مقابل {0} تحویل دهید., +{0} Serial No {1} cannot be delivered,{0} شماره سریال {1} تحویل داده نمی شود, +Row {0}: Subcontracted Item is mandatory for the raw material {1},ردیف {0}: مورد پیمانکاری فرعی برای ماده اولیه اجباری است {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.",از آنجا که مواد اولیه کافی وجود دارد ، درخواست مواد برای انبار {0} لازم نیست., +" If you still want to proceed, please enable {0}.",اگر هنوز می خواهید ادامه دهید ، لطفاً {0} را فعال کنید., +The item referenced by {0} - {1} is already invoiced,مورد ارجاع شده توسط {0} - {1} قبلاً فاکتور شده است, +Therapy Session overlaps with {0},جلسه درمانی با {0} همپوشانی دارد, +Therapy Sessions Overlapping,جلسات درمانی با هم تداخل دارند, +Therapy Plans,برنامه های درمانی, +"Item Code, warehouse, quantity are required on row {0}",کد مورد ، انبار ، مقدار در ردیف {0} لازم است, +Get Items from Material Requests against this Supplier,مواردی را از درخواستهای ماده در برابر این تأمین کننده دریافت کنید, +Enable European Access,دسترسی اروپا را فعال کنید, +Creating Purchase Order ...,در حال ایجاد سفارش خرید ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",از تامین کنندگان پیش فرض موارد زیر یک تأمین کننده انتخاب کنید. هنگام انتخاب ، سفارش خرید فقط در مورد کالاهای متعلق به تنها تامین کننده انتخاب شده انجام می شود., +Row #{}: You must select {} serial numbers for item {}.,ردیف شماره {}: شما باید {} شماره سریال را برای مورد {} انتخاب کنید., diff --git a/erpnext/translations/fi.csv b/erpnext/translations/fi.csv index c04885b6c3..29eb56702d 100644 --- a/erpnext/translations/fi.csv +++ b/erpnext/translations/fi.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',vähenny Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',"Ei voi vähentää, kun kategoria on "arvostus" tai "Vaulation ja Total"", "Cannot delete Serial No {0}, as it is used in stock transactions","Sarjanumeroa {0} ei voida poistaa, koska sitä on käytetty varastotapahtumissa", Cannot enroll more than {0} students for this student group.,Ei voi ilmoittautua enintään {0} opiskelijat tälle opiskelijaryhmälle., -Cannot find Item with this barcode,Tuotetta ei löydy tällä viivakoodilla, Cannot find active Leave Period,Ei ole aktiivista lomaaikaa, Cannot produce more Item {0} than Sales Order quantity {1},ei voi valmistaa suurempaa määrää tuotteita {0} kuin myyntitilauksen määrä {1}, Cannot promote Employee with status Left,Et voi edistää Työntekijän asemaa vasemmalla, @@ -690,7 +689,6 @@ Create Variants,tee malleja, "Create and manage daily, weekly and monthly email digests.","tee ja hallitse (päivä-, viikko- ja kuukausi) sähköpostitiedotteita", Create customer quotes,Luoda asiakkaalle lainausmerkit, Create rules to restrict transactions based on values.,tee tapahtumien arvoon perustuvia rajoitussääntöjä, -Created By,tekijä, Created {0} scorecards for {1} between: ,Luotu {0} tuloskartan {1} välillä:, Creating Company and Importing Chart of Accounts,Yrityksen luominen ja tilikartan tuominen, Creating Fees,Maksujen luominen, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Varastoon -kenttä vaaditaan ennen vahvi For row {0}: Enter Planned Qty,Rivi {0}: Syötä suunniteltu määrä, "For {0}, only credit accounts can be linked against another debit entry","{0}, vain kredit tili voidaan kohdistaa debet kirjaukseen", "For {0}, only debit accounts can be linked against another credit entry","{0}, vain debet tili voidaan kohdistaa kredit kirjaukseen", -Form View,Lomakenäkymä, Forum Activity,Foorumin toiminta, Free item code is not selected,Ilmaista tuotekoodia ei ole valittu, Freight and Forwarding Charges,rahdin ja huolinnan maksut, @@ -2638,7 +2635,6 @@ Send SMS,Lähetä tekstiviesti, Send mass SMS to your contacts,Lähetä massatekstiviesti yhteystiedoillesi, Sensitivity,Herkkyys, Sent,Lähetetty, -Serial #,Sarja #, Serial No and Batch,Sarjanumero ja erä, Serial No is mandatory for Item {0},Sarjanumero vaaditaan tuotteelle {0}, Serial No {0} does not belong to Batch {1},Sarjanumero {0} ei kuulu erään {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Tervetuloa ERPNext - järjestelmään, What do you need help with?,Minkä kanssa tarvitset apua?, What does it do?,Mitä tämä tekee?, Where manufacturing operations are carried.,Missä valmistus tapahtuu, -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Luodessaan tiliä lastenyritykselle {0}, emotiltiä {1} ei löytynyt. Luo vanhemman tili vastaavaan todistukseen", White,Valkoinen, Wire Transfer,Sähköinen tilisiirto, WooCommerce Products,WooCommerce-tuotteet, @@ -3493,6 +3488,7 @@ Likes,Tykkäykset, Merge with existing,Yhdistä nykyiseen, Office,Toimisto, Orientation,Suuntautuminen, +Parent,Vanhempi, Passive,Passiivinen, Payment Failed,Maksu epäonnistui, Percent,prosentti, @@ -3543,6 +3539,7 @@ Shift,Siirtää, Show {0},Näytä {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Erikoismerkit paitsi "-", "#", ".", "/", "{" Ja "}" eivät ole sallittuja nimeämissarjoissa", Target Details,Kohteen yksityiskohdat, +{0} already has a Parent Procedure {1}.,{0}: llä on jo vanhempainmenettely {1}., API,API, Annual,Vuotuinen, Approved,hyväksytty, @@ -4241,7 +4238,6 @@ Download as JSON,Lataa nimellä JSON, End date can not be less than start date,päättymispäivä ei voi olla ennen aloituspäivää, For Default Supplier (Optional),Oletuksena toimittaja (valinnainen), From date cannot be greater than To date,Alkaen päivä ei voi olla suurempi kuin päättymispäivä, -Get items from,Hae nimikkeet, Group by,ryhmän, In stock,Varastossa, Item name,Nimikkeen nimi, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Laadun palautteen malliparametri, Quality Goal,Laadullinen tavoite, Monitoring Frequency,Monitorointitaajuus, Weekday,arkipäivä, -January-April-July-October,Tammi-huhtikuu-heinäkuun ja lokakuun, -Revision and Revised On,Tarkistettu ja muutettu päälle, -Revision,tarkistus, -Revised On,Tarkistettu päälle, Objectives,tavoitteet, Quality Goal Objective,Laadukas tavoite, Objective,Tavoite, @@ -7574,7 +7566,6 @@ Parent Procedure,Vanhempien menettely, Processes,Prosessit, Quality Procedure Process,Laatumenettelyprosessi, Process Description,Prosessin kuvaus, -Child Procedure,Lapsen menettely, Link existing Quality Procedure.,Yhdistä olemassa oleva laatumenettely., Additional Information,lisäinformaatio, Quality Review Objective,Laadun arvioinnin tavoite, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Ostotilausten kehitys, Purchase Receipt Trends,Saapumisten kehitys, Purchase Register,Osto Rekisteröidy, Quotation Trends,Tarjousten kehitys, -Quoted Item Comparison,Noteeratut Kohta Vertailu, Received Items To Be Billed,Saivat kohteet laskuttamat, Qty to Order,Tilattava yksikkömäärä, Requested Items To Be Transferred,siirrettävät pyydetyt tuotteet, @@ -9091,7 +9081,6 @@ Unmarked days,Merkitsemättömät päivät, Absent Days,Poissa olevat päivät, Conditions and Formula variable and example,Ehdot ja kaavan muuttuja ja esimerkki, Feedback By,Palaute, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Valmistusosa, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",Asiakkaan nimi asetetaan oletusarvoisesti syötetyn koko nimen mukaan. Jos haluat asiakkaiden nimeävän a, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,"Määritä oletushinta, kun luot uutta myyntitapahtumaa. Tuotteiden hinnat haetaan tästä hinnastosta.", @@ -9692,7 +9681,6 @@ Available Balance,Käytettävissä oleva saldo, Reserved Balance,Varattu saldo, Uncleared Balance,Tyhjentämätön saldo, Payment related to {0} is not completed,Kohteeseen {0} liittyvä maksu ei ole suoritettu, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rivi # {}: Sarjanumero {}. {} on jo suoritettu toiseen POS-laskuun. Valitse kelvollinen sarjanumero., Row #{}: Item Code: {} is not available under warehouse {}.,Rivi # {}: Tuotekoodi: {} ei ole käytettävissä varastossa {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Rivi # {}: varastomäärä ei riitä tuotekoodille: {} varaston alla {}. Saatavilla oleva määrä {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Rivi # {}: Valitse sarjanumero ja erä kohteelle: {} tai poista se suorittaaksesi tapahtuman., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Määrä ei ole käytettävissä Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Ota Salli negatiivinen varastossa -osake käyttöön tai luo varastotiedot jatkaaksesi., No Inpatient Record found against patient {0},Potilasta {0} vastaan ei löytynyt sairaalatietoja, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Sairaalan lääkemääräys {0} potilastapaamista vastaan {1} on jo olemassa., +Allow In Returns,Salli vastineeksi, +Hide Unavailable Items,Piilota käytettävissä olevat kohteet, +Apply Discount on Discounted Rate,Käytä alennusta alennettuun hintaan, +Therapy Plan Template,Hoitosuunnitelman malli, +Fetching Template Details,Haetaan mallin yksityiskohtia, +Linked Item Details,Linkitetyn tuotteen tiedot, +Therapy Types,Hoitotyypit, +Therapy Plan Template Detail,Hoitosuunnitelman malli, +Non Conformance,Vaatimustenvastaisuus, +Process Owner,Prosessin omistaja, +Corrective Action,Korjaava toimenpide, +Preventive Action,Ennaltaehkäisevä toiminta, +Problem,Ongelma, +Responsible,Vastuullinen, +Completion By,Valmistuminen, +Process Owner Full Name,Prosessin omistajan koko nimi, +Right Index,Oikea hakemisto, +Left Index,Vasen hakemisto, +Sub Procedure,Alimenettely, +Passed,Hyväksytty, +Print Receipt,Tulosta kuitti, +Edit Receipt,Muokkaa kuittiä, +Focus on search input,Keskity hakusyöttöön, +Focus on Item Group filter,Keskity tuoteryhmän suodattimeen, +Checkout Order / Submit Order / New Order,Kassatilaus / Lähetä tilaus / Uusi tilaus, +Add Order Discount,Lisää tilausalennus, +Item Code: {0} is not available under warehouse {1}.,Tuotekoodi: {0} ei ole käytettävissä varastossa {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Sarjanumerot eivät ole käytettävissä tuotteelle {0} varaston alla {1}. Yritä vaihtaa varastoa., +Fetched only {0} available serial numbers.,Haettu vain {0} käytettävissä olevaa sarjanumeroa., +Switch Between Payment Modes,Vaihda maksutapojen välillä, +Enter {0} amount.,Anna summa {0}., +You don't have enough points to redeem.,Sinulla ei ole tarpeeksi pisteitä lunastettavaksi., +You can redeem upto {0}.,Voit lunastaa jopa {0}., +Enter amount to be redeemed.,Syötä lunastettava summa., +You cannot redeem more than {0}.,Et voi lunastaa enempää kuin {0}., +Open Form View,Avaa lomakkeenäkymä, +POS invoice {0} created succesfully,POS-lasku {0} luotu onnistuneesti, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Varastomäärä ei riitä tuotekoodiin: {0} varaston alla {1}. Saatavilla oleva määrä {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Sarjanumero: {0} on jo tehty toiseen POS-laskuun., +Balance Serial No,Saldo Sarjanumero, +Warehouse: {0} does not belong to {1},Varasto: {0} ei kuulu {1}, +Please select batches for batched item {0},Valitse erät eräkohtaiselle tuotteelle {0}, +Please select quantity on row {0},Valitse määrä riviltä {0}, +Please enter serial numbers for serialized item {0},Anna sarjanumero sarjanumerolle {0}, +Batch {0} already selected.,Erä {0} on jo valittu., +Please select a warehouse to get available quantities,Valitse varasto saadaksesi käytettävissä olevat määrät, +"For transfer from source, selected quantity cannot be greater than available quantity",Lähteestä siirtoa varten valittu määrä ei voi olla suurempi kuin käytettävissä oleva määrä, +Cannot find Item with this Barcode,Tuotetta ei löydy tällä viivakoodilla, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} on pakollinen. Ehkä valuutanvaihtotietuetta ei ole luotu käyttäjille {1} - {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,"{} on lähettänyt siihen linkitetyn sisällön. Sinun on peruttava varat, jotta voit luoda ostotuoton.", +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"Tätä asiakirjaa ei voi peruuttaa, koska se on linkitetty lähetettyyn sisältöön {0}. Peruuta se jatkaaksesi.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rivi # {}: Sarjanumero {} on jo tehty toiseen POS-laskuun. Valitse voimassa oleva sarjanumero., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rivi # {}: Sarjanumerot {} on jo tehty toiseen POS-laskuun. Valitse voimassa oleva sarjanumero., +Item Unavailable,Kohde ei ole käytettävissä, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"Rivi # {}: Sarjanumeroa {} ei voi palauttaa, koska sitä ei käsitelty alkuperäisessä laskussa {}", +Please set default Cash or Bank account in Mode of Payment {},Määritä oletusarvoinen käteis- tai pankkitili Maksutilassa {}, +Please set default Cash or Bank account in Mode of Payments {},Aseta oletusarvoinen käteis- tai pankkitili Maksutilassa {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,"Varmista, että {} -tili on tase-tili. Voit vaihtaa päätilin tase-tiliksi tai valita toisen tilin.", +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,"Varmista, että {} -tili on maksettava tili. Muuta tilityypiksi Maksettava tai valitse toinen tili.", +Row {}: Expense Head changed to {} ,Rivi {}: Kulupää vaihdettu arvoksi {}, +because account {} is not linked to warehouse {} ,koska tiliä {} ei ole linkitetty varastoon {}, +or it is not the default inventory account,tai se ei ole oletusvarastotili, +Expense Head Changed,Kulupää vaihdettu, +because expense is booked against this account in Purchase Receipt {},koska kulu kirjataan tätä tiliä vastaan ostokuittiin {}, +as no Purchase Receipt is created against Item {}. ,koska tuotteelle {} ei luoda ostokuittiä., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,"Tämä tehdään kirjanpidon hoitamiseksi tapauksissa, joissa ostokuitti luodaan ostolaskun jälkeen", +Purchase Order Required for item {},Tuotteen {} ostotilaus vaaditaan, +To submit the invoice without purchase order please set {} ,"Jos haluat lähettää laskun ilman ostotilausta, aseta {}", +as {} in {},kuten {} kohteessa {}, +Mandatory Purchase Order,Pakollinen ostotilaus, +Purchase Receipt Required for item {},Tuotteelle vaaditaan ostokuitti, +To submit the invoice without purchase receipt please set {} ,"Jos haluat lähettää laskun ilman ostokuittiä, aseta {}", +Mandatory Purchase Receipt,Pakollinen ostokuitti, +POS Profile {} does not belongs to company {},POS-profiili {} ei kuulu yritykseen {}, +User {} is disabled. Please select valid user/cashier,Käyttäjä {} on poistettu käytöstä. Valitse kelvollinen käyttäjä / kassanhaltija, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Rivi # {}: palautuslaskun {} alkuperäinen lasku {} on {}., +Original invoice should be consolidated before or along with the return invoice.,Alkuperäinen lasku tulee yhdistää ennen palautuslaskua tai sen mukana., +You can add original invoice {} manually to proceed.,Voit lisätä alkuperäisen laskun {} manuaalisesti jatkaaksesi., +Please ensure {} account is a Balance Sheet account. ,"Varmista, että {} -tili on tase-tili.", +You can change the parent account to a Balance Sheet account or select a different account.,Voit vaihtaa päätilin tase-tiliksi tai valita toisen tilin., +Please ensure {} account is a Receivable account. ,"Varmista, että {} -tili on Saamisetili.", +Change the account type to Receivable or select a different account.,Muuta tilityypiksi Saamiset tai valitse toinen tili., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},"{} ei voi peruuttaa, koska ansaitut kanta-asiakaspisteet on lunastettu. Peruuta ensin {} Ei {}", +already exists,on jo olemassa, +POS Closing Entry {} against {} between selected period,POS-loppumerkintä {} vastaan {} valitun jakson välillä, +POS Invoice is {},POS-lasku on {}, +POS Profile doesn't matches {},POS-profiili ei vastaa {}, +POS Invoice is not {},POS-lasku ei ole {}, +POS Invoice isn't created by user {},POS-laskua ei ole luonut käyttäjä {}, +Row #{}: {},Rivi # {}: {}, +Invalid POS Invoices,Virheelliset POS-laskut, +Please add the account to root level Company - {},Lisää tili juuritason yritykselle - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Kun luot yritystiliä lapsiyritykselle {0}, emotiliä {1} ei löydy. Luo vanhemman tili vastaavassa aitoustodistuksessa", +Account Not Found,Tiliä ei löydy, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Kun luot yritystiliä {0}, emotili {1} löydettiin kirjanpitotiliksi.", +Please convert the parent account in corresponding child company to a group account.,Muunna vastaavan alayrityksen emotili ryhmätiliksi., +Invalid Parent Account,Virheellinen vanhempien tili, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Sen uudelleennimeäminen on sallittua vain emoyrityksen {0} kautta, jotta vältetään ristiriidat.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Jos {0} {1} tuotemääriä {2} käytetään, malliin {3} sovelletaan tuotetta.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Jos {0} {1} arvoinen kohde {2}, malliin {3} sovelletaan tuotetta.", +"As the field {0} is enabled, the field {1} is mandatory.","Koska kenttä {0} on käytössä, kenttä {1} on pakollinen.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Koska kenttä {0} on käytössä, kentän {1} arvon tulisi olla suurempi kuin 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Tuotteen {0} sarjanumeroa {1} ei voida toimittaa, koska se on varattu täyden myyntitilauksen {2}", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Myyntitilauksessa {0} on varaus tuotteelle {1}, voit toimittaa varattuja {1} vain vastaan {0}.", +{0} Serial No {1} cannot be delivered,{0} Sarjanumeroa {1} ei voida toimittaa, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Rivi {0}: Alihankintatuote on pakollinen raaka-aineelle {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Koska raaka-aineita on riittävästi, Materiaalipyyntöä ei vaadita Varasto {0} -palvelussa.", +" If you still want to proceed, please enable {0}.","Jos haluat edelleen jatkaa, ota {0} käyttöön.", +The item referenced by {0} - {1} is already invoiced,"Kohde, johon {0} - {1} viittaa, on jo laskutettu", +Therapy Session overlaps with {0},Hoitoistunto on päällekkäinen kohteen {0} kanssa, +Therapy Sessions Overlapping,Hoitoistunnot ovat päällekkäisiä, +Therapy Plans,Hoitosuunnitelmat, +"Item Code, warehouse, quantity are required on row {0}","Tuotekoodi, varasto, määrä vaaditaan rivillä {0}", +Get Items from Material Requests against this Supplier,Hanki tuotteita tältä toimittajalta saaduista materiaalipyynnöistä, +Enable European Access,Ota käyttöön eurooppalainen käyttöoikeus, +Creating Purchase Order ...,Luodaan ostotilausta ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",Valitse toimittaja alla olevien tuotteiden oletustoimittajista. Valinnan yhteydessä ostotilaus tehdään vain valitulle toimittajalle kuuluvista tuotteista., +Row #{}: You must select {} serial numbers for item {}.,Rivi # {}: Sinun on valittava {} tuotteen sarjanumerot {}., diff --git a/erpnext/translations/fr.csv b/erpnext/translations/fr.csv index 0d53ce7013..3cdae454ab 100644 --- a/erpnext/translations/fr.csv +++ b/erpnext/translations/fr.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',Déducti Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',Vous ne pouvez pas déduire lorsqu'une catégorie est pour 'Évaluation' ou 'Évaluation et Total', "Cannot delete Serial No {0}, as it is used in stock transactions","Impossible de supprimer les N° de série {0}, s'ils sont dans les mouvements de stock", Cannot enroll more than {0} students for this student group.,Inscription de plus de {0} étudiants impossible pour ce groupe d'étudiants., -Cannot find Item with this barcode,Impossible de trouver l'article avec ce code à barres, Cannot find active Leave Period,Impossible de trouver une période de congés active, Cannot produce more Item {0} than Sales Order quantity {1},Impossible de produire plus d'Article {0} que la quantité {1} du Bon de Commande, Cannot promote Employee with status Left,"Impossible de promouvoir un employé avec le statut ""Parti""", @@ -584,7 +583,7 @@ Condition,Conditions, Configure,Configurer, Configure {0},Configurer {0}, Confirmed orders from Customers.,Commandes confirmées des clients., -Connect Amazon with ERPNext,Connectez Amazon avec ERPNext, +Connect Amazon with ERPNext,Connecter Amazon avec ERPNext, Connect Shopify with ERPNext,Connectez Shopify avec ERPNext, Connect to Quickbooks,Se connecter à Quickbooks, Connected to QuickBooks,Connecté à QuickBooks, @@ -690,7 +689,6 @@ Create Variants,Créer des variantes, "Create and manage daily, weekly and monthly email digests.","Créer et gérer des résumés d'E-mail quotidiens, hebdomadaires et mensuels .", Create customer quotes,Créer les devis client, Create rules to restrict transactions based on values.,Créer des règles pour restreindre les transactions basées sur les valeurs ., -Created By,Établi par, Created {0} scorecards for {1} between: ,{0} fiches d'évaluations créées pour {1} entre:, Creating Company and Importing Chart of Accounts,Création d'une société et importation d'un plan comptable, Creating Fees,Création d'Honoraires, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Pour l’Entrepôt est requis avant de S For row {0}: Enter Planned Qty,Pour la ligne {0}: entrez la quantité planifiée, "For {0}, only credit accounts can be linked against another debit entry","Pour {0}, seuls les comptes de crédit peuvent être liés avec une autre écriture de débit", "For {0}, only debit accounts can be linked against another credit entry","Pour {0}, seuls les comptes de débit peuvent être liés avec une autre écriture de crédit", -Form View,Vue de Formulaire, Forum Activity,Activité du forum, Free item code is not selected,Le code d'article gratuit n'est pas sélectionné, Freight and Forwarding Charges,Frais de Fret et d'Expédition, @@ -2638,7 +2635,6 @@ Send SMS,Envoyer un SMS, Send mass SMS to your contacts,Envoyer un SMS en masse à vos contacts, Sensitivity,Sensibilité, Sent,Envoyé, -Serial #,Série #, Serial No and Batch,N° de Série et lot, Serial No is mandatory for Item {0},N° de Série est obligatoire pour l'Article {0}, Serial No {0} does not belong to Batch {1},Le numéro de série {0} n'appartient pas au lot {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Bienvenue sur ERPNext, What do you need help with?,Avec quoi avez vous besoin d'aide ?, What does it do?,Qu'est-ce que ça fait ?, Where manufacturing operations are carried.,Là où les opérations de production sont réalisées., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Lors de la création du compte pour la société enfant {0}, le compte parent {1} est introuvable. Veuillez créer le compte parent dans le COA correspondant.", White,blanc, Wire Transfer,Virement, WooCommerce Products,Produits WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Aime, Merge with existing,Fusionner avec existant, Office,Bureau, Orientation,Orientation, +Parent,Parent, Passive,Passif, Payment Failed,Le Paiement a Échoué, Percent,Pourcent, @@ -3543,6 +3539,7 @@ Shift,Décalage, Show {0},Montrer {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Caractères spéciaux sauf "-", "#", ".", "/", "{" Et "}" non autorisés dans les séries de nommage", Target Details,Détails de la cible, +{0} already has a Parent Procedure {1}.,{0} a déjà une procédure parent {1}., API,API, Annual,Annuel, Approved,Approuvé, @@ -4241,7 +4238,6 @@ Download as JSON,Télécharger en JSON, End date can not be less than start date,La date de Fin ne peut pas être antérieure à la Date de Début, For Default Supplier (Optional),Pour le fournisseur par défaut (facultatif), From date cannot be greater than To date,La Date Initiale ne peut pas être postérieure à la Date Finale, -Get items from,Obtenir les articles de, Group by,Grouper Par, In stock,En stock, Item name,Nom de l'article, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Paramètre de modèle de commentaires de qua Quality Goal,Objectif de qualité, Monitoring Frequency,Fréquence de surveillance, Weekday,Jour de la semaine, -January-April-July-October,Janvier-avril-juillet-octobre, -Revision and Revised On,Révision et révisé le, -Revision,Révision, -Revised On,Révisé le, Objectives,Objectifs, Quality Goal Objective,Objectif de qualité Objectif, Objective,Objectif, @@ -7574,7 +7566,6 @@ Parent Procedure,Procédure parentale, Processes,Les processus, Quality Procedure Process,Processus de procédure de qualité, Process Description,Description du processus, -Child Procedure,Procédure enfant, Link existing Quality Procedure.,Lier la procédure qualité existante., Additional Information,Information additionnelle, Quality Review Objective,Objectif de revue de qualité, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Tendances des Bons de Commande, Purchase Receipt Trends,Tendances des Reçus d'Achats, Purchase Register,Registre des Achats, Quotation Trends,Tendances des Devis, -Quoted Item Comparison,Comparaison d'Article Soumis, Received Items To Be Billed,Articles Reçus à Facturer, Qty to Order,Quantité à Commander, Requested Items To Be Transferred,Articles Demandés à Transférer, @@ -9091,7 +9081,6 @@ Unmarked days,Jours non marqués, Absent Days,Jours d'absence, Conditions and Formula variable and example,Conditions et variable de formule et exemple, Feedback By,Commentaires de, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. JJ.-, Manufacturing Section,Section de fabrication, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Par défaut, le nom du client est défini selon le nom complet entré. Si vous souhaitez que les clients soient nommés par un", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Configurez la liste de prix par défaut lors de la création d'une nouvelle transaction de vente. Les prix des articles seront extraits de cette liste de prix., @@ -9692,7 +9681,6 @@ Available Balance,Solde disponible, Reserved Balance,Solde réservé, Uncleared Balance,Solde non compensé, Payment related to {0} is not completed,Le paiement lié à {0} n'est pas terminé, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Ligne n ° {}: numéro de série {}. {} a déjà fait l'objet d'une autre facture PDV. Veuillez sélectionner un numéro de série valide., Row #{}: Item Code: {} is not available under warehouse {}.,Ligne n ° {}: code article: {} n'est pas disponible dans l'entrepôt {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Ligne n ° {}: quantité en stock insuffisante pour le code article: {} sous l'entrepôt {}. Quantité disponible {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Ligne n ° {}: veuillez sélectionner un numéro de série et un lot pour l'article: {} ou supprimez-le pour terminer la transaction., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Quantité non disponible pour {0 Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Veuillez activer Autoriser le stock négatif dans les paramètres de stock ou créer une entrée de stock pour continuer., No Inpatient Record found against patient {0},Aucun dossier d'hospitalisation trouvé pour le patient {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Une ordonnance de médicament pour patients hospitalisés {0} contre rencontre avec un patient {1} existe déjà., +Allow In Returns,Autoriser les retours, +Hide Unavailable Items,Masquer les éléments non disponibles, +Apply Discount on Discounted Rate,Appliquer une remise sur un tarif réduit, +Therapy Plan Template,Modèle de plan de thérapie, +Fetching Template Details,Récupération des détails du modèle, +Linked Item Details,Détails de l'élément lié, +Therapy Types,Types de thérapie, +Therapy Plan Template Detail,Détail du modèle de plan de thérapie, +Non Conformance,Non-conformité, +Process Owner,Propriétaire du processus, +Corrective Action,Action corrective, +Preventive Action,Action préventive, +Problem,Problème, +Responsible,Responsable, +Completion By,Achèvement par, +Process Owner Full Name,Nom complet du propriétaire du processus, +Right Index,Index droit, +Left Index,Index gauche, +Sub Procedure,Sous-procédure, +Passed,Passé, +Print Receipt,Imprimer le reçu, +Edit Receipt,Modifier le reçu, +Focus on search input,Focus sur l'entrée de recherche, +Focus on Item Group filter,Focus sur le filtre de groupe d'articles, +Checkout Order / Submit Order / New Order,Commander la commande / Soumettre la commande / Nouvelle commande, +Add Order Discount,Ajouter une remise de commande, +Item Code: {0} is not available under warehouse {1}.,Code d'article: {0} n'est pas disponible dans l'entrepôt {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Numéros de série non disponibles pour l'article {0} sous l'entrepôt {1}. Veuillez essayer de changer d’entrepôt., +Fetched only {0} available serial numbers.,Récupéré uniquement {0} numéros de série disponibles., +Switch Between Payment Modes,Basculer entre les modes de paiement, +Enter {0} amount.,Saisissez le montant de {0}., +You don't have enough points to redeem.,Vous n'avez pas assez de points à échanger., +You can redeem upto {0}.,Vous pouvez utiliser jusqu'à {0}., +Enter amount to be redeemed.,Entrez le montant à utiliser., +You cannot redeem more than {0}.,Vous ne pouvez pas utiliser plus de {0}., +Open Form View,Ouvrir la vue formulaire, +POS invoice {0} created succesfully,Facture PDV {0} créée avec succès, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Quantité en stock insuffisante pour le code article: {0} sous l'entrepôt {1}. Quantité disponible {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Numéro de série: {0} a déjà été traité sur une autre facture PDV., +Balance Serial No,Numéro de série de la balance, +Warehouse: {0} does not belong to {1},Entrepôt: {0} n'appartient pas à {1}, +Please select batches for batched item {0},Veuillez sélectionner des lots pour l'article en lots {0}, +Please select quantity on row {0},Veuillez sélectionner la quantité sur la ligne {0}, +Please enter serial numbers for serialized item {0},Veuillez saisir les numéros de série de l'article sérialisé {0}, +Batch {0} already selected.,Lot {0} déjà sélectionné., +Please select a warehouse to get available quantities,Veuillez sélectionner un entrepôt pour obtenir les quantités disponibles, +"For transfer from source, selected quantity cannot be greater than available quantity","Pour le transfert depuis la source, la quantité sélectionnée ne peut pas être supérieure à la quantité disponible", +Cannot find Item with this Barcode,Impossible de trouver l'article avec ce code-barres, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} est obligatoire. L'enregistrement de change de devises n'est peut-être pas créé pour le {1} au {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} a soumis des éléments qui lui sont associés. Vous devez annuler les actifs pour créer un retour d'achat., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Impossible d'annuler ce document car il est associé à l'élément soumis {0}. Veuillez l'annuler pour continuer., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Ligne n ° {}: le numéro de série {} a déjà été transposé sur une autre facture PDV. Veuillez sélectionner un numéro de série valide., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Ligne n ° {}: les numéros de série {} ont déjà été traités sur une autre facture PDV. Veuillez sélectionner un numéro de série valide., +Item Unavailable,Article non disponible, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Ligne n ° {}: le numéro de série {} ne peut pas être renvoyé car il n'a pas été traité dans la facture d'origine {}, +Please set default Cash or Bank account in Mode of Payment {},Veuillez définir le compte de trésorerie ou bancaire par défaut dans le mode de paiement {}, +Please set default Cash or Bank account in Mode of Payments {},Veuillez définir le compte par défaut en espèces ou en banque dans Mode de paiement {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Veuillez vous assurer que {} compte est un compte de bilan. Vous pouvez changer le compte parent en compte de bilan ou sélectionner un autre compte., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Veuillez vous assurer que {} compte est un compte Payable. Modifiez le type de compte sur Payable ou sélectionnez un autre compte., +Row {}: Expense Head changed to {} ,Ligne {}: le paramètre Expense Head a été remplacé par {}, +because account {} is not linked to warehouse {} ,car le compte {} n'est pas associé à l'entrepôt {}, +or it is not the default inventory account,ou ce n'est pas le compte d'inventaire par défaut, +Expense Head Changed,Tête de dépense modifiée, +because expense is booked against this account in Purchase Receipt {},car les dépenses sont imputées à ce compte dans le reçu d'achat {}, +as no Purchase Receipt is created against Item {}. ,car aucun reçu d'achat n'est créé pour l'article {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Ceci est fait pour gérer la comptabilité des cas où le reçu d'achat est créé après la facture d'achat, +Purchase Order Required for item {},Bon de commande requis pour l'article {}, +To submit the invoice without purchase order please set {} ,"Pour soumettre la facture sans bon de commande, veuillez définir {}", +as {} in {},un péché {}, +Mandatory Purchase Order,Bon de commande obligatoire, +Purchase Receipt Required for item {},Reçu d'achat requis pour l'article {}, +To submit the invoice without purchase receipt please set {} ,"Pour soumettre la facture sans reçu d'achat, veuillez définir {}", +Mandatory Purchase Receipt,Reçu d'achat obligatoire, +POS Profile {} does not belongs to company {},Le profil PDV {} n'appartient pas à l'entreprise {}, +User {} is disabled. Please select valid user/cashier,L'utilisateur {} est désactivé. Veuillez sélectionner un utilisateur / caissier valide, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Ligne n ° {}: la facture originale {} de la facture de retour {} est {}., +Original invoice should be consolidated before or along with the return invoice.,La facture originale doit être consolidée avant ou avec la facture de retour., +You can add original invoice {} manually to proceed.,Vous pouvez ajouter la facture originale {} manuellement pour continuer., +Please ensure {} account is a Balance Sheet account. ,Veuillez vous assurer que {} compte est un compte de bilan., +You can change the parent account to a Balance Sheet account or select a different account.,Vous pouvez changer le compte parent en compte de bilan ou sélectionner un autre compte., +Please ensure {} account is a Receivable account. ,Veuillez vous assurer que {} compte est un compte recevable., +Change the account type to Receivable or select a different account.,Changez le type de compte en recevable ou sélectionnez un autre compte., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} ne peut pas être annulé car les points de fidélité gagnés ont été utilisés. Annulez d'abord le {} Non {}, +already exists,existe déjà, +POS Closing Entry {} against {} between selected period,Entrée de clôture du PDV {} contre {} entre la période sélectionnée, +POS Invoice is {},La facture PDV est {}, +POS Profile doesn't matches {},Le profil de point de vente ne correspond pas à {}, +POS Invoice is not {},La facture PDV n'est pas {}, +POS Invoice isn't created by user {},La facture PDV n'est pas créée par l'utilisateur {}, +Row #{}: {},Rangée #{}: {}, +Invalid POS Invoices,Factures PDV non valides, +Please add the account to root level Company - {},Veuillez ajouter le compte à la société au niveau racine - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Lors de la création du compte pour l'entreprise enfant {0}, le compte parent {1} est introuvable. Veuillez créer le compte parent dans le COA correspondant", +Account Not Found,Compte non trouvé, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Lors de la création du compte pour l'entreprise enfant {0}, le compte parent {1} a été trouvé en tant que compte du grand livre.", +Please convert the parent account in corresponding child company to a group account.,Veuillez convertir le compte parent de l'entreprise enfant correspondante en compte de groupe., +Invalid Parent Account,Compte parent non valide, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Le renommer n'est autorisé que via la société mère {0}, pour éviter les incompatibilités.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Si vous {0} {1} quantités de l'article {2}, le schéma {3} sera appliqué à l'article.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Si vous {0} {1} valez un article {2}, le schéma {3} sera appliqué à l'article.", +"As the field {0} is enabled, the field {1} is mandatory.","Comme le champ {0} est activé, le champ {1} est obligatoire.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Lorsque le champ {0} est activé, la valeur du champ {1} doit être supérieure à 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Impossible de livrer le numéro de série {0} de l'article {1} car il est réservé pour remplir la commande client {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","La commande client {0} a une réservation pour l'article {1}, vous ne pouvez livrer que réservée {1} contre {0}.", +{0} Serial No {1} cannot be delivered,Le {0} numéro de série {1} ne peut pas être livré, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Ligne {0}: l'article sous-traité est obligatoire pour la matière première {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Comme il y a suffisamment de matières premières, la demande de matériel n'est pas requise pour l'entrepôt {0}.", +" If you still want to proceed, please enable {0}.","Si vous souhaitez continuer, veuillez activer {0}.", +The item referenced by {0} - {1} is already invoiced,L'article référencé par {0} - {1} est déjà facturé, +Therapy Session overlaps with {0},La session de thérapie chevauche {0}, +Therapy Sessions Overlapping,Chevauchement des séances de thérapie, +Therapy Plans,Plans de thérapie, +"Item Code, warehouse, quantity are required on row {0}","Le code article, l'entrepôt et la quantité sont obligatoires sur la ligne {0}", +Get Items from Material Requests against this Supplier,Obtenir des articles à partir de demandes d'articles auprès de ce fournisseur, +Enable European Access,Activer l'accès européen, +Creating Purchase Order ...,Création d'une commande d'achat ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Sélectionnez un fournisseur parmi les fournisseurs par défaut des articles ci-dessous. Lors de la sélection, un bon de commande sera effectué contre des articles appartenant uniquement au fournisseur sélectionné.", +Row #{}: You must select {} serial numbers for item {}.,Ligne n ° {}: vous devez sélectionner {} numéros de série pour l'article {}., diff --git a/erpnext/translations/gu.csv b/erpnext/translations/gu.csv index f37dc00148..5c2b520d9e 100644 --- a/erpnext/translations/gu.csv +++ b/erpnext/translations/gu.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',શ્ Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',કપાત કરી શકો છો જ્યારે શ્રેણી 'વેલ્યુએશન' અથવા 'Vaulation અને કુલ' માટે છે, "Cannot delete Serial No {0}, as it is used in stock transactions","કાઢી શકતા નથી સીરીયલ કોઈ {0}, તે સ્ટોક વ્યવહારો તરીકે ઉપયોગ થાય છે", Cannot enroll more than {0} students for this student group.,{0} આ વિદ્યાર્થી જૂથ માટે વિદ્યાર્થીઓ કરતાં વધુ નોંધણી કરી શકતા નથી., -Cannot find Item with this barcode,આ બારકોડથી આઇટમ શોધી શકાતી નથી, Cannot find active Leave Period,સક્રિય રજા અવધિ શોધી શકાતો નથી, Cannot produce more Item {0} than Sales Order quantity {1},સેલ્સ ક્રમ સાથે જથ્થો કરતાં વધુ આઇટમ {0} પેદા કરી શકતા નથી {1}, Cannot promote Employee with status Left,કર્મચારીને દરજ્જા સાથે બઢતી ન આપી શકે, @@ -690,7 +689,6 @@ Create Variants,ચલો બનાવો, "Create and manage daily, weekly and monthly email digests.","બનાવો અને દૈનિક, સાપ્તાહિક અને માસિક ઇમેઇલ પચાવી મેનેજ કરો.", Create customer quotes,ગ્રાહક અવતરણ બનાવો, Create rules to restrict transactions based on values.,મૂલ્યો પર આધારિત વ્યવહારો પ્રતિબંધિત કરવા માટે નિયમો બનાવો., -Created By,દ્વારા બનાવવામાં, Created {0} scorecards for {1} between: ,{1} માટે {0} સ્કોરકાર્ડ્સ વચ્ચે બનાવ્યાં:, Creating Company and Importing Chart of Accounts,કંપની બનાવવી અને એકાઉન્ટ્સનો આયાત કરવો, Creating Fees,ફી બનાવવી, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,વેરહાઉસ માટે જ For row {0}: Enter Planned Qty,{0} પંક્તિ માટે: નિયુક્ત કરેલું કક્ષ દાખલ કરો, "For {0}, only credit accounts can be linked against another debit entry","{0}, માત્ર ક્રેડિટ ખાતાઓ અન્ય ડેબિટ પ્રવેશ સામે લિંક કરી શકો છો", "For {0}, only debit accounts can be linked against another credit entry","{0}, માત્ર ડેબિટ એકાઉન્ટ્સ બીજા ક્રેડિટ પ્રવેશ સામે લિંક કરી શકો છો", -Form View,ફોર્મ જુઓ, Forum Activity,ફોરમ પ્રવૃત્તિ, Free item code is not selected,મફત આઇટમ કોડ પસંદ થયેલ નથી, Freight and Forwarding Charges,નૂર અને ફોરવર્ડિંગ સમાયોજિત, @@ -2638,7 +2635,6 @@ Send SMS,એસએમએસ મોકલો, Send mass SMS to your contacts,સામૂહિક એસએમએસ તમારા સંપર્કો મોકલો, Sensitivity,સંવેદનશીલતા, Sent,મોકલ્યું, -Serial #,સીરીયલ #, Serial No and Batch,સીરીયલ કોઈ અને બેચ, Serial No is mandatory for Item {0},સીરીયલ કોઈ વસ્તુ માટે ફરજિયાત છે {0}, Serial No {0} does not belong to Batch {1},સીરિયલ કોઈ {0} બેચની નથી {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ERPNext માટે આપનું સ્વાગત છ What do you need help with?,શું તમે સાથે મદદ જરૂર છે?, What does it do?,તે શું કરે છે?, Where manufacturing operations are carried.,ઉત્પાદન કામગીરી જ્યાં ધરવામાં આવે છે., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","બાળ કંપની {0} માટે એકાઉન્ટ બનાવતી વખતે, પિતૃ એકાઉન્ટ {1} મળ્યું નથી. કૃપા કરીને સંબંધિત COA માં પેરેંટ એકાઉન્ટ બનાવો", White,વ્હાઇટ, Wire Transfer,વાયર ટ્રાન્સફર, WooCommerce Products,WooCommerce ઉત્પાદનો, @@ -3493,6 +3488,7 @@ Likes,પસંદ, Merge with existing,વર્તમાન સાથે મર્જ, Office,ઓફિસ, Orientation,ઓરિએન્ટેશન, +Parent,પિતૃ, Passive,નિષ્ક્રીય, Payment Failed,ચુકવણી કરવામાં નિષ્ફળ, Percent,ટકા, @@ -3543,6 +3539,7 @@ Shift,પાળી, Show {0},બતાવો {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",""-", "#", ".", "/", "{" અને "}" સિવાયના વિશેષ અક્ષરો નામકરણ શ્રેણીમાં મંજૂરી નથી", Target Details,લક્ષ્યાંક વિગતો, +{0} already has a Parent Procedure {1}.,{0} પાસે પહેલેથી જ પિતૃ કાર્યવાહી છે {1}., API,API, Annual,વાર્ષિક, Approved,મંજૂર, @@ -4241,7 +4238,6 @@ Download as JSON,જેસન તરીકે ડાઉનલોડ કરો, End date can not be less than start date,સમાપ્તિ તારીખ પ્રારંભ તારીખ કરતાં ઓછી હોઈ શકતી નથી, For Default Supplier (Optional),ડિફોલ્ટ સપ્લાયર માટે (વૈકલ્પિક), From date cannot be greater than To date,તારીખથી તારીખ કરતાં વધુ હોઈ શકતી નથી, -Get items from,વસ્તુઓ મેળવો, Group by,ગ્રુપ દ્વારા, In stock,ઉપલબ્ધ છે, Item name,વસ્તુ નામ, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,ગુણવત્તા પ્રતિસ Quality Goal,ગુણવત્તા ધ્યેય, Monitoring Frequency,મોનિટરિંગ આવર્તન, Weekday,અઠવાડિયાનો દિવસ, -January-April-July-October,જાન્યુઆરી-એપ્રિલ-જુલાઈ-Octoberક્ટોબર, -Revision and Revised On,સુધારો અને સુધારેલ, -Revision,પુનરાવર્તન, -Revised On,રિવાઇઝ્ડ ઓન, Objectives,ઉદ્દેશો, Quality Goal Objective,ગુણવત્તા ધ્યેય ઉદ્દેશ, Objective,ઉદ્દેશ્ય, @@ -7574,7 +7566,6 @@ Parent Procedure,પિતૃ કાર્યવાહી, Processes,પ્રક્રિયાઓ, Quality Procedure Process,ગુણવત્તા પ્રક્રિયા પ્રક્રિયા, Process Description,પ્રક્રિયા વર્ણન, -Child Procedure,બાળ પ્રક્રિયા, Link existing Quality Procedure.,હાલની ગુણવત્તા પ્રક્રિયાને લિંક કરો., Additional Information,વધારાની માહિતી, Quality Review Objective,ગુણવત્તા સમીક્ષા ઉદ્દેશ્ય, @@ -8557,7 +8548,6 @@ Purchase Order Trends,ઓર્ડર પ્રવાહો ખરીદી, Purchase Receipt Trends,ખરીદી રસીદ પ્રવાહો, Purchase Register,ખરીદી રજીસ્ટર, Quotation Trends,અવતરણ પ્રવાહો, -Quoted Item Comparison,નોંધાયેલા વસ્તુ સરખામણી, Received Items To Be Billed,પ્રાપ્ત વસ્તુઓ બિલ કરવા, Qty to Order,ઓર્ડર Qty, Requested Items To Be Transferred,વિનંતી વસ્તુઓ ટ્રાન્સફર કરી, @@ -9091,7 +9081,6 @@ Unmarked days,અંકિત દિવસો, Absent Days,ગેરહાજર દિવસો, Conditions and Formula variable and example,શરતો અને ફોર્મ્યુલા ચલ અને ઉદાહરણ, Feedback By,પ્રતિસાદ દ્વારા, -MTNG-.YYYY.-.MM.-.DD.-,એમટીએનજી -હાયવાય .-. એમએમ .-. ડીડી.-, Manufacturing Section,ઉત્પાદન વિભાગ, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","ડિફ defaultલ્ટ રૂપે, ગ્રાહકનું નામ દાખલ કરેલા સંપૂર્ણ નામ મુજબ સેટ કરેલું છે. જો તમે ઇચ્છો છો કે ગ્રાહકોના નામ એ", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,નવો વેચાણ વ્યવહાર બનાવતી વખતે ડિફોલ્ટ ભાવ સૂચિને ગોઠવો. આ ભાવ સૂચિમાંથી આઇટમના ભાવ લાવવામાં આવશે., @@ -9692,7 +9681,6 @@ Available Balance,વધેલી રાશી, Reserved Balance,અનામત સંતુલન, Uncleared Balance,અસ્પષ્ટ સંતુલન, Payment related to {0} is not completed,{0 to થી સંબંધિત ચુકવણી પૂર્ણ થઈ નથી, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,પંક્તિ # {}: સીરીયલ નં {}. {already પહેલાથી જ બીજા પીઓએસ ઇન્વoiceઇસમાં ટ્રાંઝેક્શન કરવામાં આવ્યું છે. કૃપા કરી માન્ય સિરીયલ નં., Row #{}: Item Code: {} is not available under warehouse {}.,પંક્તિ # {}: આઇટમ કોડ: {w વેરહાઉસ under under હેઠળ ઉપલબ્ધ નથી., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,પંક્તિ # {}: સ્ટોક જથ્થો આઇટમ કોડ માટે પૂરતો નથી: are w વેરહાઉસ હેઠળ {}. ઉપલબ્ધ જથ્થો {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,પંક્તિ # {}: મહેરબાની કરીને સીરીયલ નંબર અને આઇટમ સામેની બેચ પસંદ કરો: {} અથવા વ્યવહાર પૂર્ણ કરવા માટે તેને દૂર કરો., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},વેરહાઉસ {1} મા Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,કૃપા કરીને સ્ટોક સેટિંગ્સમાં નેગેટિવ સ્ટોકને મંજૂરી આપો અથવા આગળ વધવા માટે સ્ટોક એન્ટ્રી બનાવો., No Inpatient Record found against patient {0},દર્દી against 0 against સામે કોઈ ઇનપેશન્ટ રેકોર્ડ મળ્યો નથી., An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,પેશન્ટ એન્કાઉન્ટર In 1} સામે ઇનપેશન્ટ મેડિકેશન ઓર્ડર {0} પહેલેથી હાજર છે., +Allow In Returns,રીટર્ન માં મંજૂરી આપો, +Hide Unavailable Items,અનુપલબ્ધ વસ્તુઓ છુપાવો, +Apply Discount on Discounted Rate,ડિસ્કાઉન્ટ દરે ડિસ્કાઉન્ટ લાગુ કરો, +Therapy Plan Template,ઉપચાર યોજના Templateાંચો, +Fetching Template Details,Templateાંચો વિગતો લાવી રહ્યું છે, +Linked Item Details,જોડાયેલ વસ્તુ વિગતો, +Therapy Types,ઉપચારના પ્રકાર, +Therapy Plan Template Detail,થેરપી યોજના Templateાંચો વિગતવાર, +Non Conformance,અનુરૂપ ન હોવું, +Process Owner,પ્રક્રિયા માલિક, +Corrective Action,સુધારાત્મક પગલાં, +Preventive Action,નિવારક ક્રિયા, +Problem,સમસ્યા, +Responsible,જવાબદાર, +Completion By,દ્વારા પૂર્ણ, +Process Owner Full Name,પ્રક્રિયા માલિકનું સંપૂર્ણ નામ, +Right Index,જમણું અનુક્રમણિકા, +Left Index,ડાબું અનુક્રમણિકા, +Sub Procedure,પેટા કાર્યવાહી, +Passed,પાસ થઈ, +Print Receipt,રસીદ રસીદ, +Edit Receipt,રસીદ સંપાદિત કરો, +Focus on search input,શોધ ઇનપુટ પર ધ્યાન કેન્દ્રિત કરો, +Focus on Item Group filter,આઇટમ જૂથ ફિલ્ટર પર ધ્યાન કેન્દ્રિત કરો, +Checkout Order / Submit Order / New Order,ચેકઆઉટ ઓર્ડર / સબમિટ ઓર્ડર / નવો ઓર્ડર, +Add Order Discount,ઓર્ડર ડિસ્કાઉન્ટ ઉમેરો, +Item Code: {0} is not available under warehouse {1}.,આઇટમ કોડ: are 0 w વેરહાઉસ under 1} હેઠળ ઉપલબ્ધ નથી., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,વેરહાઉસ} 1} હેઠળ આઇટમ {0} માટે સીરીયલ નંબરો અનુપલબ્ધ છે. કૃપા કરીને વેરહાઉસ બદલવાનો પ્રયાસ કરો., +Fetched only {0} available serial numbers.,ફક્ત {0} ઉપલબ્ધ સિરીયલ નંબરો મેળવ્યાં., +Switch Between Payment Modes,ચુકવણી મોડ્સ વચ્ચે સ્વિચ કરો, +Enter {0} amount.,{0} રકમ દાખલ કરો., +You don't have enough points to redeem.,તમારી પાસે રિડીમ કરવા માટે પૂરતા પોઇન્ટ નથી., +You can redeem upto {0}.,તમે {0 up સુધી રિડીમ કરી શકો છો., +Enter amount to be redeemed.,છૂટકારો મેળવવા માટે રકમ દાખલ કરો., +You cannot redeem more than {0}.,તમે {0 more કરતા વધારે રિડીમ કરી શકતા નથી., +Open Form View,ફોર્મ વ્યૂ ખોલો, +POS invoice {0} created succesfully,પોસ ઇન્વoiceઇસ {0 suc સફળતાપૂર્વક બનાવેલ છે, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,આઇટમ કોડ માટે સ્ટોક જથ્થો પૂરતો નથી: are 0 w વેરહાઉસ} 1} હેઠળ. ઉપલબ્ધ જથ્થો {2}., +Serial No: {0} has already been transacted into another POS Invoice.,સીરીયલ નંબર: {0 નો પહેલેથી જ બીજા POS ઇન્વoiceઇસમાં ટ્રાન્ઝેક્શન કરવામાં આવ્યું છે., +Balance Serial No,બેલેન્સ સીરીયલ નં, +Warehouse: {0} does not belong to {1},વેરહાઉસ: {0 {{1} સાથે સંબંધિત નથી, +Please select batches for batched item {0},કૃપા કરી બેચેડ આઇટમ bat 0 for માટે બchesચેસ પસંદ કરો, +Please select quantity on row {0},કૃપા કરી પંક્તિ પર જથ્થો પસંદ કરો {0}, +Please enter serial numbers for serialized item {0},સીરીયલાઇઝ્ડ આઇટમ serial 0 for માટે કૃપા કરી ક્રમાંક નંબરો દાખલ કરો, +Batch {0} already selected.,બેચ} 0} પહેલેથી જ પસંદ કરેલ છે., +Please select a warehouse to get available quantities,કૃપા કરીને ઉપલબ્ધ માત્રા મેળવવા માટે વેરહાઉસ પસંદ કરો, +"For transfer from source, selected quantity cannot be greater than available quantity","સ્રોતમાંથી સ્થાનાંતરણ માટે, પસંદ કરેલા જથ્થા ઉપલબ્ધ માત્રા કરતા વધારે ન હોઈ શકે", +Cannot find Item with this Barcode,આ બારકોડથી આઇટમ શોધી શકાતી નથી, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0 mand ફરજિયાત છે. કદાચ ચલણ વિનિમય રેકોર્ડ {1} થી {2 for માટે બનાવવામાં આવ્યો નથી, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{એ તેની સાથે જોડાયેલ સંપત્તિ સબમિટ કરી છે. ખરીદીનું વળતર બનાવવા માટે તમારે સંપત્તિઓને રદ કરવાની જરૂર છે., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,આ દસ્તાવેજ રદ કરી શકાતો નથી કારણ કે તે સબમિટ કરેલી સંપત્તિ {0} સાથે જોડાયેલ છે. કૃપા કરીને ચાલુ રાખવા માટે તેને રદ કરો., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,પંક્તિ # {}: સીરીયલ નંબર {પહેલાથી જ બીજા પીઓએસ ઇન્વ Invઇસમાં ટ્રાંઝેક્ટ કરવામાં આવી છે. કૃપા કરી માન્ય સિરીયલ નં., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,પંક્તિ # {}: સીરીયલ નંબર. કૃપા કરી માન્ય સિરીયલ નં., +Item Unavailable,આઇટમ અનુપલબ્ધ, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},પંક્તિ # {}: સીરીયલ નંબર {be પરત કરી શકાતી નથી કારણ કે તેનો મૂળ ભરતિયુંમાં ટ્રાન્ઝેક્શન કરવામાં આવ્યું નથી {}, +Please set default Cash or Bank account in Mode of Payment {},કૃપા કરીને ચુકવણીના મોડમાં ડિફોલ્ટ કેશ અથવા બેંક એકાઉન્ટ સેટ કરો}}, +Please set default Cash or Bank account in Mode of Payments {},કૃપા કરીને ચુકવણીના મોડમાં ડિફ defaultલ્ટ કેશ અથવા બેંક એકાઉન્ટ સેટ કરો}}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,કૃપા કરીને ખાતરી કરો કે}} એકાઉન્ટ એ બેલેન્સ શીટ એકાઉન્ટ છે. તમે પેરેંટ એકાઉન્ટને બેલેન્સ શીટ એકાઉન્ટમાં બદલી શકો છો અથવા કોઈ અલગ એકાઉન્ટ પસંદ કરી શકો છો., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,કૃપા કરીને ખાતરી કરો કે {} એકાઉન્ટ ચૂકવણીપાત્ર એકાઉન્ટ છે. ચૂકવણીપાત્ર પર એકાઉન્ટ પ્રકાર બદલો અથવા કોઈ અલગ એકાઉન્ટ પસંદ કરો., +Row {}: Expense Head changed to {} ,પંક્તિ {}: ખર્ચનો માથા બદલીને changed to, +because account {} is not linked to warehouse {} ,કારણ કે {account એકાઉન્ટ વેરહાઉસ સાથે જોડાયેલ નથી {}, +or it is not the default inventory account,અથવા તે ડિફ defaultલ્ટ ઇન્વેન્ટરી એકાઉન્ટ નથી, +Expense Head Changed,ખર્ચના વડા બદલાયા, +because expense is booked against this account in Purchase Receipt {},કારણ કે ખરીદીની રસીદ in in માં આ ખાતા સામે ખર્ચ બુક કરાયો છે, +as no Purchase Receipt is created against Item {}. ,આઇટમ {against ની વિરુદ્ધ કોઈ ખરીદી રસીદ બનાવવામાં આવી નથી., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,જ્યારે ખરીદી ઇન્વoiceઇસ પછી ખરીદી રસીદ બનાવવામાં આવે છે ત્યારે કેસના હિસાબનું સંચાલન કરવા માટે આ કરવામાં આવે છે, +Purchase Order Required for item {},આઇટમ for for માટે ખરીદી ઓર્ડર આવશ્યક છે, +To submit the invoice without purchase order please set {} ,ખરીદી ઓર્ડર વિના ભરતિયું સબમિટ કરવા માટે કૃપા કરીને {{સેટ કરો, +as {} in {},તરીકે {}, +Mandatory Purchase Order,ફરજિયાત ખરીદી હુકમ, +Purchase Receipt Required for item {},આઇટમ for for માટે ખરીદીની રસીદ આવશ્યક છે, +To submit the invoice without purchase receipt please set {} ,ખરીદીની રસીદ વિના ભરતિયું સબમિટ કરવા માટે કૃપા કરીને {set સેટ કરો, +Mandatory Purchase Receipt,ફરજિયાત ખરીદીની રસીદ, +POS Profile {} does not belongs to company {},પીઓએસ પ્રોફાઇલ {company કંપનીની નથી {}, +User {} is disabled. Please select valid user/cashier,વપરાશકર્તા} disabled અક્ષમ છે. કૃપા કરી માન્ય વપરાશકર્તા / કેશિયર પસંદ કરો, +Row #{}: Original Invoice {} of return invoice {} is {}. ,પંક્તિ # {}: રીટર્ન ઇન્વoiceઇસેસનું મૂળ ઇન્વoiceઇસ {} {} છે., +Original invoice should be consolidated before or along with the return invoice.,મૂળ ઇન્વ invઇસ પહેલાં અથવા વળતર ઇન્વોઇસ સાથે એકીકૃત થવું જોઈએ., +You can add original invoice {} manually to proceed.,આગળ વધવા માટે તમે મેન્યુઅલી અસલ ઇન્વoiceઇસ ઉમેરી શકો છો., +Please ensure {} account is a Balance Sheet account. ,કૃપા કરીને ખાતરી કરો કે}} એકાઉન્ટ એ બેલેન્સ શીટ એકાઉન્ટ છે., +You can change the parent account to a Balance Sheet account or select a different account.,તમે પેરેંટ એકાઉન્ટને બેલેન્સ શીટ એકાઉન્ટમાં બદલી શકો છો અથવા કોઈ અલગ એકાઉન્ટ પસંદ કરી શકો છો., +Please ensure {} account is a Receivable account. ,કૃપા કરીને ખાતરી કરો કે {} એકાઉન્ટ એક પ્રાપ્ય એકાઉન્ટ છે., +Change the account type to Receivable or select a different account.,ખાતાના પ્રકારને પ્રાપ્ત કરવા યોગ્યમાં બદલો અથવા કોઈ અલગ એકાઉન્ટ પસંદ કરો., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},earned canceled રદ કરી શકાતી નથી કારણ કે કમાયેલી લોયલ્ટી પોઇંટ્સ રિડીમ થઈ ગઈ છે. પહેલા {} ના {cancel રદ કરો, +already exists,પહેલાથી અસ્તિત્વમાં, +POS Closing Entry {} against {} between selected period,પસંદ કરેલી અવધિ વચ્ચે પોસ કલોઝિંગ એન્ટ્રી}} સામે {., +POS Invoice is {},પોસ ઇન્વoiceઇસ {is છે, +POS Profile doesn't matches {},પોસ પ્રોફાઇલ {matches સાથે મેળ ખાતી નથી, +POS Invoice is not {},પોસ ઇન્વoiceઇસ {is નથી, +POS Invoice isn't created by user {},પોઝ ઇન્વoiceઇસ વપરાશકર્તા by by દ્વારા બનાવવામાં આવ્યું નથી, +Row #{}: {},પંક્તિ # {}: {, +Invalid POS Invoices,અમાન્ય POS ઇન્વvoઇસેસ, +Please add the account to root level Company - {},કૃપા કરીને એકાઉન્ટને રૂટ લેવલની કંપનીમાં ઉમેરો - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","ચાઇલ્ડ કંપની account 0 for માટે એકાઉન્ટ બનાવતી વખતે, પેરેંટ એકાઉન્ટ {1} મળ્યું નથી. કૃપા કરીને સંબંધિત સીઓએમાં પેરેંટ એકાઉન્ટ બનાવો", +Account Not Found,એકાઉન્ટ મળ્યું નથી, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","ચાઇલ્ડ કંપની account 0 for માટે એકાઉન્ટ બનાવતી વખતે, ખાતામાં એકાઉન્ટ તરીકે પેરેંટ એકાઉન્ટ. 1. મળ્યું.", +Please convert the parent account in corresponding child company to a group account.,કૃપા કરીને સંબંધિત બાળક કંપનીમાં પેરેંટ એકાઉન્ટને જૂથ એકાઉન્ટમાં કન્વર્ટ કરો., +Invalid Parent Account,અમાન્ય પેરેંટ એકાઉન્ટ, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","ગેરસમજને ટાળવા માટે, નામ બદલવાનું ફક્ત પેરન્ટ કંપની {0} દ્વારા જ માન્ય છે.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","જો તમે આઇટમની માત્રા {2} {0} {1}, તો યોજના {3 the આઇટમ પર લાગુ કરવામાં આવશે.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","જો તમે item 0} {1} મૂલ્યની આઇટમ {2} છો, તો યોજના {3 the આઇટમ પર લાગુ કરવામાં આવશે.", +"As the field {0} is enabled, the field {1} is mandatory.","ક્ષેત્ર {0} સક્ષમ કરેલ હોવાથી, ક્ષેત્ર {1} ફરજિયાત છે.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","ક્ષેત્ર {0} સક્ષમ કરેલ હોવાથી, ક્ષેત્ર the 1} નું મૂલ્ય 1 કરતા વધારે હોવું જોઈએ.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"આઇટમ {1} ના સીરીયલ નંબર {0 deliver આપી શકાતી નથી, કારણ કે તે ફુલફિલ સેલ્સ ઓર્ડર {2 to માટે અનામત છે", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","સેલ્સ ઓર્ડર {0} પાસે આઇટમ for 1} માટે આરક્ષણ છે, તમે ફક્ત reserved 0} સામે આરક્ષિત {1 deliver આપી શકો છો.", +{0} Serial No {1} cannot be delivered,. 0} સીરીયલ નંબર {1} વિતરિત કરી શકાતી નથી, +Row {0}: Subcontracted Item is mandatory for the raw material {1},પંક્તિ {0}: કાચા માલ Sub 1} માટે સબકontન્ટ્રેક્ટ આઇટમ ફરજિયાત છે, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","જેમ કે ત્યાં પૂરતી કાચી સામગ્રી છે, વેરહાઉસ Material 0} માટે મટીરિયલ વિનંતી આવશ્યક નથી.", +" If you still want to proceed, please enable {0}.","જો તમે હજી પણ આગળ વધવા માંગતા હો, તો કૃપા કરીને {0 enable સક્ષમ કરો.", +The item referenced by {0} - {1} is already invoiced,{0} - {1} દ્વારા સંદર્ભિત આઇટમ પહેલેથી જ ભરતિયું છે, +Therapy Session overlaps with {0},ઉપચાર સત્ર {0 with સાથે ઓવરલેપ થાય છે, +Therapy Sessions Overlapping,ઉપચાર સત્રો ઓવરલેપિંગ, +Therapy Plans,ઉપચાર યોજનાઓ, +"Item Code, warehouse, quantity are required on row {0}","આઇટમ કોડ, વેરહાઉસ, જથ્થો પંક્તિ પર આવશ્યક છે {0}", +Get Items from Material Requests against this Supplier,આ સપ્લાયર સામે સામગ્રી વિનંતીઓમાંથી આઇટમ્સ મેળવો, +Enable European Access,યુરોપિયન Enableક્સેસને સક્ષમ કરો, +Creating Purchase Order ...,ખરીદી Orderર્ડર બનાવી રહ્યાં છે ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","નીચેની આઇટમ્સના ડિફaultલ્ટ સપ્લાયર્સમાંથી સપ્લાયર પસંદ કરો. પસંદગી પર, ફક્ત પસંદ કરેલા સપ્લાયરની વસ્તુઓ સામે ખરીદ ઓર્ડર આપવામાં આવશે.", +Row #{}: You must select {} serial numbers for item {}.,પંક્તિ # {}: તમારે આઇટમ for for માટે સીરીયલ નંબરો પસંદ કરવા આવશ્યક છે., diff --git a/erpnext/translations/he.csv b/erpnext/translations/he.csv index 1ea4832e99..29e6f6afc3 100644 --- a/erpnext/translations/he.csv +++ b/erpnext/translations/he.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"לא נ Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',לא ניתן לנכות כאשר הקטגוריה היא עבור 'הערכת שווי' או 'תפוצה וסך הכל', "Cannot delete Serial No {0}, as it is used in stock transactions","לא יכול למחוק את מספר סידורי {0}, כפי שהוא משמש בעסקות מניות", Cannot enroll more than {0} students for this student group.,לא יכול לרשום יותר מ {0} סטודנטים עבור קבוצת סטודנטים זה., -Cannot find Item with this barcode,לא ניתן למצוא פריט עם ברקוד זה, Cannot find active Leave Period,לא ניתן למצוא תקופת חופשה פעילה, Cannot produce more Item {0} than Sales Order quantity {1},לא יכול לייצר יותר פריט {0} מאשר כמות להזמין מכירות {1}, Cannot promote Employee with status Left,לא ניתן לקדם עובד עם סטטוס שמאל, @@ -690,7 +689,6 @@ Create Variants,צור גרסאות, "Create and manage daily, weekly and monthly email digests.","יצירה וניהול של מעכל דוא""ל יומי, שבועית וחודשית.", Create customer quotes,צור הצעות מחיר ללקוחות, Create rules to restrict transactions based on values.,יצירת כללים להגבלת עסקות המבוססות על ערכים., -Created By,נוצר על-ידי, Created {0} scorecards for {1} between: ,יצר {0} כרטיסי ניקוד עבור {1} בין:, Creating Company and Importing Chart of Accounts,יצירת חברה וייבוא תרשים חשבונות, Creating Fees,יצירת עמלות, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,למחסן נדרש לפני הגשה, For row {0}: Enter Planned Qty,לשורה {0}: הזן כמות מתוכננת, "For {0}, only credit accounts can be linked against another debit entry","עבור {0}, רק חשבונות האשראי יכולים להיות מקושרים נגד כניסת חיוב נוספת", "For {0}, only debit accounts can be linked against another credit entry","עבור {0}, רק חשבונות החיוב יכולים להיות מקושרים נגד כניסת אשראי אחרת", -Form View,תצוגת טופס, Forum Activity,פעילות בפורום, Free item code is not selected,קוד פריט בחינם לא נבחר, Freight and Forwarding Charges,הוצאות הובלה והשילוח, @@ -2638,7 +2635,6 @@ Send SMS,שלח SMS, Send mass SMS to your contacts,שלח SMS המוני לאנשי הקשר שלך, Sensitivity,רְגִישׁוּת, Sent,נשלח, -Serial #,סידורי #, Serial No and Batch,אין ו אצווה סידורי, Serial No is mandatory for Item {0},מספר סידורי הוא חובה עבור פריט {0}, Serial No {0} does not belong to Batch {1},מספר סידורי {0} אינו שייך לאצווה {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ברוכים הבאים לERPNext, What do you need help with?,עם מה אתה צריך עזרה?, What does it do?,מה זה עושה?, Where manufacturing operations are carried.,איפה פעולות ייצור מתבצעות., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","בעת יצירת חשבון עבור חברת ילדים {0}, חשבון האב {1} לא נמצא. אנא צור חשבון הורים בתאריך COA תואם", White,לבן, Wire Transfer,העברה בנקאית, WooCommerce Products,מוצרי WooCommerce, @@ -3493,6 +3488,7 @@ Likes,אוהב, Merge with existing,מיזוג עם קיים, Office,משרד, Orientation,נטייה, +Parent,הורה, Passive,פסיבי, Payment Failed,התשלום נכשל, Percent,אחוזים, @@ -3543,6 +3539,7 @@ Shift,מִשׁמֶרֶת, Show {0},הצג את {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","תווים מיוחדים למעט "-", "#", ".", "/", "{" ו- "}" אינם מורשים בסדרות שמות", Target Details,פרטי יעד, +{0} already has a Parent Procedure {1}.,{0} כבר יש נוהל הורים {1}., API,ממשק API, Annual,שנתי, Approved,אושר, @@ -4241,7 +4238,6 @@ Download as JSON,הורד כ- JSON, End date can not be less than start date,תאריך סיום לא יכול להיות פחות מתאריך ההתחלה, For Default Supplier (Optional),לספק ברירת מחדל (אופציונלי), From date cannot be greater than To date,מתאריך לא יכול להיות גדול יותר מאשר תאריך, -Get items from,קבל פריטים מ, Group by,קבוצה על ידי, In stock,במלאי, Item name,שם פריט, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,פרמטר תבנית משוב איכות, Quality Goal,מטרה איכותית, Monitoring Frequency,תדר ניטור, Weekday,יוֹם חוֹל, -January-April-July-October,ינואר-אפריל-יולי-אוקטובר, -Revision and Revised On,עדכון ומתוקן, -Revision,תיקון, -Revised On,מתוקן ב, Objectives,מטרות, Quality Goal Objective,מטרת יעד איכותית, Objective,מַטָרָה, @@ -7574,7 +7566,6 @@ Parent Procedure,נוהל הורים, Processes,תהליכים, Quality Procedure Process,תהליך נוהל איכות, Process Description,תיאור תהליך, -Child Procedure,נוהל ילדים, Link existing Quality Procedure.,קשר נוהל איכות קיים., Additional Information,מידע נוסף, Quality Review Objective,מטרת סקירת איכות, @@ -8557,7 +8548,6 @@ Purchase Order Trends,לרכוש מגמות להזמין, Purchase Receipt Trends,מגמות קבלת רכישה, Purchase Register,רכישת הרשמה, Quotation Trends,מגמות ציטוט, -Quoted Item Comparison,פריט מצוטט השוואה, Received Items To Be Billed,פריטים שהתקבלו לחיוב, Qty to Order,כמות להזמנה, Requested Items To Be Transferred,פריטים מבוקשים שיועברו, @@ -9091,7 +9081,6 @@ Unmarked days,ימים לא מסומנים, Absent Days,ימי נעדרים, Conditions and Formula variable and example,משתנה תנאי ונוסחה ודוגמא, Feedback By,משוב מאת, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,מדור ייצור, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","כברירת מחדל, שם הלקוח מוגדר לפי השם המלא שהוזן. אם אתה רוצה שלקוחות יקראו על ידי", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,הגדר את מחירון ברירת המחדל בעת יצירת עסקת מכירה חדשה. מחירי הפריטים ייאספו ממחירון זה., @@ -9692,7 +9681,6 @@ Available Balance,יתרה זמינה, Reserved Balance,יתרה שמורה, Uncleared Balance,איזון לא ברור, Payment related to {0} is not completed,התשלום הקשור ל- {0} לא הושלם, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,שורה מספר {}: לא סידורי {}. {} כבר הועבר לחשבונית קופה אחרת. אנא בחר מס 'סדרתי תקף., Row #{}: Item Code: {} is not available under warehouse {}.,שורה מספר {}: קוד פריט: {} אינו זמין במחסן {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,שורה מספר {}: כמות המלאי אינה מספיקה עבור קוד הפריט: {} מתחת למחסן {}. כמות זמינה {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,שורה מספר {}: בחר מספר סדרתי ואצווה כנגד פריט: {} או הסר אותו כדי להשלים את העסקה., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},כמות לא זמינה עבו Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,אנא אפשר הרשאה למניה שלילית בהגדרות המניה או צור הזנת מלאי כדי להמשיך., No Inpatient Record found against patient {0},לא נמצא רישום אשפוז כנגד המטופל {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,כבר קיים צו תרופות לטיפול באשפוז {0} נגד מפגש חולים {1}., +Allow In Returns,אפשר החזרות, +Hide Unavailable Items,הסתר פריטים שאינם זמינים, +Apply Discount on Discounted Rate,החל הנחה בשיעור מוזל, +Therapy Plan Template,תבנית תכנית טיפול, +Fetching Template Details,אחזור פרטי תבנית, +Linked Item Details,פרטי פריט מקושר, +Therapy Types,סוגי הטיפול, +Therapy Plan Template Detail,פרט תבנית תכנית טיפול, +Non Conformance,אי התאמה, +Process Owner,בעל תהליך, +Corrective Action,פעולה מתקנת, +Preventive Action,פעולה מונעת, +Problem,בְּעָיָה, +Responsible,אחראי, +Completion By,השלמה מאת, +Process Owner Full Name,שם מלא של בעל התהליך, +Right Index,אינדקס נכון, +Left Index,אינדקס שמאל, +Sub Procedure,נוהל משנה, +Passed,עבר, +Print Receipt,הדפס קבלה, +Edit Receipt,ערוך קבלה, +Focus on search input,התמקדו בקלט חיפוש, +Focus on Item Group filter,התמקדו במסנן קבוצת הפריטים, +Checkout Order / Submit Order / New Order,הזמנת קופה / הגשת הזמנה / הזמנה חדשה, +Add Order Discount,הוסף הנחת הזמנה, +Item Code: {0} is not available under warehouse {1}.,קוד פריט: {0} אינו זמין במחסן {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,מספרים סידוריים לא זמינים עבור פריט {0} במחסן {1}. נסה להחליף מחסן., +Fetched only {0} available serial numbers.,הביא רק {0} מספרים סידוריים זמינים., +Switch Between Payment Modes,החלף בין אמצעי תשלום, +Enter {0} amount.,הזן סכום {0}., +You don't have enough points to redeem.,אין לך מספיק נקודות למימוש., +You can redeem upto {0}.,אתה יכול לממש עד {0}., +Enter amount to be redeemed.,הזן סכום למימוש., +You cannot redeem more than {0}.,אינך יכול לממש יותר מ- {0}., +Open Form View,פתח את תצוגת הטופס, +POS invoice {0} created succesfully,חשבונית קופה {0} נוצרה בהצלחה, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,כמות המלאי לא מספיקה עבור קוד הפריט: {0} מתחת למחסן {1}. כמות זמינה {2}., +Serial No: {0} has already been transacted into another POS Invoice.,מספר סידורי: {0} כבר הועבר לחשבונית קופה אחרת., +Balance Serial No,איזון סידורי מס, +Warehouse: {0} does not belong to {1},מחסן: {0} אינו שייך ל {1}, +Please select batches for batched item {0},בחר קבוצות עבור פריט אצווה {0}, +Please select quantity on row {0},בחר כמות בשורה {0}, +Please enter serial numbers for serialized item {0},הזן מספרים סידוריים עבור פריט מסדרת {0}, +Batch {0} already selected.,אצווה {0} כבר נבחרה., +Please select a warehouse to get available quantities,אנא בחר מחסן לקבלת כמויות זמינות, +"For transfer from source, selected quantity cannot be greater than available quantity","להעברה ממקור, הכמות שנבחרה לא יכולה להיות גדולה מהכמות הזמינה", +Cannot find Item with this Barcode,לא ניתן למצוא פריט עם ברקוד זה, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},חובה {0}. אולי רשומת המרת מטבע לא נוצרה עבור {1} עד {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} הגיש נכסים המקושרים אליו. עליך לבטל את הנכסים כדי ליצור החזר רכישה., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,לא ניתן לבטל מסמך זה מכיוון שהוא מקושר לנכס שהוגש {0}. אנא בטל אותו כדי להמשיך., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,שורה מספר {}: מספר סידורי {} כבר הועבר לחשבונית קופה אחרת. אנא בחר מס 'סדרתי תקף., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,שורה מספר {}: מספר סידורי. {} כבר הועבר לחשבונית קופה אחרת. אנא בחר מס 'סדרתי תקף., +Item Unavailable,הפריט לא זמין, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},שורה מספר {}: לא ניתן להחזיר מספר סידורי {} מכיוון שהוא לא בוצע בחשבונית המקורית {}, +Please set default Cash or Bank account in Mode of Payment {},הגדר ברירת מחדל של מזומן או חשבון בנק במצב תשלום {}, +Please set default Cash or Bank account in Mode of Payments {},הגדר ברירת מחדל של מזומן או חשבון בנק במצב תשלומים {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,ודא ש- {} חשבון הוא חשבון מאזן. באפשרותך לשנות את חשבון האב לחשבון מאזן או לבחור חשבון אחר., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,ודא ש- {} החשבון הוא חשבון בתשלום. שנה את סוג החשבון לתשלום או בחר חשבון אחר., +Row {}: Expense Head changed to {} ,שורה {}: ראש ההוצאות השתנה ל- {}, +because account {} is not linked to warehouse {} ,מכיוון שהחשבון {} אינו מקושר למחסן {}, +or it is not the default inventory account,או שזה לא חשבון המלאי המוגדר כברירת מחדל, +Expense Head Changed,ראש ההוצאות הוחלף, +because expense is booked against this account in Purchase Receipt {},מכיוון שההוצאה נרשמת בחשבון זה בקבלת הרכישה {}, +as no Purchase Receipt is created against Item {}. ,מכיוון שלא נוצר קבלת רכישה כנגד פריט {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,זה נעשה כדי לטפל בחשבונאות במקרים בהם קבלת רכישה נוצרת לאחר חשבונית רכישה, +Purchase Order Required for item {},הזמנת רכש נדרשת לפריט {}, +To submit the invoice without purchase order please set {} ,"להגשת החשבונית ללא הזמנת רכש, הגדר {}", +as {} in {},כמו {} ב- {}, +Mandatory Purchase Order,הזמנת רכש חובה, +Purchase Receipt Required for item {},נדרש קבלת רכישה עבור פריט {}, +To submit the invoice without purchase receipt please set {} ,"להגשת החשבונית ללא קבלת רכישה, הגדר {}", +Mandatory Purchase Receipt,קבלת קנייה חובה, +POS Profile {} does not belongs to company {},פרופיל קופה {} אינו שייך לחברה {}, +User {} is disabled. Please select valid user/cashier,המשתמש {} מושבת. אנא בחר משתמש / קופאין תקף, +Row #{}: Original Invoice {} of return invoice {} is {}. ,שורה מספר {}: חשבונית מקורית {} של חשבונית החזר {} היא {}., +Original invoice should be consolidated before or along with the return invoice.,יש לאחד את החשבונית המקורית לפני או יחד עם החשבונית., +You can add original invoice {} manually to proceed.,תוכל להוסיף חשבונית מקורית {} באופן ידני כדי להמשיך., +Please ensure {} account is a Balance Sheet account. ,ודא ש- {} חשבון הוא חשבון מאזן., +You can change the parent account to a Balance Sheet account or select a different account.,באפשרותך לשנות את חשבון האב לחשבון מאזן או לבחור חשבון אחר., +Please ensure {} account is a Receivable account. ,אנא וודא ש- {} החשבון הוא חשבון שניתן לקבל., +Change the account type to Receivable or select a different account.,שנה את סוג החשבון ל- Receivable או בחר חשבון אחר., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},לא ניתן לבטל את {} מכיוון שנקודות הנאמנות שנצברו מומשו. ראשית בטל את ה- {} לא {}, +already exists,כבר קיים, +POS Closing Entry {} against {} between selected period,ערך סגירת קופה {} כנגד {} בין התקופה שנבחרה, +POS Invoice is {},חשבונית קופה היא {}, +POS Profile doesn't matches {},פרופיל קופה אינו תואם {}, +POS Invoice is not {},חשבונית קופה אינה {}, +POS Invoice isn't created by user {},חשבונית קופה לא נוצרה על ידי המשתמש {}, +Row #{}: {},שורה מספר {}: {}, +Invalid POS Invoices,חשבוניות קופה לא חוקיות, +Please add the account to root level Company - {},אנא הוסף את החשבון לחברה ברמת הבסיס - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","בעת יצירת חשבון עבור חברת Child {0}, חשבון האב {1} לא נמצא. אנא צור חשבון הורים בתאריך COA תואם", +Account Not Found,החשבון לא נמצא, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","בעת יצירת חשבון עבור חברת Child {0}, חשבון האם {1} נמצא כחשבון ספר חשבונות.", +Please convert the parent account in corresponding child company to a group account.,המיר את חשבון האם בחברת ילדים מתאימה לחשבון קבוצתי., +Invalid Parent Account,חשבון הורה לא חוקי, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","שינוי שם זה מותר רק דרך חברת האם {0}, כדי למנוע אי התאמה.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","אם אתה {0} {1} כמויות של הפריט {2}, התוכנית {3} תחול על הפריט.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","אם אתה {0} {1} שווה פריט {2}, התוכנית {3} תחול על הפריט.", +"As the field {0} is enabled, the field {1} is mandatory.","מאחר שהשדה {0} מופעל, השדה {1} הוא חובה.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","מאחר שהשדה {0} מופעל, הערך של השדה {1} צריך להיות יותר מ -1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},לא ניתן לספק מספר סידורי {0} של פריט {1} מכיוון שהוא שמור להזמנת מכירה מלאה {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","להזמנת מכר {0} יש הזמנה לפריט {1}, אתה יכול לספק שמורה רק {1} כנגד {0}.", +{0} Serial No {1} cannot be delivered,לא ניתן לספק {0} מספר סידורי {1}, +Row {0}: Subcontracted Item is mandatory for the raw material {1},שורה {0}: פריט בקבלנות משנה הוא חובה עבור חומר הגלם {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","מכיוון שיש מספיק חומרי גלם, בקשת החומרים אינה נדרשת עבור מחסן {0}.", +" If you still want to proceed, please enable {0}.","אם אתה עדיין רוצה להמשיך, הפעל את {0}.", +The item referenced by {0} - {1} is already invoiced,הפריט אליו הוזכר {0} - {1} כבר מחויב, +Therapy Session overlaps with {0},מושב טיפולי חופף עם {0}, +Therapy Sessions Overlapping,מפגשי טיפול חופפים, +Therapy Plans,תוכניות טיפול, +"Item Code, warehouse, quantity are required on row {0}","קוד פריט, מחסן, כמות נדרשים בשורה {0}", +Get Items from Material Requests against this Supplier,קבל פריטים מבקשות חומר נגד ספק זה, +Enable European Access,אפשר גישה אירופית, +Creating Purchase Order ...,יוצר הזמנת רכש ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","בחר ספק מבין ספקי ברירת המחדל של הפריטים למטה. בבחירה, הזמנת רכש תתבצע כנגד פריטים השייכים לספק שנבחר בלבד.", +Row #{}: You must select {} serial numbers for item {}.,שורה מספר {}: עליך לבחור {} מספרים סידוריים לפריט {}., diff --git a/erpnext/translations/hi.csv b/erpnext/translations/hi.csv index df99356eb8..c385fc6ef6 100644 --- a/erpnext/translations/hi.csv +++ b/erpnext/translations/hi.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',श् Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',घटा नहीं सकते जब श्रेणी 'मूल्यांकन' या 'Vaulation और कुल' के लिए है, "Cannot delete Serial No {0}, as it is used in stock transactions","नहीं हटा सकते सीरियल नहीं {0}, यह शेयर लेनदेन में इस्तेमाल किया जाता है के रूप में", Cannot enroll more than {0} students for this student group.,{0} इस छात्र समूह के लिए छात्रों की तुलना में अधिक नामांकन नहीं कर सकता।, -Cannot find Item with this barcode,इस बारकोड के साथ आइटम नहीं मिल सकता है, Cannot find active Leave Period,सक्रिय छुट्टी अवधि नहीं मिल सका, Cannot produce more Item {0} than Sales Order quantity {1},अधिक आइटम उत्पादन नहीं कर सकते {0} से बिक्री आदेश मात्रा {1}, Cannot promote Employee with status Left,स्थिति के साथ कर्मचारी को बढ़ावा नहीं दे सकता है, @@ -690,7 +689,6 @@ Create Variants,वेरिएंट बनाएँ, "Create and manage daily, weekly and monthly email digests.","बनाएँ और दैनिक, साप्ताहिक और मासिक ईमेल हज़म का प्रबंधन .", Create customer quotes,ग्राहक उद्धरण बनाएँ, Create rules to restrict transactions based on values.,मूल्यों पर आधारित लेनदेन को प्रतिबंधित करने के नियम बनाएँ ., -Created By,द्वारा बनाया गया, Created {0} scorecards for {1} between: ,{1} के लिए {1} स्कोरकार्ड बनाया:, Creating Company and Importing Chart of Accounts,कंपनी बनाना और खातों का चार्ट आयात करना, Creating Fees,फीस बनाना, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,गोदाम की आवश्य For row {0}: Enter Planned Qty,पंक्ति {0} के लिए: नियोजित मात्रा दर्ज करें, "For {0}, only credit accounts can be linked against another debit entry","{0}, केवल ऋण खातों अन्य डेबिट प्रविष्टि के खिलाफ जोड़ा जा सकता है के लिए", "For {0}, only debit accounts can be linked against another credit entry","{0}, केवल डेबिट खातों एक और क्रेडिट प्रविष्टि के खिलाफ जोड़ा जा सकता है के लिए", -Form View,फॉर्म देखें, Forum Activity,फोरम गतिविधि, Free item code is not selected,नि: शुल्क आइटम कोड का चयन नहीं किया गया है, Freight and Forwarding Charges,फ्रेट और अग्रेषण शुल्क, @@ -2638,7 +2635,6 @@ Send SMS,एसएमएस भेजें, Send mass SMS to your contacts,अपने संपर्कों के लिए बड़े पैमाने पर एसएमएस भेजें, Sensitivity,संवेदनशीलता, Sent,भेजे गए, -Serial #,सीरियल #, Serial No and Batch,सीरियल नहीं और बैच, Serial No is mandatory for Item {0},सीरियल मद के लिए अनिवार्य है {0}, Serial No {0} does not belong to Batch {1},सीरियल नंबर {0} बैच से संबंधित नहीं है {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ERPNext में आपका स्वागत है, What do you need help with?,तुम्हें किसमें मदद चाहिए?, What does it do?,यह क्या करता है?, Where manufacturing operations are carried.,निर्माण कार्यों कहां किया जाता है।, -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","चाइल्ड कंपनी {0} के लिए खाता बनाते समय, पैरेंट अकाउंट {1} नहीं मिला। कृपया संबंधित COA में मूल खाता बनाएँ", White,सफेद, Wire Transfer,वायर ट्रांसफर, WooCommerce Products,WooCommerce उत्पाद, @@ -3493,6 +3488,7 @@ Likes,पसंद, Merge with existing,मौजूदा साथ मर्ज, Office,कार्यालय, Orientation,अभिविन्यास, +Parent,माता-पिता, Passive,निष्क्रिय, Payment Failed,भुगतान असफल हुआ, Percent,प्रतिशत, @@ -3543,6 +3539,7 @@ Shift,खिसक जाना, Show {0},{0} दिखाएं, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",""-", "#", "।", "/", "{" और "}" को छोड़कर विशेष वर्ण श्रृंखला में अनुमति नहीं है", Target Details,लक्ष्य विवरण, +{0} already has a Parent Procedure {1}.,{0} पहले से ही एक पेरेंट प्रोसीजर {1} है।, API,एपीआई, Annual,वार्षिक, Approved,अनुमोदित, @@ -4241,7 +4238,6 @@ Download as JSON,JSON के रूप में डाउनलोड करे End date can not be less than start date,समाप्ति तिथि आरंभ तिथि से कम नहीं हो सकता, For Default Supplier (Optional),डिफ़ॉल्ट प्रदायक (वैकल्पिक) के लिए, From date cannot be greater than To date,दिनांक से दिनांक से अधिक नहीं हो सकता है, -Get items from,से आइटम प्राप्त, Group by,समूह द्वारा, In stock,स्टॉक में, Item name,मद का नाम, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,गुणवत्ता प्रतिक Quality Goal,गुणवत्ता लक्ष्य, Monitoring Frequency,निगरानी की आवृत्ति, Weekday,काम करने के दिन, -January-April-July-October,जनवरी से अप्रैल-जुलाई से अक्टूबर, -Revision and Revised On,संशोधन और संशोधित पर, -Revision,संशोधन, -Revised On,पर संशोधित, Objectives,उद्देश्य, Quality Goal Objective,गुणवत्ता लक्ष्य उद्देश्य, Objective,लक्ष्य, @@ -7574,7 +7566,6 @@ Parent Procedure,जनक प्रक्रिया, Processes,प्रक्रियाओं, Quality Procedure Process,गुणवत्ता प्रक्रिया प्रक्रिया, Process Description,प्रक्रिया वर्णन, -Child Procedure,बाल प्रक्रिया, Link existing Quality Procedure.,लिंक मौजूदा गुणवत्ता प्रक्रिया।, Additional Information,अतिरिक्त जानकारी, Quality Review Objective,गुणवत्ता की समीक्षा उद्देश्य, @@ -8557,7 +8548,6 @@ Purchase Order Trends,आदेश रुझान खरीद, Purchase Receipt Trends,खरीद रसीद रुझान, Purchase Register,इन पंजीकृत खरीद, Quotation Trends,कोटेशन रुझान, -Quoted Item Comparison,उद्धरित मद तुलना, Received Items To Be Billed,बिल करने के लिए प्राप्त आइटम, Qty to Order,मात्रा आदेश को, Requested Items To Be Transferred,हस्तांतरित करने का अनुरोध आइटम, @@ -9091,7 +9081,6 @@ Unmarked days,अचिंतित दिन, Absent Days,अनुपस्थित दिन, Conditions and Formula variable and example,शर्तें और सूत्र चर और उदाहरण, Feedback By,प्रतिक्रिया द्वारा, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-। एम.एम. .-। DD.-, Manufacturing Section,विनिर्माण अनुभाग, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","डिफ़ॉल्ट रूप से, ग्राहक का नाम पूर्ण नाम के अनुसार सेट किया गया है। यदि आप चाहते हैं कि ग्राहक एक के नाम से हों", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,नया विक्रय लेनदेन बनाते समय डिफ़ॉल्ट मूल्य सूची कॉन्फ़िगर करें। इस मूल्य सूची से आइटम मूल्य प्राप्त किए जाएंगे।, @@ -9692,7 +9681,6 @@ Available Balance,उपलब्ध शेष राशि, Reserved Balance,आरक्षित शेष, Uncleared Balance,अस्पष्ट शेष, Payment related to {0} is not completed,{0} से संबंधित भुगतान पूरा नहीं हुआ है, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,रो # {}: सीरियल नंबर {}। {} को पहले ही किसी अन्य पीओएस चालान में हस्तांतरित कर दिया गया है। कृपया मान्य क्रम संख्या का चयन करें।, Row #{}: Item Code: {} is not available under warehouse {}.,पंक्ति # {}: आइटम कोड: {} गोदाम {} के तहत उपलब्ध नहीं है।, Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,पंक्ति # {}: आइटम कोड के लिए स्टॉक मात्रा पर्याप्त नहीं है: {} गोदाम {} के तहत। उपलब्ध मात्रा {}।, Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,पंक्ति # {}: कृपया आइटम के खिलाफ एक सीरियल नंबर और बैच चुनें: {} या लेनदेन को पूरा करने के लिए इसे हटा दें।, @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},गोदाम में {0} Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,कृपया शेयर सेटिंग्स में नकारात्मक स्टॉक को अनुमति दें या आगे बढ़ने के लिए स्टॉक एंट्री बनाएं।, No Inpatient Record found against patient {0},रोगी के खिलाफ कोई असंगत रिकॉर्ड नहीं मिला {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,रोगी एनकाउंटर {1} के खिलाफ एक रोगी दवा ऑर्डर {0} पहले से मौजूद है।, +Allow In Returns,रिटर्न में अनुमति दें, +Hide Unavailable Items,अनुपलब्ध आइटम छिपाएँ, +Apply Discount on Discounted Rate,रियायती दर पर छूट लागू करें, +Therapy Plan Template,थेरेपी प्लान टेम्पलेट, +Fetching Template Details,टेम्पलेट विवरण प्राप्त करना, +Linked Item Details,लिंक्ड आइटम विवरण, +Therapy Types,थेरेपी के प्रकार, +Therapy Plan Template Detail,थेरेपी योजना टेम्पलेट विस्तार, +Non Conformance,गैर अनुरूपता, +Process Owner,कार्यचालक, +Corrective Action,सुधार कार्य, +Preventive Action,निवारक कार्रवाई, +Problem,मुसीबत, +Responsible,उत्तरदायी, +Completion By,द्वारा पूर्ण करना, +Process Owner Full Name,प्रोसेस ओनर पूरा नाम, +Right Index,सही सूचकांक, +Left Index,बायाँ सूचकांक, +Sub Procedure,उप प्रक्रिया, +Passed,बीतने के, +Print Receipt,प्रिंट रसीद, +Edit Receipt,रसीद संपादित करें, +Focus on search input,खोज इनपुट पर ध्यान दें, +Focus on Item Group filter,आइटम समूह फ़िल्टर पर ध्यान दें, +Checkout Order / Submit Order / New Order,चेकआउट आदेश / आदेश भेजें / नया आदेश, +Add Order Discount,आदेश छूट जोड़ें, +Item Code: {0} is not available under warehouse {1}.,आइटम कोड: {0} गोदाम {1} के तहत उपलब्ध नहीं है।, +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,वेयरहाउस {1} के तहत आइटम {0} के लिए सीरियल नंबर अनुपलब्ध है। कृपया गोदाम बदलने का प्रयास करें।, +Fetched only {0} available serial numbers.,केवल {0} उपलब्ध सीरियल नंबर।, +Switch Between Payment Modes,भुगतान मोड के बीच स्विच करें, +Enter {0} amount.,{0} राशि दर्ज करें।, +You don't have enough points to redeem.,आपके पास रिडीम करने के लिए पर्याप्त बिंदु नहीं हैं।, +You can redeem upto {0}.,आप {0} तक रिडीम कर सकते हैं।, +Enter amount to be redeemed.,भुनाने के लिए राशि दर्ज करें।, +You cannot redeem more than {0}.,आप {0} से अधिक नहीं भुना सकते।, +Open Form View,प्रपत्र देखें खोलें, +POS invoice {0} created succesfully,पीओएस चालान {0} सफलतापूर्वक बनाया गया, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,स्टॉक कोड आइटम कोड के लिए पर्याप्त नहीं है: {0} गोदाम {1} के तहत। उपलब्ध मात्रा {2}।, +Serial No: {0} has already been transacted into another POS Invoice.,सीरियल नंबर: {0} को पहले ही एक और पीओएस चालान में बदल दिया गया है।, +Balance Serial No,बैलेंस सीरियल नं, +Warehouse: {0} does not belong to {1},वेयरहाउस: {0} का संबंध {1} से नहीं है, +Please select batches for batched item {0},कृपया बैच आइटम {0} के लिए बैच चुनें, +Please select quantity on row {0},कृपया पंक्ति {0} पर मात्रा का चयन करें, +Please enter serial numbers for serialized item {0},कृपया क्रमांकित आइटम {0} के लिए सीरियल नंबर दर्ज करें, +Batch {0} already selected.,बैच {0} पहले से चयनित है।, +Please select a warehouse to get available quantities,कृपया उपलब्ध मात्रा प्राप्त करने के लिए एक गोदाम का चयन करें, +"For transfer from source, selected quantity cannot be greater than available quantity","स्रोत से स्थानांतरण के लिए, चयनित मात्रा उपलब्ध मात्रा से अधिक नहीं हो सकती है", +Cannot find Item with this Barcode,इस बारकोड के साथ आइटम नहीं मिल सकता है, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} अनिवार्य है। शायद मुद्रा विनिमय रिकॉर्ड {1} से {2} के लिए नहीं बनाया गया है, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} ने इससे जुड़ी संपत्ति जमा की है। आपको खरीद वापसी बनाने के लिए परिसंपत्तियों को रद्द करने की आवश्यकता है।, +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,इस दस्तावेज़ को रद्द नहीं किया जा सकता क्योंकि यह सबमिट की गई संपत्ति {0} से जुड़ा हुआ है। कृपया इसे जारी रखने के लिए रद्द करें।, +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,पंक्ति # {}: सीरियल नंबर {} को पहले से ही एक और पीओएस चालान में बदल दिया गया है। कृपया मान्य क्रम संख्या का चयन करें।, +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,पंक्ति # {}: सीरियल नं। {} को पहले से ही एक और पीओएस चालान में बदल दिया गया है। कृपया मान्य क्रम संख्या का चयन करें।, +Item Unavailable,आइटम उपलब्ध नहीं है, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},पंक्ति # {}: सीरियल नंबर {} को वापस नहीं किया जा सकता क्योंकि इसे मूल चालान में नहीं भेजा गया था {}, +Please set default Cash or Bank account in Mode of Payment {},कृपया भुगतान के मोड में डिफ़ॉल्ट कैश या बैंक खाते को सेट करें {}, +Please set default Cash or Bank account in Mode of Payments {},कृपया भुगतान के मोड में डिफ़ॉल्ट कैश या बैंक खाते को सेट करें {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,कृपया सुनिश्चित करें कि {} खाता एक बैलेंस शीट खाता है। आप मूल खाते को एक बैलेंस शीट खाते में बदल सकते हैं या एक अलग खाते का चयन कर सकते हैं।, +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,कृपया सुनिश्चित करें कि {} खाता एक देय खाता है। खाता प्रकार को देय में बदलें या एक अलग खाता चुनें।, +Row {}: Expense Head changed to {} ,पंक्ति {}: व्यय हेड को बदलकर {}, +because account {} is not linked to warehouse {} ,खाता {} गोदाम से जुड़ा नहीं है {}, +or it is not the default inventory account,या यह डिफ़ॉल्ट इन्वेंट्री खाता नहीं है, +Expense Head Changed,व्यय सिर बदल गया, +because expense is booked against this account in Purchase Receipt {},क्योंकि इस खाते के खिलाफ खरीद रसीद {} में खर्च की गई है, +as no Purchase Receipt is created against Item {}. ,जैसा कि कोई खरीद रसीद आइटम {} के विरुद्ध नहीं बनाई गई है।, +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,यह उन मामलों के लिए लेखांकन को संभालने के लिए किया जाता है जब खरीद चालान के बाद खरीद रसीद बनाई जाती है, +Purchase Order Required for item {},आइटम के लिए आवश्यक खरीद आदेश {}, +To submit the invoice without purchase order please set {} ,खरीद आदेश के बिना चालान जमा करने के लिए कृपया {} सेट करें, +as {} in {},जैसे की {}, +Mandatory Purchase Order,अनिवार्य खरीद आदेश, +Purchase Receipt Required for item {},आइटम {} के लिए खरीद रसीद आवश्यक, +To submit the invoice without purchase receipt please set {} ,खरीद रसीद के बिना चालान जमा करने के लिए कृपया {} सेट करें, +Mandatory Purchase Receipt,अनिवार्य खरीद रसीद, +POS Profile {} does not belongs to company {},POS प्रोफ़ाइल {} कंपनी {} से संबंधित नहीं है, +User {} is disabled. Please select valid user/cashier,उपयोगकर्ता {} अक्षम है। कृपया मान्य उपयोगकर्ता / कैशियर का चयन करें, +Row #{}: Original Invoice {} of return invoice {} is {}. ,पंक्ति # {}: मूल चालान {} का रिटर्न चालान {} {} है।, +Original invoice should be consolidated before or along with the return invoice.,मूल चालान को वापसी चालान से पहले या साथ में समेकित किया जाना चाहिए।, +You can add original invoice {} manually to proceed.,आगे बढ़ने के लिए आप मैन्युअल रूप से मूल इनवॉइस {} जोड़ सकते हैं।, +Please ensure {} account is a Balance Sheet account. ,कृपया सुनिश्चित करें कि {} खाता एक बैलेंस शीट खाता है।, +You can change the parent account to a Balance Sheet account or select a different account.,आप मूल खाते को एक बैलेंस शीट खाते में बदल सकते हैं या एक अलग खाते का चयन कर सकते हैं।, +Please ensure {} account is a Receivable account. ,कृपया सुनिश्चित करें कि {} खाता एक प्राप्य खाता है।, +Change the account type to Receivable or select a different account.,खाता प्रकार को प्राप्य में बदलें या किसी अन्य खाते का चयन करें।, +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{- अर्जित किए गए वफादारी अंक को भुनाया नहीं जा सकता है। पहले {} नहीं {} रद्द करें, +already exists,पहले से ही मौजूद है, +POS Closing Entry {} against {} between selected period,पीओएस क्लोजिंग एंट्री {} चयनित अवधि के बीच {} के खिलाफ, +POS Invoice is {},पीओएस चालान {} है, +POS Profile doesn't matches {},POS प्रोफ़ाइल {} से मेल नहीं खाती, +POS Invoice is not {},पीओएस चालान {} नहीं है, +POS Invoice isn't created by user {},POS चालान उपयोगकर्ता द्वारा नहीं बनाया गया है {}, +Row #{}: {},रो # {}: {}, +Invalid POS Invoices,अमान्य POS चालान, +Please add the account to root level Company - {},कृपया खाते को रूट लेवल कंपनी में जोड़ें - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","चाइल्ड कंपनी {0} के लिए खाता बनाते समय, मूल खाता {1} नहीं मिला। कृपया संबंधित COA में मूल खाता बनाएँ", +Account Not Found,खता नहीं मिला, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","चाइल्ड कंपनी {0} के लिए खाता बनाते समय, माता-पिता खाता {1} खाता बही के रूप में पाया गया।", +Please convert the parent account in corresponding child company to a group account.,कृपया संबंधित चाइल्ड कंपनी में पैरेंट अकाउंट को ग्रुप अकाउंट में बदलें।, +Invalid Parent Account,अमान्य जनक खाता, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",नाम बदलने से बचने के लिए केवल मूल कंपनी {0} के माध्यम से इसका नाम बदलने की अनुमति है।, +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","यदि आप {0} {1} आइटम {2} की मात्रा, स्कीम {3} को आइटम पर लागू करेंगे।", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","यदि आप {0} {1} मूल्य की वस्तु {2}, योजना {3} को आइटम पर लागू किया जाएगा।", +"As the field {0} is enabled, the field {1} is mandatory.","जैसा कि फ़ील्ड {0} सक्षम है, फ़ील्ड {1} अनिवार्य है।", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","जैसा कि फ़ील्ड {0} सक्षम है, फ़ील्ड {1} का मान 1 से अधिक होना चाहिए।", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},यह आइटम {1} के सीरियल नंबर {0} को वितरित नहीं कर सकता क्योंकि यह पूर्ण बिक्री आदेश {2} के लिए आरक्षित है।, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","विक्रय आदेश {0} में आइटम {1} के लिए आरक्षण है, आप केवल {0} के खिलाफ आरक्षित {1} वितरित कर सकते हैं।", +{0} Serial No {1} cannot be delivered,{0} सीरियल नंबर {1} वितरित नहीं किया जा सकता है, +Row {0}: Subcontracted Item is mandatory for the raw material {1},पंक्ति {0}: कच्चे माल के लिए उप-खंडित वस्तु अनिवार्य है {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","चूंकि पर्याप्त कच्चे माल हैं, वेयरहाउस {0} के लिए सामग्री अनुरोध की आवश्यकता नहीं है।", +" If you still want to proceed, please enable {0}.","यदि आप अभी भी आगे बढ़ना चाहते हैं, तो कृपया {0} को सक्षम करें।", +The item referenced by {0} - {1} is already invoiced,{0} - {1} द्वारा संदर्भित आइटम का पहले से ही चालान है, +Therapy Session overlaps with {0},थेरेपी सत्र {0} से ओवरलैप होता है, +Therapy Sessions Overlapping,थेरेपी सेशन ओवरलैपिंग, +Therapy Plans,थेरेपी योजनाएं, +"Item Code, warehouse, quantity are required on row {0}","पंक्ति {0} पर आइटम कोड, गोदाम, मात्रा आवश्यक है", +Get Items from Material Requests against this Supplier,इस आपूर्तिकर्ता के विरुद्ध सामग्री अनुरोध से आइटम प्राप्त करें, +Enable European Access,यूरोपीय पहुँच सक्षम करें, +Creating Purchase Order ...,क्रय आदेश बनाना ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","नीचे दी गई वस्तुओं के डिफ़ॉल्ट आपूर्तिकर्ता से एक आपूर्तिकर्ता का चयन करें। चयन पर, केवल चयनित आपूर्तिकर्ता से संबंधित वस्तुओं के खिलाफ एक खरीद ऑर्डर किया जाएगा।", +Row #{}: You must select {} serial numbers for item {}.,पंक्ति # {}: आपको आइटम {} के लिए {} सीरियल नंबर का चयन करना होगा।, diff --git a/erpnext/translations/hr.csv b/erpnext/translations/hr.csv index 073f8efbe2..a544e98868 100644 --- a/erpnext/translations/hr.csv +++ b/erpnext/translations/hr.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Ne mogu Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',Ne mogu odbiti kada je kategorija za "vrednovanje" ili "Vaulation i ukupni ', "Cannot delete Serial No {0}, as it is used in stock transactions","Ne možete izbrisati Serijski broj {0}, kao što se koristi na lageru transakcija", Cannot enroll more than {0} students for this student group.,Ne može se prijaviti više od {0} studenata za ovaj grupe studenata., -Cannot find Item with this barcode,Stavka nije moguće pronaći s ovim barkodom, Cannot find active Leave Period,Nije moguće pronaći aktivno razdoblje odmora, Cannot produce more Item {0} than Sales Order quantity {1},Ne može proizvesti više predmeta {0} od prodajnog naloga količina {1}, Cannot promote Employee with status Left,Ne mogu promovirati zaposlenika sa statusom lijevo, @@ -690,7 +689,6 @@ Create Variants,Napravite varijante, "Create and manage daily, weekly and monthly email digests.","Stvaranje i upravljanje automatskih mailova na dnevnoj, tjednoj i mjesečnoj bazi.", Create customer quotes,Stvaranje kupaca citati, Create rules to restrict transactions based on values.,Napravi pravila za ograničavanje prometa na temelju vrijednosti., -Created By,Stvorio, Created {0} scorecards for {1} between: ,Izrađeno {0} bodovne kartice za {1} između:, Creating Company and Importing Chart of Accounts,Stvaranje tvrtke i uvoz računa, Creating Fees,Stvaranje naknada, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Jer je potrebno Warehouse prije Podnijet For row {0}: Enter Planned Qty,Za redak {0}: unesite planirani iznos, "For {0}, only credit accounts can be linked against another debit entry","Za {0}, samo kreditne računi se mogu povezati protiv drugog ulaska debitnom", "For {0}, only debit accounts can be linked against another credit entry","Za {0}, samo debitne računi se mogu povezati protiv druge kreditne stupanja", -Form View,Prikaz obrasca, Forum Activity,Aktivnost na forumu, Free item code is not selected,Besplatni kod predmeta nije odabran, Freight and Forwarding Charges,Teretni i Forwarding Optužbe, @@ -2638,7 +2635,6 @@ Send SMS,Pošalji SMS, Send mass SMS to your contacts,Pošalji grupne SMS poruke svojim kontaktima, Sensitivity,Osjetljivost, Sent,Poslano, -Serial #,Serijski #, Serial No and Batch,Serijski broj i serije, Serial No is mandatory for Item {0},Serijski Nema je obvezna za točke {0}, Serial No {0} does not belong to Batch {1},Serijski broj {0} ne pripada skupini {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Dobrodošli u ERPNext, What do you need help with?,Što vam je potrebna pomoć?, What does it do?,Što učiniti ?, Where manufacturing operations are carried.,Gdje se odvija proizvodni postupci., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Tijekom stvaranja računa za podmlađivanje Company {0}, nadređeni račun {1} nije pronađen. Napravite nadređeni račun u odgovarajućem COA", White,bijela, Wire Transfer,Wire Transfer, WooCommerce Products,WooCommerce proizvodi, @@ -3493,6 +3488,7 @@ Likes,Voli, Merge with existing,Spoji sa postojećim, Office,Ured, Orientation,Orijentacija, +Parent,Nadređen, Passive,Pasiva, Payment Failed,Plaćanje nije uspjelo, Percent,Postotak, @@ -3543,6 +3539,7 @@ Shift,smjena, Show {0},Prikaži {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Posebni znakovi osim "-", "#", ".", "/", "{" I "}" nisu dopušteni u imenovanju serija", Target Details,Pojedinosti cilja, +{0} already has a Parent Procedure {1}.,{0} već ima roditeljski postupak {1}., API,API, Annual,godišnji, Approved,Odobren, @@ -4241,7 +4238,6 @@ Download as JSON,Preuzmi kao Json, End date can not be less than start date,Datum završetka ne može biti manja od početnog datuma, For Default Supplier (Optional),Za dobavljača zadano (neobavezno), From date cannot be greater than To date,Datum ne može biti veći od datuma, -Get items from,Nabavite stavke iz, Group by,Grupiranje prema, In stock,Na lageru, Item name,Naziv proizvoda, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Parametar predloška za povratne informacije Quality Goal,Cilj kvalitete, Monitoring Frequency,Učestalost nadgledanja, Weekday,radni dan, -January-April-July-October,Siječanj-travanj-srpanj-listopad, -Revision and Revised On,Revizija i revizija dana, -Revision,Revizija, -Revised On,Revidirano dana, Objectives,Ciljevi, Quality Goal Objective,Cilj kvaliteta kvalitete, Objective,Cilj, @@ -7574,7 +7566,6 @@ Parent Procedure,Postupak roditelja, Processes,procesi, Quality Procedure Process,Postupak postupka kvalitete, Process Description,Opis procesa, -Child Procedure,Postupak za dijete, Link existing Quality Procedure.,Povežite postojeći postupak kvalitete., Additional Information,dodatne informacije, Quality Review Objective,Cilj pregleda kvalitete, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Trendovi narudžbenica kupnje, Purchase Receipt Trends,Trend primki, Purchase Register,Popis nabave, Quotation Trends,Trend ponuda, -Quoted Item Comparison,Citirano predmeta za usporedbu, Received Items To Be Billed,Primljeni Proizvodi se naplaćuje, Qty to Order,Količina za narudžbu, Requested Items To Be Transferred,Traženi proizvodi spremni za transfer, @@ -9091,7 +9081,6 @@ Unmarked days,Neoznačeni dani, Absent Days,Dani odsutnosti, Conditions and Formula variable and example,Uvjeti i varijabla formule i primjer, Feedback By,Povratne informacije od, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.GGGG .-. MM .-. DD.-, Manufacturing Section,Odjel za proizvodnju, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Prema zadanim postavkama, ime kupca postavlja se prema unesenom punom imenu. Ako želite da kupce imenuje", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Konfigurirajte zadani cjenik prilikom izrade nove prodajne transakcije. Cijene stavki dohvaćaju se iz ovog cjenika., @@ -9692,7 +9681,6 @@ Available Balance,Dostupno Stanje, Reserved Balance,Rezervirano stanje, Uncleared Balance,Nerazjašnjena ravnoteža, Payment related to {0} is not completed,Isplata vezana uz {0} nije dovršena, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Redak {{}: serijski broj {}. {} je već prebačen na drugu POS fakturu. Odaberite valjani serijski br., Row #{}: Item Code: {} is not available under warehouse {}.,Redak {{}: Šifra artikla: {} nije dostupan u skladištu {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Redak {{}: Količina zaliha nije dovoljna za šifru artikla: {} ispod skladišta {}. Dostupna količina {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Redak {{}: Odaberite serijski broj i skup prema stavci: {} ili ga uklonite da biste dovršili transakciju., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Količina nije dostupna za {0} u Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,U nastavku omogućite Dopusti negativnu zalihu ili stvorite unos dionica., No Inpatient Record found against patient {0},Nije pronađena bolnička evidencija protiv pacijenta {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Nalog za stacionarne lijekove {0} protiv susreta s pacijentima {1} već postoji., +Allow In Returns,Dopusti povratak, +Hide Unavailable Items,Sakrij nedostupne stavke, +Apply Discount on Discounted Rate,Primijenite popust na sniženu stopu, +Therapy Plan Template,Predložak plana terapije, +Fetching Template Details,Dohvaćanje pojedinosti predloška, +Linked Item Details,Povezani detalji stavke, +Therapy Types,Vrste terapije, +Therapy Plan Template Detail,Pojedinosti predloška plana terapije, +Non Conformance,Neusklađenost, +Process Owner,Vlasnik procesa, +Corrective Action,Korektivne mjere, +Preventive Action,Preventivna akcija, +Problem,Problem, +Responsible,Odgovoran, +Completion By,Završetak, +Process Owner Full Name,Puno ime vlasnika postupka, +Right Index,Desni indeks, +Left Index,Lijevi indeks, +Sub Procedure,Potprocedura, +Passed,Prošao, +Print Receipt,Ispisnica, +Edit Receipt,Uredi potvrdu, +Focus on search input,Usredotočite se na unos pretraživanja, +Focus on Item Group filter,Usredotočite se na filter grupe predmeta, +Checkout Order / Submit Order / New Order,Narudžba za plaćanje / Predaja naloga / Nova narudžba, +Add Order Discount,Dodajte popust za narudžbu, +Item Code: {0} is not available under warehouse {1}.,Šifra artikla: {0} nije dostupno u skladištu {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Serijski brojevi nisu dostupni za artikl {0} u skladištu {1}. Pokušajte promijeniti skladište., +Fetched only {0} available serial numbers.,Dohvaćeno samo {0} dostupnih serijskih brojeva., +Switch Between Payment Modes,Prebacivanje između načina plaćanja, +Enter {0} amount.,Unesite iznos od {0}., +You don't have enough points to redeem.,Nemate dovoljno bodova za iskorištavanje., +You can redeem upto {0}.,Možete iskoristiti do {0}., +Enter amount to be redeemed.,Unesite iznos koji treba iskoristiti., +You cannot redeem more than {0}.,Ne možete iskoristiti više od {0}., +Open Form View,Otvorite prikaz obrasca, +POS invoice {0} created succesfully,POS račun {0} uspješno je stvoren, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Količina zaliha nije dovoljna za šifru artikla: {0} ispod skladišta {1}. Dostupna količina {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Serijski broj: {0} već je pretvoren u drugu POS fakturu., +Balance Serial No,Serijski br, +Warehouse: {0} does not belong to {1},Skladište: {0} ne pripada tvrtki {1}, +Please select batches for batched item {0},Odaberite serije za skupljenu stavku {0}, +Please select quantity on row {0},Odaberite količinu u retku {0}, +Please enter serial numbers for serialized item {0},Unesite serijske brojeve za serijsku stavku {0}, +Batch {0} already selected.,Skupina {0} već je odabrana., +Please select a warehouse to get available quantities,Odaberite skladište da biste dobili dostupne količine, +"For transfer from source, selected quantity cannot be greater than available quantity","Za prijenos iz izvora, odabrana količina ne može biti veća od dostupne količine", +Cannot find Item with this Barcode,Ne mogu pronaći predmet s ovim crtičnim kodom, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} je obavezan. Možda zapis mjenjačnice nije stvoren za {1} do {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} je poslao elemente povezane s tim. Morate otkazati imovinu da biste stvorili povrat kupnje., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Ovaj dokument nije moguće otkazati jer je povezan s poslanim materijalom {0}. Otkažite ga da biste nastavili., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Redak {{}: Serijski broj {} je već prebačen na drugu POS fakturu. Odaberite valjani serijski br., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Redak {{}: Serijski brojevi. {} Već su prebačeni u drugu POS fakturu. Odaberite valjani serijski br., +Item Unavailable,Predmet nije dostupan, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Redak {{}: serijski broj {} ne može se vratiti jer nije izvršen u izvornoj fakturi {}, +Please set default Cash or Bank account in Mode of Payment {},Postavite zadani gotovinski ili bankovni račun u načinu plaćanja {}, +Please set default Cash or Bank account in Mode of Payments {},Postavite zadani gotovinski ili bankovni račun u načinu plaćanja {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Molimo provjerite je li račun {} račun bilance. Možete promijeniti roditeljski račun u račun bilance ili odabrati drugi račun., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Molimo provjerite je li račun {} račun koji se plaća. Promijenite vrstu računa u Plativo ili odaberite drugi račun., +Row {}: Expense Head changed to {} ,Red {}: Glava rashoda promijenjena je u {}, +because account {} is not linked to warehouse {} ,jer račun {} nije povezan sa skladištem {}, +or it is not the default inventory account,ili nije zadani račun zaliha, +Expense Head Changed,Promijenjena glava rashoda, +because expense is booked against this account in Purchase Receipt {},jer je trošak knjižen na ovaj račun u potvrdi o kupnji {}, +as no Purchase Receipt is created against Item {}. ,jer se prema stavci {} ne stvara potvrda o kupnji., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,To se radi radi obračunavanja slučajeva kada se potvrda o kupnji kreira nakon fakture za kupnju, +Purchase Order Required for item {},Narudžbenica potrebna za stavku {}, +To submit the invoice without purchase order please set {} ,"Da biste predali račun bez narudžbenice, postavite {}", +as {} in {},kao {} u {}, +Mandatory Purchase Order,Obavezna narudžbenica, +Purchase Receipt Required for item {},Potvrda o kupnji potrebna za stavku {}, +To submit the invoice without purchase receipt please set {} ,"Da biste predali račun bez potvrde o kupnji, postavite {}", +Mandatory Purchase Receipt,Potvrda o obaveznoj kupnji, +POS Profile {} does not belongs to company {},POS profil {} ne pripada tvrtki {}, +User {} is disabled. Please select valid user/cashier,Korisnik {} je onemogućen. Odaberite valjanog korisnika / blagajnika, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Redak {{}: Izvorna faktura {} fakture za povrat {} je {}., +Original invoice should be consolidated before or along with the return invoice.,Izvorni račun treba objediniti prije ili zajedno s povratnim računom., +You can add original invoice {} manually to proceed.,"Da biste nastavili, možete ručno dodati {} fakturu {}.", +Please ensure {} account is a Balance Sheet account. ,Molimo provjerite je li račun {} račun bilance., +You can change the parent account to a Balance Sheet account or select a different account.,Možete promijeniti roditeljski račun u račun bilance ili odabrati drugi račun., +Please ensure {} account is a Receivable account. ,Molimo provjerite je li račun} račun potraživanja., +Change the account type to Receivable or select a different account.,Promijenite vrstu računa u Potraživanje ili odaberite drugi račun., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} se ne može otkazati jer su iskorišteni bodovi za lojalnost. Prvo otkažite {} Ne {}, +already exists,već postoji, +POS Closing Entry {} against {} between selected period,Zatvaranje unosa POS-a {} protiv {} između odabranog razdoblja, +POS Invoice is {},POS račun je {}, +POS Profile doesn't matches {},POS profil se ne podudara s {}, +POS Invoice is not {},POS faktura nije {}, +POS Invoice isn't created by user {},POS račun ne izrađuje korisnik {}, +Row #{}: {},Red # {}: {}, +Invalid POS Invoices,Nevažeći POS računi, +Please add the account to root level Company - {},Dodajte račun korijenskoj tvrtki - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Tijekom stvaranja računa za podređenu tvrtku {0}, nadređeni račun {1} nije pronađen. Molimo stvorite roditeljski račun u odgovarajućem COA", +Account Not Found,Račun nije pronađen, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Tijekom stvaranja računa za podređenu tvrtku {0}, nadređeni račun {1} pronađen je kao račun glavne knjige.", +Please convert the parent account in corresponding child company to a group account.,Molimo pretvorite roditeljski račun u odgovarajućoj podređenoj tvrtki u grupni račun., +Invalid Parent Account,Nevažeći roditeljski račun, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Preimenovanje je dopušteno samo putem matične tvrtke {0}, kako bi se izbjegla neusklađenost.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Ako {0} {1} količinu predmeta {2}, na proizvod će primijeniti shema {3}.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Ako {0} {1} vrijedite stavku {2}, shema {3} primijenit će se na stavku.", +"As the field {0} is enabled, the field {1} is mandatory.","Kako je polje {0} omogućeno, polje {1} je obavezno.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Kako je polje {0} omogućeno, vrijednost polja {1} trebala bi biti veća od 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Nije moguće isporučiti serijski broj {0} stavke {1} jer je rezerviran za puni prodajni nalog {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Prodajni nalog {0} ima rezervaciju za artikl {1}, a možete dostaviti samo rezervirani {1} u odnosu na {0}.", +{0} Serial No {1} cannot be delivered,{0} Serijski broj {1} nije moguće isporučiti, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Redak {0}: Predmet podugovaranja obvezan je za sirovinu {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Budući da ima dovoljno sirovina, zahtjev za materijal nije potreban za Skladište {0}.", +" If you still want to proceed, please enable {0}.","Ako i dalje želite nastaviti, omogućite {0}.", +The item referenced by {0} - {1} is already invoiced,Stavka na koju se poziva {0} - {1} već je fakturirana, +Therapy Session overlaps with {0},Sjednica terapije preklapa se s {0}, +Therapy Sessions Overlapping,Preklapajuće se terapijske sesije, +Therapy Plans,Planovi terapije, +"Item Code, warehouse, quantity are required on row {0}","Šifra artikla, skladište, količina potrebni su na retku {0}", +Get Items from Material Requests against this Supplier,Nabavite stavke iz materijalnih zahtjeva protiv ovog dobavljača, +Enable European Access,Omogućiti europski pristup, +Creating Purchase Order ...,Izrada narudžbenice ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Odaberite dobavljača od zadanih dobavljača dolje navedenih stavki. Nakon odabira, narudžbenica će se izvršiti samo za proizvode koji pripadaju odabranom dobavljaču.", +Row #{}: You must select {} serial numbers for item {}.,Redak {{}: Morate odabrati {} serijske brojeve za stavku {}., diff --git a/erpnext/translations/hu.csv b/erpnext/translations/hu.csv index cfd03406c5..29f347ecbc 100644 --- a/erpnext/translations/hu.csv +++ b/erpnext/translations/hu.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Nem von Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',"Nem vonható le, ha a kategória a 'Készletérték' vagy 'Készletérték és Teljes érték'", "Cannot delete Serial No {0}, as it is used in stock transactions","Nem lehet törölni a sorozatszámot: {0}, mivel ezt használja a részvény tranzakcióknál", Cannot enroll more than {0} students for this student group.,"Nem lehet regisztrálni, több mint {0} diákot erre a diákcsoportra.", -Cannot find Item with this barcode,Nem található az elem ezzel a vonalkóddal, Cannot find active Leave Period,Nem található aktív távolléti időszak, Cannot produce more Item {0} than Sales Order quantity {1},"Nem lehet több mint ennyit {0} gyártani a tételből, mint amennyi a Vevői rendelési mennyiség {1}", Cannot promote Employee with status Left,Nem támogathatja a távolléten lévő Alkalmazottat, @@ -690,7 +689,6 @@ Create Variants,Hozzon létre változatok, "Create and manage daily, weekly and monthly email digests.","Létrehoz és kezeli a napi, heti és havi e-mail összefoglalókat.", Create customer quotes,Árajánlatok létrehozása vevők részére, Create rules to restrict transactions based on values.,Készítsen szabályokat az ügyletek korlátozására az értékek alapján., -Created By,Létrehozta, Created {0} scorecards for {1} between: ,Létrehozta a (z) {0} eredménymutatókat {1} között:, Creating Company and Importing Chart of Accounts,Vállalat létrehozása és számlaábra importálása, Creating Fees,Díjak létrehozása, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,"Raktár szükséges, mielőtt beküldan For row {0}: Enter Planned Qty,A(z) {0} sorhoz: Írja be a tervezett mennyiséget, "For {0}, only credit accounts can be linked against another debit entry","{0} -hoz, csak jóváírási számlákat lehet kapcsolni a másik ellen terheléshez", "For {0}, only debit accounts can be linked against another credit entry","{0} -hoz, csak terhelés számlákat lehet kapcsolni a másik ellen jóváíráshoz", -Form View,Űrlap nézet, Forum Activity,Fórum aktivitás, Free item code is not selected,Az ingyenes cikkkód nincs kiválasztva, Freight and Forwarding Charges,Árufuvarozási és szállítmányozási költségek, @@ -2638,7 +2635,6 @@ Send SMS,SMS küldése, Send mass SMS to your contacts,Küldjön tömeges SMS-t a kapcsolatainak, Sensitivity,Érzékenység, Sent,Elküldött, -Serial #,Szériasz #, Serial No and Batch,Széria sz. és Köteg, Serial No is mandatory for Item {0},Széria sz. kötelező tétel {0}, Serial No {0} does not belong to Batch {1},A {0} sorozatszám nem tartozik a {1} köteghez, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Üdvözöl az ERPNext, What do you need help with?,Mivel kapcsolatban van szükséged segítségre?, What does it do?,Mit csinal?, Where manufacturing operations are carried.,Ahol a gyártási műveleteket végzik., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","A (z) {0} gyermekvállalat számára fiók létrehozása közben a (z) {1} szülői fiók nem található. Kérjük, hozza létre a szülői fiókot a megfelelő COA-ban", White,fehér, Wire Transfer,Banki átutalás, WooCommerce Products,WooCommerce termékek, @@ -3493,6 +3488,7 @@ Likes,Kedvtelések, Merge with existing,Meglévővel összefésülni, Office,Iroda, Orientation,Irányultság, +Parent,Fő, Passive,Passzív, Payment Failed,Fizetés meghiúsult, Percent,Százalék, @@ -3543,6 +3539,7 @@ Shift,Váltás, Show {0},Mutasd {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Speciális karakterek, kivéve "-", "#", ".", "/", "{" És "}", a sorozatok elnevezése nem megengedett", Target Details,Cél részletei, +{0} already has a Parent Procedure {1}.,A (z) {0} már rendelkezik szülői eljárással {1}., API,API, Annual,Éves, Approved,Jóváhagyott, @@ -4241,7 +4238,6 @@ Download as JSON,Töltse le JSON néven, End date can not be less than start date,"A befejezés dátuma nem lehet kevesebb, mint a kezdő dátum", For Default Supplier (Optional),Az alapértelmezett beszállító számára (opcionális), From date cannot be greater than To date,"A dátum nem lehet nagyobb, mint a dátum", -Get items from,Tételeket kér le innen, Group by,Csoportosítva, In stock,Raktáron, Item name,Tétel neve, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Minőségi visszajelzés sablonparamétere, Quality Goal,Minőségi cél, Monitoring Frequency,Frekvencia figyelése, Weekday,Hétköznap, -January-April-July-October,Január-április-július-október, -Revision and Revised On,Felülvizsgálva és felülvizsgálva, -Revision,Felülvizsgálat, -Revised On,Felülvizsgálva, Objectives,célok, Quality Goal Objective,Minőségi cél, Objective,Célkitűzés, @@ -7574,7 +7566,6 @@ Parent Procedure,Szülői eljárás, Processes,Eljárások, Quality Procedure Process,Minőségi eljárás folyamata, Process Description,Folyamatleírás, -Child Procedure,Gyermek eljárás, Link existing Quality Procedure.,Kapcsolja össze a meglévő minőségi eljárást., Additional Information,további információ, Quality Review Objective,Minőségértékelési célkitűzés, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Beszerzési megrendelések alakulása, Purchase Receipt Trends,Beszerzési nyugták alakulása, Purchase Register,Beszerzési Regisztráció, Quotation Trends,Árajánlatok alakulása, -Quoted Item Comparison,Ajánlott tétel összehasonlítás, Received Items To Be Billed,Számlázandó Beérkezett tételek, Qty to Order,Mennyiség Rendeléshez, Requested Items To Be Transferred,Kérte az átvinni kívánt elemeket, @@ -9091,7 +9081,6 @@ Unmarked days,Jelöletlen napok, Absent Days,Hiányzó napok, Conditions and Formula variable and example,Feltételek és Formula változó és példa, Feedback By,Visszajelzés:, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Gyártási részleg, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Alapértelmezés szerint az Ügyfél neve a megadott Teljes név szerint van beállítva. Ha azt szeretné, hogy az ügyfeleket a", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Új értékesítési tranzakció létrehozásakor konfigurálja az alapértelmezett Árlistát. A cikkek árait ebből az Árjegyzékből fogják lekérni., @@ -9692,7 +9681,6 @@ Available Balance,Rendelkezésre álló egyenleg, Reserved Balance,Fenntartott egyenleg, Uncleared Balance,Tisztázatlan egyenleg, Payment related to {0} is not completed,A (z) {0} domainhez kapcsolódó fizetés nem fejeződött be, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,"{}. Sor: sorszám {}. A (z) {} felhasználót már egy másik POS-számlán futtatták le. Kérjük, válasszon érvényes sorozatszámot.", Row #{}: Item Code: {} is not available under warehouse {}.,{}. Sor: Az elem kódja: {} nem érhető el a raktárban {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,#. Sor: A készletmennyiség nem elegendő a Cikkszámhoz: {} raktár alatt {}. Elérhető mennyiség {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,"#. Sor: Kérjük, válasszon sorszámot, és tegye a tételhez: {}, vagy távolítsa el a tranzakció befejezéséhez.", @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Nem áll rendelkezésre mennyis Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,"A folytatáshoz engedélyezze a Negatív részvény engedélyezése lehetőséget a részvénybeállításokban, vagy hozzon létre készletbejegyzést.", No Inpatient Record found against patient {0},Nem található fekvőbeteg-nyilvántartás a beteg ellen {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Már létezik fekvőbeteg-kezelési végzés {0} a beteg találkozása ellen {1}., +Allow In Returns,Engedélyezz viszonzva, +Hide Unavailable Items,Nem elérhető elemek elrejtése, +Apply Discount on Discounted Rate,Alkalmazzon kedvezményt a kedvezményes árfolyamon, +Therapy Plan Template,Terápiás terv sablon, +Fetching Template Details,A sablon részleteinek lekérése, +Linked Item Details,Összekapcsolt elem részletei, +Therapy Types,Terápiás típusok, +Therapy Plan Template Detail,Terápiás terv sablon részlete, +Non Conformance,Nem megfelelőség, +Process Owner,Folyamat tulajdonos, +Corrective Action,Korrekciós intézkedéseket, +Preventive Action,Megelőző akció, +Problem,Probléma, +Responsible,Felelős, +Completion By,Befejezés:, +Process Owner Full Name,A folyamat tulajdonosának teljes neve, +Right Index,Jobb index, +Left Index,Bal oldali index, +Sub Procedure,Sub eljárás, +Passed,Elhaladt, +Print Receipt,Nyugta nyomtatása, +Edit Receipt,Nyugta szerkesztése, +Focus on search input,Összpontosítson a keresési bevitelre, +Focus on Item Group filter,Összpontosítson a Tételcsoport szűrőre, +Checkout Order / Submit Order / New Order,Pénztári rendelés / Megrendelés benyújtása / Új megrendelés, +Add Order Discount,Rendelési kedvezmény hozzáadása, +Item Code: {0} is not available under warehouse {1}.,Cikkszám: {0} nem érhető el a raktárban {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,"A (z) {0} raktár alatti raktárban {1} nem áll rendelkezésre sorszám. Kérjük, próbálja meg megváltoztatni a raktárt.", +Fetched only {0} available serial numbers.,Csak {0} elérhető sorozatszámot kapott., +Switch Between Payment Modes,Váltás a fizetési módok között, +Enter {0} amount.,Adja meg a (z) {0} összeget., +You don't have enough points to redeem.,Nincs elég pontod a beváltáshoz., +You can redeem upto {0}.,Legfeljebb {0} beválthatja., +Enter amount to be redeemed.,Adja meg a beváltandó összeget., +You cannot redeem more than {0}.,{0} -nál többet nem válthat be., +Open Form View,Nyissa meg az Űrlap nézetet, +POS invoice {0} created succesfully,POS számla {0} sikeresen létrehozva, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,A készletmennyiség nem elegendő a Cikkszámhoz: {0} raktár alatt {1}. Rendelkezésre álló mennyiség {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Sorszám: A (z) {0} már tranzakcióba került egy másik POS-számlával., +Balance Serial No,Egyenleg Sorszám, +Warehouse: {0} does not belong to {1},Raktár: {0} nem tartozik a (z) {1} domainhez, +Please select batches for batched item {0},Válassza ki a kötegelt tételeket a kötegelt tételhez {0}, +Please select quantity on row {0},"Kérjük, válassza ki a mennyiséget a (z) {0} sorban", +Please enter serial numbers for serialized item {0},"Kérjük, adja meg a (z) {0} sorosított tétel sorozatszámát", +Batch {0} already selected.,A (z) {0} köteg már kiválasztva., +Please select a warehouse to get available quantities,"Kérjük, válasszon egy raktárt a rendelkezésre álló mennyiségek megszerzéséhez", +"For transfer from source, selected quantity cannot be greater than available quantity","Forrásból történő átvitelhez a kiválasztott mennyiség nem lehet nagyobb, mint a rendelkezésre álló mennyiség", +Cannot find Item with this Barcode,Nem található elem ezzel a vonalkóddal, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},"A (z) {0} kötelező kitölteni. Lehet, hogy a (z) {1} és a (z) {2} számára nem jön létre pénzváltási rekord", +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,A (z) {} ehhez kapcsolódó eszközöket nyújtott be. A vásárlási hozam létrehozásához le kell mondania az eszközöket., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"Nem törölhető ez a dokumentum, mivel a beküldött eszközhöz ({0}) kapcsolódik. Kérjük, törölje a folytatáshoz.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,"{}. Sor: A (z) {} sorszám már be van kapcsolva egy másik POS számlába. Kérjük, válasszon érvényes sorozatszámot.", +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,"{}. Sor: A (z) {} sorszámokat már bevezették egy másik POS-számlába. Kérjük, válasszon érvényes sorozatszámot.", +Item Unavailable,Elem nem érhető el, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"{}. Sor: {0} sorszám nem adható vissza, mivel az eredeti számlán nem történt meg {0}", +Please set default Cash or Bank account in Mode of Payment {},"Kérjük, állítsa be az alapértelmezett készpénzt vagy bankszámlát a Fizetési módban {}", +Please set default Cash or Bank account in Mode of Payments {},"Kérjük, állítsa be az alapértelmezett készpénzt vagy bankszámlát a Fizetési módban {}", +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,"Győződjön meg arról, hogy a (z) {} fiók egy mérlegfiók. Módosíthatja a szülői fiókot mérlegfiókra, vagy kiválaszthat másik fiókot.", +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,"Győződjön meg arról, hogy a (z) {} fiók fizetendő fiók. Módosítsa a számla típusát Kötelezőre, vagy válasszon másik számlát.", +Row {}: Expense Head changed to {} ,{}. Sor: A költségfej megváltozott erre: {}, +because account {} is not linked to warehouse {} ,mert a {} fiók nincs összekapcsolva a raktárral {}, +or it is not the default inventory account,vagy nem ez az alapértelmezett készletszámla, +Expense Head Changed,A költségfej megváltozott, +because expense is booked against this account in Purchase Receipt {},mert a költség a számlán van elszámolva a vásárlási nyugtán {}, +as no Purchase Receipt is created against Item {}. ,mivel a (z) {} tételhez nem jön létre vásárlási nyugta., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,"Ez az esetek elszámolásának kezelésére szolgál, amikor a vásárlási nyugta a vásárlási számla után jön létre", +Purchase Order Required for item {},A (z) {} tételhez megrendelés szükséges, +To submit the invoice without purchase order please set {} ,A számla beküldéséhez megrendelés nélkül adja meg a következőt: {}, +as {} in {},mint a {}, +Mandatory Purchase Order,Kötelező megrendelés, +Purchase Receipt Required for item {},A (z) {} tételhez vásárlási bizonylat szükséges, +To submit the invoice without purchase receipt please set {} ,A számla vásárlási nyugta nélküli benyújtásához állítsa be a következőt:, +Mandatory Purchase Receipt,Kötelező vásárlási nyugta, +POS Profile {} does not belongs to company {},A POS-profil {} nem tartozik a (z) {} céghez, +User {} is disabled. Please select valid user/cashier,"A (z) {} felhasználó le van tiltva. Kérjük, válassza ki az érvényes felhasználót / pénztárt", +Row #{}: Original Invoice {} of return invoice {} is {}. ,{}. Sor: A (z) {} eredeti számla {} a következő:, +Original invoice should be consolidated before or along with the return invoice.,Az eredeti számlát a beváltó számla előtt vagy azzal együtt kell konszolidálni., +You can add original invoice {} manually to proceed.,A folytatáshoz manuálisan hozzáadhatja az eredeti számlát {}., +Please ensure {} account is a Balance Sheet account. ,"Győződjön meg arról, hogy a (z) {} fiók egy mérlegfiók.", +You can change the parent account to a Balance Sheet account or select a different account.,"Módosíthatja a szülői fiókot mérlegfiókra, vagy kiválaszthat másik fiókot.", +Please ensure {} account is a Receivable account. ,"Győződjön meg arról, hogy a (z) {} fiók vevő-fiók.", +Change the account type to Receivable or select a different account.,"Változtassa a számlatípust Követelésre, vagy válasszon másik számlát.", +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},"A (z) {} nem törölhető, mivel a megszerzett Hűségpontok beváltásra kerültek. Először törölje a {} Nem {} lehetőséget", +already exists,már létezik, +POS Closing Entry {} against {} between selected period,POS záró bejegyzés {} ellen {} a kiválasztott időszak között, +POS Invoice is {},POS számla: {}, +POS Profile doesn't matches {},A POS-profil nem egyezik a következővel:}, +POS Invoice is not {},A POS számla nem {}, +POS Invoice isn't created by user {},A POS számlát nem a (z) {0} felhasználó hozta létre, +Row #{}: {},#. Sor: {}, +Invalid POS Invoices,Érvénytelen POS-számlák, +Please add the account to root level Company - {},"Kérjük, adja hozzá a fiókot a root szintű vállalathoz - {}", +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","A (z) {0} gyermekvállalat fiókjának létrehozása közben a (z) {1} szülőfiók nem található. Kérjük, hozza létre a szülői fiókot a megfelelő COA-ban", +Account Not Found,Fiók nem található, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",A (z) {0} gyermekvállalat fiókjának létrehozása közben a (z) {1} szülőfiók főkönyv-fiókként található., +Please convert the parent account in corresponding child company to a group account.,"Kérjük, konvertálja a megfelelő alárendelt vállalat szülői fiókját csoportos fiókra.", +Invalid Parent Account,Érvénytelen szülői fiók, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Az átnevezés csak az {0} anyavállalaton keresztül engedélyezett, az eltérések elkerülése érdekében.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Ha {0} {1} mennyiségű elemet tartalmaz {2}, akkor a sémát {3} alkalmazzák az elemre.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Ha {0} {1} érdemes egy elemet {2}, akkor a sémát {3} alkalmazzák az elemre.", +"As the field {0} is enabled, the field {1} is mandatory.","Mivel a {0} mező engedélyezve van, a {1} mező kötelező.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Mivel a {0} mező engedélyezve van, a {1} mező értékének 1-nél nagyobbnak kell lennie.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Nem lehet kézbesíteni a (z) {1} tétel sorszámát {1}, mivel az teljes értékesítési megrendelésre van fenntartva {2}", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Az értékesítési rendelés {0} foglalást foglal a tételre {1}, csak lefoglalt {1} szállíthat {0} ellen.", +{0} Serial No {1} cannot be delivered,A {0} sorszám {1} nem szállítható, +Row {0}: Subcontracted Item is mandatory for the raw material {1},{0} sor: Az alvállalkozói tétel kötelező a nyersanyaghoz {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Mivel elegendő alapanyag van, a raktárhoz {0} nem szükséges anyagkérelem.", +" If you still want to proceed, please enable {0}.","Ha továbbra is folytatni szeretné, engedélyezze a {0} lehetőséget.", +The item referenced by {0} - {1} is already invoiced,A (z) {0} - {1} által hivatkozott tételt már számlázzák, +Therapy Session overlaps with {0},A terápiás munkamenet átfedésben van a következővel: {0}, +Therapy Sessions Overlapping,A terápiás foglalkozások átfedésben vannak, +Therapy Plans,Terápiás tervek, +"Item Code, warehouse, quantity are required on row {0}","A (z) {0} sorban tételszám, raktár, mennyiség szükséges", +Get Items from Material Requests against this Supplier,Tételeket szerezhet a szállítóval szembeni anyagi igényekből, +Enable European Access,Engedélyezze az európai hozzáférést, +Creating Purchase Order ...,Megrendelés létrehozása ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",Válasszon szállítót az alábbi elemek alapértelmezett szállítói közül. A kiválasztáskor csak a kiválasztott szállítóhoz tartozó termékekre készül megrendelés., +Row #{}: You must select {} serial numbers for item {}.,#. Sor:} {0} sorszámokat kell kiválasztania., diff --git a/erpnext/translations/id.csv b/erpnext/translations/id.csv index 4607d3bd19..7175ad2fa7 100644 --- a/erpnext/translations/id.csv +++ b/erpnext/translations/id.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',Tidak bi Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',tidak bisa memotong ketika kategori adalah untuk 'Penilaian' atau 'Vaulation dan Total', "Cannot delete Serial No {0}, as it is used in stock transactions","Tidak dapat menghapus No. Seri {0}, karena digunakan dalam transaksi persediaan", Cannot enroll more than {0} students for this student group.,tidak bisa mendaftar lebih dari {0} siswa untuk kelompok siswa ini., -Cannot find Item with this barcode,Tidak dapat menemukan Item dengan barcode ini, Cannot find active Leave Period,Tidak dapat menemukan Periode Keluar aktif, Cannot produce more Item {0} than Sales Order quantity {1},Tidak dapat menghasilkan lebih Stok Barang {0} daripada kuantitas Sales Order {1}, Cannot promote Employee with status Left,Tidak dapat mempromosikan Karyawan dengan status Kiri, @@ -690,7 +689,6 @@ Create Variants,Buat Varian, "Create and manage daily, weekly and monthly email digests.","Buat dan kelola surel ringkasan harian, mingguan dan bulanan.", Create customer quotes,Buat kutipan pelanggan, Create rules to restrict transactions based on values.,Buat aturan untuk membatasi transaksi berdasarkan nilai-nilai., -Created By,Dibuat Oleh, Created {0} scorecards for {1} between: ,Menciptakan {0} scorecard untuk {1} antara:, Creating Company and Importing Chart of Accounts,Membuat Perusahaan dan Mengimpor Bagan Akun, Creating Fees,Menciptakan Biaya, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Untuk Gudang diperlukan sebelum Submit, For row {0}: Enter Planned Qty,Untuk baris {0}: Masuki rencana qty, "For {0}, only credit accounts can be linked against another debit entry","Untuk {0}, hanya rekening kredit dapat dihubungkan dengan entri debit lain", "For {0}, only debit accounts can be linked against another credit entry","Untuk {0}, hanya rekening debit dapat dihubungkan dengan entri kredit lain", -Form View,Tampilan Formulir, Forum Activity,Kegiatan Forum, Free item code is not selected,Kode item gratis tidak dipilih, Freight and Forwarding Charges,Pengangkutan dan Forwarding Biaya, @@ -2638,7 +2635,6 @@ Send SMS,Kirim SMS, Send mass SMS to your contacts,Kirim SMS massal ke kontak Anda, Sensitivity,Kepekaan, Sent,Terkirim, -Serial #,Serial #, Serial No and Batch,Serial dan Batch, Serial No is mandatory for Item {0},Serial ada adalah wajib untuk Item {0}, Serial No {0} does not belong to Batch {1},Serial No {0} bukan milik Batch {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Selamat datang di ERPNext, What do you need help with?,Apa yang Anda perlu bantuan dengan?, What does it do?,Apa pekerjaannya?, Where manufacturing operations are carried.,Dimana operasi manufaktur dilakukan., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Saat membuat akun untuk Perusahaan anak {0}, akun induk {1} tidak ditemukan. Harap buat akun induk di COA yang sesuai", White,putih, Wire Transfer,Transfer Kliring, WooCommerce Products,Produk WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Suka, Merge with existing,Merger dengan yang ada, Office,Kantor, Orientation,Orientasi, +Parent,Induk, Passive,Pasif, Payment Failed,Pembayaran gagal, Percent,Persen, @@ -3543,6 +3539,7 @@ Shift,Bergeser, Show {0},Tampilkan {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Karakter Khusus kecuali "-", "#", ".", "/", "{" Dan "}" tidak diizinkan dalam rangkaian penamaan", Target Details,Detail Target, +{0} already has a Parent Procedure {1}.,{0} sudah memiliki Prosedur Induk {1}., API,API, Annual,Tahunan, Approved,Disetujui, @@ -4241,7 +4238,6 @@ Download as JSON,Unduh sebagai JSON, End date can not be less than start date,Tanggal Berakhir tidak boleh kurang dari Tanggal Mulai, For Default Supplier (Optional),Untuk Pemasok Default (Opsional), From date cannot be greater than To date,Dari Tanggal tidak dapat lebih besar dari To Date, -Get items from,Mendapatkan Stok Barang-Stok Barang dari, Group by,Kelompok Dengan, In stock,Persediaan, Item name,Nama Item, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Parameter Template Umpan Balik Kualitas, Quality Goal,Tujuan Kualitas, Monitoring Frequency,Frekuensi Pemantauan, Weekday,Hari kerja, -January-April-July-October,Januari-April-Juli-Oktober, -Revision and Revised On,Revisi dan Revisi Aktif, -Revision,Revisi, -Revised On,Direvisi Aktif, Objectives,Tujuan, Quality Goal Objective,Tujuan Sasaran Kualitas, Objective,Objektif, @@ -7574,7 +7566,6 @@ Parent Procedure,Prosedur Induk, Processes,Proses, Quality Procedure Process,Proses Prosedur Mutu, Process Description,Deskripsi proses, -Child Procedure,Prosedur Anak, Link existing Quality Procedure.,Tautkan Prosedur Mutu yang ada., Additional Information,informasi tambahan, Quality Review Objective,Tujuan Tinjauan Kualitas, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Trend Order Pembelian, Purchase Receipt Trends,Tren Nota Penerimaan, Purchase Register,Register Pembelian, Quotation Trends,Trend Penawaran, -Quoted Item Comparison,Perbandingan Produk/Barang yang ditawarkan, Received Items To Be Billed,Produk Diterima Akan Ditagih, Qty to Order,Kuantitas untuk diorder, Requested Items To Be Transferred,Permintaan Produk Akan Ditransfer, @@ -9091,7 +9081,6 @@ Unmarked days,Hari tak bertanda, Absent Days,Hari Absen, Conditions and Formula variable and example,Kondisi dan variabel Rumus dan contoh, Feedback By,Umpan Balik Oleh, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Bagian Manufaktur, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Secara default, Nama Pelanggan diatur sesuai Nama Lengkap yang dimasukkan. Jika Anda ingin Pelanggan diberi nama oleh a", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Konfigurasikan Daftar Harga default saat membuat transaksi Penjualan baru. Harga item akan diambil dari Daftar Harga ini., @@ -9692,7 +9681,6 @@ Available Balance,Saldo Tersedia, Reserved Balance,Saldo Cadangan, Uncleared Balance,Saldo Tidak Jelas, Payment related to {0} is not completed,Pembayaran yang terkait dengan {0} tidak selesai, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Baris # {}: Nomor Seri {}. {} telah ditransaksikan menjadi Faktur POS lain. Pilih nomor seri yang valid., Row #{}: Item Code: {} is not available under warehouse {}.,Baris # {}: Kode Item: {} tidak tersedia di gudang {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Baris # {}: Jumlah stok tidak cukup untuk Kode Barang: {} di bawah gudang {}. Kuantitas yang tersedia {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Baris # {}: Pilih nomor seri dan kelompokkan terhadap item: {} atau hapus untuk menyelesaikan transaksi., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Kuantitas tidak tersedia untuk { Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Silakan aktifkan Izinkan Stok Negatif dalam Pengaturan Stok atau buat Entri Stok untuk melanjutkan., No Inpatient Record found against patient {0},Tidak ada Catatan Rawat Inap yang ditemukan terhadap pasien {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Perintah Pengobatan Rawat Inap {0} terhadap Pertemuan Pasien {1} sudah ada., +Allow In Returns,Izinkan Pengembalian, +Hide Unavailable Items,Sembunyikan Item yang Tidak Tersedia, +Apply Discount on Discounted Rate,Terapkan Diskon untuk Tarif Diskon, +Therapy Plan Template,Template Rencana Terapi, +Fetching Template Details,Mengambil Detail Template, +Linked Item Details,Detail Item Tertaut, +Therapy Types,Jenis Terapi, +Therapy Plan Template Detail,Detail Template Rencana Terapi, +Non Conformance,Ketidaksesuaian, +Process Owner,Pemilik Proses, +Corrective Action,Tindakan perbaikan, +Preventive Action,Aksi Pencegahan, +Problem,Masalah, +Responsible,Bertanggung jawab, +Completion By,Penyelesaian Oleh, +Process Owner Full Name,Nama Lengkap Pemilik Proses, +Right Index,Indeks Kanan, +Left Index,Indeks Kiri, +Sub Procedure,Sub Prosedur, +Passed,Lulus, +Print Receipt,Cetak Kwitansi, +Edit Receipt,Edit Tanda Terima, +Focus on search input,Fokus pada input pencarian, +Focus on Item Group filter,Fokus pada filter Grup Item, +Checkout Order / Submit Order / New Order,Pesanan Checkout / Kirim Pesanan / Pesanan Baru, +Add Order Discount,Tambahkan Diskon Pesanan, +Item Code: {0} is not available under warehouse {1}.,Kode Barang: {0} tidak tersedia di gudang {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Nomor seri tidak tersedia untuk Item {0} di bawah gudang {1}. Silakan coba ganti gudang., +Fetched only {0} available serial numbers.,Mengambil hanya {0} nomor seri yang tersedia., +Switch Between Payment Modes,Beralih Antar Mode Pembayaran, +Enter {0} amount.,Masukkan {0} jumlah., +You don't have enough points to redeem.,Anda tidak memiliki cukup poin untuk ditukarkan., +You can redeem upto {0}.,Anda dapat menebus hingga {0}., +Enter amount to be redeemed.,Masukkan jumlah yang akan ditebus., +You cannot redeem more than {0}.,Anda tidak dapat menebus lebih dari {0}., +Open Form View,Buka Tampilan Formulir, +POS invoice {0} created succesfully,Faktur POS {0} berhasil dibuat, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Kuantitas stok tidak cukup untuk Kode Barang: {0} di bawah gudang {1}. Kuantitas yang tersedia {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Nomor Seri: {0} sudah ditransaksikan menjadi Faktur POS lain., +Balance Serial No,Balance Serial No, +Warehouse: {0} does not belong to {1},Gudang: {0} bukan milik {1}, +Please select batches for batched item {0},Pilih kelompok untuk item kelompok {0}, +Please select quantity on row {0},Pilih jumlah di baris {0}, +Please enter serial numbers for serialized item {0},Silakan masukkan nomor seri untuk item serial {0}, +Batch {0} already selected.,Kelompok {0} sudah dipilih., +Please select a warehouse to get available quantities,Pilih gudang untuk mendapatkan jumlah yang tersedia, +"For transfer from source, selected quantity cannot be greater than available quantity","Untuk transfer dari sumber, kuantitas yang dipilih tidak boleh lebih besar dari kuantitas yang tersedia", +Cannot find Item with this Barcode,Tidak dapat menemukan Item dengan Barcode ini, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} adalah wajib. Mungkin catatan Penukaran Mata Uang tidak dibuat untuk {1} hingga {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} telah mengirimkan aset yang terkait dengannya. Anda perlu membatalkan aset untuk membuat pengembalian pembelian., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Tidak dapat membatalkan dokumen ini karena terkait dengan aset yang dikirim {0}. Harap batalkan untuk melanjutkan., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Baris # {}: No. Seri {} telah ditransaksikan menjadi Faktur POS lain. Pilih nomor seri yang valid., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Baris # {}: Nomor Seri. {} Telah ditransaksikan menjadi Faktur POS lain. Pilih nomor seri yang valid., +Item Unavailable,Item Tidak Tersedia, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Baris # {}: Nomor Seri {} tidak dapat dikembalikan karena tidak ditransaksikan dalam faktur asli {}, +Please set default Cash or Bank account in Mode of Payment {},Harap setel Rekening Tunai atau Bank default dalam Cara Pembayaran {}, +Please set default Cash or Bank account in Mode of Payments {},Harap setel rekening Tunai atau Bank default dalam Mode Pembayaran {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Harap pastikan akun {} adalah akun Neraca. Anda dapat mengubah akun induk menjadi akun Neraca atau memilih akun lain., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Harap pastikan akun {} adalah akun Hutang. Ubah jenis akun menjadi Hutang atau pilih akun lain., +Row {}: Expense Head changed to {} ,Baris {}: Expense Head diubah menjadi {}, +because account {} is not linked to warehouse {} ,karena akun {} tidak ditautkan ke gudang {}, +or it is not the default inventory account,atau bukan akun inventaris default, +Expense Head Changed,Expense Head Berubah, +because expense is booked against this account in Purchase Receipt {},karena biaya dibukukan ke akun ini di Tanda Terima Pembelian {}, +as no Purchase Receipt is created against Item {}. ,karena tidak ada Tanda Terima Pembelian yang dibuat untuk Item {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Ini dilakukan untuk menangani akuntansi untuk kasus-kasus ketika Tanda Terima Pembelian dibuat setelah Faktur Pembelian, +Purchase Order Required for item {},Pesanan Pembelian Diperlukan untuk item {}, +To submit the invoice without purchase order please set {} ,"Untuk mengirimkan faktur tanpa pesanan pembelian, harap setel {}", +as {} in {},seperti dalam {}, +Mandatory Purchase Order,Pesanan Pembelian Wajib, +Purchase Receipt Required for item {},Tanda Terima Pembelian Diperlukan untuk item {}, +To submit the invoice without purchase receipt please set {} ,"Untuk mengirimkan faktur tanpa tanda terima pembelian, harap setel {}", +Mandatory Purchase Receipt,Kwitansi Pembelian Wajib, +POS Profile {} does not belongs to company {},Profil POS {} bukan milik perusahaan {}, +User {} is disabled. Please select valid user/cashier,Pengguna {} dinonaktifkan. Pilih pengguna / kasir yang valid, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Baris # {}: Faktur Asli {} dari faktur pengembalian {} adalah {}., +Original invoice should be consolidated before or along with the return invoice.,Faktur asli harus digabungkan sebelum atau bersama dengan faktur kembali., +You can add original invoice {} manually to proceed.,Anda bisa menambahkan faktur asli {} secara manual untuk melanjutkan., +Please ensure {} account is a Balance Sheet account. ,Harap pastikan akun {} adalah akun Neraca., +You can change the parent account to a Balance Sheet account or select a different account.,Anda dapat mengubah akun induk menjadi akun Neraca atau memilih akun lain., +Please ensure {} account is a Receivable account. ,Harap pastikan akun {} adalah akun Piutang., +Change the account type to Receivable or select a different account.,Ubah jenis akun menjadi Piutang atau pilih akun lain., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} tidak dapat dibatalkan karena Poin Loyalitas yang diperoleh telah ditukarkan. Pertama batalkan {} Tidak {}, +already exists,sudah ada, +POS Closing Entry {} against {} between selected period,Entri Penutupan POS {} terhadap {} antara periode yang dipilih, +POS Invoice is {},Faktur POS adalah {}, +POS Profile doesn't matches {},Profil POS tidak cocok {}, +POS Invoice is not {},Faktur POS bukan {}, +POS Invoice isn't created by user {},Faktur POS tidak dibuat oleh pengguna {}, +Row #{}: {},Baris # {}: {}, +Invalid POS Invoices,Faktur POS tidak valid, +Please add the account to root level Company - {},Harap tambahkan akun ke Perusahaan tingkat akar - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Saat membuat akun untuk Perusahaan Anak {0}, akun induk {1} tidak ditemukan. Harap buat akun induk dengan COA yang sesuai", +Account Not Found,Akun tidak ditemukan, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Saat membuat akun untuk Perusahaan Anak {0}, akun induk {1} ditemukan sebagai akun buku besar.", +Please convert the parent account in corresponding child company to a group account.,Harap ubah akun induk di perusahaan anak yang sesuai menjadi akun grup., +Invalid Parent Account,Akun Induk Tidak Valid, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Mengganti nama hanya diperbolehkan melalui perusahaan induk {0}, untuk menghindari ketidakcocokan.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Jika Anda {0} {1} jumlah item {2}, skema {3} akan diterapkan pada item tersebut.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Jika Anda {0} {1} item bernilai {2}, skema {3} akan diterapkan pada item tersebut.", +"As the field {0} is enabled, the field {1} is mandatory.","Saat bidang {0} diaktifkan, bidang {1} wajib diisi.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Saat bidang {0} diaktifkan, nilai bidang {1} harus lebih dari 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Tidak dapat mengirim Nomor Seri {0} item {1} karena dicadangkan untuk memenuhi Pesanan Penjualan {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Pesanan Penjualan {0} memiliki reservasi untuk item {1}, Anda hanya dapat mengirimkan reservasi {1} terhadap {0}.", +{0} Serial No {1} cannot be delivered,{0} Serial No {1} tidak dapat dikirim, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Baris {0}: Item Subkontrak wajib untuk bahan mentah {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Karena ada bahan baku yang cukup, Permintaan Material tidak diperlukan untuk Gudang {0}.", +" If you still want to proceed, please enable {0}.","Jika Anda masih ingin melanjutkan, aktifkan {0}.", +The item referenced by {0} - {1} is already invoiced,Item yang direferensikan oleh {0} - {1} sudah ditagih, +Therapy Session overlaps with {0},Sesi Terapi tumpang tindih dengan {0}, +Therapy Sessions Overlapping,Sesi Terapi Tumpang Tindih, +Therapy Plans,Rencana Terapi, +"Item Code, warehouse, quantity are required on row {0}","Kode Barang, gudang, kuantitas diperlukan di baris {0}", +Get Items from Material Requests against this Supplier,Dapatkan Item dari Permintaan Material terhadap Pemasok ini, +Enable European Access,Aktifkan Akses Eropa, +Creating Purchase Order ...,Membuat Pesanan Pembelian ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Pilih Pemasok dari Pemasok Default item di bawah ini. Saat dipilih, Pesanan Pembelian akan dibuat terhadap barang-barang milik Pemasok terpilih saja.", +Row #{}: You must select {} serial numbers for item {}.,Baris # {}: Anda harus memilih {} nomor seri untuk item {}., diff --git a/erpnext/translations/is.csv b/erpnext/translations/is.csv index 361fa74fe6..5f56aff3dc 100644 --- a/erpnext/translations/is.csv +++ b/erpnext/translations/is.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',Get ekki Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',Get ekki draga þegar flokkur er fyrir 'Verðmat' eða 'Vaulation og heildar', "Cannot delete Serial No {0}, as it is used in stock transactions","Ekki hægt að eyða Serial Nei {0}, eins og það er notað í lager viðskiptum", Cannot enroll more than {0} students for this student group.,Ekki er hægt að innritast meira en {0} nemendum fyrir þessum nemendahópi., -Cannot find Item with this barcode,Get ekki fundið hlut með þessum strikamerki, Cannot find active Leave Period,Get ekki fundið virka skiladag, Cannot produce more Item {0} than Sales Order quantity {1},Geta ekki framleitt meira ítarefni {0} en Sales Order Magn {1}, Cannot promote Employee with status Left,Get ekki kynnt starfsmanni með stöðu vinstri, @@ -690,7 +689,6 @@ Create Variants,Búðu til afbrigði, "Create and manage daily, weekly and monthly email digests.","Búa til og stjórna daglega, vikulega og mánaðarlega email meltir.", Create customer quotes,Búa viðskiptavina tilvitnanir, Create rules to restrict transactions based on values.,Búa til reglur til að takmarka viðskipti sem byggjast á gildum., -Created By,Búið til af, Created {0} scorecards for {1} between: ,Búið til {0} stigakort fyrir {1} á milli:, Creating Company and Importing Chart of Accounts,Að stofna fyrirtæki og flytja inn reikningskort, Creating Fees,Búa til gjöld, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Fyrir Lager er krafist áður Senda, For row {0}: Enter Planned Qty,Fyrir röð {0}: Sláðu inn skipulagt magn, "For {0}, only credit accounts can be linked against another debit entry","Fyrir {0}, aðeins kredit reikninga er hægt að tengja við aðra gjaldfærslu", "For {0}, only debit accounts can be linked against another credit entry","Fyrir {0}, aðeins debetkort reikninga er hægt að tengja við aðra tekjufærslu", -Form View,Eyðublað, Forum Activity,Forum Activity, Free item code is not selected,Ókeypis hlutakóði er ekki valinn, Freight and Forwarding Charges,Frakt og Áframsending Gjöld, @@ -2638,7 +2635,6 @@ Send SMS,Senda SMS, Send mass SMS to your contacts,Senda massa SMS til þinn snerting, Sensitivity,Viðkvæmni, Sent,sendir, -Serial #,Serial #, Serial No and Batch,Serial Nei og Batch, Serial No is mandatory for Item {0},Serial Nei er nauðsynlegur fyrir lið {0}, Serial No {0} does not belong to Batch {1},Raðnúmer {0} tilheyrir ekki batch {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Velkomið að ERPNext, What do you need help with?,Hvað þarftu hjálp við?, What does it do?,Hvað gerir það?, Where manufacturing operations are carried.,Hvar framleiðslu aðgerðir eru gerðar., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",Þegar stofnað var reikning fyrir barnafyrirtækið {0} fannst móðurreikningurinn {1} ekki. Vinsamlegast stofnaðu móðurreikninginn í samsvarandi COA, White,White, Wire Transfer,millifærsla, WooCommerce Products,WooCommerce vörur, @@ -3493,6 +3488,7 @@ Likes,líkar, Merge with existing,Sameinast núverandi, Office,Office, Orientation,stefnumörkun, +Parent,Parent, Passive,Hlutlaus, Payment Failed,greiðsla mistókst, Percent,prósent, @@ -3543,6 +3539,7 @@ Shift,Vakt, Show {0},Sýna {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Sérstafir nema "-", "#", ".", "/", "{" Og "}" ekki leyfðar í nafngiftiröð", Target Details,Upplýsingar um markmið, +{0} already has a Parent Procedure {1}.,{0} er þegar með foreldraferli {1}., API,API, Annual,Árleg, Approved,samþykkt, @@ -4241,7 +4238,6 @@ Download as JSON,Sæktu sem JSON, End date can not be less than start date,Lokadagur getur ekki verið minna en upphafsdagur, For Default Supplier (Optional),Fyrir Sjálfgefið Birgir (valfrjálst), From date cannot be greater than To date,Frá Dagsetning má ekki vera meiri en Til Dagsetning, -Get items from,Fá atriði úr, Group by,Hópa eftir, In stock,Á lager, Item name,Item Name, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Breytitæki fyrir sniðmát gæða, Quality Goal,Gæðamarkmið, Monitoring Frequency,Vöktunartíðni, Weekday,Vikudagur, -January-April-July-October,Janúar-apríl-júlí-október, -Revision and Revised On,Endurskoðun og endurskoðuð, -Revision,Endurskoðun, -Revised On,Endurskoðað þann, Objectives,Markmið, Quality Goal Objective,Gæðamarkmið, Objective,Hlutlæg, @@ -7574,7 +7566,6 @@ Parent Procedure,Málsmeðferð foreldra, Processes,Ferli, Quality Procedure Process,Gæðaferli, Process Description,Aðferðalýsing, -Child Procedure,Málsmeðferð barna, Link existing Quality Procedure.,Tengdu núverandi gæðaferli., Additional Information,Viðbótarupplýsingar, Quality Review Objective,Markmið gæðaúttektar, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Purchase Order Trends, Purchase Receipt Trends,Kvittun Trends, Purchase Register,kaup Register, Quotation Trends,Tilvitnun Trends, -Quoted Item Comparison,Vitnað Item Samanburður, Received Items To Be Billed,Móttekin Items verður innheimt, Qty to Order,Magn til að panta, Requested Items To Be Transferred,Umbeðin Items til að flytja, @@ -9091,7 +9081,6 @@ Unmarked days,Ómerktir dagar, Absent Days,Fjarverandi dagar, Conditions and Formula variable and example,Aðstæður og formúlubreytur og dæmi, Feedback By,Endurgjöf frá, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.ÁÁÁ .-. MM .-. DD.-, Manufacturing Section,Framleiðsluhluti, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",Sjálfgefið er að viðskiptavinanafnið sé stillt samkvæmt fullu nafni sem slegið er inn. Ef þú vilt að viðskiptavinir séu nefndir af a, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Stilla sjálfgefna verðskrá þegar ný sölufærsla er búin til. Verð hlutar verður sótt í þessa verðskrá., @@ -9692,7 +9681,6 @@ Available Balance,Laus staða, Reserved Balance,Frátekið jafnvægi, Uncleared Balance,Ótæmt jafnvægi, Payment related to {0} is not completed,Greiðslu sem tengist {0} er ekki lokið, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Röð nr. {}: Raðnúmer {}. {} hefur þegar verið flutt inn á annan POS reikning. Vinsamlegast veldu gild raðnúmer., Row #{}: Item Code: {} is not available under warehouse {}.,Röð nr. {}: Vörukóði: {} er ekki fáanlegur undir lager {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Röð nr. {}: Magn birgða dugar ekki fyrir vörukóða: {} undir lager {}. Laus magn {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Röð nr. {}: Veldu raðnúmer og lotu á móti hlut: {} eða fjarlægðu það til að ljúka viðskiptum., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Magn ekki tiltækt fyrir {0} í Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Vinsamlegast virkjaðu Leyfa neikvæðan lager í lagerstillingum eða búðu til lagerfærslu til að halda áfram., No Inpatient Record found against patient {0},Engin sjúkraskrá fannst gegn sjúklingi {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Lyfjapöntun á legudeild {0} gegn fundi sjúklinga {1} er þegar til., +Allow In Returns,Leyfa inn skil, +Hide Unavailable Items,Fela hluti sem ekki eru tiltækir, +Apply Discount on Discounted Rate,Sækja um afslátt á afsláttarverði, +Therapy Plan Template,Sniðmát fyrir meðferðaráætlun, +Fetching Template Details,Sækir upplýsingar um sniðmát, +Linked Item Details,Upplýsingar um tengda hlut, +Therapy Types,Meðferðartegundir, +Therapy Plan Template Detail,Sniðmát fyrir meðferðaráætlun, +Non Conformance,Ósamræmi, +Process Owner,Ferli eigandi, +Corrective Action,Úrbætur, +Preventive Action,Fyrirbyggjandi aðgerð, +Problem,Vandamál, +Responsible,Ábyrg, +Completion By,Lok frá, +Process Owner Full Name,Fullt nafn eiganda ferils, +Right Index,Hægri vísitala, +Left Index,Vinstri vísitala, +Sub Procedure,Undirferli, +Passed,Samþykkt, +Print Receipt,Prentakvittun, +Edit Receipt,Breyta kvittun, +Focus on search input,Einbeittu þér að leitarinntakinu, +Focus on Item Group filter,Einbeittu þér að hlutahópasíu, +Checkout Order / Submit Order / New Order,Afgreiðslupöntun / leggja fram pöntun / nýja pöntun, +Add Order Discount,Bæta við pöntunarafslætti, +Item Code: {0} is not available under warehouse {1}.,Vörukóði: {0} er ekki fáanlegur í vörugeymslu {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Raðnúmer eru ekki tiltæk fyrir vöru {0} undir vöruhúsi {1}. Vinsamlegast reyndu að skipta um lager., +Fetched only {0} available serial numbers.,Sótti aðeins {0} tiltækt raðnúmer., +Switch Between Payment Modes,Skiptu á milli greiðslumáta, +Enter {0} amount.,Sláðu inn {0} upphæð., +You don't have enough points to redeem.,Þú hefur ekki nógu mörg stig til að innleysa., +You can redeem upto {0}.,Þú getur leyst allt að {0}., +Enter amount to be redeemed.,Sláðu inn upphæð sem á að innleysa., +You cannot redeem more than {0}.,Þú getur ekki innleyst meira en {0}., +Open Form View,Opnaðu skjámynd, +POS invoice {0} created succesfully,POS reikningur {0} búinn til með góðum árangri, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Lagermagn dugar ekki fyrir vörukóða: {0} undir vöruhúsi {1}. Laus magn {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Raðnúmer: {0} hefur þegar verið flutt á annan POS reikning., +Balance Serial No,Jafnvægi raðnúmer, +Warehouse: {0} does not belong to {1},Vöruhús: {0} tilheyrir ekki {1}, +Please select batches for batched item {0},Veldu lotur fyrir lotuhlut {0}, +Please select quantity on row {0},Veldu magn í línu {0}, +Please enter serial numbers for serialized item {0},Vinsamlegast sláðu inn raðnúmer fyrir raðnúmerið {0}, +Batch {0} already selected.,Hópur {0} þegar valinn., +Please select a warehouse to get available quantities,Vinsamlegast veldu vöruhús til að fá tiltækt magn, +"For transfer from source, selected quantity cannot be greater than available quantity",Fyrir flutning frá uppruna getur valið magn ekki verið meira en tiltækt magn, +Cannot find Item with this Barcode,Finnur ekki hlut með þessum strikamerki, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} er skylda. Kannski er gjaldeyrisskrá ekki búin til fyrir {1} til {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} hefur sent inn eignir sem tengjast henni. Þú þarft að hætta við eignirnar til að búa til kauprétt., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Ekki er hægt að hætta við þetta skjal þar sem það er tengt við innsendar eignir {0}. Vinsamlegast hætta við það til að halda áfram., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Röð nr. {}: Raðnúmer. {} Hefur þegar verið flutt á annan POS reikning. Vinsamlegast veldu gild raðnúmer., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Röð nr. {}: Raðnúmer. {} Hefur þegar verið flutt á annan POS reikning. Vinsamlegast veldu gild raðnúmer., +Item Unavailable,Atriði ekki tiltækt, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Röð nr. {}: Ekki er hægt að skila raðnúmeri {} þar sem það var ekki flutt á upphaflegum reikningi {}, +Please set default Cash or Bank account in Mode of Payment {},Vinsamlegast stilltu sjálfgefið reiðufé eða bankareikning í greiðslumáta {}, +Please set default Cash or Bank account in Mode of Payments {},Vinsamlegast stilltu sjálfgefið reiðufé eða bankareikning í greiðslumáta {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Gakktu úr skugga um að {} reikningurinn sé reikningur í efnahagsreikningi. Þú getur breytt móðurreikningi í efnahagsreikning eða valið annan reikning., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Gakktu úr skugga um að {} reikningurinn sé greiðslureikningur. Breyttu reikningsgerðinni í Greiðanleg eða veldu annan reikning., +Row {}: Expense Head changed to {} ,Röð {}: Kostnaðarhaus breytt í {}, +because account {} is not linked to warehouse {} ,vegna þess að reikningur {} er ekki tengdur við lager {}, +or it is not the default inventory account,eða það er ekki sjálfgefinn birgðareikningur, +Expense Head Changed,Kostnaðarhaus breytt, +because expense is booked against this account in Purchase Receipt {},vegna þess að kostnaður er bókfærður á þennan reikning í kvittun innkaupa {}, +as no Purchase Receipt is created against Item {}. ,þar sem engin innheimtukvittun er búin til gegn hlutnum {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Þetta er gert til að meðhöndla bókhald vegna tilvika þegar innkaupakvittun er búin til eftir innkaupareikning, +Purchase Order Required for item {},Innkaupapöntun krafist fyrir hlutinn {}, +To submit the invoice without purchase order please set {} ,Til að leggja fram reikninginn án innkaupapöntunar skaltu stilla {}, +as {} in {},eins og í {}, +Mandatory Purchase Order,Lögboðin innkaupapöntun, +Purchase Receipt Required for item {},Innkaupakvittunar krafist fyrir hlutinn {}, +To submit the invoice without purchase receipt please set {} ,Til að senda reikninginn án kvittunar skaltu stilla {}, +Mandatory Purchase Receipt,Skyldukaupakvittun, +POS Profile {} does not belongs to company {},POS prófíll {} tilheyrir ekki fyrirtæki {}, +User {} is disabled. Please select valid user/cashier,Notandi {} er óvirkur. Vinsamlegast veldu gildan notanda / gjaldkera, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Röð nr.}}: Upprunalegur reikningur {} skilareiknings {} er {}., +Original invoice should be consolidated before or along with the return invoice.,Upprunalegur reikningur ætti að sameina fyrir eða ásamt skilareikningi., +You can add original invoice {} manually to proceed.,Þú getur bætt við upphaflegum reikningi {} handvirkt til að halda áfram., +Please ensure {} account is a Balance Sheet account. ,Gakktu úr skugga um að {} reikningurinn sé reikningur í efnahagsreikningi., +You can change the parent account to a Balance Sheet account or select a different account.,Þú getur breytt móðurreikningi í efnahagsreikning eða valið annan reikning., +Please ensure {} account is a Receivable account. ,Gakktu úr skugga um að {} reikningurinn sé viðtakanlegur reikningur., +Change the account type to Receivable or select a different account.,Breyttu reikningsgerðinni í Kröfur eða veldu annan reikning., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},Ekki er hægt að hætta við {} þar sem unnin vildarpunktar hafa verið innleystir. Hætta fyrst við {} Nei {}, +already exists,er þegar til, +POS Closing Entry {} against {} between selected period,POS lokunarfærsla {} gegn {} milli valins tímabils, +POS Invoice is {},POS reikningur er {}, +POS Profile doesn't matches {},POS prófíll passar ekki við {}, +POS Invoice is not {},POS-reikningur er ekki {}, +POS Invoice isn't created by user {},POS reikningur er ekki búinn til af notanda {}, +Row #{}: {},Röð nr. {}: {}, +Invalid POS Invoices,Ógildir POS-reikningar, +Please add the account to root level Company - {},Vinsamlegast bættu reikningnum við rótarstig fyrirtækisins - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",Við stofnun reiknings fyrir Child Company {0} fannst móðurreikningur {1} ekki. Vinsamlegast stofnaðu móðurreikninginn í samsvarandi COA, +Account Not Found,Reikningur fannst ekki, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",Við stofnun reiknings fyrir Child Company {0} fannst móðurreikningur {1} sem aðalbókareikningur., +Please convert the parent account in corresponding child company to a group account.,Vinsamlegast breyttu móðurreikningi í samsvarandi barnafyrirtæki í hópreikning., +Invalid Parent Account,Ógildur móðurreikningur, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Að endurnefna það er aðeins leyfilegt í gegnum móðurfélagið {0}, til að koma í veg fyrir misræmi.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.",Ef þú {0} {1} magn hlutarins {2} verður kerfinu {3} beitt á hlutinn., +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.",Ef þú {0} {1} virðir hlut {2} verður kerfinu {3} beitt á hlutinn., +"As the field {0} is enabled, the field {1} is mandatory.",Þar sem reiturinn {0} er virkur er reiturinn {1} skyldugur., +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Þar sem reiturinn {0} er virkur, ætti gildi reitsins {1} að vera meira en 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Get ekki afhent raðnúmer {0} hlutar {1} þar sem það er áskilið til fullrar sölupöntunar {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Sölupöntun {0} hefur fyrirvara fyrir hlutinn {1}, þú getur aðeins afhent frátekinn {1} á móti {0}.", +{0} Serial No {1} cannot be delivered,Ekki er hægt að afhenda {0} raðnúmer {1}, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Röð {0}: Liður í undirverktöku er skyldur fyrir hráefnið {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.",Þar sem nægilegt hráefni er til þarf ekki Efnisbeiðni fyrir Vöruhús {0}., +" If you still want to proceed, please enable {0}.",Ef þú vilt samt halda áfram skaltu virkja {0}., +The item referenced by {0} - {1} is already invoiced,Atriðið sem {0} - {1} vísar til er þegar reiknað, +Therapy Session overlaps with {0},Meðferðarlotan skarast við {0}, +Therapy Sessions Overlapping,Meðferðarlotur skarast, +Therapy Plans,Meðferðaráætlanir, +"Item Code, warehouse, quantity are required on row {0}","Vörukóði, vöruhús, magn er krafist í línu {0}", +Get Items from Material Requests against this Supplier,Fáðu hluti frá beiðnum um efni gagnvart þessum birgi, +Enable European Access,Virkja evrópskan aðgang, +Creating Purchase Order ...,Býr til innkaupapöntun ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",Veldu birgja frá sjálfgefnum birgjum hlutanna hér að neðan. Við val verður eingöngu gerð innkaupapöntun á hlutum sem tilheyra völdum birgi., +Row #{}: You must select {} serial numbers for item {}.,Röð nr. {}: Þú verður að velja {} raðnúmer fyrir hlut {}., diff --git a/erpnext/translations/it.csv b/erpnext/translations/it.csv index 9e21f2b197..3a1d73f344 100644 --- a/erpnext/translations/it.csv +++ b/erpnext/translations/it.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',Non può Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',Non può dedurre quando categoria è per 'valutazione' o 'Vaulation e Total', "Cannot delete Serial No {0}, as it is used in stock transactions","Impossibile eliminare N. di serie {0}, come si usa in transazioni di borsa", Cannot enroll more than {0} students for this student group.,Non possono iscriversi più di {0} studenti per questo gruppo., -Cannot find Item with this barcode,Impossibile trovare l'oggetto con questo codice a barre, Cannot find active Leave Period,Impossibile trovare il Periodo di congedo attivo, Cannot produce more Item {0} than Sales Order quantity {1},Non può produrre più Voce {0} di Sales Order quantità {1}, Cannot promote Employee with status Left,Impossibile promuovere il Dipendente con stato Sinistro, @@ -690,7 +689,6 @@ Create Variants,Crea varianti, "Create and manage daily, weekly and monthly email digests.","Creare e gestire giornalieri , settimanali e mensili digerisce email .", Create customer quotes,Creare le citazioni dei clienti, Create rules to restrict transactions based on values.,Creare regole per limitare le transazioni in base ai valori ., -Created By,Creato da, Created {0} scorecards for {1} between: ,Creato {0} scorecard per {1} tra:, Creating Company and Importing Chart of Accounts,Creazione di società e importazione del piano dei conti, Creating Fees,Creazione di tariffe, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Prima della conferma inserire per Magazz For row {0}: Enter Planned Qty,Per la riga {0}: inserisci qtà pianificata, "For {0}, only credit accounts can be linked against another debit entry","Per {0}, solo i conti di credito possono essere collegati contro un'altra voce di addebito", "For {0}, only debit accounts can be linked against another credit entry","Per {0}, solo gli account di debito possono essere collegati contro un'altra voce di credito", -Form View,Vista forma, Forum Activity,Attività del forum, Free item code is not selected,Il codice articolo gratuito non è selezionato, Freight and Forwarding Charges,Freight Forwarding e spese, @@ -2638,7 +2635,6 @@ Send SMS,Invia SMS, Send mass SMS to your contacts,Invia SMS di massa ai tuoi contatti, Sensitivity,sensibilità, Sent,Inviati, -Serial #,Serial #, Serial No and Batch,N. di serie e batch, Serial No is mandatory for Item {0},Numero d'ordine è obbligatorio per la voce {0}, Serial No {0} does not belong to Batch {1},Il numero di serie {0} non appartiene a Batch {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Benvenuti in ERPNext, What do you need help with?,Con cosa hai bisogno di aiuto?, What does it do?,Che cosa fa ?, Where manufacturing operations are carried.,Dove si svolgono le operazioni di fabbricazione., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Durante la creazione dell'account per la società figlio {0}, l'account padre {1} non è stato trovato. Crea l'account principale nel COA corrispondente", White,Bianco, Wire Transfer,Bonifico bancario, WooCommerce Products,Prodotti WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Piace, Merge with existing,Unisci con esistente, Office,Ufficio, Orientation,Orientamento, +Parent,Genitore, Passive,Passivo, Payment Failed,Pagamento fallito, Percent,Percentuale, @@ -3543,6 +3539,7 @@ Shift,Cambio, Show {0},Mostra {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Caratteri speciali tranne "-", "#", ".", "/", "{" E "}" non consentiti nelle serie di nomi", Target Details,Dettagli target, +{0} already has a Parent Procedure {1}.,{0} ha già una procedura padre {1}., API,API, Annual,Annuale, Approved,Approvato, @@ -4241,7 +4238,6 @@ Download as JSON,Scarica come JSON, End date can not be less than start date,Data di Fine non può essere inferiore a Data di inizio, For Default Supplier (Optional),Per fornitore predefinito (facoltativo), From date cannot be greater than To date,Dalla data non può essere maggiore di Alla data, -Get items from,Ottenere elementi dal, Group by,Raggruppa per, In stock,disponibile, Item name,Nome Articolo, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Parametro del modello di feedback sulla qual Quality Goal,Obiettivo di qualità, Monitoring Frequency,Frequenza di monitoraggio, Weekday,giorno feriale, -January-April-July-October,Gennaio-Aprile-Luglio-Ottobre, -Revision and Revised On,Revisione e revisione, -Revision,Revisione, -Revised On,Revisionato il, Objectives,obiettivi, Quality Goal Objective,Obiettivo obiettivo di qualità, Objective,Obbiettivo, @@ -7574,7 +7566,6 @@ Parent Procedure,Procedura genitore, Processes,Processi, Quality Procedure Process,Processo di procedura di qualità, Process Description,Descrizione del processo, -Child Procedure,Procedura per bambini, Link existing Quality Procedure.,Collegare la procedura di qualità esistente., Additional Information,Informazioni aggiuntive, Quality Review Objective,Obiettivo della revisione della qualità, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Acquisto Tendenze Ordine, Purchase Receipt Trends,Acquisto Tendenze Receipt, Purchase Register,Registro Acquisti, Quotation Trends,Tendenze di preventivo, -Quoted Item Comparison,Articolo Citato Confronto, Received Items To Be Billed,Oggetti ricevuti da fatturare, Qty to Order,Qtà da Ordinare, Requested Items To Be Transferred,Voci si chiede il trasferimento, @@ -9091,7 +9081,6 @@ Unmarked days,Giorni non contrassegnati, Absent Days,Giorni assenti, Conditions and Formula variable and example,Condizioni e variabile di formula ed esempio, Feedback By,Feedback di, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Sezione Produzione, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Per impostazione predefinita, il nome del cliente è impostato in base al nome completo inserito. Se desideri che i clienti siano nominati da un", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Configurare il listino prezzi predefinito quando si crea una nuova transazione di vendita. I prezzi degli articoli verranno recuperati da questo listino prezzi., @@ -9692,7 +9681,6 @@ Available Balance,saldo disponibile, Reserved Balance,Saldo riservato, Uncleared Balance,Equilibrio non chiarito, Payment related to {0} is not completed,Il pagamento relativo a {0} non è stato completato, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Riga n. {}: Numero di serie {}. {} è già stato trasferito in un'altra fattura POS. Selezionare un numero di serie valido, Row #{}: Item Code: {} is not available under warehouse {}.,Riga n. {}: Codice articolo: {} non è disponibile in magazzino {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Riga n. {}: Quantità di stock non sufficiente per il codice articolo: {} in magazzino {}. Quantità disponibile {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Riga # {}: selezionare un numero di serie e un batch rispetto all'articolo: {} o rimuoverlo per completare la transazione., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Quantità non disponibile per {0 Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Abilita Consenti stock negativo in Impostazioni scorte o crea immissione scorte per procedere., No Inpatient Record found against patient {0},Nessun record di degenza trovato per il paziente {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Esiste già un ordine per farmaci ospedalieri {0} contro l'incontro con il paziente {1}., +Allow In Returns,Consenti resi, +Hide Unavailable Items,Nascondi elementi non disponibili, +Apply Discount on Discounted Rate,Applica lo sconto sulla tariffa scontata, +Therapy Plan Template,Modello di piano terapeutico, +Fetching Template Details,Recupero dei dettagli del modello, +Linked Item Details,Dettagli articolo collegato, +Therapy Types,Tipi di terapia, +Therapy Plan Template Detail,Dettaglio del modello del piano terapeutico, +Non Conformance,Non conformità, +Process Owner,Proprietario del processo, +Corrective Action,Azione correttiva, +Preventive Action,Azione preventiva, +Problem,Problema, +Responsible,Responsabile, +Completion By,Completamento da, +Process Owner Full Name,Nome completo del proprietario del processo, +Right Index,Indice destro, +Left Index,Indice sinistro, +Sub Procedure,Procedura secondaria, +Passed,Passato, +Print Receipt,Stampa ricevuta, +Edit Receipt,Modifica ricevuta, +Focus on search input,Concentrati sull'input di ricerca, +Focus on Item Group filter,Focus sul filtro Gruppo di articoli, +Checkout Order / Submit Order / New Order,Ordine di pagamento / Invia ordine / Nuovo ordine, +Add Order Discount,Aggiungi sconto ordine, +Item Code: {0} is not available under warehouse {1}.,Codice articolo: {0} non è disponibile in magazzino {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Numeri di serie non disponibili per l'articolo {0} in magazzino {1}. Prova a cambiare magazzino., +Fetched only {0} available serial numbers.,Sono stati recuperati solo {0} numeri di serie disponibili., +Switch Between Payment Modes,Passa da una modalità di pagamento all'altra, +Enter {0} amount.,Inserisci {0} importo., +You don't have enough points to redeem.,Non hai abbastanza punti da riscattare., +You can redeem upto {0}.,Puoi riscattare fino a {0}., +Enter amount to be redeemed.,Inserisci l'importo da riscattare., +You cannot redeem more than {0}.,Non puoi riscattare più di {0}., +Open Form View,Apri la visualizzazione modulo, +POS invoice {0} created succesfully,Fattura POS {0} creata con successo, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Quantità in stock non sufficiente per Codice articolo: {0} in magazzino {1}. Quantità disponibile {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Numero di serie: {0} è già stato trasferito in un'altra fattura POS., +Balance Serial No,Numero di serie della bilancia, +Warehouse: {0} does not belong to {1},Magazzino: {0} non appartiene a {1}, +Please select batches for batched item {0},Seleziona batch per articolo in batch {0}, +Please select quantity on row {0},Seleziona la quantità nella riga {0}, +Please enter serial numbers for serialized item {0},Inserisci i numeri di serie per l'articolo con numero di serie {0}, +Batch {0} already selected.,Batch {0} già selezionato., +Please select a warehouse to get available quantities,Seleziona un magazzino per ottenere le quantità disponibili, +"For transfer from source, selected quantity cannot be greater than available quantity","Per il trasferimento dall'origine, la quantità selezionata non può essere maggiore della quantità disponibile", +Cannot find Item with this Barcode,Impossibile trovare l'articolo con questo codice a barre, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} è obbligatorio. Forse il record di cambio valuta non è stato creato da {1} a {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} ha inviato risorse ad esso collegate. È necessario annullare le risorse per creare un reso di acquisto., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Impossibile annullare questo documento poiché è collegato alla risorsa inviata {0}. Annullalo per continuare., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Riga # {}: il numero di serie {} è già stato trasferito in un'altra fattura POS. Selezionare un numero di serie valido, +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Riga n. {}: I numeri di serie {} sono già stati trasferiti in un'altra fattura POS. Selezionare un numero di serie valido, +Item Unavailable,Articolo non disponibile, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Riga n. {}: Il numero di serie {} non può essere restituito poiché non è stato oggetto di transazione nella fattura originale {}, +Please set default Cash or Bank account in Mode of Payment {},Imposta il conto corrente o il conto bancario predefinito in Modalità di pagamento {}, +Please set default Cash or Bank account in Mode of Payments {},Imposta il conto corrente o il conto bancario predefinito in Modalità di pagamento {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Assicurati che il conto {} sia un conto di bilancio. È possibile modificare il conto principale in un conto di bilancio o selezionare un conto diverso., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Assicurati che il conto {} sia un conto pagabile. Cambia il tipo di conto in Pagabile o seleziona un conto diverso., +Row {}: Expense Head changed to {} ,Riga {}: Intestazione spese modificata in {}, +because account {} is not linked to warehouse {} ,perché l'account {} non è collegato al magazzino {}, +or it is not the default inventory account,oppure non è l'account inventario predefinito, +Expense Head Changed,Testa di spesa modificata, +because expense is booked against this account in Purchase Receipt {},perché la spesa è registrata a fronte di questo account nella ricevuta di acquisto {}, +as no Purchase Receipt is created against Item {}. ,poiché non viene creata alcuna ricevuta di acquisto per l'articolo {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Questa operazione viene eseguita per gestire la contabilità dei casi quando la ricevuta di acquisto viene creata dopo la fattura di acquisto, +Purchase Order Required for item {},Ordine di acquisto richiesto per l'articolo {}, +To submit the invoice without purchase order please set {} ,"Per inviare la fattura senza ordine di acquisto, impostare {}", +as {} in {},come in {}, +Mandatory Purchase Order,Ordine di acquisto obbligatorio, +Purchase Receipt Required for item {},Ricevuta di acquisto richiesta per articolo {}, +To submit the invoice without purchase receipt please set {} ,"Per inviare la fattura senza ricevuta di acquisto, impostare {}", +Mandatory Purchase Receipt,Ricevuta d'acquisto obbligatoria, +POS Profile {} does not belongs to company {},Il profilo POS {} non appartiene all'azienda {}, +User {} is disabled. Please select valid user/cashier,L'utente {} è disabilitato. Seleziona un utente / cassiere valido, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Riga n. {}: La fattura originale {} della fattura di reso {} è {}., +Original invoice should be consolidated before or along with the return invoice.,La fattura originale deve essere consolidata prima o insieme alla fattura di reso., +You can add original invoice {} manually to proceed.,Puoi aggiungere manualmente la fattura originale {} per procedere., +Please ensure {} account is a Balance Sheet account. ,Assicurati che il conto {} sia un conto di bilancio., +You can change the parent account to a Balance Sheet account or select a different account.,È possibile modificare il conto principale in un conto di bilancio o selezionare un conto diverso., +Please ensure {} account is a Receivable account. ,Assicurati che il conto {} sia un conto clienti., +Change the account type to Receivable or select a different account.,Modificare il tipo di conto in Crediti o selezionare un conto diverso., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} non può essere annullato poiché i punti fedeltà guadagnati sono stati riscattati. Per prima cosa annulla il {} No {}, +already exists,esiste già, +POS Closing Entry {} against {} between selected period,Voce di chiusura POS {} contro {} tra il periodo selezionato, +POS Invoice is {},La fattura POS è {}, +POS Profile doesn't matches {},Il profilo POS non corrisponde a {}, +POS Invoice is not {},La fattura POS non è {}, +POS Invoice isn't created by user {},La fattura POS non è stata creata dall'utente {}, +Row #{}: {},Riga n. {}: {}, +Invalid POS Invoices,Fatture POS non valide, +Please add the account to root level Company - {},Aggiungi l'account all'Azienda di livello root - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Durante la creazione dell'account per l'azienda figlia {0}, account genitore {1} non trovato. Si prega di creare l'account genitore nel corrispondente COA", +Account Not Found,Account non trovato, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Durante la creazione dell'account per la società figlia {0}, l'account principale {1} è stato trovato come conto contabile.", +Please convert the parent account in corresponding child company to a group account.,Converti l'account genitore nella corrispondente azienda figlia in un account di gruppo., +Invalid Parent Account,Account genitore non valido, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Rinominarlo è consentito solo tramite la società madre {0}, per evitare mancate corrispondenze.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Se si {0} {1} la quantità dell'articolo {2}, lo schema {3} verrà applicato all'articolo.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Se {0} {1} vali un articolo {2}, lo schema {3} verrà applicato all'elemento.", +"As the field {0} is enabled, the field {1} is mandatory.","Poiché il campo {0} è abilitato, il campo {1} è obbligatorio.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Poiché il campo {0} è abilitato, il valore del campo {1} dovrebbe essere maggiore di 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Impossibile consegnare il numero di serie {0} dell'articolo {1} poiché è riservato per completare l'ordine di vendita {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","L'ordine di vendita {0} ha una prenotazione per l'articolo {1}, puoi solo consegnare prenotato {1} contro {0}.", +{0} Serial No {1} cannot be delivered,{0} Numero di serie {1} non può essere consegnato, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Riga {0}: l'articolo in conto lavoro è obbligatorio per la materia prima {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Poiché sono disponibili materie prime sufficienti, la richiesta di materiale non è richiesta per il magazzino {0}.", +" If you still want to proceed, please enable {0}.","Se desideri comunque procedere, abilita {0}.", +The item referenced by {0} - {1} is already invoiced,L'articolo a cui fa riferimento {0} - {1} è già fatturato, +Therapy Session overlaps with {0},La sessione di terapia si sovrappone a {0}, +Therapy Sessions Overlapping,Sessioni di terapia sovrapposte, +Therapy Plans,Piani terapeutici, +"Item Code, warehouse, quantity are required on row {0}","Codice articolo, magazzino e quantità sono obbligatori nella riga {0}", +Get Items from Material Requests against this Supplier,Ottieni articoli da richieste di materiale contro questo fornitore, +Enable European Access,Consentire l'accesso europeo, +Creating Purchase Order ...,Creazione dell'ordine di acquisto ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Seleziona un fornitore dai fornitori predefiniti degli articoli seguenti. Alla selezione, verrà effettuato un Ordine di acquisto solo per gli articoli appartenenti al Fornitore selezionato.", +Row #{}: You must select {} serial numbers for item {}.,Riga # {}: è necessario selezionare i {} numeri di serie per l'articolo {}., diff --git a/erpnext/translations/ja.csv b/erpnext/translations/ja.csv index 647fb152fd..6e2eaae4a4 100644 --- a/erpnext/translations/ja.csv +++ b/erpnext/translations/ja.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',カテ Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',カテゴリが「評価」または「Vaulationと合計」のためのものであるときに控除することはできません。, "Cannot delete Serial No {0}, as it is used in stock transactions",在庫取引で使用されているため、シリアル番号{0}を削除することはできません, Cannot enroll more than {0} students for this student group.,この生徒グループには {0} 以上の生徒を登録することはできません, -Cannot find Item with this barcode,このバーコードの商品が見つかりません, Cannot find active Leave Period,有効期間を見つけることができません, Cannot produce more Item {0} than Sales Order quantity {1},受注数{1}より多くのアイテム{0}を製造することはできません, Cannot promote Employee with status Left,ステータスが「左」の従業員を昇格できません, @@ -690,7 +689,6 @@ Create Variants,バリエーションを作成, "Create and manage daily, weekly and monthly email digests.",日次・週次・月次のメールダイジェストを作成・管理, Create customer quotes,顧客の引用符を作成します。, Create rules to restrict transactions based on values.,値に基づいて取引を制限するルールを作成, -Created By,によって作成された, Created {0} scorecards for {1} between: ,{1}の間に{0}スコアカードが作成されました:, Creating Company and Importing Chart of Accounts,会社の作成と勘定コード表のインポート, Creating Fees,手数料の作成, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,提出前に必要とされる倉庫用, For row {0}: Enter Planned Qty,行{0}の場合:計画数量を入力してください, "For {0}, only credit accounts can be linked against another debit entry",{0}には、別の借方エントリに対する貸方勘定のみリンクすることができます, "For {0}, only debit accounts can be linked against another credit entry",{0}には、別の貸方エントリに対する借方勘定のみリンクすることができます, -Form View,フォームビュー, Forum Activity,フォーラム活動, Free item code is not selected,無料商品コードが選択されていません, Freight and Forwarding Charges,運送・転送料金, @@ -2638,7 +2635,6 @@ Send SMS,SMSを送信, Send mass SMS to your contacts,連絡先にまとめてSMSを送信, Sensitivity,感度, Sent,送信済, -Serial #,シリアル番号, Serial No and Batch,シリアル番号とバッチ, Serial No is mandatory for Item {0},アイテム{0}にはシリアル番号が必須です, Serial No {0} does not belong to Batch {1},シリアル番号{0}はバッチ{1}に属していません, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ERPNextへようこそ, What do you need help with?,お手伝いしましょうか?, What does it do?,これは何?, Where manufacturing operations are carried.,製造作業が行なわれる場所, -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",子会社{0}のアカウントを作成中に、親アカウント{1}が見つかりませんでした。対応するCOAで親口座を作成してください, White,ホワイト, Wire Transfer,電信振込, WooCommerce Products,WooCommerce製品, @@ -3493,6 +3488,7 @@ Likes,いいね!, Merge with existing,既存のものとマージ, Office,事務所, Orientation,オリエンテーション, +Parent,親, Passive,消極的, Payment Failed,支払いできませんでした, Percent,割合(%), @@ -3543,6 +3539,7 @@ Shift,シフト, Show {0},{0}を表示, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series"," - "、 "#"、 "。"、 "/"、 "{"、および "}"以外の特殊文字は、一連の名前付けでは使用できません, Target Details,ターゲット詳細, +{0} already has a Parent Procedure {1}.,{0}にはすでに親プロシージャー{1}があります。, API,API, Annual,年次, Approved,承認済, @@ -4241,7 +4238,6 @@ Download as JSON,JSONとしてダウンロード, End date can not be less than start date,終了日は開始日より短くすることはできません, For Default Supplier (Optional),デフォルトサプライヤ(オプション), From date cannot be greater than To date,開始日を終了日より大きくすることはできません, -Get items from,アイテム取得元, Group by,グループ化, In stock,在庫あり, Item name,アイテム名, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,品質フィードバックテンプレー Quality Goal,品質目標, Monitoring Frequency,モニタリング頻度, Weekday,平日, -January-April-July-October,1月 - 4月 - 7月 - 10月, -Revision and Revised On,改訂および改訂日, -Revision,リビジョン, -Revised On,改訂日, Objectives,目的, Quality Goal Objective,品質目標, Objective,目的, @@ -7574,7 +7566,6 @@ Parent Procedure,親プロシージャ, Processes,プロセス, Quality Procedure Process,品質管理プロセス, Process Description,過程説明, -Child Procedure,子供の手順, Link existing Quality Procedure.,既存の品質管理手順をリンクする。, Additional Information,追加情報, Quality Review Objective,品質レビューの目的, @@ -8557,7 +8548,6 @@ Purchase Order Trends,発注傾向, Purchase Receipt Trends,領収書傾向, Purchase Register,仕入帳, Quotation Trends,見積傾向, -Quoted Item Comparison,引用符で囲まれた項目の比較, Received Items To Be Billed,支払予定受領アイテム, Qty to Order,注文数, Requested Items To Be Transferred,移転予定の要求アイテム, @@ -9091,7 +9081,6 @@ Unmarked days,マークされていない日, Absent Days,不在日, Conditions and Formula variable and example,条件と式の変数と例, Feedback By,フィードバック, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-。MM .-。DD.-, Manufacturing Section,製造部門, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",デフォルトでは、顧客名は入力されたフルネームに従って設定されます。顧客に名前を付けたい場合, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,新しい販売トランザクションを作成するときに、デフォルトの価格表を構成します。アイテムの価格は、この価格表から取得されます。, @@ -9692,7 +9681,6 @@ Available Balance,利用可能残高, Reserved Balance,予約残高, Uncleared Balance,未決済残高, Payment related to {0} is not completed,{0}に関連する支払いが完了していません, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,行#{}:シリアル番号{}。 {}はすでに別のPOS請求書に取引されています。有効なシリアル番号を選択してください。, Row #{}: Item Code: {} is not available under warehouse {}.,行#{}:アイテムコード:{}はウェアハウス{}では使用できません。, Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,行#{}:在庫数がアイテムコードに十分ではありません:{}倉庫{}の下。利用可能な数量{}。, Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,行#{}:シリアル番号とアイテムに対するバッチを選択してください:{}またはそれを削除してトランザクションを完了してください。, @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},倉庫{1}の{0}で利用でき Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,続行するには、[在庫設定で負の在庫を許可する]を有効にするか、在庫入力を作成してください。, No Inpatient Record found against patient {0},患者{0}に対する入院記録が見つかりません, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,患者との遭遇{1}に対する入院薬の注文{0}はすでに存在します。, +Allow In Returns,返品を許可する, +Hide Unavailable Items,利用できないアイテムを隠す, +Apply Discount on Discounted Rate,割引率に割引を適用する, +Therapy Plan Template,治療計画テンプレート, +Fetching Template Details,テンプレートの詳細を取得する, +Linked Item Details,リンクされたアイテムの詳細, +Therapy Types,治療の種類, +Therapy Plan Template Detail,治療計画テンプレートの詳細, +Non Conformance,不適合, +Process Owner,プロセスオーナー, +Corrective Action,是正処置, +Preventive Action,予防処置, +Problem,問題, +Responsible,責任者, +Completion By,完了者, +Process Owner Full Name,プロセス所有者のフルネーム, +Right Index,右手の人差し指, +Left Index,左インデックス, +Sub Procedure,サブプロシージャ, +Passed,合格しました, +Print Receipt,領収書を印刷する, +Edit Receipt,領収書の編集, +Focus on search input,検索入力に焦点を当てる, +Focus on Item Group filter,アイテムグループフィルターに焦点を当てる, +Checkout Order / Submit Order / New Order,チェックアウト注文/送信注文/新規注文, +Add Order Discount,注文割引を追加, +Item Code: {0} is not available under warehouse {1}.,商品コード:{0}は倉庫{1}ではご利用いただけません。, +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,倉庫{1}の下のアイテム{0}のシリアル番号は使用できません。倉庫を変えてみてください。, +Fetched only {0} available serial numbers.,{0}の使用可能なシリアル番号のみを取得しました。, +Switch Between Payment Modes,支払いモードの切り替え, +Enter {0} amount.,{0}金額を入力します。, +You don't have enough points to redeem.,引き換えるのに十分なポイントがありません。, +You can redeem upto {0}.,{0}までご利用いただけます。, +Enter amount to be redeemed.,引き換える金額を入力します。, +You cannot redeem more than {0}.,{0}を超えて利用することはできません。, +Open Form View,フォームビューを開く, +POS invoice {0} created succesfully,POS請求書{0}が正常に作成されました, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,在庫数がアイテムコードに十分ではありません:倉庫{1}の下の{0}。利用可能な数量{2}。, +Serial No: {0} has already been transacted into another POS Invoice.,シリアル番号:{0}はすでに別のPOS請求書に処理されています。, +Balance Serial No,バランスシリアル番号, +Warehouse: {0} does not belong to {1},倉庫:{0}は{1}に属していません, +Please select batches for batched item {0},バッチアイテム{0}のバッチを選択してください, +Please select quantity on row {0},行{0}で数量を選択してください, +Please enter serial numbers for serialized item {0},シリアル化されたアイテム{0}のシリアル番号を入力してください, +Batch {0} already selected.,バッチ{0}はすでに選択されています。, +Please select a warehouse to get available quantities,利用可能な数量を取得するには、倉庫を選択してください, +"For transfer from source, selected quantity cannot be greater than available quantity",ソースからの転送の場合、選択した数量は利用可能な数量を超えることはできません, +Cannot find Item with this Barcode,このバーコードのアイテムが見つかりません, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0}は必須です。 {1}から{2}の外貨両替レコードが作成されていない可能性があります, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{}はそれにリンクされたアセットを送信しました。購入返品を作成するには、アセットをキャンセルする必要があります。, +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,送信されたアセット{0}にリンクされているため、このドキュメントをキャンセルできません。続行するにはキャンセルしてください。, +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,行#{}:シリアル番号{}はすでに別のPOS請求書に処理されています。有効なシリアル番号を選択してください。, +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,行#{}:シリアル番号{}はすでに別のPOS請求書に処理されています。有効なシリアル番号を選択してください。, +Item Unavailable,アイテムは利用できません, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},行#{}:シリアル番号{}は、元の請求書{}で取引されていないため、返品できません。, +Please set default Cash or Bank account in Mode of Payment {},お支払い方法でデフォルトの現金または銀行口座を設定してください{}, +Please set default Cash or Bank account in Mode of Payments {},お支払い方法でデフォルトの現金または銀行口座を設定してください{}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,{}アカウントが貸借対照表アカウントであることを確認してください。親アカウントを貸借対照表アカウントに変更するか、別のアカウントを選択できます。, +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,{}アカウントが買掛金アカウントであることを確認してください。アカウントタイプをPayableに変更するか、別のアカウントを選択します。, +Row {}: Expense Head changed to {} ,行{}:経費の頭が{}に変更されました, +because account {} is not linked to warehouse {} ,アカウント{}は倉庫{}にリンクされていないため, +or it is not the default inventory account,または、デフォルトの在庫アカウントではありません, +Expense Head Changed,経費ヘッドが変更されました, +because expense is booked against this account in Purchase Receipt {},費用は購入領収書{}でこのアカウントに対して予約されているためです。, +as no Purchase Receipt is created against Item {}. ,アイテム{}に対して購入領収書が作成されないため。, +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,これは、購入請求書の後に購入領収書が作成された場合の会計処理を処理するために行われます。, +Purchase Order Required for item {},アイテムに必要な注文書{}, +To submit the invoice without purchase order please set {} ,注文書なしで請求書を送信するには、{}を設定してください, +as {} in {},{}の{}として, +Mandatory Purchase Order,必須の発注書, +Purchase Receipt Required for item {},アイテム{}に必要な購入領収書, +To submit the invoice without purchase receipt please set {} ,領収書なしで請求書を提出するには、{}を設定してください, +Mandatory Purchase Receipt,必須の購入領収書, +POS Profile {} does not belongs to company {},POSプロファイル{}は会社{}に属していません, +User {} is disabled. Please select valid user/cashier,ユーザー{}は無効になっています。有効なユーザー/キャッシャーを選択してください, +Row #{}: Original Invoice {} of return invoice {} is {}. ,行#{}:返品請求書{}の元の請求書{}は{}です。, +Original invoice should be consolidated before or along with the return invoice.,元の請求書は、返品請求書の前または一緒に統合する必要があります。, +You can add original invoice {} manually to proceed.,元の請求書{}を手動で追加して続行できます。, +Please ensure {} account is a Balance Sheet account. ,{}アカウントが貸借対照表アカウントであることを確認してください。, +You can change the parent account to a Balance Sheet account or select a different account.,親アカウントを貸借対照表アカウントに変更するか、別のアカウントを選択できます。, +Please ensure {} account is a Receivable account. ,{}アカウントが売掛金アカウントであることを確認してください。, +Change the account type to Receivable or select a different account.,売掛金タイプを売掛金に変更するか、別のアカウントを選択します。, +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},獲得したポイントは引き換えられているため、{}をキャンセルすることはできません。最初に{}いいえ{}をキャンセルします, +already exists,もう存在している, +POS Closing Entry {} against {} between selected period,選択した期間の{}に対するPOSクロージングエントリ{}, +POS Invoice is {},POS請求書は{}, +POS Profile doesn't matches {},POSプロファイルが{}と一致しません, +POS Invoice is not {},POS請求書は{}ではありません, +POS Invoice isn't created by user {},POS請求書はユーザーによって作成されていません{}, +Row #{}: {},行#{}:{}, +Invalid POS Invoices,無効なPOS請求書, +Please add the account to root level Company - {},アカウントをルートレベルの会社に追加してください-{}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",子会社{0}のアカウントを作成しているときに、親アカウント{1}が見つかりません。対応するCOAで親アカウントを作成してください, +Account Not Found,アカウントが見つかりません, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",子会社{0}のアカウントを作成しているときに、親アカウント{1}が元帳アカウントとして見つかりました。, +Please convert the parent account in corresponding child company to a group account.,対応する子会社の親アカウントをグループアカウントに変換してください。, +Invalid Parent Account,無効な親アカウント, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",名前の変更は、不一致を避けるために、親会社{0}を介してのみ許可されます。, +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.",アイテム{2}の数量が{0} {1}の場合、スキーム{3}がアイテムに適用されます。, +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.",アイテム{2}の価値がある{0} {1}の場合、スキーム{3}がアイテムに適用されます。, +"As the field {0} is enabled, the field {1} is mandatory.",フィールド{0}が有効になっているため、フィールド{1}は必須です。, +"As the field {0} is enabled, the value of the field {1} should be more than 1.",フィールド{0}が有効になっているため、フィールド{1}の値は1より大きくする必要があります。, +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},販売注文を履行するために予約されているため、アイテム{1}のシリアル番号{0}を配信できません{2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.",受注{0}にはアイテム{1}の予約があり、予約済みの{1}は{0}に対してのみ配信できます。, +{0} Serial No {1} cannot be delivered,{0}シリアル番号{1}は配信できません, +Row {0}: Subcontracted Item is mandatory for the raw material {1},行{0}:下請け品目は原材料に必須です{1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.",十分な原材料があるため、倉庫{0}には資材要求は必要ありません。, +" If you still want to proceed, please enable {0}.",それでも続行する場合は、{0}を有効にしてください。, +The item referenced by {0} - {1} is already invoiced,{0}-{1}で参照されているアイテムはすでに請求されています, +Therapy Session overlaps with {0},セラピーセッションが{0}と重複しています, +Therapy Sessions Overlapping,重複する治療セッション, +Therapy Plans,治療計画, +"Item Code, warehouse, quantity are required on row {0}",行{0}にはアイテムコード、倉庫、数量が必要です, +Get Items from Material Requests against this Supplier,このサプライヤーに対する重要な要求からアイテムを取得する, +Enable European Access,ヨーロッパへのアクセスを有効にする, +Creating Purchase Order ...,注文書の作成..。, +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",以下の項目のデフォルトサプライヤーからサプライヤーを選択します。選択時に、選択したサプライヤーに属するアイテムに対してのみ発注書が作成されます。, +Row #{}: You must select {} serial numbers for item {}.,行#{}:アイテム{}の{}シリアル番号を選択する必要があります。, diff --git a/erpnext/translations/km.csv b/erpnext/translations/km.csv index adc20c3cf5..e2a528cea2 100644 --- a/erpnext/translations/km.csv +++ b/erpnext/translations/km.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',មិ Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',មិនអាចកាត់ពេលដែលប្រភេទគឺសម្រាប់ 'វាយតម្លៃ' ឬ 'Vaulation និងសរុប, "Cannot delete Serial No {0}, as it is used in stock transactions","មិនអាចលុបសៀរៀលគ្មាន {0}, ដូចដែលវាត្រូវបានគេប្រើនៅក្នុងប្រតិបត្តិការភាគហ៊ុន", Cannot enroll more than {0} students for this student group.,មិនអាចចុះឈ្មោះចូលរៀនច្រើនជាង {0} សិស្សសម្រាប់ក្រុមនិស្សិតនេះ។, -Cannot find Item with this barcode,មិនអាចរកឃើញធាតុជាមួយលេខកូដនេះទេ។, Cannot find active Leave Period,មិនអាចរកកំនត់ឈប់កំនត់សកម្ម, Cannot produce more Item {0} than Sales Order quantity {1},មិនអាចបង្កើតធាតុជាច្រើនទៀត {0} ជាងបរិមាណលំដាប់លក់ {1}, Cannot promote Employee with status Left,មិនអាចលើកកម្ពស់និយោជិកដោយមានស្ថានភាពនៅសល់, @@ -690,7 +689,6 @@ Create Variants,បង្កើតវ៉ារ្យង់, "Create and manage daily, weekly and monthly email digests.",បង្កើតនិងគ្រប់គ្រងការរំលាយអាហារបានអ៊ីម៉ែលជារៀងរាល់ថ្ងៃប្រចាំសប្តាហ៍និងប្រចាំខែ។, Create customer quotes,បង្កើតសម្រង់អតិថិជន, Create rules to restrict transactions based on values.,បង្កើតច្បាប់ដើម្បីរឹតបន្តឹងការធ្វើប្រតិបត្តិការដោយផ្អែកលើតម្លៃ។, -Created By,បានបង្កើតដោយ, Created {0} scorecards for {1} between: ,បានបង្កើត {0} សន្លឹកបៀសម្រាប់ {1} រវាង:, Creating Company and Importing Chart of Accounts,បង្កើតក្រុមហ៊ុននិងនាំចូលតារាងគណនី។, Creating Fees,បង្កើតកម្រៃ, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,សម្រាប់ឃ្លាំង For row {0}: Enter Planned Qty,សម្រាប់ជួរដេក {0}: បញ្ចូល Qty ដែលបានគ្រោងទុក, "For {0}, only credit accounts can be linked against another debit entry",{0} មានតែគណនីឥណទានអាចត្រូវបានតភ្ជាប់ប្រឆាំងនឹងធាតុឥណពន្ធផ្សេងទៀត, "For {0}, only debit accounts can be linked against another credit entry",{0} មានតែគណនីឥណពន្ធអាចត្រូវបានតភ្ជាប់ប្រឆាំងនឹងធាតុឥណទានផ្សេងទៀត, -Form View,ទិដ្ឋភាពទម្រង់, Forum Activity,សកម្មភាពវេទិកា, Free item code is not selected,លេខកូដធាតុឥតគិតថ្លៃមិនត្រូវបានជ្រើសរើសទេ។, Freight and Forwarding Charges,ការចោទប្រកាន់ការដឹកជញ្ជូននិងការបញ្ជូនបន្ត, @@ -2638,7 +2635,6 @@ Send SMS,ផ្ញើសារជាអក្សរ, Send mass SMS to your contacts,ផ្ញើសារជាអក្សរដ៏ធំមួយដើម្បីទំនាក់ទំនងរបស់អ្នក, Sensitivity,ភាពប្រែប្រួល, Sent,ដែលបានផ្ញើ, -Serial #,# សៀរៀល, Serial No and Batch,សៀរៀលទេនិងបាច់ & ‧;, Serial No is mandatory for Item {0},គ្មានស៊េរីគឺជាការចាំបាច់សម្រាប់ធាតុ {0}, Serial No {0} does not belong to Batch {1},ស៊េរីលេខ {0} មិនមែនជារបស់ {1} បាច់ទេ, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,សូមស្វាគមន៍មកកាន់ ERPNext, What do you need help with?,តើអ្នកត្រូវការអ្វីខ្លះជួយជាមួយនឹង?, What does it do?,តើធ្វើដូចម្ដេច?, Where manufacturing operations are carried.,ដែលជាកន្លែងដែលប្រតិបត្ដិការផលិតត្រូវបានអនុវត្ត។, -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","នៅពេលបង្កើតគណនីសម្រាប់ក្រុមហ៊ុនកុមារ {0}, រកមិនឃើញ {1} ពត៌មានពីមាតាឬបិតា។ សូមបង្កើតគណនីមេនៅក្នុង COA ដែលត្រូវគ្នា", White,សេត, Wire Transfer,ការផ្ទេរខ្សែ, WooCommerce Products,ផលិតផលវ៉ាយហ្វាយ។, @@ -3493,6 +3488,7 @@ Likes,ចុច Like, Merge with existing,បញ្ចូលចូលគ្នាជាមួយនឹងការដែលមានស្រាប់, Office,ការិយាល័យ, Orientation,ការតំរង់ទិស, +Parent,មាតាឬបិតា, Passive,អកម្ម, Payment Failed,ការទូទាត់បរាជ័យ, Percent,ភាគរយ, @@ -3543,6 +3539,7 @@ Shift,ប្តូរ។, Show {0},បង្ហាញ {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","តួអក្សរពិសេសលើកលែងតែ "-", "#", "។ ", "/", "{" និង "}" មិនត្រូវបានអនុញ្ញាតក្នុងស៊េរីដាក់ឈ្មោះ", Target Details,ព័ត៌មានលម្អិតគោលដៅ។, +{0} already has a Parent Procedure {1}.,{0} មាននីតិវិធីឪពុកម្តាយរួចហើយ {1} ។, API,API, Annual,ប្រចាំឆ្នាំ, Approved,បានអនុម័ត, @@ -4241,7 +4238,6 @@ Download as JSON,ទាញយកជា Json ។, End date can not be less than start date,កាលបរិច្ឆេទបញ្ចប់មិនអាចតិចជាងកាលបរិច្ឆេទចាប់ផ្ដើមទេ, For Default Supplier (Optional),សម្រាប់អ្នកផ្គត់ផ្គង់លំនាំដើម (ស្រេចចិត្ត), From date cannot be greater than To date,ពីកាលបរិច្ឆេទមិនអាចមានចំនួនច្រើនជាងកាលបរិច្ឆេទ, -Get items from,ទទួលបានមុខទំនិញពី, Group by,ក្រុមតាម, In stock,នៅក្នុងស្តុក, Item name,ឈ្មោះធាតុ, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,ប៉ារ៉ាម៉ែត្រគំ Quality Goal,គោលដៅគុណភាព។, Monitoring Frequency,ភាពញឹកញាប់នៃការត្រួតពិនិត្យ។, Weekday,ថ្ងៃធ្វើការ។, -January-April-July-October,មករា - មេសា - កក្កដា - តុលា។, -Revision and Revised On,ការពិនិត្យឡើងវិញនិងកែលម្អឡើងវិញ។, -Revision,ការពិនិត្យឡើងវិញ, -Revised On,បានកែសំរួលនៅថ្ងៃទី។, Objectives,គោលបំណង។, Quality Goal Objective,គោលបំណងគោលដៅគុណភាព។, Objective,គោលបំណង។, @@ -7574,7 +7566,6 @@ Parent Procedure,នីតិវិធីឪពុកម្តាយ។, Processes,ដំណើរការ។, Quality Procedure Process,ដំណើរការនីតិវិធីគុណភាព។, Process Description,ការពិពណ៌នាអំពីដំណើរការ។, -Child Procedure,នីតិវិធីកុមារ, Link existing Quality Procedure.,ភ្ជាប់នីតិវិធីគុណភាពដែលមានស្រាប់។, Additional Information,ព័ត៍មានបន្ថែម, Quality Review Objective,គោលបំណងពិនិត្យគុណភាព។, @@ -8557,7 +8548,6 @@ Purchase Order Trends,ទិញលំដាប់និន្នាការ, Purchase Receipt Trends,និន្នាការបង្កាន់ដៃទិញ, Purchase Register,ទិញចុះឈ្មោះ, Quotation Trends,សម្រង់និន្នាការ, -Quoted Item Comparison,ធាតុដកស្រង់សម្តីប្រៀបធៀប, Received Items To Be Billed,ទទួលបានធាតុដែលនឹងត្រូវបានផ្សព្វផ្សាយ, Qty to Order,qty ម៉ង់ទិញ, Requested Items To Be Transferred,ធាតុដែលបានស្នើសុំឱ្យគេបញ្ជូន, @@ -9091,7 +9081,6 @@ Unmarked days,ថ្ងៃដែលមិនបានសម្គាល់, Absent Days,ថ្ងៃអវត្តមាន, Conditions and Formula variable and example,លក្ខខណ្ឌនិងអថេររូបមន្តនិងឧទាហរណ៍, Feedback By,មតិដោយ, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .- ។ MM .- DD.-, Manufacturing Section,ផ្នែកផលិត, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",តាមលំនាំដើមឈ្មោះអតិថិជនត្រូវបានកំណត់ដូចឈ្មោះពេញដែលបានបញ្ចូល។ ប្រសិនបើអ្នកចង់អោយអតិថិជនដាក់ឈ្មោះដោយក, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,កំណត់បញ្ជីតម្លៃលំនាំដើមនៅពេលបង្កើតប្រតិបត្តិការលក់ថ្មី។ តម្លៃទំនិញនឹងត្រូវបានទាញយកពីបញ្ជីតម្លៃនេះ។, @@ -9692,7 +9681,6 @@ Available Balance,សមតុល្យដែលមាន, Reserved Balance,សមតុល្យបម្រុង, Uncleared Balance,តុល្យភាពមិនស្អាត, Payment related to {0} is not completed,ការទូទាត់ទាក់ទងនឹង {0} មិនត្រូវបានបញ្ចប់ទេ, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,ជួរដេក # {}៖ សេរ៊ីលេខ {} ។ {} ត្រូវបានប្តូរទៅជាវិក្កយបត្រម៉ាស៊ីនឆូតកាតផ្សេងទៀត។ សូមជ្រើសរើសសៀរៀលត្រឹមត្រូវ។, Row #{}: Item Code: {} is not available under warehouse {}.,ជួរដេក # {}៖ លេខកូដៈ {} មិនមាននៅក្រោមឃ្លាំង {} ទេ។, Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,ជួរដេក # {}៖ បរិមាណស្តុកមិនគ្រប់គ្រាន់សម្រាប់លេខកូដទំនិញ៖ {} នៅក្រោមឃ្លាំង {} ។ បរិមាណដែលមាន {} ។, Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,ជួរទី # {}៖ សូមជ្រើសរើសសៀរៀលនិងបាច់ប្រឆាំងនឹងធាតុ៖ {} ឬយកវាចេញដើម្បីបញ្ចប់ប្រតិបត្តិការ។, @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},បរិមាណមិនម Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,សូមអនុញ្ញាតអនុញ្ញាតភាគហ៊ុនអវិជ្ជមាននៅក្នុងការកំណត់ភាគហ៊ុនឬបង្កើតធាតុចូលដើម្បីដំណើរការបន្ត។, No Inpatient Record found against patient {0},គ្មានកំណត់ត្រាអ្នកជំងឺដែលរកឃើញប្រឆាំងនឹងអ្នកជំងឺ {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,ការបញ្ជាទិញថ្នាំព្យាបាលដោយអ្នកជម្ងឺ {0} ប្រឆាំងនឹងអ្នកជួបប្រទះអ្នកជម្ងឺ {1} មានរួចហើយ។, +Allow In Returns,អនុញ្ញាតឱ្យត្រឡប់មកវិញ, +Hide Unavailable Items,លាក់ធាតុដែលមិនមាន, +Apply Discount on Discounted Rate,អនុវត្តការបញ្ចុះតម្លៃលើអត្រាបញ្ចុះតម្លៃ, +Therapy Plan Template,គំរូផែនការព្យាបាល, +Fetching Template Details,ការទាញយកព័ត៌មានលំអិតនៃគំរូ, +Linked Item Details,ព័ត៌មានលំអិតទាក់ទងនឹងធាតុ, +Therapy Types,ប្រភេទនៃការព្យាបាល, +Therapy Plan Template Detail,ទំព័រគំរូលំអិតនៃផែនការព្យាបាល, +Non Conformance,ការមិនអនុលោម, +Process Owner,ម្ចាស់ដំណើរការ, +Corrective Action,សកម្មភាពកែតម្រូវ, +Preventive Action,សកម្មភាពការពារ, +Problem,បញ្ហា, +Responsible,ទទួលខុសត្រូវ, +Completion By,បញ្ចប់ដោយ, +Process Owner Full Name,ម្ចាស់ឈ្មោះដំណើរការពេញ, +Right Index,សន្ទស្សន៍ត្រឹមត្រូវ, +Left Index,សន្ទស្សន៍ខាងឆ្វេង, +Sub Procedure,នីតិវិធីរង, +Passed,បានឆ្លងកាត់, +Print Receipt,បង្កាន់ដៃបោះពុម្ព, +Edit Receipt,កែសម្រួលបង្កាន់ដៃ, +Focus on search input,ផ្តោតលើការបញ្ចូលការស្វែងរក, +Focus on Item Group filter,ផ្តោតលើតម្រងក្រុមធាតុ, +Checkout Order / Submit Order / New Order,Checkout បញ្ជាទិញ / ដាក់បញ្ជាទិញ / បញ្ជាទិញថ្មី, +Add Order Discount,បន្ថែមការបញ្ចុះតម្លៃតាមលំដាប់, +Item Code: {0} is not available under warehouse {1}.,លេខកូដធាតុ៖ {០} មិនមាននៅក្រោមឃ្លាំង {១} ទេ។, +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,លេខស៊េរីមិនអាចប្រើបានសម្រាប់ធាតុ {0} នៅក្រោមឃ្លាំង {1} ។ សូមព្យាយាមផ្លាស់ប្តូរឃ្លាំង។, +Fetched only {0} available serial numbers.,ទទួលបានតែលេខ {0} ប៉ុណ្ណោះ។, +Switch Between Payment Modes,ប្តូររវាងរបៀបបង់ប្រាក់, +Enter {0} amount.,បញ្ចូលចំនួន {0} ។, +You don't have enough points to redeem.,អ្នកមិនមានពិន្ទុគ្រប់គ្រាន់ដើម្បីលោះទេ។, +You can redeem upto {0}.,អ្នកអាចផ្តោះប្តូរប្រាក់បានដល់លេខ {០} ។, +Enter amount to be redeemed.,បញ្ចូលចំនួនទឹកប្រាក់ដែលត្រូវបង់រំលោះ។, +You cannot redeem more than {0}.,អ្នកមិនអាចលោះច្រើនជាង {0} ទេ។, +Open Form View,បើកទិដ្ឋភាពទម្រង់, +POS invoice {0} created succesfully,វិក័យប័ត្រម៉ាស៊ីនឆូតកាត {០} បានបង្កើតដោយជោគជ័យ, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,បរិមាណស្តុកមិនគ្រប់គ្រាន់សម្រាប់លេខកូដទំនិញ៖ {០} ក្រោមឃ្លាំង {១} ។ បរិមាណដែលអាចរកបាន {2} ។, +Serial No: {0} has already been transacted into another POS Invoice.,លេខស៊េរី៖ {០} ត្រូវបានប្តូរទៅជាវិក្កយបត្រម៉ាស៊ីនឆូតកាតផ្សេងទៀត។, +Balance Serial No,លេខសៀរៀលគ្មាន, +Warehouse: {0} does not belong to {1},ឃ្លាំង: {០} មិនមែនជាកម្មសិទ្ធិរបស់ {១} ទេ, +Please select batches for batched item {0},សូមជ្រើសរើសបាច់សម្រាប់វត្ថុដែលមានឆ្នូតៗ {0}, +Please select quantity on row {0},សូមជ្រើសរើសបរិមាណនៅជួរ {0}, +Please enter serial numbers for serialized item {0},សូមបញ្ចូលលេខស៊េរីសម្រាប់ធាតុសៀរៀល {0}, +Batch {0} already selected.,បាច់ {0} ដែលបានជ្រើសរើសរួចហើយ។, +Please select a warehouse to get available quantities,សូមជ្រើសរើសឃ្លាំងមួយដើម្បីទទួលបានបរិមាណដែលមាន, +"For transfer from source, selected quantity cannot be greater than available quantity",សម្រាប់ការផ្ទេរពីប្រភពបរិមាណដែលបានជ្រើសរើសមិនអាចធំជាងបរិមាណដែលមានទេ, +Cannot find Item with this Barcode,មិនអាចរកឃើញធាតុជាមួយលេខកូដនេះទេ, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} គឺចាំបាច់។ ប្រហែលជាកំណត់ត្រាការផ្លាស់ប្តូររូបិយប័ណ្ណមិនត្រូវបានបង្កើតឡើងសម្រាប់ {១} ដល់ {២}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} បានបញ្ជូនទ្រព្យសម្បត្តិដែលភ្ជាប់ទៅវា។ អ្នកត្រូវបោះបង់ទ្រព្យសម្បត្តិដើម្បីបង្កើតការទិញត្រឡប់មកវិញ។, +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,មិនអាចលុបចោលឯកសារនេះទេព្រោះវាត្រូវបានភ្ជាប់ជាមួយទ្រព្យសម្បត្តិដែលបានដាក់ស្នើ {0} ។ សូមបោះបង់វាដើម្បីបន្ត។, +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,ជួរទី # {}៖ លេខស៊េរី {} ត្រូវបានប្តូរទៅជាវិក្កយបត្រម៉ាស៊ីនឆូតកាតផ្សេងទៀត។ សូមជ្រើសរើសសៀរៀលត្រឹមត្រូវ។, +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,ជួរទី # {}៖ សៀរៀលសៀរៀល។ {} បានប្តូរទៅជាវិក្កយបត្រម៉ាស៊ីនឆូតកាតផ្សេងទៀត។ សូមជ្រើសរើសសៀរៀលត្រឹមត្រូវ។, +Item Unavailable,មិនមានធាតុ, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},ជួរទី # {}៖ លេខស៊េរី {} មិនអាចត្រលប់មកវិញទេពីព្រោះវាមិនត្រូវបានប្តូរទៅជាវិក័យប័ត្រដើម {}, +Please set default Cash or Bank account in Mode of Payment {},សូមកំណត់គណនីសាច់ប្រាក់ឬគណនីធនាគារលំនាំដើមក្នុងរបៀបបង់ប្រាក់ {}, +Please set default Cash or Bank account in Mode of Payments {},សូមកំណត់គណនីសាច់ប្រាក់ឬគណនីធនាគារក្នុងរបៀបបង់ប្រាក់ {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,សូមប្រាកដថា {} គណនីគឺជាគណនីសន្លឹកសមតុល្យ។ អ្នកអាចប្តូរគណនីមេទៅគណនីសន្លឹកសមតុល្យឬជ្រើសរើសគណនីផ្សេង។, +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,សូមប្រាកដថា {} គណនីគឺជាគណនីដែលត្រូវបង់។ ផ្លាស់ប្តូរប្រភេទគណនីទៅជាការទូទាត់ឬជ្រើសរើសគណនីផ្សេងទៀត។, +Row {}: Expense Head changed to {} ,ជួរដេក {}៖ ក្បាលចំណាយបានប្តូរទៅ {}, +because account {} is not linked to warehouse {} ,ពីព្រោះគណនី {} មិនត្រូវបានភ្ជាប់ទៅនឹងឃ្លាំង {}, +or it is not the default inventory account,ឬវាមិនមែនជាគណនីសារពើភ័ណ្ឌលំនាំដើម, +Expense Head Changed,ប្តូរក្បាល, +because expense is booked against this account in Purchase Receipt {},ពីព្រោះការចំណាយត្រូវបានកក់ទុកសម្រាប់គណនីនេះក្នុងវិក័យប័ត្រទិញ {}, +as no Purchase Receipt is created against Item {}. ,ដោយសារគ្មានវិក័យប័ត្រទិញត្រូវបានបង្កើតឡើងប្រឆាំងនឹងធាតុ {} ។, +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,នេះត្រូវបានធ្វើដើម្បីដោះស្រាយគណនេយ្យករណីនៅពេលបង្កាន់ដៃទិញត្រូវបានបង្កើតបន្ទាប់ពីវិក័យប័ត្រទិញ, +Purchase Order Required for item {},ការបញ្ជាទិញដែលត្រូវការសម្រាប់ធាតុ {}, +To submit the invoice without purchase order please set {} ,ដើម្បីដាក់វិក័យប័ត្រដោយគ្មានការបញ្ជាទិញសូមកំណត់ {}, +as {} in {},ដូចជានៅក្នុង {}, +Mandatory Purchase Order,ការបញ្ជាទិញចាំបាច់, +Purchase Receipt Required for item {},វិក័យប័ត្រទិញត្រូវការសម្រាប់ធាតុ {}, +To submit the invoice without purchase receipt please set {} ,ដើម្បីផ្ញើវិក័យប័ត្រដោយគ្មានបង្កាន់ដៃទិញសូមកំណត់ {}, +Mandatory Purchase Receipt,បង្កាន់ដៃទិញចាំបាច់, +POS Profile {} does not belongs to company {},ពត៌មានរបស់ម៉ាស៊ីនឆូតកាត {} មិនមែនជារបស់ក្រុមហ៊ុន {}, +User {} is disabled. Please select valid user/cashier,អ្នកប្រើ {} ត្រូវបានបិទ។ សូមជ្រើសរើសអ្នកប្រើប្រាស់ / បេឡាករត្រឹមត្រូវ, +Row #{}: Original Invoice {} of return invoice {} is {}. ,ជួរដេក # {}៖ វិក័យប័ត្រដើម {} នៃវិក័យប័ត្រត្រឡប់មកវិញ {} គឺ {} ។, +Original invoice should be consolidated before or along with the return invoice.,វិក័យប័ត្រដើមគួរតែត្រូវបានបង្រួបបង្រួមមុនឬរួមជាមួយវិក័យប័ត្រត្រឡប់មកវិញ។, +You can add original invoice {} manually to proceed.,អ្នកអាចបន្ថែមវិក័យប័ត្រដើម {} ដោយដៃដើម្បីបន្ត។, +Please ensure {} account is a Balance Sheet account. ,សូមប្រាកដថា {} គណនីគឺជាគណនីសន្លឹកសមតុល្យ។, +You can change the parent account to a Balance Sheet account or select a different account.,អ្នកអាចប្តូរគណនីមេទៅគណនីសន្លឹកសមតុល្យឬជ្រើសរើសគណនីផ្សេង។, +Please ensure {} account is a Receivable account. ,សូមប្រាកដថា {} គណនីគឺជាគណនីដែលអាចទទួលយកបាន។, +Change the account type to Receivable or select a different account.,ផ្លាស់ប្តូរប្រភេទគណនីទៅជាអ្នកទទួលឬជ្រើសរើសគណនីផ្សេងទៀត។, +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} មិនអាចត្រូវបានលុបចោលទេចាប់តាំងពីចំនុចស្មោះត្រង់ដែលរកបានត្រូវបានលោះ។ ដំបូងលុបចោល {} ទេ {}, +already exists,ធ្លាប់មានរួចហើយ, +POS Closing Entry {} against {} between selected period,ការបិទម៉ាស៊ីនឆូតកាត {} ប្រឆាំងនឹង {} រវាងរយៈពេលដែលបានជ្រើសរើស, +POS Invoice is {},វិក្កយបត្រម៉ាស៊ីនឆូតកាតគឺ {}, +POS Profile doesn't matches {},ទម្រង់ម៉ាស៊ីនឆូតកាតមិនត្រូវគ្នាទេ {}, +POS Invoice is not {},វិក្កយបត្រម៉ាស៊ីនឆូតកាតមិនមែន {}, +POS Invoice isn't created by user {},វិក្កយបត្រម៉ាស៊ីនឆូតកាតមិនត្រូវបានបង្កើតដោយអ្នកប្រើ {}, +Row #{}: {},ជួរដេក # {}៖ {}, +Invalid POS Invoices,វិក្កយបត្រម៉ាស៊ីនឆូតកាតមិនត្រឹមត្រូវ, +Please add the account to root level Company - {},សូមបន្ថែមគណនីទៅក្រុមហ៊ុនកម្រិត root - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",ពេលកំពុងបង្កើតគណនីសម្រាប់ក្រុមហ៊ុនកុមារ {០} គណនីមេ {១} រកមិនឃើញទេ។ សូមបង្កើតគណនីមេនៅក្នុង COA ដែលត្រូវគ្នា, +Account Not Found,រកមិនឃើញគណនី, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",នៅពេលបង្កើតគណនីសម្រាប់ក្រុមហ៊ុនកុមារ {០} គណនីមេ {១} ត្រូវបានរកឃើញថាជាគណនីយួរដៃ។, +Please convert the parent account in corresponding child company to a group account.,សូមប្តូរគណនីមេនៅក្នុងក្រុមហ៊ុនកុមារដែលត្រូវគ្នាទៅនឹងគណនីក្រុម។, +Invalid Parent Account,គណនីមេមិនត្រឹមត្រូវ, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",ការប្តូរឈ្មោះវាត្រូវបានអនុញ្ញាតិតែតាមរយៈក្រុមហ៊ុនមេ {0} ដើម្បីចៀសវាងភាពមិនស៊ីចង្វាក់គ្នា។, +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.",ប្រសិនបើអ្នក {0} {1} បរិមាណនៃធាតុ {2} គ្រោងការណ៍ {3} នឹងត្រូវបានអនុវត្តលើធាតុ។, +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.",ប្រសិនបើអ្នក {0} {1} វត្ថុមានតម្លៃ {2} គ្រោងការណ៍ {3} នឹងត្រូវបានអនុវត្តលើធាតុ។, +"As the field {0} is enabled, the field {1} is mandatory.",នៅពេលដែលវាល {0} ត្រូវបានបើកនោះវាល {1} គឺចាំបាច់។, +"As the field {0} is enabled, the value of the field {1} should be more than 1.",នៅពេលដែលវាល {0} ត្រូវបានបើកតម្លៃនៃវាល {1} គួរតែលើសពី 1 ។, +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},មិនអាចចែកចាយសៀរៀលលេខ {០} នៃធាតុ {១} បានទេព្រោះវាត្រូវបានបម្រុងទុកសម្រាប់ការបញ្ជាទិញការលក់ពេញលេញ {២}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.",ការបញ្ជាទិញការលក់ {0} មានការកក់ទុកសម្រាប់ធាតុ {1} អ្នកអាចចែកចាយបានតែតូប {1} ទល់នឹង {0} ប៉ុណ្ណោះ។, +{0} Serial No {1} cannot be delivered,{0} ស៊េរីលេខ {1} មិនអាចត្រូវបានបញ្ជូនទេ, +Row {0}: Subcontracted Item is mandatory for the raw material {1},ជួរដេក {0}៖ ធាតុដែលបានចុះកិច្ចសន្យាត្រូវបានតំរូវអោយជាវត្ថុធាតុដើម {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.",ដោយសារមានវត្ថុធាតុដើមគ្រប់គ្រាន់ការស្នើសុំសម្ភារៈមិនចាំបាច់សម្រាប់ឃ្លាំង {0} ទេ។, +" If you still want to proceed, please enable {0}.",ប្រសិនបើអ្នកនៅតែចង់បន្តសូមបើក {0} ។, +The item referenced by {0} - {1} is already invoiced,ធាតុដែលយោងដោយ {០} - {១} បានចេញវិក្កយបត្ររួចហើយ, +Therapy Session overlaps with {0},វគ្គនៃការព្យាបាលត្រួតគ្នាជាមួយ {0}, +Therapy Sessions Overlapping,ការព្យាបាលដោយការត្រួតគ្នា, +Therapy Plans,ផែនការព្យាបាល, +"Item Code, warehouse, quantity are required on row {0}",លេខកូដទំនិញឃ្លាំងបរិមាណត្រូវបានទាមទារនៅជួរ {0}, +Get Items from Material Requests against this Supplier,ទទួលបានវត្ថុពីសំណើសម្ភារៈប្រឆាំងនឹងអ្នកផ្គត់ផ្គង់នេះ, +Enable European Access,បើកដំណើរការចូលអឺរ៉ុប, +Creating Purchase Order ...,កំពុងបង្កើតការបញ្ជាទិញ ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",ជ្រើសរើសអ្នកផ្គត់ផ្គង់ពីអ្នកផ្គត់ផ្គង់លំនាំដើមនៃធាតុខាងក្រោម។ នៅពេលជ្រើសរើសការបញ្ជាទិញនឹងត្រូវធ្វើឡើងប្រឆាំងនឹងរបស់របរដែលជាកម្មសិទ្ធិរបស់អ្នកផ្គត់ផ្គង់ដែលបានជ្រើសរើសតែប៉ុណ្ណោះ។, +Row #{}: You must select {} serial numbers for item {}.,ជួរទី # {}៖ អ្នកត្រូវតែជ្រើសរើស {} លេខស៊េរីសម្រាប់ធាតុ {} ។, diff --git a/erpnext/translations/kn.csv b/erpnext/translations/kn.csv index 864b89cb17..4a9173d4a0 100644 --- a/erpnext/translations/kn.csv +++ b/erpnext/translations/kn.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',ವರ Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',ವರ್ಗದಲ್ಲಿ 'ಮೌಲ್ಯಾಂಕನ' ಅಥವಾ 'Vaulation ಮತ್ತು ಒಟ್ಟು' ಆಗಿದೆ ಮಾಡಿದಾಗ ಕಡಿತಗೊಳಿಸದಿರುವುದರ ಸಾಧ್ಯವಿಲ್ಲ, "Cannot delete Serial No {0}, as it is used in stock transactions","ಅಳಿಸಿಹಾಕಲಾಗದು ಸೀರಿಯಲ್ ಯಾವುದೇ {0}, ಇದು ಸ್ಟಾಕ್ ವ್ಯವಹಾರಗಳಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ", Cannot enroll more than {0} students for this student group.,{0} ಈ ವಿದ್ಯಾರ್ಥಿ ಗುಂಪು ವಿದ್ಯಾರ್ಥಿಗಳನ್ನು ಹೆಚ್ಚು ದಾಖಲಿಸಲಾಗುವುದಿಲ್ಲ., -Cannot find Item with this barcode,ಈ ಬಾರ್‌ಕೋಡ್‌ನೊಂದಿಗೆ ಐಟಂ ಅನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗುವುದಿಲ್ಲ, Cannot find active Leave Period,ಸಕ್ರಿಯ ಬಿಡಿ ಅವಧಿಯನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗಲಿಲ್ಲ, Cannot produce more Item {0} than Sales Order quantity {1},ಹೆಚ್ಚು ಐಟಂ ಉತ್ಪಾದಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ {0} ಹೆಚ್ಚು ಮಾರಾಟದ ಆರ್ಡರ್ ಪ್ರಮಾಣ {1}, Cannot promote Employee with status Left,ನೌಕರರು ಸ್ಥಿತಿಯನ್ನು ಎಡಕ್ಕೆ ಪ್ರಚಾರ ಮಾಡಲಾಗುವುದಿಲ್ಲ, @@ -690,7 +689,6 @@ Create Variants,ಮಾರ್ಪಾಟುಗಳು ರಚಿಸಿ, "Create and manage daily, weekly and monthly email digests.","ರಚಿಸಿ ಮತ್ತು , ದೈನಂದಿನ ಸಾಪ್ತಾಹಿಕ ಮತ್ತು ಮಾಸಿಕ ಇಮೇಲ್ ಡೈಜೆಸ್ಟ್ ನಿರ್ವಹಿಸಿ .", Create customer quotes,ಗ್ರಾಹಕ ಉಲ್ಲೇಖಗಳು ರಚಿಸಿ, Create rules to restrict transactions based on values.,ಮೌಲ್ಯಗಳ ಆಧಾರದ ವ್ಯವಹಾರ ನಿರ್ಬಂಧಿಸಲು ನಿಯಮಗಳನ್ನು ರಚಿಸಿ ., -Created By,ದಾಖಲಿಸಿದವರು, Created {0} scorecards for {1} between: ,ನಡುವೆ {1 for ಗೆ {0} ಸ್ಕೋರ್‌ಕಾರ್ಡ್‌ಗಳನ್ನು ರಚಿಸಲಾಗಿದೆ:, Creating Company and Importing Chart of Accounts,ಕಂಪನಿಯನ್ನು ರಚಿಸುವುದು ಮತ್ತು ಖಾತೆಗಳ ಚಾರ್ಟ್ ಅನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುವುದು, Creating Fees,ಶುಲ್ಕಗಳು ರಚಿಸಲಾಗುತ್ತಿದೆ, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,ವೇರ್ಹೌಸ್ ಬೇಕ For row {0}: Enter Planned Qty,ಸಾಲು {0}: ಯೋಜಿತ Qty ಯನ್ನು ನಮೂದಿಸಿ, "For {0}, only credit accounts can be linked against another debit entry","{0}, ಮಾತ್ರ ಕ್ರೆಡಿಟ್ ಖಾತೆಗಳನ್ನು ಮತ್ತೊಂದು ಡೆಬಿಟ್ ಪ್ರವೇಶ ವಿರುದ್ಧ ಲಿಂಕ್ ಮಾಡಬಹುದು ಫಾರ್", "For {0}, only debit accounts can be linked against another credit entry","{0}, ಮಾತ್ರ ಡೆಬಿಟ್ ಖಾತೆಗಳನ್ನು ಇನ್ನೊಂದು ಕ್ರೆಡಿಟ್ ಪ್ರವೇಶ ವಿರುದ್ಧ ಲಿಂಕ್ ಮಾಡಬಹುದು ಫಾರ್", -Form View,ಫಾರ್ಮ್ ವೀಕ್ಷಿಸಿ, Forum Activity,ವೇದಿಕೆ ಚಟುವಟಿಕೆ, Free item code is not selected,ಉಚಿತ ಐಟಂ ಕೋಡ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಲಾಗಿಲ್ಲ, Freight and Forwarding Charges,ಸರಕು ಮತ್ತು ಸಾಗಣೆಯನ್ನು ಚಾರ್ಜಸ್, @@ -2638,7 +2635,6 @@ Send SMS,ಎಸ್ಎಂಎಸ್ ಕಳುಹಿಸಿ, Send mass SMS to your contacts,ನಿಮ್ಮ ಸಂಪರ್ಕಗಳಿಗೆ ಸಾಮೂಹಿಕ SMS ಕಳುಹಿಸಿ, Sensitivity,ಸೂಕ್ಷ್ಮತೆ, Sent,ಕಳುಹಿಸಲಾಗಿದೆ, -Serial #,ಸರಣಿ #, Serial No and Batch,ಸೀರಿಯಲ್ ಯಾವುದೇ ಮತ್ತು ಬ್ಯಾಚ್, Serial No is mandatory for Item {0},ಅನುಕ್ರಮ ಸಂಖ್ಯೆ ಐಟಂ ಕಡ್ಡಾಯ {0}, Serial No {0} does not belong to Batch {1},ಸರಣಿ ಇಲ್ಲ {0} ಬ್ಯಾಚ್ಗೆ ಸೇರಿಲ್ಲ {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ERPNext ಸ್ವಾಗತ, What do you need help with?,ನೀವು ಸಹಾಯ ಬೇಕು?, What does it do?,ಇದು ಏನು ಮಾಡುತ್ತದೆ?, Where manufacturing operations are carried.,ಉತ್ಪಾದನಾ ಕಾರ್ಯಗಳ ಅಲ್ಲಿ ನಿರ್ವಹಿಸುತ್ತಾರೆ., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","ಮಗುವಿನ ಕಂಪನಿ {0} ಖಾತೆ ರಚಿಸುವಾಗ, ಮೂಲ ಖಾತೆ {1} ಕಂಡುಬಂದಿಲ್ಲ. ದಯವಿಟ್ಟು ಸಂಬಂಧಿಸಿದ COA ನಲ್ಲಿ ಪೋಷಕ ಖಾತೆಯನ್ನು ರಚಿಸಿ", White,ಬಿಳಿ, Wire Transfer,ವೈರ್ ಟ್ರಾನ್ಸ್ಫರ್, WooCommerce Products,WooCommerce ಉತ್ಪನ್ನಗಳು, @@ -3493,6 +3488,7 @@ Likes,ಇಷ್ಟಗಳು, Merge with existing,ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ವಿಲೀನಗೊಳ್ಳಲು, Office,ಕಚೇರಿ, Orientation,ದೃಷ್ಟಿಕೋನ, +Parent,ಪೋಷಕ, Passive,ನಿಷ್ಕ್ರಿಯ, Payment Failed,ಪಾವತಿ ವಿಫಲವಾಗಿದೆ, Percent,ಪರ್ಸೆಂಟ್, @@ -3543,6 +3539,7 @@ Shift,ಶಿಫ್ಟ್, Show {0},{0} ತೋರಿಸು, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",""-", "#", ".", "/", "{" ಮತ್ತು "}" ಹೊರತುಪಡಿಸಿ ವಿಶೇಷ ಅಕ್ಷರಗಳನ್ನು ಹೆಸರಿಸುವ ಸರಣಿಯಲ್ಲಿ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ", Target Details,ಗುರಿ ವಿವರಗಳು, +{0} already has a Parent Procedure {1}.,{0} ಈಗಾಗಲೇ ಪೋಷಕ ವಿಧಾನವನ್ನು ಹೊಂದಿದೆ {1}., API,API, Annual,ವಾರ್ಷಿಕ, Approved,Approved, @@ -4241,7 +4238,6 @@ Download as JSON,JSON ಆಗಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ, End date can not be less than start date,ಅಂತಿಮ ದಿನಾಂಕ ಪ್ರಾರಂಭ ದಿನಾಂಕಕ್ಕಿಂತ ಕಡಿಮೆ ಇರುವಂತಿಲ್ಲ, For Default Supplier (Optional),ಡೀಫಾಲ್ಟ್ ಪೂರೈಕೆದಾರರಿಗಾಗಿ (ಐಚ್ಛಿಕ), From date cannot be greater than To date,ದಿನಾಂಕದಿಂದ ದಿನಾಂಕಕ್ಕಿಂತಲೂ ಹೆಚ್ಚಿನದಾಗಿರುವಂತಿಲ್ಲ, -Get items from,ಐಟಂಗಳನ್ನು ಪಡೆಯಿರಿ, Group by,ಗುಂಪಿನ, In stock,ಉಪಲಬ್ದವಿದೆ, Item name,ಐಟಂ ಹೆಸರು, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,ಗುಣಮಟ್ಟದ ಪ್ರತಿಕ Quality Goal,ಗುಣಮಟ್ಟದ ಗುರಿ, Monitoring Frequency,ಮಾನಿಟರಿಂಗ್ ಆವರ್ತನ, Weekday,ವಾರದ ದಿನ, -January-April-July-October,ಜನವರಿ-ಏಪ್ರಿಲ್-ಜುಲೈ-ಅಕ್ಟೋಬರ್, -Revision and Revised On,ಪರಿಷ್ಕರಣೆ ಮತ್ತು ಪರಿಷ್ಕೃತ ಆನ್, -Revision,ಪರಿಷ್ಕರಣೆ, -Revised On,ಪರಿಷ್ಕರಿಸಲಾಗಿದೆ, Objectives,ಉದ್ದೇಶಗಳು, Quality Goal Objective,ಗುಣಮಟ್ಟದ ಗುರಿ ಉದ್ದೇಶ, Objective,ಉದ್ದೇಶ, @@ -7574,7 +7566,6 @@ Parent Procedure,ಪೋಷಕ ವಿಧಾನ, Processes,ಪ್ರಕ್ರಿಯೆಗಳು, Quality Procedure Process,ಗುಣಮಟ್ಟದ ಕಾರ್ಯವಿಧಾನ ಪ್ರಕ್ರಿಯೆ, Process Description,ಪ್ರಕ್ರಿಯೆಯ ವಿವರಣೆ, -Child Procedure,ಮಕ್ಕಳ ವಿಧಾನ, Link existing Quality Procedure.,ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಗುಣಮಟ್ಟದ ಕಾರ್ಯವಿಧಾನವನ್ನು ಲಿಂಕ್ ಮಾಡಿ., Additional Information,ಹೆಚ್ಚುವರಿ ಮಾಹಿತಿ, Quality Review Objective,ಗುಣಮಟ್ಟದ ವಿಮರ್ಶೆ ಉದ್ದೇಶ, @@ -8557,7 +8548,6 @@ Purchase Order Trends,ಆರ್ಡರ್ ಟ್ರೆಂಡ್ಸ್ ಖರಿ Purchase Receipt Trends,ಖರೀದಿ ರಸೀತಿ ಟ್ರೆಂಡ್ಸ್, Purchase Register,ಖರೀದಿ ನೋಂದಣಿ, Quotation Trends,ನುಡಿಮುತ್ತುಗಳು ಟ್ರೆಂಡ್ಸ್, -Quoted Item Comparison,ಉಲ್ಲೇಖಿಸಿದ ಐಟಂ ಹೋಲಿಕೆ, Received Items To Be Billed,ಪಾವತಿಸಬೇಕಾಗುತ್ತದೆ ಸ್ವೀಕರಿಸಿದ ಐಟಂಗಳು, Qty to Order,ಪ್ರಮಾಣ ಆರ್ಡರ್, Requested Items To Be Transferred,ಬದಲಾಯಿಸಿಕೊಳ್ಳುವಂತೆ ವಿನಂತಿಸಲಾಗಿದೆ ಐಟಂಗಳು, @@ -9091,7 +9081,6 @@ Unmarked days,ಗುರುತು ಹಾಕದ ದಿನಗಳು, Absent Days,ಅನುಪಸ್ಥಿತಿಯ ದಿನಗಳು, Conditions and Formula variable and example,ಷರತ್ತುಗಳು ಮತ್ತು ಫಾರ್ಮುಲಾ ವೇರಿಯಬಲ್ ಮತ್ತು ಉದಾಹರಣೆ, Feedback By,ಪ್ರತಿಕ್ರಿಯೆ, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,ಉತ್ಪಾದನಾ ವಿಭಾಗ, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, ನಮೂದಿಸಿದ ಪೂರ್ಣ ಹೆಸರಿನ ಪ್ರಕಾರ ಗ್ರಾಹಕರ ಹೆಸರನ್ನು ಹೊಂದಿಸಲಾಗಿದೆ. ಗ್ರಾಹಕರನ್ನು ಹೆಸರಿಸಲು ನೀವು ಬಯಸಿದರೆ ಎ", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,ಹೊಸ ಮಾರಾಟ ವಹಿವಾಟನ್ನು ರಚಿಸುವಾಗ ಡೀಫಾಲ್ಟ್ ಬೆಲೆ ಪಟ್ಟಿಯನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ. ಈ ಬೆಲೆ ಪಟ್ಟಿಯಿಂದ ಐಟಂ ಬೆಲೆಗಳನ್ನು ಪಡೆಯಲಾಗುತ್ತದೆ., @@ -9692,7 +9681,6 @@ Available Balance,ಲಭ್ಯವಿರುವ ಬ್ಯಾಲೆನ್ಸ್, Reserved Balance,ಕಾಯ್ದಿರಿಸಿದ ಬಾಕಿ, Uncleared Balance,ಅಸ್ಪಷ್ಟ ಸಮತೋಲನ, Payment related to {0} is not completed,{0 to ಗೆ ಸಂಬಂಧಿಸಿದ ಪಾವತಿ ಪೂರ್ಣಗೊಂಡಿಲ್ಲ, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,ಸಾಲು # {}: ಸರಣಿ ಸಂಖ್ಯೆ {}. P already ಅನ್ನು ಈಗಾಗಲೇ ಮತ್ತೊಂದು ಪಿಒಎಸ್ ಇನ್‌ವಾಯ್ಸ್‌ಗೆ ವಹಿವಾಟು ಮಾಡಲಾಗಿದೆ. ದಯವಿಟ್ಟು ಮಾನ್ಯ ಸರಣಿ ಸಂಖ್ಯೆ ಆಯ್ಕೆಮಾಡಿ., Row #{}: Item Code: {} is not available under warehouse {}.,ಸಾಲು # {}: ಐಟಂ ಕೋಡ್: w} ಗೋದಾಮಿನ ಅಡಿಯಲ್ಲಿ ಲಭ್ಯವಿಲ್ಲ {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,ಸಾಲು # {}: ಐಟಂ ಕೋಡ್‌ಗೆ ಸ್ಟಾಕ್ ಪ್ರಮಾಣ ಸಾಕಾಗುವುದಿಲ್ಲ: ware ಗೋದಾಮಿನ ಅಡಿಯಲ್ಲಿ}}. ಲಭ್ಯವಿರುವ ಪ್ರಮಾಣ {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,ಸಾಲು # {}: ದಯವಿಟ್ಟು ಸರಣಿ ಸಂಖ್ಯೆ ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಐಟಂ ವಿರುದ್ಧ ಬ್ಯಾಚ್ ಮಾಡಿ: {} ಅಥವಾ ವ್ಯವಹಾರವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಅದನ್ನು ತೆಗೆದುಹಾಕಿ., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},ಗೋದಾಮಿನಲ್ಲ Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,ದಯವಿಟ್ಟು ಸ್ಟಾಕ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ನಕಾರಾತ್ಮಕ ಸ್ಟಾಕ್ ಅನ್ನು ಅನುಮತಿಸಿ ಅಥವಾ ಮುಂದುವರಿಸಲು ಸ್ಟಾಕ್ ಎಂಟ್ರಿ ರಚಿಸಿ., No Inpatient Record found against patient {0},ರೋಗಿಯ ವಿರುದ್ಧ ಒಳರೋಗಿಗಳ ದಾಖಲೆ ಕಂಡುಬಂದಿಲ್ಲ {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,ರೋಗಿಯ ಎನ್ಕೌಂಟರ್ {1 against ವಿರುದ್ಧ ಒಳರೋಗಿ ation ಷಧಿ ಆದೇಶ {0 already ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ., +Allow In Returns,ರಿಟರ್ನ್ಸ್‌ನಲ್ಲಿ ಅನುಮತಿಸಿ, +Hide Unavailable Items,ಲಭ್ಯವಿಲ್ಲದ ವಸ್ತುಗಳನ್ನು ಮರೆಮಾಡಿ, +Apply Discount on Discounted Rate,ರಿಯಾಯಿತಿ ದರದಲ್ಲಿ ರಿಯಾಯಿತಿ ಅನ್ವಯಿಸಿ, +Therapy Plan Template,ಚಿಕಿತ್ಸೆಯ ಯೋಜನೆ ಟೆಂಪ್ಲೇಟು, +Fetching Template Details,ಟೆಂಪ್ಲೇಟು ವಿವರಗಳನ್ನು ಪಡೆಯಲಾಗುತ್ತಿದೆ, +Linked Item Details,ಲಿಂಕ್ ಮಾಡಿದ ಐಟಂ ವಿವರಗಳು, +Therapy Types,ಚಿಕಿತ್ಸೆಯ ವಿಧಗಳು, +Therapy Plan Template Detail,ಚಿಕಿತ್ಸೆಯ ಯೋಜನೆ ಟೆಂಪ್ಲೇಟು ವಿವರ, +Non Conformance,ಅನುಗುಣವಾಗಿಲ್ಲ, +Process Owner,ಪ್ರಕ್ರಿಯೆ ಮಾಲೀಕ, +Corrective Action,ಸರಿಪಡಿಸುವ ಕ್ರಿಯೆ, +Preventive Action,ತಡೆಗಟ್ಟುವ ಕ್ರಮ, +Problem,ಸಮಸ್ಯೆ, +Responsible,ಜವಾಬ್ದಾರಿ, +Completion By,ಇವರಿಂದ ಪೂರ್ಣಗೊಂಡಿದೆ, +Process Owner Full Name,ಪ್ರಕ್ರಿಯೆ ಮಾಲೀಕರ ಪೂರ್ಣ ಹೆಸರು, +Right Index,ಬಲ ಸೂಚ್ಯಂಕ, +Left Index,ಎಡ ಸೂಚ್ಯಂಕ, +Sub Procedure,ಉಪ ಕಾರ್ಯವಿಧಾನ, +Passed,ಉತ್ತೀರ್ಣರಾದರು, +Print Receipt,ರಶೀದಿ ಮುದ್ರಿಸಿ, +Edit Receipt,ರಶೀದಿಯನ್ನು ಸಂಪಾದಿಸಿ, +Focus on search input,ಹುಡುಕಾಟ ಇನ್‌ಪುಟ್‌ಗೆ ಗಮನ ಕೊಡಿ, +Focus on Item Group filter,ಐಟಂ ಗ್ರೂಪ್ ಫಿಲ್ಟರ್ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸಿ, +Checkout Order / Submit Order / New Order,ಚೆಕ್ out ಟ್ ಆದೇಶ / ಸಲ್ಲಿಕೆ ಆದೇಶ / ಹೊಸ ಆದೇಶ, +Add Order Discount,ಆದೇಶ ರಿಯಾಯಿತಿ ಸೇರಿಸಿ, +Item Code: {0} is not available under warehouse {1}.,ಐಟಂ ಕೋಡ್: ಗೋದಾಮಿನ {1 under ಅಡಿಯಲ್ಲಿ {0} ಲಭ್ಯವಿಲ್ಲ., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,ಗೋದಾಮಿನ {1 under ಅಡಿಯಲ್ಲಿ ಐಟಂ {0 for ಗೆ ಸರಣಿ ಸಂಖ್ಯೆಗಳು ಲಭ್ಯವಿಲ್ಲ. ದಯವಿಟ್ಟು ಗೋದಾಮು ಬದಲಾಯಿಸಲು ಪ್ರಯತ್ನಿಸಿ., +Fetched only {0} available serial numbers.,{0} ಲಭ್ಯವಿರುವ ಸರಣಿ ಸಂಖ್ಯೆಗಳನ್ನು ಮಾತ್ರ ಪಡೆಯಲಾಗಿದೆ., +Switch Between Payment Modes,ಪಾವತಿ ಮೋಡ್‌ಗಳ ನಡುವೆ ಬದಲಿಸಿ, +Enter {0} amount.,{0} ಮೊತ್ತವನ್ನು ನಮೂದಿಸಿ., +You don't have enough points to redeem.,ರಿಡೀಮ್ ಮಾಡಲು ನಿಮಗೆ ಸಾಕಷ್ಟು ಅಂಕಗಳಿಲ್ಲ., +You can redeem upto {0}.,ನೀವು {0 to ವರೆಗೆ ರಿಡೀಮ್ ಮಾಡಬಹುದು., +Enter amount to be redeemed.,ರಿಡೀಮ್ ಮಾಡಬೇಕಾದ ಮೊತ್ತವನ್ನು ನಮೂದಿಸಿ., +You cannot redeem more than {0}.,ನೀವು {0 than ಗಿಂತ ಹೆಚ್ಚಿನದನ್ನು ಪಡೆದುಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ., +Open Form View,ಫಾರ್ಮ್ ವೀಕ್ಷಣೆಯನ್ನು ತೆರೆಯಿರಿ, +POS invoice {0} created succesfully,ಪಿಒಎಸ್ ಸರಕುಪಟ್ಟಿ {0 ಯಶಸ್ವಿಯಾಗಿ ರಚಿಸಲಾಗಿದೆ, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,ಐಟಂ ಕೋಡ್‌ಗೆ ಸ್ಟಾಕ್ ಪ್ರಮಾಣ ಸಾಕಾಗುವುದಿಲ್ಲ: ಗೋದಾಮಿನ {1 under ಅಡಿಯಲ್ಲಿ {0}. ಲಭ್ಯವಿರುವ ಪ್ರಮಾಣ {2}., +Serial No: {0} has already been transacted into another POS Invoice.,ಸರಣಿ ಸಂಖ್ಯೆ: P 0 already ಅನ್ನು ಈಗಾಗಲೇ ಮತ್ತೊಂದು ಪಿಒಎಸ್ ಇನ್‌ವಾಯ್ಸ್‌ಗೆ ವಹಿವಾಟು ಮಾಡಲಾಗಿದೆ., +Balance Serial No,ಬ್ಯಾಲೆನ್ಸ್ ಸೀರಿಯಲ್ ನಂ, +Warehouse: {0} does not belong to {1},ಗೋದಾಮು: {0} {1 to ಗೆ ಸೇರಿಲ್ಲ, +Please select batches for batched item {0},ದಯವಿಟ್ಟು ಬ್ಯಾಚ್ ಮಾಡಿದ ಐಟಂ {0 for ಗಾಗಿ ಬ್ಯಾಚ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ, +Please select quantity on row {0},ದಯವಿಟ್ಟು row 0 row ಸಾಲಿನಲ್ಲಿ ಪ್ರಮಾಣವನ್ನು ಆರಿಸಿ, +Please enter serial numbers for serialized item {0},ಸರಣಿ ಐಟಂ {0 for ಗೆ ದಯವಿಟ್ಟು ಸರಣಿ ಸಂಖ್ಯೆಗಳನ್ನು ನಮೂದಿಸಿ, +Batch {0} already selected.,ಬ್ಯಾಚ್ {0} ಅನ್ನು ಈಗಾಗಲೇ ಆಯ್ಕೆ ಮಾಡಲಾಗಿದೆ., +Please select a warehouse to get available quantities,ಲಭ್ಯವಿರುವ ಪ್ರಮಾಣಗಳನ್ನು ಪಡೆಯಲು ದಯವಿಟ್ಟು ಗೋದಾಮು ಆಯ್ಕೆಮಾಡಿ, +"For transfer from source, selected quantity cannot be greater than available quantity","ಮೂಲದಿಂದ ವರ್ಗಾವಣೆಗಾಗಿ, ಆಯ್ದ ಪ್ರಮಾಣವು ಲಭ್ಯವಿರುವ ಪ್ರಮಾಣಕ್ಕಿಂತ ಹೆಚ್ಚಿರಬಾರದು", +Cannot find Item with this Barcode,ಈ ಬಾರ್‌ಕೋಡ್‌ನೊಂದಿಗೆ ಐಟಂ ಅನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗುವುದಿಲ್ಲ, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} ಕಡ್ಡಾಯವಾಗಿದೆ. ಕರೆನ್ಸಿ ಎಕ್ಸ್ಚೇಂಜ್ ದಾಖಲೆಯನ್ನು {1} ರಿಂದ {2 for ಗೆ ರಚಿಸಲಾಗಿಲ್ಲ, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,link} ಅದಕ್ಕೆ ಲಿಂಕ್ ಮಾಡಲಾದ ಸ್ವತ್ತುಗಳನ್ನು ಸಲ್ಲಿಸಿದೆ. ಖರೀದಿ ಆದಾಯವನ್ನು ರಚಿಸಲು ನೀವು ಸ್ವತ್ತುಗಳನ್ನು ರದ್ದುಗೊಳಿಸಬೇಕಾಗಿದೆ., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,ಸಲ್ಲಿಸಿದ ಸ್ವತ್ತು {0 with ನೊಂದಿಗೆ ಲಿಂಕ್ ಮಾಡಲಾಗಿರುವುದರಿಂದ ಈ ಡಾಕ್ಯುಮೆಂಟ್ ಅನ್ನು ರದ್ದು ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಮುಂದುವರಿಸಲು ದಯವಿಟ್ಟು ಅದನ್ನು ರದ್ದುಗೊಳಿಸಿ., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,ಸಾಲು # {}: ಸರಣಿ ಸಂಖ್ಯೆ {already ಅನ್ನು ಈಗಾಗಲೇ ಮತ್ತೊಂದು ಪಿಒಎಸ್ ಇನ್‌ವಾಯ್ಸ್‌ಗೆ ವಹಿವಾಟು ಮಾಡಲಾಗಿದೆ. ದಯವಿಟ್ಟು ಮಾನ್ಯ ಸರಣಿ ಸಂಖ್ಯೆ ಆಯ್ಕೆಮಾಡಿ., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,ಸಾಲು # {}: ಸರಣಿ ಸಂಖ್ಯೆ.} Already ಅನ್ನು ಈಗಾಗಲೇ ಮತ್ತೊಂದು ಪಿಒಎಸ್ ಇನ್‌ವಾಯ್ಸ್‌ಗೆ ವಹಿವಾಟು ಮಾಡಲಾಗಿದೆ. ದಯವಿಟ್ಟು ಮಾನ್ಯ ಸರಣಿ ಸಂಖ್ಯೆ ಆಯ್ಕೆಮಾಡಿ., +Item Unavailable,ಐಟಂ ಲಭ್ಯವಿಲ್ಲ, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},ಸಾಲು # {}: ಮೂಲ ಇನ್‌ವಾಯ್ಸ್‌ನಲ್ಲಿ ವಹಿವಾಟು ಮಾಡದ ಕಾರಣ ಸರಣಿ ಸಂಖ್ಯೆ {return ಅನ್ನು ಹಿಂತಿರುಗಿಸಲಾಗುವುದಿಲ್ಲ {}, +Please set default Cash or Bank account in Mode of Payment {},ಪಾವತಿ ಕ್ರಮದಲ್ಲಿ ಡೀಫಾಲ್ಟ್ ನಗದು ಅಥವಾ ಬ್ಯಾಂಕ್ ಖಾತೆಯನ್ನು ಹೊಂದಿಸಿ {}, +Please set default Cash or Bank account in Mode of Payments {},ಪಾವತಿ ಮೋಡ್‌ನಲ್ಲಿ ದಯವಿಟ್ಟು ಡೀಫಾಲ್ಟ್ ನಗದು ಅಥವಾ ಬ್ಯಾಂಕ್ ಖಾತೆಯನ್ನು ಹೊಂದಿಸಿ {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,ದಯವಿಟ್ಟು {} ಖಾತೆಯು ಬ್ಯಾಲೆನ್ಸ್ ಶೀಟ್ ಖಾತೆಯಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ನೀವು ಪೋಷಕ ಖಾತೆಯನ್ನು ಬ್ಯಾಲೆನ್ಸ್ ಶೀಟ್ ಖಾತೆಗೆ ಬದಲಾಯಿಸಬಹುದು ಅಥವಾ ಬೇರೆ ಖಾತೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,ದಯವಿಟ್ಟು {} ಖಾತೆಯು ಪಾವತಿಸಬಹುದಾದ ಖಾತೆಯಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ಪಾವತಿಸಬೇಕಾದ ಖಾತೆ ಪ್ರಕಾರವನ್ನು ಬದಲಾಯಿಸಿ ಅಥವಾ ಬೇರೆ ಖಾತೆಯನ್ನು ಆರಿಸಿ., +Row {}: Expense Head changed to {} ,ಸಾಲು {}: ಖರ್ಚು ಹೆಡ್ ಅನ್ನು {to ಗೆ ಬದಲಾಯಿಸಲಾಗಿದೆ, +because account {} is not linked to warehouse {} ,ಏಕೆಂದರೆ ಖಾತೆ {} ಗೋದಾಮಿನೊಂದಿಗೆ ಸಂಪರ್ಕ ಹೊಂದಿಲ್ಲ}}, +or it is not the default inventory account,ಅಥವಾ ಇದು ಡೀಫಾಲ್ಟ್ ದಾಸ್ತಾನು ಖಾತೆಯಲ್ಲ, +Expense Head Changed,ಖರ್ಚು ತಲೆ ಬದಲಾಯಿಸಲಾಗಿದೆ, +because expense is booked against this account in Purchase Receipt {},ಏಕೆಂದರೆ ಖರೀದಿ ರಶೀದಿಯಲ್ಲಿ ಈ ಖಾತೆಯ ವಿರುದ್ಧ ವೆಚ್ಚವನ್ನು ಕಾಯ್ದಿರಿಸಲಾಗಿದೆ}}, +as no Purchase Receipt is created against Item {}. ,ಐಟಂ against against ಗೆ ವಿರುದ್ಧವಾಗಿ ಯಾವುದೇ ಖರೀದಿ ರಶೀದಿಯನ್ನು ರಚಿಸಲಾಗಿಲ್ಲ., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,ಖರೀದಿ ಸರಕುಪಟ್ಟಿ ನಂತರ ಖರೀದಿ ರಶೀದಿಯನ್ನು ರಚಿಸಿದಾಗ ಪ್ರಕರಣಗಳ ಲೆಕ್ಕಪತ್ರವನ್ನು ನಿರ್ವಹಿಸಲು ಇದನ್ನು ಮಾಡಲಾಗುತ್ತದೆ, +Purchase Order Required for item {},ಐಟಂ for for ಗೆ ಖರೀದಿ ಆದೇಶ ಅಗತ್ಯವಿದೆ, +To submit the invoice without purchase order please set {} ,ಖರೀದಿ ಆದೇಶವಿಲ್ಲದೆ ಸರಕುಪಟ್ಟಿ ಸಲ್ಲಿಸಲು ದಯವಿಟ್ಟು set set ಅನ್ನು ಹೊಂದಿಸಿ, +as {} in {},{} ನಲ್ಲಿ {as ನಂತೆ, +Mandatory Purchase Order,ಕಡ್ಡಾಯ ಖರೀದಿ ಆದೇಶ, +Purchase Receipt Required for item {},ಐಟಂ for for ಗೆ ಖರೀದಿ ರಶೀದಿ ಅಗತ್ಯವಿದೆ, +To submit the invoice without purchase receipt please set {} ,ಖರೀದಿ ರಶೀದಿ ಇಲ್ಲದೆ ಸರಕುಪಟ್ಟಿ ಸಲ್ಲಿಸಲು ದಯವಿಟ್ಟು set set ಅನ್ನು ಹೊಂದಿಸಿ, +Mandatory Purchase Receipt,ಕಡ್ಡಾಯ ಖರೀದಿ ರಶೀದಿ, +POS Profile {} does not belongs to company {},ಪಿಒಎಸ್ ವಿವರ {company ಕಂಪನಿಗೆ ಸೇರಿಲ್ಲ {}, +User {} is disabled. Please select valid user/cashier,ಬಳಕೆದಾರ {Disable ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ದಯವಿಟ್ಟು ಮಾನ್ಯ ಬಳಕೆದಾರ / ಕ್ಯಾಷಿಯರ್ ಆಯ್ಕೆಮಾಡಿ, +Row #{}: Original Invoice {} of return invoice {} is {}. ,ಸಾಲು # {}: ರಿಟರ್ನ್ ಇನ್‌ವಾಯ್ಸ್‌ನ ಮೂಲ ಸರಕುಪಟ್ಟಿ {} {} ಆಗಿದೆ., +Original invoice should be consolidated before or along with the return invoice.,ರಿಟರ್ನ್ ಇನ್‌ವಾಯ್ಸ್‌ಗೆ ಮುಂಚಿತವಾಗಿ ಅಥವಾ ಅದರೊಂದಿಗೆ ಮೂಲ ಇನ್‌ವಾಯ್ಸ್ ಅನ್ನು ಕ್ರೋ id ೀಕರಿಸಬೇಕು., +You can add original invoice {} manually to proceed.,ಮುಂದುವರಿಯಲು ನೀವು ಮೂಲ ಇನ್‌ವಾಯ್ಸ್ ಅನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಸೇರಿಸಬಹುದು., +Please ensure {} account is a Balance Sheet account. ,ದಯವಿಟ್ಟು {} ಖಾತೆಯು ಬ್ಯಾಲೆನ್ಸ್ ಶೀಟ್ ಖಾತೆಯಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ., +You can change the parent account to a Balance Sheet account or select a different account.,ನೀವು ಪೋಷಕ ಖಾತೆಯನ್ನು ಬ್ಯಾಲೆನ್ಸ್ ಶೀಟ್ ಖಾತೆಗೆ ಬದಲಾಯಿಸಬಹುದು ಅಥವಾ ಬೇರೆ ಖಾತೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು., +Please ensure {} account is a Receivable account. ,ದಯವಿಟ್ಟು}} ಖಾತೆ ಸ್ವೀಕರಿಸುವ ಖಾತೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ., +Change the account type to Receivable or select a different account.,ಸ್ವೀಕರಿಸುವಂತಹ ಖಾತೆ ಪ್ರಕಾರವನ್ನು ಬದಲಾಯಿಸಿ ಅಥವಾ ಬೇರೆ ಖಾತೆಯನ್ನು ಆರಿಸಿ., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},ಗಳಿಸಿದ ಲಾಯಲ್ಟಿ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಪುನಃ ಪಡೆದುಕೊಳ್ಳುವುದರಿಂದ} cancel ರದ್ದು ಮಾಡಲಾಗುವುದಿಲ್ಲ. ಮೊದಲು cancel} ಇಲ್ಲ {cancel ಅನ್ನು ರದ್ದುಗೊಳಿಸಿ, +already exists,ಈಗಾಗಲೇ ಇದೆ, +POS Closing Entry {} against {} between selected period,ಪಿಒಎಸ್ ಮುಚ್ಚುವ ಪ್ರವೇಶ {} ವಿರುದ್ಧ {} ಆಯ್ದ ಅವಧಿಯ ನಡುವೆ, +POS Invoice is {},ಪಿಒಎಸ್ ಸರಕುಪಟ್ಟಿ {is ಆಗಿದೆ, +POS Profile doesn't matches {},ಪಿಓಎಸ್ ಪ್ರೊಫೈಲ್ match match ಗೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ, +POS Invoice is not {},ಪಿಒಎಸ್ ಸರಕುಪಟ್ಟಿ {not ಅಲ್ಲ, +POS Invoice isn't created by user {},POS ಸರಕುಪಟ್ಟಿ ಬಳಕೆದಾರರಿಂದ ರಚಿಸಲ್ಪಟ್ಟಿಲ್ಲ {}, +Row #{}: {},ಸಾಲು # {}: {}, +Invalid POS Invoices,ಅಮಾನ್ಯ ಪಿಓಎಸ್ ಇನ್ವಾಯ್ಸ್ಗಳು, +Please add the account to root level Company - {},ದಯವಿಟ್ಟು ಮೂಲ ಮಟ್ಟದ ಕಂಪನಿಗೆ ಖಾತೆಯನ್ನು ಸೇರಿಸಿ - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","ಚೈಲ್ಡ್ ಕಂಪನಿ {0 for ಗೆ ಖಾತೆಯನ್ನು ರಚಿಸುವಾಗ, ಪೋಷಕ ಖಾತೆ {1 found ಕಂಡುಬಂದಿಲ್ಲ. ಅನುಗುಣವಾದ COA ನಲ್ಲಿ ದಯವಿಟ್ಟು ಪೋಷಕ ಖಾತೆಯನ್ನು ರಚಿಸಿ", +Account Not Found,ಖಾತೆ ಕಂಡುಬಂದಿಲ್ಲ, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","ಚೈಲ್ಡ್ ಕಂಪನಿ {0 for ಗೆ ಖಾತೆಯನ್ನು ರಚಿಸುವಾಗ, ಪೋಷಕ ಖಾತೆ {1 a ಲೆಡ್ಜರ್ ಖಾತೆಯಾಗಿ ಕಂಡುಬರುತ್ತದೆ.", +Please convert the parent account in corresponding child company to a group account.,ದಯವಿಟ್ಟು ಅನುಗುಣವಾದ ಮಕ್ಕಳ ಕಂಪನಿಯಲ್ಲಿನ ಪೋಷಕ ಖಾತೆಯನ್ನು ಗುಂಪು ಖಾತೆಗೆ ಪರಿವರ್ತಿಸಿ., +Invalid Parent Account,ಅಮಾನ್ಯ ಪೋಷಕ ಖಾತೆ, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",ಹೊಂದಿಕೆಯಾಗದಂತೆ ತಪ್ಪಿಸಲು ಅದನ್ನು ಮರುಹೆಸರಿಸಲು ಮೂಲ ಕಂಪನಿ {0 via ಮೂಲಕ ಮಾತ್ರ ಅನುಮತಿಸಲಾಗಿದೆ., +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","ನೀವು {2} ಐಟಂನ {0} {1} ಪ್ರಮಾಣಗಳಾಗಿದ್ದರೆ, {3 the ಸ್ಕೀಮ್ ಅನ್ನು ಐಟಂನಲ್ಲಿ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","ನೀವು {2} ಮೌಲ್ಯದ ಐಟಂ {2 If ಆಗಿದ್ದರೆ, {3 the ಸ್ಕೀಮ್ ಅನ್ನು ಐಟಂನಲ್ಲಿ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ.", +"As the field {0} is enabled, the field {1} is mandatory.","{0 field ಕ್ಷೇತ್ರವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದಂತೆ, {1 field ಕ್ಷೇತ್ರವು ಕಡ್ಡಾಯವಾಗಿದೆ.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","{0 field ಕ್ಷೇತ್ರವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದಂತೆ, {1 the ಕ್ಷೇತ್ರದ ಮೌಲ್ಯವು 1 ಕ್ಕಿಂತ ಹೆಚ್ಚಿರಬೇಕು.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},ಪೂರ್ಣ ಪ್ರಮಾಣದ ಮಾರಾಟ ಆದೇಶ {2 to ಗೆ ಕಾಯ್ದಿರಿಸಲಾಗಿರುವ ಕಾರಣ {1 item ಐಟಂ {0 Ser ನ ಸರಣಿ ಸಂಖ್ಯೆ ತಲುಪಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ., +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","ಮಾರಾಟ ಆದೇಶ {0 the ಐಟಂಗೆ reservation 1 reservation ಅನ್ನು ಕಾಯ್ದಿರಿಸಿದೆ, ನೀವು ಕಾಯ್ದಿರಿಸಿದ {1} ಅನ್ನು {0 against ಗೆ ಮಾತ್ರ ತಲುಪಿಸಬಹುದು.", +{0} Serial No {1} cannot be delivered,{0} ಸರಣಿ ಸಂಖ್ಯೆ {1 delivery ತಲುಪಿಸಲಾಗುವುದಿಲ್ಲ, +Row {0}: Subcontracted Item is mandatory for the raw material {1},ಸಾಲು {0}: ಕಚ್ಚಾ ವಸ್ತು {1 for ಗೆ ಉಪಗುತ್ತಿಗೆ ವಸ್ತು ಕಡ್ಡಾಯವಾಗಿದೆ, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","ಸಾಕಷ್ಟು ಕಚ್ಚಾ ವಸ್ತುಗಳು ಇರುವುದರಿಂದ, ಉಗ್ರಾಣ {0 for ಗೆ ವಸ್ತು ವಿನಂತಿ ಅಗತ್ಯವಿಲ್ಲ.", +" If you still want to proceed, please enable {0}.","ನೀವು ಇನ್ನೂ ಮುಂದುವರಿಯಲು ಬಯಸಿದರೆ, ದಯವಿಟ್ಟು {0 enable ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ.", +The item referenced by {0} - {1} is already invoiced,{0} - {1 by ನಿಂದ ಉಲ್ಲೇಖಿಸಲಾದ ಐಟಂ ಈಗಾಗಲೇ ಇನ್ವಾಯ್ಸ್ ಆಗಿದೆ, +Therapy Session overlaps with {0},ಥೆರಪಿ ಸೆಷನ್ {0 with ನೊಂದಿಗೆ ಅತಿಕ್ರಮಿಸುತ್ತದೆ, +Therapy Sessions Overlapping,ಥೆರಪಿ ಸೆಷನ್‌ಗಳು ಅತಿಕ್ರಮಿಸುತ್ತವೆ, +Therapy Plans,ಚಿಕಿತ್ಸೆಯ ಯೋಜನೆಗಳು, +"Item Code, warehouse, quantity are required on row {0}","Code 0 row ಸಾಲಿನಲ್ಲಿ ಐಟಂ ಕೋಡ್, ಗೋದಾಮು, ಪ್ರಮಾಣ ಅಗತ್ಯವಿದೆ", +Get Items from Material Requests against this Supplier,ಈ ಸರಬರಾಜುದಾರರ ವಿರುದ್ಧ ವಸ್ತು ವಿನಂತಿಗಳಿಂದ ವಸ್ತುಗಳನ್ನು ಪಡೆಯಿರಿ, +Enable European Access,ಯುರೋಪಿಯನ್ ಪ್ರವೇಶವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ, +Creating Purchase Order ...,ಖರೀದಿ ಆದೇಶವನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","ಕೆಳಗಿನ ಐಟಂಗಳ ಡೀಫಾಲ್ಟ್ ಪೂರೈಕೆದಾರರಿಂದ ಸರಬರಾಜುದಾರರನ್ನು ಆಯ್ಕೆಮಾಡಿ. ಆಯ್ಕೆಯ ಮೇಲೆ, ಆಯ್ದ ಸರಬರಾಜುದಾರರಿಗೆ ಮಾತ್ರ ಸೇರಿದ ವಸ್ತುಗಳ ವಿರುದ್ಧ ಖರೀದಿ ಆದೇಶವನ್ನು ಮಾಡಲಾಗುತ್ತದೆ.", +Row #{}: You must select {} serial numbers for item {}.,ಸಾಲು # {}: ನೀವು item item ಐಟಂಗೆ {} ಸರಣಿ ಸಂಖ್ಯೆಗಳನ್ನು ಆರಿಸಬೇಕು., diff --git a/erpnext/translations/ko.csv b/erpnext/translations/ko.csv index 579e3b27f8..c051b07bea 100644 --- a/erpnext/translations/ko.csv +++ b/erpnext/translations/ko.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',카테 Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',카테고리는 '평가'또는 'Vaulation과 전체'에 대한 때 공제 할 수 없음, "Cannot delete Serial No {0}, as it is used in stock transactions","삭제할 수 없습니다 시리얼 번호 {0}, 그것은 증권 거래에 사용되는로", Cannot enroll more than {0} students for this student group.,이 학생 그룹에 대한 {0} 학생 이상 등록 할 수 없습니다., -Cannot find Item with this barcode,이 바코드가있는 항목을 찾을 수 없습니다., Cannot find active Leave Period,활성 휴가 기간을 찾을 수 없습니다., Cannot produce more Item {0} than Sales Order quantity {1},더 많은 항목을 생성 할 수 없습니다 {0}보다 판매 주문 수량 {1}, Cannot promote Employee with status Left,상태가 왼쪽 인 직원을 승격 할 수 없습니다., @@ -690,7 +689,6 @@ Create Variants,변형 만들기, "Create and manage daily, weekly and monthly email digests.","만들고, 매일, 매주 및 매월 이메일 다이제스트를 관리 할 수 있습니다.", Create customer quotes,고객 따옴표를 만들기, Create rules to restrict transactions based on values.,값을 기준으로 거래를 제한하는 규칙을 만듭니다., -Created By,제작, Created {0} scorecards for {1} between: ,{1}의 {0} 스코어 카드 생성 :, Creating Company and Importing Chart of Accounts,회사 만들기 및 계정 차트 가져 오기, Creating Fees,수수료 만들기, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,창고가 필요한 내용은 이전에 For row {0}: Enter Planned Qty,행 {0} : 계획 수량 입력, "For {0}, only credit accounts can be linked against another debit entry",{0} 만 신용 계정은 자동 이체 항목에 링크 할 수 있습니다 들어, "For {0}, only debit accounts can be linked against another credit entry",{0} 만 직불 계정은 다른 신용 항목에 링크 할 수 있습니다 들어, -Form View,양식보기, Forum Activity,포럼 활동, Free item code is not selected,무료 항목 코드가 선택되지 않았습니다., Freight and Forwarding Charges,화물 운송 및 포워딩 요금, @@ -2638,7 +2635,6 @@ Send SMS,SMS 보내기, Send mass SMS to your contacts,상대에게 대량 SMS를 보내기, Sensitivity,감광도, Sent,발신, -Serial #,직렬 #, Serial No and Batch,일련 번호 및 배치, Serial No is mandatory for Item {0},일련 번호는 항목에 대해 필수입니다 {0}, Serial No {0} does not belong to Batch {1},일련 번호 {0}이 배치 {1}에 속해 있지 않습니다., @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ERPNext에 오신 것을 환영합니다, What do you need help with?,어떤 도움이 필요 하신가요?, What does it do?,그것은 무엇을 하는가?, Where manufacturing operations are carried.,제조 작업은 어디를 수행한다., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",하위 회사 {0}에 대한 계정을 만드는 동안 상위 계정 {1}을 (를) 찾을 수 없습니다. 해당 COA에서 상위 계정을 생성하십시오., White,화이트, Wire Transfer,송금, WooCommerce Products,WooCommerce 제품, @@ -3493,6 +3488,7 @@ Likes,좋아하는, Merge with existing,기존에 병합, Office,사무실, Orientation,정위, +Parent,부모의, Passive,수동, Payment Failed,결제 실패, Percent,퍼센트, @@ -3543,6 +3539,7 @@ Shift,시프트, Show {0},{0} 표시, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","이름 계열에 허용되지 않는 "-", "#", ".", "/", "{"및 "}"을 제외한 특수 문자", Target Details,대상 세부 정보, +{0} already has a Parent Procedure {1}.,{0}에 이미 상위 절차 {1}이 있습니다., API,API, Annual,연간, Approved,인가 된, @@ -4241,7 +4238,6 @@ Download as JSON,JSON으로 다운로드, End date can not be less than start date,종료일은 시작일보다 짧을 수 없습니다., For Default Supplier (Optional),기본 공급 업체 (선택 사항), From date cannot be greater than To date,날짜에서 날짜보다 클 수 없습니다, -Get items from,에서 항목을 가져 오기, Group by,그룹으로, In stock,재고, Item name,품명, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,품질 피드백 템플릿 매개 변수, Quality Goal,품질 목표, Monitoring Frequency,모니터링 빈도, Weekday,주일, -January-April-July-October,1 월 -4 월 -7 월 -10 월, -Revision and Revised On,개정 및 개정, -Revision,개정, -Revised On,개정일, Objectives,목표, Quality Goal Objective,품질 목표 목표, Objective,목표, @@ -7574,7 +7566,6 @@ Parent Procedure,학부모 절차, Processes,프로세스, Quality Procedure Process,품질 절차 과정, Process Description,프로세스 설명, -Child Procedure,아동 수속, Link existing Quality Procedure.,기존 품질 절차 링크., Additional Information,추가 정보, Quality Review Objective,품질 검토 목표, @@ -8557,7 +8548,6 @@ Purchase Order Trends,주문 동향을 구매, Purchase Receipt Trends,구매 영수증 동향, Purchase Register,회원에게 구매, Quotation Trends,견적 동향, -Quoted Item Comparison,인용 상품 비교, Received Items To Be Billed,청구에 주어진 항목, Qty to Order,수량은 주문, Requested Items To Be Transferred,전송할 요청 항목, @@ -9091,7 +9081,6 @@ Unmarked days,표시되지 않은 날짜, Absent Days,결석 일, Conditions and Formula variable and example,조건 및 수식 변수 및 예, Feedback By,피드백, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,제조 섹션, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",기본적으로 고객 이름은 입력 한 전체 이름에 따라 설정됩니다. 고객의 이름을, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,새 판매 트랜잭션을 생성 할 때 기본 가격 목록을 구성합니다. 이 가격 목록에서 항목 가격을 가져옵니다., @@ -9692,7 +9681,6 @@ Available Balance,사용 가능한 잔액, Reserved Balance,예약 잔액, Uncleared Balance,미 정산 잔액, Payment related to {0} is not completed,{0} 관련 결제가 완료되지 않았습니다., -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,행 # {} : 일련 번호 {}. {}은 이미 다른 POS 송장으로 거래되었습니다. 유효한 일련 번호를 선택하십시오., Row #{}: Item Code: {} is not available under warehouse {}.,행 # {} : 품목 코드 : {}은 창고 {}에서 사용할 수 없습니다., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,행 # {} : 창고 {} 아래의 품목 코드 : {}에 대한 재고 수량이 충분하지 않습니다. 사용 가능한 수량 {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,행 # {} : 품목 {}에 대해 일련 번호 및 배치를 선택하거나 제거하여 트랜잭션을 완료하십시오., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},{1} 창고에서 {0}에 대해 Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,계속하려면 재고 설정에서 음수 재고 허용을 활성화하거나 재고 항목을 생성하십시오., No Inpatient Record found against patient {0},{0} 환자에 대한 입원 기록이 없습니다., An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,환자 만남 {1}에 대한 입원 환자 약물 명령 {0}이 (가) 이미 존재합니다., +Allow In Returns,반품 허용, +Hide Unavailable Items,사용할 수없는 항목 숨기기, +Apply Discount on Discounted Rate,할인 요금에 할인 적용, +Therapy Plan Template,치료 계획 템플릿, +Fetching Template Details,템플릿 세부 정보 가져 오기, +Linked Item Details,링크 된 항목 세부 정보, +Therapy Types,치료 유형, +Therapy Plan Template Detail,치료 계획 템플릿 세부 정보, +Non Conformance,부적합, +Process Owner,프로세스 소유자, +Corrective Action,시정 조치, +Preventive Action,예방 조치, +Problem,문제, +Responsible,책임감, +Completion By,완료 자, +Process Owner Full Name,프로세스 소유자 전체 이름, +Right Index,오른쪽 색인, +Left Index,왼쪽 색인, +Sub Procedure,하위 절차, +Passed,합격, +Print Receipt,영수증 인쇄, +Edit Receipt,영수증 편집, +Focus on search input,검색 입력에 집중, +Focus on Item Group filter,항목 그룹 필터에 집중, +Checkout Order / Submit Order / New Order,주문 확인 / 주문 제출 / 새 주문, +Add Order Discount,주문 할인 추가, +Item Code: {0} is not available under warehouse {1}.,상품 코드 : {0}은 (는) {1} 창고에서 사용할 수 없습니다., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,{1} 창고에있는 {0} 항목에 대해 일련 번호를 사용할 수 없습니다. 창고 변경을 시도하십시오., +Fetched only {0} available serial numbers.,{0} 개의 사용 가능한 일련 번호 만 가져 왔습니다., +Switch Between Payment Modes,결제 모드 간 전환, +Enter {0} amount.,{0} 금액을 입력하세요., +You don't have enough points to redeem.,사용할 포인트가 충분하지 않습니다., +You can redeem upto {0}.,최대 {0}까지 사용할 수 있습니다., +Enter amount to be redeemed.,사용할 금액을 입력하세요., +You cannot redeem more than {0}.,{0} 이상 사용할 수 없습니다., +Open Form View,양식보기 열기, +POS invoice {0} created succesfully,POS 인보이스 {0}이 (가) 성공적으로 생성되었습니다., +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,항목 코드에 대한 재고 수량이 충분하지 않습니다. {0} 창고 아래 {1}. 사용 가능한 수량 {2}., +Serial No: {0} has already been transacted into another POS Invoice.,일련 번호 : {0}은 (는) 이미 다른 POS 인보이스로 거래되었습니다., +Balance Serial No,잔액 일련 번호, +Warehouse: {0} does not belong to {1},창고 : {0}은 (는) {1}에 속하지 않습니다., +Please select batches for batched item {0},일괄 항목 {0}에 대한 일괄을 선택하십시오., +Please select quantity on row {0},{0} 행에서 수량을 선택하십시오., +Please enter serial numbers for serialized item {0},일련 번호가있는 항목 {0}의 일련 번호를 입력하십시오., +Batch {0} already selected.,일괄 {0}이 (가) 이미 선택되었습니다., +Please select a warehouse to get available quantities,사용 가능한 수량을 확인하려면 창고를 선택하십시오., +"For transfer from source, selected quantity cannot be greater than available quantity",출처에서 이전하는 경우 선택한 수량이 가용 수량보다 클 수 없습니다., +Cannot find Item with this Barcode,이 바코드로 항목을 찾을 수 없습니다, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0}은 (는) 필수입니다. {1}에서 {2}까지의 환전 기록이 생성되지 않았을 수 있습니다., +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{}이 (가) 연결된 자산을 제출했습니다. 구매 반품을 생성하려면 자산을 취소해야합니다., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,이 문서는 제출 된 자산 {0}에 연결되어 있으므로 취소 할 수 없습니다. 계속하려면 취소하세요., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,행 # {} : 일련 번호 {}이 이미 다른 POS 송장으로 거래되었습니다. 유효한 일련 번호를 선택하십시오., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,행 # {} : 일련 번호 {}이 이미 다른 POS 송장으로 거래되었습니다. 유효한 일련 번호를 선택하십시오., +Item Unavailable,사용할 수없는 항목, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},행 # {} : 일련 번호 {}이 원래 송장 {}에서 거래되지 않았으므로 반환 할 수 없습니다., +Please set default Cash or Bank account in Mode of Payment {},결제 모드에서 기본 현금 또는 은행 계좌를 설정하세요. {}, +Please set default Cash or Bank account in Mode of Payments {},결제 모드에서 기본 현금 또는 은행 계좌를 설정하십시오 {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,{} 계정이 대차 대조표 계정인지 확인하십시오. 상위 계정을 대차 대조표 계정으로 변경하거나 다른 계정을 선택할 수 있습니다., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,{} 계정이 Payable 계정인지 확인하십시오. 계정 유형을 Payable로 변경하거나 다른 계정을 선택하십시오., +Row {}: Expense Head changed to {} ,{} 행 : 비용 헤드가 {} (으)로 변경되었습니다., +because account {} is not linked to warehouse {} ,{} 계정이 {} 창고에 연결되어 있지 않기 때문입니다., +or it is not the default inventory account,또는 기본 인벤토리 계정이 아닙니다., +Expense Head Changed,비용 헤드 변경됨, +because expense is booked against this account in Purchase Receipt {},구매 영수증 {}에서이 계정에 대한 비용이 기장 되었기 때문입니다., +as no Purchase Receipt is created against Item {}. ,항목 {}에 대해 구매 영수증이 생성되지 않았기 때문입니다., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,구매 인보이스 후 구매 영수증이 생성되는 경우에 대한 회계 처리를 위해 수행됩니다., +Purchase Order Required for item {},{} 항목에 대한 구매 주문 필요, +To submit the invoice without purchase order please set {} ,구매 주문없이 인보이스를 제출하려면 {}을 (를) 설정하십시오., +as {} in {},{}에서 {}로, +Mandatory Purchase Order,필수 구매 오더, +Purchase Receipt Required for item {},{} 항목에 대한 구매 영수증 필요, +To submit the invoice without purchase receipt please set {} ,구매 영수증없이 인보이스를 제출하려면 {}를 설정하세요., +Mandatory Purchase Receipt,필수 구매 영수증, +POS Profile {} does not belongs to company {},POS 프로필 {}은 (는) 회사 {}에 속하지 않습니다., +User {} is disabled. Please select valid user/cashier,{} 사용자가 비활성화되었습니다. 유효한 사용자 / 직원을 선택하십시오, +Row #{}: Original Invoice {} of return invoice {} is {}. ,행 # {} : 반품 인보이스 {}의 원래 인보이스 {}은 {}입니다., +Original invoice should be consolidated before or along with the return invoice.,원래 인보이스는 반품 인보이스와 함께 통합되어야합니다., +You can add original invoice {} manually to proceed.,계속하려면 원본 인보이스 {}를 수동으로 추가 할 수 있습니다., +Please ensure {} account is a Balance Sheet account. ,{} 계정이 대차 대조표 계정인지 확인하십시오., +You can change the parent account to a Balance Sheet account or select a different account.,상위 계정을 대차 대조표 계정으로 변경하거나 다른 계정을 선택할 수 있습니다., +Please ensure {} account is a Receivable account. ,{} 계정이 미수금 계정인지 확인하십시오., +Change the account type to Receivable or select a different account.,계정 유형을 Receivable로 변경하거나 다른 계정을 선택합니다., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},적립 된 로열티 포인트가 사용되었으므로 {}을 취소 할 수 없습니다. 먼저 {} 아니요 {} 취소, +already exists,이미 존재 함, +POS Closing Entry {} against {} between selected period,선택한 기간 사이에 {}에 대한 POS 마감 항목 {}, +POS Invoice is {},POS 송장은 {}입니다., +POS Profile doesn't matches {},POS 프로필이 {}과 (와) 일치하지 않습니다., +POS Invoice is not {},POS 송장이 {}이 아닙니다., +POS Invoice isn't created by user {},{} 사용자가 POS 인보이스를 생성하지 않았습니다., +Row #{}: {},행 # {} : {}, +Invalid POS Invoices,잘못된 POS 송장, +Please add the account to root level Company - {},루트 수준 회사에 계정을 추가하십시오-{}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",하위 회사 {0}에 대한 계정을 만드는 동안 상위 계정 {1}을 (를) 찾을 수 없습니다. 해당 COA에서 상위 계정을 만드십시오., +Account Not Found,계정을 찾지 못했습니다, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",하위 회사 {0}에 대한 계정을 만드는 동안 상위 계정 {1}이 (가) 원장 계정으로 발견되었습니다., +Please convert the parent account in corresponding child company to a group account.,해당 하위 회사의 상위 계정을 그룹 계정으로 전환하십시오., +Invalid Parent Account,잘못된 부모 계정, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",이름 변경은 불일치를 방지하기 위해 모회사 {0}를 통해서만 허용됩니다., +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.",{0} 항목 {1} 수량 {2} 인 경우 {3} 체계가 항목에 적용됩니다., +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.",항목 {2}에 대해 {0} {1} 가치가있는 경우 {3} 체계가 항목에 적용됩니다., +"As the field {0} is enabled, the field {1} is mandatory.",{0} 필드가 사용 가능하므로 {1} 필드는 필수입니다., +"As the field {0} is enabled, the value of the field {1} should be more than 1.",{0} 필드가 사용 가능하므로 {1} 필드의 값은 1보다 커야합니다., +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},판매 주문 {2}을 (를) 채우기 위해 예약되어 있으므로 {1} 항목의 일련 번호 {0}을 (를) 배송 할 수 없습니다., +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.",판매 주문 {0}에 {1} 항목에 대한 예약이 있습니다. {0}에 대해 예약 된 {1} 만 배송 할 수 있습니다., +{0} Serial No {1} cannot be delivered,{0} 일련 번호 {1}을 (를) 배송 할 수 없습니다., +Row {0}: Subcontracted Item is mandatory for the raw material {1},행 {0} : 원자재 {1}에 대한 외주 품목은 필수입니다., +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.",충분한 원자재가 있으므로 창고 {0}에 대한 자재 요청이 필요하지 않습니다., +" If you still want to proceed, please enable {0}.",계속하려면 {0}을 (를) 활성화하십시오., +The item referenced by {0} - {1} is already invoiced,{0}-{1}에서 참조하는 항목은 이미 인보이스가 발행되었습니다., +Therapy Session overlaps with {0},치료 세션이 {0}와 (과) 겹칩니다., +Therapy Sessions Overlapping,겹치는 치료 세션, +Therapy Plans,치료 계획, +"Item Code, warehouse, quantity are required on row {0}","{0} 행에 품목 코드, 창고, 수량이 필요합니다.", +Get Items from Material Requests against this Supplier,이 공급자에 대한 자재 요청에서 품목 가져 오기, +Enable European Access,유럽 액세스 활성화, +Creating Purchase Order ...,구매 오더 생성 ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",아래 항목의 기본 공급자에서 공급자를 선택합니다. 선택시 선택한 공급 업체에 속한 품목에 대해서만 구매 주문이 작성됩니다., +Row #{}: You must select {} serial numbers for item {}.,행 # {} : 항목 {}에 대해 {} 일련 번호를 선택해야합니다., diff --git a/erpnext/translations/ku.csv b/erpnext/translations/ku.csv index a12ba33e12..6962ea1ef1 100644 --- a/erpnext/translations/ku.csv +++ b/erpnext/translations/ku.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',ne dikar Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',ne dikarin dadixînin dema kategoriyê e ji bo 'Valuation' an jî 'Vaulation û Total', "Cannot delete Serial No {0}, as it is used in stock transactions","ne dikarin jêbirin Serial No {0}, wekî ku di karbazarên stock bikaranîn", Cannot enroll more than {0} students for this student group.,ne dikarin zêdetir ji {0} xwendekar ji bo vê koma xwendekaran kul., -Cannot find Item with this barcode,Naha bi vê barcode re Dîtin, Cannot find active Leave Period,Dema vekêşanê ya Çalakî nayê dîtin, Cannot produce more Item {0} than Sales Order quantity {1},Can babet zêdetir {0} ji Sales Order dorpêçê de hilberandina ne {1}, Cannot promote Employee with status Left,Kes nikare karûbarê çepê ya Çep bigirin, @@ -690,7 +689,6 @@ Create Variants,Variantan biafirînin, "Create and manage daily, weekly and monthly email digests.","Create û rêvebirin û digests email rojane, hefteyî û mehane.", Create customer quotes,Create quotes mişterî, Create rules to restrict transactions based on values.,Create qaîdeyên ji bo bisînorkirina muamele li ser bingeha nirxên., -Created By,created By, Created {0} scorecards for {1} between: ,{1} ji bo {1} scorecards {, Creating Company and Importing Chart of Accounts,Afirandina Pargîdaniyê û Danûstendina Damezrênerê, Creating Fees,Pargîdanî, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Ji bo Warehouse berî pêwîst e Submit, For row {0}: Enter Planned Qty,Ji bo row {0}, "For {0}, only credit accounts can be linked against another debit entry","Ji bo {0}, tenê bikarhênerên credit dikare li dijî entry debit din ve girêdayî", "For {0}, only debit accounts can be linked against another credit entry","Ji bo {0}, tenê bikarhênerên debit dikare li dijî entry credit din ve girêdayî", -Form View,Form View, Forum Activity,Çalakiya Forum, Free item code is not selected,Koda belaş belaş nayê hilbijartin, Freight and Forwarding Charges,Koçberên êşkencebûyî tê û şandinê de doz li, @@ -2638,7 +2635,6 @@ Send SMS,Send SMS, Send mass SMS to your contacts,Send SMS girseyî ji bo têkiliyên xwe, Sensitivity,Hisê nazik, Sent,Şandin, -Serial #,Serial #, Serial No and Batch,Serial No û Batch, Serial No is mandatory for Item {0},No Serial ji bo babet wêneke e {0}, Serial No {0} does not belong to Batch {1},No Serial No {0} ne girêdayî ye {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ji bo ERPNext hatî, What do you need help with?,Çi ji we re alîkarî pêwîst bi?, What does it do?,Çi bikim?, Where manufacturing operations are carried.,Li ku derê operasyonên bi aktîvîteyên bi çalakiyek hatiye lidarxistin., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Dema ku hesab ji bo Companyirketa zarokan {0} çê kir, hesabê dêûbavê {1} nehat dîtin. Ji kerema xwe hesabê dêûbav di COA-yê ya têkildar de biafirînin", White,spî, Wire Transfer,Transfer wire, WooCommerce Products,Berhemên WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Likes, Merge with existing,Merge bi heyî, Office,Dayre, Orientation,Orientation, +Parent,dê û bav, Passive,Nejîr, Payment Failed,Payment biserneket, Percent,ji sedî, @@ -3543,6 +3539,7 @@ Shift,Tarloqî, Show {0},Show {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Di tîpa navnasî de ji bilî "-", "#", ".", "/", "{" Û "}" tîpên Taybet", Target Details,Hûrgulên armancê, +{0} already has a Parent Procedure {1}.,{0} ji berê ve heye Parent Procedure {1}., API,API, Annual,Yeksalî, Approved,pejirandin, @@ -4241,7 +4238,6 @@ Download as JSON,Wekî JSON dakêşin, End date can not be less than start date,Dîrok Dîroka Destpêk Destpêk Dibe, For Default Supplier (Optional),Ji bo Default Supplier (alternatîf), From date cannot be greater than To date,Ji Date ne dikarin bibin mezintir To Date, -Get items from,Get tomar ji, Group by,Koma By, In stock,Ez bêzarim, Item name,Navê Navekî, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Parametreya Feedablonê Bersivê Qayît, Quality Goal,Armanca Qalîteyê, Monitoring Frequency,Frekansa avdêrî, Weekday,Hefteya çûyî, -January-April-July-October,Januaryile-Avrêl-Tîrmeh-irî, -Revision and Revised On,Revîzekirin û Li ser Dît, -Revision,Nûxwestin, -Revised On,Li ser revandin, Objectives,Armanc, Quality Goal Objective,Armanca Armanca Qalîteyê, Objective,Berdest, @@ -7574,7 +7566,6 @@ Parent Procedure,Pêvajoya dêûbav, Processes,Pêvajoyên, Quality Procedure Process,Pêvajoya Karûbarê kalîteyê, Process Description,Danasîna pêvajoyê, -Child Procedure,Rêbaza Zarok, Link existing Quality Procedure.,Pêvajoya Kêmasiyê ya heyî girêdin., Additional Information,Agahdariya Zêdeyî, Quality Review Objective,Armanca nirxandina kalîteyê, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Bikirin Order Trends, Purchase Receipt Trends,Trends kirînê Meqbûz, Purchase Register,Buy Register, Quotation Trends,Trends quotation, -Quoted Item Comparison,Babetê têbinî eyna, Received Items To Be Billed,Pêşwaziya Nawy ye- Be, Qty to Order,Qty siparîş, Requested Items To Be Transferred,Nawy xwestin veguhestin, @@ -9091,7 +9081,6 @@ Unmarked days,Rojên nevekirî, Absent Days,Rojên Tunebûyî, Conditions and Formula variable and example,Itionsert û Formula guhêrbar û mînak, Feedback By,Feedback By, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Beşa Çêkirinê, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Bi default, Navê Xerîdar li gorî Navê Tevahî yê hatî nivîsandin tê saz kirin. Heke hûn dixwazin Xerîdar ji hêla a ve bêne nav kirin", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Dema ku danûstendinek firotanê ya nû çêbikin Lîsteya Bihayê ya default saz bikin. Bihayên tiştan dê ji vê Lîsteya Bihayê werin girtin., @@ -9692,7 +9681,6 @@ Available Balance,Bîlançoya berdest, Reserved Balance,Bilaniya Reserve, Uncleared Balance,Bîlançoya Nediyar, Payment related to {0} is not completed,Dravdayîna têkildarî {0} neqediyaye, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rêza # {}: Na rêzeya {}. {} berê li Fatûreya POS-a din hatî veguhastin. Ji kerema xwe serial no derbasdar hilbijêrin., Row #{}: Item Code: {} is not available under warehouse {}.,Rêzeya # {}: Koda Tiştê: {} di bin embarê de tune ye {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Rêzok # {}: Hêjmara pargîdaniyê ji bo Code Code têr nake: {} di bin embarê de {}. Hêjmara heyî {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Rêzok # {}: Ji kerema xwe li dijî hejmar rêzeyek û rêzek hilbijêrin: {} an jî wê hilînin da ku danûstendinê biqedînin., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Hêjmar ji bo {0} li depo {1} tu Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Ji kerema xwe Destûra Negatîfek Bişkojk di Mîhengên Bişkojkê de çalak bikin an Bişêwira Stock-ê biafirînin da ku berdewam bike., No Inpatient Record found against patient {0},Li dijî nexweş tomarek Nexweşxaneyê nehat dîtin {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Biryarnameyek Dermanên Nexweşxaneyê {0} li dijî Hevdîtina Nexweşan {1} jixwe heye., +Allow In Returns,Di Vegerê de Destûrê bide, +Hide Unavailable Items,Tiştên Çêdibe Veşêre, +Apply Discount on Discounted Rate,Li Rêjeya Daxistî Dakêşan Bikin, +Therapy Plan Template,Planablon Plana Terapiyê, +Fetching Template Details,Fetching Details Details, +Linked Item Details,Agahdariyên Tişkî Giredayî, +Therapy Types,Cureyên Terapiyê, +Therapy Plan Template Detail,Detail plateablon a Plana Terapiyê, +Non Conformance,Ne Lihevhatin, +Process Owner,Xwediyê Pêvajoyê, +Corrective Action,Çalakiya Ragihandinê, +Preventive Action,Çalakiya Pêşîlêgir, +Problem,Pirsegirêk, +Responsible,Berpirsîyare, +Completion By,Temamkirin Ji hêla, +Process Owner Full Name,Xwediyê Pêvajoyê Navê Tevahî, +Right Index,Indeksa Rast, +Left Index,Indeksa Çep, +Sub Procedure,Bû prosedure, +Passed,Derbas bû, +Print Receipt,Receipt Print, +Edit Receipt,Receipt biguherînin, +Focus on search input,Li ser input lêgerîn bisekinin, +Focus on Item Group filter,Li ser Parzûna Koma Item bisekinin, +Checkout Order / Submit Order / New Order,Biryarnameya Kirînê / Biryarnameyê / Biryara Nû bişînin, +Add Order Discount,Zencîreya Rêzê zêde bikin, +Item Code: {0} is not available under warehouse {1}.,Koda Tiştê: {0} di bin embarê de tune {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Hejmarên rêzê ji bo Hêmana {0} di bin embarê de {1} tune. Ji kerema xwe ambaran biguherînin., +Fetched only {0} available serial numbers.,Tenê {0} hejmarên rêzê yên berdest hatin stendin., +Switch Between Payment Modes,Di Navbera Modên Peredanê de Guherîn, +Enter {0} amount.,Hejmara {0} binivîse., +You don't have enough points to redeem.,Ji we re xalên ku hûn xilas bikin têr nakin., +You can redeem upto {0}.,Hûn dikarin heya {0} bikar bînin., +Enter amount to be redeemed.,Hejmara ku were xilas kirin têkevinê., +You cannot redeem more than {0}.,Hûn nekarin ji {0} pirtirîn bikirin., +Open Form View,Dîtina Formê Vekin, +POS invoice {0} created succesfully,Fatura POS-ê {0} bi serfirazî hate afirandin, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Hêjmara pargîdaniyê ji bo Koda Tiştê têr nake: {0} bin embarê {1} Hejmara heyî {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Hejmara rêzê: {0} berê li Fatûreya POS-a din hatiye veguhastin., +Balance Serial No,Hejmara Rêzeya Hevsengiyê, +Warehouse: {0} does not belong to {1},Warehouse: {0} ne ya {1} e, +Please select batches for batched item {0},Ji kerema xwe ji bo pargîdaniya pargîdanî komek hilbijêrin {0}, +Please select quantity on row {0},Ji kerema xwe hejmar li ser rêzê hilbijêrin {0}, +Please enter serial numbers for serialized item {0},Ji kerema xwe jimarên rêzê ji bo hêjmara rêzkirî binivîse {0}, +Batch {0} already selected.,Koma {0} jixwe hilbijartî., +Please select a warehouse to get available quantities,Ji kerema xwe embarek hilbijêrin da ku mîqdarên berdest bistînin, +"For transfer from source, selected quantity cannot be greater than available quantity","Ji bo veguhastina ji çavkaniyê, mîqdara bijarte ji hejmaiya berdest mezintir nabe", +Cannot find Item with this Barcode,Bi vê Barkodê Nikarin Tiştê bibînin, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} mecbûrî ye. Dibe ku tomara Danûstandina Pereyê ji bo {1} heya {2} neyê afirandin, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} hebûnên pê ve girêdayî ve şandiye. Hûn hewce ne ku sermayeyan betal bikin da ku vegera kirînê çêbikin., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Nikare vê belgeyê betal bike ji ber ku bi sermayeya şandî ve girêdayî ye {0}. Ji kerema xwe wê betal bikin ku berdewam bike., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rêzok # {}: Hejmara rêzê. {} Jixwe li Fatûreya POS-a din hatiye veguheztin. Ji kerema xwe serial no derbasdar hilbijêrin., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rêza # {}: Hejmarên rêzê. {} Berê jî li Fatûreya POS-a din hate veguheztin. Ji kerema xwe serial no derbasdar hilbijêrin., +Item Unavailable,Tişt Nayê, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Rêzok # {}: Serial No {} nayê vegerandin ji ber ku di fatûreya orjînal de nehatiye peywirdarkirin {}, +Please set default Cash or Bank account in Mode of Payment {},Ji kerema xwe Dravê Dravê an Bankê ya pêşdibistanê di Awayê dayinê de saz bikin {}, +Please set default Cash or Bank account in Mode of Payments {},Ji kerema xwe Dravê Dravê an Bankê ya pêşdibistanê di Awayê Payments de saz bikin {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Ji kerema xwe hesabê {} hesabek Bilanî ye. Hûn dikarin hesabê dêûbav bi hesabek Bilanço biguherînin an jî hesabek cûda hilbijêrin., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Ji kerema xwe hesabê {} hesabek Payable ye. Celebê hesabê bi Payable-ê biguherînin an jî hesabek cûda hilbijêrin., +Row {}: Expense Head changed to {} ,Rêz {}: Serê Lêçûnê hate guherandin bo {}, +because account {} is not linked to warehouse {} ,ji ber ku hesabê {} bi embarê ve nehatiye girêdan {}, +or it is not the default inventory account,an ew ne hesabê envanterê yê pêşdibistanê ye, +Expense Head Changed,Serê Lêçûn Guherî, +because expense is booked against this account in Purchase Receipt {},ji ber ku lêçûn li dijî vê hesabê di Rastnameya Kirînê de tê veqetandin {}, +as no Purchase Receipt is created against Item {}. ,ji ber ku li dijî Qanûna Kirînê li dijî Item {} nayê çêkirin., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Ev tête kirin ku ji bo hesabkirina dozên dema Receival Kirînê piştî Fatûra Kirînê tê afirandin, +Purchase Order Required for item {},Siparîşa Kirînê Ji bo tiştê Pêdivî ye {}, +To submit the invoice without purchase order please set {} ,Ji bo ku fatoreya bêyî kirîna kirînê bişînin ji kerema xwe {} saz bikin, +as {} in {},wekî {} li {}, +Mandatory Purchase Order,Biryara Kirînê ya Bicîh, +Purchase Receipt Required for item {},Wergirtina Kirînê Ji bo tiştê Pêdivî ye {}, +To submit the invoice without purchase receipt please set {} ,Ji bo ku fatûreya bêyî meqbûza kirînê bişînin ji kerema xwe {} saz bikin, +Mandatory Purchase Receipt,Wergirtina Kirîna Derveyî, +POS Profile {} does not belongs to company {},POS Profile {} ne ya pargîdaniyê ye {}, +User {} is disabled. Please select valid user/cashier,Bikarhêner {} neçalak e. Ji kerema xwe bikarhêner / kerekî derbasdar hilbijêrin, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Rêzok # {}: Fatûra Eslî {} fatura vegerê {} e {}., +Original invoice should be consolidated before or along with the return invoice.,Divê fatûreya orjînal berî an digel fatûreya vegerê were yek kirin., +You can add original invoice {} manually to proceed.,Hûn dikarin faturaya xwerû {} bi destan lê zêde bikin ku berdewam bikin., +Please ensure {} account is a Balance Sheet account. ,Ji kerema xwe hesabê {} hesabek Bilanî ye., +You can change the parent account to a Balance Sheet account or select a different account.,Hûn dikarin hesabê dêûbav bi hesabek Bilanço biguherînin an jî hesabek cûda hilbijêrin., +Please ensure {} account is a Receivable account. ,Ji kerema xwe hesabê {} hesabek wergirî ye., +Change the account type to Receivable or select a different account.,Cûreyek hesabê biguhezînin Receiveable an hesabek cûda hilbijêrin., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} ji ber ku Pûanên Dilsoziyê yên hatine bidestxistin hate xilas kirin nayê betalkirin. Pêşîn {} Na {} betal bikin, +already exists,Jixwe heye, +POS Closing Entry {} against {} between selected period,Di navbera heyama bijartî de Têketina Girtî ya POS {} dijî {}, +POS Invoice is {},Fatûra POS {} e, +POS Profile doesn't matches {},Profîla POS-ê li hev nake {}, +POS Invoice is not {},Fatura POS ne {}, +POS Invoice isn't created by user {},POS Fature ji hêla bikarhêner ve nayê afirandin {}, +Row #{}: {},Rêzeya # {}: {}, +Invalid POS Invoices,Fatûrên POS-ê yên nederbasdar, +Please add the account to root level Company - {},Ji kerema xwe hesabê li asta rootirket zêde bikin - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Dema ku ji bo Pargîdaniya Zarok hesab çêdikir {0}, hesabê dêûbav {1} nehat dîtin. Ji kerema xwe hesabê dêûbav di COA-ya têkildar de çêbikin", +Account Not Found,Hesab nehat dîtin, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Dema ku hesabê ji bo Pargîdaniya Zarok çêdikir {0}, hesabê dêûbav {1} wekî hesabek pirtûkê hate dîtin.", +Please convert the parent account in corresponding child company to a group account.,Ji kerema xwe hesabê dêûbavê di pargîdaniya zarokan a pêwendîdar de veguherînin hesabek komê., +Invalid Parent Account,Hesabê Dêûbavê Neheq e, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Navnîşkirina wê tenê bi navgîniya pargîdaniya dêûbav {0} ve tête destûr kirin, da ku ji hevnêzîkbûnê dûr bikeve.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Heke hûn {0} {1} mîqdarên tiştê {2} bikin, dê şemaya {3} li ser tiştê were sepandin.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Ger hûn {0} {1} hêjayî hêmanê ne {2}, dê şemaya {3} li ser tiştê were sepandin.", +"As the field {0} is enabled, the field {1} is mandatory.","Ji ber ku qada {0} çalak e, qada {1} ferz e.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Ji ber ku qada {0} çalak e, divê nirxa qada {1} ji 1-ê zêdetir be.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Çênabe Serial No {0} alavê {1} radest bike ji ber ku ew ji bo dagirtina Biryara Firotanê veqetandî ye {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Fermana Firotanê {0} ji bo tiştê {1} rezervasyon heye, hûn tenê dikarin li hember {0} rezerva {1} bidin.", +{0} Serial No {1} cannot be delivered,{0} Serial No {1} nayê şandin, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Rêz {0}: Tişta taşeron ji bo madeya xav mecbûrî ye {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Ji ber ku materyalên xav ên têra xwe hene, Ji bo Warehouse {0} Daxwaza Materyalê ne hewce ye.", +" If you still want to proceed, please enable {0}.","Heke hûn hîn jî dixwazin berdewam bikin, ji kerema xwe {0} çalak bikin.", +The item referenced by {0} - {1} is already invoiced,Tişta ku ji hêla {0} - {1} ve hatî referans kirin jixwe fatûre ye, +Therapy Session overlaps with {0},Danişîna Terapiyê bi {0} re li hevûdu dike, +Therapy Sessions Overlapping,Danişînên Terapiyê Li Hev Dikevin, +Therapy Plans,Planên Terapiyê, +"Item Code, warehouse, quantity are required on row {0}","Koda tiştê, embarê, hejmar li ser rêzê hewce ne {0}", +Get Items from Material Requests against this Supplier,Li dijî vê Pêşkêşkerê Tiştan ji Daxwazên Maddî bistînin, +Enable European Access,Destûra Ewropî çalak bikin, +Creating Purchase Order ...,Afirandina Biryara Kirînê ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Ji Pargîdaniyên Pêşwext ên jêrîn ve Pêşkêşvanek hilbijêrin. Li ser hilbijartinê, dê Biryarnameyek Kirînê li dijî tiştên ku tenê ji Pêşkêşkarê hilbijartî ne pêk were.", +Row #{}: You must select {} serial numbers for item {}.,Rêzok # {}: Divê hûn {} hejmarên rêzê ji bo hêmanê {} hilbijêrin., diff --git a/erpnext/translations/lo.csv b/erpnext/translations/lo.csv index 71209e2076..b61476cf17 100644 --- a/erpnext/translations/lo.csv +++ b/erpnext/translations/lo.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',ບໍ Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',ບໍ່ສາມາດຫັກໃນເວລາທີ່ປະເພດແມ່ນສໍາລັບການ 'ປະເມີນມູນຄ່າ' ຫຼື 'Vaulation ແລະລວມ, "Cannot delete Serial No {0}, as it is used in stock transactions","ບໍ່ສາມາດລົບ Serial No {0}, ຍ້ອນວ່າມັນໄດ້ຖືກນໍາໃຊ້ໃນທຸລະກໍາຫຼັກຊັບ", Cannot enroll more than {0} students for this student group.,ບໍ່ສາມາດລົງທະບຽນຫຼາຍກ່ວາ {0} ນັກສຶກສາສໍາລັບກຸ່ມນັກສຶກສານີ້., -Cannot find Item with this barcode,ບໍ່ສາມາດຊອກຫາລາຍການດ້ວຍລະຫັດບາໂຄ້ດນີ້, Cannot find active Leave Period,ບໍ່ສາມາດຊອກຫາກໍາໄລໄລຍະເວລາການເຄື່ອນໄຫວ, Cannot produce more Item {0} than Sales Order quantity {1},ບໍ່ສາມາດຜະລິດສິນຄ້າຫຼາຍ {0} ກ່ວາປະລິມານສັ່ງຂາຍ {1}, Cannot promote Employee with status Left,ບໍ່ສາມາດສົ່ງເສີມພະນັກງານທີ່ມີສະຖານະພາບໄວ້, @@ -690,7 +689,6 @@ Create Variants,ສ້າງ Variants, "Create and manage daily, weekly and monthly email digests.","ສ້າງແລະຄຸ້ມຄອງປະຈໍາວັນ, ປະຈໍາອາທິດແລະປະຈໍາເດືອນຫົວເລື່ອງອີເມລ໌.", Create customer quotes,ສ້າງລູກຄ້າ, Create rules to restrict transactions based on values.,ສ້າງລະບຽບການເພື່ອຈໍາກັດການເຮັດທຸລະກໍາໂດຍອີງໃສ່ຄ່າ., -Created By,ສ້າງໂດຍ, Created {0} scorecards for {1} between: ,ສ້າງ {0} scorecards ສໍາລັບ {1} ລະຫວ່າງ:, Creating Company and Importing Chart of Accounts,ສ້າງບໍລິສັດແລະ ນຳ ເຂົ້າຕາຕະລາງບັນຊີ, Creating Fees,ສ້າງຄ່າທໍານຽມ, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,ສໍາລັບການຄັງສ For row {0}: Enter Planned Qty,ສໍາຫລັບແຖວ {0}: ກະລຸນາໃສ່ qty ວາງແຜນ, "For {0}, only credit accounts can be linked against another debit entry","{0}, ພຽງແຕ່ລະເງິນກູ້ຢືມສາມາດໄດ້ຮັບການເຊື່ອມຕໍ່ເຂົ້າເດບິດອື່ນ", "For {0}, only debit accounts can be linked against another credit entry","{0}, ພຽງແຕ່ບັນຊີເດບິດສາມາດເຊື່ອມໂຍງກັບເຂົ້າການປ່ອຍສິນເຊື່ອອີກ", -Form View,Form View, Forum Activity,Forum Activity, Free item code is not selected,ລະຫັດສິນຄ້າບໍ່ຖືກເລືອກ, Freight and Forwarding Charges,ຂົນສົ່ງສິນຄ້າແລະການສົ່ງຕໍ່ຄ່າບໍລິການ, @@ -2638,7 +2635,6 @@ Send SMS,ສົ່ງ SMS, Send mass SMS to your contacts,ສົ່ງ SMS ມະຫາຊົນເພື່ອຕິດຕໍ່ພົວພັນຂອງທ່ານ, Sensitivity,ຄວາມອ່ອນໄຫວ, Sent,ສົ່ງ, -Serial #,Serial:, Serial No and Batch,ບໍ່ມີ Serial ແລະ Batch, Serial No is mandatory for Item {0},ບໍ່ມີ Serial ເປັນການບັງຄັບສໍາລັບລາຍການ {0}, Serial No {0} does not belong to Batch {1},Serial No {0} ບໍ່ແມ່ນຂອງ {B} {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ຍິນດີຕ້ອນຮັບ ERPNext, What do you need help with?,ສິ່ງທີ່ທ່ານຈໍາເປັນຕ້ອງຊ່ວຍ?, What does it do?,ມັນຈະເປັນແນວໃດເຮັດແນວໃດ?, Where manufacturing operations are carried.,ບ່ອນທີ່ການດໍາເນີນງານການຜະລິດກໍາລັງດໍາເນີນ., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","ໃນຂະນະທີ່ສ້າງບັນຊີ ສຳ ລັບບໍລິສັດເດັກ {0}, ບັນຊີພໍ່ແມ່ {1} ບໍ່ພົບ. ກະລຸນາສ້າງບັນຊີຜູ້ປົກຄອງໃນ COA ທີ່ສອດຄ້ອງກັນ", White,ສີຂາວ, Wire Transfer,ການໂອນ, WooCommerce Products,ຜະລິດຕະພັນ WooCommerce, @@ -3493,6 +3488,7 @@ Likes,ເຊັ່ນດຽວກັນ, Merge with existing,merge ກັບທີ່ມີຢູ່ແລ້ວ, Office,ຫ້ອງການ, Orientation,ປະຖົມນິເທດ, +Parent,ພໍ່ແມ່, Passive,ຕົວຕັ້ງຕົວຕີ, Payment Failed,ການຊໍາລະເງິນບໍ່ສາມາດ, Percent,ເປີເຊັນ, @@ -3543,6 +3539,7 @@ Shift,ປ່ຽນ, Show {0},ສະແດງ {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","ຕົວລະຄອນພິເສດຍົກເວັ້ນ "-", "#", ".", "/", "{" ແລະ "}" ບໍ່ໄດ້ຖືກອະນຸຍາດໃນຊຸດຊື່", Target Details,ລາຍລະອຽດເປົ້າ ໝາຍ, +{0} already has a Parent Procedure {1}.,{0} ມີຂັ້ນຕອນການເປັນພໍ່ແມ່ {1} ແລ້ວ., API,API, Annual,ປະຈໍາປີ, Approved,ການອະນຸມັດ, @@ -4241,7 +4238,6 @@ Download as JSON,ດາວໂຫລດເປັນ JSON, End date can not be less than start date,ວັນສິ້ນສຸດບໍ່ສາມາດນ້ອຍກວ່າວັນເລີ່ມຕົ້ນ, For Default Supplier (Optional),ສໍາລັບຜູ້ໃຫ້ບໍລິການມາດຕະຖານ (ທາງເລືອກ), From date cannot be greater than To date,ຈາກວັນທີບໍ່ສາມາດຈະມີຫຼາຍຂຶ້ນກ່ວາເຖິງວັນທີ່, -Get items from,ໄດ້ຮັບການລາຍການຈາກ, Group by,ກຸ່ມໂດຍ, In stock,ໃນສາງ, Item name,ຊື່ສິນຄ້າ, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,ພາລາມິເຕີແມ່ແບ Quality Goal,ເປົ້າ ໝາຍ ຄຸນນະພາບ, Monitoring Frequency,ຄວາມຖີ່ຂອງການກວດສອບ, Weekday,ວັນອາທິດ, -January-April-July-October,ເດືອນມັງກອນ - ເມສາ - ກໍລະກົດ - ຕຸລາ, -Revision and Revised On,ການປັບປຸງແລະປັບປຸງ ໃໝ່, -Revision,ການດັດແກ້, -Revised On,ປັບປຸງ ໃໝ່, Objectives,ຈຸດປະສົງ, Quality Goal Objective,ຈຸດປະສົງເປົ້າ ໝາຍ ຄຸນນະພາບ, Objective,ຈຸດປະສົງ, @@ -7574,7 +7566,6 @@ Parent Procedure,ຂັ້ນຕອນການເປັນພໍ່ແມ່, Processes,ຂະບວນການຕ່າງໆ, Quality Procedure Process,ຂັ້ນຕອນການປະຕິບັດຄຸນນະພາບ, Process Description,ລາຍລະອຽດຂອງຂະບວນການ, -Child Procedure,ຂັ້ນຕອນຂອງເດັກ, Link existing Quality Procedure.,ເຊື່ອມໂຍງຂັ້ນຕອນຄຸນນະພາບທີ່ມີຢູ່., Additional Information,ຂໍ້ມູນເພີ່ມເຕີມ, Quality Review Objective,ຈຸດປະສົງການທົບທວນຄຸນນະພາບ, @@ -8557,7 +8548,6 @@ Purchase Order Trends,ຊື້ແນວໂນ້ມຄໍາສັ່ງ, Purchase Receipt Trends,ແນວໂນ້ມການຊື້ຮັບ, Purchase Register,ລົງທະບຽນການຊື້, Quotation Trends,ແນວໂນ້ມວົງຢືມ, -Quoted Item Comparison,ປຽບທຽບບາຍດີທຸກທ່ານ Item, Received Items To Be Billed,ລາຍການທີ່ໄດ້ຮັບການໄດ້ຮັບການ billed, Qty to Order,ຈໍານວນທີ່ຈະສັ່ງຊື້ສິນຄ້າ, Requested Items To Be Transferred,ການຮ້ອງຂໍໃຫ້ໄດ້ຮັບການໂອນ, @@ -9091,7 +9081,6 @@ Unmarked days,ມື້ທີ່ບໍ່ໄດ້ ໝາຍ, Absent Days,ວັນຂາດ, Conditions and Formula variable and example,ເງື່ອນໄຂແລະຕົວປ່ຽນແປງສູດແລະຕົວຢ່າງ, Feedback By,ຄຳ ຕິຊົມໂດຍ, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,ພາກສ່ວນການຜະລິດ, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","ໂດຍຄ່າເລີ່ມຕົ້ນ, ຊື່ລູກຄ້າຖືກຕັ້ງຄ່າຕາມຊື່ເຕັມທີ່ເຂົ້າມາ. ຖ້າທ່ານຕ້ອງການໃຫ້ລູກຄ້າຕັ້ງຊື່ໂດຍ a", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,ຕັ້ງຄ່າລາຍການລາຄາເລີ່ມຕົ້ນເມື່ອສ້າງທຸລະ ກຳ ການຂາຍ ໃໝ່. ລາຄາສິນຄ້າຈະຖືກດຶງມາຈາກບັນຊີລາຄານີ້., @@ -9692,7 +9681,6 @@ Available Balance,ຍອດຍັງເຫຼືອ, Reserved Balance,ຍອດເງິນທີ່ເກັບໄວ້, Uncleared Balance,ການດຸ່ນດ່ຽງທີ່ບໍ່ມີປະໂຫຍດ, Payment related to {0} is not completed,ການຈ່າຍເງິນທີ່ກ່ຽວຂ້ອງກັບ {0} ບໍ່ ສຳ ເລັດ, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,ແຖວ # {}: Serial No {}. {} ໄດ້ຖືກໂອນເຂົ້າໄປໃນໃບເກັບເງິນ POS ອີກປະການ ໜຶ່ງ ແລ້ວ. ກະລຸນາເລືອກລະຫັດທີ່ຖືກຕ້ອງ., Row #{}: Item Code: {} is not available under warehouse {}.,ແຖວ # {}: ລະຫັດສິນຄ້າ: {} ບໍ່ມີຢູ່ໃນສາງ {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,ແຖວ # {}: ຈຳ ນວນຫຸ້ນບໍ່ພຽງພໍ ສຳ ລັບລະຫັດສິນຄ້າ: {} ພາຍໃຕ້ຄັງສິນຄ້າ {}. ປະລິມານທີ່ມີຢູ່ແລ້ວ {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,ແຖວ # {}: ກະລຸນາເລືອກ serial no ແລະ batch ຕໍ່ລາຍການ: {} ຫຼືເອົາມັນອອກເພື່ອ ດຳ ເນີນການເຮັດທຸລະ ກຳ., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},ຈຳ ນວນບໍ່ສາ Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,ກະລຸນາເຮັດໃຫ້ສາມາດອະນຸຍາດໃຫ້ Stock Negative ໃນການຕັ້ງຄ່າຫຸ້ນຫຼືສ້າງ Stock Entry ເພື່ອ ດຳ ເນີນການຕໍ່ໄປ., No Inpatient Record found against patient {0},ບໍ່ພົບບັນທຶກຄົນເຈັບທີ່ພົບກັບຄົນເຈັບ {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,ໃບສັ່ງຊື້ຢາປິ່ນປົວຄົນເຈັບ {0} ຕໍ່ກັບຜູ້ປະສົບໄພຄົນເຈັບ {1} ມີຢູ່ແລ້ວ., +Allow In Returns,ອະນຸຍາດໃຫ້ກັບຄືນ, +Hide Unavailable Items,ເຊື່ອງລາຍການທີ່ບໍ່ມີ, +Apply Discount on Discounted Rate,ສະ ໝັກ ເອົາສ່ວນຫຼຸດໃນອັດຕາຫຼຸດລາຄາ, +Therapy Plan Template,ແມ່ແບບແຜນການປິ່ນປົວ, +Fetching Template Details,ລາຍລະອຽດແມ່ແບບ, +Linked Item Details,ລາຍລະອຽດຂອງລາຍການທີ່ເຊື່ອມໂຍງ, +Therapy Types,ປະເພດການປິ່ນປົວ, +Therapy Plan Template Detail,ລາຍລະອຽດແບບແຜນການປິ່ນປົວ, +Non Conformance,ຄວາມສອດຄ່ອງທີ່ບໍ່ແມ່ນ, +Process Owner,ເຈົ້າຂອງຂະບວນການ, +Corrective Action,ການກະທໍາທີ່ຖືກຕ້ອງ, +Preventive Action,ການປ້ອງກັນ, +Problem,ປັນຫາ, +Responsible,ຮັບຜິດຊອບ, +Completion By,ສຳ ເລັດໂດຍ, +Process Owner Full Name,ເຈົ້າຂອງຂະບວນການຊື່ເຕັມ, +Right Index,ດັດຊະນີທີ່ຖືກຕ້ອງ, +Left Index,ດັດສະນີຊ້າຍ, +Sub Procedure,ຂັ້ນຕອນການຍ່ອຍ, +Passed,ຜ່ານໄປ, +Print Receipt,ໃບຮັບເງິນ, +Edit Receipt,ແກ້ໄຂໃບຮັບເງິນ, +Focus on search input,ສຸມໃສ່ການປ້ອນຂໍ້ມູນການຄົ້ນຫາ, +Focus on Item Group filter,ສຸມໃສ່ການກັ່ນຕອງກຸ່ມສິນຄ້າ, +Checkout Order / Submit Order / New Order,Checkout Order / ສົ່ງໃບສັ່ງຊື້ / ສັ່ງ ໃໝ່, +Add Order Discount,ເພີ່ມສ່ວນຫຼຸດຕາມສັ່ງ, +Item Code: {0} is not available under warehouse {1}.,ລະຫັດສິນຄ້າ: {0} ບໍ່ມີຢູ່ໃນສາງ {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,ບໍ່ມີ ຈຳ ນວນ Serial ສຳ ລັບລາຍການ {0} ພາຍໃຕ້ຄັງສິນຄ້າ {1}. ກະລຸນາລອງປ່ຽນສາງ., +Fetched only {0} available serial numbers.,ເອົາໄວ້ພຽງແຕ່ {0} ເລກ ລຳ ດັບທີ່ມີຢູ່., +Switch Between Payment Modes,ສັບປ່ຽນລະຫວ່າງຮູບແບບການຈ່າຍເງິນ, +Enter {0} amount.,ໃສ່ {0} ຈຳ ນວນ., +You don't have enough points to redeem.,ທ່ານບໍ່ມີຈຸດພຽງພໍທີ່ຈະໄຖ່., +You can redeem upto {0}.,ທ່ານສາມາດເອົາເງິນຄືນໄດ້ {0}., +Enter amount to be redeemed.,ກະລຸນາໃສ່ ຈຳ ນວນເງິນທີ່ຈະຖືກໂອນ., +You cannot redeem more than {0}.,ທ່ານບໍ່ສາມາດຈ່າຍຄືນໄດ້ເກີນ {0}., +Open Form View,ເປີດເບິ່ງແບບຟອມ, +POS invoice {0} created succesfully,ໃບເກັບເງິນ POS {0} ຖືກສ້າງຂື້ນຢ່າງ ສຳ ເລັດຜົນ, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,ຈຳ ນວນຫຸ້ນບໍ່ພຽງພໍ ສຳ ລັບລະຫັດສິນຄ້າ: {0} ພາຍໃຕ້ຄັງສິນຄ້າ {1}. ປະລິມານທີ່ມີຢູ່ {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Serial No: {0} ໄດ້ຖືກໂອນເຂົ້າໄປໃນໃບເກັບເງິນ POS ອື່ນແລ້ວ., +Balance Serial No,ຍອດເງິນ Serial No, +Warehouse: {0} does not belong to {1},ສາງ: {0} ບໍ່ຂຶ້ນກັບ {1}, +Please select batches for batched item {0},ກະລຸນາເລືອກກະເປົາ ສຳ ລັບລາຍການທີ່ເບື່ອຫນ່າຍ {0}, +Please select quantity on row {0},ກະລຸນາເລືອກປະລິມານຢູ່ແຖວ {0}, +Please enter serial numbers for serialized item {0},ກະລຸນາໃສ່ເບີໂທລະສັບ ສຳ ລັບລາຍການທີ່ມີ serialized {0}, +Batch {0} already selected.,ຊຸດ {0} ເລືອກແລ້ວ., +Please select a warehouse to get available quantities,ກະລຸນາເລືອກສາງເພື່ອຮັບປະລິມານທີ່ມີ, +"For transfer from source, selected quantity cannot be greater than available quantity","ສຳ ລັບການໂອນຍ້າຍຈາກແຫຼ່ງ, ປະລິມານທີ່ເລືອກບໍ່ສາມາດສູງກວ່າປະລິມານທີ່ມີຢູ່", +Cannot find Item with this Barcode,ບໍ່ສາມາດຊອກຫາລາຍການດ້ວຍ Barcode ນີ້, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} ແມ່ນ ຈຳ ເປັນ. ບາງທີບັນທຶກການແລກປ່ຽນເງິນຕາບໍ່ໄດ້ຖືກສ້າງຂື້ນ ສຳ ລັບ {1} ເຖິງ {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} ໄດ້ສົ່ງຊັບສິນທີ່ເຊື່ອມໂຍງກັບມັນ. ທ່ານ ຈຳ ເປັນຕ້ອງຍົກເລີກຊັບສິນເພື່ອສ້າງການຊື້ຄືນ., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,ບໍ່ສາມາດຍົກເລີກເອກະສານນີ້ຍ້ອນວ່າມັນເຊື່ອມໂຍງກັບຊັບສິນທີ່ຖືກສົ່ງມາ {0}. ກະລຸນາຍົກເລີກມັນເພື່ອ ດຳ ເນີນການຕໍ່ໄປ., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,ແຖວ # {}: ເລກ Serial No. {} ໄດ້ຖືກໂອນເຂົ້າໄປໃນໃບເກັບເງິນ POS ອື່ນແລ້ວ. ກະລຸນາເລືອກລະຫັດທີ່ຖືກຕ້ອງ., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,ແຖວ # {}: Serial Nos. {} ໄດ້ຖືກໂອນເຂົ້າໄປໃນໃບເກັບເງິນ POS ອື່ນແລ້ວ. ກະລຸນາເລືອກລະຫັດທີ່ຖືກຕ້ອງ., +Item Unavailable,ລາຍການບໍ່ມີ, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},ແຖວ # {}: ເລກ ລຳ ດັບ {} ບໍ່ສາມາດສົ່ງຄືນໄດ້ເນື່ອງຈາກມັນບໍ່ຖືກໂອນໃນໃບເກັບເງິນຕົ້ນສະບັບ {}, +Please set default Cash or Bank account in Mode of Payment {},ກະລຸນາຕັ້ງຄ່າເງີນສົດຫຼືບັນຊີທະນາຄານໃນຮູບແບບການ ຊຳ ລະເງິນ {}, +Please set default Cash or Bank account in Mode of Payments {},ກະລຸນາຕັ້ງຄ່າເງີນສົດຫລືບັນຊີທະນາຄານໃນຮູບແບບການ ຊຳ ລະເງິນ {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,ກະລຸນາຮັບປະກັນ {} ບັນຊີແມ່ນບັນຊີ Balance Sheet. ທ່ານສາມາດປ່ຽນບັນຊີຜູ້ປົກຄອງເຂົ້າໃນບັນຊີ Balance Sheet ຫຼືເລືອກບັນຊີອື່ນ., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,ກະລຸນາຮັບປະກັນ {} ບັນຊີແມ່ນບັນຊີທີ່ຕ້ອງຈ່າຍ. ປ່ຽນປະເພດບັນຊີໃຫ້ເປັນ Payable ຫຼືເລືອກບັນຊີອື່ນ., +Row {}: Expense Head changed to {} ,ແຖວ {}: ຫົວປ່ຽນແປງໃຊ້ເປັນ {}, +because account {} is not linked to warehouse {} ,ເພາະວ່າບັນຊີ {} ບໍ່ໄດ້ເຊື່ອມໂຍງກັບສາງ {}, +or it is not the default inventory account,ຫຼືມັນບໍ່ແມ່ນບັນຊີສິນຄ້າຄົງຄັງໃນຕອນຕົ້ນ, +Expense Head Changed,ລາຍຈ່າຍປ່ຽນຫົວ, +because expense is booked against this account in Purchase Receipt {},ເພາະວ່າຄ່າໃຊ້ຈ່າຍຈະຖືກຈອງຕໍ່ບັນຊີນີ້ໃນໃບຮັບເງິນຊື້ {}, +as no Purchase Receipt is created against Item {}. ,ຍ້ອນວ່າບໍ່ມີໃບເກັບເງິນການຊື້ຖືກສ້າງຂື້ນມາຕໍ່ກັບລາຍການ {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,ນີ້ແມ່ນເຮັດເພື່ອຈັດການບັນຊີ ສຳ ລັບກໍລະນີເມື່ອໃບຮັບເງິນຊື້ຖືກສ້າງຂື້ນຫລັງຈາກໃບເກັບເງິນຊື້, +Purchase Order Required for item {},ສັ່ງຊື້ສິນຄ້າທີ່ຕ້ອງການ ສຳ ລັບສິນຄ້າ {}, +To submit the invoice without purchase order please set {} ,ເພື່ອສົ່ງໃບເກັບເງິນໂດຍບໍ່ຕ້ອງສັ່ງຊື້ກະລຸນາ ກຳ ນົດ {}, +as {} in {},ເປັນ {} ໃນ {}, +Mandatory Purchase Order,ການສັ່ງຊື້ແບບບັງຄັບ, +Purchase Receipt Required for item {},ໃບຮັບເງິນການຊື້ທີ່ ຈຳ ເປັນ ສຳ ລັບລາຍການ {}, +To submit the invoice without purchase receipt please set {} ,"ເພື່ອສົ່ງໃບເກັບເງິນໂດຍບໍ່ໄດ້ຮັບໃບສັ່ງຊື້, ກະລຸນາຕັ້ງຄ່າ {}", +Mandatory Purchase Receipt,ໃບຮັບເງິນຊື້ແບບບັງຄັບ, +POS Profile {} does not belongs to company {},ໂປແກຼມ POS {} ບໍ່ຂຶ້ນກັບບໍລິສັດ {}, +User {} is disabled. Please select valid user/cashier,ຜູ້ໃຊ້ {} ຖືກປິດໃຊ້ງານ. ກະລຸນາເລືອກຜູ້ໃຊ້ / ຜູ້ເກັບເງິນທີ່ຖືກຕ້ອງ, +Row #{}: Original Invoice {} of return invoice {} is {}. ,ແຖວ # {}: ໃບເກັບເງິນຕົ້ນສະບັບ {} ຂອງໃບແຈ້ງ ໜີ້ ສົ່ງຄືນ {} ແມ່ນ {}., +Original invoice should be consolidated before or along with the return invoice.,ໃບເກັບເງິນຕົ້ນສະບັບຄວນຈະຖືກລວບລວມກ່ອນຫຼືພ້ອມກັບໃບເກັບເງິນຄືນ., +You can add original invoice {} manually to proceed.,ທ່ານສາມາດເພີ່ມໃບເກັບເງິນຕົ້ນສະບັບ {} ດ້ວຍຕົນເອງເພື່ອ ດຳ ເນີນການ., +Please ensure {} account is a Balance Sheet account. ,ກະລຸນາຮັບປະກັນ {} ບັນຊີແມ່ນບັນຊີ Balance Sheet., +You can change the parent account to a Balance Sheet account or select a different account.,ທ່ານສາມາດປ່ຽນບັນຊີຜູ້ປົກຄອງເຂົ້າໃນບັນຊີ Balance Sheet ຫຼືເລືອກບັນຊີອື່ນ., +Please ensure {} account is a Receivable account. ,ກະລຸນາຮັບປະກັນວ່າ {} ບັນຊີແມ່ນບັນຊີທີ່ຕ້ອງຍອມຮັບ., +Change the account type to Receivable or select a different account.,ປ່ຽນປະເພດບັນຊີໃຫ້ເປັນ Receivable ຫຼືເລືອກບັນຊີອື່ນ., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} ບໍ່ສາມາດຍົກເລີກໄດ້ເນື່ອງຈາກຈຸດທີ່ໄດ້ຮັບຈາກຄວາມພັກດີໄດ້ຖືກໄຖ່ແລ້ວ. ຍົກເລີກການ ທຳ ອິດ {} ບໍ່ {}, +already exists,ມີຢູ່ແລ້ວ, +POS Closing Entry {} against {} between selected period,POS ປິດການເຂົ້າ {} ຕໍ່ {} ລະຫວ່າງໄລຍະເວລາທີ່ເລືອກ, +POS Invoice is {},ໃບເກັບເງິນ POS ແມ່ນ {}, +POS Profile doesn't matches {},POS Profile ບໍ່ກົງກັບ {}, +POS Invoice is not {},ໃບເກັບເງິນ POS ບໍ່ແມ່ນ {}, +POS Invoice isn't created by user {},ໃບເກັບເງິນ POS ບໍ່ໄດ້ຖືກສ້າງຂື້ນໂດຍຜູ້ໃຊ້ {}, +Row #{}: {},ແຖວ # {}: {}, +Invalid POS Invoices,ໃບເກັບເງິນ POS ບໍ່ຖືກຕ້ອງ, +Please add the account to root level Company - {},ກະລຸນາເພີ່ມບັນຊີເຂົ້າໃນລະດັບຮາກຂອງບໍລິສັດ - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","ໃນຂະນະທີ່ສ້າງບັນຊີ ສຳ ລັບບໍລິສັດເດັກ {0}, ບັນຊີຜູ້ປົກຄອງ {1} ບໍ່ພົບ. ກະລຸນາສ້າງບັນຊີຜູ້ປົກຄອງໃນ COA ທີ່ສອດຄ້ອງກັນ", +Account Not Found,ບໍ່ພົບບັນຊີ, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","ໃນຂະນະທີ່ສ້າງບັນຊີ ສຳ ລັບບໍລິສັດເດັກ {0}, ບັນຊີຜູ້ປົກຄອງ {1} ພົບວ່າບັນຊີ ນຳ ໃຊ້.", +Please convert the parent account in corresponding child company to a group account.,ກະລຸນາປ່ຽນບັນຊີຜູ້ປົກຄອງໃນບໍລິສັດເດັກທີ່ສອດຄ້ອງກັນເຂົ້າໃນບັນຊີກຸ່ມ., +Invalid Parent Account,ບັນຊີພໍ່ແມ່ບໍ່ຖືກຕ້ອງ, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","ປ່ຽນຊື່ມັນຖືກອະນຸຍາດພຽງແຕ່ຜ່ານທາງບໍລິສັດແມ່ {0}, ເພື່ອຫລີກລ້ຽງຄວາມບໍ່ສອດຄ່ອງ.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","ຖ້າທ່ານ {0} {1} ປະລິມານຂອງລາຍການ {2}, ລະບົບ {3} ຈະຖືກ ນຳ ໃຊ້ໃນລາຍການ.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","ຖ້າທ່ານ {0} {1} ລາຍການທີ່ມີຄ່າ {2}, ໂຄງການ {3} ຈະຖືກ ນຳ ໃຊ້ໃນລາຍການ.", +"As the field {0} is enabled, the field {1} is mandatory.","ຍ້ອນວ່າພາກສະ ໜາມ {0} ຖືກເປີດໃຊ້, ພາກສະ ໜາມ {1} ແມ່ນ ຈຳ ເປັນ.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","ຍ້ອນວ່າພາກສະຫນາມ {0} ຖືກເປີດໃຊ້, ມູນຄ່າຂອງພາກສະ ໜາມ {1} ຄວນຈະສູງກວ່າ 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},ບໍ່ສາມາດຈັດສົ່ງສິນຄ້າ Serial No {0} ຂອງສິນຄ້າ {1} ຍ້ອນວ່າມັນຖືກສະຫງວນໄວ້ເພື່ອສັ່ງຂາຍເຕັມຮູບແບບ {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","ຄຳ ສັ່ງຂາຍ {0} ມີການສັ່ງຈອງ ສຳ ລັບສິນຄ້າ {1}, ທ່ານພຽງແຕ່ສາມາດຈັດສົ່ງ {1} ສຳ ລັບ {0} ເທົ່ານັ້ນ.", +{0} Serial No {1} cannot be delivered,{0} Serial No {1} ບໍ່ສາມາດຈັດສົ່ງໄດ້, +Row {0}: Subcontracted Item is mandatory for the raw material {1},ແຖວ {0}: ສິນຄ້າທີ່ໄດ້ຮັບການຮັບຮອງແມ່ນ ຈຳ ເປັນ ສຳ ລັບວັດຖຸດິບ {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","ຍ້ອນວ່າມີວັດຖຸດິບທີ່ພຽງພໍ, ບໍ່ ຈຳ ເປັນຕ້ອງຂໍວັດສະດຸ ສຳ ລັບສາງ {0}.", +" If you still want to proceed, please enable {0}.","ຖ້າທ່ານຍັງຕ້ອງການ ດຳ ເນີນການ, ກະລຸນາເປີດ {0}.", +The item referenced by {0} - {1} is already invoiced,ລາຍການທີ່ອ້າງອິງໂດຍ {0} - {1} ແມ່ນຖືກເອີ້ນເຂົ້າແລ້ວ, +Therapy Session overlaps with {0},Therapy Session ຊ້ ຳ ກັບ {0}, +Therapy Sessions Overlapping,ການປິ່ນປົວດ້ວຍການຊໍ້າຊ້ອນ, +Therapy Plans,ແຜນການປິ່ນປົວ, +"Item Code, warehouse, quantity are required on row {0}","ລະຫັດສິນຄ້າ, ຄັງສິນຄ້າ, ຈຳ ນວນທີ່ຕ້ອງການຢູ່ແຖວ {0}", +Get Items from Material Requests against this Supplier,ໄດ້ຮັບສິນຄ້າຈາກຂໍ້ຮຽກຮ້ອງດ້ານວັດຖຸຕໍ່ຜູ້ສະ ໜອງ ນີ້, +Enable European Access,ເປີດໃຊ້ງານ European Access, +Creating Purchase Order ...,ການສ້າງໃບສັ່ງຊື້ ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","ເລືອກຜູ້ສະ ໜອງ ສິນຄ້າຈາກຜູ້ສະ ໜອງ ສິນຄ້າເລີ່ມຕົ້ນຂອງລາຍການຂ້າງລຸ່ມນີ້. ໃນການເລືອກ, ຄຳ ສັ່ງຊື້ສິນຄ້າຈະຖືກຕໍ່ຕ້ານກັບສິນຄ້າທີ່ເປັນຂອງຜູ້ສະ ໜອງ ທີ່ຖືກຄັດເລືອກເທົ່ານັ້ນ.", +Row #{}: You must select {} serial numbers for item {}.,ແຖວ # {}: ທ່ານຕ້ອງເລືອກ {} ເລກ ລຳ ດັບ ສຳ ລັບລາຍການ {}., diff --git a/erpnext/translations/lt.csv b/erpnext/translations/lt.csv index 34eaee7f64..78571f9624 100644 --- a/erpnext/translations/lt.csv +++ b/erpnext/translations/lt.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Negali Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',"Negali atskaityti, kai kategorija skirta "Vertinimo" arba "Vaulation ir viso"", "Cannot delete Serial No {0}, as it is used in stock transactions","Negalite trinti Serijos Nr {0}, kaip ji yra naudojama akcijų sandorių", Cannot enroll more than {0} students for this student group.,Negalima registruotis daugiau nei {0} studentams šio studentų grupę., -Cannot find Item with this barcode,Neįmanoma rasti elemento su šiuo brūkšniniu kodu, Cannot find active Leave Period,Nepavyko rasti aktyvios palikimo laikotarpio, Cannot produce more Item {0} than Sales Order quantity {1},Negali gaminti daugiau Elementą {0} nei pardavimų užsakymų kiekio {1}, Cannot promote Employee with status Left,"Negalima reklamuoti darbuotojo, kurio statusas kairėje", @@ -690,7 +689,6 @@ Create Variants,Kurti variantus, "Create and manage daily, weekly and monthly email digests.","Kurkite ir tvarkykite savo dienos, savaitės ir mėnesio el suskaldyti.", Create customer quotes,Sukurti klientų citatos, Create rules to restrict transactions based on values.,"Sukurti taisykles, siekdama apriboti sandorius, pagrįstus vertybes.", -Created By,Sukurta, Created {0} scorecards for {1} between: ,"Sukurtos {0} rezultatų kortelės, skirtos {1}, tarp:", Creating Company and Importing Chart of Accounts,Kurti įmonę ir importuoti sąskaitų schemą, Creating Fees,Mokesčių kūrimas, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Sandėliavimo reikalingas prieš Pateikt For row {0}: Enter Planned Qty,Eilutėje {0}: įveskite numatytą kiekį, "For {0}, only credit accounts can be linked against another debit entry",Dėl {0} tik kredito sąskaitos gali būti susijęs su kitos debeto įrašą, "For {0}, only debit accounts can be linked against another credit entry","Dėl {0}, tik debeto sąskaitos gali būti susijęs su kitos kredito įrašą", -Form View,Formos peržiūra, Forum Activity,Forumo veikla, Free item code is not selected,Nemokamas prekės kodas nepasirinktas, Freight and Forwarding Charges,Krovinių ir ekspedijavimo mokesčiai, @@ -2638,7 +2635,6 @@ Send SMS,Siųsti SMS, Send mass SMS to your contacts,Siųsti masės SMS į jūsų kontaktus, Sensitivity,Jautrumas, Sent,siunčiami, -Serial #,Serijinis #, Serial No and Batch,Serijos Nr paketais, Serial No is mandatory for Item {0},Serijos Nr privaloma punkte {0}, Serial No {0} does not belong to Batch {1},Serijos numeris {0} nepriklauso paketui {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Sveiki atvykę į ERPNext, What do you need help with?,Ką reikia pagalbos?, What does it do?,Ką tai daro?, Where manufacturing operations are carried.,Kur gamybos operacijos atliekamos., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Kuriant sąskaitą vaikų įmonei {0}, pagrindinė sąskaita {1} nerasta. Sukurkite pagrindinę sąskaitą atitinkamame COA", White,baltas, Wire Transfer,pavedimu, WooCommerce Products,„WooCommerce“ produktai, @@ -3493,6 +3488,7 @@ Likes,mėgsta, Merge with existing,Sujungti su esama, Office,biuras, Orientation,orientacija, +Parent,tėvas, Passive,pasyvus, Payment Failed,Mokėjimo Nepavyko, Percent,procentai, @@ -3543,6 +3539,7 @@ Shift,Pamaina, Show {0},Rodyti {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Specialieji simboliai, išskyrus „-“, „#“, „.“, „/“, „{“ Ir „}“, neleidžiami įvardyti serijomis", Target Details,Tikslinė informacija, +{0} already has a Parent Procedure {1}.,{0} jau turi tėvų procedūrą {1}., API,API, Annual,metinis, Approved,patvirtinta, @@ -4241,7 +4238,6 @@ Download as JSON,Atsisiųsti kaip JSON, End date can not be less than start date,Galutinė data negali būti mažesnė už pradžios datą, For Default Supplier (Optional),Numatytam tiekėjui (neprivaloma), From date cannot be greater than To date,Nuo datos negali būti didesnis nei iki datos, -Get items from,Gauk elementus iš, Group by,Grupuoti pagal, In stock,Sandelyje, Item name,Daikto pavadinimas, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Kokybės atsiliepimo šablono parametras, Quality Goal,Kokybės tikslas, Monitoring Frequency,Stebėjimo dažnis, Weekday,Savaitės diena, -January-April-July-October,Sausis – balandis – liepa – spalis, -Revision and Revised On,Peržiūrėta ir persvarstyta, -Revision,Revizija, -Revised On,Peržiūrėta, Objectives,Tikslai, Quality Goal Objective,Kokybės tikslas, Objective,Tikslas, @@ -7574,7 +7566,6 @@ Parent Procedure,Tėvų procedūra, Processes,Procesai, Quality Procedure Process,Kokybės procedūros procesas, Process Description,Proceso aprašymas, -Child Procedure,Vaiko procedūra, Link existing Quality Procedure.,Susiekite esamą kokybės procedūrą., Additional Information,Papildoma informacija, Quality Review Objective,Kokybės peržiūros tikslas, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Pirkimui užsakyti tendencijos, Purchase Receipt Trends,Pirkimo kvito tendencijos, Purchase Register,pirkimo Registruotis, Quotation Trends,Kainų tendencijos, -Quoted Item Comparison,Cituojamas punktas Palyginimas, Received Items To Be Billed,Gauti duomenys turi būti apmokestinama, Qty to Order,Kiekis užsisakyti, Requested Items To Be Transferred,Pageidaujami daiktai turi būti perkeltos, @@ -9091,7 +9081,6 @@ Unmarked days,Nepažymėtos dienos, Absent Days,Nėra dienų, Conditions and Formula variable and example,Sąlygos ir formulės kintamasis ir pavyzdys, Feedback By,Atsiliepimus pateikė, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Gamybos skyrius, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Pagal numatytuosius nustatymus kliento vardas nustatomas pagal įvestą vardą ir pavardę. Jei norite, kad klientus pavadintų a", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Konfigūruokite numatytąjį kainoraštį kurdami naują pardavimo operaciją. Prekių kainos bus pateiktos iš šio Kainyno., @@ -9692,7 +9681,6 @@ Available Balance,Turimas balansas, Reserved Balance,Rezervuotas likutis, Uncleared Balance,Neaiškus balansas, Payment related to {0} is not completed,Su „{0}“ susijęs mokėjimas nėra baigtas, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,{0} eilutė: serijos Nr. {}. {} jau buvo perkeltas į kitą POS sąskaitą faktūrą. Pasirinkite galiojantį serijos Nr., Row #{}: Item Code: {} is not available under warehouse {}.,# Eilutė: {}: prekės kodas: {} nepasiekiamas sandėlyje {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,# Eilutė {}: atsargų kiekio nepakanka prekės kodui: {} po sandėliu {}. Galimas kiekis {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,"# Eilutė: {}: pasirinkite serijos numerį ir paketuokite elementą: {} arba pašalinkite jį, kad užbaigtumėte operaciją.", @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},{0} sandėlyje {1} kiekis nepasi Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,"Norėdami tęsti, įjunkite „Leisti neigiamą akciją“ akcijų nustatymuose arba sukurkite atsargų įrašą.", No Inpatient Record found against patient {0},Nerasta stacionaro įrašo prieš pacientą {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Stacionarių vaistų įsakymas {0} dėl pacientų susidūrimo {1} jau yra., +Allow In Returns,Leisti mainais, +Hide Unavailable Items,Slėpti nepasiekiamus elementus, +Apply Discount on Discounted Rate,Taikykite nuolaidą nuolaida, +Therapy Plan Template,Terapijos plano šablonas, +Fetching Template Details,Gaunama išsami šablono informacija, +Linked Item Details,Susieto elemento duomenys, +Therapy Types,Terapijos tipai, +Therapy Plan Template Detail,Terapijos plano šablono informacija, +Non Conformance,Neatitikimas, +Process Owner,Proceso savininkas, +Corrective Action,Taisomieji veiksmai, +Preventive Action,Prevencinis veiksmas, +Problem,Problema, +Responsible,Atsakingas, +Completion By,Baigė, +Process Owner Full Name,Proceso savininko vardas ir pavardė, +Right Index,Dešinysis indeksas, +Left Index,Kairysis rodyklė, +Sub Procedure,Sub procedūra, +Passed,Praėjo, +Print Receipt,Spausdinti kvitą, +Edit Receipt,Redaguoti kvitą, +Focus on search input,Sutelkite dėmesį į paieškos įvestį, +Focus on Item Group filter,Susitelkite į elementų grupės filtrą, +Checkout Order / Submit Order / New Order,Užsakymo užsakymas / pateikiamas užsakymas / naujas užsakymas, +Add Order Discount,Pridėti užsakymo nuolaidą, +Item Code: {0} is not available under warehouse {1}.,Prekės kodas: {0} nėra sandėlyje {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Serijos numeriai nepasiekiami {0} sandėlyje {1}. Pabandykite pakeisti sandėlį., +Fetched only {0} available serial numbers.,Gauta tik {0} galimi serijos numeriai., +Switch Between Payment Modes,Perjungti mokėjimo būdus, +Enter {0} amount.,Įveskite sumą {0}., +You don't have enough points to redeem.,"Jūs neturite pakankamai taškų, kuriuos norite išpirkti.", +You can redeem upto {0}.,Galite išpirkti iki {0}., +Enter amount to be redeemed.,"Įveskite sumą, kurią norite išpirkti.", +You cannot redeem more than {0}.,Negalite išpirkti daugiau nei {0}., +Open Form View,Atidarykite formos rodinį, +POS invoice {0} created succesfully,POS sąskaita faktūra {0} sukurta sėkmingai, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Prekės kodas nepakanka atsargų kiekiui: {0} sandėlyje {1}. Galimas kiekis {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Serijos numeris: {0} jau buvo perkeltas į kitą POS sąskaitą faktūrą., +Balance Serial No,Likutis Serijos Nr, +Warehouse: {0} does not belong to {1},Sandėlis: {0} nepriklauso {1}, +Please select batches for batched item {0},Pasirinkite paketines paketines prekes {0}, +Please select quantity on row {0},Pasirinkite kiekį {0} eilutėje, +Please enter serial numbers for serialized item {0},Įveskite serijinės prekės {0} serijos numerius, +Batch {0} already selected.,{0} paketas jau pasirinktas., +Please select a warehouse to get available quantities,"Pasirinkite sandėlį, kad gautumėte galimus kiekius", +"For transfer from source, selected quantity cannot be greater than available quantity",Perkėlimui iš šaltinio pasirinktas kiekis negali būti didesnis už turimą kiekį, +Cannot find Item with this Barcode,Nepavyksta rasti elemento su šiuo brūkšniniu kodu, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} yra privalomas. Galbūt valiutos keitimo įrašas nėra sukurtas {1} - {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,"{} pateikė su juo susietą turtą. Norėdami sukurti pirkimo grąžą, turite atšaukti turtą.", +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"Negalima atšaukti šio dokumento, nes jis susietas su pateiktu ištekliu {0}. Norėdami tęsti, atšaukite jį.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,{0} eilutė: serijos Nr. {} Jau buvo perkeltas į kitą POS sąskaitą faktūrą. Pasirinkite galiojantį serijos Nr., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,{0} eilutė: serijos Nr. {} Jau buvo perkeltos į kitą POS sąskaitą faktūrą. Pasirinkite galiojantį serijos Nr., +Item Unavailable,Elementas nepasiekiamas, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"{0} eilutė: serijos Nr. {} Negalima grąžinti, nes tai nebuvo padaryta pirminėje sąskaitoje faktūroje {}", +Please set default Cash or Bank account in Mode of Payment {},Nustatykite numatytąją grynųjų pinigų ar banko sąskaitą mokėjimo režimu {}, +Please set default Cash or Bank account in Mode of Payments {},Mokėjimo režimu nustatykite numatytąją grynųjų pinigų ar banko sąskaitą {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,"Įsitikinkite, kad {} paskyra yra balanso sąskaita. Galite pakeisti tėvų sąskaitą į balanso sąskaitą arba pasirinkti kitą sąskaitą.", +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,"Įsitikinkite, kad „{}“ paskyra yra mokėtina. Pakeiskite sąskaitos tipą į Mokėtinas arba pasirinkite kitą sąskaitą.", +Row {}: Expense Head changed to {} ,{Eilutė {}: išlaidų antraštė pakeista į {}, +because account {} is not linked to warehouse {} ,nes paskyra {} nesusieta su sandėliu {}, +or it is not the default inventory account,arba tai nėra numatytoji atsargų sąskaita, +Expense Head Changed,Išlaidų galva pakeista, +because expense is booked against this account in Purchase Receipt {},nes išlaidos šioje sąskaitoje yra įrašytos pirkimo kvite {}, +as no Purchase Receipt is created against Item {}. ,nes prekei {} nesudaromas pirkimo kvitas., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,"Tai daroma tvarkant apskaitą tais atvejais, kai pirkimo kvitas sukuriamas po pirkimo sąskaitos faktūros", +Purchase Order Required for item {},Būtinas prekės {} pirkimo užsakymas, +To submit the invoice without purchase order please set {} ,"Norėdami pateikti sąskaitą faktūrą be pirkimo užsakymo, nustatykite {}", +as {} in {},kaip {} {}, +Mandatory Purchase Order,Privalomas pirkimo užsakymas, +Purchase Receipt Required for item {},Būtinas prekės {} pirkimo kvitas, +To submit the invoice without purchase receipt please set {} ,"Norėdami pateikti sąskaitą faktūrą be pirkimo kvito, nustatykite {}", +Mandatory Purchase Receipt,Privalomas pirkimo kvitas, +POS Profile {} does not belongs to company {},POS profilis {} nepriklauso įmonei {}, +User {} is disabled. Please select valid user/cashier,Vartotojas {} yra išjungtas. Pasirinkite galiojantį vartotoją / kasininką, +Row #{}: Original Invoice {} of return invoice {} is {}. ,# Eilutė {}: grąžinimo sąskaitos faktūros {} originali sąskaita {} yra {}., +Original invoice should be consolidated before or along with the return invoice.,Sąskaitos originalas turėtų būti sujungtas prieš grąžinimo sąskaitą faktūrą arba kartu su ja., +You can add original invoice {} manually to proceed.,"Norėdami tęsti, rankiniu būdu galite pridėti sąskaitos faktūrą {} rankiniu būdu.", +Please ensure {} account is a Balance Sheet account. ,"Įsitikinkite, kad {} paskyra yra balanso sąskaita.", +You can change the parent account to a Balance Sheet account or select a different account.,Galite pakeisti tėvų sąskaitą į balanso sąskaitą arba pasirinkti kitą sąskaitą., +Please ensure {} account is a Receivable account. ,"Įsitikinkite, kad „{}“ paskyra yra gautina.", +Change the account type to Receivable or select a different account.,Pakeiskite sąskaitos tipą į Gautinas arba pasirinkite kitą sąskaitą., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},"„{}“ negalima atšaukti, nes išpirkti uždirbti lojalumo taškai. Pirmiausia atšaukite {} Ne {}", +already exists,jau egzistuoja, +POS Closing Entry {} against {} between selected period,POS uždarymo įrašas {} prieš {} tarp pasirinkto laikotarpio, +POS Invoice is {},POS sąskaita faktūra yra {}, +POS Profile doesn't matches {},POS profilis neatitinka {}, +POS Invoice is not {},POS sąskaita faktūra nėra {}, +POS Invoice isn't created by user {},POS sąskaitą faktūrą sukūrė ne vartotojas {}, +Row #{}: {},# Eilutė {}: {}, +Invalid POS Invoices,Neteisingos POS sąskaitos faktūros, +Please add the account to root level Company - {},Pridėkite paskyrą prie pagrindinio lygio įmonės - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Kuriant paskyrą vaikų įmonei {0}, tėvų paskyra {1} nerasta. Sukurkite tėvų sąskaitą atitinkamame COA", +Account Not Found,Paskyra nerasta, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Kuriant paskyros „Child Child“ {0} paskyrą, tėvų paskyra {1} rasta kaip knygos knyga.", +Please convert the parent account in corresponding child company to a group account.,Perverskite atitinkamos antrinės įmonės tėvų sąskaitą į grupės paskyrą., +Invalid Parent Account,Netinkama tėvų sąskaita, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Pervadinti jį leidžiama tik per pagrindinę įmonę {0}, kad būtų išvengta neatitikimų.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Jei {0} {1} prekės kiekius {2}, elementui bus taikoma schema {3}.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Jei {0} {1} verta elemento {2}, elementui bus pritaikyta schema {3}.", +"As the field {0} is enabled, the field {1} is mandatory.","Kadangi laukas {0} įgalintas, laukas {1} yra privalomas.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Kadangi laukas {0} įgalintas, lauko {1} vertė turėtų būti didesnė nei 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Nepavyksta pateikti serijos Nr. {0} prekės {1}, nes ji rezervuota viso pardavimo užsakymui {2}", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Pardavimo užsakyme {0} yra prekės rezervacija {1}, rezervuotą {1} galite pristatyti tik prieš {0}.", +{0} Serial No {1} cannot be delivered,{0} Serijos Nr. {1} pristatyti negalima, +Row {0}: Subcontracted Item is mandatory for the raw material {1},{0} eilutė: žaliavai privalomas subrangos elementas {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Kadangi žaliavų yra pakankamai, sandėliui {0} nereikia pateikti medžiagų užklausų.", +" If you still want to proceed, please enable {0}.","Jei vis tiek norite tęsti, įgalinkite {0}.", +The item referenced by {0} - {1} is already invoiced,"Elementas, nurodytas {0} - {1}, jau yra išrašytas", +Therapy Session overlaps with {0},Terapijos seansas sutampa su {0}, +Therapy Sessions Overlapping,Terapijos seansai sutampa, +Therapy Plans,Terapijos planai, +"Item Code, warehouse, quantity are required on row {0}","Prekės kodas, sandėlis, kiekis būtini {0} eilutėje", +Get Items from Material Requests against this Supplier,Gaukite elementus iš šio tiekėjo materialinių užklausų, +Enable European Access,Įgalinti Europos prieigą, +Creating Purchase Order ...,Kuriamas pirkimo užsakymas ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Pasirinkite tiekėją iš toliau nurodytų gaminių iš numatytųjų tiekėjų. Pasirinkus pirkimą, bus sudarytos tik prekės, priklausančios pasirinktam tiekėjui.", +Row #{}: You must select {} serial numbers for item {}.,# Eilutė {}: turite pasirinkti {} prekės serijos numerius {}., diff --git a/erpnext/translations/lv.csv b/erpnext/translations/lv.csv index c5ad2bfa93..cbf04855d0 100644 --- a/erpnext/translations/lv.csv +++ b/erpnext/translations/lv.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Nevar a Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',"Nevar atskaitīt, ja kategorija ir "vērtēšanas" vai "Vaulation un Total"", "Cannot delete Serial No {0}, as it is used in stock transactions","Nevar izdzēst Sērijas Nr {0}, jo tas tiek izmantots akciju darījumiem", Cannot enroll more than {0} students for this student group.,Nevar uzņemt vairāk nekā {0} studentiem šai studentu grupai., -Cannot find Item with this barcode,Nevar atrast vienumu ar šo svītrkodu, Cannot find active Leave Period,Nevar atrast aktīvo atlikušo periodu, Cannot produce more Item {0} than Sales Order quantity {1},Nevar ražot vairāk Vienību {0} nekā Pasūtījumu daudzums {1}, Cannot promote Employee with status Left,Nevar reklamēt Darbinieku ar statusu pa kreisi, @@ -690,7 +689,6 @@ Create Variants,Izveidot varianti, "Create and manage daily, weekly and monthly email digests.","Izveidot un pārvaldīt ikdienas, iknedēļas un ikmēneša e-pasta hidrolizātus.", Create customer quotes,Izveidot klientu citātus, Create rules to restrict transactions based on values.,"Izveidot noteikumus, lai ierobežotu darījumi, pamatojoties uz vērtībām.", -Created By,Izveidoja, Created {0} scorecards for {1} between: ,Izveidoja {0} rādītāju kartes par {1} starp:, Creating Company and Importing Chart of Accounts,Uzņēmuma izveidošana un kontu plāna importēšana, Creating Fees,Maksu izveidošana, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,"Par noliktava ir nepieciešams, pirms i For row {0}: Enter Planned Qty,Rindai {0}: ievadiet plānoto daudzumu, "For {0}, only credit accounts can be linked against another debit entry","Par {0}, tikai kredīta kontus var saistīt pret citu debeta ierakstu", "For {0}, only debit accounts can be linked against another credit entry","Par {0}, tikai debeta kontus var saistīt pret citu kredīta ierakstu", -Form View,Veidlapas skats, Forum Activity,Foruma aktivitāte, Free item code is not selected,Bezmaksas preces kods nav atlasīts, Freight and Forwarding Charges,Kravu un Ekspedīcijas maksājumi, @@ -2638,7 +2635,6 @@ Send SMS,Sūtīt SMS, Send mass SMS to your contacts,Sūtīt masu SMS saviem kontaktiem, Sensitivity,Jutīgums, Sent,Nosūtīts, -Serial #,Sērijas #, Serial No and Batch,Sērijas Nr un partijas, Serial No is mandatory for Item {0},Sērijas numurs ir obligāta postenī {0}, Serial No {0} does not belong to Batch {1},Sērijas numurs {0} nepieder partijai {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Laipni lūdzam ERPNext, What do you need help with?,Kas jums ir nepieciešama palīdzība ar?, What does it do?,Ko tas dod?, Where manufacturing operations are carried.,"Gadījumos, kad ražošanas darbības tiek veiktas.", -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Veidojot kontu bērnu uzņēmumam {0}, vecāku konts {1} nav atrasts. Lūdzu, izveidojiet vecāku kontu attiecīgajā COA", White,Balts, Wire Transfer,Wire Transfer, WooCommerce Products,WooCommerce produkti, @@ -3493,6 +3488,7 @@ Likes,Patīk, Merge with existing,Saplūst ar esošo, Office,Birojs, Orientation,orientēšanās, +Parent,Vecāks, Passive,Pasīvs, Payment Failed,maksājums neizdevās, Percent,Procents, @@ -3543,6 +3539,7 @@ Shift,Maiņa, Show {0},Rādīt {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Speciālās rakstzīmes, izņemot "-", "#", ".", "/", "{" Un "}", kas nav atļautas nosaukuma sērijās", Target Details,Mērķa informācija, +{0} already has a Parent Procedure {1}.,{0} jau ir vecāku procedūra {1}., API,API, Annual,Gada, Approved,Apstiprināts, @@ -4241,7 +4238,6 @@ Download as JSON,Lejupielādēt kā JSON, End date can not be less than start date,Beigu Datums nevar būt mazāks par sākuma datuma, For Default Supplier (Optional),Paredzētajam piegādātājam (neobligāti), From date cannot be greater than To date,No datuma nevar būt lielāka par datumu, -Get items from,Dabūtu preces no, Group by,Group By, In stock,Noliktavā, Item name,Vienības nosaukums, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Kvalitātes atsauksmes veidnes parametrs, Quality Goal,Kvalitātes mērķis, Monitoring Frequency,Monitoringa biežums, Weekday,Nedēļas diena, -January-April-July-October,Janvāris-aprīlis-jūlijs-oktobris, -Revision and Revised On,Pārskatīšana un pārskatīšana ieslēgta, -Revision,Pārskatīšana, -Revised On,Pārskatīts ieslēgts, Objectives,Mērķi, Quality Goal Objective,Kvalitātes mērķis, Objective,Objektīvs, @@ -7574,7 +7566,6 @@ Parent Procedure,Vecāku procedūra, Processes,Procesi, Quality Procedure Process,Kvalitātes procedūras process, Process Description,Procesa apraksts, -Child Procedure,Bērna procedūra, Link existing Quality Procedure.,Saistīt esošo kvalitātes procedūru., Additional Information,Papildus informācija, Quality Review Objective,Kvalitātes pārskata mērķis, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Pirkuma pasūtījuma tendences, Purchase Receipt Trends,Pirkuma čeka tendences, Purchase Register,Pirkuma Reģistrēties, Quotation Trends,Piedāvājumu tendences, -Quoted Item Comparison,Citēts Prece salīdzinājums, Received Items To Be Billed,Saņemtie posteņi ir Jāmaksā, Qty to Order,Daudz pasūtījuma, Requested Items To Be Transferred,Pieprasīto pozīcijas jāpārskaita, @@ -9091,7 +9081,6 @@ Unmarked days,Nezīmētas dienas, Absent Days,Nebūšanas dienas, Conditions and Formula variable and example,Nosacījumi un Formulas mainīgais un piemērs, Feedback By,Atsauksmes Autors, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.GGGG .-. MM .-. DD.-, Manufacturing Section,Ražošanas nodaļa, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Pēc noklusējuma klienta vārds tiek iestatīts atbilstoši ievadītajam vārdam. Ja vēlaties, lai klientus nosauc a", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,"Konfigurējiet noklusējuma cenrādi, veidojot jaunu pārdošanas darījumu. Vienību cenas tiks iegūtas no šī Cenrāža.", @@ -9692,7 +9681,6 @@ Available Balance,Pieejamais atlikums, Reserved Balance,Rezervētais atlikums, Uncleared Balance,Neskaidrs atlikums, Payment related to {0} is not completed,"Maksājums, kas saistīts ar {0}, nav pabeigts", -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,"#. Rinda: kārtas numurs {}. {} jau ir pārskaitīts uz citu POS rēķinu. Lūdzu, izvēlieties derīgu sērijas nr.", Row #{}: Item Code: {} is not available under warehouse {}.,#. Rinda: preces kods: {} nav pieejams noliktavā {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,#. Rinda: krājuma daudzums nav pietiekams preces kodam: {} zem noliktavas {}. Pieejamais daudzums {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,"#. Rinda: Lūdzu, atlasiet sērijas nr. Un sēriju pret vienumu: {} vai noņemiet to, lai pabeigtu darījumu.", @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Daudzums nav pieejams vietnei {0 Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,"Lūdzu, iespējojiet opciju Atļaut negatīvo krājumu krājumu iestatījumos vai izveidojiet krājuma ievadi, lai turpinātu.", No Inpatient Record found against patient {0},Netika atrasts neviens pacienta stacionāra reģistrs {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Stacionārs zāļu pasūtījums {0} pret pacienta sastapšanos {1} jau pastāv., +Allow In Returns,Atļaut pretī, +Hide Unavailable Items,Paslēpt nepieejamos vienumus, +Apply Discount on Discounted Rate,Piesakies atlaidi diskontētajai likmei, +Therapy Plan Template,Terapijas plāna veidne, +Fetching Template Details,Notiek veidnes detaļu ielāde, +Linked Item Details,Saistītās preces informācija, +Therapy Types,Terapijas veidi, +Therapy Plan Template Detail,Terapijas plāna veidnes detaļas, +Non Conformance,Nepakļaušanās, +Process Owner,Procesa īpašnieks, +Corrective Action,Korektīvie pasākumi, +Preventive Action,Profilaktiskā darbība, +Problem,Problēma, +Responsible,Atbildīgs, +Completion By,Pabeigšana, +Process Owner Full Name,Procesa īpašnieka pilns vārds, +Right Index,Labais indekss, +Left Index,Kreisais rādītājs, +Sub Procedure,Apakšprocedūra, +Passed,Izturēts, +Print Receipt,Drukāt kvīti, +Edit Receipt,Rediģēt kvīti, +Focus on search input,Koncentrējieties uz meklēšanas ievadi, +Focus on Item Group filter,Koncentrējieties uz vienumu grupas filtru, +Checkout Order / Submit Order / New Order,Checkout Order / Submit Order / New Order, +Add Order Discount,Pievienojiet pasūtījuma atlaidi, +Item Code: {0} is not available under warehouse {1}.,Preces kods: {0} nav pieejams noliktavā {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,"Sērijas numuri nav pieejami vienumam {0} zem noliktavas {1}. Lūdzu, mēģiniet nomainīt noliktavu.", +Fetched only {0} available serial numbers.,Iegūti tikai {0} pieejamie sērijas numuri., +Switch Between Payment Modes,Pārslēgšanās starp maksājumu veidiem, +Enter {0} amount.,Ievadiet summu {0}., +You don't have enough points to redeem.,"Jums nav pietiekami daudz punktu, lai tos izpirktu.", +You can redeem upto {0}.,Varat izmantot līdz pat {0}., +Enter amount to be redeemed.,Ievadiet izpērkamo summu., +You cannot redeem more than {0}.,Jūs nevarat izmantot vairāk par {0}., +Open Form View,Atvērt veidlapas skatu, +POS invoice {0} created succesfully,POS rēķins {0} izveidots veiksmīgi, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Krājuma daudzums ir nepietiekams preces kodam: {0} zem noliktavas {1}. Pieejamais daudzums {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Sērijas numurs: {0} jau ir pārskaitīts uz citu POS rēķinu., +Balance Serial No,Bilances sērijas Nr, +Warehouse: {0} does not belong to {1},Noliktava: {0} nepieder pie {1}, +Please select batches for batched item {0},"Lūdzu, atlasiet sērijveida preces partijas {0}", +Please select quantity on row {0},"Lūdzu, atlasiet daudzumu {0}. Rindā", +Please enter serial numbers for serialized item {0},"Lūdzu, ievadiet sērijveida preces {0} sērijas numurus", +Batch {0} already selected.,Partija {0} jau ir atlasīta., +Please select a warehouse to get available quantities,"Lūdzu, izvēlieties noliktavu, lai iegūtu pieejamos daudzumus", +"For transfer from source, selected quantity cannot be greater than available quantity",Pārsūtīšanai no avota izvēlētais daudzums nevar būt lielāks par pieejamo daudzumu, +Cannot find Item with this Barcode,Nevar atrast vienumu ar šo svītrkodu, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} ir obligāta. Varbūt valūtas maiņas ieraksts nav izveidots no {1} uz {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,"{} ir iesniedzis ar to saistītus īpašumus. Lai izveidotu pirkuma atdevi, jums ir jāatceļ aktīvi.", +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"Šo dokumentu nevar atcelt, jo tas ir saistīts ar iesniegto īpašumu {0}. Lūdzu, atceliet to, lai turpinātu.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,"#. Rinda: sērijas numurs {} jau ir transakts citā POS rēķinā. Lūdzu, izvēlieties derīgu sērijas nr.", +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,"Rinda Nr. {}: Sērijas numuri {} jau ir pārskaitīti uz citu POS rēķinu. Lūdzu, izvēlieties derīgu sērijas nr.", +Item Unavailable,Vienums nav pieejams, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"#. Rinda: kārtas numuru {} nevar atgriezt, jo tas netika darīts sākotnējā rēķinā {}", +Please set default Cash or Bank account in Mode of Payment {},"Lūdzu, norēķinu režīmā iestatiet noklusējuma skaidras naudas vai bankas kontu {}", +Please set default Cash or Bank account in Mode of Payments {},"Maksājumu režīmā, lūdzu, iestatiet noklusējuma skaidras naudas vai bankas kontu {}", +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,"Lūdzu, pārliecinieties, ka {} konts ir Bilances konts. Varat mainīt vecāku kontu uz Bilances kontu vai izvēlēties citu kontu.", +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,"Lūdzu, pārliecinieties, ka {} konts ir apmaksājams konts. Mainiet konta veidu uz Maksājams vai atlasiet citu kontu.", +Row {}: Expense Head changed to {} ,{}. Rinda: izdevumu daļa mainīta uz {}, +because account {} is not linked to warehouse {} ,jo konts {} nav saistīts ar noliktavu {}, +or it is not the default inventory account,vai arī tas nav noklusējuma krājumu konts, +Expense Head Changed,Izdevumu galva mainīta, +because expense is booked against this account in Purchase Receipt {},jo izdevumi tiek iegrāmatoti šajā kontā pirkuma čekā {}, +as no Purchase Receipt is created against Item {}. ,tā kā pret preci {} netiek izveidota pirkuma kvīts., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,"Tas tiek darīts, lai apstrādātu gadījumus, kad pēc pirkuma rēķina tiek izveidota pirkuma kvīts", +Purchase Order Required for item {},Obligāts pirkuma pasūtījums vienumam {}, +To submit the invoice without purchase order please set {} ,"Lai iesniegtu rēķinu bez pirkuma pasūtījuma, lūdzu, iestatiet {}", +as {} in {},kā {}, +Mandatory Purchase Order,Obligāts pirkuma pasūtījums, +Purchase Receipt Required for item {},Nepieciešama vienuma {} pirkuma kvīts, +To submit the invoice without purchase receipt please set {} ,"Lai iesniegtu rēķinu bez pirkuma čeka, lūdzu, iestatiet {}", +Mandatory Purchase Receipt,Obligāta pirkuma kvīts, +POS Profile {} does not belongs to company {},POS profils {} nepieder uzņēmumam {}, +User {} is disabled. Please select valid user/cashier,"Lietotājs {} ir atspējots. Lūdzu, atlasiet derīgu lietotāju / kasieri", +Row #{}: Original Invoice {} of return invoice {} is {}. ,#. Rinda: atgriešanas rēķina sākotnējais rēķins {} ir {}., +Original invoice should be consolidated before or along with the return invoice.,Rēķina oriģināls jāapvieno pirms atgriešanas rēķina vai kopā ar to., +You can add original invoice {} manually to proceed.,"Lai turpinātu, rēķinu oriģinālu varat pievienot {} manuāli.", +Please ensure {} account is a Balance Sheet account. ,"Lūdzu, pārliecinieties, ka {} konts ir Bilances konts.", +You can change the parent account to a Balance Sheet account or select a different account.,Varat mainīt vecāku kontu uz Bilances kontu vai izvēlēties citu kontu., +Please ensure {} account is a Receivable account. ,"Lūdzu, pārliecinieties, ka {} konts ir debitoru konts.", +Change the account type to Receivable or select a different account.,Mainiet konta veidu uz Debitori vai atlasiet citu kontu., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},"{} nevar atcelt, jo nopelnītie lojalitātes punkti ir izpirkti. Vispirms atceliet {} Nē {}", +already exists,jau eksistē, +POS Closing Entry {} against {} between selected period,POS slēgšanas ieraksts {} pret {} starp atlasīto periodu, +POS Invoice is {},POS rēķins ir {}, +POS Profile doesn't matches {},POS profils neatbilst {}, +POS Invoice is not {},POS rēķins nav {}, +POS Invoice isn't created by user {},POS rēķinu nav izveidojis lietotājs {}, +Row #{}: {},#. Rinda: {}, +Invalid POS Invoices,Nederīgi POS rēķini, +Please add the account to root level Company - {},"Lūdzu, pievienojiet kontu saknes līmeņa uzņēmumam - {}", +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Veidojot kontu pakārtotajam uzņēmumam {0}, vecāku konts {1} nav atrasts. Lūdzu, izveidojiet vecāku kontu attiecīgajā COA", +Account Not Found,Konts nav atrasts, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Veidojot kontu pakārtotajam uzņēmumam {0}, vecāku konts {1} tika atrasts kā virsgrāmatas konts.", +Please convert the parent account in corresponding child company to a group account.,"Lūdzu, konvertējiet vecāku kontu attiecīgajā pakārtotajā uzņēmumā par grupas kontu.", +Invalid Parent Account,Nederīgs vecāku konts, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Pārdēvēšana ir atļauta tikai ar mātes uzņēmuma {0} starpniecību, lai izvairītos no neatbilstības.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Ja {0} {1} vienuma daudzumi ir {2}, vienumam tiks piemērota shēma {3}.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Ja esat {0} {1} vērts vienumu {2}, vienumam tiks piemērota shēma {3}.", +"As the field {0} is enabled, the field {1} is mandatory.","Tā kā lauks {0} ir iespējots, lauks {1} ir obligāts.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Tā kā lauks {0} ir iespējots, lauka {1} vērtībai jābūt lielākai par 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Nevar piegādāt preces {1} sērijas numuru {1}, jo tas ir rezervēts pilnas pārdošanas pasūtījumam {2}", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Pārdošanas pasūtījumā {0} ir rezervācija vienumam {1}, rezervēto {1} varat piegādāt tikai pret {0}.", +{0} Serial No {1} cannot be delivered,{0} Sērijas Nr. {1} nevar piegādāt, +Row {0}: Subcontracted Item is mandatory for the raw material {1},{0}. Rinda: izejvielai ir obligāti jānodrošina apakšlīguma priekšmets {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Tā kā izejvielu ir pietiekami daudz, materiālu pieprasījums nav nepieciešams noliktavai {0}.", +" If you still want to proceed, please enable {0}.","Ja joprojām vēlaties turpināt, lūdzu, iespējojiet {0}.", +The item referenced by {0} - {1} is already invoiced,"Vienumam, uz kuru atsaucas {0} - {1}, jau ir izrakstīts rēķins", +Therapy Session overlaps with {0},Terapijas sesija pārklājas ar {0}, +Therapy Sessions Overlapping,Terapijas sesijas pārklājas, +Therapy Plans,Terapijas plāni, +"Item Code, warehouse, quantity are required on row {0}","Rindā {0} ir nepieciešams preces kods, noliktava un daudzums", +Get Items from Material Requests against this Supplier,Iegūstiet preces no materiāliem pieprasījumiem pret šo piegādātāju, +Enable European Access,Iespējot Eiropas piekļuvi, +Creating Purchase Order ...,Notiek pirkuma pasūtījuma izveide ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Izvēlieties piegādātāju no tālāk norādīto vienumu noklusējuma piegādātājiem. Pēc izvēles tiks veikts pirkuma pasūtījums tikai par precēm, kas pieder izvēlētajam piegādātājam.", +Row #{}: You must select {} serial numbers for item {}.,#. Rinda: jums jāizvēlas {} vienuma sērijas numuri {}., diff --git a/erpnext/translations/mk.csv b/erpnext/translations/mk.csv index d3297be6a6..7008025534 100644 --- a/erpnext/translations/mk.csv +++ b/erpnext/translations/mk.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',Не м Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',не може да се одбие кога категорија е наменета за "оценка" или "Vaulation и вкупно", "Cannot delete Serial No {0}, as it is used in stock transactions","Не можат да избришат сериски Не {0}, како што се користи во акции трансакции", Cannot enroll more than {0} students for this student group.,Не може да се запишат повеќе од {0} студентите за оваа група студенти., -Cannot find Item with this barcode,Не можам да ја пронајдам Ставката со овој баркод, Cannot find active Leave Period,Не може да се најде активен период на напуштање, Cannot produce more Item {0} than Sales Order quantity {1},Не може да произведе повеќе од ставка {0} од количина {1} во Продажна нарачка, Cannot promote Employee with status Left,Не може да се промовира вработениот со статус Лево, @@ -690,7 +689,6 @@ Create Variants,Креирај варијанти, "Create and manage daily, weekly and monthly email digests.","Креирање и управување со дневни, неделни и месечни Е-содржините.", Create customer quotes,Креирај понуди на клиентите, Create rules to restrict transactions based on values.,Создаде правила за ограничување на трансакции врз основа на вредности., -Created By,Создадена од страна, Created {0} scorecards for {1} between: ,Создадени {0} броеви за карти за {1} помеѓу:, Creating Company and Importing Chart of Accounts,Создавање компанија и увоз на табела на сметки, Creating Fees,Создавање такси, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,За Магацински се бара For row {0}: Enter Planned Qty,За ред {0}: Внесете го планираното количество, "For {0}, only credit accounts can be linked against another debit entry","За {0}, само кредитни сметки може да се поврзат против друг запис дебитна", "For {0}, only debit accounts can be linked against another credit entry","За {0}, само задолжува сметки може да се поврзат против друга кредитна влез", -Form View,Преглед на форма, Forum Activity,Форум активност, Free item code is not selected,Кодот за бесплатна ставка не е избран, Freight and Forwarding Charges,Товар и товар пријави, @@ -2638,7 +2635,6 @@ Send SMS,Испрати СМС, Send mass SMS to your contacts,Испрати маса SMS порака на вашите контакти, Sensitivity,Чувствителност, Sent,Испрати, -Serial #,Сериски #, Serial No and Batch,Сериски Не и серија, Serial No is mandatory for Item {0},Сериски Не е задолжително за Точка {0}, Serial No {0} does not belong to Batch {1},Сериската број {0} не припаѓа на групата {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Добредојдовте на ERPNext, What do you need help with?,Што ви треба помош?, What does it do?,Што да направам?, Where manufacturing operations are carried.,Каде што се врши производните операции., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Додека создавате сметка за дете Компанија {0}, сметката за родители {1} не е пронајдена. Ве молиме, креирајте ја матичната сметка во соодветниот ЦОА", White,Бела, Wire Transfer,Wire Transfer, WooCommerce Products,Производи на WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Допаѓања, Merge with existing,Се спои со постојната, Office,Канцеларија, Orientation,ориентација, +Parent,Родител, Passive,Пасивни, Payment Failed,плаќање успеав, Percent,Проценти, @@ -3543,6 +3539,7 @@ Shift,Смена, Show {0},Покажи {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Не се дозволени специјални карактери освен "-", "#", ".", "/", "{" И "}" во сериите за именување", Target Details,Цели детали, +{0} already has a Parent Procedure {1}.,{0} веќе има Матична постапка {1}., API,API, Annual,Годишен, Approved,Одобрени, @@ -4241,7 +4238,6 @@ Download as JSON,Преземете како JSON, End date can not be less than start date,Крајниот датум не може да биде помал од датумот на почеток, For Default Supplier (Optional),За стандарден добавувач (опционално), From date cannot be greater than To date,Од датумот не може да биде поголем од датум, -Get items from,Се предмети од, Group by,Со група, In stock,На залиха, Item name,Точка Име, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Параметар за образец за Quality Goal,Цел на квалитетот, Monitoring Frequency,Фреквенција на набудување, Weekday,Неделен ден, -January-April-July-October,Јануари-април-јули-октомври, -Revision and Revised On,Ревизија и ревидирање на, -Revision,Ревизија, -Revised On,Ревидирано на, Objectives,Цели, Quality Goal Objective,Цел на квалитетот на целта, Objective,Цел, @@ -7574,7 +7566,6 @@ Parent Procedure,Родителска постапка, Processes,Процеси, Quality Procedure Process,Процес на постапка за квалитет, Process Description,Опис на процесот, -Child Procedure,Постапка за деца, Link existing Quality Procedure.,Поврзете ја постојната процедура за квалитет., Additional Information,дополнителни информации, Quality Review Objective,Цел на преглед на квалитетот, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Нарачка трендови, Purchase Receipt Trends,Купување Потврда трендови, Purchase Register,Купување Регистрирај се, Quotation Trends,Трендови на Понуди, -Quoted Item Comparison,Цитирано Точка споредба, Received Items To Be Billed,Примените предмети да бидат фактурирани, Qty to Order,Количина да нарачате, Requested Items To Be Transferred,Бара предмети да бидат префрлени, @@ -9091,7 +9081,6 @@ Unmarked days,Необележани денови, Absent Days,Отсутни денови, Conditions and Formula variable and example,Услови и формула променлива и пример, Feedback By,Повратни информации од, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYYY .-. ММ .-. Д.Д.-, Manufacturing Section,Секција за производство, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Стандардно, името на клиентот е поставено според внесеното полно име. Ако сакате клиентите да бидат именувани од а", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Конфигурирајте го стандардниот ценовник кога креирате нова продажна трансакција. Цените на артиклите ќе бидат земени од овој Ценовник., @@ -9692,7 +9681,6 @@ Available Balance,Расположливо салдо, Reserved Balance,Резервиран биланс, Uncleared Balance,Нејасен биланс, Payment related to {0} is not completed,Плаќањето поврзано со {0} не е завршено, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Ред # {}: Сериски број {}. {} веќе е пренесена во друга ПОС-фактура. Ве молиме изберете важечки сериски бр., Row #{}: Item Code: {} is not available under warehouse {}.,Ред # {}: Шифра на ставка: {} не е достапна под магацин {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Ред # {}: Количината на залиха не е доволна за Кодот на артиклот: {} под магацин {}. Достапна количина {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,"Ред # {}: Ве молиме, изберете сериски број и група против ставка: {} или отстранете ја за да ја завршите трансакцијата.", @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Количината не е д Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Овозможете Дозволете негативна залиха во поставките на акциите или создадете упис на акции за да продолжите., No Inpatient Record found against patient {0},Не е пронајден запис за пациенти против пациент {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Наредба за стационарни лекови {0} против средба со пациенти {1} веќе постои., +Allow In Returns,Дозволи за возврат, +Hide Unavailable Items,Сокриј ги недостапните ставки, +Apply Discount on Discounted Rate,Примени попуст на попуст, +Therapy Plan Template,Шаблон на план за терапија, +Fetching Template Details,Преземање на детали за образецот, +Linked Item Details,Детали за поврзаната ставка, +Therapy Types,Видови на терапија, +Therapy Plan Template Detail,Детал за образецот на планот за терапија, +Non Conformance,Не се усогласи, +Process Owner,Сопственик на процес, +Corrective Action,Поправна акција, +Preventive Action,Превентивна акција, +Problem,Проблем, +Responsible,Одговорен, +Completion By,Завршување од, +Process Owner Full Name,Целосно име на сопственикот на процесот, +Right Index,Десен индекс, +Left Index,Лев индекс, +Sub Procedure,Подпроцедура, +Passed,Помина, +Print Receipt,Потврда за печатење, +Edit Receipt,Уредете ја потврдата, +Focus on search input,Фокусирајте се на влезот за пребарување, +Focus on Item Group filter,Фокусирајте се на филтерот за група ставки, +Checkout Order / Submit Order / New Order,Нарачка за исплата / Доставете порачка / Нова нарачка, +Add Order Discount,Додадете попуст на нарачката, +Item Code: {0} is not available under warehouse {1}.,Код на ставка: {0} не е достапен под складиштето {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,"Сериските броеви се недостапни за Точката {0} под магацин {1}. Ве молиме, обидете се да го смените складиштето.", +Fetched only {0} available serial numbers.,Набавени се само {0} достапни сериски броеви., +Switch Between Payment Modes,Префрлување помеѓу режимите на плаќање, +Enter {0} amount.,Внесете {0} износ., +You don't have enough points to redeem.,Немате доволно поени за откуп., +You can redeem upto {0}.,Може да активирате до {0}., +Enter amount to be redeemed.,Внесете износ што треба да се откупи., +You cannot redeem more than {0}.,Не можете да откупите повеќе од {0}., +Open Form View,Отворете го Погледот на формата, +POS invoice {0} created succesfully,ПОС-фактурата {0} е создадена успешно, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Количината на залиха не е доволна за кодот на артиклот: {0} под магацин {1}. Достапна количина {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Сериски број: {0} веќе е пренесен во друга ПОС-фактура., +Balance Serial No,Биланс Сериски бр, +Warehouse: {0} does not belong to {1},Складиште: {0} не припаѓа на {1}, +Please select batches for batched item {0},"Ве молиме, изберете серии за сериската ставка {0}", +Please select quantity on row {0},Изберете ја количината на редот {0}, +Please enter serial numbers for serialized item {0},Внесете сериски броеви за сериската ставка {0}, +Batch {0} already selected.,Серијата {0} е веќе избрана., +Please select a warehouse to get available quantities,Ве молиме изберете магацин за да добиете достапни количини, +"For transfer from source, selected quantity cannot be greater than available quantity","За пренос од извор, избраната количина не може да биде поголема од достапната количина", +Cannot find Item with this Barcode,Не можам да ја пронајдам ставката со овој баркод, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} е задолжително. Можеби записот за размена на валути не е создаден за {1} до {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} достави средства поврзани со него. Треба да ги откажете средствата за да создадете поврат на набавката., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Не може да се откаже овој документ бидејќи е поврзан со доставеното средство {0}. Откажете го за да продолжите., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Ред # {}: Серискиот број {} веќе е пренесен во друга ПОС-фактура. Ве молиме изберете важечки сериски бр., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Ред # {}: Бројот на сериите. {} Веќе е пренесен во друга ПОС-фактура. Ве молиме изберете важечки сериски бр., +Item Unavailable,Ставката е недостапна, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Ред # {}: Серискиот број {} не може да се врати бидејќи не е извршен во оригиналната фактура {}, +Please set default Cash or Bank account in Mode of Payment {},Поставете стандардна готовина или банкарска сметка во начинот на плаќање {}, +Please set default Cash or Bank account in Mode of Payments {},Поставете стандардна готовина или банкарска сметка во начинот на плаќање {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Уверете се дека сметката {} е сметка за Биланс на состојба. Може да ја смените матичната сметка во сметка на Биланс на состојба или да изберете друга сметка., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Уверете се дека сметката {} е сметка за плаќање. Променете го типот на сметката во Платено или изберете друга сметка., +Row {}: Expense Head changed to {} ,Ред {}: Главата на трошоците е сменета во {}, +because account {} is not linked to warehouse {} ,бидејќи сметката {} не е поврзана со магацин {}, +or it is not the default inventory account,или не е стандардна сметка за залихи, +Expense Head Changed,Главата на трошоците е сменета, +because expense is booked against this account in Purchase Receipt {},бидејќи трошокот е резервиран наспроти оваа сметка во Потврда за набавка {}, +as no Purchase Receipt is created against Item {}. ,бидејќи не е создадена потврда за набавка наспроти ставката {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Ова е направено за да се справи со сметководството за случаите кога Потврдата за набавка е креирана по Фактурата за набавка, +Purchase Order Required for item {},Потребна е нарачка за набавка за ставка {}, +To submit the invoice without purchase order please set {} ,"За да ја доставите фактурата без нарачка, поставете {}", +as {} in {},како во {}, +Mandatory Purchase Order,Задолжителен налог за набавка, +Purchase Receipt Required for item {},Потребна е потврда за набавка за ставка {}, +To submit the invoice without purchase receipt please set {} ,"За да ја доставите фактурата без потврда за набавка, поставете {}", +Mandatory Purchase Receipt,Потврда за задолжителна набавка, +POS Profile {} does not belongs to company {},ПОС-профилот {} не припаѓа на компанијата {}, +User {} is disabled. Please select valid user/cashier,Корисникот {} е оневозможен. Ве молиме изберете валиден корисник / благајник, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Ред # {}: Оригиналната фактура {} на фактурата за поврат {} е {}., +Original invoice should be consolidated before or along with the return invoice.,Оригиналната фактура треба да се консолидира пред или заедно со повратната фактура., +You can add original invoice {} manually to proceed.,Можете да додадете оригинална фактура {} рачно за да продолжите., +Please ensure {} account is a Balance Sheet account. ,Уверете се дека сметката {} е сметка за Биланс на состојба., +You can change the parent account to a Balance Sheet account or select a different account.,Може да ја смените матичната сметка во сметка на Биланс на состојба или да изберете друга сметка., +Please ensure {} account is a Receivable account. ,Уверете се дека сметката {} е сметка за побарување., +Change the account type to Receivable or select a different account.,Променете го типот на сметка во Побарување или изберете друга сметка., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} не може да се откаже бидејќи се откупени заработените поени на лојалност. Прво откажете го {} Не {}, +already exists,веќе постои, +POS Closing Entry {} against {} between selected period,Влез за затворање ПОС {} против {} помеѓу избраниот период, +POS Invoice is {},ПОС-фактурата е {}, +POS Profile doesn't matches {},ПОС-профилот не се совпаѓа со {}, +POS Invoice is not {},ПОС-фактурата не е {}, +POS Invoice isn't created by user {},ПОС-фактурата не е креирана од корисникот {}, +Row #{}: {},Ред # {}: {}, +Invalid POS Invoices,Неважечки ПОС-фактури, +Please add the account to root level Company - {},"Ве молиме, додајте ја сметката на ниво на корен - {}", +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Додека создавате сметка за Детска компанија {0}, родителската сметка {1} не е пронајдена. Ве молиме, креирајте ја матичната сметка во соодветната СОA", +Account Not Found,Сметката не е пронајдена, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Додека создавате сметка за Детска компанија {0}, родителската сметка {1} се најде како главна сметка.", +Please convert the parent account in corresponding child company to a group account.,"Ве молиме, претворете ја матичната сметка во соодветната компанија за деца во групна сметка.", +Invalid Parent Account,Невалидна родителска сметка, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Преименувањето е дозволено само преку матичната компанија {0}, за да се избегне несовпаѓање.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Ако {0} {1} количини на ставката {2} имате, шемата {3} ќе се примени на артиклот.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Ако {0} {1} вреди ставка {2}, шемата {3} ќе се примени на ставката.", +"As the field {0} is enabled, the field {1} is mandatory.","Бидејќи полето {0} е овозможено, полето {1} е задолжително.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Бидејќи полето {0} е овозможено, вредноста на полето {1} треба да биде повеќе од 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Не може да се достави серискиот број {0} од ставката {1} бидејќи е резервиран за целосна пополнување на нарачката за продажба {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Нарачката за продажба {0} има резервација за ставката {1}, може да доставите резервирани само {1} наспроти {0}.", +{0} Serial No {1} cannot be delivered,{0} Серискиот број {1} не може да се испорача, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Ред {0}: Поткажаната ставка е задолжителна за суровината {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Бидејќи има доволно суровини, материјалното барање не е потребно за складиштето {0}.", +" If you still want to proceed, please enable {0}.","Ако сè уште сакате да продолжите, овозможете {0}.", +The item referenced by {0} - {1} is already invoiced,Ставката на која се повикуваат {0} - {1} е веќе фактурирана, +Therapy Session overlaps with {0},Сесијата за терапија се преклопува со {0}, +Therapy Sessions Overlapping,Сесии за терапија што се преклопуваат, +Therapy Plans,Планови за терапија, +"Item Code, warehouse, quantity are required on row {0}","Кодот на објектот, складиштето, количината се потребни на редот {0}", +Get Items from Material Requests against this Supplier,Набавете предмети од материјални барања против овој добавувач, +Enable European Access,Овозможете европски пристап, +Creating Purchase Order ...,Создавање налог за набавка ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Изберете снабдувач од Стандардните добавувачи на ставките подолу. При избор, ќе се изврши Нарачка за набавка само на предмети што припаѓаат на избраниот Добавувач.", +Row #{}: You must select {} serial numbers for item {}.,Ред # {}: Мора да изберете {} сериски броеви за ставка {}., diff --git a/erpnext/translations/ml.csv b/erpnext/translations/ml.csv index 9ecf8b43c2..f917969345 100644 --- a/erpnext/translations/ml.csv +++ b/erpnext/translations/ml.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"വി Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',വർഗ്ഗം 'മൂലധനം' അല്ലെങ്കിൽ 'Vaulation മൊത്തം' എന്ന എപ്പോൾ കുറയ്ക്കാവുന്നതാണ് കഴിയില്ല, "Cannot delete Serial No {0}, as it is used in stock transactions","അത് സ്റ്റോക്ക് ഇടപാടുകൾ ഉപയോഗിക്കുന്ന പോലെ, {0} സീരിയൽ ഇല്ല ഇല്ലാതാക്കാൻ കഴിയില്ല", Cannot enroll more than {0} students for this student group.,{0} ഈ വിദ്യാർത്ഥി ഗ്രൂപ്പിനായി വിദ്യാർത്ഥികൾ കൂടുതൽ എൻറോൾ ചെയ്യാൻ കഴിയില്ല., -Cannot find Item with this barcode,ഈ ബാർകോഡ് ഉപയോഗിച്ച് ഇനം കണ്ടെത്താൻ കഴിയില്ല, Cannot find active Leave Period,സജീവ അവധി കാലാവധി കണ്ടെത്താനായില്ല, Cannot produce more Item {0} than Sales Order quantity {1},സെയിൽസ് ഓർഡർ അളവ് {1} അധികം ഇനം {0} ഉത്പാദിപ്പിക്കാനുള്ള കഴിയുന്നില്ലേ, Cannot promote Employee with status Left,നില ഇടത്തോടുകൂടിയ ജീവനക്കാരനെ പ്രോത്സാഹിപ്പിക്കാനാവില്ല, @@ -690,7 +689,6 @@ Create Variants,വേരിയന്റുകൾ സൃഷ്ടിക്കു "Create and manage daily, weekly and monthly email digests.","സൃഷ്ടിക്കുക ദിവസേന നിയന്ത്രിക്കുക, പ്രതിവാര മാസ ഇമെയിൽ digests.", Create customer quotes,ഉപഭോക്തൃ ഉദ്ധരണികൾ സൃഷ്ടിക്കുക, Create rules to restrict transactions based on values.,മൂല്യങ്ങൾ അടിസ്ഥാനമാക്കിയുള്ള ഇടപാടുകൾ പരിമിതപ്പെടുത്താൻ നിയമങ്ങൾ സൃഷ്ടിക്കുക., -Created By,ഉണ്ടാക്കിയത്, Created {0} scorecards for {1} between: ,{0} എന്നതിന് വേണ്ടി {1} എന്നതിനുള്ള സ്കോർകാർഡ് സൃഷ്ടിച്ചു:, Creating Company and Importing Chart of Accounts,കമ്പനി സൃഷ്ടിക്കുകയും അക്ക of ണ്ടുകളുടെ ഇംപോർട്ട് ചാർട്ട്, Creating Fees,ഫീസ് സൃഷ്ടിക്കുന്നു, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,വെയർഹൗസ് ആവശ്യ For row {0}: Enter Planned Qty,വരിയ്ക്കായി {0}: ആസൂത്രിത അളവുകൾ നൽകുക, "For {0}, only credit accounts can be linked against another debit entry",{0} മാത്രം ക്രെഡിറ്റ് അക്കൗണ്ടുകൾ മറ്റൊരു ഡെബിറ്റ് എൻട്രി നേരെ ലിങ്ക്ഡ് കഴിയും, "For {0}, only debit accounts can be linked against another credit entry",{0} മാത്രം ഡെബിറ്റ് അക്കൗണ്ടുകൾ മറ്റൊരു ക്രെഡിറ്റ് എൻട്രി നേരെ ലിങ്ക്ഡ് കഴിയും, -Form View,ഫോം കാഴ്ച, Forum Activity,ഫോറം പ്രവർത്തനം, Free item code is not selected,സ item ജന്യ ഇന കോഡ് തിരഞ്ഞെടുത്തിട്ടില്ല, Freight and Forwarding Charges,ചരക്കുഗതാഗതം കൈമാറലും ചുമത്തിയിട്ടുള്ള, @@ -2638,7 +2635,6 @@ Send SMS,എസ്എംഎസ് അയയ്ക്കുക, Send mass SMS to your contacts,സമ്പർക്കങ്ങളിൽ പിണ്ഡം എസ്എംഎസ് അയയ്ക്കുക, Sensitivity,സെൻസിറ്റിവിറ്റി, Sent,അയച്ചവ, -Serial #,സീരിയൽ #, Serial No and Batch,സീരിയൽ ഇല്ല ആൻഡ് ബാച്ച്, Serial No is mandatory for Item {0},സീരിയൽ പോസ്റ്റ് ഇനം {0} നിര്ബന്ധമാണ്, Serial No {0} does not belong to Batch {1},സീരിയൽ {0} ബാച്ച് {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ERPNext സ്വാഗതം, What do you need help with?,എന്ത് സഹായമാണ് എന്താണ് വേണ്ടത്?, What does it do?,അത് എന്തു ചെയ്യുന്നു?, Where manufacturing operations are carried.,എവിടെ നിർമാണ ഓപ്പറേഷനുകൾ നടപ്പിലാക്കുന്നത്., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","ചൈൽഡ് കമ്പനി {0} അക്കൗണ്ട് സൃഷ്ടിക്കുമ്പോൾ, പാരന്റ് അക്കൌണ്ട് {1} കാണുന്നില്ല. ദയവായി ബന്ധപ്പെട്ട COA ൽ പേരന്റ് അക്കൌണ്ട് സൃഷ്ടിക്കുക", White,വൈറ്റ്, Wire Transfer,വയർ ട്രാൻസ്ഫർ, WooCommerce Products,WooCommerce ഉൽപ്പന്നങ്ങൾ, @@ -3493,6 +3488,7 @@ Likes,ഇഷ്ടങ്ങൾ, Merge with existing,നിലവിലുള്ള ലയിക്കാനുള്ള, Office,ഓഫീസ്, Orientation,വിന്യാസം, +Parent,പേരന്റ്ഫോള്ഡര്, Passive,നിഷ്കിയമായ, Payment Failed,പേയ്മെന്റ് പരാജയപ്പെട്ടു, Percent,ശതമാനം, @@ -3543,6 +3539,7 @@ Shift,ഷിഫ്റ്റ്, Show {0},{0} കാണിക്കുക, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",""-", "#", ".", "/", "{", "}" എന്നിവ ഒഴികെയുള്ള പ്രത്യേക പ്രതീകങ്ങൾ നാമകരണ ശ്രേണിയിൽ അനുവദനീയമല്ല", Target Details,ടാർഗെറ്റ് വിശദാംശങ്ങൾ, +{0} already has a Parent Procedure {1}.,{0} ന് ഇതിനകം ഒരു രക്ഷാകർതൃ നടപടിക്രമം ഉണ്ട് {1}., API,API, Annual,വാർഷിക, Approved,അംഗീകരിച്ചു, @@ -4241,7 +4238,6 @@ Download as JSON,JSON ആയി ഡൗൺലോഡുചെയ്യുക, End date can not be less than start date,അവസാന തീയതി ആരംഭ തീയതിക്ക് കുറവായിരിക്കരുത്, For Default Supplier (Optional),സ്ഥിര വിതരണക്കാരന് (ഓപ്ഷണൽ), From date cannot be greater than To date,തീയതി മുതൽ തീയതി വരെ വലിയതായിരിക്കരുത്, -Get items from,നിന്ന് ഇനങ്ങൾ നേടുക, Group by,ഗ്രൂപ്പ്, In stock,സ്റ്റോക്കുണ്ട്, Item name,ഇനം പേര്, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,ഗുണനിലവാരമുള്ള Quality Goal,ഗുണനിലവാര ലക്ഷ്യം, Monitoring Frequency,മോണിറ്ററിംഗ് ആവൃത്തി, Weekday,പ്രവൃത്തിദിനം, -January-April-July-October,ജനുവരി-ഏപ്രിൽ-ജൂലൈ-ഒക്ടോബർ, -Revision and Revised On,പുനരവലോകനവും പുതുക്കിയതും, -Revision,പുനരവലോകനം, -Revised On,പുതുക്കിയത്, Objectives,ലക്ഷ്യങ്ങൾ, Quality Goal Objective,ഗുണനിലവാര ലക്ഷ്യം, Objective,ലക്ഷ്യം, @@ -7574,7 +7566,6 @@ Parent Procedure,രക്ഷാകർതൃ നടപടിക്രമം, Processes,പ്രക്രിയകൾ, Quality Procedure Process,ഗുണനിലവാര നടപടിക്രമം, Process Description,പ്രോസസ്സ് വിവരണം, -Child Procedure,കുട്ടികളുടെ നടപടിക്രമം, Link existing Quality Procedure.,നിലവിലുള്ള ഗുണനിലവാര നടപടിക്രമം ലിങ്ക് ചെയ്യുക., Additional Information,അധിക വിവരം, Quality Review Objective,ഗുണനിലവാര അവലോകന ലക്ഷ്യം, @@ -8557,7 +8548,6 @@ Purchase Order Trends,ഓർഡർ ട്രെൻഡുകൾ വാങ്ങ Purchase Receipt Trends,വാങ്ങൽ രസീത് ട്രെൻഡുകൾ, Purchase Register,രജിസ്റ്റർ വാങ്ങുക, Quotation Trends,ക്വട്ടേഷൻ ട്രെൻഡുകൾ, -Quoted Item Comparison,ഉദ്ധരിച്ച ഇനം താരതമ്യം, Received Items To Be Billed,ബില്ല് ലഭിച്ച ഇനങ്ങൾ, Qty to Order,ഓർഡർ Qty, Requested Items To Be Transferred,മാറ്റിയത് അഭ്യർത്ഥിച്ചു ഇനങ്ങൾ, @@ -9091,7 +9081,6 @@ Unmarked days,അടയാളപ്പെടുത്താത്ത ദിവ Absent Days,ഇല്ലാത്ത ദിവസങ്ങൾ, Conditions and Formula variable and example,നിബന്ധനകളും ഫോർമുല വേരിയബിളും ഉദാഹരണവും, Feedback By,ഫീഡ്‌ബാക്ക്, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,നിർമ്മാണ വിഭാഗം, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","സ്ഥിരസ്ഥിതിയായി, നൽകിയ മുഴുവൻ പേരിന് അനുസൃതമായി ഉപഭോക്തൃ നാമം സജ്ജമാക്കി. ഉപഭോക്താക്കളെ പേരിടാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ a", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,ഒരു പുതിയ വിൽപ്പന ഇടപാട് സൃഷ്ടിക്കുമ്പോൾ സ്ഥിര വില വില ക്രമീകരിക്കുക. ഈ വില ലിസ്റ്റിൽ നിന്ന് ഇന വിലകൾ ലഭിക്കും., @@ -9692,7 +9681,6 @@ Available Balance,ലഭ്യമായ ബാലൻസ്, Reserved Balance,റിസർവ്ഡ് ബാലൻസ്, Uncleared Balance,വ്യക്തമല്ലാത്ത ബാലൻസ്, Payment related to {0} is not completed,{0 to മായി ബന്ധപ്പെട്ട പേയ്‌മെന്റ് പൂർത്തിയായിട്ടില്ല, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,വരി # {}: സീരിയൽ നമ്പർ {}. P} ഇതിനകം തന്നെ മറ്റൊരു പി‌ഒ‌എസ് ഇൻ‌വോയിസിലേക്ക് ഇടപാട് നടത്തി. സാധുവായ സീരിയൽ നമ്പർ തിരഞ്ഞെടുക്കുക., Row #{}: Item Code: {} is not available under warehouse {}.,വരി # {}: ഇനം കോഡ്: ware w വെയർഹൗസിന് കീഴിൽ ലഭ്യമല്ല {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,വരി # {}: ഇനത്തിന്റെ കോഡിന് സ്റ്റോക്ക് അളവ് പര്യാപ്തമല്ല: ware വെയർഹ house സിനു കീഴിൽ {}. ലഭ്യമായ അളവ് {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,വരി # {}: ദയവായി ഒരു സീരിയൽ നമ്പർ തിരഞ്ഞെടുത്ത് ഇനത്തിനെതിരെ ബാച്ച് ചെയ്യുക: {} അല്ലെങ്കിൽ ഇടപാട് പൂർത്തിയാക്കുന്നതിന് അത് നീക്കംചെയ്യുക., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},വെയർഹ house സിൽ Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,സ്റ്റോക്ക് ക്രമീകരണങ്ങളിൽ നെഗറ്റീവ് സ്റ്റോക്ക് അനുവദിക്കുക അല്ലെങ്കിൽ തുടരാൻ സ്റ്റോക്ക് എൻ‌ട്രി സൃഷ്ടിക്കുക., No Inpatient Record found against patient {0},Patient 0 patient രോഗിക്കെതിരെ ഇൻപേഷ്യന്റ് റെക്കോർഡുകളൊന്നും കണ്ടെത്തിയില്ല, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,പേഷ്യന്റ് എൻ‌ക ount ണ്ടർ {1 against നെതിരെ {0 an ഒരു ഇൻ‌പേഷ്യൻറ് മരുന്ന് ഓർ‌ഡർ‌ ഇതിനകം നിലവിലുണ്ട്., +Allow In Returns,റിട്ടേണുകളിൽ അനുവദിക്കുക, +Hide Unavailable Items,ലഭ്യമല്ലാത്ത ഇനങ്ങൾ മറയ്‌ക്കുക, +Apply Discount on Discounted Rate,കിഴിവ് നിരക്കിൽ കിഴിവ് പ്രയോഗിക്കുക, +Therapy Plan Template,തെറാപ്പി പ്ലാൻ ടെംപ്ലേറ്റ്, +Fetching Template Details,ടെംപ്ലേറ്റ് വിശദാംശങ്ങൾ നേടുന്നു, +Linked Item Details,ലിങ്കുചെയ്‌ത ഇന വിശദാംശങ്ങൾ, +Therapy Types,തെറാപ്പി തരങ്ങൾ, +Therapy Plan Template Detail,തെറാപ്പി പ്ലാൻ ടെംപ്ലേറ്റ് വിശദാംശം, +Non Conformance,ചട്ടവിരുദ്ധം, +Process Owner,പ്രോസസ് ഉടമ, +Corrective Action,തിരുത്തൽ പ്രവർത്തനം, +Preventive Action,മുൻകരുതൽ നടപടി, +Problem,പ്രശ്നം, +Responsible,ഉത്തരവാദിയായ, +Completion By,പൂർത്തിയാക്കിയത്, +Process Owner Full Name,പ്രോസസ് ഉടമയുടെ മുഴുവൻ പേര്, +Right Index,വലത് സൂചിക, +Left Index,ഇടത് സൂചിക, +Sub Procedure,ഉപ നടപടിക്രമം, +Passed,കടന്നുപോയി, +Print Receipt,അച്ചടി രസീത്, +Edit Receipt,രസീത് എഡിറ്റുചെയ്യുക, +Focus on search input,തിരയൽ ഇൻപുട്ടിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുക, +Focus on Item Group filter,ഇനം ഗ്രൂപ്പ് ഫിൽട്ടറിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുക, +Checkout Order / Submit Order / New Order,ചെക്ക് out ട്ട് ഓർഡർ / ഓർഡർ സമർപ്പിക്കുക / പുതിയ ഓർഡർ, +Add Order Discount,ഓർഡർ ഡിസ്കൗണ്ട് ചേർക്കുക, +Item Code: {0} is not available under warehouse {1}.,ഇനം കോഡ്: w 0 w വെയർഹ house സ് under 1 under ന് കീഴിൽ ലഭ്യമല്ല., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,വെയർഹ house സ് {1 under ന് കീഴിലുള്ള ഇനം {0 for ന് സീരിയൽ നമ്പറുകൾ ലഭ്യമല്ല. വെയർഹ house സ് മാറ്റാൻ ശ്രമിക്കുക., +Fetched only {0} available serial numbers.,ലഭ്യമായ സീരിയൽ നമ്പറുകൾ {0} മാത്രം ലഭിച്ചു., +Switch Between Payment Modes,പേയ്‌മെന്റ് മോഡുകൾക്കിടയിൽ മാറുക, +Enter {0} amount.,{0} തുക നൽകുക., +You don't have enough points to redeem.,റിഡീം ചെയ്യുന്നതിന് നിങ്ങൾക്ക് മതിയായ പോയിന്റുകൾ ഇല്ല., +You can redeem upto {0}.,നിങ്ങൾക്ക് {0 to വരെ റിഡീം ചെയ്യാൻ കഴിയും., +Enter amount to be redeemed.,റിഡീം ചെയ്യേണ്ട തുക നൽകുക., +You cannot redeem more than {0}.,നിങ്ങൾക്ക് {0 than ൽ കൂടുതൽ റിഡീം ചെയ്യാൻ കഴിയില്ല., +Open Form View,ഫോം കാഴ്ച തുറക്കുക, +POS invoice {0} created succesfully,POS ഇൻവോയ്സ് {0 Suc വിജയകരമായി സൃഷ്ടിച്ചു, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,ഇനം കോഡിന് സ്റ്റോക്ക് അളവ് പര്യാപ്തമല്ല: വെയർഹ house സ് under 1 under ന് കീഴിൽ {0}. ലഭ്യമായ അളവ് {2}., +Serial No: {0} has already been transacted into another POS Invoice.,സീരിയൽ‌ നമ്പർ‌: P 0 already ഇതിനകം മറ്റൊരു പി‌ഒ‌എസ് ഇൻ‌വോയിസിലേക്ക് ഇടപാട് നടത്തി., +Balance Serial No,ബാലൻസ് സീരിയൽ നമ്പർ, +Warehouse: {0} does not belong to {1},വെയർഹ house സ്: {0} {1 to ൽ ഉൾപ്പെടുന്നില്ല, +Please select batches for batched item {0},ബാച്ച് ചെയ്ത ഇനത്തിനായി ബാച്ചുകൾ തിരഞ്ഞെടുക്കുക {0}, +Please select quantity on row {0},{0 row വരിയിലെ അളവ് തിരഞ്ഞെടുക്കുക, +Please enter serial numbers for serialized item {0},സീരിയലൈസ് ചെയ്ത ഇനത്തിനായി സീരിയൽ നമ്പറുകൾ നൽകുക {0}, +Batch {0} already selected.,ബാച്ച് {0} ഇതിനകം തിരഞ്ഞെടുത്തു., +Please select a warehouse to get available quantities,ലഭ്യമായ അളവുകൾ ലഭിക്കുന്നതിന് ദയവായി ഒരു വെയർഹ house സ് തിരഞ്ഞെടുക്കുക, +"For transfer from source, selected quantity cannot be greater than available quantity","ഉറവിടത്തിൽ നിന്നുള്ള കൈമാറ്റത്തിനായി, തിരഞ്ഞെടുത്ത അളവ് ലഭ്യമായ അളവിനേക്കാൾ കൂടുതലാകരുത്", +Cannot find Item with this Barcode,ഈ ബാർകോഡ് ഉപയോഗിച്ച് ഇനം കണ്ടെത്താൻ കഴിയില്ല, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0 നിർബന്ധമാണ്. കറൻസി എക്സ്ചേഞ്ച് റെക്കോർഡ് {1} മുതൽ {2 for വരെ സൃഷ്ടിച്ചിട്ടില്ലായിരിക്കാം, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,to} ഇതിലേക്ക് ലിങ്കുചെയ്‌ത അസറ്റുകൾ സമർപ്പിച്ചു. വാങ്ങൽ വരുമാനം സൃഷ്ടിക്കുന്നതിന് നിങ്ങൾ അസറ്റുകൾ റദ്ദാക്കേണ്ടതുണ്ട്., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,സമർപ്പിച്ച അസറ്റ് {0 with മായി ബന്ധിപ്പിച്ചിരിക്കുന്നതിനാൽ ഈ പ്രമാണം റദ്ദാക്കാൻ കഴിയില്ല. തുടരുന്നതിന് ദയവായി ഇത് റദ്ദാക്കുക., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,വരി # {}: സീരിയൽ നമ്പർ {already ഇതിനകം മറ്റൊരു POS ഇൻവോയ്സിലേക്ക് ഇടപാട് നടത്തി. സാധുവായ സീരിയൽ നമ്പർ തിരഞ്ഞെടുക്കുക., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,വരി # {}: സീരിയൽ എണ്ണം.} Already ഇതിനകം മറ്റൊരു POS ഇൻവോയ്സിലേക്ക് ഇടപാട് നടത്തി. സാധുവായ സീരിയൽ നമ്പർ തിരഞ്ഞെടുക്കുക., +Item Unavailable,ഇനം ലഭ്യമല്ല, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},വരി # {}: യഥാർത്ഥ ഇൻവോയ്സിൽ ഇടപാട് നടത്തിയിട്ടില്ലാത്തതിനാൽ സീരിയൽ നമ്പർ {return തിരികെ നൽകാനാവില്ല {}, +Please set default Cash or Bank account in Mode of Payment {},പേയ്‌മെന്റ് മോഡിൽ സ്ഥിരസ്ഥിതി ക്യാഷ് അല്ലെങ്കിൽ ബാങ്ക് അക്കൗണ്ട് സജ്ജമാക്കുക {}, +Please set default Cash or Bank account in Mode of Payments {},പേയ്‌മെന്റ് മോഡിൽ സ്ഥിരസ്ഥിതി ക്യാഷ് അല്ലെങ്കിൽ ബാങ്ക് അക്കൗണ്ട് സജ്ജമാക്കുക {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Balance} അക്കൗണ്ട് ഒരു ബാലൻസ് ഷീറ്റ് അക്കൗണ്ടാണെന്ന് ഉറപ്പാക്കുക. നിങ്ങൾക്ക് രക്ഷാകർതൃ അക്കൗണ്ട് ഒരു ബാലൻസ് ഷീറ്റ് അക്കൗണ്ടിലേക്ക് മാറ്റാം അല്ലെങ്കിൽ മറ്റൊരു അക്കൗണ്ട് തിരഞ്ഞെടുക്കുക., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,അടയ്‌ക്കേണ്ട അക്കൗണ്ടാണ് {} അക്കൗണ്ട് എന്ന് ഉറപ്പാക്കുക. അടയ്‌ക്കേണ്ടതായി അക്കൗണ്ട് തരം മാറ്റുക അല്ലെങ്കിൽ മറ്റൊരു അക്കൗണ്ട് തിരഞ്ഞെടുക്കുക., +Row {}: Expense Head changed to {} ,വരി {}: ചെലവ് തല {to ലേക്ക് മാറ്റി, +because account {} is not linked to warehouse {} ,കാരണം അക്കൗണ്ട് the w വെയർഹൗസുമായി ലിങ്കുചെയ്തിട്ടില്ല}}, +or it is not the default inventory account,അല്ലെങ്കിൽ ഇത് സ്ഥിരസ്ഥിതി ഇൻവെന്ററി അക്ക not ണ്ടല്ല, +Expense Head Changed,ചെലവ് തല മാറ്റി, +because expense is booked against this account in Purchase Receipt {},കാരണം വാങ്ങൽ രസീതിയിൽ account account ഈ അക്ക against ണ്ടിനെതിരെ ചെലവ് ബുക്ക് ചെയ്തിട്ടുണ്ട്, +as no Purchase Receipt is created against Item {}. ,ഇനം against against ന് എതിരായി ഒരു വാങ്ങൽ രസീതും സൃഷ്ടിച്ചിട്ടില്ലാത്തതിനാൽ., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,പർച്ചേസ് ഇൻവോയ്സിന് ശേഷം പർച്ചേസ് രസീത് സൃഷ്ടിക്കുമ്പോൾ കേസുകളുടെ അക്ക ing ണ്ടിംഗ് കൈകാര്യം ചെയ്യുന്നതിനാണ് ഇത് ചെയ്യുന്നത്, +Purchase Order Required for item {},Item item ഇനത്തിനായി വാങ്ങൽ ഓർഡർ ആവശ്യമാണ്, +To submit the invoice without purchase order please set {} ,വാങ്ങൽ ഓർഡറില്ലാതെ ഇൻവോയ്സ് സമർപ്പിക്കാൻ ദയവായി set set സജ്ജമാക്കുക, +as {} in {},എന്നപോലെ {}, +Mandatory Purchase Order,നിർബന്ധിത വാങ്ങൽ ഓർഡർ, +Purchase Receipt Required for item {},Item item ഇനത്തിനായി വാങ്ങൽ രസീത് ആവശ്യമാണ്, +To submit the invoice without purchase receipt please set {} ,വാങ്ങൽ രസീത് ഇല്ലാതെ ഇൻവോയ്സ് സമർപ്പിക്കുന്നതിന് ദയവായി set set സജ്ജമാക്കുക, +Mandatory Purchase Receipt,നിർബന്ധിത വാങ്ങൽ രസീത്, +POS Profile {} does not belongs to company {},POS പ്രൊഫൈൽ {company കമ്പനിയുടേതല്ല {}, +User {} is disabled. Please select valid user/cashier,ഉപയോക്താവ് Disabled പ്രവർത്തനരഹിതമാക്കി. സാധുവായ ഉപയോക്താവ് / കാഷ്യർ തിരഞ്ഞെടുക്കുക, +Row #{}: Original Invoice {} of return invoice {} is {}. ,വരി # {}: റിട്ടേൺ ഇൻവോയ്സിന്റെ യഥാർത്ഥ ഇൻവോയ്സ് {} {} ആണ്., +Original invoice should be consolidated before or along with the return invoice.,യഥാർത്ഥ ഇൻവോയ്സ് റിട്ടേൺ ഇൻവോയ്സിനു മുമ്പോ ശേഷമോ ഏകീകരിക്കണം., +You can add original invoice {} manually to proceed.,തുടരുന്നതിന് നിങ്ങൾക്ക് സ്വമേധയാ യഥാർത്ഥ ഇൻവോയ്സ് add add ചേർക്കാൻ കഴിയും., +Please ensure {} account is a Balance Sheet account. ,Balance} അക്കൗണ്ട് ഒരു ബാലൻസ് ഷീറ്റ് അക്കൗണ്ടാണെന്ന് ഉറപ്പാക്കുക., +You can change the parent account to a Balance Sheet account or select a different account.,നിങ്ങൾക്ക് രക്ഷാകർതൃ അക്കൗണ്ട് ഒരു ബാലൻസ് ഷീറ്റ് അക്കൗണ്ടിലേക്ക് മാറ്റാം അല്ലെങ്കിൽ മറ്റൊരു അക്കൗണ്ട് തിരഞ്ഞെടുക്കുക., +Please ensure {} account is a Receivable account. ,{} അക്കൗണ്ട് സ്വീകാര്യമായ അക്കൗണ്ടാണെന്ന് ഉറപ്പാക്കുക., +Change the account type to Receivable or select a different account.,സ്വീകാര്യമായതായി അക്കൗണ്ട് തരം മാറ്റുക അല്ലെങ്കിൽ മറ്റൊരു അക്കൗണ്ട് തിരഞ്ഞെടുക്കുക., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},Earned നേടിയ ലോയൽറ്റി പോയിന്റുകൾ റിഡീം ചെയ്തതിനാൽ റദ്ദാക്കാൻ കഴിയില്ല. ആദ്യം റദ്ദാക്കുക {} ഇല്ല {}, +already exists,ഇതിനകം നിലവിലുണ്ട്, +POS Closing Entry {} against {} between selected period,തിരഞ്ഞെടുത്ത കാലയളവിനുള്ളിൽ POS against ന് എതിരായി POS അടയ്ക്കൽ എൻ‌ട്രി, +POS Invoice is {},POS ഇൻവോയ്സ് is is ആണ്, +POS Profile doesn't matches {},POS പ്രൊഫൈൽ പൊരുത്തപ്പെടുന്നില്ല {}, +POS Invoice is not {},POS ഇൻവോയ്സ് {not അല്ല, +POS Invoice isn't created by user {},POS ഇൻവോയ്സ് ഉപയോക്താവ് സൃഷ്ടിച്ചിട്ടില്ല {}, +Row #{}: {},വരി # {}: {}, +Invalid POS Invoices,അസാധുവായ POS ഇൻവോയ്സുകൾ, +Please add the account to root level Company - {},റൂട്ട് ലെവൽ കമ്പനിയിലേക്ക് അക്കൗണ്ട് ചേർക്കുക - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","ചൈൽഡ് കമ്പനി {0 for നായി അക്കൗണ്ട് സൃഷ്ടിക്കുമ്പോൾ, പാരന്റ് അക്കൗണ്ട് {1 found കണ്ടെത്തിയില്ല. അനുബന്ധ COA- യിൽ രക്ഷാകർതൃ അക്കൗണ്ട് സൃഷ്ടിക്കുക", +Account Not Found,അക്കൗണ്ട് കണ്ടെത്തിയില്ല, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","ചൈൽഡ് കമ്പനി {0 for നായി അക്കൗണ്ട് സൃഷ്ടിക്കുമ്പോൾ, പാരന്റ് അക്കൗണ്ട് {1 a ഒരു ലെഡ്ജർ അക്കൗണ്ടായി കണ്ടെത്തി.", +Please convert the parent account in corresponding child company to a group account.,അനുബന്ധ ശിശു കമ്പനിയിലെ രക്ഷാകർതൃ അക്കൗണ്ട് ഒരു ഗ്രൂപ്പ് അക്കൗണ്ടിലേക്ക് പരിവർത്തനം ചെയ്യുക., +Invalid Parent Account,രക്ഷാകർതൃ അക്കൗണ്ട് അസാധുവാണ്, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",പൊരുത്തക്കേട് ഒഴിവാക്കാൻ പാരന്റ് കമ്പനി {0 via വഴി മാത്രമേ ഇതിന്റെ പേരുമാറ്റാൻ അനുവാദമുള്ളൂ., +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","നിങ്ങൾ {2} ഇനത്തിന്റെ അളവ് {0} {1 ആണെങ്കിൽ, {3 the സ്കീം ഇനത്തിൽ പ്രയോഗിക്കും.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","നിങ്ങൾ {0} {1} മൂല്യമുള്ള ഇനം {2 If ആണെങ്കിൽ, {3 the സ്കീം ഇനത്തിൽ പ്രയോഗിക്കും.", +"As the field {0} is enabled, the field {1} is mandatory.",ഫീൽഡ് {0} പ്രവർത്തനക്ഷമമാക്കിയതിനാൽ {1 field ഫീൽഡ് നിർബന്ധമാണ്., +"As the field {0} is enabled, the value of the field {1} should be more than 1.","ഫീൽഡ് {0} പ്രവർത്തനക്ഷമമാക്കിയതിനാൽ, {1 the ഫീൽഡിന്റെ മൂല്യം 1 ൽ കൂടുതലായിരിക്കണം.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},{1 item ഇനത്തിന്റെ {0 Ser സീരിയൽ നമ്പർ ഡെലിവർ ചെയ്യാൻ കഴിയില്ല കാരണം ഇത് ഫിൽഫിൽ സെയിൽസ് ഓർഡർ {2 to ലേക്ക് കരുതിവച്ചിരിക്കുന്നു., +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","സെയിൽസ് ഓർഡർ {0 the എന്ന ഇനത്തിന് റിസർവേഷൻ ഉണ്ട്, {0} ന് എതിരായി റിസർവ് ചെയ്ത {1 only മാത്രമേ നിങ്ങൾക്ക് നൽകാൻ കഴിയൂ.", +{0} Serial No {1} cannot be delivered,{0} സീരിയൽ നമ്പർ {1 delivery കൈമാറാൻ കഴിയില്ല, +Row {0}: Subcontracted Item is mandatory for the raw material {1},വരി {0}: അസംസ്കൃത വസ്തുക്കൾക്ക് {1 sub സബ് കോൺ‌ട്രാക്റ്റ് ചെയ്ത ഇനം നിർബന്ധമാണ്, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","ആവശ്യത്തിന് അസംസ്കൃത വസ്തുക്കൾ ഉള്ളതിനാൽ, വെയർഹ house സ് {0 for ന് മെറ്റീരിയൽ അഭ്യർത്ഥന ആവശ്യമില്ല.", +" If you still want to proceed, please enable {0}.","നിങ്ങൾക്ക് ഇപ്പോഴും തുടരണമെങ്കിൽ, {0 enable പ്രവർത്തനക്ഷമമാക്കുക.", +The item referenced by {0} - {1} is already invoiced,{0} - {1 by പരാമർശിച്ച ഇനം ഇതിനകം ഇൻവോയ്സ് ചെയ്തു, +Therapy Session overlaps with {0},തെറാപ്പി സെഷൻ {0 with ഓവർലാപ്പ് ചെയ്യുന്നു, +Therapy Sessions Overlapping,തെറാപ്പി സെഷനുകൾ ഓവർലാപ്പുചെയ്യുന്നു, +Therapy Plans,തെറാപ്പി പദ്ധതികൾ, +"Item Code, warehouse, quantity are required on row {0}","Code 0 row വരിയിൽ ഇനം കോഡ്, വെയർഹ house സ്, അളവ് ആവശ്യമാണ്", +Get Items from Material Requests against this Supplier,ഈ വിതരണക്കാരനെതിരായ മെറ്റീരിയൽ അഭ്യർത്ഥനകളിൽ നിന്ന് ഇനങ്ങൾ നേടുക, +Enable European Access,യൂറോപ്യൻ ആക്സസ് പ്രാപ്തമാക്കുക, +Creating Purchase Order ...,വാങ്ങൽ ഓർഡർ സൃഷ്ടിക്കുന്നു ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","ചുവടെയുള്ള ഇനങ്ങളുടെ സ്ഥിരസ്ഥിതി വിതരണക്കാരിൽ നിന്ന് ഒരു വിതരണക്കാരനെ തിരഞ്ഞെടുക്കുക. തിരഞ്ഞെടുക്കുമ്പോൾ, തിരഞ്ഞെടുത്ത വിതരണക്കാരന്റെ മാത്രം ഇനങ്ങൾക്കെതിരെ ഒരു വാങ്ങൽ ഓർഡർ നൽകും.", +Row #{}: You must select {} serial numbers for item {}.,വരി # {}: നിങ്ങൾ item item ഇനത്തിനായി {} സീരിയൽ നമ്പറുകൾ തിരഞ്ഞെടുക്കണം., diff --git a/erpnext/translations/mr.csv b/erpnext/translations/mr.csv index c88e9b9d3a..9c41ce6f33 100644 --- a/erpnext/translations/mr.csv +++ b/erpnext/translations/mr.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',गट Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',गटात मूल्यांकन 'किंवा' Vaulation आणि एकूण 'करिता वजा करू शकत नाही, "Cannot delete Serial No {0}, as it is used in stock transactions",सिरियल क्रमांक {0} हटवू शकत नाही कारण तो स्टॉक व्यवहार मध्ये वापरला जातो, Cannot enroll more than {0} students for this student group.,{0} विद्यार्थी या विद्यार्थी गट जास्त नोंदणी करु शकत नाही., -Cannot find Item with this barcode,या बारकोडसह आयटम सापडला नाही, Cannot find active Leave Period,सक्रिय सुट्टी कालावधी शोधू शकत नाही, Cannot produce more Item {0} than Sales Order quantity {1},विक्री ऑर्डर पेक्षा {1} प्रमाणात जास्त {0} item उत्पादन करू शकत नाही, Cannot promote Employee with status Left,दर्जा असलेल्या डावीकडून कर्मचार्याला प्रोत्साहन देऊ शकत नाही, @@ -690,7 +689,6 @@ Create Variants,अस्थिर तयार करा, "Create and manage daily, weekly and monthly email digests.","दैनंदिन, साप्ताहिक आणि मासिक ईमेल digests तयार करा आणि व्यवस्थापित करा.", Create customer quotes,ग्राहक कोट तयार करा, Create rules to restrict transactions based on values.,मूल्ये आधारित व्यवहार प्रतिबंधित नियम तयार करा., -Created By,करून तयार, Created {0} scorecards for {1} between: ,{1} साठी {0} स्कोअरकार्ड तयार केल्या:, Creating Company and Importing Chart of Accounts,कंपनी तयार करणे आणि खाती आयात करण्याचा चार्ट, Creating Fees,शुल्क तयार करणे, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,कोठार सादर करा For row {0}: Enter Planned Qty,{0} पंक्तीसाठी: नियोजित प्रमाण प्रविष्ट करा, "For {0}, only credit accounts can be linked against another debit entry","{0}, फक्त क्रेडिट खात्यांच्या दुसऱ्या नावे नोंद लिंक जाऊ शकते", "For {0}, only debit accounts can be linked against another credit entry","{0}, फक्त डेबिट खाती दुसरे क्रेडिट नोंदणी लिंक जाऊ शकते", -Form View,फॉर्म दृश्य, Forum Activity,मंच क्रियाकलाप, Free item code is not selected,विनामूल्य आयटम कोड निवडलेला नाही, Freight and Forwarding Charges,वाहतुक आणि अग्रेषित शुल्क, @@ -2638,7 +2635,6 @@ Send SMS,एसएमएस पाठवा, Send mass SMS to your contacts,आपले संपर्क वस्तुमान एसएमएस पाठवा, Sensitivity,संवेदनशीलता, Sent,पाठविले, -Serial #,सिरियल #, Serial No and Batch,सिरियल क्रमांक आणि बॅच, Serial No is mandatory for Item {0},सिरियल क्रमांक आयटम {0} साठी अनिवार्य आहे, Serial No {0} does not belong to Batch {1},सिरिअल नाही {0} बॅचचे सदस्य नसतात {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ERPNext मधे आपले स्वागत आहे, What do you need help with?,आपण मदत काय गरज आहे?, What does it do?,ती काय करते?, Where manufacturing operations are carried.,उत्पादन ऑपरेशन कोठे नेले जातात., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","बाल कंपनी {0} साठी खाते तयार करताना, पालक खाते {1} सापडले नाही. कृपया संबंधित सीओएमध्ये पालक खाते तयार करा", White,व्हाइट, Wire Transfer,वायर हस्तांतरण, WooCommerce Products,WooCommerce उत्पादने, @@ -3493,6 +3488,7 @@ Likes,आवडी, Merge with existing,विद्यमान विलीन, Office,कार्यालय, Orientation,आवड, +Parent,पालक, Passive,निष्क्रीय, Payment Failed,देयक अयशस्वी झाले, Percent,टक्के, @@ -3543,6 +3539,7 @@ Shift,शिफ्ट, Show {0},दर्शवा {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",""-", "#", ".", "/", "{" आणि "}" वगळता विशिष्ट वर्णांना नामांकन मालिकेमध्ये परवानगी नाही", Target Details,लक्ष्य तपशील, +{0} already has a Parent Procedure {1}.,{0} कडे आधीपासूनच पालक प्रक्रिया आहे {1}., API,API, Annual,वार्षिक, Approved,मंजूर, @@ -4241,7 +4238,6 @@ Download as JSON,जेसन म्हणून डाउनलोड करा End date can not be less than start date,समाप्ती तारीख प्रारंभ तारखेच्या पेक्षा कमी असू शकत नाही, For Default Supplier (Optional),डीफॉल्ट सप्लायर (वैकल्पिक) साठी, From date cannot be greater than To date,तारखेपासून तारखेपेक्षा जास्त असू शकत नाही, -Get items from,आयटम मिळवा, Group by,गट, In stock,स्टॉक मध्ये, Item name,आयटम नाव, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,गुणवत्ता अभिप्र Quality Goal,गुणवत्ता गोल, Monitoring Frequency,देखरेख वारंवारता, Weekday,आठवड्याचा दिवस, -January-April-July-October,जानेवारी-एप्रिल-जुलै-ऑक्टोबर, -Revision and Revised On,पुनरीक्षण आणि सुधारित चालू, -Revision,उजळणी, -Revised On,सुधारित चालू, Objectives,उद्दीष्टे, Quality Goal Objective,गुणवत्ता गोल उद्दीष्ट, Objective,वस्तुनिष्ठ, @@ -7574,7 +7566,6 @@ Parent Procedure,पालक प्रक्रिया, Processes,प्रक्रिया, Quality Procedure Process,गुणवत्ता प्रक्रिया प्रक्रिया, Process Description,प्रक्रिया वर्णन, -Child Procedure,बाल प्रक्रिया, Link existing Quality Procedure.,विद्यमान गुणवत्ता प्रक्रियेचा दुवा साधा., Additional Information,अतिरिक्त माहिती, Quality Review Objective,गुणवत्ता पुनरावलोकन उद्देश, @@ -8557,7 +8548,6 @@ Purchase Order Trends,ऑर्डर ट्रेन्ड खरेदी, Purchase Receipt Trends,खरेदी पावती ट्रेन्ड, Purchase Register,खरेदी नोंदणी, Quotation Trends,कोटेशन ट्रेन्ड, -Quoted Item Comparison,उद्धृत बाबींचा तुलना, Received Items To Be Billed,बिल करायचे प्राप्त आयटम, Qty to Order,मागणी करण्यासाठी Qty, Requested Items To Be Transferred,विनंती आयटम हस्तांतरित करणे, @@ -9091,7 +9081,6 @@ Unmarked days,चिन्हांकित केलेले दिवस, Absent Days,अनुपस्थित दिवस, Conditions and Formula variable and example,अटी आणि फॉर्म्युला व्हेरिएबल आणि उदाहरण, Feedback By,अभिप्राय द्वारा, -MTNG-.YYYY.-.MM.-.DD.-,एमटीएनजी -हयवाय .-. एमएम .-. डीडी .-, Manufacturing Section,उत्पादन विभाग, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","डीफॉल्टनुसार, ग्राहक नाव प्रविष्ट केलेल्या पूर्ण नावानुसार सेट केले जाते. आपण इच्छुक असल्यास ग्राहकांनी ए द्वारे नाव दिले पाहिजे", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,नवीन विक्री व्यवहार तयार करताना डीफॉल्ट किंमत यादी कॉन्फिगर करा. या किंमती सूचीमधून वस्तूंच्या किंमती आणल्या जातील., @@ -9692,7 +9681,6 @@ Available Balance,उपलब्ध शिल्लक, Reserved Balance,राखीव शिल्लक, Uncleared Balance,अस्पष्ट शिल्लक, Payment related to {0} is not completed,{0 to शी संबंधित देयक पूर्ण झाले नाही, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,पंक्ती # {}: अनुक्रमांक नाही {}. {already चे आधीपासून दुसर्‍या पीओएस इनव्हॉइसमध्ये व्यवहार केले गेले आहे. कृपया वैध अनुक्रमांक निवडा., Row #{}: Item Code: {} is not available under warehouse {}.,पंक्ती # {}: आयटम कोड: {w गोदाम under under अंतर्गत उपलब्ध नाही., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,पंक्ती # {}: आयटम कोडसाठी स्टॉक प्रमाणात पुरेसे नाही: are w गोदाम अंतर्गत {}. उपलब्ध प्रमाण {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,पंक्ती # {}: कृपया मालिका क्रमांक आणि आयटम विरूद्ध बॅच निवडा: {} किंवा व्यवहार पूर्ण करण्यासाठी ते काढा., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},गोदाम {1} मध्य Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,कृपया स्टॉक सेटिंग्जमध्ये नकारात्मक स्टॉकला परवानगी द्या किंवा पुढे जाण्यासाठी स्टॉक एन्ट्री तयार करा., No Inpatient Record found against patient {0},Patient 0 patient रूग्णाविरूद्ध कोणतीही रूग्ण नोंद आढळली नाही, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,पेशंट एन्काऊंटर {1} विरूद्ध इनफिशंट औषध ऑर्डर {0} आधीपासून विद्यमान आहे., +Allow In Returns,रिटर्न्सला परवानगी द्या, +Hide Unavailable Items,अनुपलब्ध आयटम लपवा, +Apply Discount on Discounted Rate,सवलतीच्या दरावर सूट लागू करा, +Therapy Plan Template,थेरपी योजना टेम्पलेट, +Fetching Template Details,टेम्पलेट तपशील आणत आहे, +Linked Item Details,दुवा साधलेला तपशील, +Therapy Types,थेरपीचे प्रकार, +Therapy Plan Template Detail,थेरपी योजना टेम्पलेट तपशील, +Non Conformance,नॉन कॉन्फरन्समेंट, +Process Owner,प्रक्रिया मालक, +Corrective Action,सुधारात्मक क्रिया, +Preventive Action,प्रतिबंधात्मक कारवाई, +Problem,समस्या, +Responsible,जबाबदार, +Completion By,पूर्ण करून, +Process Owner Full Name,प्रक्रिया मालकाचे पूर्ण नाव, +Right Index,उजवा निर्देशांक, +Left Index,डावा अनुक्रमणिका, +Sub Procedure,उप प्रक्रिया, +Passed,उत्तीर्ण, +Print Receipt,पावती प्रिंट करा, +Edit Receipt,पावती संपादित करा, +Focus on search input,शोध इनपुटवर लक्ष द्या, +Focus on Item Group filter,आयटम गट फिल्टरवर लक्ष द्या, +Checkout Order / Submit Order / New Order,चेकआउट ऑर्डर / सबमिट ऑर्डर / नवीन ऑर्डर, +Add Order Discount,ऑर्डर सवलत जोडा, +Item Code: {0} is not available under warehouse {1}.,आयटम कोड: are 0 w गोदाम under 1} अंतर्गत उपलब्ध नाही., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,माल गोदाम} 1} अंतर्गत आयटम {0} साठी अनुक्रमांक अनुपलब्ध आहेत. कृपया गोदाम बदलण्याचा प्रयत्न करा., +Fetched only {0} available serial numbers.,केवळ serial 0} उपलब्ध अनुक्रमांक प्राप्त केले., +Switch Between Payment Modes,देय मोड दरम्यान स्विच करा, +Enter {0} amount.,{0} रक्कम प्रविष्ट करा., +You don't have enough points to redeem.,आपल्याकडे पूर्तता करण्यासाठी पुरेसे मुद्दे नाहीत., +You can redeem upto {0}.,आपण {0 up पर्यंत पूर्तता करू शकता., +Enter amount to be redeemed.,पूर्तता करण्यासाठी रक्कम प्रविष्ट करा., +You cannot redeem more than {0}.,आपण {0 more पेक्षा अधिक रीडीम करू शकत नाही., +Open Form View,फॉर्म दृश्य उघडा, +POS invoice {0} created succesfully,पॉस बीजक {0 suc यशस्वीरित्या तयार केले, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,आयटम कोडसाठी स्टॉकचे प्रमाण पुरेसे नाही: गोदाम} 1} च्या खाली {0}. उपलब्ध प्रमाण {2}., +Serial No: {0} has already been transacted into another POS Invoice.,अनुक्रमांक: {0 चे आधीपासून दुसर्‍या पीओएस इनव्हॉइसमध्ये व्यवहार केले गेले आहे., +Balance Serial No,शिल्लक अनुक्रमांक, +Warehouse: {0} does not belong to {1},गोदाम: {0 हे {1} चे नाही, +Please select batches for batched item {0},कृपया बॅच केलेल्या वस्तू bat 0 for साठी बॅचेस निवडा., +Please select quantity on row {0},कृपया पंक्ती quantity 0 on वर प्रमाण निवडा, +Please enter serial numbers for serialized item {0},कृपया क्रमांकाच्या आयटमसाठी अनुक्रमांक प्रविष्ट करा {0, +Batch {0} already selected.,बॅच} 0} आधीपासून निवडलेला आहे., +Please select a warehouse to get available quantities,कृपया उपलब्ध प्रमाणात मिळण्यासाठी एक कोठार निवडा, +"For transfer from source, selected quantity cannot be greater than available quantity","स्त्रोताकडून हस्तांतरणासाठी, निवडलेली मात्रा उपलब्ध प्रमाणांपेक्षा मोठी असू शकत नाही", +Cannot find Item with this Barcode,या बारकोडसह आयटम सापडला नाही, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} अनिवार्य आहे. कदाचित चलन विनिमय रेकॉर्ड {1} ते {2 for साठी तयार केले नाही, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{ने त्यास जोडलेली मालमत्ता सबमिट केली आहे. खरेदी रिटर्न तयार करण्यासाठी आपल्याला मालमत्ता रद्द करण्याची आवश्यकता आहे., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,हा दस्तऐवज सबमिट केलेल्या मालमत्ता {0 with शी दुवा साधल्यामुळे रद्द करू शकत नाही. कृपया सुरू ठेवण्यासाठी ते रद्द करा., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,पंक्ती # {}: अनुक्रमांक {चे आधीपासून दुसर्‍या पीओएस इनव्हॉइसमध्ये व्यवहार केले गेले आहे. कृपया वैध अनुक्रमांक निवडा., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,पंक्ती # {}: अनुक्रमांक क्र.} Already चे आधीपासून दुसर्‍या पीओएस इनव्हॉइसमध्ये व्यवहार केले गेले आहे. कृपया वैध अनुक्रमांक निवडा., +Item Unavailable,आयटम अनुपलब्ध, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},पंक्ती # {}: अनुक्रमांक {returned परत केला जाऊ शकत नाही कारण मूळ चलनमध्ये तो व्यवहार केला गेला नाही {}, +Please set default Cash or Bank account in Mode of Payment {},कृपया देय मोडमध्ये डीफॉल्ट रोख किंवा बँक खाते सेट करा}}, +Please set default Cash or Bank account in Mode of Payments {},कृपया देयके मोडमध्ये डीफॉल्ट रोख किंवा बँक खाते सेट करा}}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,कृपया खात्री करा की}} खाते एक शिल्लक पत्रक खाते आहे. आपण मूळ खाते बॅलन्स शीट खात्यात बदलू शकता किंवा भिन्न खाते निवडू शकता., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,कृपया खात्री करा की {} खाते देय खाते आहे. देय देणार्‍यामध्ये खाते प्रकार बदला किंवा एखादे भिन्न खाते निवडा., +Row {}: Expense Head changed to {} ,पंक्ती {}: खर्चाचे हेड {to वर बदलले, +because account {} is not linked to warehouse {} ,कारण खाते are w गोदामात जोडलेले नाही {}, +or it is not the default inventory account,किंवा ते डीफॉल्ट इन्व्हेंटरी खाते नाही, +Expense Head Changed,खर्चाचे डोके बदलले, +because expense is booked against this account in Purchase Receipt {},कारण खरेदी पावती exp this मध्ये या खात्यावर खर्च नोंदविला गेला आहे., +as no Purchase Receipt is created against Item {}. ,आयटम against against विरूद्ध कोणतीही खरेदी पावती तयार केली जात नाही., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,जेव्हा खरेदी पावत्या नंतर खरेदीची पावती तयार केली जाते तेव्हा प्रकरणांची लेखा हाताळण्यासाठी हे केले जाते, +Purchase Order Required for item {},आयटम for for साठी खरेदी ऑर्डर आवश्यक, +To submit the invoice without purchase order please set {} ,खरेदी आदेशाशिवाय बीजक सबमिट करण्यासाठी कृपया {set सेट करा, +as {} in {},म्हणून {}, +Mandatory Purchase Order,अनिवार्य खरेदी ऑर्डर, +Purchase Receipt Required for item {},आयटम for for साठी खरेदीची पावती आवश्यक, +To submit the invoice without purchase receipt please set {} ,खरेदी पावत्याविना बीजक सबमिट करण्यासाठी कृपया {set सेट करा, +Mandatory Purchase Receipt,अनिवार्य खरेदी पावती, +POS Profile {} does not belongs to company {},पॉस प्रोफाइल {company कंपनीचे नाही}}, +User {} is disabled. Please select valid user/cashier,वापरकर्ता {disabled अक्षम आहे. कृपया वैध वापरकर्ता / रोखपाल निवडा, +Row #{}: Original Invoice {} of return invoice {} is {}. ,पंक्ती # {}: रिटर्न इनव्हॉइसचा मूळ बीजक {{{{आहे., +Original invoice should be consolidated before or along with the return invoice.,रिटर्न इनव्हॉइसच्या आधी किंवा त्यासह मूळ चलन एकत्रित केले जावे., +You can add original invoice {} manually to proceed.,पुढे जाण्यासाठी आपण व्यक्तिचलित मूळ बीजक can can जोडू शकता., +Please ensure {} account is a Balance Sheet account. ,कृपया खात्री करा की}} खाते एक शिल्लक पत्रक खाते आहे., +You can change the parent account to a Balance Sheet account or select a different account.,आपण मूळ खाते बॅलन्स शीट खात्यात बदलू शकता किंवा भिन्न खाते निवडू शकता., +Please ensure {} account is a Receivable account. ,कृपया खात्री करा की {} खाते एक प्राप्य खाते आहे., +Change the account type to Receivable or select a different account.,प्राप्तीयोग्य खात्याचा प्रकार बदला किंवा एखादे भिन्न खाते निवडा., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},मिळविलेले लॉयल्टी पॉईंट्सची पूर्तता केल्यापासून} canceled रद्द करता येणार नाही. प्रथम {} नाही {cancel रद्द करा, +already exists,आधिपासूनच अस्तित्वात आहे, +POS Closing Entry {} against {} between selected period,निवडलेल्या कालावधी दरम्यान पीओएस बंद नोंद Ent ry च्या विरूद्ध ry}, +POS Invoice is {},पीओएस इनव्हॉइस {is आहे, +POS Profile doesn't matches {},पीओएस प्रोफाइल matches matches शी जुळत नाही, +POS Invoice is not {},पीओएस बीजक {is नाही, +POS Invoice isn't created by user {},पीओएस बीजक वापरकर्त्याने तयार केलेले नाही {{, +Row #{}: {},पंक्ती # {}: {}, +Invalid POS Invoices,अवैध पीओएस पावत्या, +Please add the account to root level Company - {},कृपया खाते रूट स्तराच्या कंपनीमध्ये जोडा - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","चाइल्ड कंपनी account 0 for साठी खाते तयार करताना, मूळ खाते {1} आढळले नाही. कृपया संबंधित सीओएमध्ये मूळ खाते तयार करा", +Account Not Found,खाते सापडले नाही, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","चाइल्ड कंपनी {0 for साठी खाते तयार करताना, खात्यातील खाते म्हणून मूळ खाते {1} आढळले.", +Please convert the parent account in corresponding child company to a group account.,कृपया संबंधित मुलाच्या कंपनीतील मूळ खाते एका गट खात्यात रूपांतरित करा., +Invalid Parent Account,अवैध पालक खाते, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",न जुळण्यापासून ते बदलण्यासाठी केवळ मूळ कंपनी via 0} मार्गे हे नाव बदलण्याची परवानगी आहे., +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","आपण आयटमची मात्रा {0} {1} प्रमाणात असल्यास {2}, योजना {3 the आयटमवर लागू होईल.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","आपण आयटम {2} {0} {1} असल्यास, योजना the 3 the आयटमवर लागू होईल.", +"As the field {0} is enabled, the field {1} is mandatory.","फील्ड As 0} सक्षम केल्यामुळे, फील्ड {1} अनिवार्य आहे.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.",फील्ड {0} सक्षम केल्यामुळे फील्डचे मूल्य {1. 1 पेक्षा जास्त असावे., +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},आयटम {1} चे अनुक्रमांक {0} वितरीत करू शकत नाही कारण तो पूर्ण भरण्याच्या विक्री ऑर्डर {2 to वर आरक्षित आहे, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","विक्री ऑर्डर {0} कडे आयटम {1} चे आरक्षण आहे, आपण केवळ reserved 0} च्या विरूद्ध आरक्षित {1 deliver वितरीत करू शकता.", +{0} Serial No {1} cannot be delivered,. 0 ial अनुक्रमांक {1} वितरित करणे शक्य नाही, +Row {0}: Subcontracted Item is mandatory for the raw material {1},पंक्ती {0}: कच्च्या मालासाठी सबकंट्रेक्ट आयटम अनिवार्य आहे {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.",तेथे पुरेशी कच्ची सामग्री असल्याने गोदाम {0} साठी मटेरियल रिक्वेस्टची आवश्यकता नाही., +" If you still want to proceed, please enable {0}.","आपण अद्याप पुढे जाऊ इच्छित असल्यास, कृपया {0 enable सक्षम करा.", +The item referenced by {0} - {1} is already invoiced,{0} - {1} द्वारा संदर्भित आयटम आधीपासून इनव्हॉईस आहे, +Therapy Session overlaps with {0},थेरपी सत्र {0 with सह आच्छादित होते, +Therapy Sessions Overlapping,थेरपी सत्रे आच्छादित, +Therapy Plans,थेरपी योजना, +"Item Code, warehouse, quantity are required on row {0}","पंक्तीवर आयटम कोड, कोठार, प्रमाण आवश्यक आहे {0}", +Get Items from Material Requests against this Supplier,या पुरवठादाराविरूद्ध मटेरियल रिक्वेस्टचे आयटम मिळवा, +Enable European Access,युरोपियन प्रवेश सक्षम करा, +Creating Purchase Order ...,खरेदी ऑर्डर तयार करत आहे ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","खालील बाबींच्या डीफॉल्ट पुरवठादाराकडील पुरवठादार निवडा. निवडीवर, केवळ निवडलेल्या पुरवठादाराच्या वस्तूंच्या विरुद्ध खरेदी ऑर्डर देण्यात येईल.", +Row #{}: You must select {} serial numbers for item {}.,पंक्ती # {}: आपण आयटम for for साठी} numbers अनुक्रमांक निवडणे आवश्यक आहे., diff --git a/erpnext/translations/ms.csv b/erpnext/translations/ms.csv index e8a5bf6e32..1483844990 100644 --- a/erpnext/translations/ms.csv +++ b/erpnext/translations/ms.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',Tidak bo Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',Tidak dapat menolak apabila kategori adalah untuk 'Penilaian' atau 'Vaulation dan Jumlah', "Cannot delete Serial No {0}, as it is used in stock transactions","Tidak dapat memadam No Serial {0}, kerana ia digunakan dalam urus niaga saham", Cannot enroll more than {0} students for this student group.,tidak boleh mendaftar lebih daripada {0} pelajar bagi kumpulan pelajar ini., -Cannot find Item with this barcode,Tidak dapat mencari Item dengan kod bar ini, Cannot find active Leave Period,Tidak dapat mencari Tempoh Cuti aktif, Cannot produce more Item {0} than Sales Order quantity {1},Tidak boleh menghasilkan Perkara lebih {0} daripada kuantiti Sales Order {1}, Cannot promote Employee with status Left,Tidak boleh mempromosikan Pekerja dengan status Kiri, @@ -690,7 +689,6 @@ Create Variants,Buat Kelainan, "Create and manage daily, weekly and monthly email digests.","Membuat dan menguruskan mencerna e-mel harian, mingguan dan bulanan.", Create customer quotes,Membuat sebut harga pelanggan, Create rules to restrict transactions based on values.,Mewujudkan kaedah-kaedah untuk menyekat transaksi berdasarkan nilai-nilai., -Created By,Dibuat oleh, Created {0} scorecards for {1} between: ,Dicipta {0} kad skor untuk {1} antara:, Creating Company and Importing Chart of Accounts,Mewujudkan Carta Syarikat dan Mengimport Carta Akaun, Creating Fees,Membuat Bayaran, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Untuk Gudang diperlukan sebelum Hantar, For row {0}: Enter Planned Qty,Untuk baris {0}: Masukkan Qty yang dirancang, "For {0}, only credit accounts can be linked against another debit entry","Untuk {0}, hanya akaun kredit boleh dikaitkan terhadap kemasukan debit lain", "For {0}, only debit accounts can be linked against another credit entry","Untuk {0}, akaun debit hanya boleh dikaitkan dengan kemasukan kredit lain", -Form View,Lihat Borang, Forum Activity,Aktiviti Forum, Free item code is not selected,Kod item percuma tidak dipilih, Freight and Forwarding Charges,Freight Forwarding dan Caj, @@ -2638,7 +2635,6 @@ Send SMS,Hantar SMS, Send mass SMS to your contacts,Hantar SMS massa ke kenalan anda, Sensitivity,Kepekaan, Sent,Dihantar, -Serial #,Serial #, Serial No and Batch,Serial No dan Batch, Serial No is mandatory for Item {0},No siri adalah wajib bagi Perkara {0}, Serial No {0} does not belong to Batch {1},Serial No {0} tidak tergolong dalam Batch {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Selamat datang ke ERPNext, What do you need help with?,Apa yang anda perlu membantu dengan?, What does it do?,Apa yang ia buat?, Where manufacturing operations are carried.,Tempat operasi pembuatan dijalankan., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Semasa membuat akaun untuk Anak Syarikat {0}, akaun induk {1} tidak dijumpai. Sila buat akaun induk dalam COA yang bersesuaian", White,White, Wire Transfer,Wire Transfer, WooCommerce Products,Produk WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Suka, Merge with existing,Bergabung dengan yang sedia ada, Office,Pejabat, Orientation,orientasi, +Parent,Ibu Bapa, Passive,Pasif, Payment Failed,pembayaran Gagal, Percent,Peratus, @@ -3543,6 +3539,7 @@ Shift,Shift, Show {0},Tunjukkan {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Watak Khas kecuali "-", "#", ".", "/", "{" Dan "}" tidak dibenarkan dalam siri penamaan", Target Details,Butiran Sasaran, +{0} already has a Parent Procedure {1}.,{0} sudah mempunyai Tatacara Ibu Bapa {1}., API,API, Annual,Tahunan, Approved,Diluluskan, @@ -4241,7 +4238,6 @@ Download as JSON,Muat turun sebagai JSON, End date can not be less than start date,Tarikh akhir tidak boleh kurang daripada tarikh mula, For Default Supplier (Optional),Untuk pembekal lalai (pilihan), From date cannot be greater than To date,Dari Tarikh tidak boleh lebih besar daripada Dating, -Get items from,Mendapatkan barangan dari, Group by,Group By, In stock,Dalam stok, Item name,Nama Item, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Parameter Templat Maklum Balas Kualiti, Quality Goal,Matlamat Kualiti, Monitoring Frequency,Kekerapan Pemantauan, Weekday,Hari minggu, -January-April-July-October,Januari-April-Julai-Oktober, -Revision and Revised On,Semakan dan Semakan semula, -Revision,Ulang kaji, -Revised On,Disemak semula, Objectives,Objektif, Quality Goal Objective,Objektif Kualiti Matlamat, Objective,Objektif, @@ -7574,7 +7566,6 @@ Parent Procedure,Prosedur Ibu Bapa, Processes,Proses, Quality Procedure Process,Proses Prosedur Kualiti, Process Description,Penerangan proses, -Child Procedure,Prosedur Kanak-kanak, Link existing Quality Procedure.,Pautan Prosedur Kualiti yang sedia ada., Additional Information,Maklumat tambahan, Quality Review Objective,Objektif Kajian Kualiti, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Membeli Trend Pesanan, Purchase Receipt Trends,Trend Resit Pembelian, Purchase Register,Pembelian Daftar, Quotation Trends,Trend Sebut Harga, -Quoted Item Comparison,Perkara dipetik Perbandingan, Received Items To Be Billed,Barangan yang diterima dikenakan caj, Qty to Order,Qty Aturan, Requested Items To Be Transferred,Item yang diminta Akan Dipindahkan, @@ -9091,7 +9081,6 @@ Unmarked days,Hari tanpa tanda, Absent Days,Hari yang tidak hadir, Conditions and Formula variable and example,Keadaan dan pemboleh ubah Formula dan contoh, Feedback By,Maklum Balas Oleh, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Bahagian Pembuatan, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Secara lalai, Nama Pelanggan ditetapkan sesuai dengan Nama Penuh yang dimasukkan. Sekiranya anda mahu Pelanggan diberi nama oleh a", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Konfigurasikan Daftar Harga lalai semasa membuat transaksi Jualan baru. Harga barang akan diambil dari Daftar Harga ini., @@ -9692,7 +9681,6 @@ Available Balance,Baki yang ada, Reserved Balance,Baki Terpelihara, Uncleared Balance,Imbangan Tidak Jelas, Payment related to {0} is not completed,Pembayaran yang berkaitan dengan {0} belum selesai, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Baris # {}: No Siri {}. {} telah ditransaksikan ke Invois POS yang lain. Sila pilih no siri yang sah., Row #{}: Item Code: {} is not available under warehouse {}.,Baris # {}: Kod Item: {} tidak tersedia di gudang {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Baris # {}: Kuantiti stok tidak mencukupi untuk Kod Item: {} di bawah gudang {}. Kuantiti yang ada {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Baris # {}: Pilih no siri dan kumpulan berdasarkan item: {} atau keluarkan untuk menyelesaikan transaksi., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Kuantiti tidak tersedia untuk {0 Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Sila aktifkan Benarkan Stok Negatif dalam Tetapan Stok atau buat Entri Saham untuk meneruskan., No Inpatient Record found against patient {0},Tiada Rekod Pesakit Dalam ditemui terhadap pesakit {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Perintah Pengubatan Pesakit Dalam {0} terhadap Perjumpaan Pesakit {1} sudah ada., +Allow In Returns,Benarkan Dalam Pulangan, +Hide Unavailable Items,Sembunyikan Item yang Tidak Tersedia, +Apply Discount on Discounted Rate,Terapkan Potongan dengan Harga Diskaun, +Therapy Plan Template,Templat Rancangan Terapi, +Fetching Template Details,Mengambil Butiran Templat, +Linked Item Details,Butiran Item Terpaut, +Therapy Types,Jenis Terapi, +Therapy Plan Template Detail,Perincian Templat Pelan Terapi, +Non Conformance,Ketidakpatuhan, +Process Owner,Pemilik proses, +Corrective Action,Tindakan pembetulan, +Preventive Action,Tindakan pencegahan, +Problem,Masalah, +Responsible,Bertanggungjawab, +Completion By,Penyelesaian Oleh, +Process Owner Full Name,Nama Penuh Pemilik Proses, +Right Index,Indeks Kanan, +Left Index,Indeks Kiri, +Sub Procedure,Sub Prosedur, +Passed,Lulus, +Print Receipt,Cetakan Resit, +Edit Receipt,Edit Resit, +Focus on search input,Fokus pada input carian, +Focus on Item Group filter,Fokus pada penapis Kumpulan Item, +Checkout Order / Submit Order / New Order,Pesanan Checkout / Hantar Pesanan / Pesanan Baru, +Add Order Discount,Tambah Potongan Pesanan, +Item Code: {0} is not available under warehouse {1}.,Kod Item: {0} tidak tersedia di gudang {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Nombor siri tidak tersedia untuk Item {0} di bawah gudang {1}. Sila tukar gudang., +Fetched only {0} available serial numbers.,Hanya mengambil {0} nombor siri yang tersedia., +Switch Between Payment Modes,Tukar Antara Kaedah Pembayaran, +Enter {0} amount.,Masukkan jumlah {0}., +You don't have enough points to redeem.,Anda tidak mempunyai mata yang mencukupi untuk ditebus., +You can redeem upto {0}.,Anda boleh menebus sehingga {0}., +Enter amount to be redeemed.,Masukkan jumlah yang akan ditebus., +You cannot redeem more than {0}.,Anda tidak boleh menebus lebih daripada {0}., +Open Form View,Buka Paparan Borang, +POS invoice {0} created succesfully,Invois POS {0} dibuat dengan berjaya, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Kuantiti stok tidak mencukupi untuk Kod Item: {0} di bawah gudang {1}. Kuantiti yang ada {2}., +Serial No: {0} has already been transacted into another POS Invoice.,No Siri: {0} telah ditransaksikan ke Invois POS yang lain., +Balance Serial No,Nombor Siri Baki, +Warehouse: {0} does not belong to {1},Gudang: {0} bukan milik {1}, +Please select batches for batched item {0},Pilih kumpulan untuk item kumpulan {0}, +Please select quantity on row {0},Sila pilih kuantiti pada baris {0}, +Please enter serial numbers for serialized item {0},Sila masukkan nombor siri untuk item bersiri {0}, +Batch {0} already selected.,Kumpulan {0} sudah dipilih., +Please select a warehouse to get available quantities,Pilih gudang untuk mendapatkan jumlah yang ada, +"For transfer from source, selected quantity cannot be greater than available quantity","Untuk pemindahan dari sumber, kuantiti yang dipilih tidak boleh lebih besar daripada kuantiti yang ada", +Cannot find Item with this Barcode,Tidak dapat mencari Item dengan Barcode ini, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} adalah wajib. Mungkin rekod Pertukaran Mata Wang tidak dibuat untuk {1} hingga {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} telah menyerahkan aset yang dikaitkan dengannya. Anda perlu membatalkan aset untuk membuat pulangan pembelian., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Tidak dapat membatalkan dokumen ini kerana dihubungkan dengan aset yang dihantar {0}. Sila batalkan untuk meneruskan., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Baris # {}: No. Siri {} telah ditransaksikan ke Invois POS yang lain. Sila pilih no siri yang sah., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Baris # {}: Nombor Siri. {} Telah ditransaksikan ke Invois POS yang lain. Sila pilih no siri yang sah., +Item Unavailable,Item tidak tersedia, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Baris # {}: No Siri {} tidak dapat dikembalikan kerana tidak ditransaksikan dalam invois asal {}, +Please set default Cash or Bank account in Mode of Payment {},Tetapkan akaun Tunai atau Bank lalai dalam Cara Pembayaran {}, +Please set default Cash or Bank account in Mode of Payments {},Tetapkan akaun Tunai atau Bank lalai dalam Mod Pembayaran {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Pastikan {} akaun adalah akaun Lembaran Imbangan. Anda boleh menukar akaun induk ke akaun Lembaran Imbangan atau memilih akaun lain., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Pastikan {} akaun adalah akaun Boleh Bayar. Tukar jenis akaun menjadi Hutang atau pilih akaun lain., +Row {}: Expense Head changed to {} ,Baris {}: Kepala Beban ditukar menjadi {}, +because account {} is not linked to warehouse {} ,kerana akaun {} tidak dihubungkan ke gudang {}, +or it is not the default inventory account,atau itu bukan akaun inventori lalai, +Expense Head Changed,Kepala Perbelanjaan Berubah, +because expense is booked against this account in Purchase Receipt {},kerana perbelanjaan dicatatkan ke akaun ini dalam Resit Pembelian {}, +as no Purchase Receipt is created against Item {}. ,kerana tidak ada Resit Pembelian yang dibuat terhadap Item {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Ini dilakukan untuk menangani perakaunan kes apabila Resit Pembelian dibuat setelah Invoice Pembelian, +Purchase Order Required for item {},Pesanan Pembelian Diperlukan untuk item {}, +To submit the invoice without purchase order please set {} ,"Untuk menghantar invois tanpa pesanan pembelian, sila tetapkan {}", +as {} in {},seperti dalam {}, +Mandatory Purchase Order,Perintah Pembelian Wajib, +Purchase Receipt Required for item {},Resit Pembelian Diperlukan untuk item {}, +To submit the invoice without purchase receipt please set {} ,"Untuk menghantar invois tanpa resit pembelian, tetapkan {}", +Mandatory Purchase Receipt,Resit Pembelian Wajib, +POS Profile {} does not belongs to company {},Profil POS {} bukan milik syarikat {}, +User {} is disabled. Please select valid user/cashier,Pengguna {} dilumpuhkan. Sila pilih pengguna / juruwang yang sah, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Baris # {}: Faktur asal {} invois pengembalian {} adalah {}., +Original invoice should be consolidated before or along with the return invoice.,Invois asal harus digabungkan sebelum atau bersama dengan invois pengembalian., +You can add original invoice {} manually to proceed.,Anda boleh menambahkan invois asal {} secara manual untuk meneruskan., +Please ensure {} account is a Balance Sheet account. ,Pastikan {} akaun adalah akaun Lembaran Imbangan., +You can change the parent account to a Balance Sheet account or select a different account.,Anda boleh menukar akaun induk ke akaun Lembaran Imbangan atau memilih akaun lain., +Please ensure {} account is a Receivable account. ,Pastikan {} akaun adalah akaun Belum Terima., +Change the account type to Receivable or select a different account.,Tukar jenis akaun menjadi Belum Terima atau pilih akaun lain., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} tidak dapat dibatalkan kerana Mata Kesetiaan yang diperoleh telah ditebus. Batalkan dahulu {} Tidak {}, +already exists,sudah wujud, +POS Closing Entry {} against {} between selected period,POS Penutupan Entri {} terhadap {} antara tempoh yang dipilih, +POS Invoice is {},Invois POS ialah {}, +POS Profile doesn't matches {},Profil POS tidak sepadan {}, +POS Invoice is not {},Invois POS bukan {}, +POS Invoice isn't created by user {},POS Invoice tidak dibuat oleh pengguna {}, +Row #{}: {},Baris # {}: {}, +Invalid POS Invoices,Invois POS tidak sah, +Please add the account to root level Company - {},Sila tambah akaun ke Syarikat peringkat akar - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Semasa membuat akaun untuk Syarikat Anak {0}, akaun induk {1} tidak dijumpai. Sila buat akaun induk dalam COA yang sesuai", +Account Not Found,Akaun tidak dijumpai, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Semasa membuat akaun untuk Syarikat Anak {0}, akaun induk {1} dijumpai sebagai akaun lejar.", +Please convert the parent account in corresponding child company to a group account.,Tukarkan akaun induk di syarikat anak yang sesuai ke akaun kumpulan., +Invalid Parent Account,Akaun Ibu Bapa Tidak Sah, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Menamakan semula hanya dibenarkan melalui syarikat induk {0}, untuk mengelakkan ketidakcocokan.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Sekiranya anda {0} {1} kuantiti item {2}, skema {3} akan diterapkan pada item tersebut.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Sekiranya anda {0} {1} item bernilai {2}, skema {3} akan digunakan pada item tersebut.", +"As the field {0} is enabled, the field {1} is mandatory.","Oleh kerana medan {0} diaktifkan, medan {1} adalah wajib.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Oleh kerana medan {0} diaktifkan, nilai medan {1} harus lebih dari 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Tidak dapat mengirimkan No Siri {0} item {1} kerana ia diperuntukkan untuk memenuhi Pesanan Jualan {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Pesanan Penjualan {0} mempunyai tempahan untuk item tersebut {1}, Anda hanya dapat mengirimkan pesanan yang dipesan {1} terhadap {0}.", +{0} Serial No {1} cannot be delivered,{0} No Siri {1} tidak dapat dihantar, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Baris {0}: Item Subkontrak adalah wajib untuk bahan mentah {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Oleh kerana terdapat banyak bahan mentah, Permintaan Bahan tidak diperlukan untuk Gudang {0}.", +" If you still want to proceed, please enable {0}.","Sekiranya anda masih mahu meneruskan, sila aktifkan {0}.", +The item referenced by {0} - {1} is already invoiced,Item yang dirujuk oleh {0} - {1} sudah dibuat invois, +Therapy Session overlaps with {0},Sesi Terapi bertindih dengan {0}, +Therapy Sessions Overlapping,Sesi Terapi Bertindih, +Therapy Plans,Rancangan Terapi, +"Item Code, warehouse, quantity are required on row {0}","Kod Item, gudang, kuantiti diperlukan pada baris {0}", +Get Items from Material Requests against this Supplier,Dapatkan Item dari Permintaan Bahan terhadap Pembekal ini, +Enable European Access,Dayakan Akses Eropah, +Creating Purchase Order ...,Membuat Pesanan Pembelian ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Pilih Pembekal dari Pembekal Lalai item di bawah. Pada pilihan, Pesanan Pembelian akan dibuat terhadap barang-barang milik Pembekal terpilih sahaja.", +Row #{}: You must select {} serial numbers for item {}.,Baris # {}: Anda mesti memilih {} nombor siri untuk item {}., diff --git a/erpnext/translations/my.csv b/erpnext/translations/my.csv index c8de5fb1cc..d15ec1ec71 100644 --- a/erpnext/translations/my.csv +++ b/erpnext/translations/my.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',အမ Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',အမျိုးအစား '' အကောက်ခွန်တန်ဖိုးသတ်မှတ်မည် 'သို့မဟုတ်' 'Vaulation နှင့်စုစုပေါင်း' 'အဘို့ဖြစ်၏ရသောအခါနုတ်မနိုင်, "Cannot delete Serial No {0}, as it is used in stock transactions","ဒါကြောင့်စတော့ရှယ်ယာငွေပေးငွေယူမှာအသုံးပြုတဲ့အတိုင်း, {0} Serial No မဖျက်နိုင်ပါ", Cannot enroll more than {0} students for this student group.,ဒီကျောင်းသားအုပ်စုအတွက် {0} ကျောင်းသားများကိုထက်ပိုစာရင်းသွင်းလို့မရပါ။, -Cannot find Item with this barcode,ဒီဘားကုဒ်ကိုနှင့်အတူအရာဝတ္ထုကိုမတှေ့နိုငျ, Cannot find active Leave Period,တက်ကြွခွင့်ကာလကိုမတှေ့နိုငျ, Cannot produce more Item {0} than Sales Order quantity {1},အရောင်းအမိန့်အရေအတွက် {1} ထက်ပိုပစ္စည်း {0} မထုတ်လုပ်နိုင်သ, Cannot promote Employee with status Left,status ကိုလက်ဝဲနှင့်အတူန်ထမ်းမြှင့်တင်ရန်မပေးနိုင်, @@ -690,7 +689,6 @@ Create Variants,Variant Create, "Create and manage daily, weekly and monthly email digests.","Create နှင့်နေ့စဉ်စီမံခန့်ခွဲ, အပတ်စဉ်ထုတ်နှင့်လစဉ်အီးမေးလ် digests ။", Create customer quotes,ဖောက်သည်ကိုးကား Create, Create rules to restrict transactions based on values.,တန်ဖိုးများကိုအပေါ်အခြေခံပြီးအရောင်းအကနျ့သစည်းမျဉ်းစည်းကမ်းတွေကိုဖန်တီးပါ။, -Created By,By Created, Created {0} scorecards for {1} between: ,: {1} အကြားအဘို့အ Created {0} scorecards, Creating Company and Importing Chart of Accounts,ကုမ္ပဏီ Creating နှင့်ငွေစာရင်းဇယားတင်သွင်းခြင်း, Creating Fees,Creating အခကြေးငွေများ, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,ဂိုဒေါင်လိုအပ For row {0}: Enter Planned Qty,အတန်းများအတွက် {0}: စီစဉ်ထားအရည်အတွက် Enter, "For {0}, only credit accounts can be linked against another debit entry",{0} သည်ကိုသာအကြွေးအကောင့်အသစ်များ၏အခြား debit entry ကိုဆန့်ကျင်နှင့်ဆက်စပ်နိုင်, "For {0}, only debit accounts can be linked against another credit entry","{0} အဘို့, သာ debit အကောင့်အသစ်များ၏အခြားအကြွေး entry ကိုဆန့်ကျင်နှင့်ဆက်စပ်နိုင်", -Form View,form ကိုကြည့်ရန်, Forum Activity,ဖိုရမ်လှုပ်ရှားမှု, Free item code is not selected,အခမဲ့ကို item code ကိုမရွေးသည်မဟုတ်, Freight and Forwarding Charges,ကုန်တင်နှင့် Forwarding စွပ်စွဲချက်, @@ -2638,7 +2635,6 @@ Send SMS,SMS ပို့, Send mass SMS to your contacts,သင့်ရဲ့အဆက်အသွယ်မှအစုလိုက်အပြုံလိုက် SMS ပို့, Sensitivity,အာရုံများကိုထိခိုက်လွယ်ခြင်း, Sent,ကိုစလှေတျ, -Serial #,serial #, Serial No and Batch,serial ဘယ်သူမျှမကနှင့်အသုတ်လိုက်, Serial No is mandatory for Item {0},serial No Item {0} သည်မသင်မနေရ, Serial No {0} does not belong to Batch {1},serial ဘယ်သူမျှမက {0} အသုတ်လိုက်မှ {1} ပိုင်ပါဘူး, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ERPNext မှလှိုက်လှဲစွာကြိ What do you need help with?,သင်တို့နှင့်အတူကူညီအဘယျသို့လိုအပ်သလဲ?, What does it do?,ဒါကြောင့်အဘယ်သို့ပြုရပါသနည်း?, Where manufacturing operations are carried.,အဘယ်မှာရှိကုန်ထုတ်လုပ်မှုလုပ်ငန်းများကိုသယ်ဆောင်ကြသည်။, -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","ကလေးကကုမ္ပဏီ {0}, မိဘအကောင့်အတွက် account ဖန်တီးပြီးနေစဉ် {1} ကိုတွေ့ဘူး။ COA သက်ဆိုင်ရာအတွက်မိဘအကောင့်ကိုဖန်တီးပေးပါ", White,အဖြူ, Wire Transfer,ငွေလွှဲခြင်း, WooCommerce Products,WooCommerce ထုတ်ကုန်များ, @@ -3493,6 +3488,7 @@ Likes,အကြိုက်များ, Merge with existing,လက်ရှိအတူ merge, Office,ရုံး, Orientation,အရှေ့တိုင်းဆန်, +Parent,မိဘ, Passive,မလှုပ်မရှားနေသော, Payment Failed,ငွေပေးချေမှုရမည့်မအောင်မြင်ခဲ့ပါ, Percent,ရာခိုင်နှုန်း, @@ -3543,6 +3539,7 @@ Shift,အဆိုင်း, Show {0},Show ကို {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","မှလွဲ. အထူးဇာတ်ကောင် "-" "။ ", "#", "/", "{" နှင့် "}" စီးရီးနာမည်အတွက်ခွင့်မပြု", Target Details,ပစ်မှတ်အသေးစိတ်, +{0} already has a Parent Procedure {1}.,{0} ပြီးသားမိဘလုပ်ထုံးလုပ်နည်း {1} ရှိပါတယ်။, API,API ကို, Annual,နှစ်ပတ်လည်, Approved,Approved, @@ -4241,7 +4238,6 @@ Download as JSON,JSON အဖြစ် Download, End date can not be less than start date,အဆုံးနေ့စွဲ Start ကိုနေ့စွဲထက်လျော့နည်းမဖွစျနိုငျ, For Default Supplier (Optional),ပုံမှန်ပေးသွင်း (ရွေးချယ်နိုင်), From date cannot be greater than To date,နေ့စွဲကနေနေ့စွဲရန်ထက် သာ. ကြီးမြတ်မဖွစျနိုငျ, -Get items from,အထဲကပစ္စည်းတွေကို Get, Group by,Group မှဖြင့်, In stock,ကုန်ပစ္စည်းလက်ဝယ်ရှိ, Item name,item အမည်, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,အရည်အသွေးတုံ့ပ Quality Goal,အရည်အသွေးပန်းတိုင်, Monitoring Frequency,စောင့်ကြည့်မှုကြိမ်နှုန်း, Weekday,WEEKDAY, -January-April-July-October,ဇန်နဝါရီလဧပြီလဇူလိုင်လအောက်တိုဘာလ, -Revision and Revised On,တည်းဖြတ်မူနှင့်တွင် Revised, -Revision,ပြန်လည်စစ်ဆေးကြည့်ရှုခြင်း, -Revised On,တွင် Revised, Objectives,ရည်ရွယ်ချက်များ, Quality Goal Objective,အရည်အသွေးပန်းတိုင်ရည်ရွယ်ချက်, Objective,ရည်ရွယ်ချက်, @@ -7574,7 +7566,6 @@ Parent Procedure,မိဘလုပ်ထုံးလုပ်နည်း, Processes,လုပ်ငန်းစဉ်များ, Quality Procedure Process,အရည်အသွေးလုပ်ထုံးလုပ်နည်းလုပ်ငန်းစဉ်, Process Description,ဖြစ်စဉ်ကိုဖျေါပွခကျြ, -Child Procedure,ကလေးလုပ်ထုံးလုပ်နည်း, Link existing Quality Procedure.,Link ကိုအရည်အသွေးလုပ်ထုံးလုပ်နည်းတည်ဆဲ။, Additional Information,အခြားဖြည့်စွက်ရန်အချက်အလက်များ, Quality Review Objective,အရည်အသွေးပြန်လည်ဆန်းစစ်ခြင်းရည်ရွယ်ချက်, @@ -8557,7 +8548,6 @@ Purchase Order Trends,အမိန့်ခေတ်ရေစီးကြော Purchase Receipt Trends,ဝယ်ယူခြင်းပြေစာခေတ်ရေစီးကြောင်း, Purchase Register,မှတ်ပုံတင်မည်ဝယ်ယူ, Quotation Trends,စျေးနှုန်းခေတ်ရေစီးကြောင်း, -Quoted Item Comparison,ကိုးကားအရာဝတ္ထုနှိုင်းယှဉ်ခြင်း, Received Items To Be Billed,ကြေညာတဲ့ခံရဖို့ရရှိထားသည့်ပစ္စည်းများ, Qty to Order,ရမလဲမှ Qty, Requested Items To Be Transferred,လွှဲပြောင်းရန်မေတ္တာရပ်ခံပစ္စည်းများ, @@ -9091,7 +9081,6 @@ Unmarked days,အမှတ်အသားပြုထားသည့်နေ့ Absent Days,ပျက်ကွက်ရက်များ, Conditions and Formula variable and example,အခြေအနေများနှင့်ဖော်မြူလာ variable ကိုနှင့်ဥပမာ, Feedback By,ပြန်လည်သုံးသပ်ခြင်း, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .- ။ MM .- ။ DD.-, Manufacturing Section,ကုန်ထုတ်လုပ်မှုအပိုင်း, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",ပုံမှန်အားဖြင့်သုံးစွဲသူအမည်ကိုနာမည်အပြည့်အစုံရိုက်ထည့်သည်။ သင်ဖောက်သည်တစ် ဦး အားဖြင့်အမည်ရှိချင်တယ်ဆိုရင်, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,အသစ်တစ်ခုအရောင်းငွေပေးငွေယူဖန်တီးသည့်အခါပုံမှန်စျေးနှုန်းစာရင်းပြုပြင်ပါ။ ပစ္စည်းစျေးနှုန်းများကိုဒီစျေးနှုန်းစာရင်းမှရယူပါလိမ့်မည်။, @@ -9692,7 +9681,6 @@ Available Balance,ရရှိနိုင်သောလက်ကျန်င Reserved Balance,Reserved Balance, Uncleared Balance,uncleared Balance, Payment related to {0} is not completed,{0} နှင့်ဆက်စပ်သောငွေပေးချေမှုမပြီးသေးပါ, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Row # {}: နံပါတ်စဉ် {} ။ {} သည်အခြား POS ငွေတောင်းခံလွှာသို့ပြောင်းပြီးဖြစ်သည်။ ကျေးဇူးပြု၍ မှန်ကန်သောအမှတ်စဉ်နံပါတ်ရွေးပါ။, Row #{}: Item Code: {} is not available under warehouse {}.,Row # {}: Item Code: {} ကိုဂိုဒေါင် {} အောက်မှာမရရှိနိုင်ပါ။, Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Row # {}: Item Code အတွက် {}} သိုလှောင်ပမာဏမကသိုလှောင်ရုံအောက်မှာ {} ။ ရရှိနိုင်အရေအတွက် {} ။, Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Row # {} - serial no ကိုရွေးပြီး item ကို {{}} အနေဖြင့်ရွေးချယ်ပါ။, @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},ဂိုဒေါင်ထဲ Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,ကျေးဇူးပြု၍ Allow Negative Stock ကို Stock Settings ထဲရှိ enable သို့မဟုတ် Stock Entry ကိုဆက်လုပ်ပါ။, No Inpatient Record found against patient {0},လူနာနှင့်သက်ဆိုင်သောအတွင်းလူနာမှတ်တမ်းမရှိပါ။ {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,လူနာနှင့်သက်ဆိုင်သော {1} အားဆန့်ကျင်သောအတွင်းလူနာဆေးဝါးအမိန့် {0} ရှိနှင့်ပြီးဖြစ်သည်။, +Allow In Returns,ပြန်ခွင့်ပြုပါ, +Hide Unavailable Items,မရရှိနိုင်သည့်ပစ္စည်းများကိုဖျောက်ထားပါ, +Apply Discount on Discounted Rate,လျှော့နှုန်းအပေါ်လျှော့စျေး Apply, +Therapy Plan Template,ကုထုံးအစီအစဉ် Template, +Fetching Template Details,အသေးစိတ်အချက်အလက်များရယူခြင်း, +Linked Item Details,ချိတ်ဆက်ပစ္စည်းအသေးစိတ်, +Therapy Types,ကုထုံးအမျိုးအစားများ, +Therapy Plan Template Detail,ကုထုံးအစီအစဉ် template ကိုအသေးစိတ်, +Non Conformance,လိုက်နာမှုမရှိပါ, +Process Owner,လုပ်ငန်းစဉ်ပိုင်ရှင်, +Corrective Action,အမှားပြင်ဆင်လုပ်ဆောင်ချက်, +Preventive Action,ရောဂါကာကွယ်သောလုပ်ဆောင်ချက်, +Problem,ပြနာ, +Responsible,တာဝန်ရှိသည်, +Completion By,ပြီးစီးသည်, +Process Owner Full Name,လုပ်ငန်းစဉ်ပိုင်ရှင်နာမည်အပြည့်အစုံ, +Right Index,ညာဘက်အညွှန်းကိန်း, +Left Index,လက်ဝဲအညွှန်းကိန်း, +Sub Procedure,လုပ်ထုံးလုပ်နည်းခွဲ, +Passed,သွားပြီ, +Print Receipt,ငွေလက်ခံဖြတ်ပိုင်းပုံနှိပ်ပါ, +Edit Receipt,လက်ခံဖြတ်ပိုင်းတည်းဖြတ်, +Focus on search input,ရှာဖွေရေး input ကိုအာရုံစိုက်, +Focus on Item Group filter,Item Group မှ filter ကိုအာရုံစိုက်ပါ, +Checkout Order / Submit Order / New Order,ကုန်ပစ္စည်းအမှာစာ / အမိန့်တင်သွင်း / အသစ်အမိန့်, +Add Order Discount,အမိန့်လျှော့စျေးထည့်ပါ, +Item Code: {0} is not available under warehouse {1}.,ပစ္စည်းကုဒ်: {0} ကိုဂိုဒေါင် {1} အောက်တွင်မရရှိနိုင်ပါ။, +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,ဂိုဒေါင် {1} အောက်ရှိပစ္စည်း {0} အတွက်မရနိုင်သောနံပါတ်စဉ်များ။ ကျေးဇူးပြုပြီးဂိုဒေါင်ပြောင်းဖို့ကြိုးစားပါ။, +Fetched only {0} available serial numbers.,{0} ရရှိနိုင်သည့်နံပါတ်စဉ်များကိုသာရယူပါ။, +Switch Between Payment Modes,ငွေပေးချေစနစ်များအကြားပြောင်းပါ, +Enter {0} amount.,{0} ပမာဏကိုရိုက်ထည့်ပါ။, +You don't have enough points to redeem.,သင့်မှာရွေးရန်အချက်အလုံအလောက်မရှိပါ။, +You can redeem upto {0}.,{0} အထိရွေးလို့ရပါတယ်။, +Enter amount to be redeemed.,ရွေးယူရန်ငွေပမာဏကိုထည့်ပါ။, +You cannot redeem more than {0}.,{0} ထက်ပိုပြီးမရွေးနိုင်ပါ။, +Open Form View,Form View ကိုဖွင့်ပါ, +POS invoice {0} created succesfully,POS ငွေတောင်းခံလွှာ {0} ကိုအောင်မြင်စွာဖန်တီးခဲ့တယ်, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,ပစ္စည်းကုဒ်အတွက် {0} ကုန်လှောင်ရုံအောက်ရှိ {1} အောက်တွင်ကုန်ပစ္စည်းအရေအတွက်မလုံလောက်ပါ။ ရရှိနိုင်အရေအတွက် {2} ။, +Serial No: {0} has already been transacted into another POS Invoice.,အမှတ်စဉ်နံပါတ် - {0} သည်အခြား POS ငွေတောင်းခံလွှာသို့ပြောင်းပြီးဖြစ်သည်။, +Balance Serial No,နံပါတ် Balance နံပါတ်, +Warehouse: {0} does not belong to {1},ဂိုဒေါင် - {0} ဟာ {1} နဲ့မသက်ဆိုင်ပါ။, +Please select batches for batched item {0},သုတ်ထားသောပစ္စည်းအတွက်သုတ်များကိုရွေးပါ {0}, +Please select quantity on row {0},ကျေးဇူးပြုပြီးအတန်းအရေအတွက်ကိုရွေးချယ်ပါ {0}, +Please enter serial numbers for serialized item {0},ကျေးဇူးပြု၍ နံပါတ်စဉ်နံပါတ်ထည့်သွင်းပါ {0}, +Batch {0} already selected.,သုတ် {0} ကိုရွေးချယ်ပြီးဖြစ်သည်။, +Please select a warehouse to get available quantities,ရရှိနိုင်ပမာဏရရန်ဂိုဒေါင်တစ်ခုရွေးပါ, +"For transfer from source, selected quantity cannot be greater than available quantity",အရင်းအမြစ်မှလွှဲပြောင်းခြင်းအတွက်ရွေးချယ်ထားသောအရေအတွက်သည်ရရှိနိုင်သည့်အရေအတွက်ထက်မပိုနိုင်ပါ, +Cannot find Item with this Barcode,ဒီဘားကုဒ်ဖြင့်ပစ္စည်းကိုရှာ။ မရပါ, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} ဟာမဖြစ်မနေလိုအပ်သည်။ {1} မှ {2} အတွက်ငွေကြေးလဲလှယ်မှုမှတ်တမ်းကိုမပြုလုပ်နိုင်ပါ။, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} ကဆက်နွယ်နေသောပိုင်ဆိုင်မှုများကိုတင်သွင်းခဲ့သည်။ သင်ဝယ်ယူပြန်လာဖန်တီးရန်ပိုင်ဆိုင်မှုများကိုပယ်ဖျက်ဖို့လိုအပ်ပါတယ်။, +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,တင်သွင်းထားသောပိုင်ဆိုင်မှု {0} နှင့်ဆက်စပ်မှုရှိသောကြောင့်ဤစာရွက်စာတမ်းကို ဖျက်၍ မရပါ။ ကျေးဇူးပြုပြီးဖျက်သိမ်းပါ, +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Row # {}: Serial နံပါတ် {} ကိုအခြား POS ငွေတောင်းခံလွှာသို့ပြောင်းပြီးဖြစ်သည်။ ကျေးဇူးပြု၍ မှန်ကန်သောအမှတ်စဉ်နံပါတ်ရွေးပါ။, +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Row # {}: Serial Nos ။ {} သည်အခြား POS ငွေတောင်းခံလွှာသို့ပြောင်းပြီးဖြစ်သည်။ ကျေးဇူးပြု၍ မှန်ကန်သောအမှတ်စဉ်နံပါတ်ရွေးပါ။, +Item Unavailable,ပစ္စည်းမရနိုင်ပါ, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Row # {}: မူရင်းငွေတောင်းခံလွှာတွင်မပြောင်းလဲသောကြောင့်အမှတ်စဉ် {} ကိုပြန်မရပါ။, +Please set default Cash or Bank account in Mode of Payment {},ကျေးဇူးပြု၍ ပုံမှန်ငွေသား (သို့) ဘဏ်အကောင့်ကိုငွေပေးချေမှုစနစ် ({ငွေပေးချေမှုစနစ်) တွင်ထားပါ။, +Please set default Cash or Bank account in Mode of Payments {},ကျေးဇူးပြု၍ ပုံမှန်ငွေသား (သို့) ဘဏ်အကောင့်ကိုငွေပေးချေမှုစနစ် (}) တွင်ထည့်ပါ။, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,{} အကောင့်သည် Balance Sheet အကောင့်တစ်ခုဖြစ်ကြောင်းသေချာပါစေ။ သင်သည်မိဘအကောင့်ကို Balance Sheet အကောင့်သို့ပြောင်းနိုင်သည်သို့မဟုတ်အခြားအကောင့်တစ်ခုကိုရွေးချယ်နိုင်သည်။, +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,{} အကောင့်သည်ပေးဆောင်ရမည့်အကောင့်ဖြစ်ကြောင်းသေချာပါစေ။ အကောင့်အမျိုးအစားကို Payable သို့ပြောင်းပါသို့မဟုတ်အခြားအကောင့်တစ်ခုကိုရွေးချယ်ပါ။, +Row {}: Expense Head changed to {} ,Row {}: Expense Head ကို {} ပြောင်းထားတယ်။, +because account {} is not linked to warehouse {} ,အကောင့် {} သည်ကုန်လှောင်ရုံနှင့်မပတ်သက်သောကြောင့်, +or it is not the default inventory account,သို့မဟုတ်ပါကပုံမှန်စာရင်းအကောင့်မဟုတ်ပါဘူး, +Expense Head Changed,အသုံးစရိတ်အကြီးအကဲပြောင်းလဲခဲ့သည်, +because expense is booked against this account in Purchase Receipt {},ဘာဖြစ်လို့လဲဆိုတော့ဒီအကောင့်ကို Purchase Receipt {} မှာကြိုတင်စာရင်းသွင်းထားလို့ပါ။, +as no Purchase Receipt is created against Item {}. ,အဘယ်သူမျှမဝယ်ယူငွေလက်ခံဖြတ်ပိုင်း {{} ဆန့်ကျင်နေသူများကဖန်တီးဖြစ်ပါတယ်အဖြစ်။, +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,၀ ယ်ငွေပြေစာအပြီးတွင် Purchase Receipt ကိုဖန်တီးသည့်ကိစ္စရပ်များအတွက်စာရင်းကိုင်များအားကိုင်တွယ်ရန်ပြုလုပ်သည်, +Purchase Order Required for item {},ပစ္စည်းအတွက်လိုအပ်သောဝယ်ယူမှုအမှာစာ {}, +To submit the invoice without purchase order please set {} ,ဝယ်ယူမှုအမိန့်မပါဘဲငွေတောင်းခံလွှာကိုတင်သွင်းကျေးဇူးပြုပြီး {} ကိုသတ်မှတ်, +as {} in {},{} ထဲမှာ {} ထဲမှာ, +Mandatory Purchase Order,မဖြစ်မနေဝယ်ယူရန်အမိန့်, +Purchase Receipt Required for item {},ပစ္စည်းအတွက်လိုအပ်သောဝယ်ယူမှုပြေစာ {}, +To submit the invoice without purchase receipt please set {} ,ဝယ်ယူမှုမရရှိဘဲငွေတောင်းခံလွှာကိုတင်ပြရန် {} ကိုသတ်မှတ်ပါ။, +Mandatory Purchase Receipt,မဖြစ်မနေဝယ်ယူငွေလက်ခံဖြတ်ပိုင်း, +POS Profile {} does not belongs to company {},POS ပရိုဖိုင်း {} သည်ကုမ္ပဏီနှင့်မဆိုင်ပါ။, +User {} is disabled. Please select valid user/cashier,အသုံးပြုသူ {} ကိုပိတ်ထားသည်။ ကျေးဇူးပြု၍ မှန်ကန်သောအသုံးပြုသူ / ငွေကိုင်ကိုရွေးချယ်ပါ, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Row # {}: မူရင်းပြေစာ {} ၏ငွေတောင်းခံလွှာ {} သည် {} ဖြစ်သည်။, +Original invoice should be consolidated before or along with the return invoice.,မူရင်းငွေတောင်းခံလွှာကိုပြန်ပို့ငွေတောင်းခံလွှာမတိုင်မီသို့မဟုတ်အတူတကွစုစည်းထားသင့်သည်။, +You can add original invoice {} manually to proceed.,မူရင်းငွေတောင်းခံလွှာကို {} ကိုကိုယ်တိုင်ဆက်လက်ထည့်သွင်းနိုင်သည်။, +Please ensure {} account is a Balance Sheet account. ,{} အကောင့်သည် Balance Sheet အကောင့်တစ်ခုဖြစ်ကြောင်းသေချာပါစေ။, +You can change the parent account to a Balance Sheet account or select a different account.,သင်သည်မိဘအကောင့်ကို Balance Sheet အကောင့်သို့ပြောင်းနိုင်သည်သို့မဟုတ်အခြားအကောင့်တစ်ခုကိုရွေးချယ်နိုင်သည်။, +Please ensure {} account is a Receivable account. ,ကျေးဇူးပြုပြီး {} အကောင့်သည်ငွေရနိုင်သောအကောင့်တစ်ခုဖြစ်ကြောင်းသေချာပါစေ။, +Change the account type to Receivable or select a different account.,အကောင့်အမျိုးအစားကိုလက်ခံရန်သို့ပြောင်းလဲပါသို့မဟုတ်အခြားအကောင့်တစ်ခုကိုရွေးချယ်ပါ။, +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} ရရှိသော Loyalty Points များကိုရွေးယူပြီးကတည်းကဖျက်သိမ်းလို့မရပါ။ {} No {} ကိုအရင်ဖျက်ပါ, +already exists,ရှိပြီးသား, +POS Closing Entry {} against {} between selected period,POS ပိတ် {{} ကိုရွေးချယ်ထားသည့်အချိန်ကာလအကြား၌}, +POS Invoice is {},POS ငွေတောင်းခံလွှာ {}, +POS Profile doesn't matches {},POS ကိုယ်ရေးအချက်အလက် {} သည်မကိုက်ညီပါ, +POS Invoice is not {},POS ငွေတောင်းခံလွှာသည် {} မဟုတ်ပါ။, +POS Invoice isn't created by user {},POS ငွေတောင်းခံလွှာကိုအသုံးပြုသူ {} မှမဖန်တီးပါ။, +Row #{}: {},အတန်း # {}: {}, +Invalid POS Invoices,မမှန်ကန်သော POS ငွေတောင်းခံလွှာ, +Please add the account to root level Company - {},ကျေးဇူးပြု၍ အကောင့်ကို root level ကုမ္ပဏီသို့ထည့်ပါ။ {{}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",ကလေးကုမ္မဏီ {0} အတွက်အကောင့်တစ်ခုဖွင့်လှစ်စဉ်တွင်မိဘအကောင့် {1} ကိုရှာမတွေ့ပါ။ ကျေးဇူးပြု၍ သက်ဆိုင်ရာ COA တွင်မိဘအကောင့်ကိုဖွင့်ပါ, +Account Not Found,အကောင့်မတွေ့ပါ, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",ကလေးကုမ္မဏီ {0} အတွက်အကောင့်တစ်ခုဖွင့်လှစ်စဉ်တွင်မိဘအကောင့် {1} ကိုအကောင့်တစ်ခုအဖြစ်တွေ့ရှိရသည်။, +Please convert the parent account in corresponding child company to a group account.,ကျေးဇူးပြု၍ သက်ဆိုင်ရာကလေးကုမ္ပဏီမှမိဘအကောင့်ကိုအုပ်စုအကောင့်တစ်ခုသို့ပြောင်းပါ။, +Invalid Parent Account,မမှန်ကန်သောမိဘအကောင့်, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",နာမည်ပြောင်းလဲခြင်းကိုမိဘကုမ္ပဏီ {0} မှတဆင့်မတိုက်ဆိုင်မှုကိုရှောင်ရှားရန်သာခွင့်ပြုသည်။, +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.",သင် {2} {1} ပမာဏ {2} ပမာဏရှိခဲ့လျှင်ဤအစီအစဉ် {3} ကိုအသုံးချလိမ့်မည်။, +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.",အကယ်၍ သင် {0} {1} တန်ဖိုးရှိပစ္စည်း {2} ဖြစ်ပါကအစီအစဉ် {3} ကိုအသုံးချပါ။, +"As the field {0} is enabled, the field {1} is mandatory.",Field {0} ကို enable လုပ်ထားသောကြောင့် {1} သည်မဖြစ်မနေလိုအပ်သည်။, +"As the field {0} is enabled, the value of the field {1} should be more than 1.",Field {0} ကို enable လုပ်ထားသောကြောင့် field {1} ၏တန်ဖိုးသည် 1 ထက်ပိုရမည်။, +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},အရောင်းအမိန့် {2} ကိုအပြည့်အဝသိမ်းဆည်းထားနိုင်သောကြောင့်ပစ္စည်း {1} အမှတ်စဉ်နံပါတ် {0} ကိုမပို့နိုင်ပါ။, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.",အရောင်းအမိန့် {0} တွင် {1} အတွက်ကြိုတင်မှာကြားထားပြီးပါပြီ {1} ကိုသာ {1} သို့ထားရှိပြီးအရံသိမ်းထားနိုင်သည်။, +{0} Serial No {1} cannot be delivered,{0} နံပါတ်အမှတ် ၁ ကိုမပို့နိုင်ပါ, +Row {0}: Subcontracted Item is mandatory for the raw material {1},အတန်း {0} - ကုန်ကြမ်းပစ္စည်းအတွက်ကန်ထရိုက်စာချုပ်ချုပ်ဆိုထားသည့်အရာသည်မဖြစ်မနေလိုအပ်သည်။ {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.",ကုန်ကြမ်းအလုံအလောက်ရှိသဖြင့်ကုန်ကြမ်းပစ္စည်းတောင်းဆိုမှုသည်ဂိုဒေါင် {0} အတွက်မလိုအပ်ပါ။, +" If you still want to proceed, please enable {0}.",ဆက်လုပ်လိုလျှင် {0} ကိုဖွင့်ပါ။, +The item referenced by {0} - {1} is already invoiced,{0} - {1} ကညွှန်းထားတဲ့ပစ္စည်းကိုငွေတောင်းခံပြီးပြီ, +Therapy Session overlaps with {0},ကုထုံးတွေ့ဆုံဆွေးနွေးမှု {0} နှင့်ထပ်နေသည်, +Therapy Sessions Overlapping,ကုထုံးတွေ့ဆုံဆွေးနွေးပွဲ, +Therapy Plans,ကုထုံးအစီအစဉ်များ, +"Item Code, warehouse, quantity are required on row {0}","item ကုဒ်, ဂိုဒေါင်, အရေအတွက်အတန်း {0} တွင်လိုအပ်သည်။", +Get Items from Material Requests against this Supplier,ဒီပေးသွင်းသူဆန့်ကျင်ပစ္စည်းတောင်းဆိုမှုများမှပစ္စည်းများရယူပါ, +Enable European Access,ဥရောပ Access ကိုဖွင့်, +Creating Purchase Order ...,ဝယ်ယူမှုအမိန့်ကိုဖန်တီးခြင်း ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",အောက်ဖော်ပြပါပစ္စည်းများ၏ပုံမှန်ပေးသွင်းသူထံမှပေးသွင်းရွေးချယ်ပါ။ ရွေးချယ်မှုတွင်ရွေးချယ်ထားသောပေးသွင်းသူနှင့်သာသက်ဆိုင်သောပစ္စည်းများကိုသာ ၀ ယ်ရန်အမိန့်ပေးလိမ့်မည်။, +Row #{}: You must select {} serial numbers for item {}.,Row # {} - item {} အတွက်နံပါတ်စဉ်ဆက်ရွေးပါ။, diff --git a/erpnext/translations/nl.csv b/erpnext/translations/nl.csv index 47d11e7930..fbadc02327 100644 --- a/erpnext/translations/nl.csv +++ b/erpnext/translations/nl.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',Kan niet Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',Kan niet aftrekken als categorie is voor 'Valuation' of 'Vaulation en Total', "Cannot delete Serial No {0}, as it is used in stock transactions","Kan Serienummer {0} niet verwijderen, omdat het wordt gebruikt in voorraadtransacties", Cannot enroll more than {0} students for this student group.,Kan niet meer dan {0} studenten voor deze groep studenten inschrijven., -Cannot find Item with this barcode,Kan item met deze barcode niet vinden, Cannot find active Leave Period,Actieve verlofperiode niet te vinden, Cannot produce more Item {0} than Sales Order quantity {1},Kan niet meer produceren van Artikel {0} dan de Verkooporder hoeveelheid {1}, Cannot promote Employee with status Left,Kan werknemer met status links niet promoten, @@ -690,7 +689,6 @@ Create Variants,Maak varianten, "Create and manage daily, weekly and monthly email digests.","Aanmaken en beheren van dagelijkse, wekelijkse en maandelijkse e-mail samenvattingen.", Create customer quotes,Maak een offerte voor de klant, Create rules to restrict transactions based on values.,Regels maken om transacties op basis van waarden te beperken., -Created By,Gemaakt door, Created {0} scorecards for {1} between: ,Gecreëerd {0} scorecards voor {1} tussen:, Creating Company and Importing Chart of Accounts,Bedrijf aanmaken en rekeningschema importeren, Creating Fees,Fees creëren, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Voor Magazijn is vereist voor het Indien For row {0}: Enter Planned Qty,Voor rij {0}: Voer het geplande aantal in, "For {0}, only credit accounts can be linked against another debit entry","Voor {0}, kan alleen credit accounts worden gekoppeld tegen een andere debetboeking", "For {0}, only debit accounts can be linked against another credit entry","Voor {0}, kan alleen debet accounts worden gekoppeld tegen een andere creditering", -Form View,Formulierweergave, Forum Activity,Forumactiviteit, Free item code is not selected,Gratis artikelcode is niet geselecteerd, Freight and Forwarding Charges,Vracht-en verzendkosten, @@ -2638,7 +2635,6 @@ Send SMS,SMS versturen, Send mass SMS to your contacts,Stuur massa SMS naar uw contacten, Sensitivity,Gevoeligheid, Sent,verzonden, -Serial #,Serial #, Serial No and Batch,Serienummer en batch, Serial No is mandatory for Item {0},Serienummer is verplicht voor Artikel {0}, Serial No {0} does not belong to Batch {1},Serienummer {0} hoort niet bij Batch {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Welkom bij ERPNext, What do you need help with?,Waarmee heb je hulp nodig?, What does it do?,Wat doet het?, Where manufacturing operations are carried.,Waar de productie-activiteiten worden uitgevoerd., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Tijdens het maken van een account voor het onderliggende bedrijf {0}, is het ouderaccount {1} niet gevonden. Maak het ouderaccount aan in het bijbehorende COA", White,Wit, Wire Transfer,overboeking, WooCommerce Products,WooCommerce-producten, @@ -3493,6 +3488,7 @@ Likes,Sympathieën, Merge with existing,Samenvoegen met bestaande, Office,Kantoor, Orientation,oriëntering, +Parent,Bovenliggend, Passive,Passief, Payment Failed,Betaling mislukt, Percent,Percentage, @@ -3543,6 +3539,7 @@ Shift,Verschuiving, Show {0},Toon {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Speciale tekens behalve "-", "#", ".", "/", "{" En "}" niet toegestaan in naamgevingsreeks", Target Details,Doelgegevens, +{0} already has a Parent Procedure {1}.,{0} heeft al een ouderprocedure {1}., API,API, Annual,jaar-, Approved,Aangenomen, @@ -4241,7 +4238,6 @@ Download as JSON,Downloaden als JSON, End date can not be less than start date,Einddatum kan niet vroeger zijn dan startdatum, For Default Supplier (Optional),Voor standaardleverancier (optioneel), From date cannot be greater than To date,Vanaf de datum kan niet groter zijn dan tot nu toe, -Get items from,Krijgen items uit, Group by,Groeperen volgens, In stock,Op voorraad, Item name,Artikelnaam, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Kwaliteit Feedback sjabloon parameter, Quality Goal,Kwaliteitsdoel, Monitoring Frequency,Monitoring frequentie, Weekday,Weekdag, -January-April-July-October,Januari-april-juli-oktober, -Revision and Revised On,Herziening en herzien op, -Revision,Herziening, -Revised On,Herzien op, Objectives,Doelen, Quality Goal Objective,Kwaliteitsdoelstelling, Objective,Doelstelling, @@ -7574,7 +7566,6 @@ Parent Procedure,Ouderprocedure, Processes,Processen, Quality Procedure Process,Kwaliteitsproces-proces, Process Description,Procesbeschrijving, -Child Procedure,Kinderprocedure, Link existing Quality Procedure.,Koppel bestaande kwaliteitsprocedures., Additional Information,Extra informatie, Quality Review Objective,Kwaliteitsbeoordeling Doelstelling, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Inkooporder Trends, Purchase Receipt Trends,Ontvangstbevestiging Trends, Purchase Register,Inkoop Register, Quotation Trends,Offerte Trends, -Quoted Item Comparison,Geciteerd Item Vergelijking, Received Items To Be Billed,Ontvangen artikelen nog te factureren, Qty to Order,Aantal te bestellen, Requested Items To Be Transferred,Aangevraagde Artikelen te Verplaatsen, @@ -9091,7 +9081,6 @@ Unmarked days,Ongemarkeerde dagen, Absent Days,Afwezige dagen, Conditions and Formula variable and example,Voorwaarden en Formule variabele en voorbeeld, Feedback By,Feedback door, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Productiesectie, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",Standaard wordt de klantnaam ingesteld volgens de ingevoerde volledige naam. Als u wilt dat klanten worden genoemd door een, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Configureer de standaardprijslijst bij het aanmaken van een nieuwe verkooptransactie. Artikelprijzen worden opgehaald uit deze prijslijst., @@ -9692,7 +9681,6 @@ Available Balance,beschikbaar saldo, Reserved Balance,Gereserveerd saldo, Uncleared Balance,Onduidelijk saldo, Payment related to {0} is not completed,De betaling met betrekking tot {0} is niet voltooid, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rij # {}: serienummer {}. {} is al verwerkt in een andere POS-factuur. Selecteer een geldig serienummer., Row #{}: Item Code: {} is not available under warehouse {}.,Rij # {}: artikelcode: {} is niet beschikbaar onder magazijn {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Rij # {}: voorraadhoeveelheid niet genoeg voor artikelcode: {} onder magazijn {}. Beschikbare kwaliteit {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Rij # {}: selecteer een serienummer en batch voor artikel: {} of verwijder het om de transactie te voltooien., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Hoeveelheid niet beschikbaar voo Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Schakel Negatieve voorraad toestaan in Voorraadinstellingen in of maak voorraadinvoer om door te gaan., No Inpatient Record found against patient {0},Geen ziekenhuisrecord gevonden voor patiënt {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Er bestaat al een bestelling voor intramurale medicatie {0} tegen ontmoeting met de patiënt {1}., +Allow In Returns,Sta in retouren toe, +Hide Unavailable Items,Verberg niet-beschikbare items, +Apply Discount on Discounted Rate,Korting op kortingstarief toepassen, +Therapy Plan Template,Therapieplan sjabloon, +Fetching Template Details,Sjabloondetails ophalen, +Linked Item Details,Gekoppelde itemdetails, +Therapy Types,Therapietypes, +Therapy Plan Template Detail,Details van sjabloon voor therapieplan, +Non Conformance,Niet-conformiteit, +Process Owner,Proces eigenaar, +Corrective Action,Corrigerende maatregelen, +Preventive Action,Preventieve maatregelen, +Problem,Probleem, +Responsible,Verantwoordelijk, +Completion By,Voltooiing door, +Process Owner Full Name,Volledige naam proceseigenaar, +Right Index,Rechter Index, +Left Index,Linker index, +Sub Procedure,Subprocedure, +Passed,Geslaagd, +Print Receipt,Printbon, +Edit Receipt,Bewerk ontvangstbewijs, +Focus on search input,Focus op zoekinvoer, +Focus on Item Group filter,Focus op artikelgroepfilter, +Checkout Order / Submit Order / New Order,Bestelling afrekenen / Bestelling plaatsen / Nieuwe bestelling, +Add Order Discount,Bestellingskorting toevoegen, +Item Code: {0} is not available under warehouse {1}.,Artikelcode: {0} is niet beschikbaar onder magazijn {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Serienummers niet beschikbaar voor artikel {0} onder magazijn {1}. Probeer het magazijn te veranderen., +Fetched only {0} available serial numbers.,Alleen {0} beschikbare serienummers opgehaald., +Switch Between Payment Modes,Schakel tussen betalingsmodi, +Enter {0} amount.,Voer {0} bedrag in., +You don't have enough points to redeem.,U heeft niet genoeg punten om in te wisselen., +You can redeem upto {0}.,U kunt tot {0} inwisselen., +Enter amount to be redeemed.,Voer het in te wisselen bedrag in., +You cannot redeem more than {0}.,U kunt niet meer dan {0} inwisselen., +Open Form View,Open formulierweergave, +POS invoice {0} created succesfully,POS-factuur {0} succesvol aangemaakt, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Voorraadhoeveelheid niet genoeg voor artikelcode: {0} onder magazijn {1}. Beschikbare hoeveelheid {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Serienummer: {0} is al verwerkt in een andere POS-factuur., +Balance Serial No,Weegschaal serienr, +Warehouse: {0} does not belong to {1},Magazijn: {0} behoort niet tot {1}, +Please select batches for batched item {0},Selecteer batches voor batchartikel {0}, +Please select quantity on row {0},Selecteer het aantal op rij {0}, +Please enter serial numbers for serialized item {0},Voer serienummers in voor artikelen met serienummer {0}, +Batch {0} already selected.,Batch {0} is al geselecteerd., +Please select a warehouse to get available quantities,Selecteer een magazijn om beschikbare hoeveelheden te krijgen, +"For transfer from source, selected quantity cannot be greater than available quantity",Voor overdracht vanaf de bron kan de geselecteerde hoeveelheid niet groter zijn dan de beschikbare hoeveelheid, +Cannot find Item with this Barcode,Kan item met deze streepjescode niet vinden, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} is verplicht. Misschien is er geen valutawisselrecord gemaakt voor {1} tot {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} heeft items ingediend die eraan zijn gekoppeld. U moet de activa annuleren om een inkoopretour te creëren., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Kan dit document niet annuleren omdat het is gekoppeld aan het ingediende item {0}. Annuleer het om door te gaan., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rij # {}: serienummer {} is al verwerkt in een andere POS-factuur. Selecteer een geldig serienummer., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rij # {}: serienummers {} is al verwerkt in een andere POS-factuur. Selecteer een geldig serienummer., +Item Unavailable,Item niet beschikbaar, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Rij # {}: serienummer {} kan niet worden geretourneerd omdat deze niet is verwerkt in de originele factuur {}, +Please set default Cash or Bank account in Mode of Payment {},Stel een standaard contant of bankrekening in in Betalingsmethode {}, +Please set default Cash or Bank account in Mode of Payments {},Stel standaard contant geld of bankrekening in in Betalingsmethode {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Zorg ervoor dat de {} rekening een balansrekening is. U kunt de bovenliggende rekening wijzigen in een balansrekening of een andere rekening selecteren., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Zorg ervoor dat {} rekening een te betalen rekening is. Wijzig het rekeningtype in Betaalbaar of selecteer een andere rekening., +Row {}: Expense Head changed to {} ,Rij {}: uitgavenkop gewijzigd in {}, +because account {} is not linked to warehouse {} ,omdat account {} niet is gekoppeld aan magazijn {}, +or it is not the default inventory account,of het is niet de standaard voorraadrekening, +Expense Head Changed,Uitgavenhoofd gewijzigd, +because expense is booked against this account in Purchase Receipt {},omdat onkosten worden geboekt op deze rekening in Aankoopbewijs {}, +as no Purchase Receipt is created against Item {}. ,aangezien er geen aankoopbewijs wordt aangemaakt voor artikel {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Dit wordt gedaan om de boekhouding af te handelen voor gevallen waarin inkoopontvangst wordt aangemaakt na inkoopfactuur, +Purchase Order Required for item {},Inkooporder vereist voor artikel {}, +To submit the invoice without purchase order please set {} ,Stel {} in om de factuur in te dienen zonder inkooporder, +as {} in {},als in {}, +Mandatory Purchase Order,Verplichte inkooporder, +Purchase Receipt Required for item {},Aankoopbewijs vereist voor artikel {}, +To submit the invoice without purchase receipt please set {} ,Stel {} in om de factuur zonder aankoopbewijs in te dienen, +Mandatory Purchase Receipt,Verplichte aankoopbon, +POS Profile {} does not belongs to company {},POS-profiel {} behoort niet tot bedrijf {}, +User {} is disabled. Please select valid user/cashier,Gebruiker {} is uitgeschakeld. Selecteer een geldige gebruiker / kassier, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Rij # {}: originele factuur {} van retourfactuur {} is {}., +Original invoice should be consolidated before or along with the return invoice.,De originele factuur moet vóór of samen met de retourfactuur worden geconsolideerd., +You can add original invoice {} manually to proceed.,U kunt de originele factuur {} handmatig toevoegen om door te gaan., +Please ensure {} account is a Balance Sheet account. ,Zorg ervoor dat de {} rekening een balansrekening is., +You can change the parent account to a Balance Sheet account or select a different account.,U kunt de bovenliggende rekening wijzigen in een balansrekening of een andere rekening selecteren., +Please ensure {} account is a Receivable account. ,Zorg ervoor dat {} rekening een te ontvangen rekening is., +Change the account type to Receivable or select a different account.,Wijzig het rekeningtype in Te ontvangen of selecteer een andere rekening., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} kan niet worden geannuleerd omdat de verdiende loyaliteitspunten zijn ingewisseld. Annuleer eerst de {} Nee {}, +already exists,bestaat al, +POS Closing Entry {} against {} between selected period,POS-sluitingsinvoer {} tegen {} tussen geselecteerde periode, +POS Invoice is {},POS-factuur is {}, +POS Profile doesn't matches {},POS-profiel komt niet overeen met {}, +POS Invoice is not {},POS-factuur is niet {}, +POS Invoice isn't created by user {},POS-factuur is niet gemaakt door gebruiker {}, +Row #{}: {},Rij # {}: {}, +Invalid POS Invoices,Ongeldige POS-facturen, +Please add the account to root level Company - {},Voeg het account toe aan Bedrijf op hoofdniveau - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Bij het maken van een account voor het onderliggende bedrijf {0}, is het bovenliggende account {1} niet gevonden. Maak het ouderaccount aan in het bijbehorende COA", +Account Not Found,Account niet gevonden, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Bij het aanmaken van een account voor kindbedrijf {0}, werd bovenliggende account {1} gevonden als grootboekrekening.", +Please convert the parent account in corresponding child company to a group account.,Converteer het bovenliggende account in het corresponderende onderliggende bedrijf naar een groepsaccount., +Invalid Parent Account,Ongeldig ouderaccount, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Hernoemen is alleen toegestaan via moederbedrijf {0}, om mismatch te voorkomen.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Als u {0} {1} hoeveelheden van het artikel {2} heeft, wordt het schema {3} op het artikel toegepast.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Als u {0} {1} artikel waard {2} bent, wordt het schema {3} op het artikel toegepast.", +"As the field {0} is enabled, the field {1} is mandatory.","Aangezien het veld {0} is ingeschakeld, is het veld {1} verplicht.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Aangezien het veld {0} is ingeschakeld, moet de waarde van het veld {1} groter zijn dan 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Kan serienummer {0} van artikel {1} niet leveren, aangezien het is gereserveerd om verkooporder {2} te vervullen", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Verkooporder {0} heeft een reservering voor het artikel {1}, u kunt alleen gereserveerd leveren {1} tegen {0}.", +{0} Serial No {1} cannot be delivered,{0} Serienummer {1} kan niet worden geleverd, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Rij {0}: uitbesteed artikel is verplicht voor de grondstof {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Aangezien er voldoende grondstoffen zijn, is materiaalaanvraag niet vereist voor Warehouse {0}.", +" If you still want to proceed, please enable {0}.",Schakel {0} in als u toch wilt doorgaan., +The item referenced by {0} - {1} is already invoiced,"Het artikel waarnaar wordt verwezen door {0} - {1}, is al gefactureerd", +Therapy Session overlaps with {0},Therapiesessie overlapt met {0}, +Therapy Sessions Overlapping,Therapiesessies overlappen elkaar, +Therapy Plans,Therapieplannen, +"Item Code, warehouse, quantity are required on row {0}","Artikelcode, magazijn, aantal zijn vereist op rij {0}", +Get Items from Material Requests against this Supplier,Artikelen ophalen van materiaalverzoeken tegen deze leverancier, +Enable European Access,Schakel Europese toegang in, +Creating Purchase Order ...,Inkooporder creëren ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",Selecteer een leverancier uit de standaardleveranciers van de onderstaande items. Bij selectie wordt er alleen een inkooporder gemaakt voor artikelen van de geselecteerde leverancier., +Row #{}: You must select {} serial numbers for item {}.,Rij # {}: u moet {} serienummers voor artikel {} selecteren., diff --git a/erpnext/translations/no.csv b/erpnext/translations/no.csv index f944ac5587..150e5ca4a2 100644 --- a/erpnext/translations/no.csv +++ b/erpnext/translations/no.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',Kan ikke Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',Kan ikke trekke når kategorien er for verdsetting 'eller' Vaulation og Total ', "Cannot delete Serial No {0}, as it is used in stock transactions","Kan ikke slette Serial No {0}, slik det brukes i aksjetransaksjoner", Cannot enroll more than {0} students for this student group.,Kan ikke registrere mer enn {0} studentene på denne studentgruppen., -Cannot find Item with this barcode,Kan ikke finne elementet med denne strekkoden, Cannot find active Leave Period,Kan ikke finne aktiv permisjonstid, Cannot produce more Item {0} than Sales Order quantity {1},Kan ikke produsere mer Element {0} enn Salgsordre kvantitet {1}, Cannot promote Employee with status Left,Kan ikke markedsføre Medarbeider med status til venstre, @@ -690,7 +689,6 @@ Create Variants,Lag Varianter, "Create and manage daily, weekly and monthly email digests.","Opprette og administrere daglige, ukentlige og månedlige e-postfordøyer.", Create customer quotes,Opprett kunde sitater, Create rules to restrict transactions based on values.,Lage regler for å begrense transaksjoner basert på verdier., -Created By,Laget Av, Created {0} scorecards for {1} between: ,Lagde {0} scorecards for {1} mellom:, Creating Company and Importing Chart of Accounts,Opprette selskap og importere kontoplan, Creating Fees,Opprette avgifter, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,For Warehouse er nødvendig før Send, For row {0}: Enter Planned Qty,For rad {0}: Skriv inn Planlagt antall, "For {0}, only credit accounts can be linked against another debit entry",For {0} kan bare kredittkontoer kobles mot en annen belastning oppføring, "For {0}, only debit accounts can be linked against another credit entry",For {0} kan bare belastning kontoer knyttes opp mot en annen kreditt oppføring, -Form View,Formvisning, Forum Activity,Forumaktivitet, Free item code is not selected,Gratis varekode er ikke valgt, Freight and Forwarding Charges,Spedisjons- og Kostnader, @@ -2638,7 +2635,6 @@ Send SMS,Send SMS, Send mass SMS to your contacts,Sende masse SMS til kontaktene dine, Sensitivity,Følsomhet, Sent,Sendte, -Serial #,Serial #, Serial No and Batch,Serial No og Batch, Serial No is mandatory for Item {0},Serial No er obligatorisk for Element {0}, Serial No {0} does not belong to Batch {1},Serienummer {0} tilhører ikke batch {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Velkommen til ERPNext, What do you need help with?,Hva trenger du hjelp med?, What does it do?,Hva gjør det?, Where manufacturing operations are carried.,Hvor fabrikasjonsvirksomhet gjennomføres., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Mens du opprettet konto for barneselskapet {0}, ble ikke foreldrekontoen {1} funnet. Opprett overkonto i tilsvarende COA", White,Hvit, Wire Transfer,Wire Transfer, WooCommerce Products,WooCommerce-produkter, @@ -3493,6 +3488,7 @@ Likes,Likes, Merge with existing,Slå sammen med eksisterende, Office,Kontor, Orientation,orientering, +Parent,Parent, Passive,Passiv, Payment Failed,Betalingen feilet, Percent,Prosent, @@ -3543,6 +3539,7 @@ Shift,Skifte, Show {0},Vis {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Spesialtegn unntatt "-", "#", ".", "/", "{" Og "}" ikke tillatt i navneserier", Target Details,Måldetaljer, +{0} already has a Parent Procedure {1}.,{0} har allerede en foreldreprosedyre {1}., API,API, Annual,Årlig, Approved,Godkjent, @@ -4241,7 +4238,6 @@ Download as JSON,Last ned som JSON, End date can not be less than start date,Sluttdato kan ikke være mindre enn startdato, For Default Supplier (Optional),For standardleverandør (valgfritt), From date cannot be greater than To date,Fra dato ikke kan være større enn To Date, -Get items from,Få elementer fra, Group by,Grupper etter, In stock,På lager, Item name,Navn, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Parameter for tilbakemelding av kvalitet, Quality Goal,Kvalitetsmål, Monitoring Frequency,Overvåkingsfrekvens, Weekday,Weekday, -January-April-July-October,Januar-april-juli-oktober, -Revision and Revised On,Revisjon og revidert på, -Revision,Revisjon, -Revised On,Revidert på, Objectives,Mål, Quality Goal Objective,Kvalitetsmål, Objective,Objektiv, @@ -7574,7 +7566,6 @@ Parent Procedure,Foreldreprosedyre, Processes,prosesser, Quality Procedure Process,Kvalitetsprosedyre, Process Description,Prosess beskrivelse, -Child Procedure,Barneprosedyre, Link existing Quality Procedure.,Koble eksisterende kvalitetsprosedyre., Additional Information,Tilleggsinformasjon, Quality Review Objective,Mål for kvalitetsgjennomgang, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Innkjøpsordre Trender, Purchase Receipt Trends,Kvitteringen Trender, Purchase Register,Kjøp Register, Quotation Trends,Anførsels Trender, -Quoted Item Comparison,Sitert Element Sammenligning, Received Items To Be Billed,Mottatte elementer å bli fakturert, Qty to Order,Antall å bestille, Requested Items To Be Transferred,Etterspør elementene som skal overføres, @@ -9091,7 +9081,6 @@ Unmarked days,Umerkede dager, Absent Days,Fraværende dager, Conditions and Formula variable and example,Betingelser og formelvariabel og eksempel, Feedback By,Tilbakemelding fra, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Produksjonsseksjon, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",Som standard er kundenavnet angitt i henhold til det oppgitte fullstendige navnet. Hvis du vil at kunder skal navngis av en, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Konfigurer standard prisliste når du oppretter en ny salgstransaksjon. Varepriser blir hentet fra denne prislisten., @@ -9692,7 +9681,6 @@ Available Balance,Tilgjengelig balanse, Reserved Balance,Reservert saldo, Uncleared Balance,Uklart saldo, Payment related to {0} is not completed,Betaling relatert til {0} er ikke fullført, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rad nr. {}: Serienr. {}. {} er allerede overført til en annen POS-faktura. Velg gyldig serienummer., Row #{}: Item Code: {} is not available under warehouse {}.,Rad nr. {}: Varekode: {} er ikke tilgjengelig under lager {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Rad nr. {}: Lagerbeholdning ikke nok for varekode: {} under lager {}. Tilgjengelig mengde {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Rad nr. {}: Velg serienummer og batch mot varen: {} eller fjern det for å fullføre transaksjonen., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Mengde som ikke er tilgjengelig Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,"Aktiver Tillat negativ lager i lagerinnstillinger, eller opprett lageroppføring for å fortsette.", No Inpatient Record found against patient {0},Ingen pasientjournaler ble funnet mot pasienten {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Det foreligger allerede et legemiddelbestilling {0} mot pasientmøte {1}., +Allow In Returns,Tillat retur, +Hide Unavailable Items,Skjul utilgjengelige elementer, +Apply Discount on Discounted Rate,Bruk rabatt på nedsatt pris, +Therapy Plan Template,Terapiplanmal, +Fetching Template Details,Henter maldetaljer, +Linked Item Details,Koblede varedetaljer, +Therapy Types,Terapityper, +Therapy Plan Template Detail,Maldetalj for terapiplan, +Non Conformance,Manglende samsvar, +Process Owner,Prosess eier, +Corrective Action,Korrigerende tiltak, +Preventive Action,Forebyggende tiltak, +Problem,Problem, +Responsible,Ansvarlig, +Completion By,Fullføring Av, +Process Owner Full Name,Behandle eierens fullstendige navn, +Right Index,Høyre indeks, +Left Index,Venstre indeks, +Sub Procedure,Underprosedyre, +Passed,Bestått, +Print Receipt,Skriv ut kvittering, +Edit Receipt,Rediger kvittering, +Focus on search input,Fokuser på søkeinngang, +Focus on Item Group filter,Fokuser på varegruppefilter, +Checkout Order / Submit Order / New Order,Kasseordre / send inn bestilling / ny ordre, +Add Order Discount,Legg til bestillingsrabatt, +Item Code: {0} is not available under warehouse {1}.,Varekode: {0} er ikke tilgjengelig under lageret {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Serienumre er ikke tilgjengelig for varen {0} under lageret {1}. Prøv å bytte lager., +Fetched only {0} available serial numbers.,Hentet bare {0} tilgjengelige serienumre., +Switch Between Payment Modes,Bytt mellom betalingsmåter, +Enter {0} amount.,Angi {0} beløp., +You don't have enough points to redeem.,Du har ikke nok poeng til å løse inn., +You can redeem upto {0}.,Du kan løse inn opptil {0}., +Enter amount to be redeemed.,Angi beløpet som skal innløses., +You cannot redeem more than {0}.,Du kan ikke løse inn mer enn {0}., +Open Form View,Åpne skjemavisning, +POS invoice {0} created succesfully,POS-faktura {0} ble opprettet, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Lagerbeholdning ikke nok for varekode: {0} under lager {1}. Tilgjengelig mengde {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Serienr: {0} er allerede overført til en annen POS-faktura., +Balance Serial No,Balanse Serienr, +Warehouse: {0} does not belong to {1},Lager: {0} tilhører ikke {1}, +Please select batches for batched item {0},Velg partier for vareparti {0}, +Please select quantity on row {0},Velg antall på rad {0}, +Please enter serial numbers for serialized item {0},Angi serienumre for serienummeret {0}, +Batch {0} already selected.,Batch {0} allerede valgt., +Please select a warehouse to get available quantities,Velg et lager for å få tilgjengelige mengder, +"For transfer from source, selected quantity cannot be greater than available quantity",For overføring fra kilde kan ikke valgt antall være større enn tilgjengelig mengde, +Cannot find Item with this Barcode,Finner ikke element med denne strekkoden, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} er obligatorisk. Kanskje er det ikke opprettet valutautvekslingspost for {1} til {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} har sendt inn eiendeler knyttet til den. Du må kansellere eiendelene for å opprette kjøpsretur., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Kan ikke kansellere dette dokumentet ettersom det er knyttet til innsendt aktivum {0}. Avbryt det for å fortsette., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rad nr. {}: Serienr. {} Er allerede overført til en annen POS-faktura. Velg gyldig serienummer., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rad nr. {}: Serienr. {} Er allerede overført til en annen POS-faktura. Velg gyldig serienummer., +Item Unavailable,Varen utilgjengelig, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Rad nr. {}: Serienr {} kan ikke returneres siden den ikke ble behandlet i original faktura {}, +Please set default Cash or Bank account in Mode of Payment {},Angi standard kontanter eller bankkontoer i betalingsmåte {}, +Please set default Cash or Bank account in Mode of Payments {},Angi standard kontanter eller bankkontoer i betalingsmåte {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Forsikre deg om at {} kontoen er en balansekonto. Du kan endre foreldrekontoen til en balansekonto eller velge en annen konto., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Forsikre deg om at {} kontoen er en betalbar konto. Endre kontotype til Betales eller velg en annen konto., +Row {}: Expense Head changed to {} ,Rad {}: Utgiftshode endret til {}, +because account {} is not linked to warehouse {} ,fordi kontoen {} ikke er knyttet til lageret {}, +or it is not the default inventory account,eller det er ikke standardbeholdningskontoen, +Expense Head Changed,Utgiftshode endret, +because expense is booked against this account in Purchase Receipt {},fordi utgiftene er bokført mot denne kontoen i kjøpskvittering {}, +as no Purchase Receipt is created against Item {}. ,ettersom ingen kjøpskvittering opprettes mot varen {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Dette gjøres for å håndtere regnskap for saker når kjøpskvittering opprettes etter kjøpsfaktura, +Purchase Order Required for item {},Innkjøpsordre kreves for varen {}, +To submit the invoice without purchase order please set {} ,"For å sende fakturaen uten innkjøpsordre, angi {}", +as {} in {},som i {}, +Mandatory Purchase Order,Obligatorisk innkjøpsordre, +Purchase Receipt Required for item {},Kjøpskvittering kreves for varen {}, +To submit the invoice without purchase receipt please set {} ,For å sende fakturaen uten kjøpskvittering må du angi {}, +Mandatory Purchase Receipt,Obligatorisk kjøpskvittering, +POS Profile {} does not belongs to company {},POS-profil {} tilhører ikke selskapet {}, +User {} is disabled. Please select valid user/cashier,Bruker {} er deaktivert. Velg gyldig bruker / kasserer, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Rad nr. {}: Originalfaktura {} av returfaktura {} er {}., +Original invoice should be consolidated before or along with the return invoice.,Originalfaktura bør konsolideres før eller sammen med returfakturaen., +You can add original invoice {} manually to proceed.,Du kan legge til original faktura {} manuelt for å fortsette., +Please ensure {} account is a Balance Sheet account. ,Forsikre deg om at {} kontoen er en balansekonto., +You can change the parent account to a Balance Sheet account or select a different account.,Du kan endre foreldrekontoen til en balansekonto eller velge en annen konto., +Please ensure {} account is a Receivable account. ,Forsikre deg om at {} kontoen er en mottakbar konto., +Change the account type to Receivable or select a different account.,Endre kontotype til Mottatt eller velg en annen konto., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} kan ikke kanselleres siden opptjente lojalitetspoeng er innløst. Avbryt først {} Nei {}, +already exists,eksisterer allerede, +POS Closing Entry {} against {} between selected period,POS-avslutningspost {} mot {} mellom valgt periode, +POS Invoice is {},POS-faktura er {}, +POS Profile doesn't matches {},POS-profilen samsvarer ikke med {}, +POS Invoice is not {},POS-faktura er ikke {}, +POS Invoice isn't created by user {},POS-faktura er ikke opprettet av brukeren {}, +Row #{}: {},Rad # {}: {}, +Invalid POS Invoices,Ugyldige POS-fakturaer, +Please add the account to root level Company - {},Legg til kontoen i rotnivåfirmaet - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Mens du opprettet konto for Child Company {0}, ble ikke foreldrekontoen {1} funnet. Opprett foreldrekontoen i tilsvarende COA", +Account Not Found,Konto ikke funnet, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Mens du opprettet konto for Child Company {0}, ble foreldrekontoen {1} funnet som en hovedkontokonto.", +Please convert the parent account in corresponding child company to a group account.,Konverter moderkontoen i tilsvarende barnefirma til en gruppekonto., +Invalid Parent Account,Ugyldig foreldrekonto, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",Endring av navn er bare tillatt via morselskapet {0} for å unngå uoverensstemmelse., +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Hvis du {0} {1} mengder av varen {2}, blir ordningen {3} brukt på varen.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Hvis du {0} {1} verdt varen {2}, blir ordningen {3} brukt på varen.", +"As the field {0} is enabled, the field {1} is mandatory.","Siden feltet {0} er aktivert, er feltet {1} obligatorisk.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Ettersom feltet {0} er aktivert, bør verdien av feltet {1} være mer enn 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Kan ikke levere serienummer {0} av varen {1} ettersom den er reservert for fullstendig salgsordre {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Salgsordre {0} har reservasjon for varen {1}, du kan bare levere reservert {1} mot {0}.", +{0} Serial No {1} cannot be delivered,{0} Serienr {1} kan ikke leveres, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Rad {0}: Vare for underleverandør er obligatorisk for råvaren {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Siden det er tilstrekkelig med råvarer, er ikke materialforespørsel nødvendig for lageret {0}.", +" If you still want to proceed, please enable {0}.","Hvis du fremdeles vil fortsette, aktiver {0}.", +The item referenced by {0} - {1} is already invoiced,Varen det refereres til av {0} - {1} er allerede fakturert, +Therapy Session overlaps with {0},Behandlingsøkten overlapper med {0}, +Therapy Sessions Overlapping,Terapisessioner overlapper hverandre, +Therapy Plans,Terapiplaner, +"Item Code, warehouse, quantity are required on row {0}","Varekode, lager, antall kreves på rad {0}", +Get Items from Material Requests against this Supplier,Få varer fra materialforespørsler mot denne leverandøren, +Enable European Access,Aktiver europeisk tilgang, +Creating Purchase Order ...,Opprette innkjøpsordre ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",Velg en leverandør fra standardleverandørene av artiklene nedenfor. Ved valg vil det kun gjøres en innkjøpsordre mot varer som tilhører den valgte leverandøren., +Row #{}: You must select {} serial numbers for item {}.,Rad nr. {}: Du må velge {} serienumre for varen {}., diff --git a/erpnext/translations/pl.csv b/erpnext/translations/pl.csv index ce130d1862..8340b7272f 100644 --- a/erpnext/translations/pl.csv +++ b/erpnext/translations/pl.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Nie mo Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',"Nie można odliczyć, gdy kategoria jest dla 'Wycena' lub 'Vaulation i Total'", "Cannot delete Serial No {0}, as it is used in stock transactions","Nie można usunąć nr seryjnego {0}, ponieważ jest wykorzystywany w transakcjach magazynowych", Cannot enroll more than {0} students for this student group.,Nie można zapisać więcej niż {0} studentów dla tej grupy studentów., -Cannot find Item with this barcode,Nie można znaleźć elementu z tym kodem kreskowym, Cannot find active Leave Period,Nie można znaleźć aktywnego Okresu Nieobecności, Cannot produce more Item {0} than Sales Order quantity {1},Nie można wyprodukować więcej przedmiotów {0} niż wartość {1} na Zamówieniu, Cannot promote Employee with status Left,Nie można promować pracownika z pozostawionym statusem, @@ -690,7 +689,6 @@ Create Variants,Tworzenie Warianty, "Create and manage daily, weekly and monthly email digests.",, Create customer quotes,Tworzenie cytaty z klientami, Create rules to restrict transactions based on values.,, -Created By,Utworzył(a), Created {0} scorecards for {1} between: ,Utworzono {0} karty wyników dla {1} między:, Creating Company and Importing Chart of Accounts,Tworzenie firmy i importowanie planu kont, Creating Fees,Tworzenie opłat, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Dla magazynu jest wymagane przed wysłan For row {0}: Enter Planned Qty,Dla wiersza {0}: wpisz planowaną liczbę, "For {0}, only credit accounts can be linked against another debit entry","Dla {0}, tylko Kredytowane konta mogą być połączone z innym zapisem po stronie debetowej", "For {0}, only debit accounts can be linked against another credit entry","Dla {0}, tylko rachunki płatnicze mogą być połączone z innym wejściem kredytową", -Form View,Widok formularza, Forum Activity,Aktywność na forum, Free item code is not selected,Kod wolnego przedmiotu nie jest wybrany, Freight and Forwarding Charges,Koszty dostaw i przesyłek, @@ -2638,7 +2635,6 @@ Send SMS,Wyślij SMS, Send mass SMS to your contacts,Wyślij zbiorczo sms do swoich kontaktów, Sensitivity,Wrażliwość, Sent,Wysłano, -Serial #,Seryjny #, Serial No and Batch,Numer seryjny oraz Batch, Serial No is mandatory for Item {0},Nr seryjny jest obowiązkowy dla pozycji {0}, Serial No {0} does not belong to Batch {1},Numer seryjny {0} nie należy do partii {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Zapraszamy do ERPNext, What do you need help with?,Z czym potrzebujesz pomocy?, What does it do?,Czym się zajmuje?, Where manufacturing operations are carried.,"W przypadku, gdy czynności wytwórcze są prowadzone.", -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",Podczas tworzenia konta dla firmy podrzędnej {0} nie znaleziono konta nadrzędnego {1}. Utwórz konto nadrzędne w odpowiednim COA, White,Biały, Wire Transfer,Przelew, WooCommerce Products,Produkty WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Lubi, Merge with existing,Połączy się z istniejącą, Office,Biuro, Orientation,Orientacja, +Parent,Nadrzędny, Passive,Nieaktywny, Payment Failed,Płatność nie powiodła się, Percent,Procent, @@ -3543,6 +3539,7 @@ Shift,Przesunięcie, Show {0},Pokaż {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Znaki specjalne z wyjątkiem „-”, „#”, „.”, „/”, „{” I „}” niedozwolone w serii nazw", Target Details,Szczegóły celu, +{0} already has a Parent Procedure {1}.,{0} ma już procedurę nadrzędną {1}., API,API, Annual,Roczny, Approved,Zatwierdzono, @@ -4241,7 +4238,6 @@ Download as JSON,Pobierz jako JSON, End date can not be less than start date,"Data zakończenia nie może być wcześniejsza, niż data rozpoczęcia", For Default Supplier (Optional),Dla dostawcy domyślnego (opcjonalnie), From date cannot be greater than To date,Data od - nie może być późniejsza niż Data do, -Get items from,Pobierz zawartość z, Group by,Grupuj według, In stock,W magazynie, Item name,Nazwa pozycji, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Parametr szablonu opinii o jakości, Quality Goal,Cel jakości, Monitoring Frequency,Monitorowanie częstotliwości, Weekday,Dzień powszedni, -January-April-July-October,Styczeń-kwiecień-lipiec-październik, -Revision and Revised On,Rewizja i poprawione na, -Revision,Rewizja, -Revised On,Zmieniono na, Objectives,Cele, Quality Goal Objective,Cel celu jakości, Objective,Cel, @@ -7574,7 +7566,6 @@ Parent Procedure,Procedura rodzicielska, Processes,Procesy, Quality Procedure Process,Proces procedury jakości, Process Description,Opis procesu, -Child Procedure,Procedura dziecka, Link existing Quality Procedure.,Połącz istniejącą procedurę jakości., Additional Information,Dodatkowe informacje, Quality Review Objective,Cel przeglądu jakości, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Trendy Zamówienia Kupna, Purchase Receipt Trends,Trendy Potwierdzenia Zakupu, Purchase Register,Rejestracja Zakupu, Quotation Trends,Trendy Wyceny, -Quoted Item Comparison,Porównanie cytowany Item, Received Items To Be Billed,Otrzymane przedmioty czekające na zaksięgowanie, Qty to Order,Ilość do zamówienia, Requested Items To Be Transferred,Proszę o Przetranferowanie Przedmiotów, @@ -9091,7 +9081,6 @@ Unmarked days,Nieoznakowane dni, Absent Days,Nieobecne dni, Conditions and Formula variable and example,Warunki i zmienna formuły oraz przykład, Feedback By,Informacje zwrotne od, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.RRRR .-. MM .-. DD.-, Manufacturing Section,Sekcja Produkcyjna, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Domyślnie nazwa klienta jest ustawiona zgodnie z wprowadzoną pełną nazwą. Jeśli chcesz, aby klienci byli nazwani przez", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Skonfiguruj domyślny Cennik podczas tworzenia nowej transakcji sprzedaży. Ceny pozycji zostaną pobrane z tego Cennika., @@ -9692,7 +9681,6 @@ Available Balance,Dostępne saldo, Reserved Balance,Zarezerwowane saldo, Uncleared Balance,Nierówna równowaga, Payment related to {0} is not completed,Płatność związana z {0} nie została zakończona, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Wiersz nr {}: nr seryjny {}. {} został już przekazany na inną fakturę POS. Proszę wybrać prawidłowy numer seryjny., Row #{}: Item Code: {} is not available under warehouse {}.,Wiersz nr {}: kod towaru: {} nie jest dostępny w magazynie {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Wiersz nr {}: Niewystarczająca ilość towaru dla kodu towaru: {} w magazynie {}. Dostępna Ilość {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,"Wiersz nr {}: Wybierz numer seryjny i partię dla towaru: {} lub usuń je, aby zakończyć transakcję.", @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Ilość niedostępna dla {0} w m Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,"Włącz opcję Zezwalaj na ujemne zapasy w ustawieniach zapasów lub utwórz wpis zapasów, aby kontynuować.", No Inpatient Record found against patient {0},Nie znaleziono dokumentacji szpitalnej dotyczącej pacjenta {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Istnieje już nakaz leczenia szpitalnego {0} przeciwko spotkaniu z pacjentami {1}., +Allow In Returns,Zezwalaj na zwroty, +Hide Unavailable Items,Ukryj niedostępne elementy, +Apply Discount on Discounted Rate,Zastosuj zniżkę na obniżoną stawkę, +Therapy Plan Template,Szablon planu terapii, +Fetching Template Details,Pobieranie szczegółów szablonu, +Linked Item Details,Szczegóły połączonego elementu, +Therapy Types,Rodzaje terapii, +Therapy Plan Template Detail,Szczegóły szablonu planu terapii, +Non Conformance,Niezgodność, +Process Owner,Właściciel procesu, +Corrective Action,Działania naprawcze, +Preventive Action,Akcja prewencyjna, +Problem,Problem, +Responsible,Odpowiedzialny, +Completion By,Zakończenie do, +Process Owner Full Name,Imię i nazwisko właściciela procesu, +Right Index,Prawy indeks, +Left Index,Lewy indeks, +Sub Procedure,Procedura podrzędna, +Passed,Zdał, +Print Receipt,Wydrukuj pokwitowanie, +Edit Receipt,Edytuj rachunek, +Focus on search input,Skoncentruj się na wyszukiwaniu, +Focus on Item Group filter,Skoncentruj się na filtrze grupy przedmiotów, +Checkout Order / Submit Order / New Order,Zamówienie do kasy / Prześlij zamówienie / Nowe zamówienie, +Add Order Discount,Dodaj rabat na zamówienie, +Item Code: {0} is not available under warehouse {1}.,Kod towaru: {0} nie jest dostępny w magazynie {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Numery seryjne są niedostępne dla towaru {0} w magazynie {1}. Spróbuj zmienić magazyn., +Fetched only {0} available serial numbers.,Pobrano tylko {0} dostępnych numerów seryjnych., +Switch Between Payment Modes,Przełącz między trybami płatności, +Enter {0} amount.,Wprowadź kwotę {0}., +You don't have enough points to redeem.,"Nie masz wystarczającej liczby punktów, aby je wymienić.", +You can redeem upto {0}.,Możesz wykorzystać maksymalnie {0}., +Enter amount to be redeemed.,Wprowadź kwotę do wykupu., +You cannot redeem more than {0}.,Nie możesz wykorzystać więcej niż {0}., +Open Form View,Otwórz widok formularza, +POS invoice {0} created succesfully,Faktura POS {0} została utworzona pomyślnie, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Za mało towaru dla kodu towaru: {0} w magazynie {1}. Dostępna ilość {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Nr seryjny: {0} został już sprzedany na inną fakturę POS., +Balance Serial No,Nr seryjny wagi, +Warehouse: {0} does not belong to {1},Magazyn: {0} nie należy do {1}, +Please select batches for batched item {0},Wybierz partie dla produktu wsadowego {0}, +Please select quantity on row {0},Wybierz ilość w wierszu {0}, +Please enter serial numbers for serialized item {0},Wprowadź numery seryjne dla towaru z numerem seryjnym {0}, +Batch {0} already selected.,Wiązka {0} już wybrana., +Please select a warehouse to get available quantities,"Wybierz magazyn, aby uzyskać dostępne ilości", +"For transfer from source, selected quantity cannot be greater than available quantity",W przypadku transferu ze źródła wybrana ilość nie może być większa niż ilość dostępna, +Cannot find Item with this Barcode,Nie można znaleźć przedmiotu z tym kodem kreskowym, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} jest obowiązkowe. Być może rekord wymiany walut nie jest tworzony dla {1} do {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,"{} przesłał zasoby z nim powiązane. Musisz anulować zasoby, aby utworzyć zwrot zakupu.", +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"Nie można anulować tego dokumentu, ponieważ jest on powiązany z przesłanym zasobem {0}. Anuluj, aby kontynuować.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Wiersz nr {}: Numer seryjny {} został już przetworzony na inną fakturę POS. Proszę wybrać prawidłowy numer seryjny., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Wiersz nr {}: numery seryjne {} zostały już przetworzone na inną fakturę POS. Proszę wybrać prawidłowy numer seryjny., +Item Unavailable,Pozycja niedostępna, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"Wiersz nr {}: nr seryjny {} nie może zostać zwrócony, ponieważ nie był przedmiotem transakcji na oryginalnej fakturze {}", +Please set default Cash or Bank account in Mode of Payment {},Ustaw domyślne konto gotówkowe lub bankowe w trybie płatności {}, +Please set default Cash or Bank account in Mode of Payments {},Ustaw domyślne konto gotówkowe lub bankowe w Trybie płatności {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,"Upewnij się, że konto {} jest kontem bilansowym. Możesz zmienić konto nadrzędne na konto bilansowe lub wybrać inne konto.", +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,"Upewnij się, że konto {} jest kontem płatnym. Zmień typ konta na Płatne lub wybierz inne konto.", +Row {}: Expense Head changed to {} ,Wiersz {}: nagłówek wydatków zmieniony na {}, +because account {} is not linked to warehouse {} ,ponieważ konto {} nie jest połączone z magazynem {}, +or it is not the default inventory account,lub nie jest to domyślne konto magazynowe, +Expense Head Changed,Zmiana głowy wydatków, +because expense is booked against this account in Purchase Receipt {},ponieważ wydatek jest księgowany na tym koncie na dowodzie zakupu {}, +as no Purchase Receipt is created against Item {}. ,ponieważ dla przedmiotu {} nie jest tworzony dowód zakupu., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,"Ma to na celu obsługę księgowania przypadków, w których paragon zakupu jest tworzony po fakturze zakupu", +Purchase Order Required for item {},Wymagane zamówienie zakupu dla produktu {}, +To submit the invoice without purchase order please set {} ,"Aby przesłać fakturę bez zamówienia, należy ustawić {}", +as {} in {},jak w {}, +Mandatory Purchase Order,Obowiązkowe zamówienie zakupu, +Purchase Receipt Required for item {},Potwierdzenie zakupu jest wymagane dla przedmiotu {}, +To submit the invoice without purchase receipt please set {} ,"Aby przesłać fakturę bez dowodu zakupu, ustaw {}", +Mandatory Purchase Receipt,Obowiązkowy dowód zakupu, +POS Profile {} does not belongs to company {},Profil POS {} nie należy do firmy {}, +User {} is disabled. Please select valid user/cashier,Użytkownik {} jest wyłączony. Wybierz prawidłowego użytkownika / kasjera, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Wiersz nr {}: Oryginalna faktura {} faktury zwrotnej {} to {}., +Original invoice should be consolidated before or along with the return invoice.,Oryginał faktury należy skonsolidować przed lub wraz z fakturą zwrotną., +You can add original invoice {} manually to proceed.,"Aby kontynuować, możesz ręcznie dodać oryginalną fakturę {}.", +Please ensure {} account is a Balance Sheet account. ,"Upewnij się, że konto {} jest kontem bilansowym.", +You can change the parent account to a Balance Sheet account or select a different account.,Możesz zmienić konto nadrzędne na konto bilansowe lub wybrać inne konto., +Please ensure {} account is a Receivable account. ,"Upewnij się, że konto {} jest kontem należnym.", +Change the account type to Receivable or select a different account.,Zmień typ konta na Odbywalne lub wybierz inne konto., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},"Nie można anulować {}, ponieważ zebrane punkty lojalnościowe zostały wykorzystane. Najpierw anuluj {} Nie {}", +already exists,już istnieje, +POS Closing Entry {} against {} between selected period,Wejście zamknięcia POS {} względem {} między wybranym okresem, +POS Invoice is {},Faktura POS to {}, +POS Profile doesn't matches {},Profil POS nie pasuje {}, +POS Invoice is not {},Faktura POS nie jest {}, +POS Invoice isn't created by user {},Faktura POS nie jest tworzona przez użytkownika {}, +Row #{}: {},Wiersz nr {}: {}, +Invalid POS Invoices,Nieprawidłowe faktury POS, +Please add the account to root level Company - {},Dodaj konto do poziomu Firma - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",Podczas tworzenia konta dla firmy podrzędnej {0} nie znaleziono konta nadrzędnego {1}. Utwórz konto rodzica w odpowiednim certyfikacie autentyczności, +Account Not Found,Konto nie znalezione, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",Podczas tworzenia konta dla Firmy podrzędnej {0} konto nadrzędne {1} zostało uznane za konto księgowe., +Please convert the parent account in corresponding child company to a group account.,Zmień konto nadrzędne w odpowiedniej firmie podrzędnej na konto grupowe., +Invalid Parent Account,Nieprawidłowe konto nadrzędne, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Zmiana nazwy jest dozwolona tylko za pośrednictwem firmy macierzystej {0}, aby uniknąć niezgodności.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.",W przypadku {0} {1} ilości towaru {2} schemat {3} zostanie zastosowany do towaru., +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Jeśli {0} {1} cenisz przedmiot {2}, schemat {3} zostanie zastosowany do elementu.", +"As the field {0} is enabled, the field {1} is mandatory.","Ponieważ pole {0} jest włączone, pole {1} jest obowiązkowe.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Ponieważ pole {0} jest włączone, wartość pola {1} powinna być większa niż 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Nie można dostarczyć numeru seryjnego {0} elementu {1}, ponieważ jest on zarezerwowany do realizacji zamówienia sprzedaży {2}", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Zamówienie sprzedaży {0} ma rezerwację na produkt {1}, możesz dostarczyć zarezerwowane tylko {1} w ramach {0}.", +{0} Serial No {1} cannot be delivered,Nie można dostarczyć {0} numeru seryjnego {1}, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Wiersz {0}: Pozycja podwykonawcza jest obowiązkowa dla surowca {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Ponieważ ilość surowców jest wystarczająca, żądanie materiałów nie jest wymagane dla magazynu {0}.", +" If you still want to proceed, please enable {0}.","Jeśli nadal chcesz kontynuować, włącz {0}.", +The item referenced by {0} - {1} is already invoiced,"Pozycja, do której odwołuje się {0} - {1}, została już zafakturowana", +Therapy Session overlaps with {0},Sesja terapeutyczna pokrywa się z {0}, +Therapy Sessions Overlapping,Nakładanie się sesji terapeutycznych, +Therapy Plans,Plany terapii, +"Item Code, warehouse, quantity are required on row {0}","Kod pozycji, magazyn, ilość są wymagane w wierszu {0}", +Get Items from Material Requests against this Supplier,Pobierz pozycje z żądań materiałowych od tego dostawcy, +Enable European Access,Włącz dostęp w Europie, +Creating Purchase Order ...,Tworzenie zamówienia zakupu ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Wybierz dostawcę spośród domyślnych dostawców z poniższych pozycji. Po dokonaniu wyboru, Zamówienie zostanie złożone wyłącznie dla pozycji należących do wybranego Dostawcy.", +Row #{}: You must select {} serial numbers for item {}.,Wiersz nr {}: należy wybrać {} numery seryjne dla towaru {}., diff --git a/erpnext/translations/ps.csv b/erpnext/translations/ps.csv index ffc7b3d104..1dcaf48d79 100644 --- a/erpnext/translations/ps.csv +++ b/erpnext/translations/ps.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',وضع Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',وضع نه شي کله چې وېشنيزه کې د 'ارزښت' یا د 'Vaulation او Total' دی, "Cannot delete Serial No {0}, as it is used in stock transactions",ړنګ نه شي کولای شعبه {0}، لکه څنګه چې په سټاک معاملو کارول, Cannot enroll more than {0} students for this student group.,په پرتله {0} د زده کوونکو لپاره له دغه زده ډلې نور شامل نه شي., -Cannot find Item with this barcode,د دې بارکوډ سره توکي نشي موندلی, Cannot find active Leave Period,د فعالې دورې دوره نشي موندلی, Cannot produce more Item {0} than Sales Order quantity {1},آیا د پلورنې نظم کمیت څخه زیات د قالب {0} د توليد نه {1}, Cannot promote Employee with status Left,نشي کولی د رتبې سره کارمندانو ته وده ورکړي, @@ -690,7 +689,6 @@ Create Variants,بدلونونه رامینځته کړئ, "Create and manage daily, weekly and monthly email digests.",جوړول او هره ورځ، هفته وار او ماهوار ایمیل digests اداره کړي., Create customer quotes,د پېرېدونکو يادي جوړول, Create rules to restrict transactions based on values.,قواعد معاملو پر بنسټ د ارزښتونو د محدودولو جوړول., -Created By,ايجاد By, Created {0} scorecards for {1} between: ,تر منځ د {1} لپاره {0} سکورکارډونه جوړ شوي:, Creating Company and Importing Chart of Accounts,د شرکت رامینځته کول او د حسابونو واردولو چارټ, Creating Fees,د فیس جوړول, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,د ګدام مخکې اړتیا سپار For row {0}: Enter Planned Qty,د قطار لپاره {0}: پلان شوي مقدار درج کړئ, "For {0}, only credit accounts can be linked against another debit entry",د {0}، يوازې د پور حسابونو بل ډیبیټ د ننوتلو په وړاندې سره وتړل شي, "For {0}, only debit accounts can be linked against another credit entry",د {0}، يوازې ډیبیټ حسابونو کولای شي د پور بل د ننوتلو په وړاندې سره وتړل شي, -Form View,د فارم لید, Forum Activity,د فورم فعالیت, Free item code is not selected,د وړیا توکی کوډ نه دی غوره شوی, Freight and Forwarding Charges,بار او استول په تور, @@ -2638,7 +2635,6 @@ Send SMS,وليږئ پیغامونه, Send mass SMS to your contacts,ستاسو د تماس ډله SMS وليږئ, Sensitivity,حساسیت, Sent,ته وليږدول شوه, -Serial #,سریال #, Serial No and Batch,شعبه او دسته, Serial No is mandatory for Item {0},شعبه لپاره د قالب الزامی دی {0}, Serial No {0} does not belong to Batch {1},سیریل نمبر {1} د بچ پورې تړاو نلري {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ته ERPNext ته ښه راغلاست, What do you need help with?,تاسو څه سره د مرستې ضرورت لرئ؟, What does it do?,دا څه کوي؟, Where manufacturing operations are carried.,هلته عملیاتو په جوړولو سره کيږي., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",په داسې حال کې چې د ماشوم شرکت account 0} لپاره اکاونټ رامینځته کړی ، د مور او پلار حساب {1} ونه موندل شو. مهرباني وکړئ په اړوند COA کې اصلي حساب جوړ کړئ, White,سپین, Wire Transfer,تار بدلول, WooCommerce Products,د WooCommerce محصولات, @@ -3493,6 +3488,7 @@ Likes,خوښوي, Merge with existing,سره د موجوده لېږدونه, Office,دفتر, Orientation,لورموندنه, +Parent,Parent, Passive,Passive, Payment Failed,د تادیاتو کې پاتې راغی, Percent,په سلو کې, @@ -3543,6 +3539,7 @@ Shift,شفټ, Show {0},ښودل {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",ځانګړي نومونه د "-" ، "#" ، "." ، "/" ، "{" او "}" نوم لیکلو کې اجازه نه لري, Target Details,د هدف توضیحات, +{0} already has a Parent Procedure {1}.,{0} د مخه د والدین پروسیجر {1} لري., API,API, Annual,کلنی, Approved,تصویب شوې, @@ -4241,7 +4238,6 @@ Download as JSON,د Json په څیر ډاونلوډ کړئ, End date can not be less than start date,د پای نیټه نه شي کولای په پرتله د پیل نیټه کمه وي, For Default Supplier (Optional),د اصلي عرضه کوونکي لپاره (اختیاري), From date cannot be greater than To date,د نیټې څخه د نیټې څخه تر ډیره لوی نه وي, -Get items from,له توکي ترلاسه کړئ, Group by,ډله په, In stock,په ګدام کښي, Item name,د قالب نوم, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,د کیفیت فیډبیک ټیمپلیټ پ Quality Goal,د کیفیت هدف, Monitoring Frequency,د فریکونسي څارنه, Weekday,د اونۍ ورځ, -January-April-July-October,د جنوري - اپریل - جولای - اکتوبر, -Revision and Revised On,بیاکتل او بیاکتل شوی, -Revision,بیاکتنه, -Revised On,بیاکتل شوی, Objectives,موخې, Quality Goal Objective,د کیفیت موخې هدف, Objective,هدف, @@ -7574,7 +7566,6 @@ Parent Procedure,اصلي کړنلاره, Processes,پروسې, Quality Procedure Process,د کیفیت پروسیجر پروسه, Process Description,د پروسې توضیحات, -Child Procedure,د ماشوم طرزالعمل, Link existing Quality Procedure.,د کیفیت موجوده پروسیجر لینک کړئ., Additional Information,نور معلومات, Quality Review Objective,د کیفیت بیاکتنې هدف, @@ -8557,7 +8548,6 @@ Purchase Order Trends,پیري نظم رجحانات, Purchase Receipt Trends,رانيول رسيد رجحانات, Purchase Register,رانيول د نوم ثبتول, Quotation Trends,د داوطلبۍ رجحانات, -Quoted Item Comparison,له خولې د قالب پرتله, Received Items To Be Billed,ترلاسه توکي چې د محاسبې ته شي, Qty to Order,Qty ته اخلي., Requested Items To Be Transferred,غوښتنه سامان ته انتقال شي, @@ -9091,7 +9081,6 @@ Unmarked days,نخښه شوي ورځې, Absent Days,غیر حاضر ورځې, Conditions and Formula variable and example,شرایط او فورمول متغیر او مثال, Feedback By,تاثرات د, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,د تولید برخې, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",په ډیفالټ ، د پیرودونکي نوم د درج شوي بشپړ نوم سره سم تنظیم شوی. که تاسو غواړئ پیرودونکي د a لخوا نومول شي, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,د پلور نرخ لیست تنظیم کړئ کله چې د پلور نوی معامله رامینځته کړئ. د توکو قیمتونه به د دې نرخ لیست څخه راوړل شي., @@ -9692,7 +9681,6 @@ Available Balance,موجوده پیسی, Reserved Balance,خوندي بیلانس, Uncleared Balance,بې باوري بیلانس, Payment related to {0} is not completed,د {0} پورې اړوند تادیه بشپړه شوې نه ده, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,قطار # {}: سریال نمبر {}. } already دمخه په بل POS رسید کې لیږدول شوی دی. مهرباني وکړئ سم سریال نمبر وټاکئ., Row #{}: Item Code: {} is not available under warehouse {}.,قطار # {}: د توکي توکي: {w د ګودام under} لاندې نشته., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,قطار # {}: د توکو مقدار لپاره د زیرمو مقدار کافي ندي: {w ګودام لاندې}}. موجود مقدار {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,قطار # {}: مهرباني وکړئ د سیرم شمیره غوره کړئ او د توکي پروړاندې بیچ: {} یا د لیږد بشپړولو لپاره یې لرې کړئ., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},مقدار په are 0 w لپار Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,مهرباني وکړئ د سټاک تنظیماتو کې منفي سټاک ته اجازه ورکړئ یا د پرمخ تللو لپاره سټاک ننوتل رامینځته کړئ., No Inpatient Record found against patient {0},د ناروغ against 0 against په مقابل کې د بستر ناروغانو هیڅ ریکارډ ونه موندل شو, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,د ناروغ ناروغ درملنې} 1} پروړاندې د ناروغ ناروغ درملو امر {0} دمخه شتون لري., +Allow In Returns,په بیرته ستنیدو کې اجازه ورکړه, +Hide Unavailable Items,د لاسرسي وړ توکي پټ کړئ, +Apply Discount on Discounted Rate,په تخفیف نرخ باندې تخفیف غوښتنه کړئ, +Therapy Plan Template,د درملنې پلان ټیمپلیټ, +Fetching Template Details,د ټیمپټول جزييات راوړل, +Linked Item Details,د تړلي توکو توضیحات, +Therapy Types,د درملنې ډولونه, +Therapy Plan Template Detail,د درملنې پلان ټیمپلیټ تفصیل, +Non Conformance,بې پروایی, +Process Owner,د پروسې مالک, +Corrective Action,سمون عمل, +Preventive Action,د مخنیوي عمل, +Problem,ستونزه, +Responsible,مسؤل, +Completion By,بشپړول د, +Process Owner Full Name,د پروسې مالک بشپړ نوم, +Right Index,ښۍ شاخص, +Left Index,کی Indې شاخص, +Sub Procedure,فرعي پروسیجر, +Passed,تېر شو, +Print Receipt,رسيدنه چاپ کړئ, +Edit Receipt,رسيدنه, +Focus on search input,د لټون ننوتلو تمرکز وکړئ, +Focus on Item Group filter,د توکو ګروپ فلټر باندې تمرکز وکړئ, +Checkout Order / Submit Order / New Order,د چیک آوټ آرڈر / سپارلو امر / نوی امر, +Add Order Discount,د سپارنې تخفیف اضافه کړئ, +Item Code: {0} is not available under warehouse {1}.,د توکي کوډ: {0} د ګودام {1} لاندې شتون نلري., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,سریال نمبرونه د {0 w ګودام} 1} لاندې توکو کې شتون نلري. مهرباني وکړئ د ګودام بدلولو هڅه وکړئ., +Fetched only {0} available serial numbers.,یوازې {0} موجود سریال نمبرونه راوړل شوي., +Switch Between Payment Modes,د تادیې حالتونو تر منځ تیر کړئ, +Enter {0} amount.,د {0} مقدار ولیکئ., +You don't have enough points to redeem.,تاسو د خلاصولو لپاره کافي نښې نلرئ., +You can redeem upto {0}.,تاسو تر {0} پورې تخفیف کولی شئ., +Enter amount to be redeemed.,د خلاصولو لپاره پیسې دننه کړئ., +You cannot redeem more than {0}.,تاسو د {0} څخه ډیر نشئ تلای., +Open Form View,د فارم لید خلاص کړئ, +POS invoice {0} created succesfully,د پوسټ انوائس {0} په بریالیتوب سره جوړ شو, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,د توکو مقدار لپاره د زیرمو مقدار کافي ندي: are 0 w د ګودام {1} لاندې. موجود مقدار {2}., +Serial No: {0} has already been transacted into another POS Invoice.,سریال نمبر: {0 already دمخه په بل POS رسید کې لیږدول شوی دی., +Balance Serial No,د بیلانس سیریل نمبر, +Warehouse: {0} does not belong to {1},ګودام: {0} له {1} سره تړاو نه لري, +Please select batches for batched item {0},مهرباني وکړئ د کڅوړو توکو لپاره بسته غوره کړئ bat 0}, +Please select quantity on row {0},مهرباني وکړئ په قطار کې مقدار وټاکئ quantity 0}, +Please enter serial numbers for serialized item {0},مهرباني وکړئ د سریال شوي توکي serial 0} لپاره سریال نمبرونه دننه کړئ, +Batch {0} already selected.,بیچ} 0} دمخه غوره شوی., +Please select a warehouse to get available quantities,مهرباني وکړئ د موجود مقدارونو ترلاسه کولو لپاره ګودام غوره کړئ, +"For transfer from source, selected quantity cannot be greater than available quantity",د سرچینې څخه د لیږد لپاره ، ټاکل شوی مقدار د موجود مقدار څخه لوی نشي, +Cannot find Item with this Barcode,د دې بارکوډ سره توکي نشي موندلی, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} لازمي دی. شاید د اسعارو تبادلې ریکارډ د {1} څخه تر {2} لپاره نه وي رامینځته شوی, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,} دې سره تړلې شتمني سپارلې ده. تاسو اړتیا لرئ د پیرود بیرته ستنولو لپاره شتمنۍ لغوه کړئ., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,دا سند نشي لغو کولی ځکه چې دا د تسلیم شوي شتمني {0} سره تړاو لري. مهرباني وکړئ ادامه ورکولو لپاره یې لغوه کړئ., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,قطار # {}: سیریل لمبر {already دمخه د بل POS رسید ته لیږدول شوی دی. مهرباني وکړئ سم سریال نمبر وټاکئ., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,قطار # {}: سریال نمبر.} already دمخه په بل POS رسید کې لیږدول شوی دی. مهرباني وکړئ سم سریال نمبر وټاکئ., +Item Unavailable,توکی شتون نلري, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},قطار # {}: سیریل نمبر {be بیرته نشي راوګرځیدلی ځکه چې دا په اصلي رسید کې نه لیږدول کیدی {, +Please set default Cash or Bank account in Mode of Payment {},مهرباني وکړئ د تادیې په حالت کې ډیفالټ نغدي یا بانک حساب ترتیب کړئ {, +Please set default Cash or Bank account in Mode of Payments {},مهرباني وکړئ د تادیې په حالت کې ډیفالټ نغدي یا بانک حساب ترتیب کړئ {, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,مهرباني وکړئ ډاډ ترلاسه کړئ چې}} حساب د بیلانس شیټ حساب دی. تاسو کولی شئ اصلي حساب د بیلانس شیټ حساب ته بدل کړئ یا مختلف حساب غوره کړئ., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,مهرباني وکړئ ډاډ ترلاسه کړئ چې {} حساب د تادیې حساب دی. د حساب ډول په تادیه کې بدل کړئ یا بل مختلف حساب غوره کړئ., +Row {}: Expense Head changed to {} ,قطار {}: د لګښت مشر په {to بدل شو, +because account {} is not linked to warehouse {} ,ځکه چې حساب {} د ګودام سره نه تړل کیږي {, +or it is not the default inventory account,یا دا د ډیفالټ موجود حساب حساب ندی, +Expense Head Changed,د لګښت سر بدل شو, +because expense is booked against this account in Purchase Receipt {},ځکه چې لګښت د پیرود رسید in this کې د دې حساب پروړاندې حساب شوی, +as no Purchase Receipt is created against Item {}. ,لکه څنګه چې د پیرود رسید د توکي against against په مقابل کې نه دی رامینځته شوی., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,دا د قضیو لپاره محاسبې اداره کولو لپاره ترسره کیږي کله چې د پیرود رسید د پیرود رسید وروسته رامینځته کیږي, +Purchase Order Required for item {},د پیرود امر د توکي لپاره اړین دی {}, +To submit the invoice without purchase order please set {} ,د پیرود امر پرته رسید سپارلو لپاره مهرباني وکړئ ټایپ کړئ set, +as {} in {},لکه په {}, +Mandatory Purchase Order,د لازمي پیرود امر, +Purchase Receipt Required for item {},د پیرود رسید د توکي لپاره اړین دی {}, +To submit the invoice without purchase receipt please set {} ,د پیرود رسید پرته رسید سپارلو لپاره مهرباني وکړئ set set تنظیم کړئ, +Mandatory Purchase Receipt,د لازمي پیرود رسید, +POS Profile {} does not belongs to company {},د POS پروفایل {company په شرکت پورې اړه نلري {, +User {} is disabled. Please select valid user/cashier,کارن {disabled نافعال دی. مهرباني وکړئ معتبر کارن / کاشیر وټاکئ, +Row #{}: Original Invoice {} of return invoice {} is {}. ,قطار # {}: اصلي انوائس return return د بیرته ستن بل {} دی {}., +Original invoice should be consolidated before or along with the return invoice.,اصلي انوائس باید د بیرته رسید انوائس دمخه یا ورسره یوځای شي., +You can add original invoice {} manually to proceed.,تاسو کولی شئ د لاسوهنې لپاره لاسي اصلي انوائس {add په لاسي ډول ورکړئ., +Please ensure {} account is a Balance Sheet account. ,مهرباني وکړئ ډاډ ترلاسه کړئ چې}} حساب د بیلانس شیټ حساب دی., +You can change the parent account to a Balance Sheet account or select a different account.,تاسو کولی شئ اصلي حساب د بیلانس شیټ حساب ته بدل کړئ یا مختلف حساب غوره کړئ., +Please ensure {} account is a Receivable account. ,مهرباني وکړئ ډاډ ترلاسه کړئ چې {} حساب د ترلاسه کولو وړ حساب دی., +Change the account type to Receivable or select a different account.,د حساب ډول لاسته راوړنې ته بدل کړئ یا بل مختلف حساب غوره کړئ., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},since canceled لغوه کیدی نشي ځکه چې د ترلاسه شوي وفادارۍ مقامونه بیرته له سره اخیستل شوي. لومړی {} نه {cancel لغوه کړئ, +already exists,له مخکی نه موجود دی, +POS Closing Entry {} against {} between selected period,د ټاکل شوي مودې ترمینځ د پووس تړلو ننوتنه}} په مقابل کې}., +POS Invoice is {},د پوز انوائس {is دی, +POS Profile doesn't matches {},د POS پروفایل {matches سره سمون نه خوري, +POS Invoice is not {},POS انوائس {is ندی, +POS Invoice isn't created by user {},POS انوائس د کارونکي by by لخوا ندی رامینځته شوی, +Row #{}: {},قطار # {}: {, +Invalid POS Invoices,د POS ناسم چلونه, +Please add the account to root level Company - {},مهرباني وکړئ حساب د روټ کچې شرکت ته اضافه کړئ - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",د ماشوم شرکت for 0 for لپاره حساب جوړولو پرمهال ، اصلي حساب {1. ونه موندل شو. مهرباني وکړئ په اړوند COA کې اصلي حساب جوړ کړئ, +Account Not Found,ګ Foundون ونه موندل شو, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",پداسې حال کې چې د ماشوم شرکت account 0} لپاره حساب جوړ کړئ ، د اصلي حساب {1} د لیجر حساب په توګه وموندل شو., +Please convert the parent account in corresponding child company to a group account.,مهرباني وکړئ د ماشوم ماشوم پورې اړوند مورني حساب ګروپ حساب ته واړوئ., +Invalid Parent Account,غلط اصلي حساب, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",د دې نوم بدلول یوازې د اصلي شرکت via 0} له لارې اجازه ورکول کیږي ، ترڅو د ناسم چلن مخه ونیول شي., +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.",که تاسو د of 0}} 1} مقدار مقدار {2} ولرئ ، نو سکیم {3} به په توکي باندې پلي شي., +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.",که تاسو د item 0} {1} ارزښت لرونکی توکی {2} ولرئ ، نو سکیم {3} به په توکي باندې پلي شی., +"As the field {0} is enabled, the field {1} is mandatory.",لکه څنګه چې ډګر {0} فعال شوی ، نو ساحه {1} لازمي ده., +"As the field {0} is enabled, the value of the field {1} should be more than 1.",لکه څنګه چې ډګر {0} فعال شوی ، د ساحې ارزښت {1} باید له 1 څخه ډیر وي., +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},د توکي {1} سیریل نمبر {0 deliver نشي سپارل کیدی ځکه چې دا د ډک ډک آرډر to 2 to لپاره خوندي دی, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.",د پلور امر {0} د توکي {1} توکو لپاره محافظت لري ، تاسو یوازې د {0} په مقابل کې خوندي {1 deliver وړاندې کولی شئ., +{0} Serial No {1} cannot be delivered,ial 0 ial سیریل لمبر {1} نشي تحویلی کیدلی, +Row {0}: Subcontracted Item is mandatory for the raw material {1},قطار {0}: فرعي تړون شوي توکي د خامو موادو لپاره لازمي دي {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.",لکه څنګه چې کافي خام توکي شتون لري ، د توکو غوښتنه د ګودام {0} لپاره اړین ندي., +" If you still want to proceed, please enable {0}.",که تاسو اوس هم غواړئ پرمخ لاړ شئ ، نو مهرباني وکړئ {0} وړ کړئ., +The item referenced by {0} - {1} is already invoiced,هغه توکی چې د {0} - {1} لخوا حواله شوی لا دمخه بل شوی دی, +Therapy Session overlaps with {0},د درملنې ناسته د over 0 with سره پراخه کیږي, +Therapy Sessions Overlapping,د تهيريپي ناستې پوړونه, +Therapy Plans,د درملنې پلانونه, +"Item Code, warehouse, quantity are required on row {0}",د توکي کوډ ، ګودام ، مقدار په قطار کې اړین دي {0}, +Get Items from Material Requests against this Supplier,د دې عرضه کونکي په وړاندې د موادو غوښتنو څخه توکي ترلاسه کړئ, +Enable European Access,اروپایی لاسرسی وړ کړئ, +Creating Purchase Order ...,د پیرود امر رامینځته کول ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",د لاندې شیانو ډیفالټ عرضه کونکو څخه یو عرضه کونکی غوره کړئ. په انتخاب کولو کې ، د پیرود امر به یوازې هغه انتخاب شوي چمتو کونکي پورې اړه لرونکي توکو په مقابل کې وي., +Row #{}: You must select {} serial numbers for item {}.,قطار # {}: تاسو باید د توکي {{لپاره سریال نمبرونه وټاکئ., diff --git a/erpnext/translations/pt.csv b/erpnext/translations/pt.csv index f44a20e17b..3b8a0a0f43 100644 --- a/erpnext/translations/pt.csv +++ b/erpnext/translations/pt.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Não po Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',"Não pode deduzir quando a categoria é para ""Estimativa"" ou ""Estimativa e Total""", "Cannot delete Serial No {0}, as it is used in stock transactions","Não é possível eliminar o Nº de Série {0}, pois está a ser utilizado em transações de stock", Cannot enroll more than {0} students for this student group.,Não pode inscrever mais de {0} estudantes neste grupo de alunos., -Cannot find Item with this barcode,Não é possível encontrar o item com este código de barras, Cannot find active Leave Period,Não é possível encontrar período de saída ativo, Cannot produce more Item {0} than Sales Order quantity {1},Não é possível produzir mais Itens {0} do que a quantidade da Ordem de Vendas {1}, Cannot promote Employee with status Left,Não é possível promover funcionários com status, @@ -690,7 +689,6 @@ Create Variants,Criar variantes, "Create and manage daily, weekly and monthly email digests.","Criar e gerir resumos de email diários, semanais e mensais.", Create customer quotes,Criar cotações de clientes, Create rules to restrict transactions based on values.,Criar regras para restringir as transações com base em valores., -Created By,Criado Por, Created {0} scorecards for {1} between: ,Criou {0} scorecards para {1} entre:, Creating Company and Importing Chart of Accounts,Criando empresa e importando plano de contas, Creating Fees,Criando taxas, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,É necessário colocar Para o Armazém a For row {0}: Enter Planned Qty,Para a linha {0}: digite a quantidade planejada, "For {0}, only credit accounts can be linked against another debit entry","Para {0}, só podem ser ligadas contas de crédito noutro registo de débito", "For {0}, only debit accounts can be linked against another credit entry",Só podem ser vinculadas contas de dédito noutro registo de crébito para {0}, -Form View,Vista de formulário, Forum Activity,Atividade do Fórum, Free item code is not selected,Código de item livre não selecionado, Freight and Forwarding Charges,Custos de Transporte e Envio, @@ -2638,7 +2635,6 @@ Send SMS,Enviar SMS, Send mass SMS to your contacts,Enviar SMS em massa para seus contactos, Sensitivity,Sensibilidade, Sent,Enviado, -Serial #,Série #, Serial No and Batch,O Nr. de Série e de Lote, Serial No is mandatory for Item {0},É obrigatório colocar o Nr. de Série para o Item {0}, Serial No {0} does not belong to Batch {1},O número de série {0} não pertence ao Lote {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Bem-vindo ao ERPNext, What do you need help with?,Com o que você precisa de ajuda?, What does it do?,O que faz?, Where manufacturing operations are carried.,Sempre que são realizadas operações de fabrico., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Ao criar uma conta para a empresa filha {0}, a conta pai {1} não foi encontrada. Por favor, crie a conta pai no COA correspondente", White,Branco, Wire Transfer,Transferência bancária, WooCommerce Products,Produtos WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Gostos, Merge with existing,Unir com existente, Office,Escritório, Orientation,Orientação, +Parent,Principal, Passive,Passivo, Payment Failed,Pagamento falhou, Percent,Por Cento, @@ -3543,6 +3539,7 @@ Shift,Mudança, Show {0},Mostrar {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Caracteres especiais, exceto "-", "#", ".", "/", "{" E "}" não permitidos na série de nomenclatura", Target Details,Detalhes do Alvo, +{0} already has a Parent Procedure {1}.,{0} já tem um procedimento pai {1}., API,API, Annual,Anual, Approved,Aprovado, @@ -4241,7 +4238,6 @@ Download as JSON,Baixe como Json, End date can not be less than start date,A Data de Término não pode ser mais recente que a Data de Início, For Default Supplier (Optional),Para fornecedor padrão (opcional), From date cannot be greater than To date,De data não pode ser maior que a data, -Get items from,Obter itens de, Group by,Agrupar Por, In stock,Em estoque, Item name,Nome do item, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Parâmetro de modelo de feedback de qualidad Quality Goal,Objetivo de Qualidade, Monitoring Frequency,Freqüência de Monitoramento, Weekday,Dia da semana, -January-April-July-October,Janeiro-abril-julho-outubro, -Revision and Revised On,Revisão e revisado em, -Revision,Revisão, -Revised On,Revisado em, Objectives,Objetivos, Quality Goal Objective,Objetivo Objetivo de Qualidade, Objective,Objetivo, @@ -7574,7 +7566,6 @@ Parent Procedure,Procedimento pai, Processes,Processos, Quality Procedure Process,Processo de Procedimento de Qualidade, Process Description,Descrição do processo, -Child Procedure,Procedimento Infantil, Link existing Quality Procedure.,Vincule o Procedimento de Qualidade existente., Additional Information,informação adicional, Quality Review Objective,Objetivo de revisão de qualidade, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Tendências de Ordens de Compra, Purchase Receipt Trends,Tendências de Recibo de Compra, Purchase Register,Registo de Compra, Quotation Trends,Tendências de Cotação, -Quoted Item Comparison,Comparação de Cotação de Item, Received Items To Be Billed,Itens Recebidos a Serem Faturados, Qty to Order,Qtd a Encomendar, Requested Items To Be Transferred,Itens Solicitados A Serem Transferidos, @@ -9091,7 +9081,6 @@ Unmarked days,Dias não marcados, Absent Days,Dias ausentes, Conditions and Formula variable and example,Condições e variável de fórmula e exemplo, Feedback By,Feedback de, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.AAAA .-. MM .-. DD.-, Manufacturing Section,Seção de Manufatura, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Por padrão, o Nome do cliente é definido de acordo com o Nome completo inserido. Se você deseja que os clientes sejam nomeados por um", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Configure a Lista de preços padrão ao criar uma nova transação de vendas. Os preços dos itens serão obtidos desta lista de preços., @@ -9692,7 +9681,6 @@ Available Balance,Saldo disponível, Reserved Balance,Saldo Reservado, Uncleared Balance,Saldo Não Compensado, Payment related to {0} is not completed,O pagamento relacionado a {0} não foi concluído, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Linha nº {}: Número de série {}. {} já foi transacionado para outra fatura de PDV. Selecione o número de série válido., Row #{}: Item Code: {} is not available under warehouse {}.,Linha # {}: Código do item: {} não está disponível no depósito {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Linha nº {}: Quantidade em estoque insuficiente para o código do item: {} sob o depósito {}. Quantidade disponível {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Linha # {}: selecione um número de série e lote para o item: {} ou remova-o para concluir a transação., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Quantidade não disponível para Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Ative Permitir estoque negativo nas configurações de estoque ou crie a entrada de estoque para continuar., No Inpatient Record found against patient {0},Nenhum registro de paciente interno encontrado para o paciente {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Já existe um Pedido de Medicação para Paciente Interno {0} contra o Encontro do Paciente {1}., +Allow In Returns,Permitir devoluções, +Hide Unavailable Items,Ocultar itens indisponíveis, +Apply Discount on Discounted Rate,Aplicar desconto na taxa com desconto, +Therapy Plan Template,Modelo de plano de terapia, +Fetching Template Details,Buscando detalhes do modelo, +Linked Item Details,Detalhes do item vinculado, +Therapy Types,Tipos de terapia, +Therapy Plan Template Detail,Detalhe do modelo do plano de terapia, +Non Conformance,Não Conformidade, +Process Owner,Proprietário do processo, +Corrective Action,Ação corretiva, +Preventive Action,Ação preventiva, +Problem,Problema, +Responsible,Responsável, +Completion By,Conclusão por, +Process Owner Full Name,Nome completo do proprietário do processo, +Right Index,Índice certo, +Left Index,Índice Esquerdo, +Sub Procedure,Subprocedimento, +Passed,Passado, +Print Receipt,Imprimir recibo, +Edit Receipt,Editar Recibo, +Focus on search input,Foco na entrada de pesquisa, +Focus on Item Group filter,Foco no filtro de grupo de itens, +Checkout Order / Submit Order / New Order,Finalizar pedido / Enviar pedido / Novo pedido, +Add Order Discount,Adicionar desconto de pedido, +Item Code: {0} is not available under warehouse {1}.,Código do item: {0} não está disponível no depósito {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,"Números de série indisponíveis para o item {0} em depósito {1}. Por favor, tente mudar o warehouse.", +Fetched only {0} available serial numbers.,Buscou apenas {0} números de série disponíveis., +Switch Between Payment Modes,Alternar entre os modos de pagamento, +Enter {0} amount.,Insira o valor de {0}., +You don't have enough points to redeem.,Você não tem pontos suficientes para resgatar., +You can redeem upto {0}.,Você pode resgatar até {0}., +Enter amount to be redeemed.,Insira o valor a ser resgatado., +You cannot redeem more than {0}.,Você não pode resgatar mais de {0}., +Open Form View,Abra a visualização do formulário, +POS invoice {0} created succesfully,Fatura de PDV {0} criada com sucesso, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Quantidade em estoque insuficiente para o código do item: {0} sob o depósito {1}. Quantidade disponível {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Número de série: {0} já foi transacionado para outra fatura de PDV., +Balance Serial No,Número de série do saldo, +Warehouse: {0} does not belong to {1},Armazém: {0} não pertence a {1}, +Please select batches for batched item {0},Selecione os lotes para o item em lote {0}, +Please select quantity on row {0},Selecione a quantidade na linha {0}, +Please enter serial numbers for serialized item {0},Insira os números de série para o item serializado {0}, +Batch {0} already selected.,Lote {0} já selecionado., +Please select a warehouse to get available quantities,Selecione um armazém para obter as quantidades disponíveis, +"For transfer from source, selected quantity cannot be greater than available quantity","Para transferência da origem, a quantidade selecionada não pode ser maior que a quantidade disponível", +Cannot find Item with this Barcode,Não é possível encontrar o item com este código de barras, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} é obrigatório. Talvez o registro de câmbio não tenha sido criado para {1} a {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} enviou ativos vinculados a ele. Você precisa cancelar os ativos para criar o retorno de compra., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"Não é possível cancelar este documento, pois está vinculado ao ativo enviado {0}. Cancele para continuar.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Linha # {}: Número de série {} já foi transacionado para outra fatura de PDV. Selecione o número de série válido., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Linha nº {}: Nºs de série {} já foi transacionado para outra fatura de PDV. Selecione o número de série válido., +Item Unavailable,Artigo Indisponível, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"Linha nº {}: Número de série {} não pode ser devolvido, pois não foi negociado na fatura original {}", +Please set default Cash or Bank account in Mode of Payment {},Defina dinheiro ou conta bancária padrão no modo de pagamento {}, +Please set default Cash or Bank account in Mode of Payments {},Defina dinheiro ou conta bancária padrão no modo de pagamentos {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Certifique-se de que a conta {} seja uma conta de balanço. Você pode alterar a conta-mãe para uma conta de balanço ou selecionar uma conta diferente., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Certifique-se de que a {} conta seja uma conta a pagar. Altere o tipo de conta para Pagável ou selecione uma conta diferente., +Row {}: Expense Head changed to {} ,Linha {}: Cabeçalho de Despesas alterado para {}, +because account {} is not linked to warehouse {} ,porque a conta {} não está vinculada ao depósito {}, +or it is not the default inventory account,ou não é a conta de estoque padrão, +Expense Head Changed,Cabeça de despesas alterada, +because expense is booked against this account in Purchase Receipt {},porque a despesa é registrada nesta conta no recibo de compra {}, +as no Purchase Receipt is created against Item {}. ,visto que nenhum recibo de compra é criado para o item {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Isso é feito para lidar com a contabilidade de casos em que o recibo de compra é criado após a fatura de compra, +Purchase Order Required for item {},Pedido de compra necessário para o item {}, +To submit the invoice without purchase order please set {} ,"Para enviar a fatura sem pedido de compra, defina {}", +as {} in {},como em {}, +Mandatory Purchase Order,Ordem de Compra Obrigatória, +Purchase Receipt Required for item {},Recibo de compra necessário para o item {}, +To submit the invoice without purchase receipt please set {} ,"Para enviar a fatura sem recibo de compra, defina {}", +Mandatory Purchase Receipt,Recibo de Compra Obrigatório, +POS Profile {} does not belongs to company {},Perfil de PDV {} não pertence à empresa {}, +User {} is disabled. Please select valid user/cashier,O usuário {} está desativado. Selecione um usuário / caixa válido, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Linha nº {}: A fatura original {} da fatura de devolução {} é {}., +Original invoice should be consolidated before or along with the return invoice.,A fatura original deve ser consolidada antes ou junto com a fatura de devolução., +You can add original invoice {} manually to proceed.,Você pode adicionar a fatura original {} manualmente para prosseguir., +Please ensure {} account is a Balance Sheet account. ,Certifique-se de que a conta {} seja uma conta de balanço., +You can change the parent account to a Balance Sheet account or select a different account.,Você pode alterar a conta-mãe para uma conta de balanço ou selecionar uma conta diferente., +Please ensure {} account is a Receivable account. ,Certifique-se de que a conta {} seja uma conta a receber., +Change the account type to Receivable or select a different account.,Altere o tipo de conta para Recebível ou selecione uma conta diferente., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} não pode ser cancelado porque os pontos de fidelidade ganhos foram resgatados. Primeiro cancele o {} Não {}, +already exists,já existe, +POS Closing Entry {} against {} between selected period,POS fechando entrada {} contra {} entre o período selecionado, +POS Invoice is {},A fatura de PDV é {}, +POS Profile doesn't matches {},Perfil de PDV não corresponde a {}, +POS Invoice is not {},A fatura de PDV não é {}, +POS Invoice isn't created by user {},A fatura de PDV não foi criada pelo usuário {}, +Row #{}: {},Linha #{}: {}, +Invalid POS Invoices,Faturas de PDV inválidas, +Please add the account to root level Company - {},Adicione a conta ao nível raiz Empresa - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Ao criar uma conta para Empresa-filha {0}, conta-mãe {1} não encontrada. Por favor, crie a conta principal no COA correspondente", +Account Not Found,Conta não encontrada, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Ao criar uma conta para Empresa filha {0}, conta pai {1} encontrada como uma conta contábil.", +Please convert the parent account in corresponding child company to a group account.,Converta a conta-mãe da empresa-filha correspondente em uma conta de grupo., +Invalid Parent Account,Conta pai inválida, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Renomear só é permitido por meio da empresa-mãe {0}, para evitar incompatibilidade.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Se você {0} {1} quantidades do item {2}, o esquema {3} será aplicado ao item.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Se você {0} {1} vale um item {2}, o esquema {3} será aplicado ao item.", +"As the field {0} is enabled, the field {1} is mandatory.","Como o campo {0} está habilitado, o campo {1} é obrigatório.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Como o campo {0} está habilitado, o valor do campo {1} deve ser maior que 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Não é possível entregar o número de série {0} do item {1} porque está reservado para atender ao pedido de venda {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","O pedido de venda {0} tem reserva para o item {1}, você só pode entregar o {1} reservado para {0}.", +{0} Serial No {1} cannot be delivered,{0} Número de série {1} não pode ser entregue, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Linha {0}: Item subcontratado é obrigatório para a matéria-prima {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Como há matéria-prima suficiente, a Solicitação de Material não é necessária para o Armazém {0}.", +" If you still want to proceed, please enable {0}.","Se você ainda deseja continuar, ative {0}.", +The item referenced by {0} - {1} is already invoiced,O item referenciado por {0} - {1} já foi faturado, +Therapy Session overlaps with {0},A sessão de terapia se sobrepõe a {0}, +Therapy Sessions Overlapping,Sobreposição de sessões de terapia, +Therapy Plans,Planos de Terapia, +"Item Code, warehouse, quantity are required on row {0}","Código do item, armazém, quantidade são necessários na linha {0}", +Get Items from Material Requests against this Supplier,Obtenha itens de solicitações de materiais contra este fornecedor, +Enable European Access,Habilitar acesso europeu, +Creating Purchase Order ...,Criando pedido de compra ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Selecione um fornecedor dos fornecedores padrão dos itens abaixo. Na seleção, um pedido de compra será feito apenas para itens pertencentes ao fornecedor selecionado.", +Row #{}: You must select {} serial numbers for item {}.,Nº da linha {}: você deve selecionar {} números de série para o item {}., diff --git a/erpnext/translations/pt_br.csv b/erpnext/translations/pt_br.csv index a8106e72c4..cda5ee85f9 100644 --- a/erpnext/translations/pt_br.csv +++ b/erpnext/translations/pt_br.csv @@ -20,8 +20,12 @@ Abbr can not be blank or space,Abbr não pode estar em branco ou espaço, Abbreviation already used for another company,Abreviatura já utilizado para outra empresa, Abbreviation cannot have more than 5 characters,Abreviatura não pode ter mais de 5 caracteres, Abbreviation is mandatory,Abreviatura é obrigatória, +About your company,Sobre sua empresa, Accepted + Rejected Qty must be equal to Received quantity for Item {0},A qtde Aceita + Rejeitada deve ser igual a quantidade recebida para o item {0}, Access Token,Token de Acesso, +Account Pay Only,Conta somente para pagamento, +Account Type,Tipo de conta, +Account Type for {0} must be {1},O tipo da conta {0} deve ser {1}, "Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'","O saldo já está em crédito, você não tem a permissão para definir 'saldo deve ser' como 'débito'", "Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'","O saldo já está em débito, você não tem permissão para definir 'saldo deve ser' como 'crédito'", Account with child nodes cannot be converted to ledger,Contas com nós filhos não podem ser convertidas em um livro-razão, @@ -62,6 +66,7 @@ Actual type tax cannot be included in Item rate in row {0},Tipo de imposto real Add / Edit Prices,Adicionar / Editar preços, Add Customers,Adicionar Clientes, Add Employees,Adicionar Colaboradores, +Add Item,Adicionar item, Add Serial No,Adicionar Serial No, Add Timesheets,Adicionar Registo de Tempo, Add the rest of your organization as your users. You can also add invite Customers to your portal by adding them from Contacts,Adicione o resto de sua organização como seus usuários. Você também pode adicionar clientes convidados ao seu portal adicionando-os de Contatos, @@ -300,7 +305,6 @@ Create Users,Criar Usuários, "Create and manage daily, weekly and monthly email digests.","Cria e configura as regras de recebimento de emails, como diário, semanal ou mensal.", Create customer quotes,Criar orçamentos de clientes, Create rules to restrict transactions based on values.,Criar regras para restringir operações com base em valores., -Created By,Criado por, Creating {0} Invoice,Criando Fatura de {0}, Credit Balance,Saldo Credor, Credit Note Issued,Nota de Crédito Emitida, @@ -466,7 +470,6 @@ For Warehouse is required before Submit,Armazén de destino necessário antes de "For row {0} in {1}. To include {2} in Item rate, rows {3} must also be included","Para linha {0} em {1}. Para incluir {2} na taxa de Item, linhas {3} também devem ser incluídos", "For {0}, only credit accounts can be linked against another debit entry","Por {0}, apenas as contas de crédito pode ser ligado contra outro lançamento de débito", "For {0}, only debit accounts can be linked against another credit entry","Por {0}, apenas as contas de débito pode ser ligado contra outra entrada crédito", -Form View,Ver Formulário, Freight and Forwarding Charges,Frete e Encargos de Envio, From Currency and To Currency cannot be same,De Moeda e Para Moeda não pode ser o mesmo, From Date cannot be greater than To Date,A partir de data não pode ser maior que a Data, @@ -495,7 +498,7 @@ General Ledger,Livro Razão, Get Employees,Obter Colaboradores, Get Items from Product Bundle,Obter Itens do Pacote de Produtos, Get Updates,Receber notícias, -Global settings for all manufacturing processes.,As configurações globais para todos os processos de fabricação., +Global settings for all manufacturing processes.,Configurações Globais para todos os processos de fabricação., Go to the Desktop and start using ERPNext,Vá para o ambiente de trabalho e começar a usar ERPNext, Goals cannot be empty,Objetivos não podem estar em branco, Grant Leaves,Conceder Licenças, @@ -658,7 +661,7 @@ Managing Subcontracting,Gerenciando Subcontratação, Manufacture,Fabricação, Manufacturer Part Number,Número de Peça do Fabricante, Manufacturing,Fabricação, -Manufacturing Quantity is mandatory,Manufacturing Quantidade é obrigatório, +Manufacturing Quantity is mandatory,Quantidade de Fabricação é obrigatória, Mark Absent,Marcar Ausente, Mark Attendance,Marcar Presença, Mark Half Day,Marcar Meio Período, @@ -667,6 +670,7 @@ Marketing Expenses,Despesas com Marketing, Masters,Cadastros, Match Payments with Invoices,Conciliação de Pagamentos, Match non-linked Invoices and Payments.,Combinar Faturas e Pagamentos não relacionados., +Material Consumption is not set in Manufacturing Settings.,O Consumo de Material não está configurado nas Configurações de Fabricação., Material Receipt,Entrada de Material, Material Request,Requisição de Material, Material Request Date,Data da Requisição de Material, @@ -705,6 +709,7 @@ New Cost Center Name,Novo Centro de Custo Nome, New Customer Revenue,Receita com novos clientes, New Customers,Clientes Novos, New Employee,Novo Colaborador, +New Quality Procedure,Novo Procedimento de Qualidade, New Sales Person Name,Nome do Novo Vendedor, New Serial No cannot have Warehouse. Warehouse must be set by Stock Entry or Purchase Receipt,"New Serial Não, não pode ter Warehouse. Warehouse deve ser definida pelo Banco de entrada ou Recibo de compra", New Warehouse Name,Nome do Novo Armazén, @@ -721,7 +726,7 @@ No Items with Bill of Materials to Manufacture,Não há itens com Lista de Mater No Permission,Nenhuma permissão, No Salary Structure assigned for Employee {0} on given date {1},Nenhuma estrutura salarial atribuída para o colaborador {0} em determinada data {1}, No Student Groups created.,Não foi criado nenhum grupo de alunos., -No Work Orders created,Nenhuma ordem de trabalho criada, +No Work Orders created,Nenhuma Ordem de Trabalho criada, No accounting entries for the following warehouses,Nenhuma entrada de contabilidade para os seguintes armazéns, No active or default Salary Structure found for employee {0} for the given dates,Não foi encontrada nenhuma Estrutura Salarial padrão ativa para o colaborador {0} ou para as datas indicadas, No description given,Nenhuma descrição informada, @@ -980,6 +985,12 @@ Purpose must be one of {0},Objetivo deve ser um dos {0}, Qty,Qtde, Qty To Manufacture,Qtde para Fabricar, Qty for {0},Qtde para {0}, +Quality,QCคุณภาพ, +Quality Goal.,Objetivos de Qualidade., +Quality Inspection,Inspeção de Qualidade, +Quality Inspection: {0} is not submitted for the item: {1} in row {2},Inspeção de Qualidade: {0} não foi submetida para o item: {1} na linha {2}, +Quality Meeting,Encontro da Qualidade, +Quality Procedure.,Procedimento de Qualidade., Quantity for Item {0} must be less than {1},Quantidade de item {0} deve ser inferior a {1}, Quantity in row {0} ({1}) must be same as manufactured quantity {2},A quantidade na linha {0} ( {1} ) deve ser a mesma que a quantidade fabricada {2}, Quantity must not be more than {0},Quantidade não deve ser mais do que {0}, @@ -1040,6 +1051,7 @@ Researcher,Pesquisador, Resend Payment Email,Reenviar email de pagamento, Reserved Qty,Qtde Reservada, Reserved Qty for Production,Qtde Reservada para Produção, +Reserved Qty for Production: Raw materials quantity to make manufacturing items.,Quantidade Reservada para Produção: quantidade de matérias-primas para a fabricar itens., "Reserved Qty: Quantity ordered for sale, but not delivered.","Reservados Qtde: Quantidade pedida para venda, mas não entregue.", Reserved for manufacturing,Reservado para fabricação, Rest Of The World,Resto do Mundo, @@ -1144,7 +1156,6 @@ Selling Amount,Valor de Venda, "Selling must be checked, if Applicable For is selected as {0}","Venda deve ser verificada, se for caso disso for selecionado como {0}", Send SMS,Envie SMS, Send mass SMS to your contacts,Enviar SMS em massa para seus contatos, -Serial #,Serial #, Serial No and Batch,Número de Série e Lote, Serial No is mandatory for Item {0},Número de séries é obrigatório para item {0}, Serial No {0} does not belong to Delivery Note {1},Serial Não {0} não pertence a entrega Nota {1}, @@ -1362,6 +1373,7 @@ Total allocated leaves are more than days in the period,Total de licenças aloca Total allocated percentage for sales team should be 100,Porcentagem total alocado para a equipe de vendas deve ser de 100, Total cannot be zero,Total não pode ser zero, Total hours: {0},Total de horas: {0}, +Total leaves allocated is mandatory for Leave Type {0},Total de Licenças Alocadas é mandatório para Tipo de Licença {0}, Total(Amt),Total (Quantia), Total(Qty),Total (Qtde), Training,Treinamento, @@ -1531,6 +1543,7 @@ Images,Imagens, Language,Idioma, Likes,Likes, Merge with existing,Mesclar com existente, +Parent,Parente, Passive,Sem movimento, Percent,Por cento, Plant,Fábrica, @@ -1635,7 +1648,10 @@ Purchase Receipt Required,Recibo de Compra Obrigatório, Verified By,Verificado por, Maintain Same Rate Throughout Sales Cycle,Manter o mesmo preço durante todo o ciclo de vendas, Must be Whole Number,Deve ser Número inteiro, +Leaves Allocated,Licenças Alocadas, +Leaves Expired,Licenças Expiradas, GL Entry,Lançamento GL, +Work Orders,Ordens de Trabalho, Qty to Manufacture,Qtde para Fabricar, Heads (or groups) against which Accounting Entries are made and balances are maintained.,Heads (ou grupos) contra o qual as entradas de Contabilidade são feitas e os saldos são mantidos., Parent Account,Conta Superior, @@ -2282,6 +2298,7 @@ Allow User,Permitir que o usuário, Leave Block List Date,Data da Lista de Bloqueio de Licenças, Leave Control Panel,Painel de Controle de Licenças, Select Employees,Selecione Colaboradores, +Allocate Leaves,Alocar Licenças, Carry Forward,Encaminhar, Please select Carry Forward if you also want to include previous fiscal year's balance leaves to this fiscal year,Por favor selecione Encaminhar se você também quer incluir o saldo de licenças do ano fiscal anterior neste ano fiscal, New Leaves Allocated (In Days),Novas Licenças alocadas (em dias), @@ -2417,6 +2434,7 @@ Show Items,Mostrar Itens, Website Description,Descrição do Site, BOM Explosion Item,Item da Explosão da LDM, Qty Consumed Per Unit,Qtde Consumida por Unidade, +Include Item In Manufacturing,Incluir Item na Fabricação, Basic Rate (Company Currency),Valor Base (moeda da empresa), BOM Operation,Operação da LDM, Base Hour Rate(Company Currency),Valor por Hora Base (moeda da empresa), @@ -2706,6 +2724,7 @@ Checkout Settings,Configurações de Vendas, Enable Checkout,Ativar Caixa, Payment Success Url,URL de Confirmação de Pagamento, After payment completion redirect user to selected page.,Após a conclusão do pagamento redirecionar usuário para a página selecionada., +Manufacturing Date,Data de Fabricação, Actual Quantity,Quantidade Real, Moving Average Rate,Taxa da Média Móvel, FCFS Rate,Taxa FCFS, @@ -2974,7 +2993,7 @@ Lead Owner Efficiency,Eficiência do Administrador do Lead, Maintenance Schedules,Horários de Manutenção, Material Requests for which Supplier Quotations are not created,"Itens Requisitados, mas não Cotados", Monthly Attendance Sheet,Folha de Ponto Mensal, -Open Work Orders,Abrir ordens de trabalho, +Open Work Orders,Abrir Ordens de Trabalho, Qty to Deliver,Qtde para Entregar, Payment Period Based On Invoice Date,Prazo Médio de Pagamento Baseado na Emissão da Nota, Pending SO Items For Purchase Request,Itens Pendentes da Ordem de Venda por Solicitação de Compra, diff --git a/erpnext/translations/ro.csv b/erpnext/translations/ro.csv index dd1c9a8c87..643b8c5c3e 100644 --- a/erpnext/translations/ro.csv +++ b/erpnext/translations/ro.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',Nu se po Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',Nu se poate deduce atunci când este categoria de "evaluare" sau "Vaulation și Total", "Cannot delete Serial No {0}, as it is used in stock transactions","Nu se poate șterge de serie nr {0}, așa cum este utilizat în tranzacțiile bursiere", Cannot enroll more than {0} students for this student group.,Nu se poate inscrie mai mult de {0} studenți pentru acest grup de studenți., -Cannot find Item with this barcode,Nu se poate găsi articolul cu acest cod de bare, Cannot find active Leave Period,Nu se poate găsi perioada activă de plecare, Cannot produce more Item {0} than Sales Order quantity {1},Nu se pot produce mai multe Articole {0} decât cantitatea din Ordinul de Vânzări {1}, Cannot promote Employee with status Left,Nu puteți promova angajatul cu starea Stânga, @@ -690,7 +689,6 @@ Create Variants,Creați variante, "Create and manage daily, weekly and monthly email digests.","Creare și gestionare rezumate e-mail zilnice, săptămânale și lunare.", Create customer quotes,Creați citate client, Create rules to restrict transactions based on values.,Creare reguli pentru restricționare tranzacții bazate pe valori., -Created By,Creat de, Created {0} scorecards for {1} between: ,A creat {0} cărți de scor pentru {1} între:, Creating Company and Importing Chart of Accounts,Crearea companiei și importul graficului de conturi, Creating Fees,Crearea de taxe, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Pentru Depozit este necesar înainte de For row {0}: Enter Planned Qty,Pentru rândul {0}: Introduceți cantitatea planificată, "For {0}, only credit accounts can be linked against another debit entry","Pentru {0}, numai conturi de credit poate fi legat de o altă intrare în debit", "For {0}, only debit accounts can be linked against another credit entry","Pentru {0}, numai conturi de debit poate fi legat de o altă intrare în credit", -Form View,Vizualizare formular, Forum Activity,Activitatea Forumului, Free item code is not selected,Codul gratuit al articolului nu este selectat, Freight and Forwarding Charges,Incarcatura și Taxe de Expediere, @@ -2638,7 +2635,6 @@ Send SMS,Trimite SMS, Send mass SMS to your contacts,Trimite SMS-uri în masă a persoanelor de contact, Sensitivity,Sensibilitate, Sent,Trimis, -Serial #,Serial #, Serial No and Batch,Serial și Lot nr, Serial No is mandatory for Item {0},Nu serial este obligatorie pentru postul {0}, Serial No {0} does not belong to Batch {1},Numărul de serie {0} nu aparține lotului {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Bine ati venit la ERPNext, What do you need help with?,La ce ai nevoie de ajutor?, What does it do?,Ce face?, Where manufacturing operations are carried.,În cazul în care operațiunile de fabricație sunt efectuate., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","În timpul creării contului pentru compania copil {0}, contul părinte {1} nu a fost găsit. Vă rugăm să creați contul părinte în COA corespunzătoare", White,alb, Wire Transfer,Transfer, WooCommerce Products,Produse WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Au apreciat, Merge with existing,Merge cu existente, Office,Birou, Orientation,Orientare, +Parent,Mamă, Passive,Pasiv, Payment Failed,Plata esuata, Percent,La sută, @@ -3543,6 +3539,7 @@ Shift,Schimb, Show {0},Afișați {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Caractere speciale, cu excepția "-", "#", ".", "/", "{" Și "}" nu sunt permise în numirea seriei", Target Details,Detalii despre țintă, +{0} already has a Parent Procedure {1}.,{0} are deja o procedură părinte {1}., API,API-ul, Annual,Anual, Approved,Aprobat, @@ -4241,7 +4238,6 @@ Download as JSON,Descărcați ca JSON, End date can not be less than start date,Data de Incheiere nu poate fi anterioara Datei de Incepere, For Default Supplier (Optional),Pentru furnizor implicit (opțional), From date cannot be greater than To date,De la data nu poate fi mai mare decât la data, -Get items from,Obține elemente din, Group by,Grupul De, In stock,In stoc, Item name,Denumire Articol, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Parametrul șablonului de feedback al calit Quality Goal,Obiectivul de calitate, Monitoring Frequency,Frecvența de monitorizare, Weekday,zi de lucru, -January-April-July-October,Ianuarie-aprilie-iulie-octombrie, -Revision and Revised On,Revizuit și revizuit, -Revision,Revizuire, -Revised On,Revizuit pe, Objectives,Obiective, Quality Goal Objective,Obiectivul calității, Objective,Obiectiv, @@ -7574,7 +7566,6 @@ Parent Procedure,Procedura părinților, Processes,procese, Quality Procedure Process,Procesul procedurii de calitate, Process Description,Descrierea procesului, -Child Procedure,Procedura copilului, Link existing Quality Procedure.,Conectați procedura de calitate existentă., Additional Information,informatii suplimentare, Quality Review Objective,Obiectivul revizuirii calității, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Comandă de aprovizionare Tendințe, Purchase Receipt Trends,Tendințe Primirea de cumpărare, Purchase Register,Cumpărare Inregistrare, Quotation Trends,Cotație Tendințe, -Quoted Item Comparison,Compararea Articol citat, Received Items To Be Billed,Articole primite Pentru a fi facturat, Qty to Order,Cantitate pentru comandă, Requested Items To Be Transferred,Articole solicitate de transferat, @@ -9091,7 +9081,6 @@ Unmarked days,Zile nemarcate, Absent Days,Zile absente, Conditions and Formula variable and example,Condiții și variabilă Formula și exemplu, Feedback By,Feedback de, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Secțiunea de fabricație, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","În mod implicit, Numele clientului este setat conform Numelui complet introdus. Dacă doriți ca clienții să fie numiți de un", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Configurați lista de prețuri implicită atunci când creați o nouă tranzacție de vânzări. Prețurile articolelor vor fi preluate din această listă de prețuri., @@ -9692,7 +9681,6 @@ Available Balance,Sold disponibil, Reserved Balance,Sold rezervat, Uncleared Balance,Sold neclar, Payment related to {0} is not completed,Plata aferentă {0} nu este finalizată, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rândul # {}: numărul de serie {}. {} a fost deja tranzacționat într-o altă factură POS. Vă rugăm să selectați numărul de serie valid., Row #{}: Item Code: {} is not available under warehouse {}.,Rândul # {}: Codul articolului: {} nu este disponibil în depozit {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Rândul # {}: cantitatea de stoc nu este suficientă pentru codul articolului: {} în depozit {}. Cantitate Disponibilă {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Rândul # {}: selectați un număr de serie și împărțiți-l cu elementul: {} sau eliminați-l pentru a finaliza tranzacția., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Cantitatea nu este disponibilă Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Vă rugăm să activați Permiteți stocul negativ în setările stocului sau creați intrarea stocului pentru a continua., No Inpatient Record found against patient {0},Nu s-a găsit nicio înregistrare a pacientului internat împotriva pacientului {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Există deja un ordin de medicare internă {0} împotriva întâlnirii pacientului {1}., +Allow In Returns,Permiteți returnări, +Hide Unavailable Items,Ascundeți articolele indisponibile, +Apply Discount on Discounted Rate,Aplicați reducere la tariful redus, +Therapy Plan Template,Șablon de plan de terapie, +Fetching Template Details,Preluarea detaliilor șablonului, +Linked Item Details,Detalii legate de articol, +Therapy Types,Tipuri de terapie, +Therapy Plan Template Detail,Detaliu șablon plan de terapie, +Non Conformance,Non conformist, +Process Owner,Deținătorul procesului, +Corrective Action,Acțiune corectivă, +Preventive Action,Actiune preventiva, +Problem,Problemă, +Responsible,Responsabil, +Completion By,Finalizare de, +Process Owner Full Name,Numele complet al proprietarului procesului, +Right Index,Index corect, +Left Index,Index stânga, +Sub Procedure,Sub procedură, +Passed,A trecut, +Print Receipt,Tipărire chitanță, +Edit Receipt,Editați chitanța, +Focus on search input,Concentrați-vă pe introducerea căutării, +Focus on Item Group filter,Concentrați-vă pe filtrul Grup de articole, +Checkout Order / Submit Order / New Order,Comanda de comandă / Trimiteți comanda / Comanda nouă, +Add Order Discount,Adăugați reducere la comandă, +Item Code: {0} is not available under warehouse {1}.,Cod articol: {0} nu este disponibil în depozit {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Numerele de serie nu sunt disponibile pentru articolul {0} aflat în depozit {1}. Vă rugăm să încercați să schimbați depozitul., +Fetched only {0} available serial numbers.,S-au preluat numai {0} numere de serie disponibile., +Switch Between Payment Modes,Comutați între modurile de plată, +Enter {0} amount.,Introduceți suma {0}., +You don't have enough points to redeem.,Nu aveți suficiente puncte de valorificat., +You can redeem upto {0}.,Puteți valorifica până la {0}., +Enter amount to be redeemed.,Introduceți suma de răscumpărat., +You cannot redeem more than {0}.,Nu puteți valorifica mai mult de {0}., +Open Form View,Deschideți vizualizarea formularului, +POS invoice {0} created succesfully,Factura POS {0} a fost creată cu succes, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Cantitatea de stoc nu este suficientă pentru Codul articolului: {0} în depozit {1}. Cantitatea disponibilă {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Nr. De serie: {0} a fost deja tranzacționat într-o altă factură POS., +Balance Serial No,Nr, +Warehouse: {0} does not belong to {1},Depozit: {0} nu aparține {1}, +Please select batches for batched item {0},Vă rugăm să selectați loturile pentru elementul lot {0}, +Please select quantity on row {0},Vă rugăm să selectați cantitatea de pe rândul {0}, +Please enter serial numbers for serialized item {0},Introduceți numerele de serie pentru articolul serializat {0}, +Batch {0} already selected.,Lotul {0} deja selectat., +Please select a warehouse to get available quantities,Vă rugăm să selectați un depozit pentru a obține cantitățile disponibile, +"For transfer from source, selected quantity cannot be greater than available quantity","Pentru transfer din sursă, cantitatea selectată nu poate fi mai mare decât cantitatea disponibilă", +Cannot find Item with this Barcode,Nu se poate găsi un articol cu acest cod de bare, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} este obligatoriu. Poate că înregistrarea schimbului valutar nu este creată pentru {1} până la {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} a trimis materiale legate de acesta. Trebuie să anulați activele pentru a crea returnarea achiziției., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Nu se poate anula acest document deoarece este asociat cu materialul trimis {0}. Anulați-l pentru a continua., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rândul # {}: numărul de serie {} a fost deja tranzacționat într-o altă factură POS. Vă rugăm să selectați numărul de serie valid., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rândul # {}: Nr. De serie {} a fost deja tranzacționat într-o altă factură POS. Vă rugăm să selectați numărul de serie valid., +Item Unavailable,Elementul nu este disponibil, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Rândul # {}: seria nr. {} Nu poate fi returnată deoarece nu a fost tranzacționată în factura originală {}, +Please set default Cash or Bank account in Mode of Payment {},Vă rugăm să setați implicit numerar sau cont bancar în modul de plată {}, +Please set default Cash or Bank account in Mode of Payments {},Vă rugăm să setați implicit numerar sau cont bancar în modul de plăți {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Vă rugăm să vă asigurați că {} contul este un cont de bilanț. Puteți schimba contul părinte într-un cont de bilanț sau puteți selecta un alt cont., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Vă rugăm să vă asigurați că {} contul este un cont de plătit. Schimbați tipul de cont la Plătibil sau selectați un alt cont., +Row {}: Expense Head changed to {} ,Rând {}: capul cheltuielilor a fost schimbat în {}, +because account {} is not linked to warehouse {} ,deoarece contul {} nu este conectat la depozit {}, +or it is not the default inventory account,sau nu este contul de inventar implicit, +Expense Head Changed,Capul cheltuielilor s-a schimbat, +because expense is booked against this account in Purchase Receipt {},deoarece cheltuielile sunt rezervate pentru acest cont în chitanța de cumpărare {}, +as no Purchase Receipt is created against Item {}. ,deoarece nu se creează chitanță de cumpărare împotriva articolului {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Acest lucru se face pentru a gestiona contabilitatea cazurilor în care Bonul de cumpărare este creat după factura de achiziție, +Purchase Order Required for item {},Comandă de achiziție necesară pentru articolul {}, +To submit the invoice without purchase order please set {} ,"Pentru a trimite factura fără comandă de cumpărare, setați {}", +as {} in {},ca în {}, +Mandatory Purchase Order,Comandă de cumpărare obligatorie, +Purchase Receipt Required for item {},Chitanță de cumpărare necesară pentru articolul {}, +To submit the invoice without purchase receipt please set {} ,"Pentru a trimite factura fără chitanță de cumpărare, setați {}", +Mandatory Purchase Receipt,Chitanță de cumpărare obligatorie, +POS Profile {} does not belongs to company {},Profilul POS {} nu aparține companiei {}, +User {} is disabled. Please select valid user/cashier,Utilizatorul {} este dezactivat. Vă rugăm să selectați un utilizator / casier valid, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Rândul # {}: factura originală {} a facturii de returnare {} este {}., +Original invoice should be consolidated before or along with the return invoice.,Factura originală ar trebui consolidată înainte sau împreună cu factura de returnare., +You can add original invoice {} manually to proceed.,Puteți adăuga factura originală {} manual pentru a continua., +Please ensure {} account is a Balance Sheet account. ,Vă rugăm să vă asigurați că {} contul este un cont de bilanț., +You can change the parent account to a Balance Sheet account or select a different account.,Puteți schimba contul părinte într-un cont de bilanț sau puteți selecta un alt cont., +Please ensure {} account is a Receivable account. ,Vă rugăm să vă asigurați că {} contul este un cont de încasat., +Change the account type to Receivable or select a different account.,Schimbați tipul de cont pentru de primit sau selectați un alt cont., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},"{} nu poate fi anulat, deoarece punctele de loialitate câștigate au fost valorificate. Anulați mai întâi {} Nu {}", +already exists,deja exista, +POS Closing Entry {} against {} between selected period,Închidere POS {} contra {} între perioada selectată, +POS Invoice is {},Factura POS este {}, +POS Profile doesn't matches {},Profilul POS nu se potrivește cu {}, +POS Invoice is not {},Factura POS nu este {}, +POS Invoice isn't created by user {},Factura POS nu este creată de utilizator {}, +Row #{}: {},Rând #{}: {}, +Invalid POS Invoices,Facturi POS nevalide, +Please add the account to root level Company - {},Vă rugăm să adăugați contul la compania la nivel de rădăcină - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","În timp ce creați un cont pentru Compania copil {0}, contul părinte {1} nu a fost găsit. Vă rugăm să creați contul părinte în COA corespunzător", +Account Not Found,Contul nu a fost găsit, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","În timp ce creați un cont pentru Compania pentru copii {0}, contul părinte {1} a fost găsit ca un cont mare.", +Please convert the parent account in corresponding child company to a group account.,Vă rugăm să convertiți contul părinte al companiei copil corespunzătoare într-un cont de grup., +Invalid Parent Account,Cont părinte nevalid, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Redenumirea acestuia este permisă numai prin intermediul companiei-mamă {0}, pentru a evita nepotrivirea.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Dacă {0} {1} cantitățile articolului {2}, schema {3} va fi aplicată articolului.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Dacă {0} {1} valorează articolul {2}, schema {3} va fi aplicată articolului.", +"As the field {0} is enabled, the field {1} is mandatory.","Deoarece câmpul {0} este activat, câmpul {1} este obligatoriu.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Deoarece câmpul {0} este activat, valoarea câmpului {1} trebuie să fie mai mare de 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Nu se poate livra numărul de serie {0} al articolului {1} deoarece este rezervat pentru a îndeplini comanda de vânzare {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Comanda de vânzări {0} are rezervare pentru articolul {1}, puteți livra rezervat {1} numai cu {0}.", +{0} Serial No {1} cannot be delivered,{0} Numărul de serie {1} nu poate fi livrat, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Rândul {0}: articolul subcontractat este obligatoriu pentru materia primă {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Deoarece există suficiente materii prime, cererea de material nu este necesară pentru depozit {0}.", +" If you still want to proceed, please enable {0}.","Dacă totuși doriți să continuați, activați {0}.", +The item referenced by {0} - {1} is already invoiced,Elementul la care face referire {0} - {1} este deja facturat, +Therapy Session overlaps with {0},Sesiunea de terapie se suprapune cu {0}, +Therapy Sessions Overlapping,Sesiunile de terapie se suprapun, +Therapy Plans,Planuri de terapie, +"Item Code, warehouse, quantity are required on row {0}","Codul articolului, depozitul, cantitatea sunt necesare pe rândul {0}", +Get Items from Material Requests against this Supplier,Obțineți articole din solicitările materiale împotriva acestui furnizor, +Enable European Access,Activați accesul european, +Creating Purchase Order ...,Se creează comanda de cumpărare ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Selectați un furnizor din furnizorii prestabiliți ai articolelor de mai jos. La selectare, o comandă de achiziție va fi făcută numai pentru articolele aparținând furnizorului selectat.", +Row #{}: You must select {} serial numbers for item {}.,Rândul # {}: trebuie să selectați {} numere de serie pentru articol {}., diff --git a/erpnext/translations/ru.csv b/erpnext/translations/ru.csv index 6d1e0b9f8b..7fcb7b08f7 100644 --- a/erpnext/translations/ru.csv +++ b/erpnext/translations/ru.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Не м Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',"Не можете вычесть, когда категория для "Оценка" или "Vaulation и Total '", "Cannot delete Serial No {0}, as it is used in stock transactions","Не удается удалить Серийный номер {0}, так как он используется в операции перемещения по складу.", Cannot enroll more than {0} students for this student group.,Не удается зарегистрировать более {0} студентов для этой группы студентов., -Cannot find Item with this barcode,Не удается найти товар с этим штрих-кодом, Cannot find active Leave Period,Не удается найти активный период отпуска, Cannot produce more Item {0} than Sales Order quantity {1},"Нельзя произвести продукта {0} больше, чем указано в Сделке {1}", Cannot promote Employee with status Left,Нельзя продвинуть сотрудника со статусом Уволен, @@ -690,7 +689,6 @@ Create Variants,Создать варианты, "Create and manage daily, weekly and monthly email digests.","Создавайте ежедневные, еженедельные и ежемесячные электронные письма.", Create customer quotes,Создание котировки клиентов, Create rules to restrict transactions based on values.,Создание правил для ограничения операций на основе значений., -Created By,Созданный, Created {0} scorecards for {1} between: ,Созданы {0} оценочные карточки для {1} между:, Creating Company and Importing Chart of Accounts,Создание компании и импорт плана счетов, Creating Fees,Создание сборов, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Для Склада является о For row {0}: Enter Planned Qty,Для строки {0}: введите запланированное количество, "For {0}, only credit accounts can be linked against another debit entry","Для {0}, только кредитные счета могут быть связаны с дебетовой записью", "For {0}, only debit accounts can be linked against another credit entry","Для {0}, только дебетовые счета могут быть связаны с кредитной записью", -Form View,Просмотр формы, Forum Activity,Активность в форуме, Free item code is not selected,Бесплатный код товара не выбран, Freight and Forwarding Charges,Грузовые и экспедиторские Сборы, @@ -2638,7 +2635,6 @@ Send SMS,Отправить смс, Send mass SMS to your contacts,Отправить массовое СМС по списку контактов, Sensitivity,чувствительность, Sent,Отправлено, -Serial #,Serial #, Serial No and Batch,Серийный номер и партия, Serial No is mandatory for Item {0},Серийный номер является обязательным для п. {0}, Serial No {0} does not belong to Batch {1},Серийный номер {0} не принадлежит к пакету {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Добро пожаловать в ERPNext, What do you need help with?,Как я могу вам помочь?, What does it do?,Что оно делает?, Where manufacturing operations are carried.,Где производственные операции проводятся., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","При создании учетной записи для дочерней компании {0} родительская учетная запись {1} не найдена. Пожалуйста, создайте родительский аккаунт в соответствующем сертификате подлинности.", White,белый, Wire Transfer,Банковский перевод, WooCommerce Products,Продукты WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Понравившееся, Merge with existing,Слияние с существующими, Office,Офис, Orientation,ориентация, +Parent,Родитель, Passive,Пассивный, Payment Failed,Платеж не прошел, Percent,Процент, @@ -3543,6 +3539,7 @@ Shift,сдвиг, Show {0},Показать {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Специальные символы, кроме "-", "#", ".", "/", "{" И "}", не допускаются в именных сериях", Target Details,Детали цели, +{0} already has a Parent Procedure {1}.,{0} уже имеет родительскую процедуру {1}., API,API, Annual,За год, Approved,Утверждено, @@ -4241,7 +4238,6 @@ Download as JSON,Скачать как JSON, End date can not be less than start date,"Дата окончания не может быть меньше, чем Дата начала", For Default Supplier (Optional),Поставщик по умолчанию (необязательно), From date cannot be greater than To date,"С даты не может быть больше, чем к дате", -Get items from,Получить продукты от, Group by,Group By, In stock,В наличии, Item name,Название продукта, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Параметр шаблона обратн Quality Goal,Цель качества, Monitoring Frequency,Частота мониторинга, Weekday,будний день, -January-April-July-October,Январь-апрель-июль-октябрь, -Revision and Revised On,Пересмотр и пересмотр, -Revision,пересмотр, -Revised On,Пересмотрено на, Objectives,Цели, Quality Goal Objective,Цель качества, Objective,Задача, @@ -7574,7 +7566,6 @@ Parent Procedure,Родительская процедура, Processes,Процессы, Quality Procedure Process,Процесс качественного процесса, Process Description,Описание процесса, -Child Procedure,Дочерняя процедура, Link existing Quality Procedure.,Ссылка существующей процедуры качества., Additional Information,Дополнительная информация, Quality Review Objective,Цель проверки качества, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Заказ на покупку Тенденции, Purchase Receipt Trends,Динамика Получения Поставок, Purchase Register,Покупка Становиться на учет, Quotation Trends,Динамика предложений, -Quoted Item Comparison,Цитируется Сравнение товара, Received Items To Be Billed,"Полученные товары, на которые нужно выписать счет", Qty to Order,Кол-во в заказ, Requested Items To Be Transferred,Запрашиваемые продукты к доставке, @@ -9091,7 +9081,6 @@ Unmarked days,Неотмеченные дни, Absent Days,Отсутствующие дни, Conditions and Formula variable and example,"Условия и формула, переменная и пример", Feedback By,Отзыв Автор, -MTNG-.YYYY.-.MM.-.DD.-,МТНГ-.ГГГГ .-. ММ .-. ДД.-, Manufacturing Section,Производственный отдел, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","По умолчанию имя клиента устанавливается в соответствии с введенным полным именем. Если вы хотите, чтобы имена клиентов", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Настройте прайс-лист по умолчанию при создании новой транзакции продаж. Цены на товары будут взяты из этого прейскуранта., @@ -9692,7 +9681,6 @@ Available Balance,доступные средства, Reserved Balance,Зарезервированный баланс, Uncleared Balance,Неочищенный баланс, Payment related to {0} is not completed,"Платеж, связанный с {0}, не завершен", -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,"Строка № {}: Серийный номер {}. {} уже переведен в другой счет-фактуру торговой точки. Пожалуйста, выберите действительный серийный номер.", Row #{}: Item Code: {} is not available under warehouse {}.,Строка № {}: Код товара: {} недоступен на складе {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Строка № {}: Недостаточно количества на складе для кода позиции: {} на складе {}. Доступное количество {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,"Строка № {}: выберите серийный номер и партию для позиции: {} или удалите ее, чтобы завершить транзакцию.", @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Количество недос Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,"Пожалуйста, включите «Разрешить отрицательный запас в настройках запаса» или создайте «Ввод запаса», чтобы продолжить.", No Inpatient Record found against patient {0},В отношении пациента {0} не обнаружено истории болезни., An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Приказ о лечении в стационаре {0} против встречи с пациентом {1} уже существует., +Allow In Returns,Разрешить возврат, +Hide Unavailable Items,Скрыть недоступные элементы, +Apply Discount on Discounted Rate,Применить скидку на скидку, +Therapy Plan Template,Шаблон плана терапии, +Fetching Template Details,Получение сведений о шаблоне, +Linked Item Details,Сведения о связанном элементе, +Therapy Types,Виды терапии, +Therapy Plan Template Detail,Подробности шаблона плана терапии, +Non Conformance,Несоответсвие, +Process Owner,Владелец процесса, +Corrective Action,Корректирующее действие, +Preventive Action,Превентивные действия, +Problem,Проблема, +Responsible,Ответственный, +Completion By,Завершено, +Process Owner Full Name,Полное имя владельца процесса, +Right Index,Правый указатель, +Left Index,Левый указатель, +Sub Procedure,Дополнительная процедура, +Passed,Прошло, +Print Receipt,Распечатать квитанцию, +Edit Receipt,Редактировать квитанцию, +Focus on search input,Сосредоточьтесь на вводе поиска, +Focus on Item Group filter,Фильтр по группам товаров, +Checkout Order / Submit Order / New Order,Заказ оформления заказа / Отправить заказ / Новый заказ, +Add Order Discount,Добавить скидку на заказ, +Item Code: {0} is not available under warehouse {1}.,Код товара: {0} недоступен на складе {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Отсутствуют серийные номера для позиции {0} на складе {1}. Попробуйте сменить склад., +Fetched only {0} available serial numbers.,Получено только {0} доступных серийных номеров., +Switch Between Payment Modes,Переключение между режимами оплаты, +Enter {0} amount.,Введите сумму {0}., +You don't have enough points to redeem.,У вас недостаточно очков для погашения., +You can redeem upto {0}.,Вы можете использовать до {0}., +Enter amount to be redeemed.,Введите сумму к выкупу., +You cannot redeem more than {0}.,Вы не можете обменять более {0}., +Open Form View,Открыть просмотр формы, +POS invoice {0} created succesfully,Счет-фактура POS {0} успешно создана, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Недостаточно количества на складе для кода товара: {0} на складе {1}. Доступное количество {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Серийный номер: {0} уже был переведен в другой счет-фактуру торговой точки., +Balance Serial No,Серийный номер весов, +Warehouse: {0} does not belong to {1},Склад: {0} не принадлежит {1}, +Please select batches for batched item {0},Выберите партии для товара {0}, +Please select quantity on row {0},Выберите количество в строке {0}, +Please enter serial numbers for serialized item {0},Введите серийные номера для номерного изделия {0}, +Batch {0} already selected.,Пакет {0} уже выбран., +Please select a warehouse to get available quantities,"Пожалуйста, выберите склад, чтобы получить доступное количество", +"For transfer from source, selected quantity cannot be greater than available quantity",Для передачи из источника выбранное количество не может быть больше доступного количества., +Cannot find Item with this Barcode,Не удается найти товар с этим штрих-кодом, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},"{0} является обязательным. Возможно, запись обмена валют не создана для {1} - {2}", +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,"{} отправил связанные с ним активы. Вам необходимо отменить активы, чтобы создать возврат покупки.", +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"Невозможно отменить этот документ, поскольку он связан с отправленным объектом {0}. Пожалуйста, отмените его, чтобы продолжить.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,"Строка № {}: серийный номер {} уже переведен в другой счет-фактуру торговой точки. Пожалуйста, выберите действительный серийный номер.", +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,"Строка № {}: Серийные номера {} уже были переведены в другой счет-фактуру торговой точки. Пожалуйста, выберите действительный серийный номер.", +Item Unavailable,Товар недоступен, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"Строка № {}: Серийный номер {} не может быть возвращен, поскольку он не был указан в исходном счете-фактуре {}", +Please set default Cash or Bank account in Mode of Payment {},Установите по умолчанию наличный или банковский счет в режиме оплаты {}, +Please set default Cash or Bank account in Mode of Payments {},Установите по умолчанию наличный или банковский счет в режиме оплаты {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,"Убедитесь, что счет {} является балансом. Вы можете изменить родительский счет на счет баланса или выбрать другой счет.", +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,"Убедитесь, что счет {} является счетом к оплате. Измените тип учетной записи на К оплате или выберите другую учетную запись.", +Row {}: Expense Head changed to {} ,Строка {}: заголовок расхода изменен на {}, +because account {} is not linked to warehouse {} ,потому что аккаунт {} не связан со складом {}, +or it is not the default inventory account,или это не учетная запись инвентаря по умолчанию, +Expense Head Changed,Расходная часть изменена, +because expense is booked against this account in Purchase Receipt {},поскольку расходы регистрируются по этому счету в квитанции о покупке {}, +as no Purchase Receipt is created against Item {}. ,поскольку для элемента {} не создается квитанция о покупке., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,"Это сделано для обработки учета в тех случаях, когда квитанция о покупке создается после счета-фактуры.", +Purchase Order Required for item {},Требуется заказ на покупку для товара {}, +To submit the invoice without purchase order please set {} ,"Чтобы отправить счет без заказа на покупку, установите {}", +as {} in {},как в {}, +Mandatory Purchase Order,Обязательный заказ на поставку, +Purchase Receipt Required for item {},Для товара требуется квитанция о покупке {}, +To submit the invoice without purchase receipt please set {} ,"Чтобы отправить счет без квитанции о покупке, установите {}", +Mandatory Purchase Receipt,Квитанция об обязательной покупке, +POS Profile {} does not belongs to company {},Профиль POS {} не принадлежит компании {}, +User {} is disabled. Please select valid user/cashier,Пользователь {} отключен. Выберите действующего пользователя / кассира, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Строка № {}: Исходный счет-фактура {} обратного счета-фактуры {}: {}., +Original invoice should be consolidated before or along with the return invoice.,Оригинальный счет-фактура должен быть объединен до или вместе с обратным счетом-фактурой., +You can add original invoice {} manually to proceed.,"Чтобы продолжить, вы можете добавить исходный счет {} вручную.", +Please ensure {} account is a Balance Sheet account. ,"Убедитесь, что счет {} является балансом.", +You can change the parent account to a Balance Sheet account or select a different account.,Вы можете изменить родительский счет на счет баланса или выбрать другой счет., +Please ensure {} account is a Receivable account. ,"Убедитесь, что счет {} является счетом дебиторской задолженности.", +Change the account type to Receivable or select a different account.,Измените тип учетной записи на Дебиторскую задолженность или выберите другую учетную запись., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},"{} не может быть отменен, так как заработанные очки лояльности были погашены. Сначала отмените {} Нет {}", +already exists,уже существует, +POS Closing Entry {} against {} between selected period,Закрытие торговой точки {} против {} между выбранным периодом, +POS Invoice is {},Счет-фактура POS: {}, +POS Profile doesn't matches {},Профиль POS не соответствует {}, +POS Invoice is not {},Счет-фактура POS не {}, +POS Invoice isn't created by user {},Счет-фактура POS не создается пользователем {}, +Row #{}: {},Строка #{}: {}, +Invalid POS Invoices,Недействительные счета-фактуры POS, +Please add the account to root level Company - {},"Пожалуйста, добавьте аккаунт в компанию корневого уровня - {}", +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","При создании аккаунта для дочерней компании {0} родительский аккаунт {1} не найден. Пожалуйста, создайте родительский аккаунт в соответствующем сертификате подлинности", +Account Not Found,Аккаунт не найден, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",При создании аккаунта для дочерней компании {0} родительский аккаунт {1} обнаружен как счет главной книги., +Please convert the parent account in corresponding child company to a group account.,Преобразуйте родительскую учетную запись в соответствующей дочерней компании в групповую., +Invalid Parent Account,Неверный родительский аккаунт, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Переименование разрешено только через головную компанию {0}, чтобы избежать несоответствия.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Если вы {0} {1} количество товара {2}, схема {3} будет применена к товару.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Если вы {0} {1} оцениваете предмет {2}, к нему будет применена схема {3}.", +"As the field {0} is enabled, the field {1} is mandatory.","Поскольку поле {0} включено, поле {1} является обязательным.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Поскольку поле {0} включено, значение поля {1} должно быть больше 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Невозможно доставить серийный номер {0} товара {1}, поскольку он зарезервирован для выполнения заказа на продажу {2}", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Заказ на продажу {0} имеет резервирование для товара {1}, вы можете доставить только зарезервированный {1} для {0}.", +{0} Serial No {1} cannot be delivered,{0} Серийный номер {1} не может быть доставлен, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Строка {0}: Субподрядный элемент является обязательным для сырья {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Поскольку сырья достаточно, запрос материалов для хранилища {0} не требуется.", +" If you still want to proceed, please enable {0}.","Если вы все еще хотите продолжить, включите {0}.", +The item referenced by {0} - {1} is already invoiced,"На товар, на который ссылается {0} - {1}, уже выставлен счет", +Therapy Session overlaps with {0},Сеанс терапии совпадает с {0}, +Therapy Sessions Overlapping,Совмещение сеансов терапии, +Therapy Plans,Планы терапии, +"Item Code, warehouse, quantity are required on row {0}","Код товара, склад, количество требуются в строке {0}", +Get Items from Material Requests against this Supplier,Получить товары из запросов материалов к этому поставщику, +Enable European Access,Включить европейский доступ, +Creating Purchase Order ...,Создание заказа на поставку ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Выберите поставщика из списка поставщиков по умолчанию для позиций ниже. При выборе Заказ на поставку будет сделан в отношении товаров, принадлежащих только выбранному Поставщику.", +Row #{}: You must select {} serial numbers for item {}.,Строка № {}: необходимо выбрать {} серийных номеров для позиции {}., diff --git a/erpnext/translations/rw.csv b/erpnext/translations/rw.csv index b03f734c6d..64591399af 100644 --- a/erpnext/translations/rw.csv +++ b/erpnext/translations/rw.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',Ntushobo Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',Ntushobora kugabanya igihe icyiciro ari 'Agaciro' cyangwa 'Igiciro na Byose', "Cannot delete Serial No {0}, as it is used in stock transactions","Ntushobora gusiba Serial No {0}, nkuko ikoreshwa mubikorwa byimigabane", Cannot enroll more than {0} students for this student group.,Ntushobora kwiyandikisha kurenza {0} kubanyeshuri b'iri tsinda., -Cannot find Item with this barcode,Ntushobora kubona Ikintu hamwe niyi barcode, Cannot find active Leave Period,Ntushobora kubona Ikiruhuko gikora, Cannot produce more Item {0} than Sales Order quantity {1},Ntushobora kubyara Ikintu {0} kuruta kugurisha ibicuruzwa {1}, Cannot promote Employee with status Left,Ntushobora kuzamura Umukozi ufite status Ibumoso, @@ -690,7 +689,6 @@ Create Variants,Kurema Ibihinduka, "Create and manage daily, weekly and monthly email digests.","Kurema no gucunga buri munsi, buri cyumweru na buri kwezi imeri.", Create customer quotes,Kora amagambo yatanzwe nabakiriya, Create rules to restrict transactions based on values.,Shiraho amategeko yo kugabanya ibikorwa bishingiye ku ndangagaciro., -Created By,Byaremwe na, Created {0} scorecards for {1} between: ,Hakozwe {0} amanota ya {1} hagati:, Creating Company and Importing Chart of Accounts,Gushiraho Isosiyete no Gutumiza Imbonerahamwe ya Konti, Creating Fees,Gushiraho Amafaranga, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Kububiko burasabwa mbere yo gutanga, For row {0}: Enter Planned Qty,Ku murongo {0}: Injira Qty Yateganijwe, "For {0}, only credit accounts can be linked against another debit entry","Kuri {0}, amakonte yinguzanyo yonyine arashobora guhuzwa nibindi byinjira", "For {0}, only debit accounts can be linked against another credit entry","Kuri {0}, konti zo kubikuza gusa zishobora guhuzwa nizindi nguzanyo", -Form View,Ifishi Reba, Forum Activity,Ibikorwa bya Forumu, Free item code is not selected,Kode yubuntu ntabwo yatoranijwe, Freight and Forwarding Charges,Amafaranga yo gutwara no kohereza, @@ -2638,7 +2635,6 @@ Send SMS,Kohereza SMS, Send mass SMS to your contacts,Ohereza ubutumwa bugufi kuri konti yawe, Sensitivity,Ibyiyumvo, Sent,Yoherejwe, -Serial #,Serial #, Serial No and Batch,Serial Oya na Batch, Serial No is mandatory for Item {0},Serial Oya ni itegeko kubintu {0}, Serial No {0} does not belong to Batch {1},Serial No {0} ntabwo ari iya Batch {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Murakaza neza kuri ERPNext, What do you need help with?,Niki ukeneye ubufasha?, What does it do?,Ikora iki?, Where manufacturing operations are carried.,Aho ibikorwa byo gukora bikorerwa., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Mugihe cyo gukora konti yumuryango Company 0}, konti yababyeyi {1} ntabwo yabonetse. Nyamuneka kora konti yababyeyi muri COA ihuye", White,Cyera, Wire Transfer,Kwimura insinga, WooCommerce Products,WooCommerce Products, @@ -3493,6 +3488,7 @@ Likes,Gukunda, Merge with existing,Ihuze nibihari, Office,Ibiro, Orientation,Icyerekezo, +Parent,Ababyeyi, Passive,Passive, Payment Failed,Kwishura byarananiranye, Percent,Ijanisha, @@ -3543,6 +3539,7 @@ Shift,Shift, Show {0},Erekana {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Inyuguti zidasanzwe usibye "-", "#", ".", "/", "{" Na "}" ntibyemewe mu ruhererekane rwo kwita izina", Target Details,Intego Ibisobanuro, +{0} already has a Parent Procedure {1}.,{0} isanzwe ifite uburyo bwababyeyi {1}., API,API, Annual,Buri mwaka, Approved,Byemejwe, @@ -4241,7 +4238,6 @@ Download as JSON,Kuramo nka JSON, End date can not be less than start date,Itariki yo kurangiriraho ntishobora kuba munsi yitariki yo gutangiriraho, For Default Supplier (Optional),Kubisanzwe Bitanga (Bihitamo), From date cannot be greater than To date,Kuva ku italiki ntishobora kurenza Kumunsi, -Get items from,Shaka ibintu, Group by,Itsinda by, In stock,Mububiko, Item name,Izina ryikintu, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Ibitekerezo Byiza Inyandikorugero Parameter, Quality Goal,Intego nziza, Monitoring Frequency,Gukurikirana Inshuro, Weekday,Icyumweru, -January-April-July-October,Mutarama-Mata-Nyakanga-Ukwakira, -Revision and Revised On,Kuvugurura no gusubirwamo, -Revision,Gusubiramo, -Revised On,Yasubiwemo, Objectives,Intego, Quality Goal Objective,Intego nziza, Objective,Intego, @@ -7574,7 +7566,6 @@ Parent Procedure,Uburyo bw'ababyeyi, Processes,Inzira, Quality Procedure Process,Inzira yuburyo bwiza, Process Description,Ibisobanuro, -Child Procedure,Uburyo bw'abana, Link existing Quality Procedure.,Huza uburyo bwiza buriho., Additional Information,Amakuru yinyongera, Quality Review Objective,Intego yo gusuzuma ubuziranenge, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Kugura Ibiciro, Purchase Receipt Trends,Kugura inyemezabwishyu, Purchase Register,Kwiyandikisha, Quotation Trends,Imirongo, -Quoted Item Comparison,Kugereranya Ikintu Kugereranya, Received Items To Be Billed,Yakiriye Ibintu Byishyurwa, Qty to Order,Qty gutumiza, Requested Items To Be Transferred,Ibintu Byasabwe Kwimurwa, @@ -9091,7 +9081,6 @@ Unmarked days,Iminsi itamenyekanye, Absent Days,Iminsi idahari, Conditions and Formula variable and example,Imiterere na formula ihindagurika nurugero, Feedback By,Ibitekerezo By, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Igice cyo gukora, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Mburabuzi, Izina ryabakiriya ryashyizweho nkuko Izina ryuzuye ryinjiye. Niba ushaka ko abakiriya bitirirwa a", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Kugena Ibiciro Byambere Urutonde mugihe ukora igicuruzwa gishya. Ibiciro byikintu bizakurwa kururu rutonde rwibiciro., @@ -9692,7 +9681,6 @@ Available Balance,Impirimbanyi iboneka, Reserved Balance,Impirimbanyi zabitswe, Uncleared Balance,Impirimbanyi idasobanutse, Payment related to {0} is not completed,Kwishura bijyanye na {0} ntabwo byuzuye, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Umurongo # {}: Serial No {}. .} yamaze guhindurwa muyindi fagitire ya POS. Nyamuneka hitamo urutonde rwemewe., Row #{}: Item Code: {} is not available under warehouse {}.,Umurongo # {}: Kode y'Ikintu: {} ntabwo iboneka munsi yububiko {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Umurongo # {}: Umubare wimigabane ntabwo uhagije kubintu byingingo: {} munsi yububiko {}. Umubare uraboneka {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Umurongo # {}: Nyamuneka hitamo serial oya hanyuma utegure ikintu: {} cyangwa ukureho kugirango urangize ibikorwa., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Umubare ntuboneka kuri {0} mubub Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Nyamuneka ushoboze Emerera ububiko bubi mumiterere yimigabane cyangwa ushireho ububiko bwimigabane kugirango ukomeze., No Inpatient Record found against patient {0},Nta nyandiko y’indwara yabonetse irwanya umurwayi {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Icyemezo cyo gufata imiti idakira {0} kurwanya Guhura kw'abarwayi {1} kimaze kubaho., +Allow In Returns,Emera kugaruka, +Hide Unavailable Items,Hisha Ibintu bitaboneka, +Apply Discount on Discounted Rate,Koresha Kugabanuka Kubiciro Byagabanijwe, +Therapy Plan Template,Igishushanyo mbonera cyo kuvura, +Fetching Template Details,Kubona Inyandikorugero Ibisobanuro, +Linked Item Details,Guhuza Ikintu Ibisobanuro, +Therapy Types,Ubwoko bwo kuvura, +Therapy Plan Template Detail,Gahunda yo Kuvura Inyandikorugero irambuye, +Non Conformance,Kutubahiriza, +Process Owner,Nyir'ibikorwa, +Corrective Action,Igikorwa cyo Gukosora, +Preventive Action,Igikorwa cyo gukumira, +Problem,Ikibazo, +Responsible,Ushinzwe, +Completion By,Kurangiza By, +Process Owner Full Name,Inzira nyirayo Izina ryuzuye, +Right Index,Ironderero ry'iburyo, +Left Index,Ibumoso, +Sub Procedure,Uburyo bukurikira, +Passed,Yararenganye, +Print Receipt,Inyemezabwishyu, +Edit Receipt,Hindura inyemezabwishyu, +Focus on search input,Wibande kubushakashatsi, +Focus on Item Group filter,Wibande ku Ikintu Itsinda Ryungurura, +Checkout Order / Submit Order / New Order,Iteka rya cheque / Tanga itegeko / Iteka rishya, +Add Order Discount,Ongeraho kugabanyirizwa ibicuruzwa, +Item Code: {0} is not available under warehouse {1}.,Kode yikintu: {0} ntabwo iboneka munsi yububiko {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Imibare ikurikirana itaboneka kubintu {0} munsi yububiko {1}. Nyamuneka gerageza guhindura ububiko., +Fetched only {0} available serial numbers.,Kubona {0} gusa nimero zikurikirana., +Switch Between Payment Modes,Hindura hagati yuburyo bwo kwishyura, +Enter {0} amount.,Injiza {0} umubare., +You don't have enough points to redeem.,Ntabwo ufite ingingo zihagije zo gucungura., +You can redeem upto {0}.,Urashobora gucungura kugeza {0}., +Enter amount to be redeemed.,Injiza amafaranga yo gucungurwa., +You cannot redeem more than {0}.,Ntushobora gucungura ibirenze {0}., +Open Form View,Fungura Ifishi Reba, +POS invoice {0} created succesfully,Inyemezabuguzi ya POS {0} yaremye neza, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Umubare wimigabane ntabwo uhagije kubintu byingingo: {0} munsi yububiko {1}. Umubare uraboneka {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Serial No: {0} yamaze guhindurwa muyindi fagitire ya POS., +Balance Serial No,Kuringaniza Urutonde No., +Warehouse: {0} does not belong to {1},Ububiko: {0} ntabwo ari {1}, +Please select batches for batched item {0},Nyamuneka hitamo ibyiciro kubintu 0 {, +Please select quantity on row {0},Nyamuneka hitamo ingano kumurongo {0}, +Please enter serial numbers for serialized item {0},Nyamuneka andika inomero zikurikirana kubintu byakurikiranye {0}, +Batch {0} already selected.,Batch {0} yamaze gutoranywa., +Please select a warehouse to get available quantities,Nyamuneka hitamo ububiko kugirango ubone umubare uhari, +"For transfer from source, selected quantity cannot be greater than available quantity","Kwimura biva mu isoko, umubare watoranijwe ntushobora kurenza umubare uhari", +Cannot find Item with this Barcode,Ntushobora kubona Ikintu hamwe niyi Barcode, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} ni itegeko. Ahari inyandiko yo kuvunja ntabwo yakozwe kuri {1} kugeza {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} yatanze umutungo ujyanye nayo. Ugomba guhagarika umutungo kugirango ugarure kugura., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Ntushobora guhagarika iyi nyandiko kuko ihujwe numutungo watanzwe {0}. Nyamuneka uhagarike kugirango ukomeze., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Umurongo # {}: Serial No {} yamaze guhindurwa muyindi fagitire ya POS. Nyamuneka hitamo urutonde rwemewe., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Umurongo # {}: Urutonde Nomero {} yamaze guhindurwa muyindi fagitire ya POS. Nyamuneka hitamo urutonde rwemewe., +Item Unavailable,Ikintu kitaboneka, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Umurongo # {}: Serial No {} ntishobora gusubizwa kuva itakozwe muri fagitire yumwimerere {}, +Please set default Cash or Bank account in Mode of Payment {},Nyamuneka shyira konte ya Cash cyangwa Banki muburyo bwo kwishyura {}, +Please set default Cash or Bank account in Mode of Payments {},Nyamuneka shyira konte ya Cash cyangwa Banki muburyo bwo kwishyura {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Nyamuneka wemeze {} konte ni urupapuro rwuzuye. Urashobora guhindura konte yababyeyi kuri konte yimpapuro cyangwa ugahitamo konti itandukanye., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Nyamuneka wemeze {} konte ni konti yishyuwe. Hindura ubwoko bwa konti kuri Kwishura cyangwa hitamo konti itandukanye., +Row {}: Expense Head changed to {} ,Umurongo {}: Umutwe Ukoresha wahinduwe kuri {}, +because account {} is not linked to warehouse {} ,kuberako konte {} ntaho ihuriye nububiko {}, +or it is not the default inventory account,cyangwa ntabwo ari konte yububiko, +Expense Head Changed,Amafaranga yakoreshejwe Umutwe Yahinduwe, +because expense is booked against this account in Purchase Receipt {},kuberako amafaranga yatanzwe kuri iyi konti mu nyemezabuguzi yo kugura {}, +as no Purchase Receipt is created against Item {}. ,nkuko nta nyemezabuguzi yo kugura yashizweho kurwanya Ikintu {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Ibi bikorwa mugukemura ibaruramari mugihe inyemezabuguzi yubuguzi yashizweho nyuma ya fagitire yubuguzi, +Purchase Order Required for item {},Kugura Ibicuruzwa bisabwa kubintu {}, +To submit the invoice without purchase order please set {} ,Gutanga inyemezabuguzi nta gutumiza kugura nyamuneka shiraho {}, +as {} in {},nka {} muri {}, +Mandatory Purchase Order,Icyemezo cyo kugura itegeko, +Purchase Receipt Required for item {},Inyemezabuguzi yo kugura isabwa kubintu {}, +To submit the invoice without purchase receipt please set {} ,Gutanga inyemezabuguzi nta nyemezabuguzi yaguze nyamuneka shiraho {}, +Mandatory Purchase Receipt,Inyemezabuguzi yo kugura, +POS Profile {} does not belongs to company {},Umwirondoro wa POS {} ntabwo ari uw'isosiyete {}, +User {} is disabled. Please select valid user/cashier,Umukoresha {} arahagaritswe. Nyamuneka hitamo umukoresha wemewe, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Umurongo # {}: Inyemezabuguzi y'umwimerere {} ya fagitire yo kugaruka {} ni {}., +Original invoice should be consolidated before or along with the return invoice.,Inyemezabuguzi yumwimerere igomba guhuzwa mbere cyangwa hamwe na fagitire yo kugaruka., +You can add original invoice {} manually to proceed.,Urashobora kongeramo inyemezabuguzi yumwimerere {} intoki kugirango ukomeze., +Please ensure {} account is a Balance Sheet account. ,Nyamuneka wemeze {} konte ni urupapuro rwuzuye., +You can change the parent account to a Balance Sheet account or select a different account.,Urashobora guhindura konte yababyeyi kuri konte yimpapuro cyangwa ugahitamo konti itandukanye., +Please ensure {} account is a Receivable account. ,Nyamuneka wemeze {} konte ni konti yakirwa., +Change the account type to Receivable or select a different account.,Hindura ubwoko bwa konti kuri Kwakirwa cyangwa hitamo konti itandukanye., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} ntishobora guhagarikwa kuva amanota yubudahemuka yabonye yacunguwe. Banza uhagarike {} Oya {}, +already exists,isanzweho, +POS Closing Entry {} against {} between selected period,POS Gufunga Ibyinjira {} kurwanya {} hagati yigihe cyatoranijwe, +POS Invoice is {},Inyemezabuguzi ya POS ni {}, +POS Profile doesn't matches {},Umwirondoro wa POS ntabwo uhuye {}, +POS Invoice is not {},Inyemezabuguzi ya POS ntabwo {}, +POS Invoice isn't created by user {},Inyemezabuguzi ya POS ntabwo yakozwe numukoresha {}, +Row #{}: {},Umurongo # {}: {}, +Invalid POS Invoices,Inyemezabuguzi za POS zitemewe, +Please add the account to root level Company - {},Nyamuneka ongeraho konte kurwego rwimizi - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Mugihe ukora konti ya sosiyete y'abana {0}, konti y'ababyeyi {1} ntabwo yabonetse. Nyamuneka kora konti yababyeyi muri COA ihuye", +Account Not Found,Konti Ntabonetse, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Mugihe cyo gukora konti ya societe yumwana {0}, konte yababyeyi {1} iboneka nka konte yigitabo.", +Please convert the parent account in corresponding child company to a group account.,Nyamuneka hindura konte yababyeyi muri sosiyete ihuye na konte yitsinda., +Invalid Parent Account,Konti y'ababyeyi itemewe, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Guhindura izina biremewe gusa binyuze mubigo byababyeyi {0}, kugirango wirinde kudahuza.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Niba {0} {1} ingano yikintu {2}, gahunda {3} izashyirwa kumurongo.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Niba ufite {0} {1} agaciro kikintu {2}, gahunda {3} izashyirwa mubikorwa.", +"As the field {0} is enabled, the field {1} is mandatory.","Nkuko umurima {0} ushoboye, umurima {1} ni itegeko.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Nkuko umurima {0} ushoboye, agaciro k'umurima {1} kagomba kuba karenze 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Ntushobora gutanga Serial No {0} yikintu {1} kuko yagenewe kuzuza ibicuruzwa byuzuye {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Ibicuruzwa byo kugurisha {0} bifite ububiko bwikintu {1}, urashobora gutanga gusa {1} wabitswe {0}.", +{0} Serial No {1} cannot be delivered,{0} Serial No {1} ntishobora gutangwa, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Umurongo {0}: Ikintu cyateganijwe ni itegeko kubikoresho fatizo {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Nkuko hari ibikoresho bibisi bihagije, Gusaba Ibikoresho ntibisabwa kububiko {0}.", +" If you still want to proceed, please enable {0}.","Niba ugishaka gukomeza, nyamuneka ushoboze {0}.", +The item referenced by {0} - {1} is already invoiced,Ikintu kivugwa na {0} - {1} kimaze gutangwa, +Therapy Session overlaps with {0},Isomo ryo kuvura ryuzuzanya na {0}, +Therapy Sessions Overlapping,Amasomo yo kuvura, +Therapy Plans,Gahunda yo kuvura, +"Item Code, warehouse, quantity are required on row {0}","Kode yikintu, ububiko, ingano irakenewe kumurongo {0}", +Get Items from Material Requests against this Supplier,Shakisha Ibintu Mubisabwa Ibikoresho Kurwanya Utanga isoko, +Enable European Access,Gushoboza Uburayi, +Creating Purchase Order ...,Gushiraho gahunda yo kugura ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Hitamo Utanga isoko uhereye kubisanzwe bitanga ibintu hepfo. Muguhitamo, Iteka ryubuguzi rizakorwa kurwanya ibintu byatoranijwe gusa.", +Row #{}: You must select {} serial numbers for item {}.,Umurongo # {}: Ugomba guhitamo {} nimero yuruhererekane kubintu {}., diff --git a/erpnext/translations/si.csv b/erpnext/translations/si.csv index 3dddf54b7f..690c47332d 100644 --- a/erpnext/translations/si.csv +++ b/erpnext/translations/si.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',කා Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',කාණ්ඩය තක්සේරු 'හෝ' Vaulation හා පූර්ණ 'සඳහා වන විට අඩු කර නොහැකි, "Cannot delete Serial No {0}, as it is used in stock transactions","අනු අංකය මකා දැමිය නොහැකි {0}, එය කොටස් ගනුදෙනු සඳහා භාවිතා වන පරිදි", Cannot enroll more than {0} students for this student group.,{0} මෙම ශිෂ්ය කන්ඩායමක් සඳහා සිසුන් වඩා ලියාපදිංචි කල නොහැක., -Cannot find Item with this barcode,මෙම තීරු කේතය සමඟ අයිතමය සොයාගත නොහැක, Cannot find active Leave Period,ක්රියාකාරී නිවාඩු කාලයක් සොයා ගත නොහැක, Cannot produce more Item {0} than Sales Order quantity {1},විකුණුම් සාමය ප්රමාණය {1} වඩා වැඩි අයිතමය {0} බිහි කිරීමට නොහැක, Cannot promote Employee with status Left,සේවකයාගේ තත්වය වාමාංශය සමඟ ප්රවර්ධනය කළ නොහැක, @@ -690,7 +689,6 @@ Create Variants,ප්‍රභේද සාදන්න, "Create and manage daily, weekly and monthly email digests.","නිර්මාණය හා දෛනික, කළමනාකරණය කිරීම, සතිපතා හා මාසික ඊ-තැපැල් digests.", Create customer quotes,පාරිභෝගික මිල කැඳවීම් නිර්මාණය, Create rules to restrict transactions based on values.,අගය පාදක කර ගනුදෙනු සීමා කිරීමට නීති රීති නිර්මාණය කරන්න., -Created By,නිර්මාණය කළේ, Created {0} scorecards for {1} between: ,{1} අතර {0} සඳහා සාධක කාඩ්පත් නිර්මාණය කරන ලදි:, Creating Company and Importing Chart of Accounts,සමාගමක් නිර්මාණය කිරීම සහ ගිණුම් වගුව ආනයනය කිරීම, Creating Fees,ගාස්තු සැකසීම, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,ගබඩාව අවශ්ය වේ For row {0}: Enter Planned Qty,පේළි {0} සඳහා: සැලසුම්ගත qty ඇතුල් කරන්න, "For {0}, only credit accounts can be linked against another debit entry",{0} සඳහා පමණක් ණය ගිණුම් තවත් හර සටහන හා සම්බන්ධ කර ගත හැකි, "For {0}, only debit accounts can be linked against another credit entry","{0} සඳහා, ඩෙබිට් ගිණුම් වලට පමණක් තවත් ණය ප්රවේශය හා සම්බන්ධ කර ගත හැකි", -Form View,Form View, Forum Activity,සංසද ක්රියාකාරිත්වය, Free item code is not selected,නොමිලේ අයිතම කේතය තෝරා නොමැත, Freight and Forwarding Charges,ගැල් පරිවහන හා භාණ්ඩ යොමු ගාස්තු, @@ -2638,7 +2635,6 @@ Send SMS,කෙටි පණිවුඩ යවන්න, Send mass SMS to your contacts,ඔබගේ සම්බන්ධතා මහජන SMS යවන්න, Sensitivity,සංවේදීතාව, Sent,එවා, -Serial #,අනු #, Serial No and Batch,අනු අංකය හා කණ්ඩායම, Serial No is mandatory for Item {0},අනු අංකය අයිතමය {0} සඳහා අනිවාර්ය වේ, Serial No {0} does not belong to Batch {1},අනු අංකය අංක {0} කණ්ඩායමට අයත් නොවේ {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ERPNext වෙත ඔබව සාදරයෙන් පි What do you need help with?,ඔබ කුමක් උදව් අවශ්ය වන්නේ ඇයි?, What does it do?,එය කරන්නේ කුමක්ද?, Where manufacturing operations are carried.,නිෂ්පාදන මෙහෙයුම් සිදු කරනු ලැබේ කොහෙද., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",ළමා සමාගම {0} ගිණුමක් නිර්මාණය කරන අතර මාපිය ගිණුම {1} හමු නොවිනි. කරුණාකර අදාල ප්රභූවරයෙකුගේ මව්පියන්ගේ ගිණුමක් සාදන්න, White,සුදු, Wire Transfer,වයර් ට්රාන්ෆර්, WooCommerce Products,WooCommerce නිෂ්පාදන, @@ -3493,6 +3488,7 @@ Likes,වැන්නන්, Merge with existing,දැනට පවතින සමඟ ඒකාබද්ධ වීමේ, Office,කාර්යාල, Orientation,දිශානතිය, +Parent,මව්, Passive,උදාසීන, Payment Failed,ගෙවීම් අසාර්ථක විය, Percent,සියයට, @@ -3543,6 +3539,7 @@ Shift,මාරුව, Show {0},{0 Show පෙන්වන්න, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",""-", "#", ".", "/", "{" සහ "}" හැර විශේෂ අක්ෂර නම් කිරීමේ ශ්‍රේණියේ අවසර නැත", Target Details,ඉලක්ක විස්තර, +{0} already has a Parent Procedure {1}.,{0} දැනටමත් දෙමාපිය ක්‍රියා පටිපාටියක් ඇත {1}., API,API, Annual,වාර්ෂික, Approved,අනුමත, @@ -4241,7 +4238,6 @@ Download as JSON,JSON ලෙස බාගන්න, End date can not be less than start date,අවසන් දිනය ඇරඹුම් දිනය ඊට වඩා අඩු විය නොහැක, For Default Supplier (Optional),Default සැපයුම්කරු සඳහා (විකල්ප), From date cannot be greater than To date,දිනය සිට දිනට වඩා වැඩි විය නොහැක, -Get items from,සිට භාණ්ඩ ලබා ගන්න, Group by,කණ්ඩායම විසින්, In stock,ගබඩාවේ ඇත, Item name,අයිතමය නම, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,ගුණාත්මක ප්‍රති Quality Goal,ගුණාත්මක ඉලක්කය, Monitoring Frequency,අධීක්ෂණ වාර ගණන, Weekday,සතියේ දිනය, -January-April-July-October,ජනවාරි-අප්රේල්-ජූලි-ඔක්තෝබර්, -Revision and Revised On,සංශෝධනය සහ සංශෝධිත, -Revision,සංශෝධනය, -Revised On,සංශෝධිත, Objectives,අරමුණු, Quality Goal Objective,ගුණාත්මක ඉලක්ක පරමාර්ථය, Objective,අරමුණ, @@ -7574,7 +7566,6 @@ Parent Procedure,දෙමාපිය ක්‍රියා පටිපාට Processes,ක්‍රියාවලි, Quality Procedure Process,තත්ත්ව පටිපාටි ක්‍රියාවලිය, Process Description,ක්‍රියාවලි විස්තරය, -Child Procedure,ළමා පටිපාටිය, Link existing Quality Procedure.,පවතින තත්ත්ව ක්‍රියා පටිපාටිය සම්බන්ධ කරන්න., Additional Information,අමතර තොරතුරු, Quality Review Objective,තත්ත්ව සමාලෝචන පරමාර්ථය, @@ -8557,7 +8548,6 @@ Purchase Order Trends,මිලදී ගැනීමේ නියෝගයක Purchase Receipt Trends,මිලදී ගැනීම රිසිට්පත ප්රවණතා, Purchase Register,මිලදී රෙජිස්ටර්, Quotation Trends,උද්ධෘත ප්රවණතා, -Quoted Item Comparison,උපුටා අයිතමය සංසන්දනය, Received Items To Be Billed,ලැබී අයිතම බිල්පතක්, Qty to Order,ඇණවුම් යවන ලද, Requested Items To Be Transferred,ඉල්ලන අයිතම මාරු කර, @@ -9091,7 +9081,6 @@ Unmarked days,සලකුණු නොකළ දින, Absent Days,නොපැමිණෙන දින, Conditions and Formula variable and example,කොන්දේසි සහ සූත්‍ර විචල්‍යය සහ උදාහරණය, Feedback By,ප්‍රතිපෝෂණය, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,නිෂ්පාදන අංශය, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","පෙරනිමියෙන්, ඇතුළත් කළ සම්පූර්ණ නමට අනුව පාරිභෝගිකයාගේ නම සකසා ඇත. ඔබට ගනුදෙනුකරුවන් නම් කිරීමට අවශ්‍ය නම් a", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,නව විකුණුම් ගනුදෙනුවක් නිර්මාණය කිරීමේදී පෙරනිමි මිල ලැයිස්තුව වින්‍යාස කරන්න. අයිතමයේ මිල මෙම මිල ලැයිස්තුවෙන් ලබා ගනී., @@ -9692,7 +9681,6 @@ Available Balance,ලබා ගත හැකි ශේෂය, Reserved Balance,වෙන් කළ ශේෂය, Uncleared Balance,අපැහැදිලි ශේෂය, Payment related to {0} is not completed,{0 to ට අදාළ ගෙවීම් සම්පූර්ණ කර නැත, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,පේළිය # {}: අනුක්‍රමික අංකය {}. P already දැනටමත් වෙනත් POS ඉන්වොයිසියකට ගනුදෙනු කර ඇත. කරුණාකර වලංගු අනුක්‍රමික අංකය තෝරන්න., Row #{}: Item Code: {} is not available under warehouse {}.,පේළිය # {}: අයිතම කේතය: {} ගබඩාව යටතේ නොමැත}}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,පේළිය # {}: අයිතම කේතය සඳහා තොග ප්‍රමාණය ප්‍රමාණවත් නොවේ: ගබඩාව යටතේ {}. ලබා ගත හැකි ප්‍රමාණය {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,පේළිය # {}: කරුණාකර අනුක්‍රමික අංකයක් තෝරා අයිතමයට එරෙහිව කණ්ඩායම් කරන්න: {} හෝ ගනුදෙනුව සම්පූර්ණ කිරීම සඳහා එය ඉවත් කරන්න., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},ගබඩාවේ {1 for සඳ Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,කරුණාකර කොටස් සැකසුම් තුළ සෘණ කොටස් වලට ඉඩ දෙන්න හෝ ඉදිරියට යාමට කොටස් ඇතුළත් කරන්න., No Inpatient Record found against patient {0},Patient 0 patient රෝගියාට එරෙහිව නේවාසික රෝගී වාර්තාවක් හමු නොවීය, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,රෝගියාගේ එන්කවුන්ටර් {1 against ට එරෙහිව {0 In නේවාසික රෝගී ation ෂධ නියෝගයක් දැනටමත් පවතී., +Allow In Returns,ආපසු පැමිණීමට ඉඩ දෙන්න, +Hide Unavailable Items,ලබා ගත නොහැකි අයිතම සඟවන්න, +Apply Discount on Discounted Rate,වට්ටම් අනුපාතයට වට්ටම් අයදුම් කරන්න, +Therapy Plan Template,චිකිත්සක සැලසුම් ආකෘතිය, +Fetching Template Details,ආකෘති විස්තර ලබා ගැනීම, +Linked Item Details,සම්බන්ධිත අයිතම විස්තර, +Therapy Types,චිකිත්සක වර්ග, +Therapy Plan Template Detail,චිකිත්සක සැලසුම් ආකෘති විස්තරය, +Non Conformance,අනුකූල නොවන, +Process Owner,ක්‍රියාවලි හිමිකරු, +Corrective Action,නිවැරදි කිරීමේ ක්‍රියාව, +Preventive Action,වැළැක්වීමේ ක්‍රියාව, +Problem,ගැටලුව, +Responsible,වගකිව, +Completion By,සම්පුර්ණ කිරීම, +Process Owner Full Name,ක්‍රියාවලි හිමිකරුගේ සම්පූර්ණ නම, +Right Index,දකුණු දර්ශකය, +Left Index,වම් දර්ශකය, +Sub Procedure,උප පටිපාටිය, +Passed,සමත් විය, +Print Receipt,කුවිතාන්සිය මුද්‍රණය කරන්න, +Edit Receipt,කුවිතාන්සිය සංස්කරණය කරන්න, +Focus on search input,සෙවුම් ආදානය කෙරෙහි අවධානය යොමු කරන්න, +Focus on Item Group filter,අයිතම කණ්ඩායම් පෙරණය කෙරෙහි අවධානය යොමු කරන්න, +Checkout Order / Submit Order / New Order,පිටවීමේ නියෝගය / නියෝගය ඉදිරිපත් කිරීම / නව ඇණවුම, +Add Order Discount,ඇණවුම් වට්ටම් එකතු කරන්න, +Item Code: {0} is not available under warehouse {1}.,අයිතම කේතය: ගබඩාව under 1 under යටතේ {0 available ලබා ගත නොහැක., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,ගබඩාව {1 under යටතේ {0 item අයිතමය සඳහා අනුක්‍රමික අංක නොමැත. කරුණාකර ගබඩාව වෙනස් කිරීමට උත්සාහ කරන්න., +Fetched only {0} available serial numbers.,ලබා ගත හැකි අනුක්‍රමික අංක {0 only පමණි., +Switch Between Payment Modes,ගෙවීම් ක්‍රම අතර මාරු වන්න, +Enter {0} amount.,{0} මුදල ඇතුළත් කරන්න., +You don't have enough points to redeem.,මුදවා ගැනීමට ඔබට ප්‍රමාණවත් ලකුණු නොමැත., +You can redeem upto {0}.,ඔබට {0 to දක්වා මුදවා ගත හැකිය., +Enter amount to be redeemed.,මුදවා ගත යුතු මුදල ඇතුළත් කරන්න., +You cannot redeem more than {0}.,ඔබට {0 than ට වඩා මුදවා ගත නොහැක., +Open Form View,පෝරම දර්ශනය විවෘත කරන්න, +POS invoice {0} created succesfully,තැ.කා.සි., +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,අයිතම කේතය සඳහා තොග ප්‍රමාණය ප්‍රමාණවත් නොවේ: ගබඩාව {1 under යටතේ {0}. ලබා ගත හැකි ප්‍රමාණය {2}., +Serial No: {0} has already been transacted into another POS Invoice.,අනුක්‍රමික අංකය: P 0 already දැනටමත් වෙනත් POS ඉන්වොයිසියකට ගනුදෙනු කර ඇත., +Balance Serial No,ශේෂ අනුක්‍රමික අංකය, +Warehouse: {0} does not belong to {1},ගබඩාව: {0} {1 to ට අයත් නොවේ, +Please select batches for batched item {0},කරුණාකර ated 0 set බැච් අයිතමය සඳහා කණ්ඩායම් තෝරන්න, +Please select quantity on row {0},කරුණාකර row 0 row පේළියේ ප්‍රමාණය තෝරන්න, +Please enter serial numbers for serialized item {0},අනුක්‍රමික අයිතමය {0 for සඳහා කරුණාකර අනුක්‍රමික අංක ඇතුළත් කරන්න, +Batch {0} already selected.,කණ්ඩායම {0} දැනටමත් තෝරාගෙන ඇත., +Please select a warehouse to get available quantities,ලබා ගත හැකි ප්‍රමාණ ලබා ගැනීමට කරුණාකර ගබඩාවක් තෝරන්න, +"For transfer from source, selected quantity cannot be greater than available quantity","ප්‍රභවයෙන් මාරු කිරීම සඳහා, තෝරාගත් ප්‍රමාණය පවතින ප්‍රමාණයට වඩා වැඩි විය නොහැක", +Cannot find Item with this Barcode,මෙම තීරු කේතය සමඟ අයිතමය සොයාගත නොහැක, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0 අනිවාර්ය වේ. සමහර විට මුදල් හුවමාරු වාර්තාව {1} සිට {2 for සඳහා නිර්මාණය නොවේ, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,to} එයට සම්බන්ධ වත්කම් ඉදිරිපත් කර ඇත. මිලදී ගැනීමේ ප්‍රතිලාභයක් නිර්මාණය කිරීම සඳහා ඔබ වත්කම් අවලංගු කළ යුතුය., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,ඉදිරිපත් කළ වත්කම {0 with සමඟ සම්බන්ධ වී ඇති බැවින් මෙම ලේඛනය අවලංගු කළ නොහැක. ඉදිරියට යාමට කරුණාකර එය අවලංගු කරන්න., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,පේළිය # {}: අනුක්‍රමික අංකය {} දැනටමත් වෙනත් POS ඉන්වොයිසියකට ගනුදෙනු කර ඇත. කරුණාකර වලංගු අනුක්‍රමික අංකය තෝරන්න., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,පේළිය # {}: අනුක්‍රමික අංක {already දැනටමත් වෙනත් POS ඉන්වොයිසියකට ගනුදෙනු කර ඇත. කරුණාකර වලංගු අනුක්‍රමික අංකය තෝරන්න., +Item Unavailable,අයිතමය නොමැත, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},පේළිය # {}: මුල් ඉන්වොයිසියෙහි ගනුදෙනු නොකළ බැවින් අනුක්‍රමික අංකය {return ආපසු ලබා දිය නොහැක {}, +Please set default Cash or Bank account in Mode of Payment {},කරුණාකර පෙරනිමි මුදල් හෝ බැංකු ගිණුම ගෙවීම් ක්‍රමයට සකසන්න {}, +Please set default Cash or Bank account in Mode of Payments {},කරුණාකර පෙරනිමි මුදල් හෝ බැංකු ගිණුම ගෙවීම් ක්‍රමයට සකසන්න {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,කරුණාකර {} ගිණුම ශේෂ පත්‍ර ගිණුමක් බව සහතික කරන්න. ඔබට මව් ගිණුම ශේෂ පත්‍ර ගිණුමකට වෙනස් කළ හැකිය හෝ වෙනත් ගිණුමක් තෝරා ගත හැකිය., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,කරුණාකර}} ගිණුම ගෙවිය යුතු ගිණුමක් බව සහතික කරන්න. ගෙවිය යුතු ගිණුම් වර්ගය වෙනස් කරන්න හෝ වෙනත් ගිණුමක් තෝරන්න., +Row {}: Expense Head changed to {} ,පේළිය}}: වියදම් ශීර්ෂය {to ලෙස වෙනස් කර ඇත, +because account {} is not linked to warehouse {} ,ගිණුම {} ගබඩාවට සම්බන්ධ නොවන නිසා}}, +or it is not the default inventory account,නැතහොත් එය සුපුරුදු ඉන්වෙන්ටරි ගිණුම නොවේ, +Expense Head Changed,වියදම් ශීර්ෂය වෙනස් කර ඇත, +because expense is booked against this account in Purchase Receipt {},මිලදී ගැනීමේ කුවිතාන්සිය තුළ මෙම ගිණුමට එරෙහිව වියදම් වෙන් කර ඇති නිසා, +as no Purchase Receipt is created against Item {}. ,Item item අයිතමයට එරෙහිව කිසිදු මිලදී ගැනීමේ කුවිතාන්සියක් නිර්මාණය නොවන බැවින්., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,මිලදී ගැනීමේ ඉන්වොයිසියෙන් පසු මිලදී ගැනීමේ කුවිතාන්සිය නිර්මාණය කරන විට නඩු සඳහා ගිණුම්කරණය හැසිරවීම සඳහා මෙය සිදු කෙරේ, +Purchase Order Required for item {},Item item අයිතමය සඳහා මිලදී ගැනීමේ ඇණවුම අවශ්‍යයි, +To submit the invoice without purchase order please set {} ,මිලදී ගැනීමේ ඇණවුමකින් තොරව ඉන්වොයිසිය ඉදිරිපත් කිරීමට කරුණාකර set set සකසන්න, +as {} in {},{} හි {as ලෙස, +Mandatory Purchase Order,අනිවාර්ය මිලදී ගැනීමේ නියෝගය, +Purchase Receipt Required for item {},Item item අයිතමය සඳහා මිලදී ගැනීමේ කුවිතාන්සිය අවශ්‍යයි, +To submit the invoice without purchase receipt please set {} ,මිලදී ගැනීමේ කුවිතාන්සියක් නොමැතිව ඉන්වොයිසිය ඉදිරිපත් කිරීමට කරුණාකර set set ලෙස සකසන්න, +Mandatory Purchase Receipt,අනිවාර්ය මිලදී ගැනීමේ කුවිතාන්සිය, +POS Profile {} does not belongs to company {},POS පැතිකඩ {company සමාගමට අයත් නොවේ {}, +User {} is disabled. Please select valid user/cashier,පරිශීලක {disabled අක්‍රීය කර ඇත. කරුණාකර වලංගු පරිශීලක / අයකැමි තෝරන්න, +Row #{}: Original Invoice {} of return invoice {} is {}. ,පේළිය # {}: ආපසු ඉන්වොයිසියේ මුල් ඉන්වොයිසිය {} {} වේ., +Original invoice should be consolidated before or along with the return invoice.,ආපසු එන ඉන්වොයිසියට පෙර හෝ ඒ සමඟ මුල් ඉන්වොයිසිය ඒකාබද්ධ කළ යුතුය., +You can add original invoice {} manually to proceed.,ඉදිරියට යාමට ඔබට මුල් ඉන්වොයිසිය add add අතින් එකතු කළ හැකිය., +Please ensure {} account is a Balance Sheet account. ,කරුණාකර {} ගිණුම ශේෂ පත්‍ර ගිණුමක් බව සහතික කරන්න., +You can change the parent account to a Balance Sheet account or select a different account.,ඔබට මව් ගිණුම ශේෂ පත්‍ර ගිණුමකට වෙනස් කළ හැකිය හෝ වෙනත් ගිණුමක් තෝරා ගත හැකිය., +Please ensure {} account is a Receivable account. ,කරුණාකර {} ගිණුම ලැබිය යුතු ගිණුමක් බව සහතික කරන්න., +Change the account type to Receivable or select a different account.,ලැබිය යුතු ගිණුම් වර්ගය වෙනස් කරන්න හෝ වෙනත් ගිණුමක් තෝරන්න., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},උපයන ලද ලෝයල්ටි පොයින්ට්ස් මුදාගත් බැවින් cancel අවලංගු කළ නොහැක. පළමුව අවලංගු කරන්න {} නැත {}, +already exists,දැනටමත් පවතී, +POS Closing Entry {} against {} between selected period,POS වසා දැමීමේ ප්‍රවේශය {} ට එරෙහිව}} තෝරාගත් කාල සීමාව අතර, +POS Invoice is {},POS ඉන්වොයිසිය {}, +POS Profile doesn't matches {},POS පැතිකඩ නොගැලපේ {}, +POS Invoice is not {},POS ඉන්වොයිසිය {not නොවේ, +POS Invoice isn't created by user {},POS ඉන්වොයිසිය පරිශීලකයා විසින් නිර්මාණය නොකෙරේ {}, +Row #{}: {},පේළිය # {}: {}, +Invalid POS Invoices,අවලංගු POS ඉන්වොයිසි, +Please add the account to root level Company - {},කරුණාකර ගිණුම මූල මට්ටමේ සමාගමට එක් කරන්න - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","ළමා සමාගම {0 for සඳහා ගිණුමක් නිර්මාණය කරන අතරතුර, මව් ගිණුම {1 found හමු නොවීය. කරුණාකර COA හි මව් ගිණුම සාදන්න", +Account Not Found,ගිණුම් සොයාගත නොහැකි, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","ළමා සමාගම {0 for සඳහා ගිණුමක් නිර්මාණය කරන අතරේ, මව් ගිණුම {1 led ලෙජර ගිණුමක් ලෙස හමු විය.", +Please convert the parent account in corresponding child company to a group account.,කරුණාකර අනුරූප ළමා සමාගමක ඇති මව් ගිණුම කණ්ඩායම් ගිණුමකට පරිවර්තනය කරන්න., +Invalid Parent Account,අවලංගු දෙමාපිය ගිණුම, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",නොගැලපීම වළක්වා ගැනීම සඳහා එය නැවත නම් කිරීම මව් සමාගම {0 via හරහා පමණි., +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","ඔබ {2} අයිතමයේ {0} {1} ප්‍රමාණ නම්, {3 the යෝජනා ක්‍රමය අයිතමය මත යොදනු ලැබේ.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","ඔබ {2} වටිනා අයිතමය {2 If නම්, {3 the යෝජනා ක්‍රමය අයිතමය මත යොදනු ලැබේ.", +"As the field {0} is enabled, the field {1} is mandatory.",ක්ෂේත්‍රය {0 සක්‍රීය කර ඇති බැවින් {1 field ක්ෂේත්‍රය අනිවාර්ය වේ., +"As the field {0} is enabled, the value of the field {1} should be more than 1.",{0 field ක්ෂේත්‍රය සක්‍රිය කර ඇති බැවින් {1 field ක්ෂේත්‍රයේ වටිනාකම 1 ට වඩා වැඩි විය යුතුය., +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Full 1 item අයිතමයේ අනුක්‍රමික අංක 0 deliver භාර දිය නොහැක, එය පූර්ණ පිරවුම් විකුණුම් ඇණවුම {2 to සඳහා වෙන් කර ඇත", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","විකුණුම් ඇණවුම {0 the සඳහා {1 item සඳහා වෙන් කිරීමක් ඇත, ඔබට ලබා දිය හැක්කේ {0 against ට එරෙහිව වෙන් කළ {1 only පමණි.", +{0} Serial No {1} cannot be delivered,{0} අනුක්‍රමික අංකය {1 delivery ලබා දිය නොහැක, +Row {0}: Subcontracted Item is mandatory for the raw material {1},පේළිය {0}: අමුද්‍රව්‍ය {1 for සඳහා උප කොන්ත්‍රාත් අයිතමය අනිවාර්ය වේ, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.",ප්‍රමාණවත් අමුද්‍රව්‍ය ඇති බැවින් ගබඩාව {0 for සඳහා ද්‍රව්‍යමය ඉල්ලීම අවශ්‍ය නොවේ., +" If you still want to proceed, please enable {0}.","ඔබට තවමත් ඉදිරියට යාමට අවශ්‍ය නම්, කරුණාකර {0 enable සක්‍රීය කරන්න.", +The item referenced by {0} - {1} is already invoiced,{0} - {1 by විසින් සඳහන් කරන ලද අයිතමය දැනටමත් ඉන්වොයිස් කර ඇත, +Therapy Session overlaps with {0},චිකිත්සක සැසිය {0 with සමඟ අතිච්ඡාදනය වේ, +Therapy Sessions Overlapping,චිකිත්සක සැසි අතිච්ඡාදනය, +Therapy Plans,චිකිත්සක සැලසුම්, +"Item Code, warehouse, quantity are required on row {0}","Code 0 row පේළියේ අයිතම කේතය, ගබඩාව, ප්‍රමාණය අවශ්‍ය වේ", +Get Items from Material Requests against this Supplier,මෙම සැපයුම්කරුට එරෙහිව ද්‍රව්‍යමය ඉල්ලීම් වලින් අයිතම ලබා ගන්න, +Enable European Access,යුරෝපීය ප්‍රවේශය සක්‍රීය කරන්න, +Creating Purchase Order ...,මිලදී ගැනීමේ ඇණවුමක් නිර්මාණය කිරීම ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","පහත අයිතමවල පෙරනිමි සැපයුම්කරුවන්ගෙන් සැපයුම්කරුවෙකු තෝරන්න. තෝරාගැනීමේදී, තෝරාගත් සැපයුම්කරුට පමණක් අයත් භාණ්ඩවලට එරෙහිව මිලදී ගැනීමේ නියෝගයක් කරනු ලැබේ.", +Row #{}: You must select {} serial numbers for item {}.,පේළිය # {}: ඔබ item item අයිතමය සඳහා {} අනුක්‍රමික අංක තෝරාගත යුතුය., diff --git a/erpnext/translations/sk.csv b/erpnext/translations/sk.csv index fd5403a2a9..cb4a7fed4b 100644 --- a/erpnext/translations/sk.csv +++ b/erpnext/translations/sk.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Nelze o Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',"Nemôže odpočítať, ak kategória je pre "ocenenie" alebo "Vaulation a Total"", "Cannot delete Serial No {0}, as it is used in stock transactions","Nemožno odstrániť Poradové číslo {0}, ktorý sa používa na sklade transakciách", Cannot enroll more than {0} students for this student group.,Nemôže prihlásiť viac ako {0} študentov na tejto študentské skupiny., -Cannot find Item with this barcode,Položku s týmto čiarovým kódom nemožno nájsť, Cannot find active Leave Period,Nedá sa nájsť aktívne obdobie neprítomnosti, Cannot produce more Item {0} than Sales Order quantity {1},Nie je možné vyrobiť viac Položiek {0} ako je množstvo na predajnej objednávke {1}, Cannot promote Employee with status Left,Nemožno povýšiť zamestnanca so statusom odídený, @@ -690,7 +689,6 @@ Create Variants,Vytvorenie variantov, "Create and manage daily, weekly and monthly email digests.","Tvorba a správa denných, týždenných a mesačných emailových spravodajcov", Create customer quotes,Vytvoriť zákaznícke ponuky, Create rules to restrict transactions based on values.,Vytvoření pravidla pro omezení transakce na základě hodnot., -Created By,Vytvorené (kým), Created {0} scorecards for {1} between: ,Vytvorili {0} scorecards pre {1} medzi:, Creating Company and Importing Chart of Accounts,Založenie spoločnosti a importná účtovná osnova, Creating Fees,Vytváranie poplatkov, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Pro Sklad je povinné před Odesláním, For row {0}: Enter Planned Qty,Pre riadok {0}: Zadajte naplánované množstvo, "For {0}, only credit accounts can be linked against another debit entry","Pro {0}, tak úvěrové účty mohou být propojeny na jinou položku debetní", "For {0}, only debit accounts can be linked against another credit entry","Pro {0}, tak debetní účty mohou být spojeny proti jinému připsání", -Form View,Zobrazenie formulára, Forum Activity,Aktivita fóra, Free item code is not selected,Zadarmo kód položky nie je vybratý, Freight and Forwarding Charges,Nákladní a Spediční Poplatky, @@ -2638,7 +2635,6 @@ Send SMS,Poslať SMS, Send mass SMS to your contacts,Posílat hromadné SMS vašim kontaktům, Sensitivity,citlivosť, Sent,Odoslané, -Serial #,Serial #, Serial No and Batch,Sériové číslo a Dávka, Serial No is mandatory for Item {0},Pořadové číslo je povinná k bodu {0}, Serial No {0} does not belong to Batch {1},Sériové číslo {0} nepatrí do dávky {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Vitajte v ERPNext, What do you need help with?,S čím potrebujete pomôcť?, What does it do?,Čím sa zaoberá?, Where manufacturing operations are carried.,"Tam, kde jsou výrobní operace prováděny.", -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",Pri vytváraní účtu pre detskú spoločnosť {0} sa rodičovský účet {1} nenašiel. Vytvorte nadradený účet v príslušnom COA, White,Biela, Wire Transfer,Bankovní převod, WooCommerce Products,Produkty spoločnosti WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Záľuby, Merge with existing,Zlúčiť s existujúcim, Office,Kancelář, Orientation,orientácia, +Parent,Rodič, Passive,Pasívny, Payment Failed,platba zlyhala, Percent,Percento, @@ -3543,6 +3539,7 @@ Shift,smena, Show {0},Zobraziť {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Špeciálne znaky s výnimkou „-“, „#“, „.“, „/“, „{“ A „}“ nie sú v názvových sériách povolené.", Target Details,Podrobnosti o cieli, +{0} already has a Parent Procedure {1}.,{0} už má rodičovský postup {1}., API,API, Annual,Roční, Approved,Schválený, @@ -4241,7 +4238,6 @@ Download as JSON,Stiahnuť ako JSON, End date can not be less than start date,Dátum ukončenia nemôže byť menší ako dátum začiatku, For Default Supplier (Optional),Pre predvoleného dodávateľa (nepovinné), From date cannot be greater than To date,Dátum OD nemôže byť väčší ako dátum DO, -Get items from,Získať predmety z, Group by,Seskupit podle, In stock,Skladom, Item name,Názov položky, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Parameter šablóny spätnej väzby kvality, Quality Goal,Cieľ kvality, Monitoring Frequency,Frekvencia monitorovania, Weekday,všedný deň, -January-April-July-October,Január-apríl-júl-október, -Revision and Revised On,Revízia a revízia dňa, -Revision,opakovanie, -Revised On,Revidované dňa, Objectives,ciele, Quality Goal Objective,Cieľ kvality, Objective,objektívny, @@ -7574,7 +7566,6 @@ Parent Procedure,Rodičovský postup, Processes,Procesy, Quality Procedure Process,Proces kvality, Process Description,Popis procesu, -Child Procedure,Postup dieťaťa, Link existing Quality Procedure.,Prepojiť existujúci postup kvality., Additional Information,Ďalšie informácie, Quality Review Objective,Cieľ preskúmania kvality, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Nákupní objednávka trendy, Purchase Receipt Trends,Doklad o koupi Trendy, Purchase Register,Nákup Register, Quotation Trends,Vývoje ponúk, -Quoted Item Comparison,Citoval Položka Porovnanie, Received Items To Be Billed,"Přijaté položek, které mají být účtovány", Qty to Order,Množství k objednávce, Requested Items To Be Transferred,Požadované položky mají být převedeny, @@ -9091,7 +9081,6 @@ Unmarked days,Neoznačené dni, Absent Days,Neprítomné dni, Conditions and Formula variable and example,Premenná podmienok a príkladu a vzorec, Feedback By,Spätná väzba od, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.RRRR .-. MM .-. DD.-, Manufacturing Section,Výrobná sekcia, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Predvolene je meno zákazníka nastavené podľa zadaného celého mena. Ak chcete, aby boli zákazníci pomenovaní a", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Pri vytváraní novej predajnej transakcie nakonfigurujte predvolený cenník. Ceny položiek sa načítajú z tohto cenníka., @@ -9692,7 +9681,6 @@ Available Balance,Disponibilný zostatok, Reserved Balance,Vyhradený zostatok, Uncleared Balance,Nevyúčtovaný zostatok, Payment related to {0} is not completed,Platba súvisiaca s účtom {0} nie je dokončená, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Riadok # {}: Sériové číslo {}. {} už bol prevedený do inej POS faktúry. Vyberte prosím platné sériové číslo., Row #{}: Item Code: {} is not available under warehouse {}.,Riadok # {}: Kód položky: {} nie je k dispozícii v sklade {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Riadok # {}: Množstvo skladu nestačí na kód položky: {} v sklade {}. Dostupné množstvo {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,"Riadok č. {}: Vyberte sériové číslo a porovnajte položku s položkou: {} alebo ju odstráňte, čím dokončíte transakciu.", @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Množstvo nie je k dispozícii p Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,"Ak chcete pokračovať, povoľte možnosť Povoliť zápornú akciu v nastaveniach skladu alebo vytvorte položku skladu.", No Inpatient Record found against patient {0},Proti pacientovi {0} sa nenašiel žiadny záznam o hospitalizácii, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Príkaz na hospitalizáciu {0} proti stretnutiu pacienta {1} už existuje., +Allow In Returns,Povoliť pri vrátení, +Hide Unavailable Items,Skryť nedostupné položky, +Apply Discount on Discounted Rate,Použite zľavu na zľavnenú sadzbu, +Therapy Plan Template,Šablóna plánu terapie, +Fetching Template Details,Načítavajú sa podrobnosti šablóny, +Linked Item Details,Podrobnosti prepojenej položky, +Therapy Types,Typy terapie, +Therapy Plan Template Detail,Detail šablóny terapeutického plánu, +Non Conformance,Nezhoda, +Process Owner,Vlastník procesu, +Corrective Action,Nápravné opatrenia, +Preventive Action,Preventívna akcia, +Problem,Problém, +Responsible,Zodpovedný, +Completion By,Dokončenie do, +Process Owner Full Name,Celé meno vlastníka procesu, +Right Index,Správny index, +Left Index,Ľavý index, +Sub Procedure,Čiastkový postup, +Passed,Prešiel, +Print Receipt,Tlač potvrdenky, +Edit Receipt,Upraviť príjmový doklad, +Focus on search input,Zamerajte sa na vstup vyhľadávania, +Focus on Item Group filter,Zamerajte sa na filter Skupiny položiek, +Checkout Order / Submit Order / New Order,Pokladňa Objednávka / Odoslať objednávku / Nová objednávka, +Add Order Discount,Pridajte zľavu na objednávku, +Item Code: {0} is not available under warehouse {1}.,Kód položky: {0} nie je k dispozícii v sklade {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Sériové čísla nie sú k dispozícii pre položku {0} v sklade {1}. Skúste zmeniť sklad., +Fetched only {0} available serial numbers.,Načítalo sa iba {0} dostupných sériových čísel., +Switch Between Payment Modes,Prepínanie medzi platobnými režimami, +Enter {0} amount.,Zadajte sumu {0}., +You don't have enough points to redeem.,Nemáte dostatok bodov na uplatnenie., +You can redeem upto {0}.,Môžete uplatniť až {0}., +Enter amount to be redeemed.,"Zadajte sumu, ktorá sa má uplatniť.", +You cannot redeem more than {0}.,Nemôžete uplatniť viac ako {0}., +Open Form View,Otvorte formulárové zobrazenie, +POS invoice {0} created succesfully,POS faktúra {0} bola úspešne vytvorená, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Skladové množstvo nestačí na kód položky: {0} v sklade {1}. Dostupné množstvo {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Sériové číslo: {0} už bolo prevedené na inú POS faktúru., +Balance Serial No,Sériové číslo zostatku, +Warehouse: {0} does not belong to {1},Sklad: {0} nepatrí k {1}, +Please select batches for batched item {0},Vyberte dávky pre dávkovú položku {0}, +Please select quantity on row {0},Vyberte množstvo v riadku {0}, +Please enter serial numbers for serialized item {0},Zadajte sériové čísla pre serializovanú položku {0}, +Batch {0} already selected.,Dávka {0} je už vybratá., +Please select a warehouse to get available quantities,"Vyberte si sklad, aby ste získali dostupné množstvá", +"For transfer from source, selected quantity cannot be greater than available quantity",Pre prenos zo zdroja nemôže byť vybrané množstvo väčšie ako dostupné množstvo, +Cannot find Item with this Barcode,Položka s týmto čiarovým kódom sa nedá nájsť, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} je povinné. Možno nie je vytvorený záznam výmeny mien od {1} do {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,"{} odoslal diela s ním spojené. Ak chcete vytvoriť návratnosť nákupu, musíte aktíva zrušiť.", +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"Tento dokument nie je možné zrušiť, pretože je prepojený s odoslaným dielom {0}. Ak chcete pokračovať, zrušte ich.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Riadok # {}: Sériové číslo {} už bol prevedený na inú POS faktúru. Vyberte prosím platné sériové číslo., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Riadok # {}: Sériové čísla {} už bol prevedený na inú POS faktúru. Vyberte prosím platné sériové číslo., +Item Unavailable,Položka nie je k dispozícii, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"Riadok č. {}: Sériové číslo {} nie je možné vrátiť, pretože nebol vykonaný v pôvodnej faktúre {}", +Please set default Cash or Bank account in Mode of Payment {},V platobnom režime nastavte predvolenú hotovosť alebo bankový účet {}, +Please set default Cash or Bank account in Mode of Payments {},V platobnom režime nastavte predvolený hotovostný alebo bankový účet {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,"Zaistite, aby účet {} bol súvahovým účtom. Môžete zmeniť nadradený účet na súvahový alebo zvoliť iný účet.", +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,"Zaistite, aby účet {} bol platiteľským účtom. Zmeňte typ účtu na splatný alebo vyberte iný účet.", +Row {}: Expense Head changed to {} ,Riadok {}: Výdavková hlava sa zmenila na {}, +because account {} is not linked to warehouse {} ,pretože účet {} nie je prepojený so skladom {}, +or it is not the default inventory account,alebo to nie je predvolený účet zásob, +Expense Head Changed,Výdavková hlava zmenená, +because expense is booked against this account in Purchase Receipt {},pretože náklady sú voči tomuto účtu zaúčtované v doklade o kúpe {}, +as no Purchase Receipt is created against Item {}. ,pretože s položkou {} sa nevytvára žiadny doklad o kúpe., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,"Toto sa vykonáva na spracovanie účtovníctva v prípadoch, keď sa po nákupnej faktúre vytvorí príjmový doklad", +Purchase Order Required for item {},Pre položku {} je požadovaná objednávka, +To submit the invoice without purchase order please set {} ,"Ak chcete odoslať faktúru bez objednávky, nastavte {}", +as {} in {},ako v {}, +Mandatory Purchase Order,Povinná objednávka, +Purchase Receipt Required for item {},Pre položku {} sa vyžaduje doklad o kúpe, +To submit the invoice without purchase receipt please set {} ,"Ak chcete odoslať faktúru bez dokladu o kúpe, nastavte {}", +Mandatory Purchase Receipt,Povinný doklad o kúpe, +POS Profile {} does not belongs to company {},POS profil {} nepatrí spoločnosti {}, +User {} is disabled. Please select valid user/cashier,Používateľ {} je zakázaný. Vyberte platného používateľa / pokladníka, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Riadok č. {}: Pôvodná faktúra {} spätnej faktúry {} je {}., +Original invoice should be consolidated before or along with the return invoice.,Originál faktúry by mal byť konsolidovaný pred alebo spolu so spätnou faktúrou., +You can add original invoice {} manually to proceed.,"Ak chcete pokračovať, môžete originálnu faktúru pridať {} ručne.", +Please ensure {} account is a Balance Sheet account. ,"Zaistite, aby účet {} bol súvahovým účtom.", +You can change the parent account to a Balance Sheet account or select a different account.,Môžete zmeniť nadradený účet na súvahový alebo zvoliť iný účet., +Please ensure {} account is a Receivable account. ,"Zaistite, aby účet {} bol prijatým účtom.", +Change the account type to Receivable or select a different account.,Zmeňte typ účtu na Pohľadávka alebo vyberte iný účet., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},"Službu {} nie je možné zrušiť, pretože boli využité získané vernostné body. Najskôr zrušte {} Nie {}", +already exists,už existuje, +POS Closing Entry {} against {} between selected period,Uzávierka vstupu POS {} oproti {} medzi vybraným obdobím, +POS Invoice is {},Faktúra POS je {}, +POS Profile doesn't matches {},POS profil sa nezhoduje s {}, +POS Invoice is not {},POS faktúra nie je {}, +POS Invoice isn't created by user {},POS faktúra nie je vytvorená používateľom {}, +Row #{}: {},Riadok č. {}: {}, +Invalid POS Invoices,Neplatné faktúry POS, +Please add the account to root level Company - {},Pridajte účet do spoločnosti na koreňovej úrovni - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",Pri vytváraní účtu pre detskú spoločnosť {0} sa rodičovský účet {1} nenašiel. Vytvorte nadradený účet v zodpovedajúcom COA, +Account Not Found,Účet nebol nájdený, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",Pri vytváraní účtu pre detskú spoločnosť {0} sa rodičovský účet {1} našiel ako účet hlavnej knihy., +Please convert the parent account in corresponding child company to a group account.,Konvertujte materský účet v príslušnej podradenej spoločnosti na skupinový účet., +Invalid Parent Account,Neplatný nadradený účet, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Premenovanie je povolené iba prostredníctvom materskej spoločnosti {0}, aby sa zabránilo nesúladu.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Ak {0} {1} množstvá položky {2}, použije sa na ňu schéma {3}.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Ak {0} {1} máte hodnotu položky {2}, použije sa na ňu schéma {3}.", +"As the field {0} is enabled, the field {1} is mandatory.","Pretože je pole {0} povolené, je pole {1} povinné.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Keď je pole {0} povolené, hodnota poľa {1} by mala byť viac ako 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Nie je možné doručiť sériové číslo {0} položky {1}, pretože je rezervovaná na vyplnenie zákazky odberateľa {2}.", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Zákazka odberateľa {0} má rezerváciu pre položku {1}, môžete doručiť iba rezervované {1} oproti {0}.", +{0} Serial No {1} cannot be delivered,{0} Sériové číslo {1} nie je možné doručiť, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Riadok {0}: Subdodávateľská položka je pre surovinu povinná {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Pretože je tu dostatok surovín, požiadavka na materiál sa v sklade {0} nevyžaduje.", +" If you still want to proceed, please enable {0}.","Ak stále chcete pokračovať, povoľte {0}.", +The item referenced by {0} - {1} is already invoiced,"Položka, na ktorú odkazuje {0} - {1}, je už fakturovaná", +Therapy Session overlaps with {0},Terapeutické sedenie sa prekrýva s {0}, +Therapy Sessions Overlapping,Terapeutické sedenia sa prekrývajú, +Therapy Plans,Terapeutické plány, +"Item Code, warehouse, quantity are required on row {0}","V riadku {0} sa vyžaduje kód položky, sklad, množstvo", +Get Items from Material Requests against this Supplier,Získajte položky z materiálových požiadaviek voči tomuto dodávateľovi, +Enable European Access,Umožniť európsky prístup, +Creating Purchase Order ...,Vytvára sa objednávka ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",Z predvolených dodávateľov nižšie uvedených položiek vyberte dodávateľa. Pri výbere sa uskutoční objednávka iba na položky patriace vybranému dodávateľovi., +Row #{}: You must select {} serial numbers for item {}.,Riadok č. {}: Musíte zvoliť {} sériové čísla pre položku {}., diff --git a/erpnext/translations/sl.csv b/erpnext/translations/sl.csv index 9de9854bbc..8beec6be16 100644 --- a/erpnext/translations/sl.csv +++ b/erpnext/translations/sl.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Ne more Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',"ne more odbiti, če je kategorija za "vrednotenje" ali "Vaulation in Total"", "Cannot delete Serial No {0}, as it is used in stock transactions","Ne morem izbrisati Serijska št {0}, saj je uporabljen v transakcijah zalogi", Cannot enroll more than {0} students for this student group.,ne more vpisati več kot {0} študentov za to študentsko skupino., -Cannot find Item with this barcode,Elementa ni mogoče najti s to črtno kodo, Cannot find active Leave Period,Aktivnega obdobja puščanja ni mogoče najti, Cannot produce more Item {0} than Sales Order quantity {1},Ne more proizvajati več item {0} od prodaje kol {1}, Cannot promote Employee with status Left,Zaposlenca s statusom Levo ni mogoče spodbujati, @@ -690,7 +689,6 @@ Create Variants,Ustvari različice, "Create and manage daily, weekly and monthly email digests.","Ustvarjanje in upravljanje dnevne, tedenske in mesečne email prebavlja.", Create customer quotes,Ustvari ponudbe kupcev, Create rules to restrict transactions based on values.,"Ustvarite pravila za omejitev transakcije, ki temeljijo na vrednotah.", -Created By,Ustvaril, Created {0} scorecards for {1} between: ,Ustvarjene {0} kazalnike za {1} med:, Creating Company and Importing Chart of Accounts,Ustvarjanje podjetja in uvoz računa, Creating Fees,Ustvarjanje pristojbin, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Za skladišče je pred potreben Submit, For row {0}: Enter Planned Qty,Za vrstico {0}: vnesite načrtovani qty, "For {0}, only credit accounts can be linked against another debit entry","Za {0}, lahko le kreditne račune povezati proti drugemu vstop trajnika", "For {0}, only debit accounts can be linked against another credit entry","Za {0}, lahko le debetne račune povezati proti drugemu knjiženje", -Form View,Pogled obrazca, Forum Activity,Forumska dejavnost, Free item code is not selected,Brezplačna koda izdelka ni izbrana, Freight and Forwarding Charges,Tovorni in Forwarding Stroški, @@ -2638,7 +2635,6 @@ Send SMS,Pošlji SMS, Send mass SMS to your contacts,Pošlji množično SMS vaših stikov, Sensitivity,Občutljivost, Sent,Pošlje, -Serial #,Serial #, Serial No and Batch,Serijska številka in serije, Serial No is mandatory for Item {0},Zaporedna številka je obvezna za postavko {0}, Serial No {0} does not belong to Batch {1},Serijska številka {0} ne sodi v paket {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Dobrodošli na ERPNext, What do you need help with?,Kaj potrebujete pomoč?, What does it do?,Kaj to naredi?, Where manufacturing operations are carried.,Kjer so proizvodni postopki., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Pri ustvarjanju računa za otroško podjetje {0}, nadrejenega računa {1} ni mogoče najti. Ustvarite nadrejeni račun v ustreznem COA", White,Bela, Wire Transfer,Wire Transfer, WooCommerce Products,Izdelki WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Likes, Merge with existing,Združi z obstoječo, Office,Pisarna, Orientation,usmerjenost, +Parent,Parent, Passive,Pasivna, Payment Failed,plačilo ni uspelo, Percent,Odstotek, @@ -3543,6 +3539,7 @@ Shift,Shift, Show {0},Prikaži {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Posebni znaki, razen "-", "#", ".", "/", "{" In "}" v poimenovanju ni dovoljen", Target Details,Podrobnosti cilja, +{0} already has a Parent Procedure {1}.,{0} že ima nadrejeni postopek {1}., API,API, Annual,Letno, Approved,Odobreno, @@ -4241,7 +4238,6 @@ Download as JSON,Prenesite kot JSON, End date can not be less than start date,Datum konca ne sme biti krajši od začetnega datuma, For Default Supplier (Optional),Za privzeto dobavitelja (neobvezno), From date cannot be greater than To date,Od datuma ne more biti večje od datuma, -Get items from,Pridobi artikle iz, Group by,Skupina avtorja, In stock,Na zalogi, Item name,Ime predmeta, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Parameter predloge kakovosti povratne inform Quality Goal,Cilj kakovosti, Monitoring Frequency,Spremljanje pogostosti, Weekday,Delovni dan, -January-April-July-October,Januar-april-julij-oktober, -Revision and Revised On,Revizija in revidirana dne, -Revision,Revizija, -Revised On,Revidirano dne, Objectives,Cilji, Quality Goal Objective,Cilj Kakovostni cilj, Objective,Cilj, @@ -7574,7 +7566,6 @@ Parent Procedure,Starševski postopek, Processes,Procesi, Quality Procedure Process,Postopek kakovosti postopka, Process Description,Opis postopka, -Child Procedure,Otroški postopek, Link existing Quality Procedure.,Povezati obstoječi postopek kakovosti., Additional Information,Dodatne informacije, Quality Review Objective,Cilj pregleda kakovosti, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Naročilnica Trendi, Purchase Receipt Trends,Nakup Prejem Trendi, Purchase Register,Nakup Register, Quotation Trends,Trendi ponudb, -Quoted Item Comparison,Citirano Točka Primerjava, Received Items To Be Billed,Prejete Postavke placevali, Qty to Order,Količina naročiti, Requested Items To Be Transferred,Zahtevane blago prenaša, @@ -9091,7 +9081,6 @@ Unmarked days,Neoznačeni dnevi, Absent Days,Odsotni dnevi, Conditions and Formula variable and example,Pogoji in spremenljivka formule in primer, Feedback By,Povratne informacije avtorja, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.LLLL .-. MM .-. DD.-, Manufacturing Section,Oddelek za proizvodnjo, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Privzeto je ime stranke nastavljeno na vneseno polno ime. Če želite, da stranke imenuje", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Konfigurirajte privzeti cenik pri ustvarjanju nove prodajne transakcije. Cene izdelkov bodo pridobljene iz tega cenika., @@ -9692,7 +9681,6 @@ Available Balance,Razpoložljivo stanje, Reserved Balance,Rezervirano stanje, Uncleared Balance,Nejasno ravnovesje, Payment related to {0} is not completed,Plačilo v zvezi z {0} ni zaključeno, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Vrstica # {}: zaporedna številka {}. {} je že izveden na drug račun za POS. Izberite veljavno serijsko št., Row #{}: Item Code: {} is not available under warehouse {}.,Vrstica # {}: Koda artikla: {} ni na voljo v skladišču {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Vrstica št. {}: Količina zaloge ni dovolj za kodo artikla: {} v skladišču {}. Razpoložljiva količina {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,"Vrstica # {}: izberite serijsko številko in paket proti elementu: {} ali jo odstranite, če želite dokončati transakcijo.", @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Količina ni na voljo za {0} v s Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,V nadaljevanju omogočite možnost Dovoli negativne zaloge ali ustvarite vnos zalog., No Inpatient Record found against patient {0},Za pacienta ni bil najden noben zapis o bolnišnici {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Nalog za bolnišnično zdravljenje {0} proti srečanju bolnika {1} že obstaja., +Allow In Returns,Dovoli vračila, +Hide Unavailable Items,Skrij nedosegljive elemente, +Apply Discount on Discounted Rate,Uporabite popust na popust, +Therapy Plan Template,Predloga načrta terapije, +Fetching Template Details,Pridobivanje podrobnosti o predlogi, +Linked Item Details,Podrobnosti povezanih elementov, +Therapy Types,Vrste terapije, +Therapy Plan Template Detail,Podrobnosti predloge načrta terapije, +Non Conformance,Neskladnost, +Process Owner,Lastnik postopka, +Corrective Action,Korektivni ukrepi, +Preventive Action,Preventivna akcija, +Problem,Težava, +Responsible,Odgovorno, +Completion By,Dokončanje:, +Process Owner Full Name,Polno ime lastnika postopka, +Right Index,Kazalo desno, +Left Index,Levi kazalec, +Sub Procedure,Podproces, +Passed,Uspešno, +Print Receipt,Potrdilo o tiskanju, +Edit Receipt,Uredi potrdilo, +Focus on search input,Osredotočite se na vnos iskanja, +Focus on Item Group filter,Osredotočite se na filter skupine predmetov, +Checkout Order / Submit Order / New Order,Naročilo za plačilo / oddajo naročila / novo naročilo, +Add Order Discount,Dodajte popust za naročilo, +Item Code: {0} is not available under warehouse {1}.,Koda artikla: {0} ni na voljo v skladišču {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Serijske številke niso na voljo za izdelek {0} v skladišču {1}. Poskusite zamenjati skladišče., +Fetched only {0} available serial numbers.,Pridobljeno le {0} razpoložljivih serijskih številk., +Switch Between Payment Modes,Preklapljanje med načini plačila, +Enter {0} amount.,Vnesite {0} znesek., +You don't have enough points to redeem.,Nimate dovolj točk za unovčenje., +You can redeem upto {0}.,Unovčite lahko do {0}., +Enter amount to be redeemed.,"Vnesite znesek, ki ga želite uveljaviti.", +You cannot redeem more than {0}.,Ne morete unovčiti več kot {0}., +Open Form View,Odprite pogled obrazca, +POS invoice {0} created succesfully,POS račun {0} je bil uspešno ustvarjen, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Zaloga ni dovolj za kodo artikla: {0} v skladišču {1}. Razpoložljiva količina {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Serijska številka: {0} je že opravljena na drug račun POS., +Balance Serial No,Serijska št, +Warehouse: {0} does not belong to {1},Skladišče: {0} ne pripada {1}, +Please select batches for batched item {0},Izberite serije za serijski izdelek {0}, +Please select quantity on row {0},Izberite količino v vrstici {0}, +Please enter serial numbers for serialized item {0},Vnesite serijske številke za zaporedni izdelek {0}, +Batch {0} already selected.,Paket {0} je že izbran., +Please select a warehouse to get available quantities,"Prosimo, izberite skladišče, da dobite razpoložljive količine", +"For transfer from source, selected quantity cannot be greater than available quantity",Za prenos iz vira izbrana količina ne sme biti večja od razpoložljive količine, +Cannot find Item with this Barcode,Elementa s to črtno kodo ni mogoče najti, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} je obvezen. Morda zapis menjalnice ni ustvarjen za obdobje od {1} do {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,"Oseba {} je poslala sredstva, povezana z njo. Če želite ustvariti donos nakupa, morate preklicati sredstva.", +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"Tega dokumenta ni mogoče preklicati, ker je povezan s predloženim sredstvom {0}. Za nadaljevanje ga prekinite.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Vrstica št. {}: Serijska številka {} je že bila prenesena na drug račun POS. Izberite veljavno serijsko št., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Vrstica št. {}: Zaporedne številke. {} Je že bila prenesena na drug račun POS. Izberite veljavno serijsko št., +Item Unavailable,Element ni na voljo, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"Vrstica # {}: zaporedne številke {} ni mogoče vrniti, ker ni bila izvedena v prvotnem računu {}", +Please set default Cash or Bank account in Mode of Payment {},V načinu plačila nastavite privzeti gotovinski ali bančni račun {}, +Please set default Cash or Bank account in Mode of Payments {},Nastavite privzeti gotovinski ali bančni račun v načinu plačila {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,"Preverite, ali je račun {} račun bilance stanja. Nadrejeni račun lahko spremenite v račun bilance stanja ali izberete drugega.", +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,"Preverite, ali je račun {} plačljiv račun. Spremenite vrsto računa na Plačljivo ali izberite drugega.", +Row {}: Expense Head changed to {} ,Vrstica {}: Izdatna glava spremenjena v {}, +because account {} is not linked to warehouse {} ,ker račun {} ni povezan s skladiščem {}, +or it is not the default inventory account,ali ni privzeti račun zalog, +Expense Head Changed,Spremenjena glava odhodka, +because expense is booked against this account in Purchase Receipt {},ker so stroški knjiženi na ta račun v potrdilu o nakupu {}, +as no Purchase Receipt is created against Item {}. ,ker za artikel {} ni ustvarjen noben potrdilo o nakupu., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,"To se naredi za obravnavanje primerov, ko je potrdilo o nakupu ustvarjeno po računu za nakup", +Purchase Order Required for item {},Naročilo je obvezno za izdelek {}, +To submit the invoice without purchase order please set {} ,"Če želite oddati račun brez naročilnice, nastavite {}", +as {} in {},kot v {}, +Mandatory Purchase Order,Obvezno naročilo, +Purchase Receipt Required for item {},Za artikel {} je potrebno potrdilo o nakupu, +To submit the invoice without purchase receipt please set {} ,"Če želite oddati račun brez potrdila o nakupu, nastavite {}", +Mandatory Purchase Receipt,Obvezno potrdilo o nakupu, +POS Profile {} does not belongs to company {},POS profil {} ne pripada podjetju {}, +User {} is disabled. Please select valid user/cashier,Uporabnik {} je onemogočen. Izberite veljavnega uporabnika / blagajnika, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Vrstica št. {}: Prvotni račun {} na računu za vračilo {} je {}., +Original invoice should be consolidated before or along with the return invoice.,Prvotni račun je treba konsolidirati pred računom za vračilo ali skupaj z njim., +You can add original invoice {} manually to proceed.,Za nadaljevanje lahko ročno dodate račun {}., +Please ensure {} account is a Balance Sheet account. ,"Preverite, ali je račun {} račun bilance stanja.", +You can change the parent account to a Balance Sheet account or select a different account.,Nadrejeni račun lahko spremenite v račun bilance stanja ali izberete drugega., +Please ensure {} account is a Receivable account. ,"Preverite, ali je račun {} terjatev.", +Change the account type to Receivable or select a different account.,Spremenite vrsto računa v Terjatev ali izberite drug račun., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},"{} ni mogoče preklicati, ker so bile pridobljene točke zvestobe unovčene. Najprej prekličite {} Ne {}", +already exists,že obstaja, +POS Closing Entry {} against {} between selected period,POS zapiranje vnosa {} proti {} med izbranim obdobjem, +POS Invoice is {},POS račun je {}, +POS Profile doesn't matches {},POS profil se ne ujema {}, +POS Invoice is not {},POS račun ni {}, +POS Invoice isn't created by user {},POS računa ne ustvari uporabnik {}, +Row #{}: {},Vrstica # {}: {}, +Invalid POS Invoices,Neveljavni računi POS, +Please add the account to root level Company - {},"Prosimo, dodajte račun na korenski nivo podjetja - {}", +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Med ustvarjanjem računa za otroško podjetje {0} nadrejenega računa {1} ni mogoče najti. Prosimo, ustvarite nadrejeni račun v ustreznem potrdilu o pristnosti", +Account Not Found,Računa ni mogoče najti, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",Med ustvarjanjem računa za otroško podjetje {0} je bil nadrejeni račun {1} najden kot račun glavne knjige., +Please convert the parent account in corresponding child company to a group account.,"Prosimo, pretvorite starševski račun v ustreznem podrejenem podjetju v račun skupine.", +Invalid Parent Account,Neveljaven starševski račun, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Preimenovanje je dovoljeno samo prek nadrejene družbe {0}, da se prepreči neskladje.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Če {0} {1} količine izdelka {2}, bo za izdelek uporabljena shema {3}.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Če ste {0} {1} vredni izdelka {2}, bo za izdelek uporabljena shema {3}.", +"As the field {0} is enabled, the field {1} is mandatory.","Ker je polje {0} omogočeno, je polje {1} obvezno.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Ko je polje {0} omogočeno, mora biti vrednost polja {1} večja od 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Serijske številke {0} izdelka {1} ni mogoče dostaviti, ker je rezervirana za popolno prodajno naročilo {2}", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Prodajno naročilo {0} ima rezervacijo za artikel {1}, rezervirano {1} lahko dostavite samo proti {0}.", +{0} Serial No {1} cannot be delivered,{0} Serijske številke {1} ni mogoče dostaviti, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Vrstica {0}: Izdelek s podizvajalci je obvezen za surovino {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Ker je dovolj surovin, zahteva za material za skladišče {0} ni potrebna.", +" If you still want to proceed, please enable {0}.","Če še vedno želite nadaljevati, omogočite {0}.", +The item referenced by {0} - {1} is already invoiced,"Element, na katerega se sklicuje {0} - {1}, je že fakturiran", +Therapy Session overlaps with {0},Seja terapije se prekriva z {0}, +Therapy Sessions Overlapping,Terapijske seje se prekrivajo, +Therapy Plans,Načrti terapije, +"Item Code, warehouse, quantity are required on row {0}","Koda artikla, skladišče, količina so obvezni v vrstici {0}", +Get Items from Material Requests against this Supplier,Pridobite izdelke iz materialnih zahtevkov pri tem dobavitelju, +Enable European Access,Omogoči evropski dostop, +Creating Purchase Order ...,Ustvarjanje naročilnice ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Izberite dobavitelja med privzetimi dobavitelji spodnjih elementov. Po izbiri bo naročilnica narejena samo za izdelke, ki pripadajo izbranemu dobavitelju.", +Row #{}: You must select {} serial numbers for item {}.,Vrstica # {}: Izbrati morate {} serijske številke za izdelek {}., diff --git a/erpnext/translations/sq.csv b/erpnext/translations/sq.csv index daab8c8e37..05aefa3602 100644 --- a/erpnext/translations/sq.csv +++ b/erpnext/translations/sq.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',Nuk mund Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',Nuk mund të zbres kur kategori është për 'vlerësimin' ose 'Vaulation dhe Total ", "Cannot delete Serial No {0}, as it is used in stock transactions","Nuk mund të fshini serial {0}, ashtu siç është përdorur në transaksionet e aksioneve", Cannot enroll more than {0} students for this student group.,Nuk mund të regjistrohen më shumë se {0} nxënësve për këtë grup të studentëve., -Cannot find Item with this barcode,Nuk mund të gjesh Artikullin me këtë barkod, Cannot find active Leave Period,Nuk mund të gjesh periudhë aktive të pushimit, Cannot produce more Item {0} than Sales Order quantity {1},Nuk mund të prodhojë më shumë Item {0} se sasia Sales Rendit {1}, Cannot promote Employee with status Left,Nuk mund të promovojë punonjës me statusin e majtë, @@ -690,7 +689,6 @@ Create Variants,Krijo variantet, "Create and manage daily, weekly and monthly email digests.","Krijuar dhe menaxhuar digests ditore, javore dhe mujore email.", Create customer quotes,Krijo kuotat konsumatorëve, Create rules to restrict transactions based on values.,Krijo rregulla për të kufizuar transaksionet në bazë të vlerave., -Created By,Krijuar nga, Created {0} scorecards for {1} between: ,Krijuar {0} tabelat e rezultateve për {1} midis:, Creating Company and Importing Chart of Accounts,Krijimi i Kompanisë dhe Grafiku Importues, Creating Fees,Krijimi i Tarifave, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Për Magazina është e nevojshme para s For row {0}: Enter Planned Qty,Për rresht {0}: Shkruani Qty planifikuar, "For {0}, only credit accounts can be linked against another debit entry","Për {0}, vetëm llogaritë e kreditit mund të jetë i lidhur kundër një tjetër hyrje debiti", "For {0}, only debit accounts can be linked against another credit entry","Për {0}, vetëm llogaritë e debitit mund të jetë i lidhur kundër një tjetër hyrjes krediti", -Form View,Shiko formularin, Forum Activity,Aktiviteti i forumit, Free item code is not selected,Kodi i artikullit falas nuk është zgjedhur, Freight and Forwarding Charges,Mallrave dhe Forwarding Pagesat, @@ -2638,7 +2635,6 @@ Send SMS,Dërgo SMS, Send mass SMS to your contacts,Dërgo SMS në masë për kontaktet tuaja, Sensitivity,ndjeshmëri, Sent,Dërguar, -Serial #,Serial #, Serial No and Batch,Pa serial dhe Batch, Serial No is mandatory for Item {0},Asnjë Serial është i detyrueshëm për Item {0}, Serial No {0} does not belong to Batch {1},Serial No {0} nuk i përket Grumbullit {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Mirë se vini në ERPNext, What do you need help with?,Çfarë keni nevojë për ndihmë me?, What does it do?,Çfarë do të bëni?, Where manufacturing operations are carried.,Ku operacionet prodhuese janë kryer., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Ndërsa krijoni llogari për Ndërmarrjen për fëmijë {0}, llogaria e prindërve {1} nuk u gjet. Ju lutemi krijoni llogarinë mëmë në COA përkatëse", White,e bardhë, Wire Transfer,Wire Transfer, WooCommerce Products,Produkte WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Preferencë, Merge with existing,Përziej me ekzistuese, Office,Zyrë, Orientation,Orientim, +Parent,Prind, Passive,Pasiv, Payment Failed,pagesa Dështoi, Percent,Përqind, @@ -3543,6 +3539,7 @@ Shift,ndryshim, Show {0},Trego {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Karaktere speciale përveç "-", "#", ".", "/", "{" Dhe "}" nuk lejohen në seritë emërtuese", Target Details,Detaje të synuara, +{0} already has a Parent Procedure {1}.,{0} tashmë ka një procedurë prindërore {1}., API,API, Annual,Vjetor, Approved,I miratuar, @@ -4241,7 +4238,6 @@ Download as JSON,Shkarkoni si JSON, End date can not be less than start date,Data e mbarimit nuk mund të jetë më e shkurtër se data fillestare, For Default Supplier (Optional),Për Furnizuesin e Parazgjedhur (fakultativ), From date cannot be greater than To date,Nga Data nuk mund të jetë më i madh se deri më sot, -Get items from,Të marrë sendet nga, Group by,Grupi Nga, In stock,Në gjendje, Item name,Item Emri, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Parametri i shablloneve për reagime cilëso Quality Goal,Qëllimi i cilësisë, Monitoring Frequency,Frekuenca e monitorimit, Weekday,ditë jave, -January-April-July-October,Janar-Prill-Korrik-tetor, -Revision and Revised On,Revizion dhe Rishikuar Në, -Revision,rishikim, -Revised On,Rishikuar më, Objectives,objektivat, Quality Goal Objective,Objektivi i qëllimit të cilësisë, Objective,Objektiv, @@ -7574,7 +7566,6 @@ Parent Procedure,Procedura e prindërve, Processes,proceset, Quality Procedure Process,Procesi i procedurës së cilësisë, Process Description,Përshkrimi i procesit, -Child Procedure,Procedura e fëmijëve, Link existing Quality Procedure.,Lidh procedurën ekzistuese të cilësisë., Additional Information,informacion shtese, Quality Review Objective,Objektivi i rishikimit të cilësisë, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Rendit Blerje Trendet, Purchase Receipt Trends,Trendet Receipt Blerje, Purchase Register,Blerje Regjistrohu, Quotation Trends,Kuotimit Trendet, -Quoted Item Comparison,Cituar Item Krahasimi, Received Items To Be Billed,Items marra Për të faturohet, Qty to Order,Qty të Rendit, Requested Items To Be Transferred,Items kërkuar të transferohet, @@ -9091,7 +9081,6 @@ Unmarked days,Ditët e pashënuara, Absent Days,Ditët e Munguara, Conditions and Formula variable and example,Kushtet dhe variabla e Formulës dhe shembulli, Feedback By,Komente nga, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.VVVV .-. MM .-. DD.-, Manufacturing Section,Seksioni i Prodhimit, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Si parazgjedhje, Emri i Klientit vendoset sipas Emrit të Plotë të futur. Nëse dëshironi që Klientët të emërohen nga a", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Konfiguroni Listën e Çmimeve të paracaktuar kur krijoni një transaksion të ri Shitjeje. Çmimet e artikujve do të merren nga kjo Lista e Çmimeve., @@ -9692,7 +9681,6 @@ Available Balance,Bilanci i disponueshëm, Reserved Balance,Bilanci i rezervuar, Uncleared Balance,Bilanci i paqartë, Payment related to {0} is not completed,Pagesa në lidhje me {0} nuk ka përfunduar, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rreshti # {}: Jo serik {}. {} tashmë është transaksionuar në një Faturë tjetër POS. Ju lutemi zgjidhni nr serial të vlefshëm., Row #{}: Item Code: {} is not available under warehouse {}.,Rreshti # {}: Kodi i artikullit: {} nuk është i disponueshëm në depo {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Rreshti # {}: Sasia e aksioneve nuk është e mjaftueshme për Kodin e Artikullit: {} nën depo {}. Sasia e disponueshme {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Rreshti # {}: Ju lutemi zgjidhni një numër serial dhe një seri ndaj artikullit: {} ose hiqeni atë për të përfunduar transaksionin., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Sasia nuk është e disponueshme Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Ju lutemi aktivizoni Lejoni Stok Negativ në Cilësimet e Stokut ose krijoni Hyrjen e Aksioneve për të vazhduar., No Inpatient Record found against patient {0},Nuk u gjet asnjë regjistër spitalor kundër pacientit {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Një Urdhër për Barna Spitalore {0} kundër Takimit të Pacientit {1} tashmë ekziston., +Allow In Returns,Lejo në kthim, +Hide Unavailable Items,Fshih artikuj të padisponueshëm, +Apply Discount on Discounted Rate,Aplikoni Zbritje në Tarifën e Zbritur, +Therapy Plan Template,Modeli i Planit të Terapisë, +Fetching Template Details,Marrja e detajeve të modelit, +Linked Item Details,Detajet e Artikullit të Lidhur, +Therapy Types,Llojet e terapisë, +Therapy Plan Template Detail,Detaji i Modelit të Planit të Terapisë, +Non Conformance,Pa pershtatje, +Process Owner,Pronari i procesit, +Corrective Action,Veprim korrigjues, +Preventive Action,Veprimi parandalues, +Problem,Problemi, +Responsible,I përgjegjshëm, +Completion By,Përfundimi nga, +Process Owner Full Name,Emri i plotë i pronarit të procesit, +Right Index,Indeksi i duhur, +Left Index,Indeksi i majtë, +Sub Procedure,Nën procedura, +Passed,Kaloi, +Print Receipt,Fatura e printimit, +Edit Receipt,Redakto faturën, +Focus on search input,Përqendrohuni në hyrjen e kërkimit, +Focus on Item Group filter,Përqendrohuni në filtrin e Grupit të Artikujve, +Checkout Order / Submit Order / New Order,Porosia e blerjes / Dorëzimi i porosisë / Porosia e re, +Add Order Discount,Shto zbritje të porosisë, +Item Code: {0} is not available under warehouse {1}.,Kodi i artikullit: {0} nuk është i disponueshëm nën depo {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Numrat serialë të padisponueshëm për Artikullin {0} nën depo {1}. Ju lutemi provoni të ndryshoni magazinën., +Fetched only {0} available serial numbers.,Merren vetëm {0} numrat serial të disponueshëm., +Switch Between Payment Modes,Kaloni midis mënyrave të pagesës, +Enter {0} amount.,Vendos shumën {0}., +You don't have enough points to redeem.,Ju nuk keni pikë të mjaftueshme për të përdorur., +You can redeem upto {0}.,Ju mund të përdorni deri në {0}., +Enter amount to be redeemed.,Vendos shumën që do të blihet., +You cannot redeem more than {0}.,Ju nuk mund të përdorni më shumë se {0}., +Open Form View,Hapni Pamjen e Formës, +POS invoice {0} created succesfully,Fatura POS {0} u krijua me sukses, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Sasia e aksioneve nuk është e mjaftueshme për Kodin e Artikullit: {0} nën depo {1}. Sasia e disponueshme {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Nr serial: {0} është transaksionuar tashmë në një Faturë tjetër POS., +Balance Serial No,Nr. I Serisë së Bilancit, +Warehouse: {0} does not belong to {1},Magazina: {0} nuk i përket {1}, +Please select batches for batched item {0},Ju lutemi zgjidhni tufat për artikullin e grumbulluar {0}, +Please select quantity on row {0},Ju lutemi zgjidhni sasinë në rreshtin {0}, +Please enter serial numbers for serialized item {0},Ju lutemi vendosni numrat serialë për artikullin e serializuar {0}, +Batch {0} already selected.,Grumbulli {0} i zgjedhur tashmë., +Please select a warehouse to get available quantities,Ju lutemi zgjidhni një depo për të marrë sasitë në dispozicion, +"For transfer from source, selected quantity cannot be greater than available quantity","Për transferim nga burimi, sasia e zgjedhur nuk mund të jetë më e madhe se sasia e disponueshme", +Cannot find Item with this Barcode,Nuk mund të gjendet artikulli me këtë barkod, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} është i detyrueshëm. Ndoshta rekordi i këmbimit valutor nuk është krijuar për {1} për {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} ka paraqitur asete të lidhura me të. Ju duhet të anuloni pasuritë për të krijuar kthimin e blerjes., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Ky dokument nuk mund të anulohet pasi është i lidhur me aktivin e paraqitur {0}. Ju lutemi anulojeni atë për të vazhduar., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rreshti # {}: Nr. I serisë {} është transaksionuar tashmë në një Faturë tjetër POS. Ju lutemi zgjidhni nr serial të vlefshëm., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rreshti # {}: Numrat Serialë. {} Tashmë është transaksionuar në një Faturë tjetër POS. Ju lutemi zgjidhni nr serial të vlefshëm., +Item Unavailable,Artikulli i padisponueshëm, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Rreshti # {}: Jo Seriali {} nuk mund të kthehet pasi nuk është transaksionuar në faturën origjinale {}, +Please set default Cash or Bank account in Mode of Payment {},Ju lutemi vendosni para të gatshme ose llogari bankare në mënyrën e pagesës {}, +Please set default Cash or Bank account in Mode of Payments {},Ju lutemi vendosni para të gatshme ose llogari bankare në mënyrën e pagesave {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Sigurohuni që llogaria {} të jetë llogari e Bilancit. Ju mund ta ndryshoni llogarinë mëmë në një llogari të Bilancit ose të zgjidhni një llogari tjetër., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Sigurohuni që llogaria {} të jetë llogari e pagueshme. Ndryshoni llojin e llogarisë në Pagesë ose zgjidhni një llogari tjetër., +Row {}: Expense Head changed to {} ,Rreshti {}: Koka e shpenzimeve u ndryshua në {}, +because account {} is not linked to warehouse {} ,sepse llogaria {} nuk është e lidhur me depon {}, +or it is not the default inventory account,ose nuk është llogaria e paracaktuar e inventarit, +Expense Head Changed,Koka e Shpenzimeve Ndryshuar, +because expense is booked against this account in Purchase Receipt {},sepse shpenzimi është rezervuar kundrejt kësaj llogarie në Faturën e Blerjes {}, +as no Purchase Receipt is created against Item {}. ,pasi nuk krijohet asnjë Faturë Blerje kundrejt Artikullit {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Kjo është bërë për të trajtuar kontabilitetin për rastet kur Fatura e Blerjes krijohet pas Faturës së Blerjes, +Purchase Order Required for item {},Kërkohet porosia e blerjes për artikullin {}, +To submit the invoice without purchase order please set {} ,"Për të dorëzuar faturën pa porosi të blerjes, ju lutemi vendosni {}", +as {} in {},si në {}, +Mandatory Purchase Order,Urdhri i Blerjes së Detyrueshëm, +Purchase Receipt Required for item {},Kërkohet fatura e blerjes për artikullin {}, +To submit the invoice without purchase receipt please set {} ,Për të dorëzuar faturën pa dëftesë blerjeje ju lutemi vendosni {}, +Mandatory Purchase Receipt,Fatura e Blerjes së Detyrueshme, +POS Profile {} does not belongs to company {},Profili POS {} nuk i përket kompanisë {}, +User {} is disabled. Please select valid user/cashier,Përdoruesi {} është çaktivizuar. Ju lutemi zgjidhni përdoruesin / arkëtarin e vlefshëm, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Rreshti # {}: Fatura origjinale {} e faturës kthyese {} është {}., +Original invoice should be consolidated before or along with the return invoice.,Fatura origjinale duhet të konsolidohet para ose së bashku me faturën e kthimit., +You can add original invoice {} manually to proceed.,Ju mund të shtoni faturë origjinale {} manualisht për të vazhduar., +Please ensure {} account is a Balance Sheet account. ,Sigurohuni që llogaria {} të jetë llogari e Bilancit., +You can change the parent account to a Balance Sheet account or select a different account.,Ju mund ta ndryshoni llogarinë mëmë në një llogari të Bilancit ose të zgjidhni një llogari tjetër., +Please ensure {} account is a Receivable account. ,Sigurohuni që llogaria {} të jetë llogari e arkëtueshme., +Change the account type to Receivable or select a different account.,Ndryshoni llojin e llogarisë në të arkëtueshme ose zgjidhni një llogari tjetër., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} nuk mund të anulohet pasi Pikët e Besnikërisë së fituar janë shpenguar. Së pari anuloni {} Jo {}, +already exists,tashmë ekziston, +POS Closing Entry {} against {} between selected period,Hyrja Mbyllëse e POS-it {} kundër {} midis periudhës së zgjedhur, +POS Invoice is {},Fatura POS është {}, +POS Profile doesn't matches {},Profili POS nuk përputhet me {}, +POS Invoice is not {},Fatura POS nuk është {}, +POS Invoice isn't created by user {},Fatura POS nuk është krijuar nga përdoruesi {}, +Row #{}: {},Rreshti # {}: {}, +Invalid POS Invoices,Fatura të pavlefshme POS, +Please add the account to root level Company - {},Ju lutemi shtoni llogarinë në nivelin e rrënjës Kompania - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Ndërsa krijoni llogari për Kompaninë e Fëmijëve {0}, llogaria prindërore {1} nuk u gjet. Ju lutemi krijoni llogarinë mëmë në COA përkatëse", +Account Not Found,Llogaria nuk u gjet, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Ndërsa krijoni llogari për Child Company {0}, llogaria prindërore {1} u gjet si një llogari e librit kryesor.", +Please convert the parent account in corresponding child company to a group account.,Ju lutemi shndërroni llogarinë mëmë në kompaninë përkatëse të fëmijëve në një llogari grupi., +Invalid Parent Account,Llogari e pavlefshme e prindit, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Riemërtimi i tij lejohet vetëm përmes kompanisë mëmë {0}, për të shmangur mospërputhjen.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Nëse keni {0} {1} sasi të artikullit {2}, skema {3} do të zbatohet në artikull.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Nëse {0} {1} ia vlen artikulli {2}, skema {3} do të zbatohet në artikull.", +"As the field {0} is enabled, the field {1} is mandatory.","Ndërsa fusha {0} është e aktivizuar, fusha {1} është e detyrueshme.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Ndërsa fusha {0} është e aktivizuar, vlera e fushës {1} duhet të jetë më shumë se 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Nuk mund të dorëzojë numrin rendor {0} të artikullit {1} pasi është i rezervuar për plotësimin e plotë të porosisë së shitjes {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Urdhri i Shitjes {0} ka rezervim për artikullin {1}, ju mund të dorëzoni vetëm të rezervuar {1} kundrejt {0}.", +{0} Serial No {1} cannot be delivered,{0} Nr serial {1} nuk mund të dorëzohet, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Rreshti {0}: Artikulli i nënkontraktuar është i detyrueshëm për lëndën e parë {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Meqenëse ka lëndë të parë të mjaftueshme, Kërkesa e Materialit nuk kërkohet për Magazinë {0}.", +" If you still want to proceed, please enable {0}.","Nëse akoma dëshironi të vazhdoni, aktivizoni {0}.", +The item referenced by {0} - {1} is already invoiced,Artikulli i referuar nga {0} - {1} është tashmë i faturuar, +Therapy Session overlaps with {0},Sesioni i terapisë mbivendoset me {0}, +Therapy Sessions Overlapping,Seancat e Terapisë Mbivendosen, +Therapy Plans,Planet e Terapisë, +"Item Code, warehouse, quantity are required on row {0}","Kodi i artikullit, depoja, sasia kërkohen në rreshtin {0}", +Get Items from Material Requests against this Supplier,Merrni Artikuj nga Kërkesat Materiale kundër këtij Furnizuesi, +Enable European Access,Aktivizo Aksesin Evropian, +Creating Purchase Order ...,Krijimi i urdhrit të blerjes ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Zgjidhni një furnitor nga furnitorët e parazgjedhur të artikujve më poshtë. Gjatë zgjedhjes, një Urdhër Blerje do të bëhet vetëm kundër artikujve që i përkasin vetëm Furnizuesit të zgjedhur.", +Row #{}: You must select {} serial numbers for item {}.,Rreshti # {}: Duhet të zgjidhni {} numrat rendorë për artikullin {}., diff --git a/erpnext/translations/sr.csv b/erpnext/translations/sr.csv index 57dea495e3..b507f74f09 100644 --- a/erpnext/translations/sr.csv +++ b/erpnext/translations/sr.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Не м Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',не могу одбити када категорија је за "процену вредности" или "Ваулатион и Тотал ', "Cannot delete Serial No {0}, as it is used in stock transactions","Не могу да избришем серијски број {0}, као што се користи у промету акција", Cannot enroll more than {0} students for this student group.,Не могу уписати више од {0} студенте за ову студентској групи., -Cannot find Item with this barcode,Ставка са овим баркодом није пронађена, Cannot find active Leave Period,Не могу пронаћи активни период отпуста, Cannot produce more Item {0} than Sales Order quantity {1},"Не можете производить больше элемент {0} , чем количество продаж Заказать {1}", Cannot promote Employee with status Left,Не могу промовирати запосленика са статусом лево, @@ -690,7 +689,6 @@ Create Variants,Направи Варијанте, "Create and manage daily, weekly and monthly email digests.","Создание и управление ежедневные , еженедельные и ежемесячные дайджесты новостей.", Create customer quotes,Створити цитате купаца, Create rules to restrict transactions based on values.,Создание правил для ограничения операций на основе значений ., -Created By,Креирао, Created {0} scorecards for {1} between: ,Направљене {0} карте карте за {1} између:, Creating Company and Importing Chart of Accounts,Стварање предузећа и увоз рачуна, Creating Fees,Креирање накнада, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Для требуется Склад п For row {0}: Enter Planned Qty,За ред {0}: Унесите планирани број, "For {0}, only credit accounts can be linked against another debit entry","За {0}, само кредитне рачуни могу бити повезани против неке друге ставке дебитне", "For {0}, only debit accounts can be linked against another credit entry","За {0}, само дебитне рачуни могу бити повезани против другог кредитног уласка", -Form View,Форм Виев, Forum Activity,Активност форума, Free item code is not selected,Бесплатни код артикла није одабран, Freight and Forwarding Charges,Грузовые и экспедиторские Сборы, @@ -2638,7 +2635,6 @@ Send SMS,Пошаљи СМС, Send mass SMS to your contacts,Пошаљи СМС масовне вашим контактима, Sensitivity,Осетљивост, Sent,Сент, -Serial #,Сериал #, Serial No and Batch,Серијски број и партије, Serial No is mandatory for Item {0},Серийный номер является обязательным для п. {0}, Serial No {0} does not belong to Batch {1},Серијски број {0} не припада Батцх {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Добродошли у ЕРПНект, What do you need help with?,С чиме ти треба помоћ?, What does it do?,Шта он ради ?, Where manufacturing operations are carried.,Где се обавља производњу операције., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Док сте креирали налог за дечију компанију {0}, родитељски рачун {1} није пронађен. Направите матични рачун у одговарајућем ЦОА", White,бео, Wire Transfer,Вире Трансфер, WooCommerce Products,ВооЦоммерце производи, @@ -3493,6 +3488,7 @@ Likes,Ликес, Merge with existing,Споји са постојећим, Office,Канцеларија, Orientation,оријентација, +Parent,Родитељ, Passive,Пасиван, Payment Failed,Уплата није успела, Percent,Проценат, @@ -3543,6 +3539,7 @@ Shift,Смена, Show {0},Прикажи {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Посебни знакови осим "-", "#", ".", "/", "{" И "}" нису дозвољени у именовању серија", Target Details,Детаљи циља, +{0} already has a Parent Procedure {1}.,{0} већ има родитељску процедуру {1}., API,АПИ, Annual,годовой, Approved,Одобрено, @@ -4241,7 +4238,6 @@ Download as JSON,Преузми као ЈСОН, End date can not be less than start date,"Дата окончания не может быть меньше , чем Дата начала", For Default Supplier (Optional),За подразумевани добављач, From date cannot be greater than To date,Од датума не може бити већа него до сада, -Get items from,Гет ставке из, Group by,Група По, In stock,На лагеру, Item name,Назив, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Параметар шаблона квали Quality Goal,Циљ квалитета, Monitoring Frequency,Мониторинг фреквенције, Weekday,Радним даном, -January-April-July-October,Јануар-април-јул-октобар, -Revision and Revised On,Ревизија и Ревизија даље, -Revision,Ревизија, -Revised On,Ревидирано дана, Objectives,Циљеви, Quality Goal Objective,Циљ квалитета квалитета, Objective,објективан, @@ -7574,7 +7566,6 @@ Parent Procedure,Поступак родитеља, Processes,Процеси, Quality Procedure Process,Процес поступка квалитета, Process Description,Опис процеса, -Child Procedure,Дечија процедура, Link existing Quality Procedure.,Повежите постојећу процедуру квалитета, Additional Information,Додатне Информације, Quality Review Objective,Циљ прегледа квалитета, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Куповина Трендови Ордер, Purchase Receipt Trends,Куповина Трендови Пријем, Purchase Register,Куповина Регистрација, Quotation Trends,Котировочные тенденции, -Quoted Item Comparison,Цитирано артикла Поређење, Received Items To Be Billed,Примљени артикала буду наплаћени, Qty to Order,Количина по поруџбини, Requested Items To Be Transferred,Тражени Артикли ће се пренети, @@ -9091,7 +9081,6 @@ Unmarked days,Необележени дани, Absent Days,Одсутни дани, Conditions and Formula variable and example,Услови и варијабла формуле и пример, Feedback By,Феедбацк Би, -MTNG-.YYYY.-.MM.-.DD.-,МТНГ-.ГГГГ .-. ММ .-. ДД.-, Manufacturing Section,Одељење за производњу, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Подразумевано, Корисничко име је постављено према пуном имену. Ако желите да купце именује а", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Конфигуришите подразумевани ценовник приликом креирања нове продајне трансакције. Цене артикала биће преузете из овог ценовника., @@ -9692,7 +9681,6 @@ Available Balance,Доступно Стање, Reserved Balance,Резервисано стање, Uncleared Balance,Неразјашњени биланс, Payment related to {0} is not completed,Уплата у вези са {0} није завршена, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Ред # {}: серијски број {}. {} је већ пребачен у другу ПОС фактуру. Изаберите важећи серијски број., Row #{}: Item Code: {} is not available under warehouse {}.,Ред # {}: Шифра артикла: {} није доступан у складишту {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Ред # {}: Количина залиха није довољна за шифру артикла: {} испод складишта {}. Доступна количина {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Ред # {}: Изаберите серијски број и пакет према ставци: {} или га уклоните да бисте довршили трансакцију., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Количина није дос Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Омогућите Дозволи негативну залиху у подешавањима залиха или креирајте унос залиха да бисте наставили., No Inpatient Record found against patient {0},Није пронађена стационарна евиденција пацијента {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Налог за стационарно лечење {0} против сусрета са пацијентима {1} већ постоји., +Allow In Returns,Дозволи повраћај, +Hide Unavailable Items,Сакриј недоступне ставке, +Apply Discount on Discounted Rate,Примени попуст на снижену стопу, +Therapy Plan Template,Предложак плана терапије, +Fetching Template Details,Преузимање детаља о предлошку, +Linked Item Details,Повезани детаљи предмета, +Therapy Types,Врсте терапије, +Therapy Plan Template Detail,Детаљ предлошка плана терапије, +Non Conformance,Не усаглашености, +Process Owner,Власник процеса, +Corrective Action,Корективне мере, +Preventive Action,Превентивно деловање, +Problem,Проблем, +Responsible,Одговорно, +Completion By,Завршетак, +Process Owner Full Name,Пуно име власника процеса, +Right Index,Прави индекс, +Left Index,Леви индекс, +Sub Procedure,Потпроцедура, +Passed,Прошло је, +Print Receipt,Одштампај признаницу, +Edit Receipt,Измена признанице, +Focus on search input,Фокусирајте се на унос претраге, +Focus on Item Group filter,Фокусирајте се на филтер групе предмета, +Checkout Order / Submit Order / New Order,Наруџба за плаћање / Подношење налога / Нова наруџба, +Add Order Discount,Додајте попуст за наруџбину, +Item Code: {0} is not available under warehouse {1}.,Код артикла: {0} није доступан у складишту {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Серијски бројеви нису доступни за артикал {0} у складишту {1}. Покушајте да промените складиште., +Fetched only {0} available serial numbers.,Доступно само {0} доступних серијских бројева., +Switch Between Payment Modes,Пребацујте се између начина плаћања, +Enter {0} amount.,Унесите износ од {0}., +You don't have enough points to redeem.,Немате довољно бодова да бисте их искористили., +You can redeem upto {0}.,Можете да искористите до {0}., +Enter amount to be redeemed.,Унесите износ који треба искористити., +You cannot redeem more than {0}.,Не можете да искористите више од {0}., +Open Form View,Отворите приказ обрасца, +POS invoice {0} created succesfully,ПОС фактура {0} је успешно направљена, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Количина залиха није довољна за код артикла: {0} испод складишта {1}. Доступна количина {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Серијски број: {0} је већ пребачен у другу ПОС фактуру., +Balance Serial No,Серијски бр, +Warehouse: {0} does not belong to {1},Магацин: {0} не припада {1}, +Please select batches for batched item {0},Изаберите серије за серијску ставку {0}, +Please select quantity on row {0},Изаберите количину у реду {0}, +Please enter serial numbers for serialized item {0},Унесите серијске бројеве за серијску ставку {0}, +Batch {0} already selected.,Пакет {0} је већ изабран., +Please select a warehouse to get available quantities,Изаберите складиште да бисте добили доступне количине, +"For transfer from source, selected quantity cannot be greater than available quantity","За пренос из извора, одабрана количина не може бити већа од доступне количине", +Cannot find Item with this Barcode,Не могу да пронађем ставку са овим бар кодом, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} је обавезно. Можда евиденција размене валута није креирана за {1} до {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} је послао елементе повезане са њим. Морате отказати имовину да бисте створили поврат куповине., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Овај документ није могуће отказати јер је повезан са достављеним материјалом {0}. Откажите га да бисте наставили., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Ред # {}: Серијски број {} је већ пребачен у другу ПОС фактуру. Изаберите важећи серијски број., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Ред # {}: Серијски бројеви. {} Је већ пребачен у другу ПОС фактуру. Изаберите важећи серијски број., +Item Unavailable,Предмет није доступан, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Ред # {}: Серијски број {} се не може вратити јер није извршен у оригиналној фактури {}, +Please set default Cash or Bank account in Mode of Payment {},Подесите подразумевани готовински или банковни рачун у начину плаћања {}, +Please set default Cash or Bank account in Mode of Payments {},Подесите подразумевани готовински или банковни рачун у начину плаћања {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Уверите се да је рачун {} рачун биланса стања. Можете да промените родитељски рачун у рачун биланса стања или да изаберете други рачун., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Уверите се да је рачун {} рачун који се плаћа. Промените врсту рачуна у Плативо или изаберите други рачун., +Row {}: Expense Head changed to {} ,Ред {}: Глава расхода промењена у {}, +because account {} is not linked to warehouse {} ,јер рачун {} није повезан са складиштем {}, +or it is not the default inventory account,или није подразумевани рачун залиха, +Expense Head Changed,Промењена глава расхода, +because expense is booked against this account in Purchase Receipt {},јер су трошкови књижени на овом рачуну у потврди о куповини {}, +as no Purchase Receipt is created against Item {}. ,пошто се према ставци {} не креира потврда о куповини., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Ово се ради ради обрачунавања случајева када се потврда о куповини креира након фактуре за куповину, +Purchase Order Required for item {},Наруџбеница потребна за артикал {}, +To submit the invoice without purchase order please set {} ,"Да бисте предали рачун без наруџбенице, подесите {}", +as {} in {},као у {}, +Mandatory Purchase Order,Обавезна наруџбеница, +Purchase Receipt Required for item {},Потврда о куповини за ставку {}, +To submit the invoice without purchase receipt please set {} ,"Да бисте предали рачун без потврде о куповини, подесите {}", +Mandatory Purchase Receipt,Обавезна потврда о куповини, +POS Profile {} does not belongs to company {},ПОС профил {} не припада компанији {}, +User {} is disabled. Please select valid user/cashier,Корисник {} је онемогућен. Изаберите важећег корисника / благајника, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Ред # {}: Оригинална фактура {} фактуре за враћање {} је {}., +Original invoice should be consolidated before or along with the return invoice.,Оригиналну фактуру треба консолидовати пре или заједно са повратном фактуром., +You can add original invoice {} manually to proceed.,Можете да додате оригиналну фактуру {} ручно да бисте наставили., +Please ensure {} account is a Balance Sheet account. ,Уверите се да је рачун {} рачун биланса стања., +You can change the parent account to a Balance Sheet account or select a different account.,Можете да промените родитељски рачун у рачун биланса стања или да изаберете други рачун., +Please ensure {} account is a Receivable account. ,Уверите се да је рачун {} рачун који се може потражити., +Change the account type to Receivable or select a different account.,Промените тип рачуна у Потраживање или изаберите други рачун., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} се не може отказати пошто су искоришћени бодови за лојалност искоришћени. Прво откажите {} Не {}, +already exists,већ постоји, +POS Closing Entry {} against {} between selected period,Затварање уноса ПОС-а {} против {} између изабраног периода, +POS Invoice is {},ПОС рачун је {}, +POS Profile doesn't matches {},ПОС профил се не подудара са {}, +POS Invoice is not {},ПОС фактура није {}, +POS Invoice isn't created by user {},ПОС рачун не креира корисник {}, +Row #{}: {},Ред # {}: {}, +Invalid POS Invoices,Неважеће ПОС фактуре, +Please add the account to root level Company - {},Додајте рачун у коријенски ниво компаније - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Приликом креирања налога за дете компаније {0}, надређени рачун {1} није пронађен. Отворите родитељски рачун у одговарајућем ЦОА", +Account Not Found,Рачун није пронађен, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Приликом креирања налога за дете компаније {0}, родитељски рачун {1} је пронађен као главни рачун.", +Please convert the parent account in corresponding child company to a group account.,Молимо конвертујте родитељски рачун у одговарајућем подређеном предузећу у групни рачун., +Invalid Parent Account,Неважећи родитељски рачун, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Преименовање је дозвољено само преко матичне компаније {0}, како би се избегло неслагање.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Ако {0} {1} количину предмета {2}, на производ ће применити шему {3}.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Ако {0} {1} вредите ставку {2}, шема {3} ће се применити на ставку.", +"As the field {0} is enabled, the field {1} is mandatory.","Како је поље {0} омогућено, поље {1} је обавезно.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Како је поље {0} омогућено, вредност поља {1} треба да буде већа од 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Није могуће испоручити серијски број {0} ставке {1} јер је резервисан за пуни налог за продају {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Продајни налог {0} има резервацију за артикал {1}, а резервисани {1} можете испоручити само против {0}.", +{0} Serial No {1} cannot be delivered,{0} Серијски број {1} не може да се испоручи, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Ред {0}: Предмет подуговарања је обавезан за сировину {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","С обзиром на то да постоји довољно сировина, захтев за материјал није потребан за Складиште {0}.", +" If you still want to proceed, please enable {0}.","Ако и даље желите да наставите, омогућите {0}.", +The item referenced by {0} - {1} is already invoiced,Ставка на коју се позива {0} - {1} већ је фактурисана, +Therapy Session overlaps with {0},Сесија терапије се преклапа са {0}, +Therapy Sessions Overlapping,Преклапање сесија терапије, +Therapy Plans,Планови терапије, +"Item Code, warehouse, quantity are required on row {0}","Шифра артикла, складиште, количина су обавезни у реду {0}", +Get Items from Material Requests against this Supplier,Узмите предмете од материјалних захтева против овог добављача, +Enable European Access,Омогућити европски приступ, +Creating Purchase Order ...,Креирање налога за куповину ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Изаберите добављача од задатих добављача доле наведених ставки. Након одабира, наруџбеница ће се извршити само за производе који припадају изабраном добављачу.", +Row #{}: You must select {} serial numbers for item {}.,Ред # {}: Морате одабрати {} серијске бројеве за ставку {}., diff --git a/erpnext/translations/sr_sp.csv b/erpnext/translations/sr_sp.csv index 58dbf7b658..5e7ae79781 100644 --- a/erpnext/translations/sr_sp.csv +++ b/erpnext/translations/sr_sp.csv @@ -108,7 +108,6 @@ Create Employee Records,Kreirati izvještaj o Zaposlenom, "Create Employee records to manage leaves, expense claims and payroll","Kreiraj evidenciju o Zaposlenom kako bi upravljali odsustvom, potraživanjima za troškove i platnim spiskovima", Create Users,Kreiraj korisnike, Create customer quotes,Kreirajte bilješke kupca, -Created By,Kreirao, Credit,Potražuje, Credit Balance,Stanje kredita, Credit Limit,Kreditni limit, @@ -164,7 +163,6 @@ Fiscal Year {0} does not exist,Fiskalna godina {0} ne postoji, Fiscal Year {0} not found,Fiskalna godina {0} nije pronađena, For Employee,Za Zaposlenog, For Warehouse,Za skladište, -Form View,Prikaži kao formu, From,Od, From Delivery Note,Iz otpremnice, Full Name,Puno ime, @@ -651,7 +649,6 @@ No,Ne, Yes,Da, Chart of Accounts,Kontni plan, Customer database.,Korisnička baza podataka, -Get items from,Dodaj stavke iz, Item name,Naziv artikla, No employee found,Zaposleni nije pronađen, Open Projects ,Otvoreni projekti, diff --git a/erpnext/translations/sv.csv b/erpnext/translations/sv.csv index 31bf89fc01..57e02792f4 100644 --- a/erpnext/translations/sv.csv +++ b/erpnext/translations/sv.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Det gå Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',Det går inte att dra när kategori är för "Värdering" eller "Vaulation och Total", "Cannot delete Serial No {0}, as it is used in stock transactions","Kan inte ta bort Löpnummer {0}, eftersom det används i aktietransaktioner", Cannot enroll more than {0} students for this student group.,Det går inte att registrera mer än {0} studenter för denna elevgrupp., -Cannot find Item with this barcode,Det går inte att hitta objekt med den här streckkoden, Cannot find active Leave Period,Kan inte hitta aktiv lämningsperiod, Cannot produce more Item {0} than Sales Order quantity {1},Det går inte att producera mer artiklar {0} än kundorderns mängd {1}, Cannot promote Employee with status Left,Kan inte marknadsföra Medarbetare med status Vänster, @@ -690,7 +689,6 @@ Create Variants,Skapa Varianter, "Create and manage daily, weekly and monthly email digests.","Skapa och hantera dagliga, vecko- och månads epostflöden.", Create customer quotes,Skapa kund citat, Create rules to restrict transactions based on values.,Skapa regler för att begränsa transaktioner som grundar sig på värderingar., -Created By,Skapad Av, Created {0} scorecards for {1} between: ,Skapade {0} scorecards för {1} mellan:, Creating Company and Importing Chart of Accounts,Skapa företag och importera kontot, Creating Fees,Skapa avgifter, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,För Lagerkrävs innan du kan skicka, For row {0}: Enter Planned Qty,För rad {0}: Ange planerad mängd, "For {0}, only credit accounts can be linked against another debit entry",För {0} kan endast kreditkonton länkas mot en annan debitering, "For {0}, only debit accounts can be linked against another credit entry",För {0} kan bara debitkonton länkas mot en annan kreditering, -Form View,Form View, Forum Activity,Forumaktivitet, Free item code is not selected,Gratis artikelkod är inte vald, Freight and Forwarding Charges,"Frakt, spedition Avgifter", @@ -2638,7 +2635,6 @@ Send SMS,Skicka sms, Send mass SMS to your contacts,Skicka mass SMS till dina kontakter, Sensitivity,Känslighet, Sent,Skickat, -Serial #,Seriell #, Serial No and Batch,Löpnummer och Batch, Serial No is mandatory for Item {0},Löpnummer är obligatoriskt för punkt {0}, Serial No {0} does not belong to Batch {1},Serienummer {0} hör inte till batch {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Välkommen till oss, What do you need help with?,Vad behöver du hjälp med?, What does it do?,Vad gör den?, Where manufacturing operations are carried.,Där tillverkningsprocesser genomförs., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",När du skapar konto för barnföretag {0} hittades inte moderkonto {1}. Skapa det överordnade kontot i motsvarande COA, White,Vit, Wire Transfer,Elektronisk överföring, WooCommerce Products,WooCommerce-produkter, @@ -3493,6 +3488,7 @@ Likes,Gillar, Merge with existing,Sammanfoga med befintlig, Office,Kontors, Orientation,Orientering, +Parent,Förälder, Passive,Passiv, Payment Failed,Betalning misslyckades, Percent,Procent, @@ -3543,6 +3539,7 @@ Shift,Flytta, Show {0},Visa {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Specialtecken utom "-", "#", ".", "/", "{" Och "}" är inte tillåtna i namnserien", Target Details,Måldetaljer, +{0} already has a Parent Procedure {1}.,{0} har redan en överordnad procedur {1}., API,API, Annual,Årlig, Approved,Godkänd, @@ -4241,7 +4238,6 @@ Download as JSON,Ladda ner som JSON, End date can not be less than start date,Slutdatum kan inte vara mindre än startdatum, For Default Supplier (Optional),För standardleverantör (tillval), From date cannot be greater than To date,Från datum kan inte vara större än till datum, -Get items from,Få objekt från, Group by,Gruppera efter, In stock,I lager, Item name,Produktnamn, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Parameter för kvalitetsåterkopplingsmall, Quality Goal,Kvalitetsmål, Monitoring Frequency,Övervaka frekvens, Weekday,Veckodag, -January-April-July-October,Januari-april-juli-oktober, -Revision and Revised On,Revision och omarbetad, -Revision,Revision, -Revised On,Reviderad den, Objectives,mål, Quality Goal Objective,Kvalitetsmål Mål, Objective,Mål, @@ -7574,7 +7566,6 @@ Parent Procedure,Föräldraförfarande, Processes,processer, Quality Procedure Process,Kvalitetsprocessprocess, Process Description,Metodbeskrivning, -Child Procedure,Barnförfarande, Link existing Quality Procedure.,Länka befintligt kvalitetsförfarande., Additional Information,ytterligare information, Quality Review Objective,Kvalitetsgranskningsmål, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Inköpsorder Trender, Purchase Receipt Trends,Kvitto Trender, Purchase Register,Inköpsregistret, Quotation Trends,Offert Trender, -Quoted Item Comparison,Citerade föremål Jämförelse, Received Items To Be Billed,Mottagna objekt som ska faktureras, Qty to Order,Antal till Ordern, Requested Items To Be Transferred,Efterfrågade artiklar som ska överföras, @@ -9091,7 +9081,6 @@ Unmarked days,Omärkta dagar, Absent Days,Frånvarande dagar, Conditions and Formula variable and example,Villkor och formelvariabel och exempel, Feedback By,Feedback av, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Tillverkningssektionen, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",Som standard är kundnamnet inställt enligt det angivna fullständiga namnet. Om du vill att kunder ska namnges av a, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Konfigurera standardprislistan när du skapar en ny försäljningstransaktion. Varupriser hämtas från denna prislista., @@ -9692,7 +9681,6 @@ Available Balance,Tillgängligt Saldo, Reserved Balance,Reserverad saldo, Uncleared Balance,Oklarad balans, Payment related to {0} is not completed,Betalning relaterad till {0} har inte slutförts, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rad nr {}: Serienummer {}. {} har redan överförts till en annan POS-faktura. Välj giltigt serienummer., Row #{}: Item Code: {} is not available under warehouse {}.,Rad nr {}: Artikelkod: {} är inte tillgänglig under lager {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Rad nr {}: Lagerkvantitet räcker inte för artikelkod: {} under lager {}. Tillgänglig kvantitet {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Rad nr {}: Välj ett serienummer och ett parti mot artikel: {} eller ta bort det för att slutföra transaktionen., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Antal som inte är tillgängligt Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Aktivera Tillåt negativt lager i lagerinställningar eller skapa lagerinmatning för att fortsätta., No Inpatient Record found against patient {0},Ingen slutenvårdspost hittades mot patient {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Det finns redan ett läkemedelsbeställning för slutenvård {0} mot patientmötet {1}., +Allow In Returns,Tillåt Returer, +Hide Unavailable Items,Dölj otillgängliga objekt, +Apply Discount on Discounted Rate,Tillämpa rabatt på rabatterat pris, +Therapy Plan Template,Terapiplanmall, +Fetching Template Details,Hämtar mallinformation, +Linked Item Details,Länkade artikeldetaljer, +Therapy Types,Terapityper, +Therapy Plan Template Detail,Behandlingsplan mall detalj, +Non Conformance,Bristande överensstämmelse, +Process Owner,Processägare, +Corrective Action,Korrigerande åtgärder, +Preventive Action,Förebyggande åtgärd, +Problem,Problem, +Responsible,Ansvarig, +Completion By,Slutförande av, +Process Owner Full Name,Processägarens fullständiga namn, +Right Index,Rätt index, +Left Index,Vänster index, +Sub Procedure,Underförfarande, +Passed,passerade, +Print Receipt,Skriv ut kvitto, +Edit Receipt,Redigera kvitto, +Focus on search input,Fokusera på sökinmatning, +Focus on Item Group filter,Fokusera på artikelgruppsfilter, +Checkout Order / Submit Order / New Order,Kassa Order / Skicka order / Ny order, +Add Order Discount,Lägg till beställningsrabatt, +Item Code: {0} is not available under warehouse {1}.,Artikelkod: {0} finns inte under lager {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Serienummer är inte tillgängligt för artikel {0} under lager {1}. Försök byta lager., +Fetched only {0} available serial numbers.,Hämtade bara {0} tillgängliga serienummer., +Switch Between Payment Modes,Växla mellan betalningssätt, +Enter {0} amount.,Ange {0} belopp., +You don't have enough points to redeem.,Du har inte tillräckligt med poäng för att lösa in., +You can redeem upto {0}.,Du kan lösa in upp till {0}., +Enter amount to be redeemed.,Ange belopp som ska lösas in., +You cannot redeem more than {0}.,Du kan inte lösa in mer än {0}., +Open Form View,Öppna formulärvy, +POS invoice {0} created succesfully,POS-faktura {0} skapades framgångsrikt, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Lagerkvantitet räcker inte för artikelkod: {0} under lager {1}. Tillgängligt antal {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Serienummer: {0} har redan överförts till en annan POS-faktura., +Balance Serial No,Balans Serienr, +Warehouse: {0} does not belong to {1},Lager: {0} tillhör inte {1}, +Please select batches for batched item {0},Välj satser för satsvis artikel {0}, +Please select quantity on row {0},Välj antal på rad {0}, +Please enter serial numbers for serialized item {0},Ange serienummer för serienummer {0}, +Batch {0} already selected.,Batch {0} har redan valts., +Please select a warehouse to get available quantities,Välj ett lager för att få tillgängliga kvantiteter, +"For transfer from source, selected quantity cannot be greater than available quantity",För överföring från källa kan vald kvantitet inte vara större än tillgänglig kvantitet, +Cannot find Item with this Barcode,Det går inte att hitta objekt med denna streckkod, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} är obligatoriskt. Valutaväxlingspost skapas kanske inte för {1} till {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} har skickat tillgångar kopplade till den. Du måste avbryta tillgångarna för att skapa köpretur., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Det går inte att avbryta detta dokument eftersom det är länkat till inlämnad tillgång {0}. Avbryt det för att fortsätta., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rad nr {}: Serienr. {} Har redan överförts till en annan POS-faktura. Välj giltigt serienummer., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Rad nr {}: Serienummer. {} Har redan överförts till en annan POS-faktura. Välj giltigt serienummer., +Item Unavailable,Artikeln är inte tillgänglig, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Rad nr {}: Serienr {} kan inte returneras eftersom den inte transakterades i originalfakturan {}, +Please set default Cash or Bank account in Mode of Payment {},Ange standard kontant- eller bankkonto i betalningssätt {}, +Please set default Cash or Bank account in Mode of Payments {},Ange standard kontant- eller bankkonto i betalningssätt {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Se till att {} kontot är ett balansräkningskonto. Du kan ändra föräldrakontot till ett balansräkningskonto eller välja ett annat konto., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Se till att {} kontot är ett betalbart konto. Ändra kontotyp till Betalbar eller välj ett annat konto., +Row {}: Expense Head changed to {} ,Rad {}: Kostnadshuvud ändrat till {}, +because account {} is not linked to warehouse {} ,eftersom konto {} inte är länkat till lager {}, +or it is not the default inventory account,eller så är det inte standardlagerkontot, +Expense Head Changed,Kostnadshuvud ändrat, +because expense is booked against this account in Purchase Receipt {},eftersom kostnad bokförs mot detta konto i inköpskvittot {}, +as no Purchase Receipt is created against Item {}. ,eftersom inget köpskvitto skapas mot artikel {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Detta görs för att hantera redovisning av fall när inköpskvitto skapas efter inköpsfaktura, +Purchase Order Required for item {},Inköpsorder krävs för artikel {}, +To submit the invoice without purchase order please set {} ,"För att skicka fakturan utan inköpsorder, ställ in {}", +as {} in {},som i {}, +Mandatory Purchase Order,Obligatorisk inköpsorder, +Purchase Receipt Required for item {},Inköpskvitton krävs för artikel {}, +To submit the invoice without purchase receipt please set {} ,"För att skicka fakturan utan köpskvitto, ställ in {}", +Mandatory Purchase Receipt,Obligatoriskt inköpskvitto, +POS Profile {} does not belongs to company {},POS-profil {} tillhör inte företaget {}, +User {} is disabled. Please select valid user/cashier,Användaren {} är inaktiverad. Välj giltig användare / kassör, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Rad nr {}: Originalfaktura {} för returfaktura {} är {}., +Original invoice should be consolidated before or along with the return invoice.,Originalfakturan ska konsolideras före eller tillsammans med returfakturan., +You can add original invoice {} manually to proceed.,Du kan lägga till originalfakturan {} manuellt för att fortsätta., +Please ensure {} account is a Balance Sheet account. ,Se till att {} kontot är ett balansräkningskonto., +You can change the parent account to a Balance Sheet account or select a different account.,Du kan ändra föräldrakontot till ett balansräkningskonto eller välja ett annat konto., +Please ensure {} account is a Receivable account. ,Se till att {} kontot är ett mottagbart konto., +Change the account type to Receivable or select a different account.,Ändra kontotyp till Mottagbar eller välj ett annat konto., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} kan inte annulleras eftersom intjänade lojalitetspoäng har lösts in. Avbryt först {} Nej {}, +already exists,existerar redan, +POS Closing Entry {} against {} between selected period,POS-avslutningspost {} mot {} mellan vald period, +POS Invoice is {},POS-faktura är {}, +POS Profile doesn't matches {},POS-profil matchar inte {}, +POS Invoice is not {},POS-faktura är inte {}, +POS Invoice isn't created by user {},POS-faktura skapas inte av användaren {}, +Row #{}: {},Rad #{}: {}, +Invalid POS Invoices,Ogiltiga POS-fakturor, +Please add the account to root level Company - {},Lägg till kontot i rotnivåföretaget - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",När du skapade ett konto för Child Company {0} hittades inte föräldrakontot {1}. Skapa föräldrakontot i motsvarande COA, +Account Not Found,Konto inte funnet, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",När du skapade ett konto för Child Company {0} hittades föräldrakontot {1} som ett huvudkontokonto., +Please convert the parent account in corresponding child company to a group account.,Konvertera moderbolaget i motsvarande barnföretag till ett gruppkonto., +Invalid Parent Account,Ogiltigt föräldrakonto, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",Att byta namn på det är endast tillåtet via moderbolaget {0} för att undvika ojämnhet., +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.",Om du {0} {1} kvantiteter av artikeln {2} kommer schemat {3} att tillämpas på artikeln., +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.",Om du {0} {1} värderar artikel {2} kommer schemat {3} att tillämpas på artikeln., +"As the field {0} is enabled, the field {1} is mandatory.",Eftersom fältet {0} är aktiverat är fältet {1} obligatoriskt., +"As the field {0} is enabled, the value of the field {1} should be more than 1.",Eftersom fältet {0} är aktiverat bör värdet för fältet {1} vara mer än 1., +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Det går inte att leverera serienummer {0} av artikeln {1} eftersom den är reserverad för fullständig försäljningsorder {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Försäljningsorder {0} har en reservation för artikeln {1}, du kan bara leverera reserverad {1} mot {0}.", +{0} Serial No {1} cannot be delivered,{0} Serienummer {1} kan inte levereras, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Rad {0}: Underleverantörsobjekt är obligatoriskt för råvaran {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.",Eftersom det finns tillräckligt med råvaror krävs inte materialförfrågan för lager {0}., +" If you still want to proceed, please enable {0}.",Om du fortfarande vill fortsätta aktiverar du {0}., +The item referenced by {0} - {1} is already invoiced,Varan som {0} - {1} refererar till faktureras redan, +Therapy Session overlaps with {0},Terapisessionen överlappar med {0}, +Therapy Sessions Overlapping,Terapisessioner överlappar varandra, +Therapy Plans,Terapiplaner, +"Item Code, warehouse, quantity are required on row {0}","Artikelkod, lager, kvantitet krävs på rad {0}", +Get Items from Material Requests against this Supplier,Få objekt från materialförfrågningar mot denna leverantör, +Enable European Access,Aktivera europeisk åtkomst, +Creating Purchase Order ...,Skapar inköpsorder ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",Välj en leverantör bland standardleverantörerna av artiklarna nedan. Vid val kommer en inköpsorder endast göras mot föremål som tillhör vald leverantör., +Row #{}: You must select {} serial numbers for item {}.,Rad nr {}: Du måste välja {} serienummer för artikeln {}., diff --git a/erpnext/translations/sw.csv b/erpnext/translations/sw.csv index 50faa3c824..3595727666 100644 --- a/erpnext/translations/sw.csv +++ b/erpnext/translations/sw.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',Haiwezi Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',Haiwezi kufuta wakati kiwanja ni kwa 'Valuation' au 'Vikwazo na Jumla', "Cannot delete Serial No {0}, as it is used in stock transactions","Haiwezi kufuta Serial No {0}, kama inatumiwa katika ushirikiano wa hisa", Cannot enroll more than {0} students for this student group.,Haiwezi kujiandikisha zaidi ya {0} wanafunzi kwa kikundi hiki cha wanafunzi., -Cannot find Item with this barcode,Huwezi kupata kipengee na barcode hii, Cannot find active Leave Period,Haiwezi kupata Kipindi cha Kuondoka, Cannot produce more Item {0} than Sales Order quantity {1},Haiwezi kuzalisha kipengee zaidi {0} kuliko kiasi cha Mauzo ya Mauzo {1}, Cannot promote Employee with status Left,Haiwezi kukuza mfanyakazi na hali ya kushoto, @@ -690,7 +689,6 @@ Create Variants,Unda anuwai, "Create and manage daily, weekly and monthly email digests.","Unda na udhibiti majaribio ya barua pepe kila siku, kila wiki na kila mwezi.", Create customer quotes,Unda nukuu za wateja, Create rules to restrict transactions based on values.,Unda sheria ili kuzuia shughuli kulingana na maadili., -Created By,Imetengenezwa na, Created {0} scorecards for {1} between: ,Iliunda {0} alama za alama kwa {1} kati ya:, Creating Company and Importing Chart of Accounts,Kuunda Kampuni na Chati ya Kuingiza Akaunti, Creating Fees,Kujenga ada, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Kwa Ghala inahitajika kabla ya Wasilisha For row {0}: Enter Planned Qty,Kwa mstari {0}: Ingiza qty iliyopangwa, "For {0}, only credit accounts can be linked against another debit entry","Kwa {0}, akaunti za mikopo tu zinaweza kuunganishwa dhidi ya kuingia mwingine kwa debit", "For {0}, only debit accounts can be linked against another credit entry","Kwa {0}, akaunti za debit tu zinaweza kuunganishwa dhidi ya kuingizwa kwa mkopo mwingine", -Form View,Tazama Fomu, Forum Activity,Shughuli ya Vikao, Free item code is not selected,Nambari ya bidhaa ya bure haijachaguliwa, Freight and Forwarding Charges,Mashtaka ya Mizigo na Usambazaji, @@ -2638,7 +2635,6 @@ Send SMS,Tuma SMS, Send mass SMS to your contacts,Tuma SMS ya wingi kwa anwani zako, Sensitivity,Sensitivity, Sent,Imepelekwa, -Serial #,Serial #, Serial No and Batch,Serial Hakuna na Batch, Serial No is mandatory for Item {0},Hapana ya Serial ni ya lazima kwa Bidhaa {0}, Serial No {0} does not belong to Batch {1},Serial Hakuna {0} si ya Kundi {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Karibu kwenye ERPNext, What do you need help with?,Unahitaji msaada gani?, What does it do?,Inafanya nini?, Where manufacturing operations are carried.,Ambapo shughuli za utengenezaji zinafanywa., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Wakati wa kuunda akaunti ya Kampuni ya watoto {0}, akaunti ya wazazi {1} haipatikani. Tafadhali unda akaunti ya mzazi katika COA inayolingana", White,Nyeupe, Wire Transfer,Uhamisho wa Wire, WooCommerce Products,Bidhaa za WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Anapenda, Merge with existing,Unganisha na zilizopo, Office,Ofisi, Orientation,Mwelekeo, +Parent,Mzazi, Passive,Passive, Payment Failed,Malipo Imeshindwa, Percent,Asilimia, @@ -3543,6 +3539,7 @@ Shift,Shift, Show {0},Onyesha {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Tabia maalum isipokuwa "-", "#", ".", "/", "{" Na "}" hairuhusiwi katika kutaja mfululizo", Target Details,Maelezo ya Lengo, +{0} already has a Parent Procedure {1}.,{0} tayari ina Utaratibu wa Mzazi {1}., API,API, Annual,Kila mwaka, Approved,Imekubaliwa, @@ -4241,7 +4238,6 @@ Download as JSON,Pakua kama JSON, End date can not be less than start date,Tarehe ya Mwisho haiwezi kuwa chini ya Tarehe ya Mwanzo, For Default Supplier (Optional),Kwa Default Supplier (hiari), From date cannot be greater than To date,Kutoka Tarehe haiwezi kuwa kubwa kuliko Tarehe, -Get items from,Pata vitu kutoka, Group by,Kikundi Kwa, In stock,Katika hisa, Item name,Jina la Kipengee, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Kigezo cha Kiolezo cha Maoni ya Ubora, Quality Goal,Lengo la ubora, Monitoring Frequency,Ufuatiliaji wa Mara kwa mara, Weekday,Siku ya wiki, -January-April-July-October,Januari-Aprili-Julai-Oktoba, -Revision and Revised On,Marekebisho na Marekebisho ya, -Revision,Marudio, -Revised On,Iliyorekebishwa On, Objectives,Malengo, Quality Goal Objective,Lengo la shabaha ya shabaha, Objective,Lengo, @@ -7574,7 +7566,6 @@ Parent Procedure,Utaratibu wa Mzazi, Processes,Michakato, Quality Procedure Process,Utaratibu wa Utaratibu wa Ubora, Process Description,Maelezo ya Mchakato, -Child Procedure,Utaratibu wa Mtoto, Link existing Quality Procedure.,Unganisha Utaratibu wa Ubora uliopo., Additional Information,Taarifa za ziada, Quality Review Objective,Lengo la uhakiki wa ubora, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Mwelekeo wa Utaratibu wa Ununuzi, Purchase Receipt Trends,Ununuzi Mwelekeo wa Receipt, Purchase Register,Daftari ya Ununuzi, Quotation Trends,Mwelekeo wa Nukuu, -Quoted Item Comparison,Ilipendekeza Kulinganishwa kwa Bidhaa, Received Items To Be Billed,Vipokee Vipokee vya Kulipwa, Qty to Order,Uchina kwa Amri, Requested Items To Be Transferred,Vitu Vilivyoombwa Ili Kuhamishwa, @@ -9091,7 +9081,6 @@ Unmarked days,Siku ambazo hazijatiwa alama, Absent Days,Siku ambazo hazipo, Conditions and Formula variable and example,Masharti na Mfumo kutofautiana na mfano, Feedback By,Maoni Na, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYYY .-. MM .-. DD-, Manufacturing Section,Sehemu ya Viwanda, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Kwa chaguo-msingi, Jina la Mteja linawekwa kulingana na Jina Kamili lililoingizwa. Ikiwa unataka Wateja watajwe na", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Sanidi Orodha ya Bei chaguomsingi wakati wa kuunda ununuzi mpya wa Mauzo. Bei ya bidhaa itachukuliwa kutoka kwenye Orodha hii ya Bei., @@ -9692,7 +9681,6 @@ Available Balance,Mizani Inayopatikana, Reserved Balance,Mizani iliyohifadhiwa, Uncleared Balance,Mizani Isiyoondolewa, Payment related to {0} is not completed,Malipo yanayohusiana na {0} hayajakamilika, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Mstari # {}: Nambari ya siri {}. {} tayari imeshughulikiwa kuwa Ankara nyingine ya POS. Tafadhali chagua nambari halali halali., Row #{}: Item Code: {} is not available under warehouse {}.,Mstari # {}: Msimbo wa Bidhaa: {} haipatikani chini ya ghala {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Mstari # {}: Idadi ya hisa haitoshi kwa Msimbo wa Bidhaa: {} chini ya ghala {} Kiasi kinachopatikana {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Mstari # {}: Tafadhali chagua nambari tupu na fungu dhidi ya bidhaa: {} au uiondoe ili kukamilisha muamala., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Kiasi hakipatikani kwa {0} katik Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Tafadhali wezesha Ruhusu Hisa hasi katika Mipangilio ya Hisa au unda Uingizaji wa Hisa ili kuendelea, No Inpatient Record found against patient {0},Hakuna Rekodi ya Wagonjwa Inayopatikana dhidi ya mgonjwa {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Amri ya Dawa ya Wagonjwa {0} dhidi ya Mkutano wa Wagonjwa {1} tayari ipo., +Allow In Returns,Ruhusu In Return, +Hide Unavailable Items,Ficha Vitu ambavyo havipatikani, +Apply Discount on Discounted Rate,Tumia Punguzo kwa Kiwango kilichopunguzwa, +Therapy Plan Template,Kigezo cha Mpango wa Tiba, +Fetching Template Details,Kuchota Maelezo ya Kiolezo, +Linked Item Details,Maelezo ya Bidhaa Iliyounganishwa, +Therapy Types,Aina za Tiba, +Therapy Plan Template Detail,Maelezo ya Kiolezo cha Mpango wa Tiba, +Non Conformance,Kutokubaliana, +Process Owner,Mchakato wa Mmiliki, +Corrective Action,Hatua ya Marekebisho, +Preventive Action,Hatua ya Kinga, +Problem,Shida, +Responsible,Kuwajibika, +Completion By,Kukamilisha Na, +Process Owner Full Name,Mchakato Jina la Kamili la Mmiliki, +Right Index,Kielelezo cha kulia, +Left Index,Kielelezo cha Kushoto, +Sub Procedure,Utaratibu mdogo, +Passed,Imepita, +Print Receipt,Risiti ya Kuchapisha, +Edit Receipt,Hariri Stakabadhi, +Focus on search input,Zingatia uingizaji wa utaftaji, +Focus on Item Group filter,Zingatia kichujio cha Kikundi cha Bidhaa, +Checkout Order / Submit Order / New Order,Agizo la Checkout / Tuma Agizo / Agizo Jipya, +Add Order Discount,Ongeza Punguzo la Agizo, +Item Code: {0} is not available under warehouse {1}.,Msimbo wa Bidhaa: {0} haipatikani chini ya ghala {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Nambari za mfululizo hazipatikani kwa Kipengee {0} chini ya ghala {1}. Tafadhali jaribu kubadilisha ghala., +Fetched only {0} available serial numbers.,Ilichukuliwa tu {0} nambari za serial zinazopatikana., +Switch Between Payment Modes,Badilisha kati ya Njia za Malipo, +Enter {0} amount.,Ingiza {0} kiasi., +You don't have enough points to redeem.,Huna alama za kutosha za kukomboa., +You can redeem upto {0}.,Unaweza kukomboa hadi {0}., +Enter amount to be redeemed.,Ingiza kiasi cha kukombolewa., +You cannot redeem more than {0}.,Huwezi kukomboa zaidi ya {0}., +Open Form View,Fungua Mwonekano wa Fomu, +POS invoice {0} created succesfully,Ankara ya POS {0} imeundwa kwa ufanisi, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Kiasi cha hisa hakitoshi kwa Msimbo wa Bidhaa: {0} chini ya ghala {1}. Kiasi kinachopatikana {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Nambari ya siri: {0} tayari imeshughulikiwa kuwa Ankara nyingine ya POS., +Balance Serial No,Mizani Serial Na, +Warehouse: {0} does not belong to {1},Ghala: {0} sio la {1}, +Please select batches for batched item {0},Tafadhali chagua mafungu ya kipengee kilichopigwa {0}, +Please select quantity on row {0},Tafadhali chagua wingi kwenye safu mlalo {0}, +Please enter serial numbers for serialized item {0},Tafadhali ingiza nambari za mfululizo za kipengee kilichoorodheshwa {0}, +Batch {0} already selected.,Kundi {0} tayari limechaguliwa., +Please select a warehouse to get available quantities,Tafadhali chagua ghala ili upate idadi inayopatikana, +"For transfer from source, selected quantity cannot be greater than available quantity","Kwa uhamisho kutoka kwa chanzo, idadi iliyochaguliwa haiwezi kuwa kubwa kuliko idadi inayopatikana", +Cannot find Item with this Barcode,Haiwezi kupata kipengee na Nambari hii ya Msimbo, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} ni lazima. Labda rekodi ya Sarafu haikuundwa kwa {1} hadi {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} imewasilisha mali iliyounganishwa nayo. Unahitaji kughairi mali ili urejeshe ununuzi., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Haiwezi kughairi waraka huu kwani umeunganishwa na kipengee kilichowasilishwa {0}. Tafadhali ighairi ili uendelee., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Mstari # {}: Nambari ya Siri {} tayari imeshughulikiwa kuwa Ankara nyingine ya POS. Tafadhali chagua nambari halali halali., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Mstari # {}: Nambari za Siri. {} Tayari imeshughulikiwa kuwa Ankara nyingine ya POS. Tafadhali chagua nambari halali halali., +Item Unavailable,Bidhaa Haipatikani, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Safu mlalo # {}: Nambari ya siri {} haiwezi kurejeshwa kwa kuwa haikufikiwa katika ankara halisi {}, +Please set default Cash or Bank account in Mode of Payment {},Tafadhali weka akaunti chaguomsingi ya Fedha au Benki katika Njia ya Malipo {}, +Please set default Cash or Bank account in Mode of Payments {},Tafadhali weka akaunti chaguomsingi ya Fedha au Benki katika Njia ya Malipo {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Tafadhali hakikisha {} akaunti ni Akaunti ya Mizani. Unaweza kubadilisha akaunti ya mzazi kuwa Akaunti ya Mizani au kuchagua akaunti tofauti., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Tafadhali hakikisha {} akaunti ni akaunti inayolipwa. Badilisha aina ya akaunti iwe ya kulipwa au chagua akaunti tofauti., +Row {}: Expense Head changed to {} ,Safu mlalo {}: Kichwa cha Gharama kimebadilishwa kuwa {}, +because account {} is not linked to warehouse {} ,kwa sababu akaunti {} haijaunganishwa na ghala {}, +or it is not the default inventory account,au sio akaunti ya hesabu chaguomsingi, +Expense Head Changed,Gharama Kichwa Kubadilishwa, +because expense is booked against this account in Purchase Receipt {},kwa sababu gharama zimehifadhiwa dhidi ya akaunti hii katika Stakabadhi ya Ununuzi {}, +as no Purchase Receipt is created against Item {}. ,kwani hakuna Stakabadhi ya Ununuzi iliyoundwa dhidi ya Bidhaa {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Hii imefanywa kushughulikia uhasibu wa kesi wakati Stakabadhi ya Ununuzi imeundwa baada ya Ankara ya Ununuzi, +Purchase Order Required for item {},Agizo la Ununuzi Linahitajika kwa bidhaa {}, +To submit the invoice without purchase order please set {} ,Ili kuwasilisha ankara bila agizo la ununuzi tafadhali weka {}, +as {} in {},kama {} katika {}, +Mandatory Purchase Order,Agizo la Ununuzi wa Lazima, +Purchase Receipt Required for item {},Risiti ya Ununuzi Inahitajika kwa kipengee {}, +To submit the invoice without purchase receipt please set {} ,Ili kuwasilisha ankara bila stakabadhi ya ununuzi tafadhali weka {}, +Mandatory Purchase Receipt,Stakabadhi ya Ununuzi wa Lazima, +POS Profile {} does not belongs to company {},Profaili ya POS {} sio ya kampuni {}, +User {} is disabled. Please select valid user/cashier,Mtumiaji {} amezimwa. Tafadhali chagua mtumiaji / mtunza fedha halali, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Safu mlalo # {}: Ankara halisi {} ya ankara ya kurudi {} ni {}., +Original invoice should be consolidated before or along with the return invoice.,Ankara halisi inapaswa kujumuishwa kabla au pamoja na ankara ya kurudi., +You can add original invoice {} manually to proceed.,Unaweza kuongeza ankara halisi {} mwenyewe ili kuendelea., +Please ensure {} account is a Balance Sheet account. ,Tafadhali hakikisha {} akaunti ni Akaunti ya Mizani., +You can change the parent account to a Balance Sheet account or select a different account.,Unaweza kubadilisha akaunti ya mzazi kuwa Akaunti ya Mizani au kuchagua akaunti tofauti., +Please ensure {} account is a Receivable account. ,Tafadhali hakikisha {} akaunti ni akaunti inayopokelewa., +Change the account type to Receivable or select a different account.,Badilisha aina ya akaunti iwe ya Kupokea au chagua akaunti tofauti., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} haiwezi kughairiwa kwa kuwa Pointi za Uaminifu zilizopatikana zimekombolewa. Kwanza ghairi {} Hapana {}, +already exists,tayari ipo, +POS Closing Entry {} against {} between selected period,Kuingia kwa POS {} dhidi ya {} kati ya kipindi kilichochaguliwa, +POS Invoice is {},Ankara ya POS ni {}, +POS Profile doesn't matches {},Profaili ya POS hailingani na {}, +POS Invoice is not {},Ankara ya POS sio {}, +POS Invoice isn't created by user {},Ankara ya POS haijaundwa na mtumiaji {}, +Row #{}: {},Safu mlalo # {}: {}, +Invalid POS Invoices,Ankara za POS batili, +Please add the account to root level Company - {},Tafadhali ongeza akaunti kwenye Kampuni ya kiwango cha mizizi - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Wakati wa kuunda akaunti ya Kampuni ya Mtoto {0}, akaunti ya mzazi {1} haikupatikana. Tafadhali fungua akaunti ya mzazi katika COA inayofanana", +Account Not Found,Akaunti Haikupatikana, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Wakati wa kuunda akaunti ya Kampuni ya Mtoto {0}, akaunti ya mzazi {1} inapatikana kama akaunti ya leja.", +Please convert the parent account in corresponding child company to a group account.,Tafadhali badilisha akaunti ya mzazi katika kampuni inayolingana ya watoto kuwa akaunti ya kikundi., +Invalid Parent Account,Akaunti ya Mzazi si sahihi, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Kubadilisha jina kunaruhusiwa tu kupitia kampuni mama {0}, ili kuepuka kufanana.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Ikiwa wewe {0} {1} idadi ya kipengee {2}, mpango {3} utatumika kwenye bidhaa hiyo.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Ikiwa wewe {0} {1} una thamani ya bidhaa {2}, mpango {3} utatumika kwenye bidhaa hiyo.", +"As the field {0} is enabled, the field {1} is mandatory.","Kama uwanja {0} umewezeshwa, sehemu {1} ni lazima.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Kama sehemu {0} imewezeshwa, thamani ya uwanja {1} inapaswa kuwa zaidi ya 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Haiwezi kutoa Nambari ya Siri {0} ya kipengee {1} kwani imehifadhiwa kujaza Agizo la Mauzo {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Agizo la Mauzo {0} limehifadhi nafasi ya bidhaa hiyo {1}, unaweza tu kuhifadhi {1} dhidi ya {0}.", +{0} Serial No {1} cannot be delivered,{0} No Serial {1} haiwezi kutolewa, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Safu mlalo {0}: Bidhaa iliyodhibitiwa ni lazima kwa malighafi {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Kwa kuwa kuna malighafi ya kutosha, Ombi la Nyenzo halihitajiki kwa Ghala {0}.", +" If you still want to proceed, please enable {0}.","Ikiwa bado unataka kuendelea, tafadhali washa {0}.", +The item referenced by {0} - {1} is already invoiced,Bidhaa iliyorejelewa na {0} - {1} tayari imetumwa ankara, +Therapy Session overlaps with {0},Kipindi cha Tiba hupishana na {0}, +Therapy Sessions Overlapping,Vikao vya Tiba vinaingiliana, +Therapy Plans,Mipango ya Tiba, +"Item Code, warehouse, quantity are required on row {0}","Nambari ya Bidhaa, ghala, idadi inahitajika kwenye safu mlalo {0}", +Get Items from Material Requests against this Supplier,Pata Vitu kutoka kwa Maombi ya Nyenzo dhidi ya Muuzaji huyu, +Enable European Access,Washa Ufikiaji wa Uropa, +Creating Purchase Order ...,Inaunda Agizo la Ununuzi ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Chagua Muuzaji kutoka kwa Wasambazaji Default wa vitu hapa chini. Wakati wa kuchagua, Agizo la Ununuzi litafanywa dhidi ya vitu vya Muuzaji aliyechaguliwa tu.", +Row #{}: You must select {} serial numbers for item {}.,Mstari # {}: Lazima uchague {} nambari za serial za kipengee {}., diff --git a/erpnext/translations/ta.csv b/erpnext/translations/ta.csv index ce5e947530..100f0e9300 100644 --- a/erpnext/translations/ta.csv +++ b/erpnext/translations/ta.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',வக Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',வகை 'மதிப்பீட்டு' அல்லது 'Vaulation மற்றும் மொத்த' க்கான போது கழித்து முடியாது, "Cannot delete Serial No {0}, as it is used in stock transactions","நீக்க முடியாது தொ.எ. {0}, அது பங்கு பரிவர்த்தனைகள் பயன்படுத்தப்படும் விதத்தில்", Cannot enroll more than {0} students for this student group.,{0} இந்த மாணவர் குழு மாணவர்கள் விட சேர முடியாது., -Cannot find Item with this barcode,இந்த பார்கோடு மூலம் உருப்படியைக் கண்டுபிடிக்க முடியவில்லை, Cannot find active Leave Period,செயலில் விடுப்பு காலம் கண்டுபிடிக்க முடியவில்லை, Cannot produce more Item {0} than Sales Order quantity {1},மேலும் பொருள் தயாரிக்க முடியாது {0} விட விற்பனை ஆணை அளவு {1}, Cannot promote Employee with status Left,பணியாளர் நிலையை நிலை இடது பக்கம் ஊக்குவிக்க முடியாது, @@ -690,7 +689,6 @@ Create Variants,வகைகள் உருவாக்க, "Create and manage daily, weekly and monthly email digests.","உருவாக்கவும் , தினசரி வாராந்திர மற்றும் மாதாந்திர மின்னஞ்சல் சுருக்கங்களின் நிர்வகிக்க .", Create customer quotes,வாடிக்கையாளர் மேற்கோள் உருவாக்கவும், Create rules to restrict transactions based on values.,மதிப்புகள் அடிப்படையில் நடவடிக்கைகளை கட்டுப்படுத்த விதிகளை உருவாக்க ., -Created By,மூலம் உருவாக்கப்பட்டது, Created {0} scorecards for {1} between: ,{0} க்கு இடையே {0} ஸ்கோட்கார்டுகள் உருவாக்கப்பட்டது:, Creating Company and Importing Chart of Accounts,நிறுவனத்தை உருவாக்குதல் மற்றும் கணக்குகளின் இறக்குமதி, Creating Fees,கட்டணம் உருவாக்குதல், @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,கிடங்கு தேவையா For row {0}: Enter Planned Qty,வரிசையில் {0}: திட்டமிட்ட qty ஐ உள்ளிடவும், "For {0}, only credit accounts can be linked against another debit entry",{0} மட்டுமே கடன் கணக்குகள் மற்றொரு பற்று நுழைவு எதிராக இணைக்கப்பட்ட ஐந்து, "For {0}, only debit accounts can be linked against another credit entry",{0} மட்டுமே டெபிட் கணக்குகள் மற்றொரு கடன் நுழைவு எதிராக இணைக்கப்பட்ட ஐந்து, -Form View,படிவம் காட்சி, Forum Activity,கருத்துக்களம் செயல்பாடு, Free item code is not selected,இலவச உருப்படி குறியீடு தேர்ந்தெடுக்கப்படவில்லை, Freight and Forwarding Charges,சரக்கு மற்றும் அனுப்புதல் கட்டணம், @@ -2638,7 +2635,6 @@ Send SMS,எஸ்எம்எஸ் அனுப்ப, Send mass SMS to your contacts,உங்கள் தொடர்புகள் வெகுஜன எஸ்எம்எஸ் அனுப்ப, Sensitivity,உணர்திறன், Sent,அனுப்பப்பட்டது, -Serial #,தொடர் #, Serial No and Batch,தொ.எ. மற்றும் தொகுதி, Serial No is mandatory for Item {0},சீரியல் இல்லை பொருள் கட்டாய {0}, Serial No {0} does not belong to Batch {1},சீரியல் இல்லை {0} தொகுதி {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ERPNext வரவேற்கிறோம், What do you need help with?,உனக்கு என்ன உதவி வேண்டும்?, What does it do?,அது என்ன?, Where manufacturing operations are carried.,உற்பத்தி இயக்கங்களை எங்கே கொண்டுவரப்படுகின்றன., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","குழந்தை நிறுவனத்தின் கணக்கை உருவாக்கும்போது {0}, பெற்றோர் கணக்கு {1} இல்லை. தயவுசெய்து பெற்றோரின் கணக்கை ஒத்த COA இல் உருவாக்கவும்", White,வெள்ளை, Wire Transfer,வயர் மாற்றம், WooCommerce Products,WooCommerce தயாரிப்புகள், @@ -3493,6 +3488,7 @@ Likes,விருப்பு, Merge with existing,இருக்கும் இணைவதற்கு, Office,அலுவலகம், Orientation,திசை, +Parent,பெற்றோர், Passive,மந்தமான, Payment Failed,கொடுப்பனவு தோல்வி, Percent,சதவீதம், @@ -3543,6 +3539,7 @@ Shift,ஷிப்ட், Show {0},{0 Show ஐக் காட்டு, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",""-", "#", ".", "/", "{" மற்றும் "}" தவிர சிறப்பு எழுத்துக்கள் பெயரிடும் தொடரில் அனுமதிக்கப்படவில்லை", Target Details,இலக்கு விவரங்கள், +{0} already has a Parent Procedure {1}.,{0} ஏற்கனவே பெற்றோர் நடைமுறை {1 has ஐக் கொண்டுள்ளது., API,ஏபிஐ, Annual,வருடாந்திர, Approved,ஏற்பளிக்கப்பட்ட, @@ -4241,7 +4238,6 @@ Download as JSON,JSON ஆக பதிவிறக்கவும், End date can not be less than start date,முடிவு தேதி தொடங்கும் நாள் விட குறைவாக இருக்க முடியாது, For Default Supplier (Optional),இயல்புநிலை வழங்குநருக்கு (விரும்பினால்), From date cannot be greater than To date,தேதி முதல் இன்று வரை விட முடியாது, -Get items from,இருந்து பொருட்களை பெற, Group by,குழு மூலம், In stock,கையிருப்பில், Item name,பொருள் பெயர், @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,தரமான கருத்து வா Quality Goal,தர இலக்கு, Monitoring Frequency,கண்காணிப்பு அதிர்வெண், Weekday,வாரநாள், -January-April-July-October,ஜனவரி-ஏப்ரல்-ஜூலை-அக்டோபர், -Revision and Revised On,திருத்தம் மற்றும் திருத்தப்பட்டது, -Revision,மறுபார்வை, -Revised On,திருத்தப்பட்டது, Objectives,நோக்கங்கள், Quality Goal Objective,தர இலக்கு குறிக்கோள், Objective,குறிக்கோள், @@ -7574,7 +7566,6 @@ Parent Procedure,பெற்றோர் நடைமுறை, Processes,செயல்முறைகள், Quality Procedure Process,தர நடைமுறை செயல்முறை, Process Description,செயல்முறை விளக்கம், -Child Procedure,குழந்தை நடைமுறை, Link existing Quality Procedure.,இருக்கும் தர நடைமுறைகளை இணைக்கவும்., Additional Information,கூடுதல் தகவல், Quality Review Objective,தர மதிப்பாய்வு குறிக்கோள், @@ -8557,7 +8548,6 @@ Purchase Order Trends,ஆர்டர் போக்குகள் வா Purchase Receipt Trends,ரிசிப்ட் போக்குகள் வாங்குவதற்கு, Purchase Register,பதிவு வாங்குவதற்கு, Quotation Trends,மேற்கோள் போக்குகள், -Quoted Item Comparison,மேற்கோள் காட்டப்பட்டது பொருள் ஒப்பீட்டு, Received Items To Be Billed,கட்டணம் பெறப்படும் பொருட்கள், Qty to Order,அளவு ஒழுங்கிற்கு, Requested Items To Be Transferred,மாற்றப்படுவதற்கு கோரப்பட்ட விடயங்கள், @@ -9091,7 +9081,6 @@ Unmarked days,குறிக்கப்படாத நாட்கள், Absent Days,இல்லாத நாட்கள், Conditions and Formula variable and example,நிபந்தனைகள் மற்றும் ஃபார்முலா மாறி மற்றும் எடுத்துக்காட்டு, Feedback By,மூலம் கருத்து, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,உற்பத்தி பிரிவு, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","இயல்பாக, உள்ளிட்ட முழு பெயரின் படி வாடிக்கையாளர் பெயர் அமைக்கப்படுகிறது. வாடிக்கையாளர்களின் பெயரை நீங்கள் விரும்பினால் a", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,புதிய விற்பனை பரிவர்த்தனையை உருவாக்கும்போது இயல்புநிலை விலை பட்டியலை உள்ளமைக்கவும். இந்த விலை பட்டியலிலிருந்து பொருள் விலைகள் பெறப்படும்., @@ -9692,7 +9681,6 @@ Available Balance,வங்கி கணக்கில் மிச்சம் Reserved Balance,ஒதுக்கப்பட்ட இருப்பு, Uncleared Balance,தெளிவற்ற இருப்பு, Payment related to {0} is not completed,{0 to தொடர்பான கட்டணம் முடிக்கப்படவில்லை, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,வரிசை # {}: வரிசை எண் {}. P already ஏற்கனவே மற்றொரு பிஓஎஸ் விலைப்பட்டியலில் பரிவர்த்தனை செய்யப்பட்டுள்ளது. செல்லுபடியாகும் சீரியல் எண் என்பதைத் தேர்ந்தெடுக்கவும்., Row #{}: Item Code: {} is not available under warehouse {}.,வரிசை # {}: பொருள் குறியீடு: w w கிடங்கின் கீழ் கிடைக்காது {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,வரிசை # {}: பொருள் குறியீட்டிற்கு பங்கு அளவு போதாது: ware w கிடங்கின் கீழ் {}. கிடைக்கும் அளவு {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,வரிசை # {}: தயவுசெய்து ஒரு வரிசை எண் ஒன்றைத் தேர்ந்தெடுத்து உருப்படிக்கு எதிராகத் தொகுக்கவும்: {} அல்லது பரிவர்த்தனை முடிக்க அதை அகற்றவும்., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},கிடங்கில் {0 f Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,பங்கு அமைப்புகளில் எதிர்மறை பங்குகளை அனுமதிக்க தயவுசெய்து தொடரவும் அல்லது தொடர பங்கு உள்ளீட்டை உருவாக்கவும்., No Inpatient Record found against patient {0},நோயாளிக்கு எதிராக உள்நோயாளிகள் பதிவு எதுவும் இல்லை {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,நோயாளி சந்திப்பு {1 against க்கு எதிராக உள்நோயாளி மருந்து ஆணை {0 already ஏற்கனவே உள்ளது., +Allow In Returns,வருமானத்தில் அனுமதி, +Hide Unavailable Items,கிடைக்காத உருப்படிகளை மறைக்க, +Apply Discount on Discounted Rate,தள்ளுபடி விகிதத்தில் தள்ளுபடியைப் பயன்படுத்துங்கள், +Therapy Plan Template,சிகிச்சை திட்டம் வார்ப்புரு, +Fetching Template Details,வார்ப்புரு விவரங்களைப் பெறுதல், +Linked Item Details,இணைக்கப்பட்ட பொருள் விவரங்கள், +Therapy Types,சிகிச்சை வகைகள், +Therapy Plan Template Detail,சிகிச்சை திட்டம் வார்ப்புரு விவரம், +Non Conformance,இணக்கமற்றது, +Process Owner,செயல்முறை உரிமையாளர், +Corrective Action,சரியான நடவடிக்கை, +Preventive Action,தடுப்பு நடவடிக்கை, +Problem,பிரச்சனை, +Responsible,பொறுப்பு, +Completion By,மூலம் நிறைவு, +Process Owner Full Name,செயல்முறை உரிமையாளர் முழு பெயர், +Right Index,சரியான அட்டவணை, +Left Index,இடது அட்டவணை, +Sub Procedure,துணை நடைமுறை, +Passed,தேர்ச்சி பெற்றது, +Print Receipt,ரசீது அச்சிடுக, +Edit Receipt,ரசீதைத் திருத்து, +Focus on search input,தேடல் உள்ளீட்டில் கவனம் செலுத்துங்கள், +Focus on Item Group filter,உருப்படி குழு வடிப்பானில் கவனம் செலுத்துங்கள், +Checkout Order / Submit Order / New Order,புதுப்பித்து ஆணை / சமர்ப்பிக்கும் ஆணை / புதிய ஆர்டர், +Add Order Discount,ஆர்டர் தள்ளுபடி சேர்க்கவும், +Item Code: {0} is not available under warehouse {1}.,பொருள் குறியீடு: கிடங்கு {1 under இன் கீழ் {0} கிடைக்கவில்லை., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,கிடங்கு {1 under இன் கீழ் உருப்படி {0 for க்கு வரிசை எண்கள் கிடைக்கவில்லை. கிடங்கை மாற்ற முயற்சிக்கவும்., +Fetched only {0} available serial numbers.,{0} கிடைக்கும் வரிசை எண்களை மட்டுமே பெற்றது., +Switch Between Payment Modes,கட்டண முறைகளுக்கு இடையில் மாறவும், +Enter {0} amount.,{0} தொகையை உள்ளிடவும்., +You don't have enough points to redeem.,மீட்டெடுக்க உங்களுக்கு போதுமான புள்ளிகள் இல்லை., +You can redeem upto {0}.,நீங்கள் {0 to வரை மீட்டெடுக்கலாம்., +Enter amount to be redeemed.,மீட்டெடுக்க வேண்டிய தொகையை உள்ளிடவும்., +You cannot redeem more than {0}.,நீங்கள் {0 than க்கு மேல் மீட்டெடுக்க முடியாது., +Open Form View,படிவக் காட்சியைத் திறக்கவும், +POS invoice {0} created succesfully,பிஓஎஸ் விலைப்பட்டியல் {0 Suc வெற்றிகரமாக உருவாக்கப்பட்டது, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,பொருள் குறியீட்டிற்கு பங்கு அளவு போதாது: கிடங்கு {1 under இன் கீழ் {0}. கிடைக்கும் அளவு {2}., +Serial No: {0} has already been transacted into another POS Invoice.,வரிசை எண்: P 0 already ஏற்கனவே மற்றொரு பிஓஎஸ் விலைப்பட்டியலில் பரிவர்த்தனை செய்யப்பட்டுள்ளது., +Balance Serial No,இருப்பு வரிசை எண், +Warehouse: {0} does not belong to {1},கிடங்கு: {0} {1 to க்கு சொந்தமானது அல்ல, +Please select batches for batched item {0},தொகுக்கப்பட்ட உருப்படி for 0 for க்கான தொகுப்புகளைத் தேர்ந்தெடுக்கவும், +Please select quantity on row {0},{0 row வரிசையில் அளவைத் தேர்ந்தெடுக்கவும், +Please enter serial numbers for serialized item {0},வரிசைப்படுத்தப்பட்ட உருப்படி {0 for க்கு வரிசை எண்களை உள்ளிடவும், +Batch {0} already selected.,தொகுதி {0} ஏற்கனவே தேர்ந்தெடுக்கப்பட்டது., +Please select a warehouse to get available quantities,கிடைக்கக்கூடிய அளவைப் பெற தயவுசெய்து ஒரு கிடங்கைத் தேர்ந்தெடுக்கவும், +"For transfer from source, selected quantity cannot be greater than available quantity","மூலத்திலிருந்து மாற்றுவதற்கு, தேர்ந்தெடுக்கப்பட்ட அளவு கிடைக்கக்கூடிய அளவை விட அதிகமாக இருக்கக்கூடாது", +Cannot find Item with this Barcode,இந்த பார்கோடு மூலம் உருப்படியைக் கண்டுபிடிக்க முடியவில்லை, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} கட்டாயமாகும். நாணய பரிவர்த்தனை பதிவு {1} முதல் {2 for வரை உருவாக்கப்படவில்லை, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,with with அதனுடன் இணைக்கப்பட்ட சொத்துக்களை சமர்ப்பித்துள்ளது. கொள்முதல் வருவாயை உருவாக்க நீங்கள் சொத்துக்களை ரத்து செய்ய வேண்டும்., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,சமர்ப்பிக்கப்பட்ட சொத்து {0 with உடன் இணைக்கப்பட்டுள்ளதால் இந்த ஆவணத்தை ரத்து செய்ய முடியாது. தொடர அதை ரத்துசெய்க., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,வரிசை # {}: வரிசை எண் {another ஏற்கனவே மற்றொரு பிஓஎஸ் விலைப்பட்டியலில் பரிவர்த்தனை செய்யப்பட்டுள்ளது. செல்லுபடியாகும் சீரியல் எண் என்பதைத் தேர்ந்தெடுக்கவும்., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,வரிசை # {}: வரிசை எண்.} Already ஏற்கனவே மற்றொரு பிஓஎஸ் விலைப்பட்டியலில் பரிவர்த்தனை செய்யப்பட்டுள்ளது. செல்லுபடியாகும் சீரியல் எண் என்பதைத் தேர்ந்தெடுக்கவும்., +Item Unavailable,பொருள் கிடைக்கவில்லை, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},வரிசை # {}: அசல் விலைப்பட்டியலில் பரிவர்த்தனை செய்யப்படாததால் வரிசை எண் {return ஐ திருப்பித் தர முடியாது {}, +Please set default Cash or Bank account in Mode of Payment {},இயல்புநிலை ரொக்கம் அல்லது வங்கி கணக்கை கட்டண முறையில் அமைக்கவும் {}, +Please set default Cash or Bank account in Mode of Payments {},இயல்புநிலை ரொக்கம் அல்லது வங்கி கணக்கை பணம் செலுத்தும் முறையில் அமைக்கவும்}}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,{} கணக்கு இருப்புநிலைக் கணக்கு என்பதை உறுதிப்படுத்தவும். நீங்கள் பெற்றோர் கணக்கை இருப்புநிலைக் கணக்காக மாற்றலாம் அல்லது வேறு கணக்கைத் தேர்ந்தெடுக்கலாம்., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,{} கணக்கு செலுத்த வேண்டிய கணக்கு என்பதை உறுதிப்படுத்தவும். செலுத்த வேண்டிய கணக்கு வகையை மாற்றவும் அல்லது வேறு கணக்கைத் தேர்ந்தெடுக்கவும்., +Row {}: Expense Head changed to {} ,வரிசை {}: செலவுத் தலை {to ஆக மாற்றப்பட்டது, +because account {} is not linked to warehouse {} ,ஏனெனில் கணக்கு} w கிடங்குடன் இணைக்கப்படவில்லை}}, +or it is not the default inventory account,அல்லது அது இயல்புநிலை சரக்கு கணக்கு அல்ல, +Expense Head Changed,செலவு தலை மாற்றப்பட்டது, +because expense is booked against this account in Purchase Receipt {},ஏனெனில் கொள்முதல் ரசீதில் இந்த கணக்கிற்கு எதிராக செலவு பதிவு செய்யப்பட்டுள்ளது}}, +as no Purchase Receipt is created against Item {}. ,உருப்படி against against க்கு எதிராக எந்த கொள்முதல் ரசீதும் உருவாக்கப்படவில்லை என்பதால்., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,கொள்முதல் விலைப்பட்டியலுக்குப் பிறகு கொள்முதல் ரசீது உருவாக்கப்படும் போது வழக்குகளுக்கான கணக்கீட்டைக் கையாள இது செய்யப்படுகிறது, +Purchase Order Required for item {},உருப்படி for} க்கு கொள்முதல் ஆணை தேவை, +To submit the invoice without purchase order please set {} ,கொள்முதல் ஆணை இல்லாமல் விலைப்பட்டியல் சமர்ப்பிக்க தயவுசெய்து set set ஐ அமைக்கவும், +as {} in {},{} இல் {as என, +Mandatory Purchase Order,கட்டாய கொள்முதல் ஆணை, +Purchase Receipt Required for item {},Item item உருப்படிக்கு கொள்முதல் ரசீது தேவை, +To submit the invoice without purchase receipt please set {} ,கொள்முதல் ரசீது இல்லாமல் விலைப்பட்டியல் சமர்ப்பிக்க தயவுசெய்து set set ஐ அமைக்கவும், +Mandatory Purchase Receipt,கட்டாய கொள்முதல் ரசீது, +POS Profile {} does not belongs to company {},POS சுயவிவரம் company company நிறுவனத்திற்கு சொந்தமானது அல்ல}}, +User {} is disabled. Please select valid user/cashier,பயனர்} disabled முடக்கப்பட்டுள்ளது. செல்லுபடியாகும் பயனர் / காசாளரைத் தேர்ந்தெடுக்கவும், +Row #{}: Original Invoice {} of return invoice {} is {}. ,வரிசை # {}: வருவாய் விலைப்பட்டியலின் அசல் விலைப்பட்டியல் {} {}., +Original invoice should be consolidated before or along with the return invoice.,அசல் விலைப்பட்டியல் வருவாய் விலைப்பட்டியலுக்கு முன் அல்லது அதனுடன் ஒருங்கிணைக்கப்பட வேண்டும்., +You can add original invoice {} manually to proceed.,தொடர அசல் விலைப்பட்டியல்}} கைமுறையாக சேர்க்கலாம்., +Please ensure {} account is a Balance Sheet account. ,{} கணக்கு இருப்புநிலைக் கணக்கு என்பதை உறுதிப்படுத்தவும்., +You can change the parent account to a Balance Sheet account or select a different account.,நீங்கள் பெற்றோர் கணக்கை இருப்புநிலைக் கணக்காக மாற்றலாம் அல்லது வேறு கணக்கைத் தேர்ந்தெடுக்கலாம்., +Please ensure {} account is a Receivable account. ,{} கணக்கு பெறத்தக்க கணக்கு என்பதை உறுதிப்படுத்தவும்., +Change the account type to Receivable or select a different account.,கணக்கு வகையை பெறத்தக்கதாக மாற்றவும் அல்லது வேறு கணக்கைத் தேர்ந்தெடுக்கவும்., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},சம்பாதித்த விசுவாச புள்ளிகள் மீட்டெடுக்கப்பட்டதால்} cancel ரத்து செய்ய முடியாது. முதலில் {} இல்லை {cancel ஐ ரத்துசெய், +already exists,ஏற்கனவே இருக்கிறது, +POS Closing Entry {} against {} between selected period,தேர்ந்தெடுக்கப்பட்ட காலத்திற்கு இடையில் POS} க்கு எதிராக POS மூடல் நுழைவு, +POS Invoice is {},பிஓஎஸ் விலைப்பட்டியல் {}, +POS Profile doesn't matches {},POS சுயவிவரம் பொருந்தவில்லை {}, +POS Invoice is not {},பிஓஎஸ் விலைப்பட்டியல் {not அல்ல, +POS Invoice isn't created by user {},POS விலைப்பட்டியல் பயனரால் உருவாக்கப்படவில்லை {}, +Row #{}: {},வரிசை # {}: {}, +Invalid POS Invoices,தவறான பிஓஎஸ் விலைப்பட்டியல், +Please add the account to root level Company - {},ரூட் லெவல் நிறுவனத்தில் கணக்கைச் சேர்க்கவும் - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","குழந்தை நிறுவனம் {0 for க்கான கணக்கை உருவாக்கும் போது, பெற்றோர் கணக்கு {1 found காணப்படவில்லை. தொடர்புடைய COA இல் பெற்றோர் கணக்கை உருவாக்கவும்", +Account Not Found,கணக்கு கிடைக்கவில்லை, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","குழந்தை நிறுவனம் {0 for க்கான கணக்கை உருவாக்கும் போது, பெற்றோர் கணக்கு {1 a ஒரு லெட்ஜர் கணக்காகக் காணப்படுகிறது.", +Please convert the parent account in corresponding child company to a group account.,தொடர்புடைய குழந்தை நிறுவனத்தில் பெற்றோர் கணக்கை குழு கணக்காக மாற்றவும்., +Invalid Parent Account,தவறான பெற்றோர் கணக்கு, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","பொருந்தாததைத் தவிர்க்க, மறுபெயரிடுவது பெற்றோர் நிறுவனம் {0 via வழியாக மட்டுமே அனுமதிக்கப்படுகிறது.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","நீங்கள் {2} உருப்படியின் {0} {1} அளவு என்றால், {3 the திட்டம் உருப்படியில் பயன்படுத்தப்படும்.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","நீங்கள் {0} {1} மதிப்புள்ள உருப்படி {2 If என்றால், {3 the திட்டம் உருப்படிக்கு பயன்படுத்தப்படும்.", +"As the field {0} is enabled, the field {1} is mandatory.","புலம் {0} இயக்கப்பட்டிருப்பதால், {1 field புலம் கட்டாயமாகும்.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","புலம் {0} இயக்கப்பட்டிருப்பதால், {1 the புலத்தின் மதிப்பு 1 ஐ விட அதிகமாக இருக்க வேண்டும்.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"{1 item உருப்படியின் வரிசை எண் {0 deliver ஐ வழங்க முடியாது, ஏனெனில் இது விற்பனை நிரப்புதல் {2 full", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","விற்பனை ஆணை {0 the உருப்படிக்கு முன்பதிவு {1}, நீங்கள் ஒதுக்கப்பட்ட {1} ஐ {0 against க்கு எதிராக மட்டுமே வழங்க முடியும்.", +{0} Serial No {1} cannot be delivered,{0} வரிசை எண் {1 delivery வழங்க முடியாது, +Row {0}: Subcontracted Item is mandatory for the raw material {1},வரிசை {0}: மூலப்பொருள் {1 for க்கு துணை ஒப்பந்தம் செய்யப்பட்ட பொருள் கட்டாயமாகும், +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","போதுமான மூலப்பொருட்கள் இருப்பதால், கிடங்கு {0 for க்கு பொருள் கோரிக்கை தேவையில்லை.", +" If you still want to proceed, please enable {0}.","நீங்கள் இன்னும் தொடர விரும்பினால், தயவுசெய்து {0 enable ஐ இயக்கவும்.", +The item referenced by {0} - {1} is already invoiced,{0} - {1 by ஆல் குறிப்பிடப்பட்ட உருப்படி ஏற்கனவே விலைப்பட்டியல், +Therapy Session overlaps with {0},சிகிச்சை அமர்வு {0 with உடன் ஒன்றுடன் ஒன்று, +Therapy Sessions Overlapping,சிகிச்சை அமர்வுகள் ஒன்றுடன் ஒன்று, +Therapy Plans,சிகிச்சை திட்டங்கள், +"Item Code, warehouse, quantity are required on row {0}","Code 0 row வரிசையில் உருப்படி குறியீடு, கிடங்கு, அளவு தேவை", +Get Items from Material Requests against this Supplier,இந்த சப்ளையருக்கு எதிரான பொருள் கோரிக்கைகளிலிருந்து பொருட்களைப் பெறுங்கள், +Enable European Access,ஐரோப்பிய அணுகலை இயக்கு, +Creating Purchase Order ...,கொள்முதல் ஆணையை உருவாக்குதல் ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","கீழே உள்ள பொருட்களின் இயல்புநிலை சப்ளையர்களிடமிருந்து ஒரு சப்ளையரைத் தேர்ந்தெடுக்கவும். தேர்ந்தெடுக்கும் போது, தேர்ந்தெடுக்கப்பட்ட சப்ளையருக்கு மட்டுமே சொந்தமான பொருட்களுக்கு எதிராக கொள்முதல் ஆணை செய்யப்படும்.", +Row #{}: You must select {} serial numbers for item {}.,வரிசை # {}: நீங்கள் item item உருப்படிக்கு {} வரிசை எண்களைத் தேர்ந்தெடுக்க வேண்டும்., diff --git a/erpnext/translations/te.csv b/erpnext/translations/te.csv index f3fd61d2e5..047d07731e 100644 --- a/erpnext/translations/te.csv +++ b/erpnext/translations/te.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',వర Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',వర్గం 'మదింపు' లేదా 'Vaulation మరియు మొత్తం' కోసం ఉన్నప్పుడు తీసివేయు కాదు, "Cannot delete Serial No {0}, as it is used in stock transactions","తొలగించలేరు సీరియల్ లేవు {0}, ఇది స్టాక్ లావాదేవీలు ఉపయోగిస్తారు వంటి", Cannot enroll more than {0} students for this student group.,{0} ఈ విద్యార్థి సమూహం కోసం విద్యార్థులు కంటే మరింత నమోదు చేయలేరు., -Cannot find Item with this barcode,ఈ బార్కోడ్తో అంశం కనుగొనబడలేదు, Cannot find active Leave Period,క్రియాశీల సెలవు సమయాన్ని కనుగొనలేకపోయాము, Cannot produce more Item {0} than Sales Order quantity {1},అమ్మకాల ఆర్డర్ పరిమాణం కంటే ఎక్కువ అంశం {0} ఉత్పత్తి కాదు {1}, Cannot promote Employee with status Left,స్థితి ఎడమవైపు ఉద్యోగిని ప్రోత్సహించలేరు, @@ -690,7 +689,6 @@ Create Variants,వైవిధ్యాలను సృష్టించండ "Create and manage daily, weekly and monthly email digests.",సృష్టించు మరియు రోజువారీ వార మరియు నెలసరి ఇమెయిల్ Digests నిర్వహించండి., Create customer quotes,కస్టమర్ కోట్స్ సృష్టించు, Create rules to restrict transactions based on values.,విలువలు ఆధారంగా లావాదేవీలు పరిమితం చేయడానికి నిబంధనలు సృష్టించు., -Created By,రూపొందించినవారు, Created {0} scorecards for {1} between: ,{0} కోసం {0} స్కోర్కార్డ్లు సృష్టించబడ్డాయి:, Creating Company and Importing Chart of Accounts,కంపెనీని సృష్టించడం మరియు ఖాతాల చార్ట్ దిగుమతి, Creating Fees,రుసుము సృష్టిస్తోంది, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,వేర్హౌస్ కోసం For row {0}: Enter Planned Qty,వరుస కోసం {0}: అనుకున్న qty ను నమోదు చేయండి, "For {0}, only credit accounts can be linked against another debit entry","{0}, కేవలం క్రెడిట్ ఖాతాల మరొక డెబిట్ ప్రవేశం వ్యతిరేకంగా లింక్ చేయవచ్చు కోసం", "For {0}, only debit accounts can be linked against another credit entry","{0}, మాత్రమే డెబిట్ ఖాతాల మరో క్రెడిట్ ప్రవేశానికి వ్యతిరేకంగా లింక్ చేయవచ్చు కోసం", -Form View,ఫారమ్ వీక్షణ, Forum Activity,ఫోరం కార్యాచరణ, Free item code is not selected,ఉచిత అంశం కోడ్ ఎంచుకోబడలేదు, Freight and Forwarding Charges,ఫ్రైట్ మరియు ఫార్వార్డింగ్ ఛార్జీలు, @@ -2638,7 +2635,6 @@ Send SMS,SMS పంపండి, Send mass SMS to your contacts,మాస్ SMS మీ పరిచయాలను పంపండి, Sensitivity,సున్నితత్వం, Sent,పంపిన, -Serial #,సీరియల్ #, Serial No and Batch,సీరియల్ లేవు మరియు బ్యాచ్, Serial No is mandatory for Item {0},సీరియల్ అంశం ఏదీ తప్పనిసరి {0}, Serial No {0} does not belong to Batch {1},సీరియల్ సంఖ్య {0 B బ్యాచ్ {1 to కి చెందినది కాదు, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ERPNext కు స్వాగతం, What do you need help with?,ఏం మీరు సహాయం చేయాలి?, What does it do?,ఇది ఏమి చేస్తుంది?, Where manufacturing operations are carried.,ఉత్పాదక కార్యకలాపాల ఎక్కడ నిర్వహిస్తున్నారు., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","పిల్లల కంపెనీ {0} కోసం ఖాతాని సృష్టించినప్పుడు, పేరెంట్ ఖాతా {1} దొరకలేదు. దయచేసి సంబంధిత COA లో తల్లిదండ్రుల ఖాతాను సృష్టించండి", White,వైట్, Wire Transfer,వైర్ ట్రాన్స్ఫర్, WooCommerce Products,WooCommerce ఉత్పత్తులు, @@ -3493,6 +3488,7 @@ Likes,ఇష్టాలు, Merge with existing,ఇప్పటికే విలీనం, Office,ఆఫీసు, Orientation,దిశ, +Parent,మాతృ, Passive,నిష్క్రియాత్మక, Payment Failed,చెల్లింపు విఫలమైంది, Percent,శాతం, @@ -3543,6 +3539,7 @@ Shift,మార్పు, Show {0},{0 Show చూపించు, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",""-", "#", ".", "/", "{" మరియు "}" మినహా ప్రత్యేక అక్షరాలు పేరు పెట్టే సిరీస్‌లో అనుమతించబడవు", Target Details,లక్ష్య వివరాలు, +{0} already has a Parent Procedure {1}.,{0} ఇప్పటికే తల్లిదండ్రుల విధానం {1 has ను కలిగి ఉంది., API,API, Annual,వార్షిక, Approved,ఆమోదించబడింది, @@ -4241,7 +4238,6 @@ Download as JSON,JSON గా డౌన్‌లోడ్ చేయండి, End date can not be less than start date,ముగింపు తేదీ ప్రారంభ తేదీ కంటే తక్కువ ఉండకూడదు, For Default Supplier (Optional),డిఫాల్ట్ సరఫరాదారు (ఐచ్ఛిక) కోసం, From date cannot be greater than To date,తేదీ నుండి తేదీ వరకు ఎక్కువ ఉండకూడదు, -Get items from,నుండి అంశాలను పొందండి, Group by,గ్రూప్ ద్వారా, In stock,అందుబాటులో ఉంది, Item name,అంశం పేరు, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,నాణ్యమైన అభిప్ర Quality Goal,నాణ్యమైన లక్ష్యం, Monitoring Frequency,పర్యవేక్షణ ఫ్రీక్వెన్సీ, Weekday,వారపు, -January-April-July-October,జనవరి-ఏప్రిల్-జూలై-అక్టోబర్, -Revision and Revised On,పునర్విమర్శ మరియు సవరించబడింది, -Revision,పునర్విమర్శ, -Revised On,సవరించబడింది, Objectives,లక్ష్యాలు, Quality Goal Objective,నాణ్యత లక్ష్యం లక్ష్యం, Objective,ఆబ్జెక్టివ్, @@ -7574,7 +7566,6 @@ Parent Procedure,తల్లిదండ్రుల విధానం, Processes,ప్రాసెసెస్, Quality Procedure Process,నాణ్యమైన విధాన ప్రక్రియ, Process Description,ప్రాసెస్ వివరణ, -Child Procedure,పిల్లల విధానం, Link existing Quality Procedure.,ఇప్పటికే ఉన్న నాణ్యతా విధానాన్ని లింక్ చేయండి., Additional Information,అదనపు సమాచారం, Quality Review Objective,నాణ్యత సమీక్ష లక్ష్యం, @@ -8557,7 +8548,6 @@ Purchase Order Trends,ఆర్డర్ ట్రెండ్లులో క Purchase Receipt Trends,కొనుగోలు రసీదులు ట్రెండ్లులో, Purchase Register,కొనుగోలు నమోదు, Quotation Trends,కొటేషన్ ట్రెండ్లులో, -Quoted Item Comparison,ఉల్లేఖించిన అంశం పోలిక, Received Items To Be Billed,స్వీకరించిన అంశాలు బిల్ టు, Qty to Order,ఆర్డర్ చేయటం అంశాల, Requested Items To Be Transferred,అభ్యర్థించిన అంశాలు బదిలీ, @@ -9091,7 +9081,6 @@ Unmarked days,గుర్తు తెలియని రోజులు, Absent Days,లేని రోజులు, Conditions and Formula variable and example,షరతులు మరియు ఫార్ములా వేరియబుల్ మరియు ఉదాహరణ, Feedback By,ద్వారా అభిప్రాయం, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,తయారీ విభాగం, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","అప్రమేయంగా, ఎంటర్ చేసిన పూర్తి పేరు ప్రకారం కస్టమర్ పేరు సెట్ చేయబడుతుంది. మీరు కస్టమర్ల పేరు పెట్టాలనుకుంటే a", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,క్రొత్త అమ్మకపు లావాదేవీని సృష్టించేటప్పుడు డిఫాల్ట్ ధర జాబితాను కాన్ఫిగర్ చేయండి. ఈ ధరల జాబితా నుండి వస్తువు ధరలు పొందబడతాయి., @@ -9692,7 +9681,6 @@ Available Balance,అందుబాటులో ఉన్న బ్యాలె Reserved Balance,రిజర్వు చేసిన బ్యాలెన్స్, Uncleared Balance,అస్పష్టమైన బ్యాలెన్స్, Payment related to {0} is not completed,{0 to కు సంబంధించిన చెల్లింపు పూర్తి కాలేదు, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,అడ్డు వరుస # {}: సీరియల్ సంఖ్య {}. P already ఇప్పటికే మరొక POS ఇన్‌వాయిస్‌లో లావాదేవీ చేయబడింది. దయచేసి చెల్లుబాటు అయ్యే సీరియల్ నెం., Row #{}: Item Code: {} is not available under warehouse {}.,అడ్డు వరుస # {}: అంశం కోడ్: ware గిడ్డంగి under under క్రింద అందుబాటులో లేదు., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,అడ్డు వరుస # {}: ఐటెమ్ కోడ్‌కు స్టాక్ పరిమాణం సరిపోదు: ware గిడ్డంగి కింద}}. అందుబాటులో ఉన్న పరిమాణం {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,అడ్డు వరుస # {}: దయచేసి సీరియల్ నెం ఎంచుకోండి మరియు అంశానికి వ్యతిరేకంగా బ్యాచ్ చేయండి: {} లేదా లావాదేవీని పూర్తి చేయడానికి దాన్ని తొలగించండి., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},గిడ్డంగి {1} ల Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,దయచేసి స్టాక్ సెట్టింగులలో నెగటివ్ స్టాక్‌ను అనుమతించు లేదా కొనసాగించడానికి స్టాక్ ఎంట్రీని సృష్టించండి., No Inpatient Record found against patient {0},రోగి {0 against కు వ్యతిరేకంగా ఇన్‌పేషెంట్ రికార్డ్ కనుగొనబడలేదు, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,పేషెంట్ ఎన్‌కౌంటర్ {1 against కు వ్యతిరేకంగా ఇన్‌పేషెంట్ మెడికేషన్ ఆర్డర్ {0 already ఇప్పటికే ఉంది., +Allow In Returns,రిటర్న్స్‌లో అనుమతించు, +Hide Unavailable Items,అందుబాటులో లేని అంశాలను దాచండి, +Apply Discount on Discounted Rate,డిస్కౌంట్ రేటుపై డిస్కౌంట్ వర్తించండి, +Therapy Plan Template,థెరపీ ప్లాన్ మూస, +Fetching Template Details,మూస వివరాలను పొందడం, +Linked Item Details,లింక్ చేసిన అంశం వివరాలు, +Therapy Types,థెరపీ రకాలు, +Therapy Plan Template Detail,థెరపీ ప్లాన్ మూస వివరాలు, +Non Conformance,నాన్ కన్ఫార్మెన్స్, +Process Owner,ప్రాసెస్ యజమాని, +Corrective Action,దిద్దుబాటు చర్య, +Preventive Action,నివారణ చర్య, +Problem,సమస్య, +Responsible,బాధ్యత, +Completion By,ద్వారా పూర్తి, +Process Owner Full Name,ప్రాసెస్ యజమాని పూర్తి పేరు, +Right Index,కుడి సూచిక, +Left Index,ఎడమ సూచిక, +Sub Procedure,ఉప విధానం, +Passed,ఉత్తీర్ణత, +Print Receipt,రసీదును ముద్రించండి, +Edit Receipt,రసీదుని సవరించండి, +Focus on search input,శోధన ఇన్‌పుట్‌పై దృష్టి పెట్టండి, +Focus on Item Group filter,ఐటెమ్ గ్రూప్ ఫిల్టర్‌పై దృష్టి పెట్టండి, +Checkout Order / Submit Order / New Order,చెక్అవుట్ ఆర్డర్ / సమర్పించండి ఆర్డర్ / కొత్త ఆర్డర్, +Add Order Discount,ఆర్డర్ డిస్కౌంట్ జోడించండి, +Item Code: {0} is not available under warehouse {1}.,అంశం కోడ్: గిడ్డంగి {1 under కింద {0} అందుబాటులో లేదు., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,గిడ్డంగి {1 under కింద అంశం {0 for కోసం క్రమ సంఖ్యలు అందుబాటులో లేవు. దయచేసి గిడ్డంగిని మార్చడానికి ప్రయత్నించండి., +Fetched only {0} available serial numbers.,{0} అందుబాటులో ఉన్న క్రమ సంఖ్యలను మాత్రమే పొందారు., +Switch Between Payment Modes,చెల్లింపు మోడ్‌ల మధ్య మారండి, +Enter {0} amount.,{0} మొత్తాన్ని నమోదు చేయండి., +You don't have enough points to redeem.,రీడీమ్ చేయడానికి మీకు తగినంత పాయింట్లు లేవు., +You can redeem upto {0}.,మీరు {0 to వరకు రీడీమ్ చేయవచ్చు., +Enter amount to be redeemed.,రీడీమ్ చేయవలసిన మొత్తాన్ని నమోదు చేయండి., +You cannot redeem more than {0}.,మీరు {0 than కన్నా ఎక్కువ రీడీమ్ చేయలేరు., +Open Form View,ఫారమ్ వీక్షణను తెరవండి, +POS invoice {0} created succesfully,POS ఇన్వాయిస్ {0 Suc విజయవంతంగా సృష్టించబడింది, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,అంశం కోడ్ కోసం స్టాక్ పరిమాణం సరిపోదు: గిడ్డంగి {1 under కింద {0}. అందుబాటులో ఉన్న పరిమాణం {2}., +Serial No: {0} has already been transacted into another POS Invoice.,సీరియల్ నెం: P 0 already ఇప్పటికే మరొక POS ఇన్‌వాయిస్‌లో లావాదేవీ చేయబడింది., +Balance Serial No,బ్యాలెన్స్ సీరియల్ నం, +Warehouse: {0} does not belong to {1},గిడ్డంగి: {0} {1 to కు చెందినది కాదు, +Please select batches for batched item {0},దయచేసి బ్యాచ్ చేసిన అంశం {0 for కోసం బ్యాచ్‌లను ఎంచుకోండి, +Please select quantity on row {0},దయచేసి row 0 row వరుసలో పరిమాణాన్ని ఎంచుకోండి, +Please enter serial numbers for serialized item {0},దయచేసి సీరియలైజ్ చేసిన అంశం {0 ser కోసం క్రమ సంఖ్యలను నమోదు చేయండి, +Batch {0} already selected.,బ్యాచ్ {0} ఇప్పటికే ఎంచుకోబడింది., +Please select a warehouse to get available quantities,అందుబాటులో ఉన్న పరిమాణాలను పొందడానికి దయచేసి గిడ్డంగిని ఎంచుకోండి, +"For transfer from source, selected quantity cannot be greater than available quantity","మూలం నుండి బదిలీ కోసం, ఎంచుకున్న పరిమాణం అందుబాటులో ఉన్న పరిమాణం కంటే ఎక్కువగా ఉండకూడదు", +Cannot find Item with this Barcode,ఈ బార్‌కోడ్‌తో అంశం కనుగొనబడలేదు, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0 తప్పనిసరి. కరెన్సీ ఎక్స్ఛేంజ్ రికార్డ్ {1} నుండి {2 for కోసం సృష్టించబడకపోవచ్చు, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,link} దీనికి లింక్ చేయబడిన ఆస్తులను సమర్పించింది. కొనుగోలు రాబడిని సృష్టించడానికి మీరు ఆస్తులను రద్దు చేయాలి., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,సమర్పించిన ఆస్తి {0 with తో అనుసంధానించబడినందున ఈ పత్రాన్ని రద్దు చేయలేరు. కొనసాగించడానికి దయచేసి దాన్ని రద్దు చేయండి., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,అడ్డు వరుస # {}: సీరియల్ నం {already ఇప్పటికే మరొక POS ఇన్‌వాయిస్‌లో లావాదేవీ చేయబడింది. దయచేసి చెల్లుబాటు అయ్యే సీరియల్ నెం., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,అడ్డు వరుస # {}: సీరియల్ సంఖ్య.} Already ఇప్పటికే మరొక POS ఇన్‌వాయిస్‌లో లావాదేవీ చేయబడింది. దయచేసి చెల్లుబాటు అయ్యే సీరియల్ నెం., +Item Unavailable,అంశం అందుబాటులో లేదు, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},అడ్డు వరుస # {}: అసలు ఇన్వాయిస్లో లావాదేవీలు చేయనందున సీరియల్ సంఖ్య {return తిరిగి ఇవ్వబడదు {}, +Please set default Cash or Bank account in Mode of Payment {},దయచేసి చెల్లింపు మోడ్‌లో డిఫాల్ట్ నగదు లేదా బ్యాంక్ ఖాతాను సెట్ చేయండి}}, +Please set default Cash or Bank account in Mode of Payments {},చెల్లింపుల మోడ్‌లో డిఫాల్ట్ నగదు లేదా బ్యాంక్ ఖాతాను సెట్ చేయండి {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,దయచేసి}} ఖాతా బ్యాలెన్స్ షీట్ ఖాతా అని నిర్ధారించుకోండి. మీరు పేరెంట్ ఖాతాను బ్యాలెన్స్ షీట్ ఖాతాకు మార్చవచ్చు లేదా వేరే ఖాతాను ఎంచుకోవచ్చు., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,దయచేసి pay} ఖాతా చెల్లించవలసిన ఖాతా అని నిర్ధారించుకోండి. ఖాతా రకాన్ని చెల్లించదగినదిగా మార్చండి లేదా వేరే ఖాతాను ఎంచుకోండి., +Row {}: Expense Head changed to {} ,అడ్డు వరుస}}: ఖర్చు హెడ్ {to కు మార్చబడింది, +because account {} is not linked to warehouse {} ,ఖాతా {w గిడ్డంగికి లింక్ చేయబడనందున}}, +or it is not the default inventory account,లేదా ఇది డిఫాల్ట్ జాబితా ఖాతా కాదు, +Expense Head Changed,ఖర్చు తల మార్చబడింది, +because expense is booked against this account in Purchase Receipt {},కొనుగోలు రసీదు in in లో ఈ ఖాతాకు వ్యతిరేకంగా ఖర్చు బుక్ చేయబడింది, +as no Purchase Receipt is created against Item {}. ,ఐటెమ్ against against కు వ్యతిరేకంగా కొనుగోలు రసీదు సృష్టించబడనందున., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,కొనుగోలు ఇన్వాయిస్ తర్వాత కొనుగోలు రసీదు సృష్టించబడినప్పుడు కేసుల అకౌంటింగ్‌ను నిర్వహించడానికి ఇది జరుగుతుంది, +Purchase Order Required for item {},అంశం for కోసం కొనుగోలు ఆర్డర్ అవసరం, +To submit the invoice without purchase order please set {} ,కొనుగోలు ఆర్డర్ లేకుండా ఇన్వాయిస్ సమర్పించడానికి దయచేసి set set సెట్ చేయండి, +as {} in {},{} లో {as, +Mandatory Purchase Order,తప్పనిసరి కొనుగోలు ఆర్డర్, +Purchase Receipt Required for item {},అంశం for for కోసం కొనుగోలు రశీదు అవసరం, +To submit the invoice without purchase receipt please set {} ,కొనుగోలు రశీదు లేకుండా ఇన్వాయిస్ సమర్పించడానికి దయచేసి set set సెట్ చేయండి, +Mandatory Purchase Receipt,తప్పనిసరి కొనుగోలు రసీదు, +POS Profile {} does not belongs to company {},POS ప్రొఫైల్ {company కంపెనీకి చెందినది కాదు}}, +User {} is disabled. Please select valid user/cashier,వాడుకరి} నిలిపివేయబడింది. దయచేసి చెల్లుబాటు అయ్యే వినియోగదారు / క్యాషియర్‌ను ఎంచుకోండి, +Row #{}: Original Invoice {} of return invoice {} is {}. ,అడ్డు వరుస # {}: రిటర్న్ ఇన్వాయిస్ యొక్క అసలు ఇన్వాయిస్ {} {}., +Original invoice should be consolidated before or along with the return invoice.,అసలు ఇన్వాయిస్ రిటర్న్ ఇన్వాయిస్కు ముందు లేదా దానితో పాటుగా ఏకీకృతం చేయాలి., +You can add original invoice {} manually to proceed.,కొనసాగడానికి మీరు అసలు ఇన్‌వాయిస్}} ను మానవీయంగా జోడించవచ్చు., +Please ensure {} account is a Balance Sheet account. ,దయచేసి}} ఖాతా బ్యాలెన్స్ షీట్ ఖాతా అని నిర్ధారించుకోండి., +You can change the parent account to a Balance Sheet account or select a different account.,మీరు పేరెంట్ ఖాతాను బ్యాలెన్స్ షీట్ ఖాతాకు మార్చవచ్చు లేదా వేరే ఖాతాను ఎంచుకోవచ్చు., +Please ensure {} account is a Receivable account. ,దయచేసి}} ఖాతా స్వీకరించదగిన ఖాతా అని నిర్ధారించుకోండి., +Change the account type to Receivable or select a different account.,ఖాతా రకాన్ని స్వీకరించదగినదిగా మార్చండి లేదా వేరే ఖాతాను ఎంచుకోండి., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},సంపాదించిన లాయల్టీ పాయింట్లు రీడీమ్ అయినందున} cancel రద్దు చేయలేము. మొదట cancel} లేదు {cancel రద్దు చేయండి, +already exists,ఇప్పటికే ఉన్నది, +POS Closing Entry {} against {} between selected period,ఎంచుకున్న వ్యవధి మధ్య {} కు వ్యతిరేకంగా POS మూసివేసే ఎంట్రీ, +POS Invoice is {},POS ఇన్వాయిస్ {}, +POS Profile doesn't matches {},POS ప్రొఫైల్ సరిపోలలేదు {}, +POS Invoice is not {},POS ఇన్వాయిస్ {not కాదు, +POS Invoice isn't created by user {},POS ఇన్వాయిస్ వినియోగదారు సృష్టించలేదు {}, +Row #{}: {},అడ్డు వరుస # {}: {}, +Invalid POS Invoices,చెల్లని POS ఇన్వాయిస్లు, +Please add the account to root level Company - {},దయచేసి ఖాతాను రూట్ స్థాయి కంపెనీకి జోడించండి - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","చైల్డ్ కంపెనీ {0 for కోసం ఖాతాను సృష్టిస్తున్నప్పుడు, మాతృ ఖాతా {1 found కనుగొనబడలేదు. సంబంధిత COA లో మాతృ ఖాతాను సృష్టించండి", +Account Not Found,ఖాతా కనుగొనబడలేదు, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","చైల్డ్ కంపెనీ {0 for కోసం ఖాతాను సృష్టించేటప్పుడు, మాతృ ఖాతా {1 a లెడ్జర్ ఖాతాగా కనుగొనబడింది.", +Please convert the parent account in corresponding child company to a group account.,దయచేసి సంబంధిత పిల్లల సంస్థలోని మాతృ ఖాతాను సమూహ ఖాతాగా మార్చండి., +Invalid Parent Account,చెల్లని తల్లిదండ్రుల ఖాతా, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",అసమతుల్యతను నివారించడానికి పేరెంట్ కంపెనీ {0 via ద్వారా మాత్రమే పేరు మార్చడం అనుమతించబడుతుంది., +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","మీరు {2} అంశం యొక్క {0} {1} పరిమాణాలను కలిగి ఉంటే, స్కీమ్ {3 the అంశంపై వర్తించబడుతుంది.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","మీరు {2} విలువైన అంశం {2 If అయితే, స్కీమ్ {3 item అంశంపై వర్తించబడుతుంది.", +"As the field {0} is enabled, the field {1} is mandatory.","ఫీల్డ్ {0} ప్రారంభించబడినందున, {1 ఫీల్డ్ తప్పనిసరి.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","{0 the ఫీల్డ్ ప్రారంభించబడినందున, {1 the ఫీల్డ్ యొక్క విలువ 1 కన్నా ఎక్కువ ఉండాలి.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},ఐటెమ్ {1 of యొక్క సీరియల్ నంబర్ {0 deliver ను పూర్తిస్థాయిలో సేల్స్ ఆర్డర్ {2 to కు రిజర్వు చేయలేదు., +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","సేల్స్ ఆర్డర్ {0 the అంశం {1 the కోసం రిజర్వేషన్ కలిగి ఉంది, మీరు {0} కు వ్యతిరేకంగా రిజర్వు చేసిన {1 only మాత్రమే ఇవ్వగలరు.", +{0} Serial No {1} cannot be delivered,{0} సీరియల్ లేవు {1} పంపలేము, +Row {0}: Subcontracted Item is mandatory for the raw material {1},అడ్డు వరుస {0}: ముడి పదార్థం {1 for కు ఉప కాంట్రాక్ట్ అంశం తప్పనిసరి, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","తగినంత ముడి పదార్థాలు ఉన్నందున, గిడ్డంగి {0 for కోసం మెటీరియల్ రిక్వెస్ట్ అవసరం లేదు.", +" If you still want to proceed, please enable {0}.","మీరు ఇంకా కొనసాగాలనుకుంటే, దయచేసి {0 enable ను ప్రారంభించండి.", +The item referenced by {0} - {1} is already invoiced,{0} - {1 by చే సూచించబడిన అంశం ఇప్పటికే ఇన్వాయిస్ చేయబడింది, +Therapy Session overlaps with {0},థెరపీ సెషన్ {0 with తో అతివ్యాప్తి చెందుతుంది, +Therapy Sessions Overlapping,థెరపీ సెషన్స్ అతివ్యాప్తి, +Therapy Plans,చికిత్స ప్రణాళికలు, +"Item Code, warehouse, quantity are required on row {0}","Code 0 row వరుసలో అంశం కోడ్, గిడ్డంగి, పరిమాణం అవసరం", +Get Items from Material Requests against this Supplier,ఈ సరఫరాదారుకు వ్యతిరేకంగా మెటీరియల్ అభ్యర్థనల నుండి అంశాలను పొందండి, +Enable European Access,యూరోపియన్ ప్రాప్యతను ప్రారంభించండి, +Creating Purchase Order ...,కొనుగోలు క్రమాన్ని సృష్టిస్తోంది ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","దిగువ వస్తువుల డిఫాల్ట్ సరఫరాదారుల నుండి సరఫరాదారుని ఎంచుకోండి. ఎంపికపై, ఎంచుకున్న సరఫరాదారుకు చెందిన వస్తువులపై మాత్రమే కొనుగోలు ఆర్డర్ చేయబడుతుంది.", +Row #{}: You must select {} serial numbers for item {}.,అడ్డు వరుస # {}: మీరు తప్పక item} అంశం కోసం {} క్రమ సంఖ్యలను ఎంచుకోవాలి., diff --git a/erpnext/translations/th.csv b/erpnext/translations/th.csv index 9890a425b1..71233ec8fa 100644 --- a/erpnext/translations/th.csv +++ b/erpnext/translations/th.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',ไม Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',ไม่สามารถหักค่าใช้จ่ายเมื่อเป็นหมวดหมู่สำหรับ 'การประเมินค่า' หรือ 'Vaulation และรวม, "Cannot delete Serial No {0}, as it is used in stock transactions",ไม่สามารถลบไม่มี Serial {0} เป็นมันถูกนำมาใช้ในการทำธุรกรรมหุ้น, Cannot enroll more than {0} students for this student group.,ไม่สามารถลงทะเบียนมากกว่า {0} นักเรียนสำหรับนักเรียนกลุ่มนี้, -Cannot find Item with this barcode,ไม่สามารถค้นหารายการด้วยบาร์โค้ดนี้, Cannot find active Leave Period,ไม่สามารถหาช่วงเวลาที่ใช้งานได้, Cannot produce more Item {0} than Sales Order quantity {1},ไม่สามารถผลิต สินค้า ได้มากขึ้น {0} กว่าปริมาณ การขายสินค้า {1}, Cannot promote Employee with status Left,ไม่สามารถส่งเสริมพนักงานที่มีสถานะเหลือ, @@ -690,7 +689,6 @@ Create Variants,สร้างสายพันธุ์, "Create and manage daily, weekly and monthly email digests.",การสร้างและจัดการ รายวันรายสัปดาห์ และรายเดือน ย่อยสลาย ทางอีเมล์, Create customer quotes,สร้างคำพูดของลูกค้า, Create rules to restrict transactions based on values.,สร้างกฎ เพื่อ จำกัด การ ทำธุรกรรม ตามค่า, -Created By,สร้างโดย, Created {0} scorecards for {1} between: ,สร้าง {0} หน้าต่างสรุปสำหรับ {1} ระหว่าง:, Creating Company and Importing Chart of Accounts,การสร้าง บริษัท และการนำเข้าผังบัญชี, Creating Fees,การสร้างค่าธรรมเนียม, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,สำหรับ คลังสิน For row {0}: Enter Planned Qty,สำหรับแถว {0}: ป้อนจำนวนที่วางแผนไว้, "For {0}, only credit accounts can be linked against another debit entry",มีบัญชีประเภทเครดิตเท่านั้น ที่สามารถเชื่อมโยงกับรายการประเภทเดบิต สำหรับ {0}, "For {0}, only debit accounts can be linked against another credit entry",มีบัญชีประเภทเดบิตเท่านั้น ที่สามารถเชื่อมโยงกับรายการประเภทเครดิต สำหรับ {0}, -Form View,มุมมองแบบฟอร์ม, Forum Activity,กิจกรรมฟอรั่ม, Free item code is not selected,ไม่ได้เลือกรหัสรายการฟรี, Freight and Forwarding Charges,การขนส่งสินค้าและ การส่งต่อ ค่าใช้จ่าย, @@ -2638,7 +2635,6 @@ Send SMS,ส่ง SMS, Send mass SMS to your contacts,ส่ง SMS มวลการติดต่อของคุณ, Sensitivity,ความไวแสง, Sent,ส่ง, -Serial #,Serial #, Serial No and Batch,ไม่มี Serial และแบทช์, Serial No is mandatory for Item {0},อนุกรม ไม่มี ผลบังคับใช้สำหรับ รายการ {0}, Serial No {0} does not belong to Batch {1},Serial No {0} ไม่ได้เป็นของ Batch {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ขอต้อนรับสู่ ERPNext, What do you need help with?,สิ่งใดที่คุณต้องการความช่วยเหลือ?, What does it do?,มัน ทำอะไรได้บ้าง, Where manufacturing operations are carried.,สถานที่ที่ดำเนินการผลิต, -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",ขณะสร้างบัญชีสำหรับ บริษัท ย่อย {0} ไม่พบบัญชีหลัก {1} โปรดสร้างบัญชีหลักใน COA ที่เกี่ยวข้อง, White,ขาว, Wire Transfer,โอนเงิน, WooCommerce Products,ผลิตภัณฑ์ WooCommerce, @@ -3493,6 +3488,7 @@ Likes,ทำเช่นเดียวกับ, Merge with existing,รวมกับที่มีอยู่, Office,สำนักงาน, Orientation,ปฐมนิเทศ, +Parent,ผู้ปกครอง, Passive,ไม่โต้ตอบ, Payment Failed,การชำระเงินล้มเหลว, Percent,เปอร์เซ็นต์, @@ -3543,6 +3539,7 @@ Shift,เปลี่ยน, Show {0},แสดง {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","ห้ามใช้อักขระพิเศษยกเว้น "-", "#", ".", "/", "{" และ "}" ในซีรี่ส์", Target Details,รายละเอียดเป้าหมาย, +{0} already has a Parent Procedure {1}.,{0} มี parent Parent {1} อยู่แล้ว, API,API, Annual,ประจำปี, Approved,ได้รับการอนุมัติ, @@ -4241,7 +4238,6 @@ Download as JSON,ดาวน์โหลดเป็น JSON, End date can not be less than start date,วันที่สิ้นสุด ไม่สามารถ จะน้อยกว่า วันเริ่มต้น, For Default Supplier (Optional),สำหรับผู้จัดจำหน่ายเริ่มต้น (ตัวเลือก), From date cannot be greater than To date,จากวันที่ไม่สามารถมากกว่าวันที่, -Get items from,รับรายการจาก, Group by,กลุ่มตาม, In stock,มีสินค้าในสต๊อก, Item name,ชื่อรายการ, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,พารามิเตอร์เทม Quality Goal,เป้าหมายคุณภาพ, Monitoring Frequency,การตรวจสอบความถี่, Weekday,วันธรรมดา, -January-April-July-October,เดือนมกราคมถึงเดือนเมษายนถึงเดือนกรกฎาคมถึงเดือนตุลาคม, -Revision and Revised On,แก้ไขและปรับปรุง, -Revision,การทบทวน, -Revised On,แก้ไขเมื่อ, Objectives,วัตถุประสงค์, Quality Goal Objective,เป้าหมายคุณภาพเป้าหมาย, Objective,วัตถุประสงค์, @@ -7574,7 +7566,6 @@ Parent Procedure,ขั้นตอนผู้ปกครอง, Processes,กระบวนการ, Quality Procedure Process,กระบวนการคุณภาพ, Process Description,คำอธิบายกระบวนการ, -Child Procedure,ขั้นตอนเด็ก, Link existing Quality Procedure.,เชื่อมโยงกระบวนการคุณภาพที่มีอยู่, Additional Information,ข้อมูลเพิ่มเติม, Quality Review Objective,วัตถุประสงค์การตรวจสอบคุณภาพ, @@ -8557,7 +8548,6 @@ Purchase Order Trends,แนวโน้มการสั่งซื้อ, Purchase Receipt Trends,ซื้อแนวโน้มใบเสร็จรับเงิน, Purchase Register,สั่งซื้อสมัครสมาชิก, Quotation Trends,ใบเสนอราคา แนวโน้ม, -Quoted Item Comparison,เปรียบเทียบรายการที่ยกมา, Received Items To Be Billed,รายการที่ได้รับจะถูกเรียกเก็บเงิน, Qty to Order,จำนวนการสั่งซื้อสินค้า, Requested Items To Be Transferred,รายการที่ได้รับการร้องขอจะถูกถ่ายโอน, @@ -9091,7 +9081,6 @@ Unmarked days,วันที่ไม่มีเครื่องหมาย Absent Days,วันที่ขาด, Conditions and Formula variable and example,เงื่อนไขและสูตรตัวแปรและตัวอย่าง, Feedback By,ข้อเสนอแนะโดย, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,แผนกการผลิต, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",โดยค่าเริ่มต้นชื่อลูกค้าจะถูกตั้งค่าตามชื่อเต็มที่ป้อน หากคุณต้องการให้ลูกค้าตั้งชื่อโดยก, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,กำหนดค่าราคาตลาดเริ่มต้นเมื่อสร้างธุรกรรมการขายใหม่ ราคาสินค้าจะถูกดึงมาจากรายการราคานี้, @@ -9692,7 +9681,6 @@ Available Balance,ยอดเงินคงเหลือ, Reserved Balance,ยอดเงินสำรอง, Uncleared Balance,ยอดคงเหลือที่ไม่ชัดเจน, Payment related to {0} is not completed,การชำระเงินที่เกี่ยวข้องกับ {0} ไม่เสร็จสมบูรณ์, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,แถว # {}: หมายเลขซีเรียล {} {} ได้ถูกทำธุรกรรมเป็นใบแจ้งหนี้ POS อื่นแล้ว โปรดเลือกหมายเลขซีเรียลที่ถูกต้อง, Row #{}: Item Code: {} is not available under warehouse {}.,แถว # {}: รหัสสินค้า: {} ไม่สามารถใช้ได้ในคลังสินค้า {}, Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,แถว # {}: ปริมาณสต็อกไม่เพียงพอสำหรับรหัสสินค้า: {} ภายใต้คลังสินค้า {} ปริมาณที่มีอยู่ {}, Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,แถว # {}: โปรดเลือกหมายเลขซีเรียลและแบทช์กับรายการ: {} หรือลบออกเพื่อทำธุรกรรมให้เสร็จสมบูรณ์, @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},ไม่มีจำนวน Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,โปรดเปิดใช้งาน Allow Negative Stock ใน Stock Settings หรือสร้าง Stock Entry เพื่อดำเนินการต่อ, No Inpatient Record found against patient {0},ไม่พบประวัติการรักษาผู้ป่วยใน {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,มีคำสั่งซื้อยาผู้ป่วยใน {0} ต่อต้านการเผชิญหน้าของผู้ป่วย {1} อยู่แล้ว, +Allow In Returns,อนุญาตให้ส่งคืน, +Hide Unavailable Items,ซ่อนรายการที่ไม่พร้อมใช้งาน, +Apply Discount on Discounted Rate,ใช้ส่วนลดในอัตราลด, +Therapy Plan Template,เทมเพลตแผนการบำบัด, +Fetching Template Details,กำลังดึงรายละเอียดเทมเพลต, +Linked Item Details,รายละเอียดรายการที่เชื่อมโยง, +Therapy Types,ประเภทการบำบัด, +Therapy Plan Template Detail,รายละเอียดเทมเพลตแผนการบำบัด, +Non Conformance,ที่ไม่สอดคล้อง, +Process Owner,เจ้าของกระบวนการ, +Corrective Action,การดำเนินการแก้ไข, +Preventive Action,การดำเนินการป้องกัน, +Problem,ปัญหา, +Responsible,มีความรับผิดชอบ, +Completion By,เสร็จสิ้นโดย, +Process Owner Full Name,ชื่อเต็มของเจ้าของกระบวนการ, +Right Index,ดัชนีด้านขวา, +Left Index,ดัชนีด้านซ้าย, +Sub Procedure,ขั้นตอนย่อย, +Passed,ผ่านไป, +Print Receipt,พิมพ์ใบเสร็จ, +Edit Receipt,แก้ไขใบเสร็จ, +Focus on search input,เน้นที่การป้อนข้อมูลการค้นหา, +Focus on Item Group filter,เน้นที่ตัวกรองกลุ่มสินค้า, +Checkout Order / Submit Order / New Order,ชำระเงินคำสั่งซื้อ / ส่งคำสั่งซื้อ / คำสั่งซื้อใหม่, +Add Order Discount,เพิ่มส่วนลดการสั่งซื้อ, +Item Code: {0} is not available under warehouse {1}.,รหัสสินค้า: {0} ไม่สามารถใช้ได้ในคลังสินค้า {1}, +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,หมายเลขซีเรียลไม่พร้อมใช้งานสำหรับสินค้า {0} ภายใต้คลังสินค้า {1} โปรดลองเปลี่ยนคลังสินค้า, +Fetched only {0} available serial numbers.,ดึงเฉพาะหมายเลขซีเรียลที่ใช้ได้ {0} รายการ, +Switch Between Payment Modes,สลับระหว่างโหมดการชำระเงิน, +Enter {0} amount.,ป้อนจำนวนเงิน {0}, +You don't have enough points to redeem.,คุณมีคะแนนไม่เพียงพอที่จะแลก, +You can redeem upto {0}.,คุณสามารถแลกได้ไม่เกิน {0}, +Enter amount to be redeemed.,ป้อนจำนวนเงินที่จะแลก, +You cannot redeem more than {0}.,คุณไม่สามารถแลกได้มากกว่า {0}, +Open Form View,เปิดมุมมองแบบฟอร์ม, +POS invoice {0} created succesfully,สร้างใบแจ้งหนี้ POS {0} สำเร็จ, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,ปริมาณสต็อกไม่เพียงพอสำหรับรหัสสินค้า: {0} ภายใต้คลังสินค้า {1} ปริมาณที่มีจำหน่าย {2}, +Serial No: {0} has already been transacted into another POS Invoice.,หมายเลขซีเรียล: {0} ได้ถูกทำธุรกรรมเป็นใบแจ้งหนี้ POS อื่นแล้ว, +Balance Serial No,หมายเลขซีเรียลสมดุล, +Warehouse: {0} does not belong to {1},คลังสินค้า: {0} ไม่ได้เป็นของ {1}, +Please select batches for batched item {0},โปรดเลือกชุดสำหรับรายการที่เป็นกลุ่ม {0}, +Please select quantity on row {0},โปรดเลือกปริมาณในแถว {0}, +Please enter serial numbers for serialized item {0},โปรดป้อนหมายเลขซีเรียลสำหรับรายการที่ต่อเนื่องกัน {0}, +Batch {0} already selected.,เลือกแบทช์ {0} แล้ว, +Please select a warehouse to get available quantities,โปรดเลือกคลังสินค้าเพื่อรับปริมาณที่มีอยู่, +"For transfer from source, selected quantity cannot be greater than available quantity",สำหรับการถ่ายโอนจากแหล่งที่มาปริมาณที่เลือกต้องไม่เกินปริมาณที่มีอยู่, +Cannot find Item with this Barcode,ไม่พบรายการที่มีบาร์โค้ดนี้, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} เป็นข้อบังคับ อาจจะไม่มีการสร้างบันทึกการแลกเปลี่ยนเงินตราสำหรับ {1} ถึง {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} ได้ส่งเนื้อหาที่เชื่อมโยงกับมัน คุณต้องยกเลิกสินทรัพย์เพื่อสร้างผลตอบแทนการซื้อ, +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,ไม่สามารถยกเลิกเอกสารนี้ได้เนื่องจากมีการเชื่อมโยงกับเนื้อหาที่ส่ง {0} โปรดยกเลิกเพื่อดำเนินการต่อ, +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,แถว # {}: หมายเลขซีเรียล {} ได้ถูกเปลี่ยนเป็นใบแจ้งหนี้ POS อื่นแล้ว โปรดเลือกหมายเลขซีเรียลที่ถูกต้อง, +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,แถว # {}: Serial Nos {} ได้ถูกทำธุรกรรมเป็นใบแจ้งหนี้ POS อื่นแล้ว โปรดเลือกหมายเลขซีเรียลที่ถูกต้อง, +Item Unavailable,ไม่มีรายการ, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},แถว # {}: ไม่สามารถส่งคืนหมายเลขซีเรียล {} ได้เนื่องจากไม่ได้ทำธุรกรรมในใบแจ้งหนี้เดิม {}, +Please set default Cash or Bank account in Mode of Payment {},โปรดตั้งค่าเริ่มต้นเงินสดหรือบัญชีธนาคารในโหมดการชำระเงิน {}, +Please set default Cash or Bank account in Mode of Payments {},โปรดตั้งค่าเริ่มต้นเงินสดหรือบัญชีธนาคารในโหมดการชำระเงิน {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,โปรดตรวจสอบว่าบัญชี {} เป็นบัญชีงบดุล คุณสามารถเปลี่ยนบัญชีหลักเป็นบัญชีงบดุลหรือเลือกบัญชีอื่น, +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,โปรดตรวจสอบว่าบัญชี {} เป็นบัญชีเจ้าหนี้ เปลี่ยนประเภทบัญชีเป็น Payable หรือเลือกบัญชีอื่น, +Row {}: Expense Head changed to {} ,แถว {}: Expense Head เปลี่ยนเป็น {}, +because account {} is not linked to warehouse {} ,เนื่องจากบัญชี {} ไม่ได้เชื่อมโยงกับคลังสินค้า {}, +or it is not the default inventory account,หรือไม่ใช่บัญชีสินค้าคงคลังเริ่มต้น, +Expense Head Changed,เปลี่ยนหัวหน้าค่าใช้จ่ายแล้ว, +because expense is booked against this account in Purchase Receipt {},เนื่องจากมีการบันทึกค่าใช้จ่ายในบัญชีนี้ในใบเสร็จการซื้อ {}, +as no Purchase Receipt is created against Item {}. ,เนื่องจากไม่มีการสร้างใบเสร็จรับเงินสำหรับรายการ {}, +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,สิ่งนี้ทำเพื่อจัดการการบัญชีสำหรับกรณีที่สร้างใบเสร็จรับเงินหลังจากใบแจ้งหนี้การซื้อ, +Purchase Order Required for item {},ต้องมีใบสั่งซื้อสำหรับสินค้า {}, +To submit the invoice without purchase order please set {} ,หากต้องการส่งใบแจ้งหนี้โดยไม่มีใบสั่งซื้อโปรดตั้งค่า {}, +as {} in {},เป็น {} ใน {}, +Mandatory Purchase Order,ใบสั่งซื้อบังคับ, +Purchase Receipt Required for item {},ต้องใช้ใบเสร็จรับเงินสำหรับสินค้า {}, +To submit the invoice without purchase receipt please set {} ,หากต้องการส่งใบแจ้งหนี้โดยไม่มีใบเสร็จการซื้อโปรดตั้งค่า {}, +Mandatory Purchase Receipt,ใบเสร็จการซื้อที่บังคับ, +POS Profile {} does not belongs to company {},โปรไฟล์ POS {} ไม่ได้เป็นของ บริษัท {}, +User {} is disabled. Please select valid user/cashier,ผู้ใช้ {} ถูกปิดใช้งาน โปรดเลือกผู้ใช้ / แคชเชียร์ที่ถูกต้อง, +Row #{}: Original Invoice {} of return invoice {} is {}. ,แถว # {}: ใบแจ้งหนี้เดิม {} ของใบแจ้งหนี้คืนสินค้า {} คือ {}, +Original invoice should be consolidated before or along with the return invoice.,ควรรวมใบแจ้งหนี้เดิมก่อนหรือพร้อมกับใบแจ้งหนี้คืนสินค้า, +You can add original invoice {} manually to proceed.,คุณสามารถเพิ่มใบแจ้งหนี้ต้นฉบับ {} ด้วยตนเองเพื่อดำเนินการต่อ, +Please ensure {} account is a Balance Sheet account. ,โปรดตรวจสอบว่าบัญชี {} เป็นบัญชีงบดุล, +You can change the parent account to a Balance Sheet account or select a different account.,คุณสามารถเปลี่ยนบัญชีหลักเป็นบัญชีงบดุลหรือเลือกบัญชีอื่น, +Please ensure {} account is a Receivable account. ,โปรดตรวจสอบให้แน่ใจว่าบัญชี {} เป็นบัญชีลูกหนี้, +Change the account type to Receivable or select a different account.,เปลี่ยนประเภทบัญชีเป็นลูกหนี้หรือเลือกบัญชีอื่น, +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},{} ไม่สามารถยกเลิกได้เนื่องจากคะแนนความภักดีที่ได้รับถูกแลกไปแล้ว ก่อนอื่นให้ยกเลิก {} ไม่ {}, +already exists,มีอยู่แล้ว, +POS Closing Entry {} against {} between selected period,รายการปิด POS {} เทียบกับ {} ระหว่างช่วงเวลาที่เลือก, +POS Invoice is {},ใบแจ้งหนี้ POS คือ {}, +POS Profile doesn't matches {},โปรไฟล์ POS ไม่ตรงกับ {}, +POS Invoice is not {},ใบแจ้งหนี้ POS ไม่ใช่ {}, +POS Invoice isn't created by user {},ผู้ใช้ไม่ได้สร้างใบแจ้งหนี้ POS {}, +Row #{}: {},แถว # {}: {}, +Invalid POS Invoices,ใบแจ้งหนี้ POS ไม่ถูกต้อง, +Please add the account to root level Company - {},โปรดเพิ่มบัญชีในระดับราก บริษัท - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",ในขณะที่สร้างบัญชีสำหรับ บริษัท ลูก {0} ไม่พบบัญชีหลัก {1} โปรดสร้างบัญชีหลักใน COA ที่เกี่ยวข้อง, +Account Not Found,ไม่พบบัญชี, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",ในขณะที่สร้างบัญชีสำหรับ บริษัท ลูก {0} บัญชีหลัก {1} พบว่าเป็นบัญชีแยกประเภท, +Please convert the parent account in corresponding child company to a group account.,โปรดแปลงบัญชีหลักใน บริษัท ย่อยที่เกี่ยวข้องเป็นบัญชีกลุ่ม, +Invalid Parent Account,บัญชีหลักไม่ถูกต้อง, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",อนุญาตให้เปลี่ยนชื่อผ่าน บริษัท แม่เท่านั้น {0} เพื่อหลีกเลี่ยงความไม่ตรงกัน, +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.",หากคุณ {0} {1} ปริมาณสินค้า {2} แบบแผน {3} จะถูกนำไปใช้กับสินค้านั้น, +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.",หากคุณ {0} {1} ไอเท็มที่คุ้มค่า {2} ระบบจะใช้แบบแผน {3} กับสินค้า, +"As the field {0} is enabled, the field {1} is mandatory.",เมื่อเปิดใช้งานฟิลด์ {0} ฟิลด์ {1} จึงมีผลบังคับใช้, +"As the field {0} is enabled, the value of the field {1} should be more than 1.",เมื่อเปิดใช้งานฟิลด์ {0} ค่าของฟิลด์ {1} ควรมากกว่า 1, +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},ไม่สามารถส่งหมายเลขซีเรียล {0} ของสินค้า {1} ได้เนื่องจากสงวนไว้สำหรับใบสั่งขายแบบเติมเต็ม {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.",ใบสั่งขาย {0} มีการจองสำหรับสินค้า {1} คุณสามารถจัดส่งที่สงวนไว้ {1} ต่อ {0} เท่านั้น, +{0} Serial No {1} cannot be delivered,ไม่สามารถส่ง {0} Serial No {1} ได้, +Row {0}: Subcontracted Item is mandatory for the raw material {1},แถว {0}: รายการที่รับเหมารายย่อยจำเป็นสำหรับวัตถุดิบ {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.",เนื่องจากมีวัตถุดิบเพียงพอจึงไม่จำเป็นต้องขอวัสดุสำหรับคลังสินค้า {0}, +" If you still want to proceed, please enable {0}.",หากคุณยังต้องการดำเนินการต่อโปรดเปิดใช้งาน {0}, +The item referenced by {0} - {1} is already invoiced,รายการที่อ้างถึงโดย {0} - {1} ถูกออกใบแจ้งหนี้แล้ว, +Therapy Session overlaps with {0},เซสชันการบำบัดทับซ้อนกับ {0}, +Therapy Sessions Overlapping,การบำบัดที่ทับซ้อนกัน, +Therapy Plans,แผนการบำบัด, +"Item Code, warehouse, quantity are required on row {0}",ต้องระบุรหัสสินค้าคลังสินค้าปริมาณในแถว {0}, +Get Items from Material Requests against this Supplier,รับรายการจากคำขอวัสดุกับซัพพลายเออร์นี้, +Enable European Access,เปิดใช้งาน European Access, +Creating Purchase Order ...,กำลังสร้างใบสั่งซื้อ ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",เลือกซัพพลายเออร์จากซัพพลายเออร์เริ่มต้นของรายการด้านล่าง ในการเลือกใบสั่งซื้อจะทำกับสินค้าที่เป็นของซัพพลายเออร์ที่เลือกเท่านั้น, +Row #{}: You must select {} serial numbers for item {}.,แถว # {}: คุณต้องเลือก {} หมายเลขซีเรียลสำหรับรายการ {}, diff --git a/erpnext/translations/tr.csv b/erpnext/translations/tr.csv index 1fe93c3d4f..9e7ba4d142 100644 --- a/erpnext/translations/tr.csv +++ b/erpnext/translations/tr.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',Kategori Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',kategori 'Değerleme' veya 'Vaulation ve Toplam' için ne zaman tenzil edemez, "Cannot delete Serial No {0}, as it is used in stock transactions","Silinemiyor Seri No {0}, hisse senedi işlemlerinde kullanıldığı gibi", Cannot enroll more than {0} students for this student group.,Bu öğrenci grubu için {0} öğrencilere göre daha kayıt olamaz., -Cannot find Item with this barcode,Bu barkodla Öğe bulunamıyor, Cannot find active Leave Period,Aktif İzin Dönemi bulunamıyor, Cannot produce more Item {0} than Sales Order quantity {1},Satış Sipariş Miktarı {1} den fazla Ürün {0} üretilemez, Cannot promote Employee with status Left,Çalışan durumu solda tanıtılamaz, @@ -690,7 +689,6 @@ Create Variants,Varyantları Oluştur, "Create and manage daily, weekly and monthly email digests.","Günlük, haftalık ve aylık e-posta özetleri oluştur.", Create customer quotes,Müşteri tırnak oluşturun, Create rules to restrict transactions based on values.,Değerlere dayalı işlemleri kısıtlamak için kurallar oluşturun., -Created By,Tarafından oluşturulan, Created {0} scorecards for {1} between: ,{1} için {0} puan kartını şu aralıklarla oluşturdu:, Creating Company and Importing Chart of Accounts,Şirket Kurmak ve Hesap Çizelgesi Alma, Creating Fees,Ücret Yaratmak, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Sunulmadan önce gerekli depo için, For row {0}: Enter Planned Qty,{0} satırı için: Planlanan Miktarı Girin, "For {0}, only credit accounts can be linked against another debit entry","{0}, sadece kredi hesapları başka bir ödeme girişine karşı bağlantılı olabilir için", "For {0}, only debit accounts can be linked against another credit entry","{0}, sadece banka hesapları başka bir kredi girişine karşı bağlantılı olabilir için", -Form View,Form Görünümü, Forum Activity,Forum Etkinliği, Free item code is not selected,Ücretsiz ürün kodu seçilmedi, Freight and Forwarding Charges,Navlun ve Sevkiyat Ücretleri, @@ -2638,7 +2635,6 @@ Send SMS,SMS gönder, Send mass SMS to your contacts,Kişilerinize toplu SMS Gönder, Sensitivity,Duyarlılık, Sent,Gönderilen, -Serial #,Seri #, Serial No and Batch,Seri no ve toplu, Serial No is mandatory for Item {0},Ürün {0} için Seri no zorunludur, Serial No {0} does not belong to Batch {1},"{0} Seri Numarası, {1} Batch'a ait değil", @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Hoşgeldiniz, What do you need help with?,Ne konuda yardıma ihtiyacın var?, What does it do?,Ne yapar?, Where manufacturing operations are carried.,Üretim operasyonları nerede yapılmaktadır., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","{0} alt şirketi için hesap oluşturulurken, {1} üst hesabı bulunamadı. Lütfen ilgili COA’da ana hesap oluşturun", White,Beyaz, Wire Transfer,Elektronik transfer, WooCommerce Products,WooCommerce Ürünleri, @@ -3493,6 +3488,7 @@ Likes,Beğeniler, Merge with existing,Mevcut Birleştirme, Office,Ofis, Orientation,Oryantasyon, +Parent,Ana Kalem, Passive,Pasif, Payment Failed,Ödeme başarısız, Percent,Yüzde, @@ -3543,6 +3539,7 @@ Shift,vardiya, Show {0},{0} göster, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",""-", "#", ".", "/", "{" Ve "}" dışındaki Özel Karakterler, seri dizisine izin verilmez", Target Details,Hedef Detayları, +{0} already has a Parent Procedure {1}.,{0} zaten bir {1} veli prosedürüne sahip., API,API, Annual,Yıllık, Approved,Onaylandı, @@ -4241,7 +4238,6 @@ Download as JSON,JSON olarak indir, End date can not be less than start date,"Bitiş Tarihi, Başlangıç Tarihinden daha az olamaz", For Default Supplier (Optional),Varsayılan Tedarikçi için (İsteğe bağlı), From date cannot be greater than To date,Tarihten itibaren tarihe kadardan ileride olamaz, -Get items from,Öğeleri alın, Group by,Grup tarafından, In stock,Stokta var, Item name,Ürün Adı, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Kalite Geribildirim Şablon Parametresi, Quality Goal,Kalite hedefi, Monitoring Frequency,Frekans İzleme, Weekday,çalışma günü, -January-April-July-October,Ocak-Nisan-Temmuz-Ekim, -Revision and Revised On,Düzeltme ve Düzeltme Tarihi, -Revision,Revizyon, -Revised On,Üzerinde revize edildi, Objectives,Hedefler, Quality Goal Objective,Kalite Hedef Amaç, Objective,Amaç, @@ -7574,7 +7566,6 @@ Parent Procedure,Ebeveyn Prosedürü, Processes,Süreçler, Quality Procedure Process,Kalite Prosedürü Süreci, Process Description,Süreç açıklaması, -Child Procedure,Çocuk Prosedürü, Link existing Quality Procedure.,Mevcut Kalite Prosedürünü bağlayın., Additional Information,ek bilgi, Quality Review Objective,Kalite İnceleme Amaç, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Satın Alma Sipariş Analizi, Purchase Receipt Trends,Satın Alma Teslim Alma Analizi, Purchase Register,Satın alma kaydı, Quotation Trends,Teklif Trendleri, -Quoted Item Comparison,Kote Ürün Karşılaştırma, Received Items To Be Billed,Faturalanacak Alınan Malzemeler, Qty to Order,Sipariş Miktarı, Requested Items To Be Transferred,Transfer edilmesi istenen Ürünler, @@ -9091,7 +9081,6 @@ Unmarked days,İşaretlenmemiş günler, Absent Days,Devamsızlık Günleri, Conditions and Formula variable and example,Koşullar ve Formül değişkeni ve örnek, Feedback By,Geri Bildirim Gönderen, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. GG.-, Manufacturing Section,Üretim Bölümü, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Varsayılan olarak, Müşteri Adı girilen Tam Ad'a göre ayarlanır. Müşterilerin bir tarafından adlandırılmasını istiyorsanız", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Yeni bir Satış işlemi oluştururken varsayılan Fiyat Listesini yapılandırın. Ürün fiyatları bu Fiyat Listesinden alınacaktır., @@ -9692,7 +9681,6 @@ Available Balance,Kalan bakiye, Reserved Balance,Ayrılmış Bakiye, Uncleared Balance,Temizlenmemiş Bakiye, Payment related to {0} is not completed,{0} ile ilgili ödeme tamamlanmadı, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Satır # {}: Seri No {}. {} zaten başka bir POS Faturasına dönüştürüldü. Lütfen geçerli bir seri numarası seçin., Row #{}: Item Code: {} is not available under warehouse {}.,"Satır # {}: Öğe Kodu: {}, {} deposunda kullanılamaz.", Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Satır # {}: Stok miktarı Ürün Kodu için yeterli değil: {} depo altında {}. Mevcut Miktarı {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Satır # {}: Lütfen bir seri numarası ve ürüne karşı parti seçin: {} veya işlemi tamamlamak için bunu kaldırın., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},{1} deposunda {0} için miktar m Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Devam etmek için lütfen Stok Ayarlarında Negatif Stoka İzin Ver'i etkinleştirin veya Stok Girişi oluşturun., No Inpatient Record found against patient {0},Hastaya karşı Yatan Hasta Kaydı bulunamadı {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Hasta Karşılaşmasına karşı {0} Yatarak Tedavi Emri {1} zaten mevcut., +Allow In Returns,İadelere İzin Ver, +Hide Unavailable Items,Kullanılamayan Öğeleri Gizle, +Apply Discount on Discounted Rate,İndirimli Fiyata İndirim Uygulayın, +Therapy Plan Template,Tedavi Planı Şablonu, +Fetching Template Details,Şablon Ayrıntılarını Alma, +Linked Item Details,Bağlı Öğe Ayrıntıları, +Therapy Types,Tedavi Türleri, +Therapy Plan Template Detail,Tedavi Planı Şablon Detayı, +Non Conformance,Uygunsuzluk, +Process Owner,İşlem Sahibi, +Corrective Action,Düzeltici eylem, +Preventive Action,Önleyici eylem, +Problem,Sorun, +Responsible,Sorumluluk sahibi, +Completion By,Tamamlayan, +Process Owner Full Name,İşlem Sahibinin Tam Adı, +Right Index,Sağ Dizin, +Left Index,Sol Dizin, +Sub Procedure,Alt Prosedür, +Passed,Geçti, +Print Receipt,Makbuzu yazdır, +Edit Receipt,Makbuzu Düzenle, +Focus on search input,Arama girdisine odaklanın, +Focus on Item Group filter,Öğe Grubu filtresine odaklanın, +Checkout Order / Submit Order / New Order,Ödeme Siparişi / Sipariş Gönder / Yeni Sipariş, +Add Order Discount,Sipariş İndirimi Ekle, +Item Code: {0} is not available under warehouse {1}.,"Ürün Kodu: {0}, {1} deposunda kullanılamaz.", +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,{1} deposu altındaki Öğe {0} için seri numaraları kullanılamıyor. Lütfen depoyu değiştirmeyi deneyin., +Fetched only {0} available serial numbers.,Yalnızca {0} kullanılabilir seri numarası getirildi., +Switch Between Payment Modes,Ödeme Modları Arasında Geçiş Yapın, +Enter {0} amount.,{0} tutarı girin., +You don't have enough points to redeem.,Kullanmak için yeterli puanınız yok., +You can redeem upto {0}.,En çok {0} kullanabilirsiniz., +Enter amount to be redeemed.,Kullanılacak tutarı girin., +You cannot redeem more than {0}.,{0} adetten fazlasını kullanamazsınız., +Open Form View,Form Görünümünü Aç, +POS invoice {0} created succesfully,POS faturası {0} başarıyla oluşturuldu, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Stok miktarı Ürün Kodu için yeterli değil: {0} depo altında {1}. Mevcut miktar {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Seri No: {0} zaten başka bir POS Faturasına dönüştürüldü., +Balance Serial No,Denge Seri No, +Warehouse: {0} does not belong to {1},"Depo: {0}, {1} şirketine ait değil", +Please select batches for batched item {0},Lütfen {0} toplu öğe için grupları seçin, +Please select quantity on row {0},Lütfen {0}. Satırdaki miktarı seçin, +Please enter serial numbers for serialized item {0},Lütfen serileştirilmiş öğe {0} için seri numaralarını girin, +Batch {0} already selected.,{0} grubu zaten seçildi., +Please select a warehouse to get available quantities,Lütfen mevcut miktarları almak için bir depo seçin, +"For transfer from source, selected quantity cannot be greater than available quantity","Kaynaktan transfer için, seçilen miktar mevcut miktardan büyük olamaz", +Cannot find Item with this Barcode,Bu Barkoda Sahip Öğe Bulunamıyor, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} zorunludur. {1} - {2} için Para Birimi Değişimi kaydı oluşturulmamış olabilir, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} kendisine bağlı varlıklar gönderdi. Satın alma iadesi oluşturmak için varlıkları iptal etmeniz gerekir., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Gönderilen {0} varlığıyla bağlantılı olduğu için bu belge iptal edilemez. Devam etmek için lütfen iptal edin., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Satır # {}: Seri No. {} zaten başka bir POS Faturasına dönüştürüldü. Lütfen geçerli bir seri numarası seçin., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Satır # {}: Seri Numaraları {} zaten başka bir POS Faturasına dönüştürüldü. Lütfen geçerli bir seri numarası seçin., +Item Unavailable,Öğe Mevcut Değil, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Satır # {}: Orijinal faturada işlem görmediğinden Seri Numarası {} iade edilemez {}, +Please set default Cash or Bank account in Mode of Payment {},Lütfen Ödeme Modunda varsayılan Nakit veya Banka hesabını ayarlayın {}, +Please set default Cash or Bank account in Mode of Payments {},Lütfen Ödeme Modu'nda varsayılan Nakit veya Banka hesabını ayarlayın {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Lütfen {} hesabının bir Bilanço hesabı olduğundan emin olun. Ana hesabı bir Bilanço hesabı olarak değiştirebilir veya farklı bir hesap seçebilirsiniz., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Lütfen {} hesabının Alacaklı bir hesap olduğundan emin olun. Hesap türünü Borçlu olarak değiştirin veya farklı bir hesap seçin., +Row {}: Expense Head changed to {} ,Satır {}: Gider Başlığı {} olarak değiştirildi, +because account {} is not linked to warehouse {} ,çünkü {} hesabı {} deposuna bağlı değil, +or it is not the default inventory account,veya varsayılan envanter hesabı değil, +Expense Head Changed,Gider Başlığı Değiştirildi, +because expense is booked against this account in Purchase Receipt {},çünkü Satın Alma Makbuzunda bu hesap için gider ayrılmıştır {}, +as no Purchase Receipt is created against Item {}. ,Öğe {} karşılığında Satın Alma Fişi oluşturulmadığından., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,"Bu, Satın Alma Faturasından sonra Satın Alma Makbuzunun oluşturulduğu durumlarda muhasebeyi işlemek için yapılır.", +Purchase Order Required for item {},{} Öğesi için Satın Alma Siparişi Gerekli, +To submit the invoice without purchase order please set {} ,Faturayı satın alma siparişi olmadan göndermek için lütfen {} ayarlayın, +as {} in {},de olduğu gibi {}, +Mandatory Purchase Order,Zorunlu Satın Alma Siparişi, +Purchase Receipt Required for item {},{} Öğesi için Satın Alma Fişi Gerekli, +To submit the invoice without purchase receipt please set {} ,Faturayı satın alma makbuzu olmadan göndermek için lütfen {}, +Mandatory Purchase Receipt,Zorunlu Satın Alma Fişi, +POS Profile {} does not belongs to company {},"POS Profili {}, {} şirketine ait değil", +User {} is disabled. Please select valid user/cashier,Kullanıcı {} devre dışı bırakıldı. Lütfen geçerli kullanıcı / kasiyer seçin, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Satır # {}: İade faturasının {} Orijinal Faturası {}., +Original invoice should be consolidated before or along with the return invoice.,"Orijinal fatura, iade faturasıyla birlikte veya öncesinde konsolide edilmelidir.", +You can add original invoice {} manually to proceed.,Devam etmek için orijinal faturayı {} manuel olarak ekleyebilirsiniz., +Please ensure {} account is a Balance Sheet account. ,Lütfen {} hesabının bir Bilanço hesabı olduğundan emin olun., +You can change the parent account to a Balance Sheet account or select a different account.,Ana hesabı bir Bilanço hesabı olarak değiştirebilir veya farklı bir hesap seçebilirsiniz., +Please ensure {} account is a Receivable account. ,Lütfen {} hesabının bir Alacak hesabı olduğundan emin olun., +Change the account type to Receivable or select a different account.,Hesap türünü Alacak olarak değiştirin veya farklı bir hesap seçin., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},Kazanılan Bağlılık Puanları kullanıldığından {} iptal edilemez. Önce {} Hayır {} 'ı iptal edin, +already exists,zaten var, +POS Closing Entry {} against {} between selected period,Seçilen dönem arasında {} karşısında POS Kapanış Girişi {}, +POS Invoice is {},POS Faturası {}, +POS Profile doesn't matches {},POS Profili {} ile eşleşmiyor, +POS Invoice is not {},POS Faturası {} değil, +POS Invoice isn't created by user {},POS Faturası kullanıcı tarafından oluşturulmaz {}, +Row #{}: {},Kürek çekmek #{}: {}, +Invalid POS Invoices,Geçersiz POS Faturaları, +Please add the account to root level Company - {},Lütfen hesabı kök düzeyindeki Şirkete ekleyin - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Alt Şirket {0} için hesap oluşturulurken, {1} ebeveyn hesabı bulunamadı. Lütfen ilgili COA'da üst hesabı oluşturun", +Account Not Found,Hesap bulunamadı, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Alt Şirket {0} için hesap oluşturulurken, {1} ana hesap bir genel muhasebe hesabı olarak bulundu.", +Please convert the parent account in corresponding child company to a group account.,Lütfen ilgili alt şirketteki ana hesabı bir grup hesabına dönüştürün., +Invalid Parent Account,Geçersiz Ebeveyn Hesabı, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",Uyuşmazlığı önlemek için yeniden adlandırılmasına yalnızca ana şirket {0} aracılığıyla izin verilir., +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","{0} {1} Öğenin miktarları {2} ise, şema {3} öğeye uygulanacaktır.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","{0} {1} değerinde öğe {2} iseniz, şema {3} öğeye uygulanacaktır.", +"As the field {0} is enabled, the field {1} is mandatory.","{0} alanı etkinleştirildiğinde, {1} alanı zorunludur.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","{0} alanı etkinleştirildiğinde, {1} alanının değeri 1'den fazla olmalıdır.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Satış Siparişini tamamlamak için ayrıldığından {1} öğenin Seri Numarası {0} teslim edilemiyor {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Satış Siparişi {0}, {1} öğesi için rezervasyona sahip, yalnızca {0} karşılığında {1} ayrılmış olarak teslim edebilirsiniz.", +{0} Serial No {1} cannot be delivered,{0} Seri No {1} teslim edilemiyor, +Row {0}: Subcontracted Item is mandatory for the raw material {1},"Satır {0}: Alt Sözleşmeli Öğe, hammadde {1} için zorunludur", +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Yeterli hammadde olduğundan, Depo {0} için Malzeme Talebi gerekli değildir.", +" If you still want to proceed, please enable {0}.","Hala devam etmek istiyorsanız, lütfen {0} 'yi etkinleştirin.", +The item referenced by {0} - {1} is already invoiced,{0} - {1} tarafından referans verilen öğe zaten faturalanmış, +Therapy Session overlaps with {0},"Terapi Oturumu, {0} ile çakışıyor", +Therapy Sessions Overlapping,Çakışan Terapi Seansları, +Therapy Plans,Tedavi Planları, +"Item Code, warehouse, quantity are required on row {0}","{0}. Satırda Öğe Kodu, depo, miktar gerekli", +Get Items from Material Requests against this Supplier,Bu Tedarikçiye Karşı Malzeme Taleplerinden Ürün Alın, +Enable European Access,Avrupa Erişimini Etkinleştir, +Creating Purchase Order ...,Satın Alma Siparişi Oluşturuluyor ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Aşağıdaki öğelerin Varsayılan Tedarikçilerinden bir Tedarikçi seçin. Seçim üzerine, yalnızca seçilen Tedarikçiye ait ürünler için bir Satın Alma Siparişi verilecektir.", +Row #{}: You must select {} serial numbers for item {}.,Satır # {}: {} öğesi için {} seri numaralarını seçmelisiniz., diff --git a/erpnext/translations/uk.csv b/erpnext/translations/uk.csv index e960a6448c..53e2df518c 100644 --- a/erpnext/translations/uk.csv +++ b/erpnext/translations/uk.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Не м Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',"Чи не можете відняти, коли категорія для "Оцінка" або "Vaulation і Total '", "Cannot delete Serial No {0}, as it is used in stock transactions","Не вдається видалити Серійний номер {0}, оскільки він використовується у складських операціях", Cannot enroll more than {0} students for this student group.,Не зміг зареєструвати більш {0} студентів для цієї групи студентів., -Cannot find Item with this barcode,Неможливо знайти елемент із цим штрих-кодом, Cannot find active Leave Period,Не вдається знайти активний період залишення, Cannot produce more Item {0} than Sales Order quantity {1},"Не можете виробляти більше Пункт {0}, ніж кількість продажів Замовити {1}", Cannot promote Employee with status Left,Неможливо рекламувати працівника зі статусом "ліворуч", @@ -690,7 +689,6 @@ Create Variants,Створюйте варіанти, "Create and manage daily, weekly and monthly email digests.","Створення і управління щоденні, щотижневі та щомісячні дайджести новин.", Create customer quotes,Створення котирування клієнтів, Create rules to restrict transactions based on values.,Створення правил по обмеженню угод на основі значень., -Created By,Створений, Created {0} scorecards for {1} between: ,Створено {0} показників для {1} між:, Creating Company and Importing Chart of Accounts,Створення компанії та імпорт рахунків рахунків, Creating Fees,Створення комісійних, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Для складу потрібно п For row {0}: Enter Planned Qty,Для рядка {0}: введіть заплановане число, "For {0}, only credit accounts can be linked against another debit entry","Для {0}, тільки кредитні рахунки можуть бути пов'язані з іншою дебету", "For {0}, only debit accounts can be linked against another credit entry","Для {0}, тільки дебетові рахунки можуть бути пов'язані з іншою кредитною вступу", -Form View,Вид форми, Forum Activity,Діяльність форуму, Free item code is not selected,Безкоштовний код товару не обраний, Freight and Forwarding Charges,Вантажні та експедиторські збори, @@ -2638,7 +2635,6 @@ Send SMS,Відправити SMS, Send mass SMS to your contacts,Відправити SMS масового вашим контактам, Sensitivity,Чутливість, Sent,Надісланий, -Serial #,Серійний #, Serial No and Batch,Серійний номер та партія, Serial No is mandatory for Item {0},Серійний номер є обов'язковим для позиції {0}, Serial No {0} does not belong to Batch {1},Серійний номер {0} не належить до партії {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Вітаємо у ERPNext, What do you need help with?,З чим вам допомогти?, What does it do?,Чим займається?, Where manufacturing operations are carried.,Де проводяться виробничі операції., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",Під час створення облікового запису дочірньої компанії {0} батьківський рахунок {1} не знайдено. Створіть батьківський обліковий запис у відповідному сертифікаті сертифікації, White,Білий, Wire Transfer,Банківський переказ, WooCommerce Products,Продукти WooCommerce, @@ -3493,6 +3488,7 @@ Likes,Вподобання, Merge with existing,Злиття з існуючими, Office,Офіс, Orientation,орієнтація, +Parent,Батько, Passive,Пасивний, Payment Failed,Помилка оплати, Percent,Відсотків, @@ -3543,6 +3539,7 @@ Shift,Зміна, Show {0},Показати {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Спеціальні символи, окрім "-", "#", ".", "/", "{" Та "}", не дозволяються в іменуванні серій", Target Details,Деталі цілі, +{0} already has a Parent Procedure {1}.,{0} вже має батьківську процедуру {1}., API,API, Annual,Річний, Approved,Затверджений, @@ -4241,7 +4238,6 @@ Download as JSON,Завантажити як JSON, End date can not be less than start date,"Дата завершення не може бути меншою, ніж Дата початку", For Default Supplier (Optional),Для постачальника за замовчуванням (необов'язково), From date cannot be greater than To date,"Від дати не може бути більше, ніж Дата", -Get items from,Отримати елементи з, Group by,Групувати за, In stock,В наявності, Item name,Назва виробу, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Параметр шаблону зворот Quality Goal,Ціль якості, Monitoring Frequency,Частота моніторингу, Weekday,Будній день, -January-April-July-October,Січень-квітень-липень-жовтень, -Revision and Revised On,Перегляд та переглянуто далі, -Revision,Перегляд, -Revised On,Переглянуто від, Objectives,Цілі, Quality Goal Objective,Мета якості, Objective,Об'єктивна, @@ -7574,7 +7566,6 @@ Parent Procedure,Батьківський порядок, Processes,Процеси, Quality Procedure Process,Процес якості якості, Process Description,Опис процесу, -Child Procedure,Дитяча процедура, Link existing Quality Procedure.,Пов’язати існуючу процедуру якості., Additional Information,Додаткова інформація, Quality Review Objective,Мета перевірки якості, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Динаміка Замовлень на придбанн Purchase Receipt Trends,Тренд прихідних накладних, Purchase Register,Реєстр закупівель, Quotation Trends,Тренд пропозицій, -Quoted Item Comparison,Цитується Порівняння товару, Received Items To Be Billed,"Отримані позиції, на які не виставлені рахунки", Qty to Order,К-сть для замовлення, Requested Items To Be Transferred,"Номенклатура, що ми замовили але не отримали", @@ -9091,7 +9081,6 @@ Unmarked days,Непозначені дні, Absent Days,Відсутні дні, Conditions and Formula variable and example,Умови та формула змінна та приклад, Feedback By,Відгук від, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.РРРР .-. MM .-. DD.-, Manufacturing Section,Виробнича секція, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","За замовчуванням ім'я клієнта встановлюється відповідно до повного імені. Якщо ви хочете, щоб Клієнтів називали", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Налаштуйте прайс-лист за замовчуванням під час створення нової транзакції продажу. Ціни на товари будуть отримані з цього прайс-листа., @@ -9692,7 +9681,6 @@ Available Balance,Доступний залишок, Reserved Balance,Зарезервований баланс, Uncleared Balance,Незрозумілий баланс, Payment related to {0} is not completed,"Оплата, пов’язана з {0}, не виконана", -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Рядок № {}: Серійний номер {}. {} вже здійснено транзакцію на інший рахунок-фактуру. Виберіть дійсний серійний номер., Row #{}: Item Code: {} is not available under warehouse {}.,Рядок № {}: Код товару: {} недоступний на складі {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Рядок № {}: Кількість запасу недостатня для коду товару: {} на складі {}. Доступна кількість {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,"Рядок № {}: Виберіть серійний номер та партію товару: {} або видаліть його, щоб завершити транзакцію.", @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Кількість недост Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,"Будь ласка, увімкніть Дозволити від’ємний запас у налаштуваннях запасів або створіть запис про запас, щоб продовжити.", No Inpatient Record found against patient {0},Не знайдено стаціонарних записів щодо пацієнта {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Наказ про стаціонарне лікування {0} проти зустрічі з пацієнтом {1} уже існує., +Allow In Returns,Дозволити повернення, +Hide Unavailable Items,Сховати недоступні елементи, +Apply Discount on Discounted Rate,Застосувати знижку на знижку, +Therapy Plan Template,Шаблон плану терапії, +Fetching Template Details,Отримання деталей шаблону, +Linked Item Details,Деталі пов'язаних елементів, +Therapy Types,Типи терапії, +Therapy Plan Template Detail,Деталь шаблону плану терапії, +Non Conformance,Невідповідність, +Process Owner,Власник процесу, +Corrective Action,Коригувальні дії, +Preventive Action,Профілактична дія, +Problem,Проблема, +Responsible,Відповідальний, +Completion By,Завершення, +Process Owner Full Name,Повне ім’я власника процесу, +Right Index,Правий покажчик, +Left Index,Лівий покажчик, +Sub Procedure,Підпроцедура, +Passed,Пройшов, +Print Receipt,Друк квитанції, +Edit Receipt,Редагувати квитанцію, +Focus on search input,Зосередьтеся на пошуковому запиті, +Focus on Item Group filter,Зосередьтеся на фільтрі групи предметів, +Checkout Order / Submit Order / New Order,Замовлення замовлення / Надіслати замовлення / Нове замовлення, +Add Order Discount,Додати знижку на замовлення, +Item Code: {0} is not available under warehouse {1}.,Код товару: {0} недоступний на складі {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,"Серійні номери недоступні для товару {0} на складі {1}. Будь ласка, спробуйте змінити склад.", +Fetched only {0} available serial numbers.,Отримано лише {0} доступних серійних номерів., +Switch Between Payment Modes,Перемикання між режимами оплати, +Enter {0} amount.,Введіть {0} суму., +You don't have enough points to redeem.,"Вам не вистачає очок, щоб використати.", +You can redeem upto {0}.,Ви можете активувати до {0}., +Enter amount to be redeemed.,"Введіть суму, яку потрібно погасити.", +You cannot redeem more than {0}.,Ви не можете отоварити більше ніж {0}., +Open Form View,Відкрийте подання форми, +POS invoice {0} created succesfully,POS-рахунок-фактуру {0} створено успішно, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Кількості запасу недостатньо для коду товару: {0} під складом {1}. Доступна кількість {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Серійний номер: {0} уже здійснено транзакцію на інший рахунок-фактуру., +Balance Serial No,Серійний номер балансу, +Warehouse: {0} does not belong to {1},Склад: {0} не належить {1}, +Please select batches for batched item {0},Виберіть партії для пакетного товару {0}, +Please select quantity on row {0},Виберіть кількість у рядку {0}, +Please enter serial numbers for serialized item {0},Введіть серійні номери для серіалізованого товару {0}, +Batch {0} already selected.,Пакет {0} уже вибрано., +Please select a warehouse to get available quantities,"Будь ласка, виберіть склад, щоб отримати доступні кількості", +"For transfer from source, selected quantity cannot be greater than available quantity",Для передачі з джерела вибрана кількість не може бути більшою за доступну, +Cannot find Item with this Barcode,Не вдається знайти товар із цим штрих-кодом, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},"{0} є обов’язковим. Можливо, запис обміну валют не створений для {1} - {2}", +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,"{} надіслав пов’язані з ним об’єкти. Вам потрібно скасувати активи, щоб створити повернення покупки.", +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"Не вдається скасувати цей документ, оскільки він пов’язаний із надісланим об’єктом {0}. Будь ласка, скасуйте його, щоб продовжити.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Рядок № {}: Серійний номер {} вже переведено на інший рахунок-фактуру. Виберіть дійсний серійний номер., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Рядок № {}: Серійні номери {} вже переведені на інший рахунок-фактуру. Виберіть дійсний серійний номер., +Item Unavailable,Елемент недоступний, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"Рядок № {}: серійний номер {} повернути не можна, оскільки він не був здійснений у первісному рахунку-фактурі {}", +Please set default Cash or Bank account in Mode of Payment {},Встановіть за умовчанням готівковий або банківський рахунок у режимі оплати {}, +Please set default Cash or Bank account in Mode of Payments {},"Будь ласка, встановіть Касовий або банківський рахунок за замовчуванням у режимі платежів {}", +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,"Переконайтесь, що обліковий запис {} є рахунком на балансі. Ви можете змінити батьківський рахунок на рахунок балансу або вибрати інший.", +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,"Переконайтесь, що обліковий запис {} є платником. Змініть тип рахунку на Платежна або виберіть інший.", +Row {}: Expense Head changed to {} ,Рядок {}: Витратну головку змінено на {}, +because account {} is not linked to warehouse {} ,оскільки обліковий запис {} не пов’язаний зі складом {}, +or it is not the default inventory account,або це не інвентарний рахунок за замовчуванням, +Expense Head Changed,Змінено головку витрат, +because expense is booked against this account in Purchase Receipt {},оскільки витрати заброньовані на цей рахунок у квитанції про придбання {}, +as no Purchase Receipt is created against Item {}. ,оскільки квитанція про купівлю щодо товару {} не створюється., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,"Це робиться для ведення обліку випадків, коли квитанція про придбання створюється після рахунку-фактури", +Purchase Order Required for item {},Замовлення на придбання потрібне для товару {}, +To submit the invoice without purchase order please set {} ,"Щоб подати рахунок-фактуру без замовлення на придбання, встановіть {}", +as {} in {},як і в {}, +Mandatory Purchase Order,Обов’язкове замовлення на придбання, +Purchase Receipt Required for item {},Квитанція про покупку потрібна для товару {}, +To submit the invoice without purchase receipt please set {} ,"Щоб подати рахунок-фактуру без квитанції про покупку, встановіть {}", +Mandatory Purchase Receipt,Обов’язкова квитанція про купівлю, +POS Profile {} does not belongs to company {},Профіль POS {} не належить компанії {}, +User {} is disabled. Please select valid user/cashier,Користувача {} вимкнено. Виберіть дійсного користувача / касира, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Рядок № {}: Оригінальний рахунок-фактура {} зворотного рахунку-фактури {} - {}., +Original invoice should be consolidated before or along with the return invoice.,"Оригінальний рахунок-фактура повинен бути зведений до або разом із фактурою, що повертається.", +You can add original invoice {} manually to proceed.,"Ви можете додати оригінальний рахунок-фактуру {} вручну, щоб продовжити.", +Please ensure {} account is a Balance Sheet account. ,"Переконайтесь, що обліковий запис {} є рахунком на балансі.", +You can change the parent account to a Balance Sheet account or select a different account.,Ви можете змінити батьківський рахунок на рахунок балансу або вибрати інший., +Please ensure {} account is a Receivable account. ,"Переконайтесь, що обліковий запис {} - це рахунок, який можна отримати.", +Change the account type to Receivable or select a different account.,Змініть тип рахунку на Дебіторська або виберіть інший., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},"{} не можна скасувати, оскільки отримані бали лояльності були використані. Спочатку скасуйте {} Ні {}", +already exists,вже існує, +POS Closing Entry {} against {} between selected period,Закриття запису POS {} проти {} між вибраним періодом, +POS Invoice is {},Рахунок-фактура POS становить {}, +POS Profile doesn't matches {},POS-профіль не відповідає {}, +POS Invoice is not {},Рахунок-фактура POS не {}, +POS Invoice isn't created by user {},Рахунок-фактура POS не створюється користувачем {}, +Row #{}: {},Рядок № {}: {}, +Invalid POS Invoices,Недійсні рахунки POS, +Please add the account to root level Company - {},"Будь ласка, додайте обліковий запис до корпоративного рівня компанії - {}", +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Під час створення облікового запису для дочірньої компанії {0} батьківський обліковий запис {1} не знайдено. Будь ласка, створіть батьківський обліковий запис у відповідному сертифікаті автентичності", +Account Not Found,Обліковий запис не знайдено, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",Під час створення облікового запису для дочірньої компанії {0} батьківський обліковий запис {1} знаходився як обліковий запис книги., +Please convert the parent account in corresponding child company to a group account.,"Будь ласка, перетворіть батьківський рахунок у відповідній дочірній компанії на груповий.", +Invalid Parent Account,Недійсний батьківський рахунок, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Перейменувати його дозволено лише через материнську компанію {0}, щоб уникнути невідповідності.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Якщо ви {0} {1} кількість товару {2}, схема {3} буде застосована до товару.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Якщо ви {0} {1} вартуєте товар {2}, схема {3} буде застосована до товару.", +"As the field {0} is enabled, the field {1} is mandatory.","Оскільки поле {0} ввімкнено, поле {1} є обов’язковим.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Оскільки поле {0} ввімкнено, значення поля {1} має бути більше 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"Не вдається доставити серійний номер {0} товару {1}, оскільки він зарезервований для повного заповнення замовлення на продаж {2}", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Замовлення на продаж {0} має замовлення на товар {1}, ви можете доставити лише зарезервоване {1} проти {0}.", +{0} Serial No {1} cannot be delivered,{0} Серійний номер {1} не може бути доставлений, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Рядок {0}: Субпідрядний елемент є обов’язковим для сировини {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Оскільки сировини достатньо, запит на матеріали не потрібен для складу {0}.", +" If you still want to proceed, please enable {0}.","Якщо ви все ще хочете продовжити, увімкніть {0}.", +The item referenced by {0} - {1} is already invoiced,"Позиція, на яку посилається {0} - {1}, вже виставлена", +Therapy Session overlaps with {0},Сеанс терапії накладається на {0}, +Therapy Sessions Overlapping,"Сеанси терапії, що перекриваються", +Therapy Plans,Плани терапії, +"Item Code, warehouse, quantity are required on row {0}","Код товару, склад, кількість вказуються в рядку {0}", +Get Items from Material Requests against this Supplier,Отримуйте предмети від матеріальних запитів у цього постачальника, +Enable European Access,Увімкнути європейський доступ, +Creating Purchase Order ...,Створення замовлення на придбання ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Виберіть постачальника з постачальників за замовчуванням із наведених нижче пунктів. При виборі замовлення на замовлення буде зроблено лише щодо товарів, що належать обраному Постачальнику.", +Row #{}: You must select {} serial numbers for item {}.,Рядок № {}: Ви повинні вибрати {} серійні номери для товару {}., diff --git a/erpnext/translations/ur.csv b/erpnext/translations/ur.csv index 5e6fa6ab58..aaaef5895f 100644 --- a/erpnext/translations/ur.csv +++ b/erpnext/translations/ur.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',زمرہ Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',زمرہ 'تشخیص' یا 'Vaulation اور کل' کے لیے ہے جب کٹوتی نہیں کی جا سکتی, "Cannot delete Serial No {0}, as it is used in stock transactions",حذف نہیں کرسکتے ہیں سیریل کوئی {0}، یہ اسٹاک لین دین میں استعمال کیا جاتا ہے کے طور پر, Cannot enroll more than {0} students for this student group.,{0} اس طالب علم گروپ کے لیے طالب علموں کو داخلہ سے زیادہ نہیں ہوسکتی., -Cannot find Item with this barcode,اس بار کوڈ کے ساتھ آئٹم نہیں ڈھونڈ سکتا۔, Cannot find active Leave Period,فعال چھوڑ مدت نہیں مل سکا, Cannot produce more Item {0} than Sales Order quantity {1},سیلز آرڈر کی مقدار سے زیادہ آئٹم {0} پیدا نہیں کر سکتے ہیں {1}, Cannot promote Employee with status Left,اسٹیٹ بائیں کے ساتھ ملازم کو فروغ نہیں دے سکتا, @@ -690,7 +689,6 @@ Create Variants,مختلف حالتیں بنائیں۔, "Create and manage daily, weekly and monthly email digests.",بنائیں اور، یومیہ، ہفتہ وار اور ماہانہ ای میل ڈائجسٹ کا انتظام., Create customer quotes,کسٹمر کی قیمت درج بنائیں, Create rules to restrict transactions based on values.,اقدار پر مبنی لین دین کو محدود کرنے کے قوانین تشکیل دیں., -Created By,بنائی گئی, Created {0} scorecards for {1} between: ,{1} کے لئے {1} اسکورकार्डز کے درمیان بنائیں:, Creating Company and Importing Chart of Accounts,کمپنی بنانا اور اکاؤنٹ کا درآمد چارٹ کرنا۔, Creating Fees,فیس تخلیق, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,گودام کے لئے جمع کرانے For row {0}: Enter Planned Qty,قطار {0} کے لئے: منصوبہ بندی کی مقدار درج کریں, "For {0}, only credit accounts can be linked against another debit entry",{0}، صرف کریڈٹ اکاؤنٹس ایک ڈیبٹ داخلے کے خلاف منسلک کیا جا سکتا ہے, "For {0}, only debit accounts can be linked against another credit entry",{0}، صرف ڈیبٹ اکاؤنٹس دوسرے کریڈٹ داخلے کے خلاف منسلک کیا جا سکتا ہے, -Form View,فارم دیکھیں, Forum Activity,فورم سرگرمی, Free item code is not selected,مفت آئٹم کوڈ منتخب نہیں کیا گیا ہے۔, Freight and Forwarding Charges,فریٹ فارورڈنگ اور چارجز, @@ -2638,7 +2635,6 @@ Send SMS,ایس ایم ایس بھیجیں, Send mass SMS to your contacts,بڑے پیمانے پر ایس ایم ایس اپنے رابطوں کو بھیجیں, Sensitivity,حساسیت, Sent,بھیجا, -Serial #,سیریل نمبر, Serial No and Batch,سیریل نمبر اور بیچ, Serial No is mandatory for Item {0},سیریل کوئی آئٹم کے لئے لازمی ہے {0}, Serial No {0} does not belong to Batch {1},سیریل نمبر {0} بیچ سے تعلق نہیں ہے {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ERPNext میں خوش آمدید, What do you need help with?,کیا آپ کے ساتھ مدد کی ضرورت ہے؟, What does it do?,یہ کیا کرتا ہے؟, Where manufacturing operations are carried.,مینوفیکچرنگ آپریشنز کہاں کئے جاتے ہیں., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",بچے کمپنی {0} کا اکاؤنٹ بناتے ہوئے، والدین اکاؤنٹ {1} نہیں مل سکا. براہ کرم متعلقہ COA میں والدین اکاؤنٹ بنائیں, White,وائٹ, Wire Transfer,وائر ٹرانسفر, WooCommerce Products,WooCommerce مصنوعات, @@ -3493,6 +3488,7 @@ Likes,پسند, Merge with existing,موجودہ کے ساتھ ضم, Office,آفس, Orientation,واقفیت, +Parent,والدین, Passive,غیر فعال, Payment Failed,ادائیگی ناکام ہو گیا, Percent,فیصد, @@ -3543,6 +3539,7 @@ Shift,شفٹ۔, Show {0},دکھائیں {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","-" ، "#" ، "." ، "/" ، "{" اور "}" سوائے خصوصی حروف کی نام بندی سیریز میں اجازت نہیں ہے, Target Details,ہدف کی تفصیلات۔, +{0} already has a Parent Procedure {1}.,{0} پہلے سے ہی والدین کا طریقہ کار {1} ہے., API,API, Annual,سالانہ, Approved,منظور, @@ -4241,7 +4238,6 @@ Download as JSON,Json کی طرح ڈاؤن لوڈ کریں۔, End date can not be less than start date,ختم ہونے کی تاریخ شروع کرنے کی تاریخ کے مقابلے میں کم نہیں ہو سکتا, For Default Supplier (Optional),ڈیفالٹ سپلائر کے لئے (اختیاری), From date cannot be greater than To date,تاریخ سے تاریخ سے زیادہ نہیں ہوسکتی ہے, -Get items from,سے اشیاء حاصل, Group by,گروپ سے, In stock,اسٹاک میں, Item name,نام شے, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,کوالٹی فیڈ بیک ٹیمپلیٹ پ Quality Goal,کوالٹی گول۔, Monitoring Frequency,مانیٹرنگ فریکوئینسی۔, Weekday,ہفتہ کا دن۔, -January-April-July-October,جنوری۔ اپریل جولائی۔ اکتوبر۔, -Revision and Revised On,نظر ثانی اور پر نظر ثانی کی, -Revision,نظرثانی, -Revised On,نظر ثانی شدہ, Objectives,مقاصد۔, Quality Goal Objective,کوالٹی گول کا مقصد۔, Objective,مقصد۔, @@ -7574,7 +7566,6 @@ Parent Procedure,والدین کا طریقہ کار, Processes,عمل, Quality Procedure Process,کوالٹی پروسیسر کا عمل۔, Process Description,عمل کی تفصیل, -Child Procedure,بچوں کا طریقہ کار, Link existing Quality Procedure.,موجودہ کوالٹی پروسیجر کو لنک کریں۔, Additional Information,اضافی معلومات, Quality Review Objective,کوالٹی ریویو کا مقصد۔, @@ -8557,7 +8548,6 @@ Purchase Order Trends,آرڈر رجحانات خریدیں, Purchase Receipt Trends,خریداری کی رسید رجحانات, Purchase Register,خریداری رجسٹر, Quotation Trends,کوٹیشن رجحانات, -Quoted Item Comparison,نقل آئٹم موازنہ, Received Items To Be Billed,موصول ہونے والی اشیاء بل بھیجا جائے کرنے کے لئے, Qty to Order,آرڈر کی مقدار, Requested Items To Be Transferred,درخواست کی اشیاء منتقل کیا جائے, @@ -9091,7 +9081,6 @@ Unmarked days,نشان زد دن, Absent Days,غائب دن, Conditions and Formula variable and example,ضوابط اور فارمولہ متغیر اور مثال, Feedback By,تاثرات, -MTNG-.YYYY.-.MM.-.DD.-,ایم ٹی این جی ۔YYYY .-. MM .-. DD.-, Manufacturing Section,مینوفیکچرنگ سیکشن, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",پہلے سے طے شدہ طور پر ، درج کردہ پورے نام کے مطابق کسٹمر کا نام سیٹ کیا جاتا ہے۔ اگر آپ چاہتے ہیں کہ گاہک ایک کے ذریعہ نامزد ہوں, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,نیا سیلز ٹرانزیکشن بناتے وقت طے شدہ قیمت کی فہرست تشکیل دیں۔ اس قیمت کی فہرست سے آئٹم کی قیمتیں لائی جائیں گی۔, @@ -9692,7 +9681,6 @@ Available Balance,دستیاب بیلنس, Reserved Balance,محفوظ توازن, Uncleared Balance,غیرمتوازن توازن, Payment related to {0} is not completed,{0} سے متعلق ادائیگی مکمل نہیں ہوئی ہے, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,قطار # {}: سیریل نمبر {} نہیں۔ {already کا پہلے ہی کسی دوسرے POS انوائس میں لین دین ہوچکا ہے۔ براہ کرم درست سیریل نمبر منتخب کریں۔, Row #{}: Item Code: {} is not available under warehouse {}.,قطار # {}: آئٹم کوڈ: {w گودام under} کے تحت دستیاب نہیں ہے۔, Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,قطار # {}: آئٹم کوڈ کے لئے اسٹاک کی مقدار کافی نہیں ہے: {w گودام}} کے تحت۔ دستیاب مقدار {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,قطار # {}: براہ کرم آئٹم کے خلاف سیریل نمبر اور بیچ منتخب کریں: {} یا لین دین کو مکمل کرنے کیلئے اسے ہٹا دیں۔, @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},گودام {1} میں مقدار Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,براہ کرم اسٹاک کی ترتیبات میں منفی اسٹاک کی اجازت دیں یا آگے بڑھنے کے لئے اسٹاک اندراج تشکیل دیں۔, No Inpatient Record found against patient {0},مریض against 0 against کے خلاف کوئی مریض مریض نہیں ملا, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,مریض انکاؤنٹر} 1} کے خلاف ایک مریض مریض دوائی آرڈر {0} پہلے سے موجود ہے۔, +Allow In Returns,واپسی میں اجازت دیں, +Hide Unavailable Items,دستیاب چیزیں چھپائیں, +Apply Discount on Discounted Rate,چھوٹ کی شرح پر چھوٹ لگائیں, +Therapy Plan Template,تھراپی پلان سانچہ, +Fetching Template Details,سانچے کی تفصیلات کی بازیافت, +Linked Item Details,منسلک آئٹم کی تفصیلات, +Therapy Types,تھراپی کی اقسام, +Therapy Plan Template Detail,تھراپی پلان سانچہ تفصیل, +Non Conformance,غیر ہم آہنگی, +Process Owner,عمل مالک, +Corrective Action,درست عمل, +Preventive Action,احتیاطی کارروائی, +Problem,مسئلہ, +Responsible,ذمہ دار, +Completion By,تکمیل بذریعہ, +Process Owner Full Name,پراسیس مالک کا پورا نام, +Right Index,حق اشاریہ, +Left Index,بایاں اشاریہ, +Sub Procedure,ذیلی طریقہ کار, +Passed,پاس ہوا, +Print Receipt,رسید وصول کریں, +Edit Receipt,رسید میں ترمیم کریں, +Focus on search input,تلاش کے ان پٹ پر توجہ دیں, +Focus on Item Group filter,آئٹم گروپ کے فلٹر پر توجہ دیں, +Checkout Order / Submit Order / New Order,چیک آؤٹ آرڈر / آرڈر / نیا آرڈر جمع کروائیں, +Add Order Discount,آرڈر ڈسکاؤنٹ شامل کریں, +Item Code: {0} is not available under warehouse {1}.,آئٹم کوڈ: are 0 w گودام under 1} کے تحت دستیاب نہیں ہے۔, +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,گودام {1} کے تحت آئٹم {0} کے لئے سیریل نمبرز دستیاب نہیں ہیں۔ برائے مہربانی گودام تبدیل کرنے کی کوشش کریں۔, +Fetched only {0} available serial numbers.,صرف {0} دستیاب سیریل نمبر لے آئے۔, +Switch Between Payment Modes,ادائیگی کے طریقوں کے درمیان سوئچ کریں, +Enter {0} amount.,{0} رقم درج کریں۔, +You don't have enough points to redeem.,آپ کے پاس چھڑانے کے لئے اتنے پوائنٹس نہیں ہیں۔, +You can redeem upto {0}.,آپ {0 to تک تلافی کرسکتے ہیں۔, +Enter amount to be redeemed.,چھڑانے کے لئے رقم درج کریں۔, +You cannot redeem more than {0}.,آپ {0 than سے زیادہ کو چھڑا نہیں سکتے۔, +Open Form View,فارم کا نظارہ کھولیں, +POS invoice {0} created succesfully,POS انوائس {0 suc کامیابی کے ساتھ تشکیل دیا گیا, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,آئٹم کوڈ کے لئے اسٹاک کی مقدار کافی نہیں ہے: are 0 w گودام} 1} کے تحت۔ دستیاب مقدار {2}., +Serial No: {0} has already been transacted into another POS Invoice.,سیریل نمبر: {0 already پہلے ہی کسی دوسرے POS انوائس میں لین دین ہوچکا ہے۔, +Balance Serial No,بیلنس سیریل نمبر, +Warehouse: {0} does not belong to {1},گودام: {0} کا تعلق {1} سے نہیں ہے, +Please select batches for batched item {0},براہ کرم بیچ والے آئٹم کے لئے بیچ منتخب کریں {0}, +Please select quantity on row {0},براہ کرم قطار quantity 0 quantity پر مقدار منتخب کریں, +Please enter serial numbers for serialized item {0},براہ کرم سیریلائزڈ آئٹم کے لئے سیریل نمبر درج کریں serial 0}, +Batch {0} already selected.,بیچ {0} پہلے ہی منتخب ہے۔, +Please select a warehouse to get available quantities,براہ کرم دستیاب مقدار کو حاصل کرنے کے لئے کوئی گودام منتخب کریں, +"For transfer from source, selected quantity cannot be greater than available quantity",ماخذ سے منتقلی کے لئے ، منتخب شدہ مقدار دستیاب مقدار سے زیادہ نہیں ہوسکتی ہے, +Cannot find Item with this Barcode,اس بار کوڈ کے ساتھ آئٹم نہیں مل پائے, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0 mand لازمی ہے۔ ہوسکتا ہے کہ کرنسی ایکسچینج کا ریکارڈ {1} سے {2 for کے لئے نہیں بنایا گیا ہو, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{نے اس سے منسلک اثاثے جمع کروائے ہیں۔ خریداری کی واپسی کو بنانے کے ل You آپ کو اثاثے منسوخ کرنے کی ضرورت ہے۔, +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,اس دستاویز کو منسوخ نہیں کیا جاسکتا ہے کیونکہ یہ جمع شدہ اثاثہ {0 with سے منسلک ہے۔ براہ کرم جاری رکھنے کے لئے اسے منسوخ کریں۔, +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,قطار # {}: سیریل نمبر {already پہلے ہی کسی دوسرے POS انوائس میں لین دین ہوچکا ہے۔ براہ کرم درست سیریل نمبر منتخب کریں۔, +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,قطار # {}: سیریل نمبر براہ کرم درست سیریل نمبر منتخب کریں۔, +Item Unavailable,آئٹم دستیاب نہیں ہے, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},قطار # {}: سیریل نمبر {be واپس نہیں آسکتی ہے کیونکہ اس کا اصل انوائس میں ٹرانزیکشن نہیں ہوا تھا {}, +Please set default Cash or Bank account in Mode of Payment {},براہ کرم ادائیگی کے انداز میں پہلے سے طے شدہ نقد یا بینک اکاؤنٹ مقرر کریں set, +Please set default Cash or Bank account in Mode of Payments {},براہ کرم ادائیگی کے انداز میں پہلے سے طے شدہ نقد یا بینک اکاؤنٹ مقرر کریں {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,براہ کرم یقینی بنائیں کہ}} اکاؤنٹ بیلنس شیٹ اکاؤنٹ ہے۔ آپ پیرنٹ اکاؤنٹ کو بیلنس شیٹ اکاؤنٹ میں تبدیل کرسکتے ہیں یا کوئی مختلف اکاؤنٹ منتخب کرسکتے ہیں۔, +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,براہ کرم یقینی بنائیں کہ {} اکاؤنٹ قابل ادائیگی والا اکاؤنٹ ہے۔ اکاؤنٹ کی قسم ادائیگی کیلئے تبدیل کریں یا ایک مختلف اکاؤنٹ منتخب کریں۔, +Row {}: Expense Head changed to {} ,قطار {}: اخراجات کا سر changed to میں بدل گیا, +because account {} is not linked to warehouse {} ,کیونکہ اکاؤنٹ {w گودام سے منسلک نہیں ہے}}, +or it is not the default inventory account,یا یہ پہلے سے طے شدہ انوینٹری اکاؤنٹ نہیں ہے, +Expense Head Changed,اخراجات کا سر بدلا, +because expense is booked against this account in Purchase Receipt {},کیونکہ خریداری کی رسید in in میں اس اکاؤنٹ کے خلاف اخراجات درج ہیں, +as no Purchase Receipt is created against Item {}. ,چونکہ آئٹم against against کے خلاف خریداری کی رسید تخلیق نہیں ہوتی ہے۔, +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,جب خریداری کی رسید خریداری کی رسید کے بعد بنائی جاتی ہے تو معاملات کا حساب کتاب سنبھالنے کے لئے یہ کیا جاتا ہے, +Purchase Order Required for item {},آئٹم for for کے لئے خریداری کا آرڈر ضروری ہے, +To submit the invoice without purchase order please set {} ,خریداری کے آرڈر کے بغیر انوائس جمع کروانے کے لئے براہ کرم set set سیٹ کریں, +as {} in {},جیسا کہ {} میں {, +Mandatory Purchase Order,لازمی خریداری کا آرڈر, +Purchase Receipt Required for item {},آئٹم for item کے لئے خریداری کی رسید درکار ہے, +To submit the invoice without purchase receipt please set {} ,خریداری کی رسید کے بغیر انوائس جمع کروانے کے لئے براہ کرم set set سیٹ کریں, +Mandatory Purchase Receipt,لازمی خریداری کی رسید, +POS Profile {} does not belongs to company {},POS پروفائل {company کمپنی سے تعلق نہیں رکھتا ہے {}, +User {} is disabled. Please select valid user/cashier,صارف} disabled غیر فعال ہے۔ براہ کرم درست صارف / کیشیئر منتخب کریں, +Row #{}: Original Invoice {} of return invoice {} is {}. ,قطار # {}: اصل انوائس {return واپسی انوائس کا {} {} ہے۔, +Original invoice should be consolidated before or along with the return invoice.,واپسی انوائس سے پہلے یا اس کے ساتھ اصل انوائس کو مستحکم کیا جانا چاہئے۔, +You can add original invoice {} manually to proceed.,آپ آگے بڑھنے کے لئے دستی طور پر اصل انوائس {add شامل کرسکتے ہیں۔, +Please ensure {} account is a Balance Sheet account. ,براہ کرم یقینی بنائیں کہ}} اکاؤنٹ بیلنس شیٹ اکاؤنٹ ہے۔, +You can change the parent account to a Balance Sheet account or select a different account.,آپ پیرنٹ اکاؤنٹ کو بیلنس شیٹ اکاؤنٹ میں تبدیل کرسکتے ہیں یا کوئی مختلف اکاؤنٹ منتخب کرسکتے ہیں۔, +Please ensure {} account is a Receivable account. ,براہ کرم یقینی بنائیں کہ}} اکاؤنٹ قابل وصول اکاؤنٹ ہے۔, +Change the account type to Receivable or select a different account.,اکاؤنٹ کی قسم کو قابل وصول میں تبدیل کریں یا ایک مختلف اکاؤنٹ منتخب کریں۔, +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},earned canceled کو منسوخ نہیں کیا جاسکتا ہے کیوں کہ حاصل کردہ وفاداری پوائنٹس کو چھڑا لیا گیا ہے۔ پہلے {} نہیں {cancel کو منسوخ کریں, +already exists,پہلے سے موجود ہے, +POS Closing Entry {} against {} between selected period,POS اختتامی اندراج selected} کے خلاف selected selected منتخب مدت کے درمیان, +POS Invoice is {},POS انوائس {is ہے, +POS Profile doesn't matches {},POS پروفائل matches matches سے مماثل نہیں ہے, +POS Invoice is not {},POS انوائس {is نہیں ہے, +POS Invoice isn't created by user {},POS انوائس صارف by by کے ذریعہ نہیں بنایا گیا ہے, +Row #{}: {},قطار # {}: {, +Invalid POS Invoices,غلط POS رسیدیں, +Please add the account to root level Company - {},براہ کرم اکاؤنٹ کو روٹ لیول کمپنی میں شامل کریں - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",چائلڈ کمپنی for 0 for کے لئے اکاؤنٹ بنانے کے دوران ، والدین کا اکاؤنٹ {1 found نہیں ملا۔ براہ کرم متعلقہ COA میں پیرنٹ اکاؤنٹ بنائیں, +Account Not Found,اکاؤنٹ نہیں پایا, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",چائلڈ کمپنی account 0 for کے لئے اکاؤنٹ بناتے وقت ، والدین اکاؤنٹ} 1 a ایک لیجر اکاؤنٹ کے بطور ملا۔, +Please convert the parent account in corresponding child company to a group account.,براہ کرم متعلقہ چائلڈ کمپنی میں پیرنٹ اکاؤنٹ کو کسی گروپ اکاؤنٹ میں تبدیل کریں۔, +Invalid Parent Account,غلط پیرنٹ اکاؤنٹ, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",بدعنوانی سے بچنے کے لئے اس کا نام تبدیل کرنے کی اجازت صرف پیرنٹ کمپنی via 0} کے توسط سے ہے۔, +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.",اگر آپ {0} {1} مقدار کی مقدار {2} ، اسکیم {3 the کا اطلاق آئٹم پر کیا جائے گا۔, +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.",اگر آپ item 0} {1} قابل آئٹم {2} ہیں تو ، اس اسکیم scheme 3 the کا اطلاق آئٹم پر ہوگا۔, +"As the field {0} is enabled, the field {1} is mandatory.",چونکہ فیلڈ {0} فعال ہے ، فیلڈ {1} لازمی ہے۔, +"As the field {0} is enabled, the value of the field {1} should be more than 1.",چونکہ فیلڈ {0} فعال ہے ، اس فیلڈ کی قیمت 1} 1 سے زیادہ ہونی چاہئے۔, +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},آئٹم {1} کے سیریل نمبر {0 deliver کی فراہمی نہیں کی جاسکتی ہے کیونکہ یہ سیلز آرڈر f 2 full کے ساتھ مکمل ہے۔, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.",سیلز آرڈر {0} میں آئٹم {1} کے لئے بکنگ ہے ، آپ صرف {0} کے مقابلہ میں محفوظ {1 deliver فراہم کرسکتے ہیں۔, +{0} Serial No {1} cannot be delivered,{0} سیریل نمبر {1} کی فراہمی نہیں ہوسکتی ہے, +Row {0}: Subcontracted Item is mandatory for the raw material {1},قطار {0}: خام مال for 1 for کے لئے ضمنی معاہدہ آئٹم لازمی ہے, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.",چونکہ کافی خام مال موجود ہیں ، لہذا گودام {0} کے لئے مٹیریل ریکوسٹ کی ضرورت نہیں ہے۔, +" If you still want to proceed, please enable {0}.",اگر آپ اب بھی آگے بڑھنا چاہتے ہیں تو ، براہ کرم {0 enable کو فعال کریں۔, +The item referenced by {0} - {1} is already invoiced,جس شے کا حوالہ {0} - {1} ہے پہلے ہی انوائس کیا گیا ہے, +Therapy Session overlaps with {0},تھراپی سیشن {0 with کے ساتھ اوورلیپ ہوتا ہے, +Therapy Sessions Overlapping,تھراپی سیشن اوور لیپنگ, +Therapy Plans,تھراپی کے منصوبے, +"Item Code, warehouse, quantity are required on row {0}",آئٹم کوڈ ، گودام ، مقدار قطار میں ضروری ہے {0}, +Get Items from Material Requests against this Supplier,اس سپلائر کے خلاف مادی درخواستوں سے اشیا حاصل کریں, +Enable European Access,یورپی رسائی کو فعال کریں, +Creating Purchase Order ...,خریداری کا آرڈر تشکیل دے رہا ہے…, +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",ذیل میں آئٹمز کے ڈیفالٹ سپلائرز میں سے ایک سپلائر منتخب کریں۔ انتخاب پر ، خریداری کا آرڈر صرف منتخب کردہ سپلائر سے متعلقہ اشیاء کے خلاف کیا جائے گا۔, +Row #{}: You must select {} serial numbers for item {}.,قطار # {}: آپ کو آئٹم for for کے لئے}} سیریل نمبرز منتخب کرنا ہوں گے۔, diff --git a/erpnext/translations/uz.csv b/erpnext/translations/uz.csv index 9287ff7184..c983797aae 100644 --- a/erpnext/translations/uz.csv +++ b/erpnext/translations/uz.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',"Ba Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',Qaysi kategoriya uchun "Baholash" yoki "Vaulusiya va jami", "Cannot delete Serial No {0}, as it is used in stock transactions","Serial No {0} o'chirib tashlanmaydi, chunki u birja bitimlarida qo'llaniladi", Cannot enroll more than {0} students for this student group.,Ushbu talabalar guruhida {0} dan ortiq talabalarni ro'yxatdan o'tkazib bo'lmaydi., -Cannot find Item with this barcode,Ushbu shtrix-kod yordamida elementni topib bo'lmaydi, Cannot find active Leave Period,Faol chiqish davri topilmadi, Cannot produce more Item {0} than Sales Order quantity {1},{0} Savdo buyurtma miqdoridan ko'proq {0} mahsulot ishlab chiqarish mumkin emas., Cannot promote Employee with status Left,Ishtirokchi maqomini chapga targ'ib qila olmaydi, @@ -690,7 +689,6 @@ Create Variants,Variantlarni yarating, "Create and manage daily, weekly and monthly email digests.","Kundalik, haftalik va oylik elektron pochta digestlarini yarating va boshqaring.", Create customer quotes,Xaridor taklifini yarating, Create rules to restrict transactions based on values.,Jarayonlarni qadriyatlar asosida cheklash uchun qoidalar yarating., -Created By,Tomonidan yaratilgan, Created {0} scorecards for {1} between: ,{1} uchun {0} ko'rsatkichlar jadvalini yaratdi:, Creating Company and Importing Chart of Accounts,Kompaniyani yaratish va hisoblar jadvalini import qilish, Creating Fees,Narxlarni yaratish, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Yuborishdan oldin ombor uchun talab qili For row {0}: Enter Planned Qty,{0} qatoriga: rejali qty kiriting, "For {0}, only credit accounts can be linked against another debit entry",{0} uchun faqat kredit hisoblari boshqa to'lov usullariga bog'liq bo'lishi mumkin, "For {0}, only debit accounts can be linked against another credit entry",{0} uchun faqat bank hisoblari boshqa kredit yozuvlari bilan bog'lanishi mumkin, -Form View,Formasi ko'rinishi, Forum Activity,Forum faoliyati, Free item code is not selected,Bepul mahsulot kodi tanlanmagan, Freight and Forwarding Charges,Yuk va ekspeditorlik xarajatlari, @@ -2638,7 +2635,6 @@ Send SMS,SMS yuborish, Send mass SMS to your contacts,Kontaktlaringizga ommaviy SMS yuboring, Sensitivity,Ta'sirchanlik, Sent,Yuborildi, -Serial #,Seriya #, Serial No and Batch,Seriya raqami va to'plami, Serial No is mandatory for Item {0},Serial No {0} uchun majburiy emas, Serial No {0} does not belong to Batch {1},No {0} ketma-ketligi {1} guruhiga tegishli emas, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,ERPNext-ga xush kelibsiz, What do you need help with?,Sizga nima yordam kerak?, What does it do?,U nima qiladi?, Where manufacturing operations are carried.,Ishlab chiqarish operatsiyalari olib borilayotgan joylarda., -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","{0} bolalar kompaniyasida hisob yaratishda {1} ota-ona hisobi topilmadi. Iltimos, tegishli COAda ota-ona hisobini yarating", White,Oq rang, Wire Transfer,Telegraf ko'chirmasi, WooCommerce Products,WooCommerce mahsulotlari, @@ -3493,6 +3488,7 @@ Likes,Yoqdi, Merge with existing,Mavjud bilan birlashtirilsin, Office,Ofis, Orientation,Yo'nalish, +Parent,Ota-onalar, Passive,Passiv, Payment Failed,To'lov amalga oshmadi, Percent,Foiz, @@ -3543,6 +3539,7 @@ Shift,Shift, Show {0},{0} ni ko'rsatish, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",""-", "#", ".", "/", "{" Va "}" belgilaridan tashqari maxsus belgilarga ruxsat berilmaydi.", Target Details,Maqsad tafsilotlari, +{0} already has a Parent Procedure {1}.,{0} allaqachon Ota-ona tartibiga ega {1}., API,API, Annual,Yillik, Approved,Tasdiqlandi, @@ -4241,7 +4238,6 @@ Download as JSON,Json sifatida yuklab oling, End date can not be less than start date,Tugash sanasi Boshlanish sanasidan past bo'lishi mumkin emas, For Default Supplier (Optional),Standart yetkazib beruvchi (ixtiyoriy), From date cannot be greater than To date,Sana Sana Sana uchun katta bo'lishi mumkin emas, -Get items from,Elementlarni oling, Group by,Guruh tomonidan, In stock,Omborda mavjud; sotuvda mavjud, Item name,Mavzu nomi, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Sifat bo'yicha fikrlar shablonining para Quality Goal,Sifat maqsadi, Monitoring Frequency,Monitoring chastotasi, Weekday,Hafta kuni, -January-April-July-October,Yanvar-aprel-iyul-iyul-oktyabr, -Revision and Revised On,Qayta ko'rib chiqilgan va qayta ko'rib chiqilgan, -Revision,Tuzatish, -Revised On,Qayta ishlangan, Objectives,Maqsadlar, Quality Goal Objective,Sifat maqsadi, Objective,Maqsad, @@ -7574,7 +7566,6 @@ Parent Procedure,Ota-onalar tartibi, Processes,Jarayonlar, Quality Procedure Process,Sifat jarayoni, Process Description,Jarayon tavsifi, -Child Procedure,Bolalar protsedurasi, Link existing Quality Procedure.,Mavjud sifat tartibini bog'lang., Additional Information,Qo'shimcha ma'lumot, Quality Review Objective,Sifatni tekshirish maqsadi, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Buyurtma tendentsiyalarini sotib olish, Purchase Receipt Trends,Qabul rejasi xaridlari, Purchase Register,Xarid qilish Register, Quotation Trends,Iqtiboslar tendentsiyalari, -Quoted Item Comparison,Qisqartirilgan ob'ektni solishtirish, Received Items To Be Billed,Qabul qilinadigan buyumlar, Qty to Order,Buyurtma miqdori, Requested Items To Be Transferred,Talab qilingan narsalarni yuborish, @@ -9091,7 +9081,6 @@ Unmarked days,Belgilanmagan kunlar, Absent Days,Yo'q kunlar, Conditions and Formula variable and example,Shartlar va formulalar o'zgaruvchisi va misol, Feedback By,Fikr-mulohaza, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYYY .-. MM .-. DD.-, Manufacturing Section,Ishlab chiqarish bo'limi, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Odatiy bo'lib, mijozning ismi kiritilgan to'liq ismga binoan o'rnatiladi. Agar siz mijozlar a tomonidan nomlanishini istasangiz", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Yangi savdo operatsiyasini yaratishda standart narxlar ro'yxatini sozlang. Mahsulotlar narxi ushbu narxlar ro'yxatidan olinadi., @@ -9692,7 +9681,6 @@ Available Balance,Mavjud qoldiq, Reserved Balance,Zaxira qoldig'i, Uncleared Balance,Tozalanmagan qoldiq, Payment related to {0} is not completed,{0} bilan bog'liq to'lov tugallanmagan, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,"Qator # {}: ketma-ketlik {}. {} allaqachon boshqa POS-fakturaga o'tkazilgan. Iltimos, tegishli seriya raqamini tanlang.", Row #{}: Item Code: {} is not available under warehouse {}.,№ {} qator: Mahsulot kodi: {} omborxonada mavjud emas {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Qator # {}: Mahsulot kodi uchun zaxira miqdori etarli emas: {} omborxonada {}. Mavjud miqdor {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,"№ {} qator: Iltimos, ketma-ketlikni tanlang va bitimni tanlang: {} yoki tranzaktsiyani yakunlash uchun uni olib tashlang.", @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Miqdor {0} omborda {1} mavjud em Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,"Iltimos, "Stok" sozlamalarida "Negative Stock" ga ruxsat bering yoki "Stock Entry" yozuvini yarating.", No Inpatient Record found against patient {0},Bemorga qarshi statsionar yozuvlar topilmadi {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,{0} Bemor bilan uchrashishga qarshi {1} statsionar davolanish to'g'risida buyruq allaqachon mavjud., +Allow In Returns,Qaytishga ruxsat berish, +Hide Unavailable Items,Mavjud bo'lmagan narsalarni yashirish, +Apply Discount on Discounted Rate,Chegirmali narx bo'yicha chegirma qo'llang, +Therapy Plan Template,Terapiya rejasi shabloni, +Fetching Template Details,Andoza tafsilotlari olinmoqda, +Linked Item Details,Bog'langan element tafsilotlari, +Therapy Types,Terapiya turlari, +Therapy Plan Template Detail,Terapiya rejasi shablonining tafsiloti, +Non Conformance,Mos kelmaslik, +Process Owner,Jarayon egasi, +Corrective Action,Tuzatuv, +Preventive Action,Profilaktik harakatlar, +Problem,Muammo, +Responsible,Mas'ul, +Completion By,Tugatish vaqti bilan, +Process Owner Full Name,Jarayon egasining to'liq ismi, +Right Index,O'ng indeks, +Left Index,Chap ko'rsatkich, +Sub Procedure,Sub protsedura, +Passed,O'tdi, +Print Receipt,Kvitansiyani chop etish, +Edit Receipt,Kvitansiyani tahrirlash, +Focus on search input,Qidiruv kiritishga e'tiboringizni qarating, +Focus on Item Group filter,Element guruhi filtriga e'tiboringizni qarating, +Checkout Order / Submit Order / New Order,Chiqish tartibi / Buyurtmani topshirish / Yangi buyurtma, +Add Order Discount,Buyurtma uchun chegirma qo'shing, +Item Code: {0} is not available under warehouse {1}.,Mahsulot kodi: {0} omborxonada mavjud emas {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,"{0} omborxonada {1} seriya raqamlari mavjud emas. Iltimos, omborni o'zgartirishga harakat qiling.", +Fetched only {0} available serial numbers.,Faqat mavjud bo'lgan {0} seriya raqamlarini olib keldilar., +Switch Between Payment Modes,To'lov rejimlari o'rtasida almashinish, +Enter {0} amount.,{0} miqdorini kiriting., +You don't have enough points to redeem.,Sizda sotib olish uchun yetarli ball yo‘q., +You can redeem upto {0}.,Siz {0} ga qadar foydalanishingiz mumkin., +Enter amount to be redeemed.,Qabul qilinadigan summani kiriting., +You cannot redeem more than {0}.,Siz {0} dan ortiq mablag'ni ishlata olmaysiz., +Open Form View,Shakl ko'rinishini oching, +POS invoice {0} created succesfully,POS-faktura {0} muvaffaqiyatli yaratildi, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Birja miqdori mahsulot kodi uchun etarli emas: {0} omborxonada {1}. Mavjud miqdor {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Seriya raqami: {0} allaqachon boshqa POS-fakturaga o'tkazilgan., +Balance Serial No,Balans seriyasi №, +Warehouse: {0} does not belong to {1},Ombor: {0} {1} ga tegishli emas, +Please select batches for batched item {0},Paketlangan element uchun partiyalarni tanlang {0}, +Please select quantity on row {0},{0} qatoridagi miqdorni tanlang, +Please enter serial numbers for serialized item {0},Seriallangan element uchun seriya raqamlarini kiriting {0}, +Batch {0} already selected.,{0} partiyasi allaqachon tanlangan., +Please select a warehouse to get available quantities,"Iltimos, mavjud miqdorni olish uchun omborni tanlang", +"For transfer from source, selected quantity cannot be greater than available quantity",Manbadan o'tkazish uchun tanlangan miqdor mavjud miqdordan katta bo'lishi mumkin emas, +Cannot find Item with this Barcode,Ushbu shtrix-kod bilan element topilmadi, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},"{0} majburiydir. Ehtimol, {1} dan {2} gacha valyuta almashinuvi bo'yicha yozuv yaratilmagan bo'lishi mumkin", +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} unga bog'langan aktivlarni taqdim etdi. Xaridni qaytarish uchun aktivlarni bekor qilishingiz kerak., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,"Ushbu hujjatni bekor qilish mumkin emas, chunki u taqdim etilgan aktiv ({0}) bilan bog'langan. Davom etish uchun uni bekor qiling.", +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,"Qator # {}: Seriya raqami {} allaqachon boshqa POS-fakturaga o'tkazilgan. Iltimos, tegishli seriya raqamini tanlang.", +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,"№ {} qator: Seriya raqami. {} Allaqachon boshqa POS-fakturaga o'tkazilgan. Iltimos, tegishli seriya raqamini tanlang.", +Item Unavailable,Mahsulot mavjud emas, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},"Qator # {}: Seriya No {} ni qaytarib bo'lmaydi, chunki u asl fakturada ishlamagan {}", +Please set default Cash or Bank account in Mode of Payment {},"Iltimos, to'lov usulida birlamchi naqd yoki bank hisobini o'rnating {}", +Please set default Cash or Bank account in Mode of Payments {},"Iltimos, To'lov rejimida birlamchi naqd yoki bank hisobini o'rnating {}", +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,{} Hisobining Balans hisobi ekanligini tekshiring. Siz ota-ona hisobini Balans hisobvarag'iga o'zgartirishingiz yoki boshqa hisobni tanlashingiz mumkin., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,"Iltimos, {} hisobining to'lanadigan hisob ekanligini tekshiring. Hisob turini "To'lanadigan" ga o'zgartiring yoki boshqa hisob qaydnomasini tanlang.", +Row {}: Expense Head changed to {} ,{} Qatori: Xarajat boshi {} ga o'zgartirildi, +because account {} is not linked to warehouse {} ,chunki {} hisob omborga ulanmagan {}, +or it is not the default inventory account,yoki bu standart inventarizatsiya hisobi emas, +Expense Head Changed,Xarajat boshi o'zgartirildi, +because expense is booked against this account in Purchase Receipt {},chunki ushbu hisobvarag'i uchun Xarid kvitansiyasida xarajatlar belgilanadi {}, +as no Purchase Receipt is created against Item {}. ,chunki {} bandiga muvofiq sotib olish kvitansiyasi yaratilmagan., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Bu Sotib olish to'g'risida hisobvaraqdan keyin Sotib olish to'g'risida kvitansiya tuzilgan holatlarni hisobga olish uchun amalga oshiriladi, +Purchase Order Required for item {},{} Elementi uchun buyurtma talab qilinadi, +To submit the invoice without purchase order please set {} ,Hisob-fakturani sotib olish buyurtmasisiz topshirish uchun {} ni o'rnating., +as {} in {},{} ichida {}, +Mandatory Purchase Order,Majburiy sotib olish buyurtmasi, +Purchase Receipt Required for item {},{} Elementi uchun sotib olish kvitansiyasi talab qilinadi, +To submit the invoice without purchase receipt please set {} ,Hisob-fakturani xarid kvitansiyasiz topshirish uchun {} ni o'rnating., +Mandatory Purchase Receipt,Majburiy sotib olish kvitansiyasi, +POS Profile {} does not belongs to company {},POS profili {} kompaniyaga tegishli emas {}, +User {} is disabled. Please select valid user/cashier,"{} Foydalanuvchisi o'chirilgan. Iltimos, haqiqiy foydalanuvchi / kassirni tanlang", +Row #{}: Original Invoice {} of return invoice {} is {}. ,Qator # {}: Hisob-fakturaning asl nusxasi {} qaytariladigan hisob-fakturasi {}: {}., +Original invoice should be consolidated before or along with the return invoice.,Hisob-fakturaning asl nusxasi qaytarib yuborilgan schyotdan oldin yoki birga to'plangan bo'lishi kerak., +You can add original invoice {} manually to proceed.,Davom etish uchun asl fakturani {} qo'lda qo'shishingiz mumkin., +Please ensure {} account is a Balance Sheet account. ,{} Hisobining Balans hisobi ekanligini tekshiring., +You can change the parent account to a Balance Sheet account or select a different account.,Siz ota-ona hisobini Balans hisobvarag'iga o'zgartirishingiz yoki boshqa hisobni tanlashingiz mumkin., +Please ensure {} account is a Receivable account. ,"Iltimos, {} hisobining debitorlik hisobi ekanligiga ishonch hosil qiling.", +Change the account type to Receivable or select a different account.,Hisob turini "Qabul qilinadigan" deb o'zgartiring yoki boshqa hisob qaydnomasini tanlang., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},"Sodiqlik ballari ishlatilganligi sababli, {} bekor qilinmaydi. Avval {} Yo'q {} ni bekor qiling", +already exists,allaqachon mavjud, +POS Closing Entry {} against {} between selected period,Belgilangan davr oralig'ida POS yopilish usuli {} qarshi {}, +POS Invoice is {},POS-faktura: {}, +POS Profile doesn't matches {},POS profili mos kelmadi {}, +POS Invoice is not {},POS-faktura {} emas, +POS Invoice isn't created by user {},POS-fakturani foydalanuvchi yaratmagan {}, +Row #{}: {},Qator # {}: {}, +Invalid POS Invoices,Noto'g'ri POS-fakturalar, +Please add the account to root level Company - {},"Iltimos, hisobni root level Company-ga qo'shing - {}", +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Child Company {0} uchun hisob yaratishda ota-ona hisobi {1} topilmadi. Iltimos, tegishli COA-da ota-ona hisobini yarating", +Account Not Found,Hisob topilmadi, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",Child Company {0} uchun hisob yaratishda ota-ona hisobi {1} buxgalteriya hisobi sifatida topilgan., +Please convert the parent account in corresponding child company to a group account.,"Iltimos, tegishli bolalar kompaniyasidagi ota-ona hisobini guruh hisobiga o'zgartiring.", +Invalid Parent Account,Ota-ona hisobi yaroqsiz, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",Mos kelmaslik uchun uni qayta nomlash faqat bosh kompaniya orqali amalga oshiriladi ({0})., +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Agar siz {0} {1} elementning miqdori {2} bo'lsa, unda {3} sxemasi qo'llaniladi.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Agar siz {0} {1} elementga arziydigan bo'lsangiz {2}, {3} sxemasi buyumda qo'llaniladi.", +"As the field {0} is enabled, the field {1} is mandatory.","{0} maydoni yoqilganligi sababli, {1} maydoni majburiy hisoblanadi.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","{0} maydoni yoqilganligi sababli, {1} maydonining qiymati 1 dan ortiq bo'lishi kerak.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},"{1} bandning {0} ketma-ketligini etkazib berolmayman, chunki u {2} savdo buyurtmalarini to'ldirish uchun mo'ljallangan.", +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Sotish uchun buyurtma {0} - {1} bandi uchun buyurtma mavjud, siz faqat {1} ga qarshi buyurtmani {0} qarshi etkazib berishingiz mumkin.", +{0} Serial No {1} cannot be delivered,{0} Seriya № {1} yetkazib berilmaydi, +Row {0}: Subcontracted Item is mandatory for the raw material {1},{0} qatori: Xom ashyo uchun subpudrat shartnomasi majburiydir {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Xom ashyo etarli bo'lganligi sababli, {0} omborxonasi uchun material talab qilinmaydi.", +" If you still want to proceed, please enable {0}.","Agar davom etishni xohlasangiz, iltimos, {0} ni yoqing.", +The item referenced by {0} - {1} is already invoiced,{0} - {1} tomonidan havola qilingan element allaqachon hisob-fakturaga ega, +Therapy Session overlaps with {0},Terapiya mashg'uloti {0} bilan takrorlanadi, +Therapy Sessions Overlapping,Terapiya mashg'ulotlari bir-birini qoplaydi, +Therapy Plans,Terapiya rejalari, +"Item Code, warehouse, quantity are required on row {0}","Mahsulot kodi, ombor, miqdori {0} qatorida talab qilinadi", +Get Items from Material Requests against this Supplier,Ushbu etkazib beruvchiga qarshi material talablaridan narsalarni oling, +Enable European Access,Evropaga kirishni yoqish, +Creating Purchase Order ...,Xarid buyurtmasi yaratilmoqda ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Quyidagi mahsulotlarning standart etkazib beruvchilardan etkazib beruvchini tanlang. Tanlovda, faqat tanlangan etkazib beruvchiga tegishli buyumlarga qarshi Sotib olish to'g'risida buyurtma beriladi.", +Row #{}: You must select {} serial numbers for item {}.,Qator # {}: Siz {} element uchun seriya raqamlarini {} tanlashingiz kerak., diff --git a/erpnext/translations/vi.csv b/erpnext/translations/vi.csv index b7e67b9ba2..03ff2ccc38 100644 --- a/erpnext/translations/vi.csv +++ b/erpnext/translations/vi.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',Không t Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',không thể trừ khi mục là cho 'định giá' hoặc 'Vaulation và Total', "Cannot delete Serial No {0}, as it is used in stock transactions","Không thể xóa số Seri {0}, vì nó được sử dụng trong các giao dịch hàng tồn kho", Cannot enroll more than {0} students for this student group.,Không thể ghi danh hơn {0} sinh viên cho nhóm sinh viên này., -Cannot find Item with this barcode,Không thể tìm thấy mục có mã vạch này, Cannot find active Leave Period,Không thể tìm thấy Khoảng thời gian rời khỏi hoạt động, Cannot produce more Item {0} than Sales Order quantity {1},Không thể sản xuất {0} nhiều hơn số lượng trên đơn đặt hàng {1}, Cannot promote Employee with status Left,Không thể quảng bá Nhân viên có trạng thái Trái, @@ -690,7 +689,6 @@ Create Variants,Tạo các biến thể, "Create and manage daily, weekly and monthly email digests.","Tạo và quản lý hàng ngày, hàng tuần và hàng tháng tiêu hóa email.", Create customer quotes,Tạo dấu ngoặc kép của khách hàng, Create rules to restrict transactions based on values.,Tạo các quy tắc để hạn chế các giao dịch dựa trên giá trị., -Created By,Tạo ra bởi, Created {0} scorecards for {1} between: ,Đã tạo {0} phiếu ghi điểm cho {1} giữa:, Creating Company and Importing Chart of Accounts,Tạo công ty và nhập biểu đồ tài khoản, Creating Fees,Tạo các khoản phí, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,Cho kho là cần thiết trước khi d For row {0}: Enter Planned Qty,Đối với hàng {0}: Nhập số lượng dự kiến, "For {0}, only credit accounts can be linked against another debit entry","Đối với {0}, tài khoản có chỉ có thể được liên kết chống lại mục nợ khác", "For {0}, only debit accounts can be linked against another credit entry","Đối với {0}, chỉ tài khoản ghi nợ có thể được liên kết với mục nợ khác", -Form View,Xem Mẫu, Forum Activity,Hoạt động diễn đàn, Free item code is not selected,Mã mặt hàng miễn phí không được chọn, Freight and Forwarding Charges,Vận tải hàng hóa và chuyển tiếp phí, @@ -2638,7 +2635,6 @@ Send SMS,Gửi tin nhắn SMS, Send mass SMS to your contacts,Gửi SMS hàng loạt tới các liên hệ của bạn, Sensitivity,Nhạy cảm, Sent,Đã gửi, -Serial #,Serial #, Serial No and Batch,Số thứ tự và hàng loạt, Serial No is mandatory for Item {0},Không nối tiếp là bắt buộc đối với hàng {0}, Serial No {0} does not belong to Batch {1},Số sê-ri {0} không thuộc về Lô {1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,Chào mừng bạn đến ERPNext, What do you need help with?,Bạn cần giúp về vấn đề gì ?, What does it do?,Làm gì ?, Where manufacturing operations are carried.,Nơi các hoạt động sản xuất đang được thực hiện, -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Trong khi tạo tài khoản cho Công ty con {0}, không tìm thấy tài khoản mẹ {1}. Vui lòng tạo tài khoản mẹ trong COA tương ứng", White,trắng, Wire Transfer,Chuyển khoản, WooCommerce Products,Sản phẩm thương mại Woo, @@ -3493,6 +3488,7 @@ Likes,các lượt thích, Merge with existing,Kết hợp với hiện tại, Office,Văn phòng, Orientation,Sự định hướng, +Parent,Nguồn gốc, Passive,Thụ động, Payment Failed,Thanh toán không thành công, Percent,Phần trăm, @@ -3543,6 +3539,7 @@ Shift,Ca, Show {0},Hiển thị {0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series","Các ký tự đặc biệt ngoại trừ "-", "#", ".", "/", "{" Và "}" không được phép trong chuỗi đặt tên", Target Details,Chi tiết mục tiêu, +{0} already has a Parent Procedure {1}.,{0} đã có Quy trình dành cho phụ huynh {1}., API,API, Annual,Hàng năm, Approved,Đã được phê duyệt, @@ -4241,7 +4238,6 @@ Download as JSON,Tải xuống dưới dạng JSON, End date can not be less than start date,Ngày kết thúc không thể nhỏ hơn Bắt đầu ngày, For Default Supplier (Optional),Đối với nhà cung cấp mặc định (Tùy chọn), From date cannot be greater than To date,"""Từ ngày"" không có thể lớn hơn ""Đến ngày""", -Get items from,Lấy dữ liệu từ, Group by,Nhóm theo, In stock,Trong kho, Item name,Tên hàng, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,Thông tin mẫu phản hồi chất lượn Quality Goal,Mục tiêu chất lượng, Monitoring Frequency,Tần suất giám sát, Weekday,Các ngày trong tuần, -January-April-July-October,Tháng 1-Tháng 4-Tháng 10-Tháng 10, -Revision and Revised On,Sửa đổi và sửa đổi vào, -Revision,Sửa đổi, -Revised On,Sửa đổi vào, Objectives,Mục tiêu, Quality Goal Objective,Mục tiêu chất lượng, Objective,Mục tiêu, @@ -7574,7 +7566,6 @@ Parent Procedure,Thủ tục phụ huynh, Processes,Quy trình, Quality Procedure Process,Quy trình thủ tục chất lượng, Process Description,Miêu tả quá trình, -Child Procedure,Thủ tục Trẻ em, Link existing Quality Procedure.,Liên kết Thủ tục chất lượng hiện có., Additional Information,thông tin thêm, Quality Review Objective,Mục tiêu đánh giá chất lượng, @@ -8557,7 +8548,6 @@ Purchase Order Trends,Xu hướng mua hàng, Purchase Receipt Trends,Xu hướng của biên lai nhận hàng, Purchase Register,Đăng ký mua, Quotation Trends,Các Xu hướng dự kê giá, -Quoted Item Comparison,So sánh mẫu hàng đã được báo giá, Received Items To Be Billed,Những mẫu hàng nhận được để lập hóa đơn, Qty to Order,Số lượng đặt hàng, Requested Items To Be Transferred,Mục yêu cầu được chuyển giao, @@ -9091,7 +9081,6 @@ Unmarked days,Ngày không được đánh dấu, Absent Days,Ngày vắng mặt, Conditions and Formula variable and example,Điều kiện và biến công thức và ví dụ, Feedback By,Phản hồi bởi, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-. MM .-. DD.-, Manufacturing Section,Bộ phận sản xuất, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ","Theo mặc định, Tên khách hàng được đặt theo Tên đầy đủ đã nhập. Nếu bạn muốn Khách hàng được đặt tên bởi", Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,Định cấu hình Bảng giá mặc định khi tạo giao dịch Bán hàng mới. Giá mặt hàng sẽ được lấy từ Bảng giá này., @@ -9692,7 +9681,6 @@ Available Balance,Số dư khả dụng, Reserved Balance,Số dư dự trữ, Uncleared Balance,Số dư không rõ ràng, Payment related to {0} is not completed,Thanh toán liên quan đến {0} chưa hoàn tất, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,Hàng # {}: Số Sê-ri {}. {} đã được giao dịch thành một Hóa đơn POS khác. Vui lòng chọn số sê-ri hợp lệ., Row #{}: Item Code: {} is not available under warehouse {}.,Hàng # {}: Mã hàng: {} không có sẵn trong kho {}., Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,Hàng # {}: Số lượng hàng không đủ cho Mã hàng: {} dưới kho {}. Số lượng có sẵn {}., Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,Hàng # {}: Vui lòng chọn số sê-ri và hàng loạt đối với mặt hàng: {} hoặc xóa nó để hoàn tất giao dịch., @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},Số lượng không có sẵn c Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,Vui lòng kích hoạt Cho phép hàng âm trong Cài đặt kho hoặc tạo Mục nhập kho để tiếp tục., No Inpatient Record found against patient {0},Không tìm thấy hồ sơ bệnh nhân nội trú nào đối với bệnh nhân {0}, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,Đơn đặt hàng Thuốc cho Bệnh nhân Nội trú {0} chống lại Cuộc Gặp gỡ Bệnh nhân {1} đã tồn tại., +Allow In Returns,Cho phép Trả hàng, +Hide Unavailable Items,Ẩn các mục không có sẵn, +Apply Discount on Discounted Rate,Áp dụng chiết khấu trên tỷ lệ chiết khấu, +Therapy Plan Template,Mẫu kế hoạch trị liệu, +Fetching Template Details,Tìm nạp chi tiết mẫu, +Linked Item Details,Chi tiết mặt hàng được liên kết, +Therapy Types,Các loại trị liệu, +Therapy Plan Template Detail,Chi tiết Mẫu Kế hoạch Trị liệu, +Non Conformance,Không phù hợp, +Process Owner,Chủ sở hữu quy trình, +Corrective Action,Hành động sửa chữa, +Preventive Action,Hành động phòng ngừa, +Problem,Vấn đề, +Responsible,Chịu trách nhiệm, +Completion By,Hoàn thành bởi, +Process Owner Full Name,Tên đầy đủ của chủ sở hữu quy trình, +Right Index,Chỉ mục bên phải, +Left Index,Chỉ mục bên trái, +Sub Procedure,Thủ tục phụ, +Passed,Thông qua, +Print Receipt,In biên nhận, +Edit Receipt,Chỉnh sửa biên nhận, +Focus on search input,Tập trung vào đầu vào tìm kiếm, +Focus on Item Group filter,Tập trung vào bộ lọc Nhóm mặt hàng, +Checkout Order / Submit Order / New Order,Kiểm tra đơn đặt hàng / Gửi đơn đặt hàng / Đơn đặt hàng mới, +Add Order Discount,Thêm đơn hàng giảm giá, +Item Code: {0} is not available under warehouse {1}.,Mã hàng: {0} không có sẵn trong kho {1}., +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,Số sê-ri không có sẵn cho Mặt hàng {0} trong kho {1}. Vui lòng thử thay đổi kho hàng., +Fetched only {0} available serial numbers.,Chỉ tìm nạp {0} số sê-ri có sẵn., +Switch Between Payment Modes,Chuyển đổi giữa các phương thức thanh toán, +Enter {0} amount.,Nhập số tiền {0}., +You don't have enough points to redeem.,Bạn không có đủ điểm để đổi., +You can redeem upto {0}.,Bạn có thể đổi tối đa {0}., +Enter amount to be redeemed.,Nhập số tiền được đổi., +You cannot redeem more than {0}.,Bạn không thể đổi nhiều hơn {0}., +Open Form View,Mở Dạng xem Biểu mẫu, +POS invoice {0} created succesfully,Hóa đơn POS {0} đã được tạo thành công, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,Số lượng hàng không đủ cho Mã hàng: {0} dưới kho {1}. Số lượng có sẵn {2}., +Serial No: {0} has already been transacted into another POS Invoice.,Serial No: {0} đã được giao dịch thành một Hóa đơn POS khác., +Balance Serial No,Số dư Serial No, +Warehouse: {0} does not belong to {1},Kho: {0} không thuộc về {1}, +Please select batches for batched item {0},Vui lòng chọn lô cho mặt hàng theo lô {0}, +Please select quantity on row {0},Vui lòng chọn số lượng trên hàng {0}, +Please enter serial numbers for serialized item {0},Vui lòng nhập số sê-ri cho mặt hàng được đánh số sê-ri {0}, +Batch {0} already selected.,Hàng loạt {0} đã được chọn., +Please select a warehouse to get available quantities,Vui lòng chọn kho để lấy số lượng có sẵn, +"For transfer from source, selected quantity cannot be greater than available quantity","Đối với chuyển từ nguồn, số lượng đã chọn không được lớn hơn số lượng có sẵn", +Cannot find Item with this Barcode,Không thể tìm thấy Mặt hàng có Mã vạch này, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0} là bắt buộc. Có thể bản ghi Đổi tiền tệ không được tạo cho {1} đến {2}, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{} đã gửi nội dung được liên kết với nó. Bạn cần hủy nội dung để tạo lợi nhuận mua hàng., +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,Không thể hủy tài liệu này vì nó được liên kết với nội dung đã gửi {0}. Vui lòng hủy nó để tiếp tục., +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,Hàng # {}: Số sê-ri {} đã được giao dịch thành một Hóa đơn POS khác. Vui lòng chọn số sê-ri hợp lệ., +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,Hàng # {}: Số sê-ri. {} Đã được giao dịch thành một Hóa đơn POS khác. Vui lòng chọn số sê-ri hợp lệ., +Item Unavailable,Mặt hàng không có sẵn, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},Hàng # {}: Serial No {} không thể được trả lại vì nó không được giao dịch trong hóa đơn gốc {}, +Please set default Cash or Bank account in Mode of Payment {},Vui lòng đặt tiền mặt hoặc tài khoản ngân hàng mặc định trong Phương thức thanh toán {}, +Please set default Cash or Bank account in Mode of Payments {},Vui lòng đặt tiền mặt hoặc tài khoản ngân hàng mặc định trong Phương thức thanh toán {}, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Vui lòng đảm bảo tài khoản {} là tài khoản Bảng Cân đối. Bạn có thể thay đổi tài khoản mẹ thành tài khoản Bảng cân đối kế toán hoặc chọn một tài khoản khác., +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,Hãy đảm bảo tài khoản {} là tài khoản Phải trả. Thay đổi loại tài khoản thành Có thể thanh toán hoặc chọn một tài khoản khác., +Row {}: Expense Head changed to {} ,Hàng {}: Đầu Chi phí được thay đổi thành {}, +because account {} is not linked to warehouse {} ,bởi vì tài khoản {} không được liên kết với kho {}, +or it is not the default inventory account,hoặc nó không phải là tài khoản hàng tồn kho mặc định, +Expense Head Changed,Đầu chi phí đã thay đổi, +because expense is booked against this account in Purchase Receipt {},vì chi phí được ghi vào tài khoản này trong Biên lai mua hàng {}, +as no Purchase Receipt is created against Item {}. ,vì không có Biên lai mua hàng nào được tạo đối với Mặt hàng {}., +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,Điều này được thực hiện để xử lý kế toán cho các trường hợp khi Biên lai mua hàng được tạo sau Hóa đơn mua hàng, +Purchase Order Required for item {},Yêu cầu đơn đặt hàng cho mặt hàng {}, +To submit the invoice without purchase order please set {} ,"Để gửi hóa đơn mà không có đơn đặt hàng, vui lòng đặt {}", +as {} in {},như {} trong {}, +Mandatory Purchase Order,Đơn đặt hàng bắt buộc, +Purchase Receipt Required for item {},Cần có Biên lai Mua hàng cho mặt hàng {}, +To submit the invoice without purchase receipt please set {} ,"Để gửi hóa đơn mà không có biên lai mua hàng, vui lòng đặt {}", +Mandatory Purchase Receipt,Biên lai mua hàng bắt buộc, +POS Profile {} does not belongs to company {},Hồ sơ POS {} không thuộc về công ty {}, +User {} is disabled. Please select valid user/cashier,Người dùng {} bị vô hiệu hóa. Vui lòng chọn người dùng / thu ngân hợp lệ, +Row #{}: Original Invoice {} of return invoice {} is {}. ,Hàng # {}: Hóa đơn gốc {} của hóa đơn trả lại {} là {}., +Original invoice should be consolidated before or along with the return invoice.,Hóa đơn gốc phải được tổng hợp trước hoặc cùng với hóa đơn trả hàng., +You can add original invoice {} manually to proceed.,Bạn có thể thêm hóa đơn gốc {} theo cách thủ công để tiếp tục., +Please ensure {} account is a Balance Sheet account. ,Vui lòng đảm bảo tài khoản {} là tài khoản Bảng Cân đối., +You can change the parent account to a Balance Sheet account or select a different account.,Bạn có thể thay đổi tài khoản mẹ thành tài khoản Bảng cân đối kế toán hoặc chọn một tài khoản khác., +Please ensure {} account is a Receivable account. ,Hãy đảm bảo tài khoản {} là tài khoản Phải thu., +Change the account type to Receivable or select a different account.,Thay đổi loại tài khoản thành Phải thu hoặc chọn một tài khoản khác., +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},"Không thể hủy {} vì Điểm trung thành kiếm được đã được đổi. Trước tiên, hãy hủy thông báo {} Không {}", +already exists,đã tồn tại, +POS Closing Entry {} against {} between selected period,Mục nhập đóng POS {} so với {} giữa khoảng thời gian đã chọn, +POS Invoice is {},Hóa đơn POS là {}, +POS Profile doesn't matches {},Cấu hình POS không khớp với {}, +POS Invoice is not {},Hóa đơn POS không phải là {}, +POS Invoice isn't created by user {},Hóa đơn POS không phải do người dùng tạo {}, +Row #{}: {},Hàng #{}: {}, +Invalid POS Invoices,Hóa đơn POS không hợp lệ, +Please add the account to root level Company - {},Vui lòng thêm tài khoản vào Công ty cấp cơ sở - {}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA","Trong khi tạo tài khoản cho Công ty con {0}, không tìm thấy tài khoản mẹ {1}. Vui lòng tạo tài khoản chính trong COA tương ứng", +Account Not Found,Tài khoản không được tìm thấy, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.","Trong khi tạo tài khoản cho Công ty con {0}, tài khoản mẹ {1} được tìm thấy dưới dạng tài khoản sổ cái.", +Please convert the parent account in corresponding child company to a group account.,Vui lòng chuyển đổi tài khoản mẹ trong công ty con tương ứng thành tài khoản nhóm., +Invalid Parent Account,Tài khoản mẹ không hợp lệ, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.","Việc đổi tên nó chỉ được phép thông qua công ty mẹ {0}, để tránh không khớp.", +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.","Nếu bạn {0} {1} số lượng mặt hàng {2}, sơ đồ {3} sẽ được áp dụng cho mặt hàng.", +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.","Nếu bạn {0} {1} mặt hàng có giá trị {2}, kế hoạch {3} sẽ được áp dụng cho mặt hàng đó.", +"As the field {0} is enabled, the field {1} is mandatory.","Khi trường {0} được bật, trường {1} là trường bắt buộc.", +"As the field {0} is enabled, the value of the field {1} should be more than 1.","Khi trường {0} được bật, giá trị của trường {1} phải lớn hơn 1.", +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},Không thể gửi Serial No {0} của mặt hàng {1} vì nó được dành riêng để điền đầy đủ Đơn đặt hàng bán hàng {2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.","Đơn đặt hàng bán hàng {0} có đặt trước cho mặt hàng {1}, bạn chỉ có thể giao hàng đã đặt trước {1} so với {0}.", +{0} Serial No {1} cannot be delivered,Không thể gửi {0} Serial No {1}, +Row {0}: Subcontracted Item is mandatory for the raw material {1},Hàng {0}: Mặt hàng được ký hợp đồng phụ là bắt buộc đối với nguyên liệu thô {1}, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.","Vì có đủ nguyên liệu thô, Yêu cầu Nguyên liệu không bắt buộc đối với Kho {0}.", +" If you still want to proceed, please enable {0}.","Nếu bạn vẫn muốn tiếp tục, hãy bật {0}.", +The item referenced by {0} - {1} is already invoiced,Mặt hàng được tham chiếu bởi {0} - {1} đã được lập hóa đơn, +Therapy Session overlaps with {0},Phiên trị liệu trùng lặp với {0}, +Therapy Sessions Overlapping,Các phiên trị liệu chồng chéo, +Therapy Plans,Kế hoạch trị liệu, +"Item Code, warehouse, quantity are required on row {0}","Mã hàng, kho, số lượng là bắt buộc trên hàng {0}", +Get Items from Material Requests against this Supplier,Nhận các mặt hàng từ các Yêu cầu Vật liệu đối với Nhà cung cấp này, +Enable European Access,Bật quyền truy cập Châu Âu, +Creating Purchase Order ...,Tạo Đơn đặt hàng ..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.","Chọn Nhà cung cấp từ các Nhà cung cấp mặc định của các mục dưới đây. Khi lựa chọn, Đơn đặt hàng sẽ được thực hiện đối với các mặt hàng chỉ thuộc về Nhà cung cấp đã chọn.", +Row #{}: You must select {} serial numbers for item {}.,Hàng # {}: Bạn phải chọn {} số sê-ri cho mặt hàng {}., diff --git a/erpnext/translations/zh.csv b/erpnext/translations/zh.csv index 4bef26ed80..716f1f2f31 100644 --- a/erpnext/translations/zh.csv +++ b/erpnext/translations/zh.csv @@ -473,7 +473,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',分类 Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',当类是“估值”或“Vaulation和总'不能扣除, "Cannot delete Serial No {0}, as it is used in stock transactions",无法删除序列号{0},因为它已被库存活动使用, Cannot enroll more than {0} students for this student group.,不能注册超过{0}学生到该学生群体。, -Cannot find Item with this barcode,找不到包含此条形码的物品, Cannot find active Leave Period,找不到有效的休假期间, Cannot produce more Item {0} than Sales Order quantity {1},不能生产超过销售订单数量{1}的物料{0}, Cannot promote Employee with status Left,状态为已离职的员工不能晋升, @@ -690,7 +689,6 @@ Create Variants,创建变体, "Create and manage daily, weekly and monthly email digests.",创建和管理每日,每周和每月的电子邮件摘要。, Create customer quotes,创建客户报价, Create rules to restrict transactions based on values.,创建规则,根据属性值来限制交易。, -Created By,创建人, Created {0} scorecards for {1} between: ,为{1}创建{0}记分卡:, Creating Company and Importing Chart of Accounts,创建公司并导入会计科目表, Creating Fees,创造费用, @@ -1078,7 +1076,6 @@ For Warehouse is required before Submit,提交前必须选择仓库, For row {0}: Enter Planned Qty,对于行{0}:输入计划的数量, "For {0}, only credit accounts can be linked against another debit entry",对于{0},只有贷方分录可以与另一个贷方科目链接, "For {0}, only debit accounts can be linked against another credit entry",对于{0},只有借方分录可以与另一个借方科目链接, -Form View,表单视图, Forum Activity,论坛活动, Free item code is not selected,未选择免费商品代码, Freight and Forwarding Charges,货运及转运费用, @@ -2638,7 +2635,6 @@ Send SMS,发送短信, Send mass SMS to your contacts,向你的联系人群发短信。, Sensitivity,灵敏度, Sent,已发送, -Serial #,序列号, Serial No and Batch,序列号和批次, Serial No is mandatory for Item {0},序列号是物料{0}的必须项, Serial No {0} does not belong to Batch {1},序列号{0}不属于批次{1}, @@ -3303,7 +3299,6 @@ Welcome to ERPNext,欢迎使用ERPNext, What do you need help with?,你有什么需要帮助的?, What does it do?,贵公司的做什么, Where manufacturing operations are carried.,生产流程进行的地方。, -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",在为子公司{0}创建帐户时,找不到父帐户{1}。请在相应的COA中创建父帐户, White,白, Wire Transfer,电汇, WooCommerce Products,WooCommerce产品, @@ -3493,6 +3488,7 @@ Likes,喜欢, Merge with existing,与现有合并, Office,办公室, Orientation,方向, +Parent,上级, Passive,被动, Payment Failed,支付失败, Percent,百分之, @@ -3543,6 +3539,7 @@ Shift,转移, Show {0},显示{0}, "Special Characters except ""-"", ""#"", ""."", ""/"", ""{"" and ""}"" not allowed in naming series",命名系列中不允许使用除“ - ”,“#”,“。”,“/”,“{”和“}”之外的特殊字符, Target Details,目标细节, +{0} already has a Parent Procedure {1}.,{0}已有父程序{1}。, API,应用程序界面, Annual,全年, Approved,已批准, @@ -4241,7 +4238,6 @@ Download as JSON,下载为JSON, End date can not be less than start date,结束日期不能小于开始日期, For Default Supplier (Optional),对于默认供应商(可选), From date cannot be greater than To date,从日期不能大于到日期, -Get items from,从...获取物料, Group by,分组基于, In stock,有现货, Item name,物料名称, @@ -7558,10 +7554,6 @@ Quality Feedback Template Parameter,质量反馈模板参数, Quality Goal,质量目标, Monitoring Frequency,监测频率, Weekday,平日, -January-April-July-October,1至4月,7- 10月, -Revision and Revised On,修订和修订, -Revision,调整, -Revised On,修订版, Objectives,目标, Quality Goal Objective,质量目标, Objective,目的, @@ -7574,7 +7566,6 @@ Parent Procedure,父程序, Processes,流程, Quality Procedure Process,质量程序流程, Process Description,进度解析, -Child Procedure,儿童程序, Link existing Quality Procedure.,链接现有的质量程序。, Additional Information,附加信息, Quality Review Objective,质量审查目标, @@ -8557,7 +8548,6 @@ Purchase Order Trends,采购订单趋势, Purchase Receipt Trends,采购收货趋势, Purchase Register,采购台帐, Quotation Trends,报价趋势, -Quoted Item Comparison,项目报价比较, Received Items To Be Billed,待开费用清单已收货物料, Qty to Order,待下单数量, Requested Items To Be Transferred,已申请待移转物料, @@ -9091,7 +9081,6 @@ Unmarked days,无标记的日子, Absent Days,缺席天数, Conditions and Formula variable and example,条件和公式变量以及示例, Feedback By,反馈者, -MTNG-.YYYY.-.MM.-.DD.-,MTNG-.YYYY .-。MM .-。DD.-, Manufacturing Section,制造部, "By default, the Customer Name is set as per the Full Name entered. If you want Customers to be named by a ",默认情况下,根据输入的全名设置客户名。如果您希望客户以, Configure the default Price List when creating a new Sales transaction. Item prices will be fetched from this Price List.,在创建新的销售交易时配置默认的价目表。项目价格将从此价格表中获取。, @@ -9692,7 +9681,6 @@ Available Balance,可用余额, Reserved Balance,预留余额, Uncleared Balance,未结余额, Payment related to {0} is not completed,与{0}相关的付款尚未完成, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,行号{}:序列号{}。 {}已被交易到另一个POS发票。请选择有效的序列号, Row #{}: Item Code: {} is not available under warehouse {}.,第{}行:项目代码:{}在仓库{}下不可用。, Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,第#{}行:仓库{}下的库存数量不足以用于项目代码{}。可用数量{}。, Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,第{}行:请选择一个序列号,并针对{}进行批处理或将其删除以完成交易。, @@ -9732,3 +9720,121 @@ Quantity not available for {0} in warehouse {1},仓库{1}中{0}不可用的数 Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,请启用“允许库存设置中的负库存”或创建“库存输入”以继续。, No Inpatient Record found against patient {0},找不到针对患者{0}的住院记录, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,针对患者遭遇{1}的住院药物命令{0}已存在。, +Allow In Returns,允许退货, +Hide Unavailable Items,隐藏不可用的物品, +Apply Discount on Discounted Rate,对折现率应用折扣, +Therapy Plan Template,治疗计划模板, +Fetching Template Details,提取模板详细信息, +Linked Item Details,链接项目详细信息, +Therapy Types,治疗类型, +Therapy Plan Template Detail,治疗计划模板详细信息, +Non Conformance,不合格, +Process Owner,流程负责人, +Corrective Action,纠正措施, +Preventive Action,预防措施, +Problem,问题, +Responsible,负责任的, +Completion By,完成方式, +Process Owner Full Name,流程所有者全名, +Right Index,正确的索引, +Left Index,左索引, +Sub Procedure,子程序, +Passed,已通过, +Print Receipt,打印收据, +Edit Receipt,编辑收据, +Focus on search input,专注于搜索输入, +Focus on Item Group filter,专注于项目组过滤器, +Checkout Order / Submit Order / New Order,结帐订单/提交订单/新订单, +Add Order Discount,添加订单折扣, +Item Code: {0} is not available under warehouse {1}.,项目代码:{0}在仓库{1}下不可用。, +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,仓库{1}下项目{0}的序列号不可用。请尝试更换仓库。, +Fetched only {0} available serial numbers.,仅获取了{0}个可用序列号。, +Switch Between Payment Modes,在付款模式之间切换, +Enter {0} amount.,输入{0}金额。, +You don't have enough points to redeem.,您的积分不足以兑换。, +You can redeem upto {0}.,您最多可以兑换{0}。, +Enter amount to be redeemed.,输入要兑换的金额。, +You cannot redeem more than {0}.,您最多只能兑换{0}个。, +Open Form View,打开表单视图, +POS invoice {0} created succesfully,成功创建POS发票{0}, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,仓库{1}下的存货数量不足以用于物料代码{0}。可用数量{2}。, +Serial No: {0} has already been transacted into another POS Invoice.,序列号:{0}已被交易到另一个POS发票中。, +Balance Serial No,天平序列号, +Warehouse: {0} does not belong to {1},仓库:{0}不属于{1}, +Please select batches for batched item {0},请为批次项目{0}选择批次, +Please select quantity on row {0},请在第{0}行上选择数量, +Please enter serial numbers for serialized item {0},请输入序列化项目{0}的序列号, +Batch {0} already selected.,已选择批次{0}。, +Please select a warehouse to get available quantities,请选择一个仓库以获取可用数量, +"For transfer from source, selected quantity cannot be greater than available quantity",对于从源转移,所选数量不能大于可用数量, +Cannot find Item with this Barcode,用此条形码找不到物品, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0}是必需的。也许没有为{1}至{2}创建货币兑换记录, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{}已提交与其关联的资产。您需要取消资产以创建购买退货。, +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,由于该文档与已提交的资产{0}链接,因此无法取消。请取消它以继续。, +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,第{}行:序列号{}已被交易到另一个POS发票中。请选择有效的序列号, +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,第{}行:序列号{}已被交易到另一个POS发票中。请选择有效的序列号, +Item Unavailable,物品不可用, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},第#{}行:由于未在原始发票{}中进行交易,因此无法返回序列号{}, +Please set default Cash or Bank account in Mode of Payment {},请在付款方式{}中设置默认的现金或银行帐户, +Please set default Cash or Bank account in Mode of Payments {},请在付款方式{}中设置默认的现金或银行帐户, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,请确保{}帐户是资产负债表帐户。您可以将父帐户更改为资产负债表帐户,也可以选择其他帐户。, +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,请确保{}帐户是应付帐户。将帐户类型更改为“应付帐款”或选择其他帐户。, +Row {}: Expense Head changed to {} ,第{}行:费用总目已更改为{}, +because account {} is not linked to warehouse {} ,因为帐户{}未链接到仓库{}, +or it is not the default inventory account,或它不是默认的库存帐户, +Expense Head Changed,费用总目已更改, +because expense is booked against this account in Purchase Receipt {},因为费用是在采购收据{}中为此帐户预订的, +as no Purchase Receipt is created against Item {}. ,因为没有针对物料{}创建采购收据。, +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,这样做是为了处理在采购发票后创建采购收货的情况, +Purchase Order Required for item {},项目{}所需的采购订单, +To submit the invoice without purchase order please set {} ,要提交不含采购订单的发票,请设置{}, +as {} in {},如{}中的{}, +Mandatory Purchase Order,强制性采购订单, +Purchase Receipt Required for item {},项目{}的采购收据, +To submit the invoice without purchase receipt please set {} ,要提交没有购买收据的发票,请设置{}, +Mandatory Purchase Receipt,强制性收货, +POS Profile {} does not belongs to company {},POS个人资料{}不属于公司{}, +User {} is disabled. Please select valid user/cashier,用户{}被禁用。请选择有效的用户/出纳员, +Row #{}: Original Invoice {} of return invoice {} is {}. ,第#{}行:退货发票{}的原始发票{}为{}。, +Original invoice should be consolidated before or along with the return invoice.,原始发票应在退货发票之前或与之合并。, +You can add original invoice {} manually to proceed.,您可以手动添加原始发票{}以继续。, +Please ensure {} account is a Balance Sheet account. ,请确保{}帐户是资产负债表帐户。, +You can change the parent account to a Balance Sheet account or select a different account.,您可以将父帐户更改为资产负债表帐户,也可以选择其他帐户。, +Please ensure {} account is a Receivable account. ,请确保{}帐户是应收帐款帐户。, +Change the account type to Receivable or select a different account.,将帐户类型更改为“应收帐款”或选择其他帐户。, +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},由于所赚取的忠诚度积分已被兑换,因此无法取消{}。首先取消{}否{}, +already exists,已经存在, +POS Closing Entry {} against {} between selected period,选定期间之间的POS关闭条目{}对{}, +POS Invoice is {},POS发票为{}, +POS Profile doesn't matches {},POS个人资料与{}不匹配, +POS Invoice is not {},POS发票不是{}, +POS Invoice isn't created by user {},POS发票不是由用户{}创建的, +Row #{}: {},第#{}行:{}, +Invalid POS Invoices,无效的POS发票, +Please add the account to root level Company - {},请将帐户添加到根级别的公司-{}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",为子公司{0}创建帐户时,找不到父帐户{1}。请在相应的COA中创建上级帐户, +Account Not Found,找不到帐户, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",在为子公司{0}创建帐户时,发现父帐户{1}是分类帐。, +Please convert the parent account in corresponding child company to a group account.,请将相应子公司中的母公司帐户转换为组帐户。, +Invalid Parent Account,无效的上级帐户, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",重命名仅允许通过母公司{0}进行,以避免不匹配。, +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.",如果您{0} {1}数量的项目{2},则方案{3}将应用于该项目。, +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.",如果您{0} {1}值得项目{2},则方案{3}将应用于该项目。, +"As the field {0} is enabled, the field {1} is mandatory.",当启用字段{0}时,字段{1}是必填字段。, +"As the field {0} is enabled, the value of the field {1} should be more than 1.",启用字段{0}时,字段{1}的值应大于1。, +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},无法交付物料{1}的序列号{0},因为已保留该物料以填写销售订单{2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.",销售订单{0}对物料{1}有保留,您只能针对{0}交付保留的{1}。, +{0} Serial No {1} cannot be delivered,{0}序列号{1}无法传递, +Row {0}: Subcontracted Item is mandatory for the raw material {1},第{0}行:原材料{1}必须使用转包物料, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.",由于有足够的原材料,因此仓库{0}不需要“物料请求”。, +" If you still want to proceed, please enable {0}.",如果仍然要继续,请启用{0}。, +The item referenced by {0} - {1} is already invoiced,{0}-{1}引用的商品已开票, +Therapy Session overlaps with {0},治疗会话与{0}重叠, +Therapy Sessions Overlapping,治疗会议重叠, +Therapy Plans,治疗计划, +"Item Code, warehouse, quantity are required on row {0}",在第{0}行中需要提供物料代码,仓库,数量, +Get Items from Material Requests against this Supplier,从针对此供应商的物料请求中获取物料, +Enable European Access,启用欧洲访问, +Creating Purchase Order ...,创建采购订单..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",从以下各项的默认供应商中选择供应商。选择后,将针对仅属于所选供应商的项目下达采购订单。, +Row #{}: You must select {} serial numbers for item {}.,行号{}:您必须为项目{}选择{}序列号。, diff --git a/erpnext/translations/zh_tw.csv b/erpnext/translations/zh_tw.csv index f161c4d0ed..1cc7d8773e 100644 --- a/erpnext/translations/zh_tw.csv +++ b/erpnext/translations/zh_tw.csv @@ -440,7 +440,6 @@ Cannot deduct when category is for 'Valuation' or 'Valuation and Total',不能 Cannot deduct when category is for 'Valuation' or 'Vaulation and Total',當類是“估值”或“Vaulation和總'不能扣除, "Cannot delete Serial No {0}, as it is used in stock transactions",無法刪除序列號{0},因為它採用的是現貨交易, Cannot enroll more than {0} students for this student group.,不能註冊超過{0}學生該學生群體更多。, -Cannot find Item with this barcode,找不到包含此條形碼的物品, Cannot find active Leave Period,找不到有效的休假期, Cannot produce more Item {0} than Sales Order quantity {1},無法產生更多的項目{0}不是銷售訂單數量{1}, Cannot promote Employee with status Left,無法提升狀態為Left的員工, @@ -639,7 +638,6 @@ Create Variants,創建變體, "Create and manage daily, weekly and monthly email digests.",建立和管理每日,每週和每月的電子郵件摘要。, Create customer quotes,創建客戶報價, Create rules to restrict transactions based on values.,創建規則來限制基於價值的交易。, -Created By,建立者, Created {0} scorecards for {1} between: ,為{1}創建{0}記分卡:, Creating Company and Importing Chart of Accounts,創建公司並導入會計科目表, Creating Fees,創造費用, @@ -1002,7 +1000,6 @@ For Warehouse is required before Submit,對於倉庫之前,需要提交, For row {0}: Enter Planned Qty,對於行{0}:輸入計劃的數量, "For {0}, only credit accounts can be linked against another debit entry",{0},只有貸方帳戶可以連接另一個借方分錄, "For {0}, only debit accounts can be linked against another credit entry",{0},只有借方帳戶可以連接另一個貸方分錄, -Form View,表單視圖, Forum Activity,論壇活動, Free item code is not selected,未選擇免費商品代碼, Freight and Forwarding Charges,貨運代理費, @@ -2469,7 +2466,6 @@ Send SMS,發送短信, Send mass SMS to your contacts,發送群發短信到您的聯絡人, Sensitivity,靈敏度, Sent,已送出, -Serial #,序列號, Serial No and Batch,序列號和批次, Serial No is mandatory for Item {0},項目{0}的序列號是強制性的, Serial No {0} does not belong to Batch {1},序列號{0}不屬於批次{1}, @@ -3095,7 +3091,6 @@ Welcome to ERPNext,歡迎來到ERPNext, What do you need help with?,你有什麼需要幫助的?, What does it do?,它有什麼作用?, Where manufacturing operations are carried.,生產作業於此進行。, -"While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",在為子公司{0}創建帳戶時,找不到父帳戶{1}。請在相應的COA中創建父帳戶, White,白色, Wire Transfer,電匯, WooCommerce Products,WooCommerce產品, @@ -3271,6 +3266,7 @@ Likes,喜歡, Merge with existing,合併與現有的, Office,辦公室, Orientation,取向, +Parent,親, Passive,被動, Payment Failed,支付失敗, Percent,百分比, @@ -3971,7 +3967,6 @@ Download as JSON,下載為JSON, End date can not be less than start date,結束日期不能小於開始日期, For Default Supplier (Optional),對於默認供應商(可選), From date cannot be greater than To date,起始日期不能大於結束日期, -Get items from,取得項目來源, Group by,集團通過, In stock,有現貨, Item name,項目名稱, @@ -7043,10 +7038,6 @@ Quality Feedback Parameter,質量反饋參數, Quality Feedback Template Parameter,質量反饋模板參數, Quality Goal,質量目標, Monitoring Frequency,監測頻率, -January-April-July-October,1月-4月-7月-10月, -Revision and Revised On,修訂和修訂, -Revision,調整, -Revised On,修訂版, Objectives,目標, Quality Goal Objective,質量目標, Agenda,議程, @@ -7058,7 +7049,6 @@ Parent Procedure,家長程序, Processes,工藝流程, Quality Procedure Process,質量程序流程, Process Description,進度解析, -Child Procedure,兒童程序, Link existing Quality Procedure.,鏈接現有的質量程序。, Quality Review Objective,質量審查目標, DATEV Settings,DATEV設置, @@ -7976,7 +7966,6 @@ Purchase Order Trends,採購訂單趨勢, Purchase Receipt Trends,採購入庫趨勢, Purchase Register,購買註冊, Quotation Trends,報價趨勢, -Quoted Item Comparison,項目報價比較, Received Items To Be Billed,待付款的收受品項, Qty to Order,訂購數量, Requested Items To Be Transferred,將要轉倉的需求項目, @@ -9004,7 +8993,6 @@ Available Balance,可用餘額, Reserved Balance,預留餘額, Uncleared Balance,未結餘額, Payment related to {0} is not completed,與{0}相關的付款尚未完成, -Row #{}: Serial No{}. {} has already been transacted into another POS Invoice. Please select valid serial no.,行號{}:序列號{}。 {}已被交易到另一個POS發票。請選擇有效的序列號, Row #{}: Item Code: {} is not available under warehouse {}.,第{}行:項目代碼:{}在倉庫{}下不可用。, Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}.,第#{}行:倉庫{}下的庫存數量不足以用於項目代碼{}。可用數量{}。, Row #{}: Please select a serial no and batch against item: {} or remove it to complete transaction.,第{}行:請選擇一個序列號,並針對{}進行批處理或將其刪除以完成交易。, @@ -9042,3 +9030,113 @@ Quantity not available for {0} in warehouse {1},倉庫{1}中{0}不可用的數 Please enable Allow Negative Stock in Stock Settings or create Stock Entry to proceed.,請啟用“允許庫存設置中的負庫存”或創建“庫存輸入”以繼續。, No Inpatient Record found against patient {0},找不到針對患者{0}的住院記錄, An Inpatient Medication Order {0} against Patient Encounter {1} already exists.,針對患者遭遇{1}的住院藥物命令{0}已存在。, +Allow In Returns,允許退貨, +Hide Unavailable Items,隱藏不可用的物品, +Apply Discount on Discounted Rate,對折現率應用折扣, +Therapy Plan Template,治療計劃模板, +Fetching Template Details,提取模板詳細信息, +Linked Item Details,鏈接項目詳細信息, +Therapy Types,治療類型, +Therapy Plan Template Detail,治療計劃模板詳細信息, +Process Owner,流程負責人, +Corrective Action,糾正措施, +Preventive Action,預防措施, +Problem,問題, +Responsible,負責任的, +Right Index,正確的索引, +Passed,已通過, +Print Receipt,打印收據, +Edit Receipt,編輯收據, +Focus on search input,專注於搜索輸入, +Focus on Item Group filter,專注於項目組過濾器, +Checkout Order / Submit Order / New Order,結帳訂單/提交訂單/新訂單, +Add Order Discount,添加訂單折扣, +Item Code: {0} is not available under warehouse {1}.,項目代碼:{0}在倉庫{1}下不可用。, +Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.,倉庫{1}下項目{0}的序列號不可用。請嘗試更換倉庫。, +Fetched only {0} available serial numbers.,僅獲取了{0}個可用序列號。, +Switch Between Payment Modes,在付款模式之間切換, +Enter {0} amount.,輸入{0}金額。, +You don't have enough points to redeem.,您的積分不足以兌換。, +You can redeem upto {0}.,您最多可以兌換{0}。, +Enter amount to be redeemed.,輸入要兌換的金額。, +You cannot redeem more than {0}.,您最多只能兌換{0}個。, +Open Form View,打開表單視圖, +POS invoice {0} created succesfully,成功創建POS發票{0}, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2}.,倉庫{1}下的存貨數量不足以用於物料代碼{0}。可用數量{2}。, +Serial No: {0} has already been transacted into another POS Invoice.,序列號:{0}已被交易到另一個POS發票中。, +Balance Serial No,天平序列號, +Warehouse: {0} does not belong to {1},倉庫:{0}不屬於{1}, +Please select batches for batched item {0},請為批次項目{0}選擇批次, +Please select quantity on row {0},請在第{0}行上選擇數量, +Please enter serial numbers for serialized item {0},請輸入序列化項目{0}的序列號, +Batch {0} already selected.,已選擇批次{0}。, +Please select a warehouse to get available quantities,請選擇一個倉庫以獲取可用數量, +"For transfer from source, selected quantity cannot be greater than available quantity",對於從源轉移,所選數量不能大於可用數量, +Cannot find Item with this Barcode,用此條形碼找不到物品, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0}是必需的。也許沒有為{1}至{2}創建貨幣兌換記錄, +{} has submitted assets linked to it. You need to cancel the assets to create purchase return.,{}已提交與其關聯的資產。您需要取消資產以創建購買退貨。, +Cannot cancel this document as it is linked with submitted asset {0}. Please cancel it to continue.,由於該文檔與已提交的資產{0}鏈接,因此無法取消。請取消它以繼續。, +Row #{}: Serial No. {} has already been transacted into another POS Invoice. Please select valid serial no.,第{}行:序列號{}已被交易到另一個POS發票中。請選擇有效的序列號, +Row #{}: Serial Nos. {} has already been transacted into another POS Invoice. Please select valid serial no.,第{}行:序列號{}已被交易到另一個POS發票中。請選擇有效的序列號, +Row #{}: Serial No {} cannot be returned since it was not transacted in original invoice {},第#{}行:由於未在原始發票{}中進行交易,因此無法返回序列號{}, +Please set default Cash or Bank account in Mode of Payment {},請在付款方式{}中設置默認的現金或銀行帳戶, +Please set default Cash or Bank account in Mode of Payments {},請在付款方式{}中設置默認的現金或銀行帳戶, +Please ensure {} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,請確保{}帳戶是資產負債表帳戶。您可以將父帳戶更改為資產負債表帳戶,也可以選擇其他帳戶。, +Please ensure {} account is a Payable account. Change the account type to Payable or select a different account.,請確保{}帳戶是應付帳戶。將帳戶類型更改為“應付帳款”或選擇其他帳戶。, +Row {}: Expense Head changed to {} ,第{}行:費用總目已更改為{}, +because account {} is not linked to warehouse {} ,因為帳戶{}未鏈接到倉庫{}, +or it is not the default inventory account,或它不是默認的庫存帳戶, +Expense Head Changed,費用總目已更改, +because expense is booked against this account in Purchase Receipt {},因為費用是在採購收據{}中為此帳戶預訂的, +as no Purchase Receipt is created against Item {}. ,因為沒有針對物料{}創建採購收據。, +This is done to handle accounting for cases when Purchase Receipt is created after Purchase Invoice,這樣做是為了處理在採購發票後創建採購收貨的情況, +Purchase Order Required for item {},項目{}所需的採購訂單, +To submit the invoice without purchase order please set {} ,要提交不含採購訂單的發票,請設置{}, +Mandatory Purchase Order,強制性採購訂單, +Purchase Receipt Required for item {},項目{}的採購收據, +To submit the invoice without purchase receipt please set {} ,要提交沒有購買收據的發票,請設置{}, +Mandatory Purchase Receipt,強制性收貨, +POS Profile {} does not belongs to company {},POS個人資料{}不屬於公司{}, +User {} is disabled. Please select valid user/cashier,用戶{}被禁用。請選擇有效的用戶/出納員, +Row #{}: Original Invoice {} of return invoice {} is {}. ,第#{}行:退貨發票{}的原始發票{}為{}。, +Original invoice should be consolidated before or along with the return invoice.,原始發票應在退貨發票之前或與之合併。, +You can add original invoice {} manually to proceed.,您可以手動添加原始發票{}以繼續。, +Please ensure {} account is a Balance Sheet account. ,請確保{}帳戶是資產負債表帳戶。, +You can change the parent account to a Balance Sheet account or select a different account.,您可以將父帳戶更改為資產負債表帳戶,也可以選擇其他帳戶。, +Please ensure {} account is a Receivable account. ,請確保{}帳戶是應收帳款帳戶。, +Change the account type to Receivable or select a different account.,將帳戶類型更改為“應收帳款”或選擇其他帳戶。, +{} can't be cancelled since the Loyalty Points earned has been redeemed. First cancel the {} No {},由於所賺取的忠誠度積分已被兌換,因此無法取消{}。首先取消{}否{}, +already exists,已經存在, +POS Closing Entry {} against {} between selected period,選定期間之間的POS關閉條目{}對{}, +POS Invoice is {},POS發票為{}, +POS Profile doesn't matches {},POS個人資料與{}不匹配, +POS Invoice is not {},POS發票不是{}, +POS Invoice isn't created by user {},POS發票不是由用戶{}創建的, +Invalid POS Invoices,無效的POS發票, +Please add the account to root level Company - {},請將帳戶添加到根級別的公司-{}, +"While creating account for Child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA",為子公司{0}創建帳戶時,找不到父帳戶{1}。請在相應的COA中創建上級帳戶, +Account Not Found,找不到帳戶, +"While creating account for Child Company {0}, parent account {1} found as a ledger account.",在為子公司{0}創建帳戶時,發現父帳戶{1}是分類帳。, +Please convert the parent account in corresponding child company to a group account.,請將相應子公司中的母公司帳戶轉換為組帳戶。, +Invalid Parent Account,無效的上級帳戶, +"Renaming it is only allowed via parent company {0}, to avoid mismatch.",重命名僅允許通過母公司{0}進行,以避免不匹配。, +"If you {0} {1} quantities of the item {2}, the scheme {3} will be applied on the item.",如果您{0} {1}數量的項目{2},則方案{3}將應用於該項目。, +"If you {0} {1} worth item {2}, the scheme {3} will be applied on the item.",如果您{0} {1}值得項目{2},則方案{3}將應用於該項目。, +"As the field {0} is enabled, the field {1} is mandatory.",當啟用字段{0}時,字段{1}是必填字段。, +"As the field {0} is enabled, the value of the field {1} should be more than 1.",啟用字段{0}時,字段{1}的值應大於1。, +Cannot deliver Serial No {0} of item {1} as it is reserved to fullfill Sales Order {2},無法交付物料{1}的序列號{0},因為已保留該物料以填寫銷售訂單{2}, +"Sales Order {0} has reservation for the item {1}, you can only deliver reserved {1} against {0}.",銷售訂單{0}對物料{1}有保留,您只能針對{0}交付保留的{1}。, +{0} Serial No {1} cannot be delivered,{0}序列號{1}無法傳遞, +Row {0}: Subcontracted Item is mandatory for the raw material {1},第{0}行:原材料{1}必須使用轉包物料, +"As there are sufficient raw materials, Material Request is not required for Warehouse {0}.",由於有足夠的原材料,因此倉庫{0}不需要“物料請求”。, +" If you still want to proceed, please enable {0}.",如果仍然要繼續,請啟用{0}。, +The item referenced by {0} - {1} is already invoiced,{0}-{1}引用的商品已開票, +Therapy Session overlaps with {0},治療會話與{0}重疊, +Therapy Sessions Overlapping,治療會議重疊, +Therapy Plans,治療計劃, +"Item Code, warehouse, quantity are required on row {0}",在第{0}行中需要提供物料代碼,倉庫,數量, +Get Items from Material Requests against this Supplier,從針對此供應商的物料請求中獲取物料, +Enable European Access,啟用歐洲訪問, +Creating Purchase Order ...,創建採購訂單..., +"Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only.",從以下各項的默認供應商中選擇供應商。選擇後,將針對僅屬於所選供應商的項目下達採購訂單。, +Row #{}: You must select {} serial numbers for item {}.,行號{}:您必須為項目{}選擇{}序列號。,