Merge branch 'develop' into refactor-addiional-salary
diff --git a/README.md b/README.md
index ed57a17..80ebdb6 100644
--- a/README.md
+++ b/README.md
@@ -15,18 +15,18 @@
ERPNext as a monolith includes the following areas for managing businesses:
-1. [Accounting](https://erpnext.com/docs/user/manual/en/accounts)
-1. [Inventory](https://erpnext.com/docs/user/manual/en/stock)
-1. [CRM](https://erpnext.com/docs/user/manual/en/CRM)
-1. [Sales](https://erpnext.com/docs/user/manual/en/selling)
-1. [Purchase](https://erpnext.com/docs/user/manual/en/buying)
-1. [HRMS](https://erpnext.com/docs/user/manual/en/human-resources)
-1. [Project Management](https://erpnext.com/docs/user/manual/en/projects)
-1. [Support](https://erpnext.com/docs/user/manual/en/support)
-1. [Asset Management](https://erpnext.com/docs/user/manual/en/asset)
+1. [Accounting](https://erpnext.com/open-source-accounting)
+1. [Inventory](https://erpnext.com/distribution/inventory-management-system)
+1. [CRM](https://erpnext.com/open-source-crm)
+1. [Sales](https://erpnext.com/open-source-sales-purchase)
+1. [Purchase](https://erpnext.com/open-source-sales-purchase)
+1. [HRMS](https://erpnext.com/open-source-hrms)
+1. [Project Management](https://erpnext.com/open-source-projects)
+1. [Support](https://erpnext.com/open-source-help-desk-software)
+1. [Asset Management](https://erpnext.com/open-source-asset-management-software)
1. [Quality Management](https://erpnext.com/docs/user/manual/en/quality-management)
-1. [Manufacturing](https://erpnext.com/docs/user/manual/en/manufacturing)
-1. [Website Management](https://erpnext.com/docs/user/manual/en/website)
+1. [Manufacturing](https://erpnext.com/open-source-manufacturing-erp-software)
+1. [Website Management](https://erpnext.com/open-source-website-builder-software)
1. [Customize ERPNext](https://erpnext.com/docs/user/manual/en/customize-erpnext)
1. [And More](https://erpnext.com/docs/user/manual/en/)
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index f40b957..786b9cf 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -5,7 +5,7 @@
from erpnext.hooks import regional_overrides
from frappe.utils import getdate
-__version__ = '12.2.0'
+__version__ = '12.0.0-dev'
def get_default_company(user=None):
'''Get default company for user'''
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 a9b3d7c..c3e2f7d 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
@@ -13,7 +13,8 @@
@frappe.whitelist()
@cache_source
-def get(chart_name = None, chart = None, no_cache = None, from_date = None, to_date = None):
+def get(chart_name = None, chart = None, no_cache = None, filters = None, from_date = None,
+ to_date = None, timespan = None, time_interval = None):
if chart_name:
chart = frappe.get_doc('Dashboard Chart', chart_name)
else:
@@ -25,7 +26,7 @@
to_date = chart.to_date
timegrain = chart.time_interval
- filters = frappe.parse_json(chart.filters_json)
+ filters = frappe.parse_json(filters) or frappe.parse_json(chart.filters_json)
account = filters.get("account")
company = filters.get("company")
diff --git a/erpnext/accounts/desk_page/accounting/accounting.json b/erpnext/accounts/desk_page/accounting/accounting.json
new file mode 100644
index 0000000..7a777f9
--- /dev/null
+++ b/erpnext/accounts/desk_page/accounting/accounting.json
@@ -0,0 +1,137 @@
+{
+ "cards": [
+ {
+ "links": "[\n {\n \"description\": \"Company (not Customer or Supplier) master.\",\n \"label\": \"Company\",\n \"name\": \"Company\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Tree of financial accounts.\",\n \"icon\": \"fa fa-sitemap\",\n \"label\": \"Chart of Accounts\",\n \"name\": \"Account\",\n \"onboard\": 1,\n \"route\": \"#Tree/Account\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Accounts Settings\",\n \"name\": \"Accounts Settings\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Financial / accounting year.\",\n \"label\": \"Fiscal Year\",\n \"name\": \"Fiscal Year\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Accounting Dimension\",\n \"name\": \"Accounting Dimension\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Finance Book\",\n \"name\": \"Finance Book\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Accounting Period\",\n \"name\": \"Accounting Period\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Payment Terms based on conditions\",\n \"label\": \"Payment Term\",\n \"name\": \"Payment Term\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Accounting Masters"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Accounting journal entries.\",\n \"label\": \"Journal Entry\",\n \"name\": \"Journal Entry\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"GL Entry\"\n ],\n \"doctype\": \"GL Entry\",\n \"is_query_report\": true,\n \"label\": \"General Ledger\",\n \"name\": \"General Ledger\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Invoice\"\n ],\n \"doctype\": \"Sales Invoice\",\n \"is_query_report\": true,\n \"label\": \"Customer Ledger Summary\",\n \"name\": \"Customer Ledger Summary\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Invoice\"\n ],\n \"doctype\": \"Sales Invoice\",\n \"is_query_report\": true,\n \"label\": \"Supplier Ledger Summary\",\n \"name\": \"Supplier Ledger Summary\",\n \"type\": \"report\"\n }\n]",
+ "title": "General Ledger"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Bills raised to Customers.\",\n \"label\": \"Sales Invoice\",\n \"name\": \"Sales Invoice\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Customer database.\",\n \"label\": \"Customer\",\n \"name\": \"Customer\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Bank/Cash transactions against party or for internal transfer\",\n \"label\": \"Payment Entry\",\n \"name\": \"Payment Entry\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Payment Request\",\n \"label\": \"Payment Request\",\n \"name\": \"Payment Request\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Sales Invoice\"\n ],\n \"doctype\": \"Sales Invoice\",\n \"is_query_report\": true,\n \"label\": \"Accounts Receivable\",\n \"name\": \"Accounts Receivable\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Invoice\"\n ],\n \"doctype\": \"Sales Invoice\",\n \"is_query_report\": true,\n \"label\": \"Accounts Receivable Summary\",\n \"name\": \"Accounts Receivable Summary\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Invoice\"\n ],\n \"doctype\": \"Sales Invoice\",\n \"is_query_report\": true,\n \"label\": \"Sales Register\",\n \"name\": \"Sales Register\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Invoice\"\n ],\n \"doctype\": \"Sales Invoice\",\n \"is_query_report\": true,\n \"label\": \"Item-wise Sales Register\",\n \"name\": \"Item-wise Sales Register\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Invoice\"\n ],\n \"doctype\": \"Sales Invoice\",\n \"is_query_report\": true,\n \"label\": \"Ordered Items To Be Billed\",\n \"name\": \"Ordered Items To Be Billed\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Invoice\"\n ],\n \"doctype\": \"Sales Invoice\",\n \"is_query_report\": true,\n \"label\": \"Delivered Items To Be Billed\",\n \"name\": \"Delivered Items To Be Billed\",\n \"type\": \"report\"\n }\n]",
+ "title": "Accounts Receivable"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Bills raised by Suppliers.\",\n \"label\": \"Purchase Invoice\",\n \"name\": \"Purchase Invoice\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Supplier database.\",\n \"label\": \"Supplier\",\n \"name\": \"Supplier\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Bank/Cash transactions against party or for internal transfer\",\n \"label\": \"Payment Entry\",\n \"name\": \"Payment Entry\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Purchase Invoice\"\n ],\n \"doctype\": \"Purchase Invoice\",\n \"is_query_report\": true,\n \"label\": \"Accounts Payable\",\n \"name\": \"Accounts Payable\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Purchase Invoice\"\n ],\n \"doctype\": \"Purchase Invoice\",\n \"is_query_report\": true,\n \"label\": \"Accounts Payable Summary\",\n \"name\": \"Accounts Payable Summary\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Purchase Invoice\"\n ],\n \"doctype\": \"Purchase Invoice\",\n \"is_query_report\": true,\n \"label\": \"Purchase Register\",\n \"name\": \"Purchase Register\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Purchase Invoice\"\n ],\n \"doctype\": \"Purchase Invoice\",\n \"is_query_report\": true,\n \"label\": \"Item-wise Purchase Register\",\n \"name\": \"Item-wise Purchase Register\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Purchase Invoice\"\n ],\n \"doctype\": \"Purchase Invoice\",\n \"is_query_report\": true,\n \"label\": \"Purchase Order Items To Be Billed\",\n \"name\": \"Purchase Order Items To Be Billed\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Purchase Invoice\"\n ],\n \"doctype\": \"Purchase Invoice\",\n \"is_query_report\": true,\n \"label\": \"Received Items To Be Billed\",\n \"name\": \"Received Items To Be Billed\",\n \"type\": \"report\"\n }\n]",
+ "title": "Accounts Payable"
+ },
+ {
+ "icon": "fa fa-table",
+ "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]",
+ "title": "Reports"
+ },
+ {
+ "links": "[\n {\n \"dependencies\": [\n \"GL Entry\"\n ],\n \"doctype\": \"GL Entry\",\n \"is_query_report\": true,\n \"label\": \"Trial Balance\",\n \"name\": \"Trial Balance\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"GL Entry\"\n ],\n \"doctype\": \"GL Entry\",\n \"is_query_report\": true,\n \"label\": \"Profit and Loss Statement\",\n \"name\": \"Profit and Loss Statement\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"GL Entry\"\n ],\n \"doctype\": \"GL Entry\",\n \"is_query_report\": true,\n \"label\": \"Balance Sheet\",\n \"name\": \"Balance Sheet\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"GL Entry\"\n ],\n \"doctype\": \"GL Entry\",\n \"is_query_report\": true,\n \"label\": \"Cash Flow\",\n \"name\": \"Cash Flow\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"GL Entry\"\n ],\n \"doctype\": \"GL Entry\",\n \"is_query_report\": true,\n \"label\": \"Consolidated Financial Statement\",\n \"name\": \"Consolidated Financial Statement\",\n \"type\": \"report\"\n }\n]",
+ "title": "Financial Statements"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Enable / disable currencies.\",\n \"label\": \"Currency\",\n \"name\": \"Currency\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Currency exchange rate master.\",\n \"label\": \"Currency Exchange\",\n \"name\": \"Currency Exchange\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Exchange Rate Revaluation master.\",\n \"label\": \"Exchange Rate Revaluation\",\n \"name\": \"Exchange Rate Revaluation\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Multi Currency"
+ },
+ {
+ "icon": "fa fa-cog",
+ "links": "[\n {\n \"description\": \"Setup Gateway accounts.\",\n \"label\": \"Payment Gateway Account\",\n \"name\": \"Payment Gateway Account\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Template of terms or contract.\",\n \"label\": \"Terms and Conditions Template\",\n \"name\": \"Terms and Conditions\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"e.g. Bank, Cash, Credit Card\",\n \"label\": \"Mode of Payment\",\n \"name\": \"Mode of Payment\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Settings"
+ },
+ {
+ "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]",
+ "title": "Bank Statement"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Match non-linked Invoices and Payments.\",\n \"label\": \"Match Payments with Invoices\",\n \"name\": \"Payment Reconciliation\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Update bank payment dates with journals.\",\n \"label\": \"Update Bank Transaction Dates\",\n \"name\": \"Bank Reconciliation\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Invoice Discounting\",\n \"name\": \"Invoice Discounting\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Journal Entry\"\n ],\n \"doctype\": \"Journal Entry\",\n \"is_query_report\": true,\n \"label\": \"Bank Reconciliation Statement\",\n \"name\": \"Bank Reconciliation Statement\",\n \"type\": \"report\"\n },\n {\n \"icon\": \"fa fa-bar-chart\",\n \"label\": \"Bank Reconciliation\",\n \"name\": \"bank-reconciliation\",\n \"type\": \"page\"\n },\n {\n \"dependencies\": [\n \"Journal Entry\"\n ],\n \"doctype\": \"Journal Entry\",\n \"is_query_report\": true,\n \"label\": \"Bank Clearance Summary\",\n \"name\": \"Bank Clearance Summary\",\n \"type\": \"report\"\n },\n {\n \"label\": \"Bank Guarantee\",\n \"name\": \"Bank Guarantee\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Setup cheque dimensions for printing\",\n \"label\": \"Cheque Print Template\",\n \"name\": \"Cheque Print Template\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Banking and Payments"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Subscription Plan\",\n \"name\": \"Subscription Plan\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Subscription\",\n \"name\": \"Subscription\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Subscription Settings\",\n \"name\": \"Subscription Settings\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Subscription Management"
+ },
+ {
+ "links": "[\n {\n \"label\": \"GST Settings\",\n \"name\": \"GST Settings\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"GST HSN Code\",\n \"name\": \"GST HSN Code\",\n \"type\": \"doctype\"\n },\n {\n \"is_query_report\": true,\n \"label\": \"GSTR-1\",\n \"name\": \"GSTR-1\",\n \"type\": \"report\"\n },\n {\n \"is_query_report\": true,\n \"label\": \"GSTR-2\",\n \"name\": \"GSTR-2\",\n \"type\": \"report\"\n },\n {\n \"label\": \"GSTR 3B Report\",\n \"name\": \"GSTR 3B Report\",\n \"type\": \"doctype\"\n },\n {\n \"is_query_report\": true,\n \"label\": \"GST Sales Register\",\n \"name\": \"GST Sales Register\",\n \"type\": \"report\"\n },\n {\n \"is_query_report\": true,\n \"label\": \"GST Purchase Register\",\n \"name\": \"GST Purchase Register\",\n \"type\": \"report\"\n },\n {\n \"is_query_report\": true,\n \"label\": \"GST Itemised Sales Register\",\n \"name\": \"GST Itemised Sales Register\",\n \"type\": \"report\"\n },\n {\n \"is_query_report\": true,\n \"label\": \"GST Itemised Purchase Register\",\n \"name\": \"GST Itemised Purchase Register\",\n \"type\": \"report\"\n },\n {\n \"country\": \"India\",\n \"description\": \"C-Form records\",\n \"label\": \"C-Form\",\n \"name\": \"C-Form\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Goods and Services Tax (GST India)"
+ },
+ {
+ "icon": "fa fa-microchip ",
+ "links": "[\n {\n \"description\": \"List of available Shareholders with folio numbers\",\n \"label\": \"Shareholder\",\n \"name\": \"Shareholder\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"List of all share transactions\",\n \"label\": \"Share Transfer\",\n \"name\": \"Share Transfer\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Share Transfer\"\n ],\n \"doctype\": \"Share Transfer\",\n \"is_query_report\": true,\n \"label\": \"Share Ledger\",\n \"name\": \"Share Ledger\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Share Transfer\"\n ],\n \"doctype\": \"Share Transfer\",\n \"is_query_report\": true,\n \"label\": \"Share Balance\",\n \"name\": \"Share Balance\",\n \"type\": \"report\"\n }\n]",
+ "title": "Share Management"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Tree of financial Cost Centers.\",\n \"icon\": \"fa fa-sitemap\",\n \"label\": \"Chart of Cost Centers\",\n \"name\": \"Cost Center\",\n \"route\": \"#Tree/Cost Center\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Define budget for a financial year.\",\n \"label\": \"Budget\",\n \"name\": \"Budget\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Accounting Dimension\",\n \"name\": \"Accounting Dimension\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Cost Center\"\n ],\n \"doctype\": \"Cost Center\",\n \"is_query_report\": true,\n \"label\": \"Budget Variance Report\",\n \"name\": \"Budget Variance Report\",\n \"type\": \"report\"\n },\n {\n \"description\": \"Seasonality for setting budgets, targets etc.\",\n \"label\": \"Monthly Distribution\",\n \"name\": \"Monthly Distribution\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Cost Center and Budgeting"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Opening Invoice Creation Tool\",\n \"name\": \"Opening Invoice Creation Tool\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Chart of Accounts Importer\",\n \"name\": \"Chart of Accounts Importer\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Close Balance Sheet and book Profit or Loss.\",\n \"label\": \"Period Closing Voucher\",\n \"name\": \"Period Closing Voucher\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Opening and Closing"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Tax template for selling transactions.\",\n \"label\": \"Sales Taxes and Charges Template\",\n \"name\": \"Sales Taxes and Charges Template\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Tax template for buying transactions.\",\n \"label\": \"Purchase Taxes and Charges Template\",\n \"name\": \"Purchase Taxes and Charges Template\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Tax template for item tax rates.\",\n \"label\": \"Item Tax Template\",\n \"name\": \"Item Tax Template\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Tax Category for overriding tax rates.\",\n \"label\": \"Tax Category\",\n \"name\": \"Tax Category\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Tax Rule for transactions.\",\n \"label\": \"Tax Rule\",\n \"name\": \"Tax Rule\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Tax Withholding rates to be applied on transactions.\",\n \"label\": \"Tax Withholding Category\",\n \"name\": \"Tax Withholding Category\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Taxes"
+ },
+ {
+ "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]",
+ "title": "Profitability"
+ }
+ ],
+ "category": "Modules",
+ "charts": [
+ {
+ "chart_name": "Bank Balance",
+ "label": "Bank Balance",
+ "size": "Full"
+ }
+ ],
+ "creation": "2020-03-02 15:41:59.515192",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "icon": "",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Accounting",
+ "modified": "2020-03-12 16:30:35.580450",
+ "modified_by": "Administrator",
+ "module": "Accounts",
+ "name": "Accounting",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+ {
+ "is_query_report": 0,
+ "link_to": "Account",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Journal Entry",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Payment Entry",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 1,
+ "link_to": "Accounts Receivable",
+ "type": "Report"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "General Ledger",
+ "type": "Report"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Profit and Loss Statement",
+ "type": "Report"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Trial Balance",
+ "type": "Report"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/account/account.json b/erpnext/accounts/doctype/account/account.json
index 64efc27..af252e6 100644
--- a/erpnext/accounts/doctype/account/account.json
+++ b/erpnext/accounts/doctype/account/account.json
@@ -1,4 +1,5 @@
{
+ "actions": [],
"allow_copy": 1,
"allow_import": 1,
"creation": "2013-01-30 12:49:46",
@@ -196,10 +197,13 @@
],
"icon": "fa fa-money",
"idx": 1,
- "modified": "2019-10-10 19:10:02.967554",
+ "is_tree": 1,
+ "links": [],
+ "modified": "2020-03-18 17:57:52.063233",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Account",
+ "nsm_parent_field": "parent_account",
"owner": "Administrator",
"permissions": [
{
diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py
index d5a36b8..0a72d4f 100644
--- a/erpnext/accounts/doctype/account/account.py
+++ b/erpnext/accounts/doctype/account/account.py
@@ -102,7 +102,7 @@
if not frappe.db.get_value("Account",
{'account_name': self.account_name, 'company': ancestors[0]}, 'name'):
frappe.throw(_("Please add the account to root level Company - %s" % ancestors[0]))
- else:
+ elif self.parent_account:
descendants = get_descendants_of('Company', self.company)
if not descendants: return
parent_acc_name_map = {}
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR04_with_account_number.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR04_with_account_number.json
index adfa9f8..3fc109b 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR04_with_account_number.json
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR04_with_account_number.json
@@ -406,11 +406,11 @@
"is_group": 1,
"Bewertungskorrektur zu Forderungen aus Lieferungen und Leistungen": {
"account_number": "9960"
- },
- "Debitoren": {
- "is_group": 1,
- "account_number": "10000"
- },
+ },
+ "Debitoren": {
+ "is_group": 1,
+ "account_number": "10000"
+ },
"Forderungen aus Lieferungen und Leistungen": {
"account_number": "1200",
"account_type": "Receivable"
@@ -663,16 +663,22 @@
"account_number": "1400"
},
"Abziehbare Vorsteuer 7 %": {
- "account_number": "1401"
+ "account_number": "1401",
+ "account_type": "Tax",
+ "tax_rate": 7.0
},
"Abziehbare Vorsteuer aus innergem. Erwerb": {
"account_number": "1402"
},
"Abziehbare Vorsteuer aus innergem. Erwerb 19%": {
- "account_number": "1404"
+ "account_number": "1404",
+ "account_type": "Tax",
+ "tax_rate": 19.0
},
"Abziehbare Vorsteuer 19 %": {
- "account_number": "1406"
+ "account_number": "1406",
+ "account_type": "Tax",
+ "tax_rate": 19.0
},
"Abziehbare Vorsteuer nach \u00a7 13b UStG 19 %": {
"account_number": "1407"
@@ -911,17 +917,31 @@
"is_group": 1,
"I - Gezeichnetes Kapital": {
"account_type": "Equity",
- "is_group": 1
+ "is_group": 1,
+ "Gezeichnetes Kapital": {
+ "account_type": "Equity",
+ "account_number": "2900"
+ },
+ "Ausstehende Einlagen auf das gezeichnete Kapital": {
+ "account_number": "2910",
+ "is_group": 1
+ }
},
"II - Kapitalr\u00fccklage": {
"account_type": "Equity",
- "is_group": 1
+ "is_group": 1,
+ "Kapitalr\u00fccklage": {
+ "account_number": "2920"
+ }
},
"III - Gewinnr\u00fccklagen": {
"account_type": "Equity",
"1 - gesetzliche R\u00fccklage": {
"account_type": "Equity",
- "is_group": 1
+ "is_group": 1,
+ "Gesetzliche R\u00fccklage": {
+ "account_number": "2930"
+ }
},
"2 - R\u00fccklage f. Anteile an einem herrschenden oder mehrheitlich beteiligten Unternehmen": {
"account_type": "Equity",
@@ -929,7 +949,10 @@
},
"3 - satzungsm\u00e4\u00dfige R\u00fccklagen": {
"account_type": "Equity",
- "is_group": 1
+ "is_group": 1,
+ "Satzungsm\u00e4\u00dfige R\u00fccklagen": {
+ "account_number": "2950"
+ }
},
"4 - andere Gewinnr\u00fccklagen": {
"account_type": "Equity",
@@ -963,7 +986,13 @@
},
"IV - Gewinnvortrag/Verlustvortrag": {
"account_type": "Equity",
- "is_group": 1
+ "is_group": 1,
+ "Gewinnvortrag vor Verwendung": {
+ "account_number": "2970"
+ },
+ "Verlustvortrag vor Verwendung": {
+ "account_number": "2978"
+ }
},
"V - Jahres\u00fcberschu\u00df/Jahresfehlbetrag": {
"account_type": "Equity",
@@ -1197,15 +1226,15 @@
"is_group": 1,
"Bewertungskorrektur zu Verb. aus Lieferungen und Leistungen": {
"account_number": "9964"
- },
- "Kreditoren": {
- "account_number": "70000",
- "is_group": 1,
- "Wareneingangs-Verrechnungskonto" : {
- "account_number": "70001",
- "account_type": "Stock Received But Not Billed"
- }
- },
+ },
+ "Kreditoren": {
+ "account_number": "70000",
+ "is_group": 1,
+ "Wareneingangs-Verrechnungskonto" : {
+ "account_number": "70001",
+ "account_type": "Stock Received But Not Billed"
+ }
+ },
"Verb. aus Lieferungen und Leistungen": {
"account_number": "3300",
"account_type": "Payable"
@@ -1488,17 +1517,21 @@
},
"Umsatzsteuer 7 %": {
"account_number": "3801",
- "account_type": "Tax"
+ "account_type": "Tax",
+ "tax_rate": 7.0
},
"Umsatzsteuer aus innergem. Erwerb": {
"account_number": "3802"
},
"Umsatzsteuer aus innergem. Erwerb 19 %": {
- "account_number": "3804"
+ "account_number": "3804",
+ "account_type": "Tax",
+ "tax_rate": 19.0
},
"Umsatzsteuer 19 %": {
"account_number": "3806",
- "account_type": "Tax"
+ "account_type": "Tax",
+ "tax_rate": 19.0
},
"Umsatzsteuer aus im Inland steuerpfl. EU-Lieferungen": {
"account_number": "3807"
@@ -1653,7 +1686,15 @@
"Erl\u00f6se 7 % USt": {
"account_number": "4300",
"account_type": "Income Account"
- },
+ },
+ "Erl\u00f6se 16 % USt": {
+ "account_number": "4340",
+ "account_type": "Income Account"
+ },
+ "Erl\u00f6se 19 % USt": {
+ "account_number": "4400",
+ "account_type": "Income Account"
+ },
"Erl\u00f6se aus im Inland steuerpfl. EU-Lieferungen 7 % USt": {
"account_number": "4310"
},
@@ -1681,19 +1722,6 @@
"Erl\u00f6se aus im anderen EU-Land steuerbaren Leistungen, im Inland nicht steuerbare Ums\u00e4tze": {
"account_number": "4339"
},
- "Erl\u00f6se 16 % USt (Gruppe)": {
- "is_group": 1,
- "Erl\u00f6se 16 % USt": {
- "account_number": "4340"
- }
- },
- "Erl\u00f6se 19 % USt (Gruppe)": {
- "is_group": 1,
- "Erl\u00f6se 19 % USt": {
- "account_number": "4400",
- "account_type": "Income Account"
- }
- },
"Grundst\u00fccksertr\u00e4ge (Gruppe)": {
"is_group": 1,
"Grundst\u00fccksertr\u00e4ge": {
@@ -1752,14 +1780,12 @@
"2 - Herstellungskosten der zur Erzielung der Umsatzerl\u00f6se erbrachten Leistungen": {
"root_type": "Expense",
"is_group": 1,
- "Herstellungskosten (Gruppe)": {
- "Herstellungskosten": {
- "account_number": "6990",
- "account_type": "Cost of Goods Sold"
- },
- "Herstellungskosten: Schwund": {
- "account_type": "Stock Adjustment"
- }
+ "Herstellungskosten": {
+ "account_number": "6990",
+ "account_type": "Cost of Goods Sold"
+ },
+ "Herstellungskosten: Schwund": {
+ "account_type": "Stock Adjustment"
},
"Aufwendungen f. Roh-, Hilfs- und Betriebsstoffe und f. bezogene Waren": {
"account_number": "5000",
@@ -1809,10 +1835,10 @@
"Energiestoffe (Fertigung)": {
"account_number": "5190"
},
- "Energiestoffe (Fertigung)7% Vorsteuer": {
+ "Energiestoffe (Fertigung) 7% Vorsteuer": {
"account_number": "5191"
},
- "Energiestoffe (Fertigung)19% Vorsteuer": {
+ "Energiestoffe (Fertigung) 19% Vorsteuer": {
"account_number": "5192"
}
}
@@ -1935,49 +1961,49 @@
},
"Nachl\u00e4sse aus innergem. Erwerb 15 % Vorsteuer und 15 % Umsatzsteuer": {
"account_number": "5727"
- },
- "Erhaltene Skonti (Gruppe)": {
- "is_group": 1,
- "Erh. Skonti": {
- "account_number": "5730"
- },
- "Erh. Skonti 7 % Vorsteuer": {
- "account_number": "5731"
- },
- "Erh. Skonti aus Einkauf Roh-, Hilfs- und Betriebsstoffe": {
- "account_number": "5733"
- },
- "Erh. Skonti aus Einkauf Roh-, Hilfs- und Betriebsstoffe 7% Vorsteuer": {
- "account_number": "5734"
- },
- "Erh. Skonti 19 % Vorsteuer": {
- "account_number": "5736"
- },
- "Erh. Skonti aus Einkauf Roh-, Hilfs- und Betriebsstoffe 19% Vorsteuer": {
- "account_number": "5738"
- },
- "Erh. Skonti aus Einkauf Roh-, Hilfs- und Betriebsstoffe aus steuerpfl. innergem. Erwerb 19% Vorst. u. 19% Ust.": {
- "account_number": "5741"
- },
- "Erh. Skonti aus Einkauf Roh-, Hilfs- und Betriebsstoffe aus steuerpfl. innergem. Erwerb 7% Vorst. u. 7% Ust.": {
- "account_number": "5743"
- },
- "Erh. Skonti aus steuerpflichtigem innergem. Erwerb": {
- "account_number": "5745"
- },
- "Erh. Skonti aus steuerpflichtigem innergem. Erwerb 7% Vorst. u. 7% Ust.": {
- "account_number": "5746"
- },
- "Erh. Skonti aus steuerpflichtigem innergem. Erwerb 19% Vorst. u. 19% Ust.": {
- "account_number": "5748"
- },
- "Erh. Skonti aus Erwerb Roh-,Hilfs-,Betriebsstoff letzter Abn.innerh.Dreiecksg. 19% Vorst. und 19% Ust.": {
- "account_number": "5792"
- },
- "Erh. Skonti aus Erwerb Waren als letzter Abnehmer innerh. Dreiecksgesch. 19% Vorst. u. 19% Ust.": {
- "account_number": "5793"
- }
- }
+ }
+ },
+ "Erhaltene Skonti (Gruppe)": {
+ "is_group": 1,
+ "Erh. Skonti": {
+ "account_number": "5730"
+ },
+ "Erh. Skonti 7 % Vorsteuer": {
+ "account_number": "5731"
+ },
+ "Erh. Skonti aus Einkauf Roh-, Hilfs- und Betriebsstoffe": {
+ "account_number": "5733"
+ },
+ "Erh. Skonti aus Einkauf Roh-, Hilfs- und Betriebsstoffe 7% Vorsteuer": {
+ "account_number": "5734"
+ },
+ "Erh. Skonti 19 % Vorsteuer": {
+ "account_number": "5736"
+ },
+ "Erh. Skonti aus Einkauf Roh-, Hilfs- und Betriebsstoffe 19% Vorsteuer": {
+ "account_number": "5738"
+ },
+ "Erh. Skonti aus Einkauf Roh-, Hilfs- und Betriebsstoffe aus steuerpfl. innergem. Erwerb 19% Vorst. u. 19% Ust.": {
+ "account_number": "5741"
+ },
+ "Erh. Skonti aus Einkauf Roh-, Hilfs- und Betriebsstoffe aus steuerpfl. innergem. Erwerb 7% Vorst. u. 7% Ust.": {
+ "account_number": "5743"
+ },
+ "Erh. Skonti aus steuerpflichtigem innergem. Erwerb": {
+ "account_number": "5745"
+ },
+ "Erh. Skonti aus steuerpflichtigem innergem. Erwerb 7% Vorst. u. 7% Ust.": {
+ "account_number": "5746"
+ },
+ "Erh. Skonti aus steuerpflichtigem innergem. Erwerb 19% Vorst. u. 19% Ust.": {
+ "account_number": "5748"
+ },
+ "Erh. Skonti aus Erwerb Roh-,Hilfs-,Betriebsstoff letzter Abn.innerh.Dreiecksg. 19% Vorst. und 19% Ust.": {
+ "account_number": "5792"
+ },
+ "Erh. Skonti aus Erwerb Waren als letzter Abnehmer innerh. Dreiecksgesch. 19% Vorst. u. 19% Ust.": {
+ "account_number": "5793"
+ }
},
"Bezugsnebenkosten (Gruppe)": {
"is_group": 1,
@@ -2295,49 +2321,49 @@
},
"6 - sonstige betriebliche Ertr\u00e4ge": {
"root_type": "Income",
- "is_group": 1,
- "Erhaltene Boni (Gruppe)": {
- "is_group": 1,
- "Erhaltene Boni 7 % Vorsteuer": {
- "account_number": "5750"
- },
- "Erhaltene Boni aus Einkauf Roh-, Hilfs- und Betriebsstoffe": {
- "account_number": "5753"
- },
- "Erhaltene Boni aus Einkauf Roh-, Hilfs- und Betriebsstoffe 7% Vorsteuer": {
- "account_number": "5754"
- },
- "Erhaltene Boni aus Einkauf Roh-, Hilfs- und Betriebsstoffe 19% Vorsteuer": {
- "account_number": "5755"
- },
- "Erhaltene Boni 19 % Vorsteuer": {
- "account_number": "5760"
- },
- "Erhaltene Boni": {
- "account_number": "5769"
- }
- },
- "Erhaltene Rabatte (Gruppe)": {
- "is_group": 1,
- "Erhaltene Rabatte": {
- "account_number": "5770"
- },
- "Erhaltene Rabatte 7 % Vorsteuer": {
- "account_number": "5780"
- },
- "Erhaltene Rabatte aus Einkauf Roh-, Hilfs- und Betriebsstoffe": {
- "account_number": "5783"
- },
- "Erhaltene Rabatte aus Einkauf Roh-, Hilfs- und Betriebsstoffe 7% Vorsteuer": {
- "account_number": "5784"
- },
- "Erhaltene Rabatte aus Einkauf Roh-, Hilfs- und Betriebsstoffe 19% Vorsteuer": {
- "account_number": "5785"
- },
- "Erhaltene Rabatte 19 % Vorsteuer": {
- "account_number": "5790"
- }
- },
+ "is_group": 1,
+ "Erhaltene Boni (Gruppe)": {
+ "is_group": 1,
+ "Erhaltene Boni 7 % Vorsteuer": {
+ "account_number": "5750"
+ },
+ "Erhaltene Boni aus Einkauf Roh-, Hilfs- und Betriebsstoffe": {
+ "account_number": "5753"
+ },
+ "Erhaltene Boni aus Einkauf Roh-, Hilfs- und Betriebsstoffe 7% Vorsteuer": {
+ "account_number": "5754"
+ },
+ "Erhaltene Boni aus Einkauf Roh-, Hilfs- und Betriebsstoffe 19% Vorsteuer": {
+ "account_number": "5755"
+ },
+ "Erhaltene Boni 19 % Vorsteuer": {
+ "account_number": "5760"
+ },
+ "Erhaltene Boni": {
+ "account_number": "5769"
+ }
+ },
+ "Erhaltene Rabatte (Gruppe)": {
+ "is_group": 1,
+ "Erhaltene Rabatte": {
+ "account_number": "5770"
+ },
+ "Erhaltene Rabatte 7 % Vorsteuer": {
+ "account_number": "5780"
+ },
+ "Erhaltene Rabatte aus Einkauf Roh-, Hilfs- und Betriebsstoffe": {
+ "account_number": "5783"
+ },
+ "Erhaltene Rabatte aus Einkauf Roh-, Hilfs- und Betriebsstoffe 7% Vorsteuer": {
+ "account_number": "5784"
+ },
+ "Erhaltene Rabatte aus Einkauf Roh-, Hilfs- und Betriebsstoffe 19% Vorsteuer": {
+ "account_number": "5785"
+ },
+ "Erhaltene Rabatte 19 % Vorsteuer": {
+ "account_number": "5790"
+ }
+ },
"Andere aktivierte Eigenleistungen": {
"account_number": "4820"
},
@@ -2407,29 +2433,26 @@
"Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen (bei Buchgewinn)": {
"account_number": "4849"
},
- "Erl\u00f6se aus Verk\u00e4ufen immaterieller VG (bei Buchgewinn) (Gruppe)": {
- "is_group": 1,
- "Erl\u00f6se aus Verk\u00e4ufen immaterieller VG (bei Buchgewinn)": {
- "account_number": "4850"
- },
- "Erl\u00f6se aus Verk\u00e4ufen Finanzanlagen (bei Buchgewinn)": {
- "account_number": "4851"
- },
- "Erl\u00f6se aus Verk\u00e4ufen Finanzanlagen (inl\u00e4ndische Kap.Ges., bei Buchgewinn)": {
- "account_number": "4852"
- },
- "Anlagenabg\u00e4nge Sachanlagen (Restbuchwert bei Buchvergewinn)": {
- "account_number": "4855"
- },
- "Anlagenabg\u00e4nge immaterielle VG (Restbuchwert bei Buchgewinn)": {
- "account_number": "4856"
- },
- "Anlagenabg\u00e4nge Finanzanlagen (Restbuchwert bei Buchgewinn)": {
- "account_number": "4857"
- },
- "Anlagenabg\u00e4nge Finanzanlagen (inl\u00e4ndische Kap.Ges., Restbuchwert bei Buchgewinn)": {
- "account_number": "4858"
- }
+ "Erl\u00f6se aus Verk\u00e4ufen immaterieller VG (bei Buchgewinn)": {
+ "account_number": "4850"
+ },
+ "Erl\u00f6se aus Verk\u00e4ufen Finanzanlagen (bei Buchgewinn)": {
+ "account_number": "4851"
+ },
+ "Erl\u00f6se aus Verk\u00e4ufen Finanzanlagen (inl\u00e4ndische Kap.Ges., bei Buchgewinn)": {
+ "account_number": "4852"
+ },
+ "Anlagenabg\u00e4nge Sachanlagen (Restbuchwert bei Buchvergewinn)": {
+ "account_number": "4855"
+ },
+ "Anlagenabg\u00e4nge immaterielle VG (Restbuchwert bei Buchgewinn)": {
+ "account_number": "4856"
+ },
+ "Anlagenabg\u00e4nge Finanzanlagen (Restbuchwert bei Buchgewinn)": {
+ "account_number": "4857"
+ },
+ "Anlagenabg\u00e4nge Finanzanlagen (inl\u00e4ndische Kap.Ges., Restbuchwert bei Buchgewinn)": {
+ "account_number": "4858"
},
"Ertr\u00e4ge aus Zuschreibungen des Sachanlageverm\u00f6gens": {
"account_number": "4910",
@@ -2552,20 +2575,17 @@
"Entnahme von Gegenst\u00e4nden ohne USt": {
"account_number": "4605"
},
- "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternehmens 7 % USt (Gruppe)": {
- "is_group": 1,
- "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternehmens 7 % USt": {
- "account_number": "4630"
- },
- "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternehmens ohne USt": {
- "account_number": "4637"
- },
- "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternnehmens ohne USt (Telefon-Nutzung)": {
- "account_number": "4638"
- },
- "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternehmens ohne USt (Kfz-Nutzung)": {
- "account_number": "4639"
- }
+ "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternehmens 7 % USt": {
+ "account_number": "4630"
+ },
+ "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternehmens ohne USt": {
+ "account_number": "4637"
+ },
+ "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternnehmens ohne USt (Telefon-Nutzung)": {
+ "account_number": "4638"
+ },
+ "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternehmens ohne USt (Kfz-Nutzung)": {
+ "account_number": "4639"
},
"Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternehmens 19 % USt (Gruppe)": {
"is_group": 1,
@@ -2603,14 +2623,11 @@
"Unentgeltliche Zuwendung von Gegenst\u00e4nden ohne USt": {
"account_number": "4689"
},
- "Nicht steuerbare Ums\u00e4tze (Innenums\u00e4tze) (Gruppe)": {
- "is_group": 1,
- "Nicht steuerbare Ums\u00e4tze (Innenums\u00e4tze)": {
- "account_number": "4690"
- },
- "Umsatzsteuerverg\u00fctungen, z.B. nach \u00a7 24 UStG": {
- "account_number": "4695"
- }
+ "Nicht steuerbare Ums\u00e4tze (Innenums\u00e4tze)": {
+ "account_number": "4690"
+ },
+ "Umsatzsteuerverg\u00fctungen, z.B. nach \u00a7 24 UStG": {
+ "account_number": "4695"
},
"Au\u00dferordentliche Ertr\u00e4ge (Gruppe)": {
"is_group": 1,
@@ -2620,48 +2637,42 @@
"Au\u00dferordentliche Ertr\u00e4ge finanzwirksam": {
"account_number": "7401"
},
- "Au\u00dferordentliche Ertr\u00e4ge nicht finanzwirksam (Gruppe)": {
- "is_group": 1,
- "Au\u00dferordentliche Ertr\u00e4ge nicht finanzwirksam": {
- "account_number": "7450"
- },
- "Ertr\u00e4ge durch Verschmelzung und Umwandlung": {
- "account_number": "7451"
- },
- "Ertr\u00e4ge durch den Verkauf von bedeutenden Beteiligungen": {
- "account_number": "7452"
- },
- "Ert\u00e4ge durch den Verkauf von bedeutenden Grundst\u00fccken": {
- "account_number": "7453"
- },
- "Gewinn aus der Ver\u00e4u\u00dferung oder der Aufgabe von Gesch\u00e4ftsaktivit\u00e4ten nach Steuern": {
- "account_number": "7454"
- }
+ "Au\u00dferordentliche Ertr\u00e4ge nicht finanzwirksam": {
+ "account_number": "7450"
},
- "Au\u00dferordentliche Ertr\u00e4ge aus der Anwendung von \u00dcbergangsvorschriften (Gruppe)": {
- "is_group": 1,
- "Au\u00dferordentliche Ertr\u00e4ge aus der Anwendung von \u00dcbergangsvorschriften": {
- "account_number": "7460"
- },
- "Au\u00dferordentliche Ertr\u00e4ge: Zuschreibung f. Sachanlageverm\u00f6gen": {
- "account_number": "7461"
- },
- "Au\u00dferordentliche Ertr\u00e4ge: Zuschreibung f. Finanzanlageverm\u00f6gen": {
- "account_number": "7462"
- },
- "Au\u00dferordentliche Ertr\u00e4ge: Wertpapiere im Umlaufverm\u00f6gen": {
- "account_number": "7463"
- },
- "Au\u00dferordentliche Ertr\u00e4ge: latente Steuern": {
- "account_number": "7464"
- }
+ "Ertr\u00e4ge durch Verschmelzung und Umwandlung": {
+ "account_number": "7451"
+ },
+ "Ertr\u00e4ge durch den Verkauf von bedeutenden Beteiligungen": {
+ "account_number": "7452"
+ },
+ "Ert\u00e4ge durch den Verkauf von bedeutenden Grundst\u00fccken": {
+ "account_number": "7453"
+ },
+ "Gewinn aus der Ver\u00e4u\u00dferung oder der Aufgabe von Gesch\u00e4ftsaktivit\u00e4ten nach Steuern": {
+ "account_number": "7454"
+ },
+ "Au\u00dferordentliche Ertr\u00e4ge aus der Anwendung von \u00dcbergangsvorschriften": {
+ "account_number": "7460"
+ },
+ "Au\u00dferordentliche Ertr\u00e4ge: Zuschreibung f. Sachanlageverm\u00f6gen": {
+ "account_number": "7461"
+ },
+ "Au\u00dferordentliche Ertr\u00e4ge: Zuschreibung f. Finanzanlageverm\u00f6gen": {
+ "account_number": "7462"
+ },
+ "Au\u00dferordentliche Ertr\u00e4ge: Wertpapiere im Umlaufverm\u00f6gen": {
+ "account_number": "7463"
+ },
+ "Au\u00dferordentliche Ertr\u00e4ge: latente Steuern": {
+ "account_number": "7464"
}
}
},
"7 - sonstige betriebliche Aufwendungen": {
"root_type": "Expense",
- "is_group": 1,
- "Erl\u00f6sschm\u00e4lerungen (Gruppe)": {
+ "is_group": 1,
+ "Erl\u00f6sschm\u00e4lerungen (Gruppe)": {
"is_group": 1,
"Erl\u00f6sschm\u00e4lerungen": {
"account_number": "4700"
@@ -2692,40 +2703,43 @@
},
"Erl\u00f6sschm\u00e4lerungen aus im Inland steuerpfl. EU-Lieferungen 16 % USt": {
"account_number": "4729"
+ }
+ },
+ "Gew\u00e4hrte Skonti (Gruppe)": {
+ "is_group": 1,
+ "Gew. Skonti": {
+ "account_number": "4730"
},
- "Gew\u00e4hrte Skonti (Gruppe)": {
- "is_group": 1,
- "Gew. Skonti": {
- "account_number": "4730"
- },
- "Gew. Skonti 7 % USt": {
- "account_number": "4731"
- },
- "Gew. Skonti 19 % USt": {
- "account_number": "4736"
- },
- "Gew. Skonti aus Lieferungen von Mobilfunkger./Schaltkr., f. die der Leistungsempf. die Ust. schuldet": {
- "account_number": "4738"
- },
- "Gew. Skonti aus Leistungen, f. die der Leistungsempf. die Umsatzsteuer nach \u00a7 13b UStG schuldet": {
- "account_number": "4741"
- },
- "Gew. Skonti aus Erl\u00f6sen aus im anderen EU-Land steuerpfl. Leistungen, f. die der Leistungsempf. die Ust. schuldet": {
- "account_number": "4742"
- },
- "Gew. Skonti aus steuerfreien innergem. Lieferungen \u00a7 4 Nr. 1b UStG": {
- "account_number": "4743"
- },
- "Gew. Skonti aus im Inland steuerpfl. EU-Lieferungen": {
- "account_number": "4745"
- },
- "Gew. Skonti aus im Inland steuerpfl. EU-Lieferungen 7% USt": {
- "account_number": "4746"
- },
- "Gew. Skonti aus im Inland steuerpfl. EU-Lieferungen 19% USt": {
- "account_number": "4748"
- }
+ "Gew. Skonti 7 % USt": {
+ "account_number": "4731"
},
+ "Gew. Skonti 19 % USt": {
+ "account_number": "4736"
+ },
+ "Gew. Skonti aus Lieferungen von Mobilfunkger./Schaltkr., f. die der Leistungsempf. die Ust. schuldet": {
+ "account_number": "4738"
+ },
+ "Gew. Skonti aus Leistungen, f. die der Leistungsempf. die Umsatzsteuer nach \u00a7 13b UStG schuldet": {
+ "account_number": "4741"
+ },
+ "Gew. Skonti aus Erl\u00f6sen aus im anderen EU-Land steuerpfl. Leistungen, f. die der Leistungsempf. die Ust. schuldet": {
+ "account_number": "4742"
+ },
+ "Gew. Skonti aus steuerfreien innergem. Lieferungen \u00a7 4 Nr. 1b UStG": {
+ "account_number": "4743"
+ },
+ "Gew. Skonti aus im Inland steuerpfl. EU-Lieferungen": {
+ "account_number": "4745"
+ },
+ "Gew. Skonti aus im Inland steuerpfl. EU-Lieferungen 7% USt": {
+ "account_number": "4746"
+ },
+ "Gew. Skonti aus im Inland steuerpfl. EU-Lieferungen 19% USt": {
+ "account_number": "4748"
+ }
+ },
+ "Gew\u00e4hrte Boni (Gruppe)": {
+ "is_group": 1,
"Gew\u00e4hrte Boni 7 % USt": {
"account_number": "4750"
},
@@ -2744,7 +2758,7 @@
"Gew\u00e4hrte Rabatte 19 % USt": {
"account_number": "4790"
}
- },
+ },
"Sonstige betriebliche Aufwendungen": {
"account_number": "6300"
},
@@ -2838,103 +2852,79 @@
"account_number": "6398"
}
},
- "Versicherungen (Gruppe)": {
- "is_group": 1,
- "Versicherungen": {
- "account_number": "6400"
- },
- "Versicherungen f. Geb\u00e4ude, die zum Betriebsverm\u00f6gen geh\u00f6ren": {
- "account_number": "6405"
- },
- "Netto-Pr\u00e4mie f. R\u00fcckdeckung k\u00fcnftiger Versorgungsleistungen": {
- "account_number": "6410"
- },
- "Beitr\u00e4ge": {
- "account_number": "6420"
- },
- "Sonstige Abgaben": {
- "account_number": "6430"
- },
- "Steuerlich abzugsf\u00e4hige Versp\u00e4tungszuschl\u00e4ge und Zwangsgelder": {
- "account_number": "6436"
- },
- "Steuerlich nicht abzugsf\u00e4hige Versp\u00e4tungszuschl\u00e4ge und Zwangsgelder": {
- "account_number": "6437"
- },
- "Ausgleichsabgabe i. S. d. Schwerbehindertengesetzes": {
- "account_number": "6440"
- },
- "Reparaturen und Instandhaltung von Bauten": {
- "account_number": "6450"
- },
- "Reparaturen und Instandhaltung von technischenAnlagen und Maschinen": {
- "account_number": "6460"
- },
- "Reparaturen und Instandhaltung von anderen Anlagen und Betriebs- und Gesch\u00e4ftsausstattung": {
- "account_number": "6470"
- },
- "Zuf\u00fchrung zu Aufwandsr\u00fcckstellungen": {
- "account_number": "6475"
- },
- "Reparaturen und Instandhaltung von anderen Anlagen": {
- "account_number": "6485"
- },
- "Sonstige Reparaturen und Instandhaltungen": {
- "account_number": "6490"
- },
- "Wartungskosten f. Hard- und Software": {
- "account_number": "6495"
- },
- "Mietleasing (bewegliche Wirtschaftsg\u00fcter)": {
- "account_number": "6498"
- }
+ "Versicherungen": {
+ "account_number": "6400"
+ },
+ "Versicherungen f. Geb\u00e4ude, die zum Betriebsverm\u00f6gen geh\u00f6ren": {
+ "account_number": "6405"
+ },
+ "Netto-Pr\u00e4mie f. R\u00fcckdeckung k\u00fcnftiger Versorgungsleistungen": {
+ "account_number": "6410"
+ },
+ "Beitr\u00e4ge": {
+ "account_number": "6420"
+ },
+ "Sonstige Abgaben": {
+ "account_number": "6430"
+ },
+ "Steuerlich abzugsf\u00e4hige Versp\u00e4tungszuschl\u00e4ge und Zwangsgelder": {
+ "account_number": "6436"
+ },
+ "Steuerlich nicht abzugsf\u00e4hige Versp\u00e4tungszuschl\u00e4ge und Zwangsgelder": {
+ "account_number": "6437"
+ },
+ "Ausgleichsabgabe i. S. d. Schwerbehindertengesetzes": {
+ "account_number": "6440"
+ },
+ "Reparaturen und Instandhaltung von Bauten": {
+ "account_number": "6450"
+ },
+ "Reparaturen und Instandhaltung von technischenAnlagen und Maschinen": {
+ "account_number": "6460"
+ },
+ "Reparaturen und Instandhaltung von anderen Anlagen und Betriebs- und Gesch\u00e4ftsausstattung": {
+ "account_number": "6470"
+ },
+ "Zuf\u00fchrung zu Aufwandsr\u00fcckstellungen": {
+ "account_number": "6475"
+ },
+ "Reparaturen und Instandhaltung von anderen Anlagen": {
+ "account_number": "6485"
+ },
+ "Sonstige Reparaturen und Instandhaltungen": {
+ "account_number": "6490"
+ },
+ "Wartungskosten f. Hard- und Software": {
+ "account_number": "6495"
+ },
+ "Mietleasing (bewegliche Wirtschaftsg\u00fcter)": {
+ "account_number": "6498"
},
"Fahrzeugkosten (Gruppe)": {
"is_group": 1,
"Fahrzeugkosten": {
"account_number": "6500"
},
- "Kfz-Versicherungen (Gruppe)": {
- "is_group": 1,
- "Kfz-Versicherungen": {
- "account_number": "6520"
- }
+ "Kfz-Versicherungen": {
+ "account_number": "6520"
},
- "Laufende Kfz-Betriebskosten (Gruppe)": {
- "is_group": 1,
- "Laufende Kfz-Betriebskosten": {
- "account_number": "6530"
- }
+ "Laufende Kfz-Betriebskosten": {
+ "account_number": "6530"
},
- "Kfz-Reparaturen (Gruppe)": {
- "is_group": 1,
- "Kfz-Reparaturen": {
- "account_number": "6540"
- }
+ "Kfz-Reparaturen": {
+ "account_number": "6540"
},
- "Garagenmiete (Gruppe)": {
- "is_group": 1,
- "Garagenmiete": {
- "account_number": "6550"
- }
+ "Garagenmiete": {
+ "account_number": "6550"
},
- "Mietleasing Kfz (Gruppe)": {
- "is_group": 1,
- "Mietleasing Kfz": {
- "account_number": "6560"
- }
+ "Mietleasing Kfz": {
+ "account_number": "6560"
},
- "Sonstige Kfz-Kosten (Gruppe)": {
- "is_group": 1,
- "Sonstige Kfz-Kosten": {
- "account_number": "6570"
- }
+ "Sonstige Kfz-Kosten": {
+ "account_number": "6570"
},
- "Mautgeb\u00fchren (Gruppe)": {
- "is_group": 1,
- "Mautgeb\u00fchren": {
- "account_number": "6580"
- }
+ "Mautgeb\u00fchren": {
+ "account_number": "6580"
},
"Kfz-Kosten f. betrieblich genutzte zum Privatverm\u00f6gen geh\u00f6rende Kraftfahrzeuge": {
"account_number": "6590"
@@ -2996,20 +2986,23 @@
"Nicht abzugsf\u00e4hige Betriebsausgaben aus Werbe- und Repr\u00e4sentationskosten": {
"account_number": "6645"
},
- "Reisekosten Arbeitnehmer": {
- "account_number": "6650"
- },
- "Reisekosten Arbeitnehmer \u00dcbernachtungsaufwand": {
- "account_number": "6660"
- },
- "Reisekosten Arbeitnehmer Fahrtkosten": {
- "account_number": "6663"
- },
- "Reisekosten Arbeitnehmer Verpflegungsmehraufwand": {
- "account_number": "6664"
- },
- "Kilometergelderstattung Arbeitnehmer": {
- "account_number": "6668"
+ "Reisekosten Arbeitnehmer (Gruppe)": {
+ "is_group": 1,
+ "Reisekosten Arbeitnehmer": {
+ "account_number": "6650"
+ },
+ "Reisekosten Arbeitnehmer \u00dcbernachtungsaufwand": {
+ "account_number": "6660"
+ },
+ "Reisekosten Arbeitnehmer Fahrtkosten": {
+ "account_number": "6663"
+ },
+ "Reisekosten Arbeitnehmer Verpflegungsmehraufwand": {
+ "account_number": "6664"
+ },
+ "Kilometergelderstattung Arbeitnehmer": {
+ "account_number": "6668"
+ }
},
"Reisekosten Unternehmer (Gruppe)": {
"is_group": 1,
diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js
index a36f421..3c12f85 100644
--- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js
+++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js
@@ -48,12 +48,6 @@
frm.set_value('label', frm.doc.document_type);
frm.set_value('fieldname', frappe.model.scrub(frm.doc.document_type));
- if (frm.is_new()){
- let row = frappe.model.add_child(frm.doc, "Accounting Dimension Detail", "dimension_defaults");
- row.reference_document = frm.doc.document_type;
- frm.refresh_fields("dimension_defaults");
- }
-
frappe.db.get_value('Accounting Dimension', {'document_type': frm.doc.document_type}, 'document_type', (r) => {
if (r && r.document_type) {
frm.set_df_property('document_type', 'description', "Document type is already set as dimension");
diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.json b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.json
index cf6dc7a..cf55d55 100644
--- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.json
+++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.json
@@ -1,4 +1,5 @@
{
+ "actions": [],
"autoname": "field:label",
"creation": "2019-05-04 18:13:37.002352",
"doctype": "DocType",
@@ -46,7 +47,8 @@
"options": "Accounting Dimension Detail"
}
],
- "modified": "2019-07-17 16:49:31.134385",
+ "links": [],
+ "modified": "2020-03-22 20:34:39.805728",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Accounting Dimension",
@@ -63,9 +65,20 @@
"role": "System Manager",
"share": 1,
"write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Accounts Manager",
+ "share": 1,
+ "write": 1
}
],
- "quick_entry": 1,
"sort_field": "modified",
"sort_order": "ASC",
"track_changes": 1
diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
index 522ed4f..462d967 100644
--- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
+++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
@@ -172,7 +172,7 @@
return doclist
def get_accounting_dimensions(as_list=True):
- accounting_dimensions = frappe.get_all("Accounting Dimension", fields=["label", "fieldname", "disabled"])
+ accounting_dimensions = frappe.get_all("Accounting Dimension", fields=["label", "fieldname", "disabled", "document_type"])
if as_list:
return [d.fieldname for d in accounting_dimensions]
@@ -186,6 +186,18 @@
return dimensions
+def get_dimension_with_children(doctype, dimension):
+
+ if isinstance(dimension, list):
+ dimension = dimension[0]
+
+ all_dimensions = []
+ lft, rgt = frappe.db.get_value(doctype, dimension, ["lft", "rgt"])
+ children = frappe.get_all(doctype, filters={"lft": [">=", lft], "rgt": ["<=", rgt]})
+ all_dimensions += [c.name for c in children]
+
+ return all_dimensions
+
@frappe.whitelist()
def get_dimension_filters():
dimension_filters = frappe.db.sql("""
diff --git a/erpnext/accounts/doctype/accounts_settings/regional/united_states.js b/erpnext/accounts/doctype/accounts_settings/regional/united_states.js
new file mode 100644
index 0000000..d47d6e5
--- /dev/null
+++ b/erpnext/accounts/doctype/accounts_settings/regional/united_states.js
@@ -0,0 +1,8 @@
+
+frappe.ui.form.on('Accounts Settings', {
+ refresh: function(frm) {
+ frm.set_df_property("acc_frozen_upto", "label", "Books Closed Through");
+ frm.set_df_property("frozen_accounts_modifier", "label", "Role Allowed to Close Books & Make Changes to Closed Periods");
+ frm.set_df_property("credit_controller", "label", "Credit Manager");
+ }
+});
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/bank/bank.js b/erpnext/accounts/doctype/bank/bank.js
index 463d29c..de9498e 100644
--- a/erpnext/accounts/doctype/bank/bank.js
+++ b/erpnext/accounts/doctype/bank/bank.js
@@ -7,7 +7,20 @@
},
refresh: function(frm) {
add_fields_to_mapping_table(frm);
- }
+
+ frappe.dynamic_link = { doc: frm.doc, fieldname: 'name', doctype: 'Bank' };
+
+ frm.toggle_display(['address_html','contact_html'], !frm.doc.__islocal);
+
+ if (frm.doc.__islocal) {
+ frm.set_df_property('address_and_contact', 'hidden', 1);
+ frappe.contacts.clear_address_and_contact(frm);
+ }
+ else {
+ frm.set_df_property('address_and_contact', 'hidden', 0);
+ frappe.contacts.render_address_and_contact(frm);
+ }
+ },
});
diff --git a/erpnext/accounts/doctype/bank/bank.json b/erpnext/accounts/doctype/bank/bank.json
index 4fa0e4f..99978e6 100644
--- a/erpnext/accounts/doctype/bank/bank.json
+++ b/erpnext/accounts/doctype/bank/bank.json
@@ -1,224 +1,137 @@
{
- "allow_copy": 0,
- "allow_events_in_timeline": 0,
- "allow_guest_to_view": 0,
- "allow_import": 0,
- "allow_rename": 0,
- "autoname": "field:bank_name",
- "beta": 0,
- "creation": "2018-04-07 16:59:59.496668",
- "custom": 0,
- "docstatus": 0,
- "doctype": "DocType",
- "document_type": "",
- "editable_grid": 1,
- "engine": "InnoDB",
+ "actions": [],
+ "allow_import": 1,
+ "allow_rename": 1,
+ "autoname": "field:bank_name",
+ "creation": "2018-04-07 16:59:59.496668",
+ "doctype": "DocType",
+ "document_type": "Setup",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+ "bank_details_section",
+ "bank_name",
+ "swift_number",
+ "column_break_1",
+ "branch_code",
+ "website",
+ "address_and_contact",
+ "address_html",
+ "column_break_13",
+ "contact_html",
+ "data_import_configuration_section",
+ "bank_transaction_mapping",
+ "section_break_4",
+ "plaid_access_token"
+ ],
"fields": [
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "fieldname": "bank_name",
- "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": "Bank Name",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 1,
- "search_index": 0,
- "set_only_once": 0,
- "translatable": 0,
+ "fieldname": "bank_name",
+ "fieldtype": "Data",
+ "label": "Bank Name",
+ "reqd": 1,
"unique": 1
- },
+ },
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 1,
- "columns": 0,
- "fieldname": "data_import_configuration_section",
- "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": "Data Import Configuration",
- "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": "bank_details_section",
+ "fieldtype": "Section Break",
+ "label": "Bank Details"
+ },
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "fieldname": "bank_transaction_mapping",
- "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": "Bank Transaction Mapping",
- "length": 0,
- "no_copy": 0,
- "options": "Bank Transaction Mapping",
- "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_in_quick_entry": 1,
+ "fieldname": "swift_number",
+ "fieldtype": "Data",
+ "in_list_view": 1,
+ "in_standard_filter": 1,
+ "label": "SWIFT number",
+ "unique": 1
+ },
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "fieldname": "section_break_4",
- "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": "column_break_1",
+ "fieldtype": "Column Break",
+ "search_index": 1
+ },
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "fieldname": "plaid_access_token",
- "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": "Plaid Access Token",
- "length": 0,
- "no_copy": 1,
- "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_in_quick_entry": 1,
+ "fieldname": "branch_code",
+ "fieldtype": "Data",
+ "in_list_view": 1,
+ "in_standard_filter": 1,
+ "label": "Branch Code",
+ "unique": 1
+ },
+ {
+ "fieldname": "address_and_contact",
+ "fieldtype": "Section Break",
+ "label": "Address and Contact",
+ "options": "fa fa-map-marker"
+ },
+ {
+ "fieldname": "address_html",
+ "fieldtype": "HTML",
+ "label": "Address HTML"
+ },
+ {
+ "fieldname": "website",
+ "fieldtype": "Data",
+ "label": "Website"
+ },
+ {
+ "fieldname": "column_break_13",
+ "fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "contact_html",
+ "fieldtype": "HTML",
+ "label": "Contact HTML"
+ },
+ {
+ "collapsible": 1,
+ "fieldname": "data_import_configuration_section",
+ "fieldtype": "Section Break",
+ "label": "Data Import Configuration"
+ },
+ {
+ "fieldname": "bank_transaction_mapping",
+ "fieldtype": "Table",
+ "label": "Bank Transaction Mapping",
+ "options": "Bank Transaction Mapping"
+ },
+ {
+ "fieldname": "section_break_4",
+ "fieldtype": "Section Break"
+ },
+ {
+ "fieldname": "plaid_access_token",
+ "fieldtype": "Data",
+ "hidden": 1,
+ "label": "Plaid Access Token",
+ "no_copy": 1,
+ "read_only": 1
}
- ],
- "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-11-27 16:12:13.938776",
- "modified_by": "Administrator",
- "module": "Accounts",
- "name": "Bank",
- "name_case": "",
- "owner": "Administrator",
+ ],
+ "links": [],
+ "modified": "2020-03-25 21:22:33.496264",
+ "modified_by": "Administrator",
+ "module": "Accounts",
+ "name": "Bank",
+ "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,
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "System Manager",
+ "share": 1,
"write": 1
}
- ],
- "quick_entry": 1,
- "read_only": 0,
- "read_only_onload": 0,
- "show_name_in_global_search": 0,
- "sort_field": "modified",
- "sort_order": "DESC",
- "track_changes": 1,
- "track_seen": 0,
- "track_views": 0
+ ],
+ "quick_entry": 1,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_changes": 1
}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/bank/bank.py b/erpnext/accounts/doctype/bank/bank.py
index b205d56..41aae14 100644
--- a/erpnext/accounts/doctype/bank/bank.py
+++ b/erpnext/accounts/doctype/bank/bank.py
@@ -5,6 +5,12 @@
from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
+from frappe.contacts.address_and_contact import load_address_and_contact, delete_contact_and_address
class Bank(Document):
- pass
+ def onload(self):
+ """Load address and contacts in `__onload`"""
+ load_address_and_contact(self)
+
+ def on_trash(self):
+ delete_contact_and_address('Bank', self.name)
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/bank_account/bank_account.json b/erpnext/accounts/doctype/bank_account/bank_account.json
index c8ae26d..aa9c434 100644
--- a/erpnext/accounts/doctype/bank_account/bank_account.json
+++ b/erpnext/accounts/doctype/bank_account/bank_account.json
@@ -24,8 +24,6 @@
"iban",
"column_break_12",
"bank_account_no",
- "branch_code",
- "swift_number",
"address_and_contact",
"address_html",
"website",
@@ -146,17 +144,6 @@
"length": 30
},
{
- "fieldname": "branch_code",
- "fieldtype": "Data",
- "in_list_view": 1,
- "label": "Branch Code"
- },
- {
- "fieldname": "swift_number",
- "fieldtype": "Data",
- "label": "SWIFT number"
- },
- {
"fieldname": "address_and_contact",
"fieldtype": "Section Break",
"label": "Address and Contact",
@@ -213,7 +200,7 @@
}
],
"links": [],
- "modified": "2020-01-29 20:42:26.458316",
+ "modified": "2020-01-30 20:42:26.458316",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Bank Account",
diff --git a/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.js b/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.js
index 0acbe20..065d25e 100644
--- a/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.js
+++ b/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.js
@@ -4,8 +4,8 @@
cur_frm.add_fetch('bank_account','account','account');
cur_frm.add_fetch('bank_account','bank_account_no','bank_account_no');
cur_frm.add_fetch('bank_account','iban','iban');
-cur_frm.add_fetch('bank_account','branch_code','branch_code');
-cur_frm.add_fetch('bank_account','swift_number','swift_number');
+cur_frm.add_fetch('bank','branch_code','branch_code');
+cur_frm.add_fetch('bank','swift_number','swift_number');
frappe.ui.form.on('Bank Guarantee', {
setup: function(frm) {
diff --git a/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.py b/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.py
index 9aa2ee2..f28a074 100644
--- a/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.py
+++ b/erpnext/accounts/doctype/bank_guarantee/bank_guarantee.py
@@ -6,6 +6,7 @@
import frappe, json
from frappe.model.document import Document
from frappe import _
+from frappe.desk.search import sanitize_searchfield
class BankGuarantee(Document):
def validate(self):
@@ -22,5 +23,8 @@
@frappe.whitelist()
def get_vouchar_detials(column_list, doctype, docname):
+ column_list = json.loads(column_list)
+ for col in column_list:
+ sanitize_searchfield(col)
return frappe.db.sql(''' select {columns} from `tab{doctype}` where name=%s'''
.format(columns=", ".join(json.loads(column_list)), doctype=doctype), docname, as_dict=1)[0]
diff --git a/erpnext/accounts/doctype/c_form/c_form.js b/erpnext/accounts/doctype/c_form/c_form.js
index 3d0fc0a..846408f 100644
--- a/erpnext/accounts/doctype/c_form/c_form.js
+++ b/erpnext/accounts/doctype/c_form/c_form.js
@@ -32,10 +32,12 @@
invoice_no(frm, cdt, cdn) {
let d = frappe.get_doc(cdt, cdn);
- frm.call('get_invoice_details', {
- invoice_no: d.invoice_no
- }).then(r => {
- frappe.model.set_value(cdt, cdn, r.message);
- });
+ if (d.invoice_no) {
+ frm.call('get_invoice_details', {
+ invoice_no: d.invoice_no
+ }).then(r => {
+ frappe.model.set_value(cdt, cdn, r.message);
+ });
+ }
}
});
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.json b/erpnext/accounts/doctype/cost_center/cost_center.json
index 976f05a..99b89d1 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.json
+++ b/erpnext/accounts/doctype/cost_center/cost_center.json
@@ -124,11 +124,13 @@
],
"icon": "fa fa-money",
"idx": 1,
+ "is_tree": 1,
"links": [],
- "modified": "2020-01-28 13:50:23.430434",
+ "modified": "2020-03-18 17:59:04.321637",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Cost Center",
+ "nsm_parent_field": "parent_cost_center",
"owner": "Administrator",
"permissions": [
{
diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.json b/erpnext/accounts/doctype/gl_entry/gl_entry.json
index e64bc9e..2214811 100644
--- a/erpnext/accounts/doctype/gl_entry/gl_entry.json
+++ b/erpnext/accounts/doctype/gl_entry/gl_entry.json
@@ -114,13 +114,13 @@
"fieldname": "debit_in_account_currency",
"fieldtype": "Currency",
"label": "Debit Amount in Account Currency",
- "options": "currency"
+ "options": "account_currency"
},
{
"fieldname": "credit_in_account_currency",
"fieldtype": "Currency",
"label": "Credit Amount in Account Currency",
- "options": "currency"
+ "options": "account_currency"
},
{
"fieldname": "against",
@@ -250,7 +250,7 @@
"icon": "fa fa-list",
"idx": 1,
"in_create": 1,
- "modified": "2020-02-10 04:54:57.777905",
+ "modified": "2020-03-28 16:22:33.766994",
"modified_by": "Administrator",
"module": "Accounts",
"name": "GL Entry",
diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py
index f9e4fd7..14d0531 100644
--- a/erpnext/accounts/doctype/gl_entry/gl_entry.py
+++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py
@@ -233,35 +233,14 @@
frappe.throw(_("Outstanding for {0} cannot be less than zero ({1})").format(against_voucher, fmt_money(bal)))
if against_voucher_type in ["Sales Invoice", "Purchase Invoice", "Fees"]:
- update_outstanding_amt_in_ref(against_voucher, against_voucher_type, bal)
-
-def update_outstanding_amt_in_ref(against_voucher, against_voucher_type, bal):
- data = []
- # Update outstanding amt on against voucher
- if against_voucher_type == "Fees":
ref_doc = frappe.get_doc(against_voucher_type, against_voucher)
- ref_doc.db_set('outstanding_amount', bal)
- ref_doc.set_status(update=True)
- return
- elif against_voucher_type == "Purchase Invoice":
- from erpnext.accounts.doctype.purchase_invoice.purchase_invoice import get_status
- data = frappe.db.get_value(against_voucher_type, against_voucher,
- ["name as purchase_invoice", "outstanding_amount",
- "is_return", "due_date", "docstatus"])
- elif against_voucher_type == "Sales Invoice":
- from erpnext.accounts.doctype.sales_invoice.sales_invoice import get_status
- data = frappe.db.get_value(against_voucher_type, against_voucher,
- ["name as sales_invoice", "outstanding_amount", "is_discounted",
- "is_return", "due_date", "docstatus"])
- precision = frappe.get_precision(against_voucher_type, "outstanding_amount")
- data = list(data)
- data.append(precision)
- status = get_status(data)
- frappe.db.set_value(against_voucher_type, against_voucher, {
- 'outstanding_amount': bal,
- 'status': status
- })
+ # Didn't use db_set for optimisation purpose
+ ref_doc.outstanding_amount = bal
+ frappe.db.set_value(against_voucher_type, against_voucher, 'outstanding_amount', bal)
+
+ ref_doc.set_status(update=True)
+
def validate_frozen_account(account, adv_adj=None):
frozen_account = frappe.db.get_value("Account", account, "freeze_account")
diff --git a/erpnext/accounts/doctype/gl_entry/test_gl_entry.py b/erpnext/accounts/doctype/gl_entry/test_gl_entry.py
index 01ddd29..b4a547b 100644
--- a/erpnext/accounts/doctype/gl_entry/test_gl_entry.py
+++ b/erpnext/accounts/doctype/gl_entry/test_gl_entry.py
@@ -38,6 +38,7 @@
filters={"voucher_type": "Journal Entry", "voucher_no": je.name},
order_by="creation"
)
+
self.assertTrue(all(entry.to_rename == 1 for entry in gl_entries))
old_naming_series_current_value = frappe.db.sql("SELECT current from tabSeries where name = %s", naming_series)[0][0]
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 2cbd40b..eb3017a 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -454,8 +454,10 @@
def set_print_format_fields(self):
bank_amount = party_amount = total_amount = 0.0
currency = bank_account_currency = party_account_currency = pay_to_recd_from= None
+ party_type = None
for d in self.get('accounts'):
if d.party_type in ['Customer', 'Supplier'] and d.party:
+ party_type = d.party_type
if not pay_to_recd_from:
pay_to_recd_from = d.party
@@ -467,9 +469,9 @@
bank_amount += (d.debit_in_account_currency or d.credit_in_account_currency)
bank_account_currency = d.account_currency
- if pay_to_recd_from:
- self.pay_to_recd_from = frappe.db.get_value(d.party_type, pay_to_recd_from,
- "customer_name" if d.party_type=="Customer" else "supplier_name")
+ if party_type and pay_to_recd_from:
+ self.pay_to_recd_from = frappe.db.get_value(party_type, pay_to_recd_from,
+ "customer_name" if party_type=="Customer" else "supplier_name")
if bank_amount:
total_amount = bank_amount
currency = bank_account_currency
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.js b/erpnext/accounts/doctype/payment_entry/payment_entry.js
index 968fb60..d208087 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.js
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.js
@@ -33,7 +33,9 @@
frm.set_query("party_bank_account", function() {
return {
filters: {
- "is_company_account":0
+ "is_company_account":0,
+ party_type: frm.doc.party_type,
+ party: frm.doc.party
}
}
});
diff --git a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
index 5303743..a25e0e3 100644
--- a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
@@ -161,15 +161,15 @@
pe.insert()
pe.submit()
- outstanding_amount = flt(frappe.db.get_value("Sales Invoice", si.name, "outstanding_amount"))
- self.assertEqual(outstanding_amount, 0)
- self.assertEqual(si.status, 'Paid')
+ outstanding_amount, status = frappe.db.get_value("Sales Invoice", si.name, ["outstanding_amount", "status"])
+ self.assertEqual(flt(outstanding_amount), 0)
+ self.assertEqual(status, 'Paid')
pe.cancel()
- outstanding_amount = flt(frappe.db.get_value("Sales Invoice", si.name, "outstanding_amount"))
- self.assertEqual(outstanding_amount, 100)
- self.assertEqual(si.status, 'Unpaid')
+ outstanding_amount, status = frappe.db.get_value("Sales Invoice", si.name, ["outstanding_amount", "status"])
+ self.assertEqual(flt(outstanding_amount), 100)
+ self.assertEqual(status, 'Unpaid')
def test_payment_against_purchase_invoice_to_check_status(self):
pi = make_purchase_invoice(supplier="_Test Supplier USD", debit_to="_Test Payable USD - _TC",
@@ -182,15 +182,15 @@
pe.insert()
pe.submit()
- outstanding_amount = flt(frappe.db.get_value("Purchase Invoice", pi.name, "outstanding_amount"))
- self.assertEqual(outstanding_amount, 0)
- self.assertEqual(pi.status, 'Paid')
+ outstanding_amount, status = frappe.db.get_value("Purchase Invoice", pi.name, ["outstanding_amount", "status"])
+ self.assertEqual(flt(outstanding_amount), 0)
+ self.assertEqual(status, 'Paid')
pe.cancel()
- outstanding_amount = flt(frappe.db.get_value("Purchase Invoice", pi.name, "outstanding_amount"))
- self.assertEqual(outstanding_amount, 100)
- self.assertEqual(pi.status, 'Unpaid')
+ outstanding_amount, status = frappe.db.get_value("Purchase Invoice", pi.name, ["outstanding_amount", "status"])
+ self.assertEqual(flt(outstanding_amount), 250)
+ self.assertEqual(status, 'Unpaid')
def test_payment_entry_against_ec(self):
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.json b/erpnext/accounts/doctype/payment_request/payment_request.json
index bff995e..c1559a7 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.json
+++ b/erpnext/accounts/doctype/payment_request/payment_request.json
@@ -839,7 +839,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
- "fetch_from": "bank_account.branch_code",
+ "fetch_from": "bank.branch_code",
"fieldname": "branch_code",
"fieldtype": "Read Only",
"hidden": 0,
@@ -873,7 +873,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
- "fetch_from": "bank_account.swift_number",
+ "fetch_from": "bank.swift_number",
"fieldname": "swift_number",
"fieldtype": "Read Only",
"hidden": 0,
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py
index 0fade8c..7e9211a 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/payment_request.py
@@ -317,13 +317,13 @@
"payment_request_type": args.get("payment_request_type"),
"currency": ref_doc.currency,
"grand_total": grand_total,
- "email_to": args.recipient_id or "",
+ "email_to": args.recipient_id or ref_doc.owner,
"subject": _("Payment Request for {0}").format(args.dn),
"message": gateway_account.get("message") or get_dummy_message(ref_doc),
"reference_doctype": args.dt,
"reference_name": args.dn,
- "party_type": args.get("party_type"),
- "party": args.get("party"),
+ "party_type": args.get("party_type") or "Customer",
+ "party": args.get("party") or ref_doc.customer,
"bank_account": bank_account
})
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index cc992ce..87d40fc 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -125,27 +125,6 @@
else:
self.remarks = _("No Remarks")
- def set_status(self, update=False, status=None, update_modified=True):
- if self.is_new():
- if self.get('amended_from'):
- self.status = 'Draft'
- return
-
- if not status:
- precision = self.precision("outstanding_amount")
- args = [
- self.name,
- self.outstanding_amount,
- self.is_return,
- self.due_date,
- self.docstatus,
- precision
- ]
- self.status = get_status(args)
-
- if update:
- self.db_set('status', self.status, update_modified = update_modified)
-
def set_missing_values(self, for_validate=False):
if not self.credit_to:
self.credit_to = get_party_account("Supplier", self.supplier, self.company)
@@ -1028,34 +1007,6 @@
# calculate totals again after applying TDS
self.calculate_taxes_and_totals()
-def get_status(*args):
- purchase_invoice, outstanding_amount, is_return, due_date, docstatus, precision = args[0]
-
- outstanding_amount = flt(outstanding_amount, precision)
- due_date = getdate(due_date)
- now_date = getdate()
-
- if docstatus == 2:
- status = "Cancelled"
- elif docstatus == 1:
- if outstanding_amount > 0 and due_date < now_date:
- status = "Overdue"
- elif outstanding_amount > 0 and due_date >= now_date:
- status = "Unpaid"
- #Check if outstanding amount is 0 due to debit note issued against invoice
- elif outstanding_amount <= 0 and is_return == 0 and frappe.db.get_value('Purchase Invoice', {'is_return': 1, 'return_against': purchase_invoice, 'docstatus': 1}):
- status = "Debit Note Issued"
- elif is_return == 1:
- status = "Return"
- elif outstanding_amount <=0:
- status = "Paid"
- else:
- status = "Submitted"
- else:
- status = "Draft"
-
- return status
-
def get_list_context(context=None):
from erpnext.controllers.website_list_for_contact import get_list_context
list_context = get_list_context(context)
@@ -1116,3 +1067,6 @@
def make_inter_company_sales_invoice(source_name, target_doc=None):
from erpnext.accounts.doctype.sales_invoice.sales_invoice import make_inter_company_transaction
return make_inter_company_transaction("Purchase Invoice", source_name, target_doc)
+
+def on_doctype_update():
+ frappe.db.add_index("Purchase Invoice", ["supplier", "is_return", "return_against"])
diff --git a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json
index 28208ce..ef90b94 100644
--- a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json
+++ b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json
@@ -199,7 +199,6 @@
"fieldtype": "Link",
"label": "UOM",
"options": "UOM",
- "print_hide": 1,
"reqd": 1
},
{
@@ -778,7 +777,7 @@
"idx": 1,
"istable": 1,
"links": [],
- "modified": "2020-01-13 16:04:14.200462",
+ "modified": "2020-03-11 14:20:17.297284",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Purchase Invoice Item",
diff --git a/erpnext/accounts/doctype/sales_invoice/pos.py b/erpnext/accounts/doctype/sales_invoice/pos.py
index 749816f..c49ac29 100755
--- a/erpnext/accounts/doctype/sales_invoice/pos.py
+++ b/erpnext/accounts/doctype/sales_invoice/pos.py
@@ -207,7 +207,7 @@
if pos_profile.get('customer_groups'):
# Get customers based on the customer groups defined in the POS profile
for d in pos_profile.get('customer_groups'):
- customer_groups.extend([d.name for d in get_child_nodes('Customer Group', d.customer_group)])
+ customer_groups.extend([d.get('name') for d in get_child_nodes('Customer Group', d.get('customer_group'))])
cond = "customer_group in (%s)" % (', '.join(['%s'] * len(customer_groups)))
return frappe.db.sql(""" select name, customer_name, customer_group,
@@ -387,7 +387,9 @@
@frappe.whitelist()
-def make_invoice(doc_list={}, email_queue_list={}, customers_list={}):
+def make_invoice(pos_profile, doc_list={}, email_queue_list={}, customers_list={}):
+ import json
+
if isinstance(doc_list, string_types):
doc_list = json.loads(doc_list)
@@ -421,7 +423,11 @@
name_list.append(name)
email_queue = make_email_queue(email_queue_list)
- customers = get_customers_list()
+
+ if isinstance(pos_profile, string_types):
+ pos_profile = json.loads(pos_profile)
+
+ customers = get_customers_list(pos_profile)
return {
'invoice': name_list,
'email_queue': email_queue,
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 7f7938d..ba1ceff 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -1223,18 +1223,38 @@
self.status = 'Draft'
return
+ precision = self.precision("outstanding_amount")
+ outstanding_amount = flt(self.outstanding_amount, precision)
+ due_date = getdate(self.due_date)
+ nowdate = getdate()
+
+ discounting_status = None
+ if self.is_discounted:
+ discountng_status = get_discounting_status(self.name)
+
if not status:
- precision = self.precision("outstanding_amount")
- args = [
- self.name,
- self.outstanding_amount,
- self.is_discounted,
- self.is_return,
- self.due_date,
- self.docstatus,
- precision,
- ]
- self.status = get_status(args)
+ if self.docstatus == 2:
+ status = "Cancelled"
+ elif self.docstatus == 1:
+ if outstanding_amount > 0 and due_date < nowdate and self.is_discounted and discountng_status=='Disbursed':
+ self.status = "Overdue and Discounted"
+ elif outstanding_amount > 0 and due_date < nowdate:
+ self.status = "Overdue"
+ elif outstanding_amount > 0 and due_date >= nowdate and self.is_discounted and discountng_status=='Disbursed':
+ self.status = "Unpaid and Discounted"
+ elif outstanding_amount > 0 and due_date >= nowdate:
+ self.status = "Unpaid"
+ #Check if outstanding amount is 0 due to credit note issued against invoice
+ elif outstanding_amount <= 0 and self.is_return == 0 and frappe.db.get_value('Sales Invoice', {'is_return': 1, 'return_against': self.name, 'docstatus': 1}):
+ self.status = "Credit Note Issued"
+ elif self.is_return == 1:
+ self.status = "Return"
+ elif outstanding_amount<=0:
+ self.status = "Paid"
+ else:
+ self.status = "Submitted"
+ else:
+ self.status = "Draft"
if update:
self.db_set('status', self.status, update_modified = update_modified)
@@ -1259,42 +1279,6 @@
return status
-def get_status(*args):
- sales_invoice, outstanding_amount, is_discounted, is_return, due_date, docstatus, precision = args[0]
-
- discounting_status = None
- if is_discounted:
- discounting_status = get_discounting_status(sales_invoice)
-
- outstanding_amount = flt(outstanding_amount, precision)
- due_date = getdate(due_date)
- now_date = getdate()
-
- if docstatus == 2:
- status = "Cancelled"
- elif docstatus == 1:
- if outstanding_amount > 0 and due_date < now_date and is_discounted and discounting_status=='Disbursed':
- status = "Overdue and Discounted"
- elif outstanding_amount > 0 and due_date < now_date:
- status = "Overdue"
- elif outstanding_amount > 0 and due_date >= now_date and is_discounted and discounting_status=='Disbursed':
- status = "Unpaid and Discounted"
- elif outstanding_amount > 0 and due_date >= now_date:
- status = "Unpaid"
- #Check if outstanding amount is 0 due to credit note issued against invoice
- elif outstanding_amount <= 0 and is_return == 0 and frappe.db.get_value('Sales Invoice', {'is_return': 1, 'return_against': sales_invoice, 'docstatus': 1}):
- status = "Credit Note Issued"
- elif is_return == 1:
- status = "Return"
- elif outstanding_amount <=0:
- status = "Paid"
- else:
- status = "Submitted"
- else:
- status = "Draft"
-
- return status
-
def validate_inter_company_party(doctype, party, company, inter_company_reference):
if not party:
return
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index e48e6c9..3d5ce8a 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -786,7 +786,7 @@
def test_make_pos_invoice(self):
from erpnext.accounts.doctype.sales_invoice.pos import make_invoice
- make_pos_profile()
+ pos_profile = make_pos_profile()
pr = make_purchase_receipt(company= "_Test Company with perpetual inventory",supplier_warehouse= "Work In Progress - TCP1", item_code= "_Test FG Item",warehouse= "Stores - TCP1",cost_center= "Main - TCP1")
pos = create_sales_invoice(company= "_Test Company with perpetual inventory", debit_to="Debtors - TCP1", item_code= "_Test FG Item", warehouse="Stores - TCP1", income_account = "Sales - TCP1", expense_account = "Cost of Goods Sold - TCP1", cost_center = "Main - TCP1", do_not_save=True)
@@ -802,7 +802,7 @@
pos.append("taxes", tax)
invoice_data = [{'09052016142': pos}]
- si = make_invoice(invoice_data).get('invoice')
+ si = make_invoice(pos_profile, invoice_data).get('invoice')
self.assertEqual(si[0], '09052016142')
sales_invoice = frappe.get_all('Sales Invoice', fields =["*"], filters = {'offline_pos_name': '09052016142', 'docstatus': 1})
@@ -820,7 +820,7 @@
if allow_negative_stock:
frappe.db.set_value('Stock Settings', None, 'allow_negative_stock', 0)
- make_pos_profile()
+ pos_profile = make_pos_profile()
timestamp = cint(time.time())
item = make_item("_Test POS Item")
@@ -834,7 +834,7 @@
{'mode_of_payment': 'Cash', 'account': 'Cash - _TC', 'amount': 330}]
invoice_data = [{timestamp: pos}]
- si = make_invoice(invoice_data).get('invoice')
+ si = make_invoice(pos_profile, invoice_data).get('invoice')
self.assertEqual(si[0], timestamp)
sales_invoice = frappe.get_all('Sales Invoice', fields =["*"], filters = {'offline_pos_name': timestamp})
@@ -843,7 +843,7 @@
timestamp = cint(time.time())
pos["offline_pos_name"] = timestamp
invoice_data = [{timestamp: pos}]
- si1 = make_invoice(invoice_data).get('invoice')
+ si1 = make_invoice(pos_profile, invoice_data).get('invoice')
self.assertEqual(si1[0], timestamp)
sales_invoice1 = frappe.get_all('Sales Invoice', fields =["*"], filters = {'offline_pos_name': timestamp})
diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py
index 6d53530..5ba455c 100644
--- a/erpnext/accounts/general_ledger.py
+++ b/erpnext/accounts/general_ledger.py
@@ -136,12 +136,11 @@
def make_entry(args, adv_adj, update_outstanding, from_repost=False):
- args.update({"doctype": "GL Entry"})
- gle = frappe.get_doc(args)
+ gle = frappe.new_doc("GL Entry")
+ gle.update(args)
gle.flags.ignore_permissions = 1
gle.flags.from_repost = from_repost
gle.validate()
- gle.flags.ignore_permissions = True
gle.db_insert()
gle.run_method("on_update_with_args", adv_adj, update_outstanding, from_repost)
gle.flags.ignore_validate = True
diff --git a/erpnext/accounts/page/pos/pos.js b/erpnext/accounts/page/pos/pos.js
index 8dc00f3..24fcb41 100755
--- a/erpnext/accounts/page/pos/pos.js
+++ b/erpnext/accounts/page/pos/pos.js
@@ -1769,6 +1769,7 @@
method: "erpnext.accounts.doctype.sales_invoice.pos.make_invoice",
freeze: true,
args: {
+ pos_profile: me.pos_profile_data,
doc_list: me.si_docs,
email_queue_list: me.email_queue_list,
customers_list: me.customers_list
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index 422ace6..8567740 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -281,8 +281,8 @@
existing_gle_currency = get_party_gle_currency(party_type, party, company)
if existing_gle_currency and party_account_currency != existing_gle_currency:
- frappe.throw(_("Accounting Entry for {0}: {1} can only be made in currency: {2}")
- .format(party_type, party, existing_gle_currency), InvalidAccountCurrency)
+ frappe.throw(_("{0} {1} has accounting entries in currency {2} for company {3}. Please select a receivable or payable account with currency {2}.")
+ .format(frappe.bold(party_type), frappe.bold(party), frappe.bold(existing_gle_currency), frappe.bold(company)), InvalidAccountCurrency)
def validate_party_accounts(doc):
companies = []
@@ -295,15 +295,13 @@
companies.append(account.company)
party_account_currency = frappe.db.get_value("Account", account.account, "account_currency", cache=True)
- existing_gle_currency = get_party_gle_currency(doc.doctype, doc.name, account.company)
if frappe.db.get_default("Company"):
company_default_currency = frappe.get_cached_value('Company',
frappe.db.get_default("Company"), "default_currency")
else:
company_default_currency = frappe.db.get_value('Company', account.company, "default_currency")
- if existing_gle_currency and party_account_currency != existing_gle_currency:
- frappe.throw(_("Accounting entries have already been made in currency {0} for company {1}. Please select a receivable or payable account with currency {0}.").format(existing_gle_currency, account.company))
+ validate_party_gle_currency(doc.doctype, doc.name, account.company, party_account_currency)
if doc.get("default_currency") and party_account_currency and company_default_currency:
if doc.default_currency != party_account_currency and doc.default_currency != company_default_currency:
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html
index 791f3f8..bb0d0a1 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html
@@ -218,15 +218,15 @@
<td></td>
<td style="text-align: right"><b>{%= __("Total") %}</b></td>
<td style="text-align: right">
- {%= format_currency(data[i]["invoiced"], data[i]["currency"] ) %}</td>
+ {%= format_currency(data[i]["invoiced"], data[0]["currency"] ) %}</td>
{% if(!filters.show_future_payments) { %}
<td style="text-align: right">
- {%= format_currency(data[i]["paid"], data[i]["currency"]) %}</td>
- <td style="text-align: right">{%= format_currency(data[i]["credit_note"], data[i]["currency"]) %} </td>
+ {%= format_currency(data[i]["paid"], data[0]["currency"]) %}</td>
+ <td style="text-align: right">{%= format_currency(data[i]["credit_note"], data[0]["currency"]) %} </td>
{% } %}
<td style="text-align: right">
- {%= format_currency(data[i]["outstanding"], data[i]["currency"]) %}</td>
+ {%= format_currency(data[i]["outstanding"], data[0]["currency"]) %}</td>
{% if(filters.show_future_payments) { %}
{% if(report.report_name === "Accounts Receivable") { %}
@@ -234,8 +234,8 @@
{%= data[i]["po_no"] %}</td>
{% } %}
<td style="text-align: right">{%= data[i]["future_ref"] %}</td>
- <td style="text-align: right">{%= format_currency(data[i]["future_amount"], data[i]["currency"]) %}</td>
- <td style="text-align: right">{%= format_currency(data[i]["remaining_balance"], data[i]["currency"]) %}</td>
+ <td style="text-align: right">{%= format_currency(data[i]["future_amount"], data[0]["currency"]) %}</td>
+ <td style="text-align: right">{%= format_currency(data[i]["remaining_balance"], data[0]["currency"]) %}</td>
{% } %}
{% } %}
{% } else { %}
@@ -256,10 +256,10 @@
{% } else { %}
<td><b>{%= __("Total") %}</b></td>
{% } %}
- <td style="text-align: right">{%= format_currency(data[i]["invoiced"], data[i]["currency"]) %}</td>
- <td style="text-align: right">{%= format_currency(data[i]["paid"], data[i]["currency"]) %}</td>
- <td style="text-align: right">{%= format_currency(data[i]["credit_note"], data[i]["currency"]) %}</td>
- <td style="text-align: right">{%= format_currency(data[i]["outstanding"], data[i]["currency"]) %}</td>
+ <td style="text-align: right">{%= format_currency(data[i]["invoiced"], data[0]["currency"]) %}</td>
+ <td style="text-align: right">{%= format_currency(data[i]["paid"], data[0]["currency"]) %}</td>
+ <td style="text-align: right">{%= format_currency(data[i]["credit_note"], data[0]["currency"]) %}</td>
+ <td style="text-align: right">{%= format_currency(data[i]["outstanding"], data[0]["currency"]) %}</td>
{% } %}
{% } %}
</tr>
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
index 0438f6d..240b0d8 100755
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -7,7 +7,7 @@
from frappe.utils import getdate, nowdate, flt, cint, formatdate, cstr, now, time_diff_in_seconds
from collections import OrderedDict
from erpnext.accounts.utils import get_currency_precision
-from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_accounting_dimensions
+from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_accounting_dimensions, get_dimension_with_children
# This report gives a summary of all Outstanding Invoices considering the following
@@ -603,7 +603,6 @@
self.add_supplier_filters(conditions, values)
self.add_accounting_dimensions_filters(conditions, values)
-
return " and ".join(conditions), values
def get_order_by_condition(self):
@@ -666,13 +665,16 @@
doctype=doctype, lft=lft, rgt=rgt, key=key)
def add_accounting_dimensions_filters(self, conditions, values):
- accounting_dimensions = get_accounting_dimensions()
+ accounting_dimensions = get_accounting_dimensions(as_list=False)
if accounting_dimensions:
for dimension in accounting_dimensions:
- if self.filters.get(dimension):
- conditions.append("{0} = %s".format(dimension))
- values.append(self.filters.get(dimension))
+ if self.filters.get(dimension.fieldname):
+ if frappe.get_cached_value('DocType', dimension.document_type, 'is_tree'):
+ self.filters[dimension.fieldname] = get_dimension_with_children(dimension.document_type,
+ self.filters.get(dimension.fieldname))
+ conditions.append("{0} in %s".format(dimension.fieldname))
+ values.append(tuple(self.filters.get(dimension.fieldname)))
def get_gle_balance(self, gle):
# get the balance of the GL (debit - credit) or reverse balance based on report type
diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py
index 35915d0..080a7c9 100644
--- a/erpnext/accounts/report/financial_statements.py
+++ b/erpnext/accounts/report/financial_statements.py
@@ -16,7 +16,7 @@
from frappe.utils import (flt, getdate, get_first_day, add_months, add_days, formatdate, cstr)
from six import itervalues
-from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_accounting_dimensions
+from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_accounting_dimensions, get_dimension_with_children
def get_period_list(from_fiscal_year, to_fiscal_year, periodicity, accumulated_values=False,
company=None, reset_period_on_fy_change=True):
@@ -389,7 +389,7 @@
def get_additional_conditions(from_date, ignore_closing_entries, filters):
additional_conditions = []
- accounting_dimensions = get_accounting_dimensions()
+ accounting_dimensions = get_accounting_dimensions(as_list=False)
if ignore_closing_entries:
additional_conditions.append("ifnull(voucher_type, '')!='Period Closing Voucher'")
@@ -412,11 +412,14 @@
additional_conditions.append("(finance_book in (%(finance_book)s, %(company_fb)s, '') OR finance_book IS NULL)")
else:
additional_conditions.append("(finance_book in (%(finance_book)s, '') OR finance_book IS NULL)")
-
+
if accounting_dimensions:
for dimension in accounting_dimensions:
- if filters.get(dimension):
- additional_conditions.append("{0} in (%({0})s)".format(dimension))
+ if filters.get(dimension.fieldname):
+ if frappe.get_cached_value('DocType', dimension.document_type, 'is_tree'):
+ filters[dimension.fieldname] = get_dimension_with_children(dimension.document_type,
+ filters.get(dimension.fieldname))
+ additional_conditions.append("{0} in %({0})s".format(dimension.fieldname))
return " and {}".format(" and ".join(additional_conditions)) if additional_conditions else ""
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.html b/erpnext/accounts/report/general_ledger/general_ledger.html
index 40469ae..9a2205a 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.html
+++ b/erpnext/accounts/report/general_ledger/general_ledger.html
@@ -2,7 +2,7 @@
<h4 class="text-center">
{% if (filters.party_name) { %}
{%= filters.party_name %}
- {% } else if (filters.party && filters.show_name) { %}
+ {% } else if (filters.party) { %}
{%= filters.party %}
{% } else if (filters.account) { %}
{%= filters.account %}
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py
index 8bea365..898ac13 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.py
+++ b/erpnext/accounts/report/general_ledger/general_ledger.py
@@ -10,7 +10,7 @@
from erpnext.accounts.utils import get_account_currency
from erpnext.accounts.report.financial_statements import get_cost_centers_with_children
from six import iteritems
-from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_accounting_dimensions
+from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_accounting_dimensions, get_dimension_with_children
from collections import OrderedDict
def execute(filters=None):
@@ -131,7 +131,7 @@
gl_entries = frappe.db.sql(
"""
select
- posting_date, account, party_type, party,
+ name as gl_entry, posting_date, account, party_type, party,
voucher_type, voucher_no, cost_center, project,
against_voucher_type, against_voucher, account_currency,
remarks, against, is_opening {select_fields}
@@ -194,12 +194,15 @@
if match_conditions:
conditions.append(match_conditions)
- accounting_dimensions = get_accounting_dimensions()
+ accounting_dimensions = get_accounting_dimensions(as_list=False)
if accounting_dimensions:
for dimension in accounting_dimensions:
- if filters.get(dimension):
- conditions.append("{0} in (%({0})s)".format(dimension))
+ if filters.get(dimension.fieldname):
+ if frappe.get_cached_value('DocType', dimension.document_type, 'is_tree'):
+ filters[dimension.fieldname] = get_dimension_with_children(dimension.document_type,
+ filters.get(dimension.fieldname))
+ conditions.append("{0} in %({0})s".format(dimension.fieldname))
return "and {}".format(" and ".join(conditions)) if conditions else ""
@@ -360,6 +363,12 @@
columns = [
{
+ "fieldname": "gl_entry",
+ "fieldtype": "Link",
+ "options": "GL Entry",
+ "hidden": 1
+ },
+ {
"label": _("Posting Date"),
"fieldname": "posting_date",
"fieldtype": "Date",
diff --git a/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py b/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py
index 4523f66..127f313 100644
--- a/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py
+++ b/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py
@@ -54,8 +54,8 @@
'description': d.description,
'invoice': d.parent,
'posting_date': d.posting_date,
- 'customer': d.supplier,
- 'customer_name': d.supplier_name
+ 'supplier': d.supplier,
+ 'supplier_name': d.supplier_name
}
if additional_query_columns:
@@ -201,7 +201,8 @@
{
'label': _('Mode Of Payment'),
'fieldname': 'mode_of_payment',
- 'fieldtype': 'Data',
+ 'fieldtype': 'Link',
+ 'options': 'Mode of Payment',
'width': 120
},
{
@@ -309,6 +310,8 @@
if additional_query_columns:
additional_query_columns = ', ' + ', '.join(additional_query_columns)
+ else:
+ additional_query_columns = ''
return frappe.db.sql("""
select
@@ -320,7 +323,7 @@
`tabPurchase Invoice Item`.`purchase_receipt`, `tabPurchase Invoice Item`.`po_detail`,
`tabPurchase Invoice Item`.`expense_account`, `tabPurchase Invoice Item`.`stock_qty`,
`tabPurchase Invoice Item`.`stock_uom`, `tabPurchase Invoice Item`.`base_net_amount`,
- `tabPurchase Invoice`.supplier_name, `tabPurchase Invoice`.mode_of_payment {0}
+ `tabPurchase Invoice`.`supplier_name`, `tabPurchase Invoice`.`mode_of_payment` {0}
from `tabPurchase Invoice`, `tabPurchase Invoice Item`
where `tabPurchase Invoice`.name = `tabPurchase Invoice Item`.`parent` and
`tabPurchase Invoice`.docstatus = 1 %s
diff --git a/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py b/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py
index 786e04d..0c8957a 100644
--- a/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py
+++ b/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py
@@ -373,6 +373,8 @@
if additional_query_columns:
additional_query_columns = ', ' + ', '.join(additional_query_columns)
+ else:
+ additional_query_columns = ''
return frappe.db.sql("""
select
diff --git a/erpnext/accounts/report/sales_register/sales_register.py b/erpnext/accounts/report/sales_register/sales_register.py
index 2be90bc..9864e40 100644
--- a/erpnext/accounts/report/sales_register/sales_register.py
+++ b/erpnext/accounts/report/sales_register/sales_register.py
@@ -6,7 +6,7 @@
from frappe.utils import flt
from frappe import msgprint, _
from frappe.model.meta import get_field_precision
-from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_accounting_dimensions
+from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_accounting_dimensions, get_dimension_with_children
def execute(filters=None):
return _execute(filters)
@@ -341,14 +341,18 @@
where parent=`tabSales Invoice`.name
and ifnull(`tabSales Invoice Item`.item_group, '') = %(item_group)s)"""
- accounting_dimensions = get_accounting_dimensions()
+ accounting_dimensions = get_accounting_dimensions(as_list=False)
if accounting_dimensions:
for dimension in accounting_dimensions:
- if filters.get(dimension):
+ if filters.get(dimension.fieldname):
+ if frappe.get_cached_value('DocType', dimension.document_type, 'is_tree'):
+ filters[dimension.fieldname] = get_dimension_with_children(dimension.document_type,
+ filters.get(dimension.fieldname))
+
conditions += """ and exists(select name from `tabSales Invoice Item`
where parent=`tabSales Invoice`.name
- and ifnull(`tabSales Invoice Item`.{0}, '') = %({0})s)""".format(dimension)
+ and ifnull(`tabSales Invoice Item`.{0}, '') in %({0})s)""".format(dimension.fieldname)
return conditions
diff --git a/erpnext/accounts/report/trial_balance/trial_balance.py b/erpnext/accounts/report/trial_balance/trial_balance.py
index 69285cc..5fe6b41 100644
--- a/erpnext/accounts/report/trial_balance/trial_balance.py
+++ b/erpnext/accounts/report/trial_balance/trial_balance.py
@@ -7,7 +7,7 @@
from frappe.utils import flt, getdate, formatdate, cstr
from erpnext.accounts.report.financial_statements \
import filter_accounts, set_gl_entries_by_account, filter_out_zero_value_rows
-from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_accounting_dimensions
+from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_accounting_dimensions, get_dimension_with_children
value_fields = ("opening_debit", "opening_credit", "debit", "credit", "closing_debit", "closing_credit")
@@ -109,7 +109,7 @@
additional_conditions += fb_conditions
- accounting_dimensions = get_accounting_dimensions()
+ accounting_dimensions = get_accounting_dimensions(as_list=False)
query_filters = {
"company": filters.company,
@@ -122,11 +122,14 @@
if accounting_dimensions:
for dimension in accounting_dimensions:
- if filters.get(dimension):
- additional_conditions += """ and {0} in (%({0})s) """.format(dimension)
+ if filters.get(dimension.fieldname):
+ if frappe.get_cached_value('DocType', dimension.document_type, 'is_tree'):
+ filters[dimension.fieldname] = get_dimension_with_children(dimension.document_type,
+ filters.get(dimension.fieldname))
+ additional_conditions += "and {0} in %({0})s".format(dimension.fieldname)
query_filters.update({
- dimension: filters.get(dimension)
+ dimension.fieldname: filters.get(dimension.fieldname)
})
gle = frappe.db.sql("""
diff --git a/erpnext/agriculture/desk_page/agriculture/agriculture.json b/erpnext/agriculture/desk_page/agriculture/agriculture.json
new file mode 100644
index 0000000..6020d62
--- /dev/null
+++ b/erpnext/agriculture/desk_page/agriculture/agriculture.json
@@ -0,0 +1,36 @@
+{
+ "cards": [
+ {
+ "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]",
+ "title": "Crops & Lands"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Plant Analysis\",\n \"name\": \"Plant Analysis\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Soil Analysis\",\n \"name\": \"Soil Analysis\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Water Analysis\",\n \"name\": \"Water Analysis\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Soil Texture\",\n \"name\": \"Soil Texture\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Weather\",\n \"name\": \"Weather\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Agriculture Analysis Criteria\",\n \"name\": \"Agriculture Analysis Criteria\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Analytics"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Disease\",\n \"name\": \"Disease\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Fertilizer\",\n \"name\": \"Fertilizer\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n }\n]",
+ "title": "Diseases & Fertilizers"
+ }
+ ],
+ "category": "Domains",
+ "charts": [],
+ "creation": "2020-03-02 17:23:34.339274",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Agriculture",
+ "modified": "2020-03-12 16:30:37.565413",
+ "modified_by": "Administrator",
+ "module": "Agriculture",
+ "name": "Agriculture",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "restrict_to_domain": "Agriculture",
+ "shortcuts": []
+}
\ No newline at end of file
diff --git a/erpnext/assets/desk_page/assets/assets.json b/erpnext/assets/desk_page/assets/assets.json
new file mode 100644
index 0000000..f9c65cb
--- /dev/null
+++ b/erpnext/assets/desk_page/assets/assets.json
@@ -0,0 +1,53 @@
+{
+ "cards": [
+ {
+ "links": "[\n {\n \"label\": \"Asset\",\n \"name\": \"Asset\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Location\",\n \"name\": \"Location\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Asset Category\",\n \"name\": \"Asset Category\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Transfer an asset from one warehouse to another\",\n \"label\": \"Asset Movement\",\n \"name\": \"Asset Movement\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Assets"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Asset Maintenance Team\",\n \"name\": \"Asset Maintenance Team\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Asset Maintenance Team\"\n ],\n \"label\": \"Asset Maintenance\",\n \"name\": \"Asset Maintenance\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Asset Maintenance\"\n ],\n \"label\": \"Asset Maintenance Log\",\n \"name\": \"Asset Maintenance Log\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Asset\"\n ],\n \"label\": \"Asset Value Adjustment\",\n \"name\": \"Asset Value Adjustment\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Asset\"\n ],\n \"label\": \"Asset Repair\",\n \"name\": \"Asset Repair\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Maintenance"
+ },
+ {
+ "icon": "fa fa-table",
+ "links": "[\n {\n \"dependencies\": [\n \"Asset\"\n ],\n \"doctype\": \"Asset\",\n \"is_query_report\": true,\n \"label\": \"Asset Depreciation Ledger\",\n \"name\": \"Asset Depreciation Ledger\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Asset\"\n ],\n \"doctype\": \"Asset\",\n \"is_query_report\": true,\n \"label\": \"Asset Depreciations and Balances\",\n \"name\": \"Asset Depreciations and Balances\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Asset Maintenance\"\n ],\n \"doctype\": \"Asset Maintenance\",\n \"label\": \"Asset Maintenance\",\n \"name\": \"Asset Maintenance\",\n \"type\": \"report\"\n }\n]",
+ "title": "Reports"
+ }
+ ],
+ "category": "Modules",
+ "charts": [],
+ "creation": "2020-03-02 15:43:27.634865",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "icon": "",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Assets",
+ "modified": "2020-03-12 16:30:38.651019",
+ "modified_by": "Administrator",
+ "module": "Assets",
+ "name": "Assets",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+ {
+ "is_query_report": 0,
+ "link_to": "Asset",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Asset Movement",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Fixed Asset Register",
+ "type": "Report"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/assets/doctype/location/location.json b/erpnext/assets/doctype/location/location.json
index 5ecc72a..6a35130 100644
--- a/erpnext/assets/doctype/location/location.json
+++ b/erpnext/assets/doctype/location/location.json
@@ -139,12 +139,14 @@
"read_only": 1
}
],
+ "is_tree": 1,
"links": [],
- "modified": "2020-01-28 13:52:22.513425",
+ "modified": "2020-03-18 18:00:08.885805",
"modified_by": "Administrator",
"module": "Assets",
"name": "Location",
"name_case": "Title Case",
+ "nsm_parent_field": "parent_location",
"owner": "Administrator",
"permissions": [
{
@@ -218,6 +220,8 @@
"write": 1
}
],
+ "quick_entry": 1,
+ "restrict_to_domain": "Agriculture",
"show_name_in_global_search": 1,
"sort_field": "modified",
"sort_order": "DESC",
diff --git a/erpnext/buying/desk_page/buying/buying.json b/erpnext/buying/desk_page/buying/buying.json
new file mode 100644
index 0000000..ae8a605
--- /dev/null
+++ b/erpnext/buying/desk_page/buying/buying.json
@@ -0,0 +1,92 @@
+{
+ "cards": [
+ {
+ "links": "[\n {\n \"description\": \"Supplier database.\",\n \"label\": \"Supplier\",\n \"name\": \"Supplier\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Supplier Group master.\",\n \"label\": \"Supplier Group\",\n \"name\": \"Supplier Group\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"All Contacts.\",\n \"label\": \"Contact\",\n \"name\": \"Contact\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"All Addresses.\",\n \"label\": \"Address\",\n \"name\": \"Address\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Supplier"
+ },
+ {
+ "icon": "fa fa-star",
+ "links": "[\n {\n \"dependencies\": [\n \"Item\",\n \"Supplier\"\n ],\n \"description\": \"Purchase Orders given to Suppliers.\",\n \"label\": \"Purchase Order\",\n \"name\": \"Purchase Order\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\",\n \"Supplier\"\n ],\n \"label\": \"Purchase Invoice\",\n \"name\": \"Purchase Invoice\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"description\": \"Request for purchase.\",\n \"label\": \"Material Request\",\n \"name\": \"Material Request\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\",\n \"Supplier\"\n ],\n \"description\": \"Request for quotation.\",\n \"label\": \"Request for Quotation\",\n \"name\": \"Request for Quotation\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\",\n \"Supplier\"\n ],\n \"description\": \"Quotations received from Suppliers.\",\n \"label\": \"Supplier Quotation\",\n \"name\": \"Supplier Quotation\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Purchasing"
+ },
+ {
+ "links": "[\n {\n \"description\": \"All Products or Services.\",\n \"label\": \"Item\",\n \"name\": \"Item\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Multiple Item prices.\",\n \"label\": \"Item Price\",\n \"name\": \"Item Price\",\n \"onboard\": 1,\n \"route\": \"#Report/Item Price\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Price List master.\",\n \"label\": \"Price List\",\n \"name\": \"Price List\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Bundle items at time of sale.\",\n \"label\": \"Product Bundle\",\n \"name\": \"Product Bundle\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Tree of Item Groups.\",\n \"icon\": \"fa fa-sitemap\",\n \"label\": \"Item Group\",\n \"link\": \"Tree/Item Group\",\n \"name\": \"Item Group\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Rules for applying different promotional schemes.\",\n \"label\": \"Promotional Scheme\",\n \"name\": \"Promotional Scheme\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Rules for applying pricing and discount.\",\n \"label\": \"Pricing Rule\",\n \"name\": \"Pricing Rule\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Items and Pricing"
+ },
+ {
+ "icon": "fa fa-cog",
+ "links": "[\n {\n \"description\": \"Default settings for buying transactions.\",\n \"label\": \"Buying Settings\",\n \"name\": \"Buying Settings\",\n \"settings\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Tax template for buying transactions.\",\n \"label\": \"Purchase Taxes and Charges Template\",\n \"name\": \"Purchase Taxes and Charges Template\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Template of terms or contract.\",\n \"label\": \"Terms and Conditions Template\",\n \"name\": \"Terms and Conditions\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Settings"
+ },
+ {
+ "links": "[\n {\n \"description\": \"All Supplier scorecards.\",\n \"label\": \"Supplier Scorecard\",\n \"name\": \"Supplier Scorecard\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Templates of supplier scorecard variables.\",\n \"label\": \"Supplier Scorecard Variable\",\n \"name\": \"Supplier Scorecard Variable\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Templates of supplier scorecard criteria.\",\n \"label\": \"Supplier Scorecard Criteria\",\n \"name\": \"Supplier Scorecard Criteria\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Templates of supplier standings.\",\n \"label\": \"Supplier Scorecard Standing\",\n \"name\": \"Supplier Scorecard Standing\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Supplier Scorecard"
+ },
+ {
+ "icon": "fa fa-table",
+ "links": "[\n {\n \"is_query_report\": true,\n \"label\": \"Purchase Analytics\",\n \"name\": \"Purchase Analytics\",\n \"onboard\": 1,\n \"reference_doctype\": \"Purchase Order\",\n \"type\": \"report\"\n },\n {\n \"is_query_report\": true,\n \"label\": \"Supplier-Wise Sales Analytics\",\n \"name\": \"Supplier-Wise Sales Analytics\",\n \"onboard\": 1,\n \"reference_doctype\": \"Stock Ledger Entry\",\n \"type\": \"report\"\n },\n {\n \"is_query_report\": true,\n \"label\": \"Purchase Order Trends\",\n \"name\": \"Purchase Order Trends\",\n \"onboard\": 1,\n \"reference_doctype\": \"Purchase Order\",\n \"type\": \"report\"\n },\n {\n \"is_query_report\": true,\n \"label\": \"Procurement Tracker\",\n \"name\": \"Procurement Tracker\",\n \"onboard\": 1,\n \"reference_doctype\": \"Purchase Order\",\n \"type\": \"report\"\n },\n {\n \"is_query_report\": true,\n \"label\": \"Requested Items To Be Ordered\",\n \"name\": \"Requested Items To Be Ordered\",\n \"onboard\": 1,\n \"reference_doctype\": \"Material Request\",\n \"type\": \"report\"\n }\n]",
+ "title": "Key Reports"
+ },
+ {
+ "icon": "fa fa-list",
+ "links": "[\n {\n \"is_query_report\": true,\n \"label\": \"Items To Be Requested\",\n \"name\": \"Items To Be Requested\",\n \"onboard\": 1,\n \"reference_doctype\": \"Item\",\n \"type\": \"report\"\n },\n {\n \"is_query_report\": true,\n \"label\": \"Item-wise Purchase History\",\n \"name\": \"Item-wise Purchase History\",\n \"onboard\": 1,\n \"reference_doctype\": \"Item\",\n \"type\": \"report\"\n },\n {\n \"is_query_report\": true,\n \"label\": \"Material Requests for which Supplier Quotations are not created\",\n \"name\": \"Material Requests for which Supplier Quotations are not created\",\n \"reference_doctype\": \"Material Request\",\n \"type\": \"report\"\n },\n {\n \"is_query_report\": true,\n \"label\": \"Supplier Addresses And Contacts\",\n \"name\": \"Address And Contacts\",\n \"reference_doctype\": \"Address\",\n \"route_options\": {\n \"party_type\": \"Supplier\"\n },\n \"type\": \"report\"\n }\n]",
+ "title": "Other Reports"
+ }
+ ],
+ "category": "Modules",
+ "charts": [
+ {
+ "chart_name": "Expenses",
+ "label": "Expenses",
+ "size": "Full"
+ }
+ ],
+ "creation": "2020-01-28 11:50:26.195467",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "icon": "",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Buying",
+ "modified": "2020-03-12 16:30:40.779078",
+ "modified_by": "Administrator",
+ "module": "Buying",
+ "name": "Buying",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+ {
+ "format": "{} Unpaid",
+ "is_query_report": 0,
+ "link_to": "Purchase Invoice",
+ "stats_filter": "{\n \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%'],\n \"status\": \"Unpaid\"\n}",
+ "type": "DocType"
+ },
+ {
+ "format": "{} to receive",
+ "is_query_report": 0,
+ "link_to": "Purchase Order",
+ "stats_filter": "{\n \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%'],\n \"status\": \"To Receive\"\n}",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Supplier Quotation",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Accounts Payable",
+ "type": "Report"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Purchase Register",
+ "type": "Report"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js
index a3264a4..3111a3a 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.js
@@ -499,7 +499,8 @@
reference_doctype: me.frm.doctype,
reference_name: me.frm.docname,
content: __('Reason for hold: ')+data.reason_for_hold,
- comment_email: frappe.session.user
+ comment_email: frappe.session.user,
+ comment_by: frappe.session.user_fullname
},
callback: function(r) {
if(!r.exc) {
diff --git a/erpnext/buying/doctype/supplier/supplier_dashboard.py b/erpnext/buying/doctype/supplier/supplier_dashboard.py
index b3b294d..d0d5b73 100644
--- a/erpnext/buying/doctype/supplier/supplier_dashboard.py
+++ b/erpnext/buying/doctype/supplier/supplier_dashboard.py
@@ -34,4 +34,4 @@
'items': ['Pricing Rule']
}
]
- }
+ }
\ 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 39042b8..16061c6 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
@@ -4,15 +4,17 @@
// attach required files
{% include 'erpnext/public/js/controllers/buying.js' %};
-frappe.ui.form.on('Suppier Quotation', {
- setup: function(frm) {
- frm.custom_make_buttons = {
- 'Purchase Order': 'Purchase Order'
- }
- }
-});
-
erpnext.buying.SupplierQuotationController = erpnext.buying.BuyingController.extend({
+ setup: function() {
+ this.frm.custom_make_buttons = {
+ 'Purchase Order': 'Purchase Order',
+ 'Quotation': 'Quotation',
+ 'Subscription': 'Subscription'
+ }
+
+ this._super();
+ },
+
refresh: function() {
var me = this;
this._super();
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index 8d3db8d..fcc9098 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -672,19 +672,32 @@
# If asset has to be auto created
# Check for asset naming series
if item_data.get('asset_naming_series'):
+ created_assets = []
+
for qty in range(cint(d.qty)):
- self.make_asset(d)
- is_plural = 's' if cint(d.qty) != 1 else ''
- messages.append(_('{0} Asset{2} Created for <b>{1}</b>').format(cint(d.qty), d.item_code, is_plural))
+ asset = self.make_asset(d)
+ created_assets.append(asset)
+
+ if len(created_assets) > 5:
+ # dont show asset form links if more than 5 assets are created
+ messages.append(_('{} Asset{} created for {}').format(len(created_assets), is_plural, frappe.bold(d.item_code)))
+ else:
+ assets_link = list(map(lambda d: frappe.utils.get_link_to_form('Asset', d), created_assets))
+ assets_link = frappe.bold(','.join(assets_link))
+
+ is_plural = 's' if len(created_assets) != 1 else ''
+ messages.append(
+ _('Asset{} {assets_link} created for {}').format(is_plural, frappe.bold(d.item_code), assets_link=assets_link)
+ )
else:
- frappe.throw(_("Row {1}: Asset Naming Series is mandatory for the auto creation for item {0}")
- .format(d.item_code, d.idx))
+ frappe.throw(_("Row {}: Asset Naming Series is mandatory for the auto creation for item {}")
+ .format(d.idx, frappe.bold(d.item_code)))
else:
- messages.append(_("Assets not created for <b>{0}</b>. You will have to create asset manually.")
- .format(d.item_code))
+ messages.append(_("Assets not created for {0}. You will have to create asset manually.")
+ .format(frappe.bold(d.item_code)))
for message in messages:
- frappe.msgprint(message, title="Success")
+ frappe.msgprint(message, title="Success", indicator="green")
def make_asset(self, row):
if not row.asset_location:
@@ -716,6 +729,8 @@
asset.set_missing_values()
asset.insert()
+ return asset.name
+
def update_fixed_asset(self, field, delete_asset = False):
for d in self.get("items"):
if d.is_fixed_asset:
@@ -745,7 +760,7 @@
asset.supplier = None
if asset.docstatus == 1 and delete_asset:
frappe.throw(_('Cannot cancel this document as it is linked with submitted asset {0}.\
- Please cancel the it to continue.').format(asset.name))
+ Please cancel the it to continue.').format(frappe.utils.get_link_to_form('Asset', asset.name)))
asset.flags.ignore_validate_update_after_submit = True
asset.flags.ignore_mandatory = True
@@ -1026,4 +1041,4 @@
available_batches.append({'batch': batch, 'qty': available_qty})
required_qty -= available_qty
- return available_batches
\ No newline at end of file
+ return available_batches
diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py
index d18f8e5..163ef72 100644
--- a/erpnext/controllers/queries.py
+++ b/erpnext/controllers/queries.py
@@ -3,6 +3,7 @@
from __future__ import unicode_literals
import frappe
+import erpnext
from frappe.desk.reportview import get_match_cond, get_filters_cond
from frappe.utils import nowdate, getdate
from collections import defaultdict
@@ -129,23 +130,26 @@
})
def tax_account_query(doctype, txt, searchfield, start, page_len, filters):
+ company_currency = erpnext.get_company_currency(filters.get('company'))
+
tax_accounts = frappe.db.sql("""select name, parent_account from tabAccount
where tabAccount.docstatus!=2
and account_type in (%s)
and is_group = 0
and company = %s
+ and account_currency = %s
and `%s` LIKE %s
order by idx desc, name
limit %s, %s""" %
- (", ".join(['%s']*len(filters.get("account_type"))), "%s", searchfield, "%s", "%s", "%s"),
- tuple(filters.get("account_type") + [filters.get("company"), "%%%s%%" % txt,
+ (", ".join(['%s']*len(filters.get("account_type"))), "%s", "%s", searchfield, "%s", "%s", "%s"),
+ tuple(filters.get("account_type") + [filters.get("company"), company_currency, "%%%s%%" % txt,
start, page_len]))
if not tax_accounts:
tax_accounts = frappe.db.sql("""select name, parent_account from tabAccount
where tabAccount.docstatus!=2 and is_group = 0
- and company = %s and `%s` LIKE %s limit %s, %s"""
- % ("%s", searchfield, "%s", "%s", "%s"),
- (filters.get("company"), "%%%s%%" % txt, start, page_len))
+ and company = %s and account_currency = %s and `%s` LIKE %s limit %s, %s""" #nosec
+ % ("%s", "%s", searchfield, "%s", "%s", "%s"),
+ (filters.get("company"), company_currency, "%%%s%%" % txt, start, page_len))
return tax_accounts
diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py
index b465a10..4d0520a 100644
--- a/erpnext/controllers/status_updater.py
+++ b/erpnext/controllers/status_updater.py
@@ -69,6 +69,17 @@
["Cancelled", "eval:self.docstatus==2"],
["Closed", "eval:self.status=='Closed'"],
],
+ "Purchase Invoice": [
+ ["Draft", None],
+ ["Submitted", "eval:self.docstatus==1"],
+ ["Paid", "eval:self.outstanding_amount==0 and self.docstatus==1"],
+ ["Return", "eval:self.is_return==1 and self.docstatus==1"],
+ ["Debit Note Issued",
+ "eval:self.outstanding_amount <= 0 and self.docstatus==1 and self.is_return==0 and get_value('Purchase Invoice', {'is_return': 1, 'return_against': self.name, 'docstatus': 1})"],
+ ["Unpaid", "eval:self.outstanding_amount > 0 and getdate(self.due_date) >= getdate(nowdate()) and self.docstatus==1"],
+ ["Overdue", "eval:self.outstanding_amount > 0 and getdate(self.due_date) < getdate(nowdate()) and self.docstatus==1"],
+ ["Cancelled", "eval:self.docstatus==2"],
+ ],
"Material Request": [
["Draft", None],
["Stopped", "eval:self.status == 'Stopped'"],
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index d452fe4..f6908c0 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -238,7 +238,7 @@
for d in self.items:
if not d.batch_no: continue
- serial_nos = [d.name for d 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})]
if serial_nos:
frappe.db.set_value("Serial No", { 'name': ['in', serial_nos] }, "batch_no", None)
diff --git a/erpnext/crm/desk_page/crm/crm.json b/erpnext/crm/desk_page/crm/crm.json
new file mode 100644
index 0000000..9ebbe27
--- /dev/null
+++ b/erpnext/crm/desk_page/crm/crm.json
@@ -0,0 +1,69 @@
+{
+ "cards": [
+ {
+ "icon": "fa fa-star",
+ "links": "[\n {\n \"description\": \"Database of potential customers.\",\n \"label\": \"Lead\",\n \"name\": \"Lead\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Potential opportunities for selling.\",\n \"label\": \"Opportunity\",\n \"name\": \"Opportunity\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Customer database.\",\n \"label\": \"Customer\",\n \"name\": \"Customer\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"All Contacts.\",\n \"label\": \"Contact\",\n \"name\": \"Contact\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Record of all communications of type email, phone, chat, visit, etc.\",\n \"label\": \"Communication\",\n \"name\": \"Communication\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Track Leads by Lead Source.\",\n \"label\": \"Lead Source\",\n \"name\": \"Lead Source\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Helps you keep tracks of Contracts based on Supplier, Customer and Employee\",\n \"label\": \"Contract\",\n \"name\": \"Contract\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Helps you manage appointments with your leads\",\n \"label\": \"Appointment\",\n \"name\": \"Appointment\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Newsletter\",\n \"name\": \"Newsletter\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Sales Pipeline"
+ },
+ {
+ "icon": "fa fa-list",
+ "links": "[\n {\n \"dependencies\": [\n \"Lead\"\n ],\n \"doctype\": \"Lead\",\n \"is_query_report\": true,\n \"label\": \"Lead Details\",\n \"name\": \"Lead Details\",\n \"onboard\": 1,\n \"type\": \"report\"\n },\n {\n \"icon\": \"fa fa-bar-chart\",\n \"label\": \"Sales Funnel\",\n \"name\": \"sales-funnel\",\n \"onboard\": 1,\n \"type\": \"page\"\n },\n {\n \"dependencies\": [\n \"Lead\"\n ],\n \"doctype\": \"Lead\",\n \"is_query_report\": true,\n \"label\": \"Prospects Engaged But Not Converted\",\n \"name\": \"Prospects Engaged But Not Converted\",\n \"onboard\": 1,\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Opportunity\"\n ],\n \"doctype\": \"Opportunity\",\n \"is_query_report\": true,\n \"label\": \"Minutes to First Response for Opportunity\",\n \"name\": \"Minutes to First Response for Opportunity\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Order\"\n ],\n \"doctype\": \"Sales Order\",\n \"is_query_report\": true,\n \"label\": \"Inactive Customers\",\n \"name\": \"Inactive Customers\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Lead\"\n ],\n \"doctype\": \"Lead\",\n \"is_query_report\": true,\n \"label\": \"Campaign Efficiency\",\n \"name\": \"Campaign Efficiency\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Lead\"\n ],\n \"doctype\": \"Lead\",\n \"is_query_report\": true,\n \"label\": \"Lead Owner Efficiency\",\n \"name\": \"Lead Owner Efficiency\",\n \"type\": \"report\"\n }\n]",
+ "title": "Reports"
+ },
+ {
+ "icon": "fa fa-cog",
+ "links": "[\n {\n \"description\": \"Manage Customer Group Tree.\",\n \"icon\": \"fa fa-sitemap\",\n \"label\": \"Customer Group\",\n \"link\": \"Tree/Customer Group\",\n \"name\": \"Customer Group\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Manage Territory Tree.\",\n \"icon\": \"fa fa-sitemap\",\n \"label\": \"Territory\",\n \"link\": \"Tree/Territory\",\n \"name\": \"Territory\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Manage Sales Person Tree.\",\n \"icon\": \"fa fa-sitemap\",\n \"label\": \"Sales Person\",\n \"link\": \"Tree/Sales Person\",\n \"name\": \"Sales Person\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Sales campaigns.\",\n \"label\": \"Campaign\",\n \"name\": \"Campaign\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Sends Mails to lead or contact based on a Campaign schedule\",\n \"label\": \"Email Campaign\",\n \"name\": \"Email Campaign\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Send mass SMS to your contacts\",\n \"label\": \"SMS Center\",\n \"name\": \"SMS Center\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Logs for maintaining sms delivery status\",\n \"label\": \"SMS Log\",\n \"name\": \"SMS Log\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Setup SMS gateway settings\",\n \"label\": \"SMS Settings\",\n \"name\": \"SMS Settings\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Email Group\",\n \"name\": \"Email Group\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Settings"
+ },
+ {
+ "icon": "fa fa-star",
+ "links": "[\n {\n \"description\": \"Plan for maintenance visits.\",\n \"label\": \"Maintenance Schedule\",\n \"name\": \"Maintenance Schedule\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Visit report for maintenance call.\",\n \"label\": \"Maintenance Visit\",\n \"name\": \"Maintenance Visit\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Warranty Claim against Serial No.\",\n \"label\": \"Warranty Claim\",\n \"name\": \"Warranty Claim\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Maintenance"
+ }
+ ],
+ "category": "Modules",
+ "charts": [],
+ "creation": "2020-01-23 14:48:30.183272",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "icon": "",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "CRM",
+ "modified": "2020-03-12 16:30:41.142037",
+ "modified_by": "Administrator",
+ "module": "CRM",
+ "name": "CRM",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+ {
+ "format": "Open",
+ "is_query_report": 0,
+ "link_to": "Lead",
+ "stats_filter": "{\"status\":\"Open\"}",
+ "type": "DocType"
+ },
+ {
+ "format": "{} Assigned",
+ "is_query_report": 0,
+ "link_to": "Opportunity",
+ "stats_filter": "{\"_assign\": [\"like\", '%' + frappe.session.user + '%']}",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Customer",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Sales Analytics",
+ "type": "Report"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/crm/doctype/lead/lead.json b/erpnext/crm/doctype/lead/lead.json
index bc007b1..5299368 100644
--- a/erpnext/crm/doctype/lead/lead.json
+++ b/erpnext/crm/doctype/lead/lead.json
@@ -171,7 +171,6 @@
"options": "Customer"
},
{
- "depends_on": "eval: doc.source==\"Campaign\"",
"fieldname": "campaign_name",
"fieldtype": "Link",
"label": "Campaign Name",
@@ -512,4 +511,4 @@
"sort_field": "modified",
"sort_order": "DESC",
"title_field": "title"
-}
\ No newline at end of file
+}
diff --git a/erpnext/crm/doctype/lead/lead.py b/erpnext/crm/doctype/lead/lead.py
index 73ef79b..eb9f860 100644
--- a/erpnext/crm/doctype/lead/lead.py
+++ b/erpnext/crm/doctype/lead/lead.py
@@ -135,10 +135,17 @@
# do not create an address if no fields are available,
# skipping country since the system auto-sets it from system defaults
- if not any([self.get(field) for field in address_fields if field != "country"]):
+ address = frappe.new_doc("Address")
+
+ mandatory_fields = [ df.fieldname for df in address.meta.fields if df.reqd ]
+
+ if not all([self.get(field) for field in mandatory_fields]):
+ frappe.msgprint(_('Missing mandatory fields in address. \
+ {0} to create address' ).format("<a href='desk#Form/Address/New Address 1' \
+ > Click here </a>"),
+ alert=True, indicator='yellow')
return
- address = frappe.new_doc("Address")
address.update({addr_field: self.get(addr_field) for addr_field in address_fields})
address.update({info_field: self.get(info_field) for info_field in info_fields})
address.insert()
diff --git a/erpnext/crm/doctype/opportunity/opportunity.json b/erpnext/crm/doctype/opportunity/opportunity.json
index 0e2068a..08be34e 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.json
+++ b/erpnext/crm/doctype/opportunity/opportunity.json
@@ -1,4 +1,5 @@
{
+ "actions": [],
"allow_import": 1,
"allow_rename": 1,
"autoname": "naming_series:",
@@ -214,7 +215,8 @@
{
"fieldname": "opportunity_amount",
"fieldtype": "Currency",
- "label": "Opportunity Amount"
+ "label": "Opportunity Amount",
+ "options": "currency"
},
{
"default": "0",
@@ -418,7 +420,8 @@
],
"icon": "fa fa-info-sign",
"idx": 195,
- "modified": "2019-09-30 12:58:37.385400",
+ "links": [],
+ "modified": "2020-03-20 12:28:45.228994",
"modified_by": "Administrator",
"module": "CRM",
"name": "Opportunity",
diff --git a/erpnext/demo/user/fixed_asset.py b/erpnext/demo/user/fixed_asset.py
index e6d1687..dc094e1 100644
--- a/erpnext/demo/user/fixed_asset.py
+++ b/erpnext/demo/user/fixed_asset.py
@@ -6,46 +6,28 @@
import frappe
from frappe.utils.make_random import get_random
-from erpnext.assets.doctype.asset.asset import make_purchase_invoice, make_sales_invoice
+from erpnext.assets.doctype.asset.asset import make_sales_invoice
from erpnext.assets.doctype.asset.depreciation import post_depreciation_entries, scrap_asset
+
def work():
frappe.set_user(frappe.db.get_global('demo_accounts_user'))
- asset_list = make_asset_purchase_entry()
-
- if not asset_list:
- # fixed_asset.work() already run
- return
-
# Enable booking asset depreciation entry automatically
frappe.db.set_value("Accounts Settings", None, "book_asset_depreciation_entry_automatically", 1)
-
+
# post depreciation entries as on today
post_depreciation_entries()
-
+
# scrap a random asset
frappe.db.set_value("Company", "Wind Power LLC", "disposal_account", "Gain/Loss on Asset Disposal - WPL")
-
+
asset = get_random_asset()
scrap_asset(asset.name)
-
- # Sell a random asset
- sell_an_asset()
-def make_asset_purchase_entry():
- asset_list = frappe.get_all("Asset", filters={"purchase_invoice": ["in", ("", None)]},
- fields=["name", "item_code", "gross_purchase_amount", "company", "purchase_date"])
-
- # make purchase invoice
- for asset in asset_list:
- pi = make_purchase_invoice(asset.name, asset.item_code, asset.gross_purchase_amount,
- asset.company, asset.purchase_date)
- pi.supplier = get_random("Supplier")
- pi.save()
- pi.submit()
-
- return asset_list
+ # Sell a random asset
+ sell_an_asset()
+
def sell_an_asset():
asset = get_random_asset()
@@ -55,8 +37,9 @@
if asset.value_after_depreciation else asset.gross_purchase_amount * 0.9
si.save()
si.submit()
-
+
+
def get_random_asset():
return frappe.db.sql(""" select name, item_code, value_after_depreciation, gross_purchase_amount
- from `tabAsset`
+ from `tabAsset`
where docstatus=1 and status not in ("Scrapped", "Sold") order by rand() limit 1""", as_dict=1)[0]
diff --git a/erpnext/education/desk_page/education/education.json b/erpnext/education/desk_page/education/education.json
new file mode 100644
index 0000000..bbd8ead
--- /dev/null
+++ b/erpnext/education/desk_page/education/education.json
@@ -0,0 +1,76 @@
+{
+ "cards": [
+ {
+ "links": "[\n {\n \"label\": \"Student Attendance Tool\",\n \"name\": \"Student Attendance Tool\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Assessment Result Tool\",\n \"name\": \"Assessment Result Tool\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Student Group Creation Tool\",\n \"name\": \"Student Group Creation Tool\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Program Enrollment Tool\",\n \"name\": \"Program Enrollment Tool\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Course Scheduling Tool\",\n \"name\": \"Course Scheduling Tool\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Tools"
+ },
+ {
+ "links": "[\n {\n \"dependencies\": [\n \"Program Enrollment\"\n ],\n \"doctype\": \"Program Enrollment\",\n \"is_query_report\": true,\n \"label\": \"Student and Guardian Contact Details\",\n \"name\": \"Student and Guardian Contact Details\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Student Attendance\"\n ],\n \"doctype\": \"Student Attendance\",\n \"is_query_report\": true,\n \"label\": \"Student Monthly Attendance Sheet\",\n \"name\": \"Student Monthly Attendance Sheet\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Fees\"\n ],\n \"doctype\": \"Fees\",\n \"is_query_report\": true,\n \"label\": \"Student Fee Collection\",\n \"name\": \"Student Fee Collection\",\n \"type\": \"report\"\n }\n]",
+ "title": "Other Reports"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Student Category\",\n \"name\": \"Student Category\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Student Batch Name\",\n \"name\": \"Student Batch Name\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Grading Scale\",\n \"name\": \"Grading Scale\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Academic Term\",\n \"name\": \"Academic Term\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Academic Year\",\n \"name\": \"Academic Year\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Education Settings\",\n \"name\": \"Education Settings\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Settings"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Article\",\n \"name\": \"Article\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Video\",\n \"name\": \"Video\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Quiz\",\n \"name\": \"Quiz\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Content Masters"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Student Attendance\",\n \"name\": \"Student Attendance\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Student Leave Application\",\n \"name\": \"Student Leave Application\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Student Attendance\"\n ],\n \"doctype\": \"Student Attendance\",\n \"is_query_report\": true,\n \"label\": \"Absent Student Report\",\n \"name\": \"Absent Student Report\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Student Attendance\"\n ],\n \"doctype\": \"Student Attendance\",\n \"is_query_report\": true,\n \"label\": \"Student Batch-Wise Attendance\",\n \"name\": \"Student Batch-Wise Attendance\",\n \"type\": \"report\"\n }\n]",
+ "title": "Attendance"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Student Applicant\",\n \"name\": \"Student Applicant\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Student Admission\",\n \"name\": \"Student Admission\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Program Enrollment\",\n \"name\": \"Program Enrollment\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Admission"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Assessment Plan\",\n \"name\": \"Assessment Plan\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Assessment Group\",\n \"link\": \"Tree/Assessment Group\",\n \"name\": \"Assessment Group\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Assessment Result\",\n \"name\": \"Assessment Result\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Assessment Criteria\",\n \"name\": \"Assessment Criteria\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Assessment"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Student\",\n \"name\": \"Student\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Guardian\",\n \"name\": \"Guardian\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Student Log\",\n \"name\": \"Student Log\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Student Group\",\n \"name\": \"Student Group\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Student"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Program\",\n \"name\": \"Program\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Course\",\n \"name\": \"Course\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Topic\",\n \"name\": \"Topic\",\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]",
+ "title": "Masters"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Course Enrollment\",\n \"name\": \"Course Enrollment\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Course Activity\",\n \"name\": \"Course Activity\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Quiz Activity\",\n \"name\": \"Quiz Activity\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "LMS Activity"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Course Schedule\",\n \"name\": \"Course Schedule\",\n \"route\": \"#List/Course Schedule/Calendar\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Course Scheduling Tool\",\n \"name\": \"Course Scheduling Tool\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Schedule"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Fees\",\n \"name\": \"Fees\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Fee Schedule\",\n \"name\": \"Fee Schedule\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Fee Structure\",\n \"name\": \"Fee Structure\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Fee Category\",\n \"name\": \"Fee Category\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Fees"
+ },
+ {
+ "links": "[\n {\n \"dependencies\": [\n \"Assessment Result\"\n ],\n \"doctype\": \"Assessment Result\",\n \"is_query_report\": true,\n \"label\": \"Course wise Assessment Report\",\n \"name\": \"Course wise Assessment Report\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Assessment Result\"\n ],\n \"doctype\": \"Assessment Result\",\n \"is_query_report\": true,\n \"label\": \"Final Assessment Grades\",\n \"name\": \"Final Assessment Grades\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Assessment Plan\"\n ],\n \"doctype\": \"Assessment Plan\",\n \"is_query_report\": true,\n \"label\": \"Assessment Plan Status\",\n \"name\": \"Assessment Plan Status\",\n \"type\": \"report\"\n },\n {\n \"label\": \"Student Report Generation Tool\",\n \"name\": \"Student Report Generation Tool\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Assessment Reports"
+ }
+ ],
+ "category": "Domains",
+ "charts": [],
+ "creation": "2020-03-02 17:22:57.066401",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Education",
+ "modified": "2020-03-12 16:30:37.217514",
+ "modified_by": "Administrator",
+ "module": "Education",
+ "name": "Education",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "restrict_to_domain": "Education",
+ "shortcuts": []
+}
\ No newline at end of file
diff --git a/erpnext/education/doctype/assessment_group/assessment_group.json b/erpnext/education/doctype/assessment_group/assessment_group.json
index 56917d2..a8ffaf4 100644
--- a/erpnext/education/doctype/assessment_group/assessment_group.json
+++ b/erpnext/education/doctype/assessment_group/assessment_group.json
@@ -1,274 +1,90 @@
{
- "allow_copy": 0,
- "allow_guest_to_view": 0,
- "allow_import": 1,
- "allow_rename": 1,
- "autoname": "field:assessment_group_name",
- "beta": 0,
- "creation": "2016-08-04 04:42:48.319388",
- "custom": 0,
- "docstatus": 0,
- "doctype": "DocType",
- "document_type": "",
- "editable_grid": 1,
+ "actions": [],
+ "allow_import": 1,
+ "allow_rename": 1,
+ "autoname": "field:assessment_group_name",
+ "creation": "2016-08-04 04:42:48.319388",
+ "doctype": "DocType",
+ "editable_grid": 1,
+ "field_order": [
+ "assessment_group_name",
+ "is_group",
+ "section_break_2",
+ "parent_assessment_group",
+ "lft",
+ "rgt",
+ "old_parent"
+ ],
"fields": [
{
- "allow_bulk_edit": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "fieldname": "assessment_group_name",
- "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": "Assessment Group Name",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 1,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
- },
+ "fieldname": "assessment_group_name",
+ "fieldtype": "Data",
+ "in_list_view": 1,
+ "label": "Assessment Group Name",
+ "reqd": 1,
+ "unique": 1
+ },
{
- "allow_bulk_edit": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "fieldname": "is_group",
- "fieldtype": "Check",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 0,
- "in_standard_filter": 0,
- "label": "Is Group",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
- },
+ "default": "0",
+ "fieldname": "is_group",
+ "fieldtype": "Check",
+ "label": "Is Group"
+ },
{
- "allow_bulk_edit": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "fieldname": "section_break_2",
- "fieldtype": "Section Break",
- "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,
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
- },
+ "fieldname": "section_break_2",
+ "fieldtype": "Section Break",
+ "hidden": 1
+ },
{
- "allow_bulk_edit": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "fieldname": "parent_assessment_group",
- "fieldtype": "Link",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 1,
- "in_standard_filter": 0,
- "label": "Parent Assessment Group",
- "length": 0,
- "no_copy": 0,
- "options": "Assessment Group",
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 1,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
- },
+ "fieldname": "parent_assessment_group",
+ "fieldtype": "Link",
+ "in_list_view": 1,
+ "label": "Parent Assessment Group",
+ "options": "Assessment Group",
+ "reqd": 1
+ },
{
- "allow_bulk_edit": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "fieldname": "lft",
- "fieldtype": "Int",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 0,
- "in_standard_filter": 0,
- "label": "lft",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
- },
+ "fieldname": "lft",
+ "fieldtype": "Int",
+ "label": "lft"
+ },
{
- "allow_bulk_edit": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "fieldname": "rgt",
- "fieldtype": "Int",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 0,
- "in_standard_filter": 0,
- "label": "rgt",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
- },
+ "fieldname": "rgt",
+ "fieldtype": "Int",
+ "label": "rgt"
+ },
{
- "allow_bulk_edit": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "fieldname": "old_parent",
- "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": "old_parent",
- "length": 0,
- "no_copy": 0,
- "options": "Assessment Group",
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
+ "fieldname": "old_parent",
+ "fieldtype": "Link",
+ "ignore_user_permissions": 1,
+ "label": "old_parent",
+ "options": "Assessment Group"
}
- ],
- "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": "2017-11-10 19:09:25.366400",
- "modified_by": "Administrator",
- "module": "Education",
- "name": "Assessment Group",
- "name_case": "",
- "owner": "Administrator",
+ ],
+ "is_tree": 1,
+ "links": [],
+ "modified": "2020-03-18 18:01:14.710416",
+ "modified_by": "Administrator",
+ "module": "Education",
+ "name": "Assessment Group",
+ "nsm_parent_field": "parent_assessment_group",
+ "owner": "Administrator",
"permissions": [
{
- "amend": 0,
- "apply_user_permissions": 0,
- "cancel": 0,
- "create": 1,
- "delete": 1,
- "email": 1,
- "export": 1,
- "if_owner": 0,
- "import": 0,
- "permlevel": 0,
- "print": 1,
- "read": 1,
- "report": 1,
- "role": "Academics User",
- "set_user_permissions": 0,
- "share": 1,
- "submit": 0,
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Academics User",
+ "share": 1,
"write": 1
}
- ],
- "quick_entry": 1,
- "read_only": 0,
- "read_only_onload": 0,
- "restrict_to_domain": "Education",
- "show_name_in_global_search": 0,
- "sort_field": "modified",
- "sort_order": "DESC",
- "track_changes": 0,
- "track_seen": 0
+ ],
+ "quick_entry": 1,
+ "restrict_to_domain": "Education",
+ "sort_field": "modified",
+ "sort_order": "DESC"
}
\ No newline at end of file
diff --git a/erpnext/education/doctype/course/course.json b/erpnext/education/doctype/course/course.json
index 68426c3..da10db1 100644
--- a/erpnext/education/doctype/course/course.json
+++ b/erpnext/education/doctype/course/course.json
@@ -74,7 +74,7 @@
}
],
"image_field": "hero_image",
- "modified": "2019-06-12 12:34:23.748157",
+ "modified": "2020-03-29 12:50:27.677589",
"modified_by": "Administrator",
"module": "Education",
"name": "Course",
@@ -103,6 +103,30 @@
"role": "Instructor",
"share": 1,
"write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Administrator",
+ "share": 1,
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Education Manager",
+ "share": 1,
+ "write": 1
}
],
"restrict_to_domain": "Education",
diff --git a/erpnext/healthcare/desk_page/healthcare/healthcare.json b/erpnext/healthcare/desk_page/healthcare/healthcare.json
new file mode 100644
index 0000000..258a72c
--- /dev/null
+++ b/erpnext/healthcare/desk_page/healthcare/healthcare.json
@@ -0,0 +1,44 @@
+{
+ "cards": [
+ {
+ "icon": "icon-cog",
+ "links": "[\n {\n \"label\": \"Healthcare Settings\",\n \"name\": \"Healthcare Settings\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Medical Department\",\n \"name\": \"Medical Department\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Appointment Type\",\n \"name\": \"Appointment Type\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Prescription Dosage\",\n \"name\": \"Prescription Dosage\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Prescription Duration\",\n \"name\": \"Prescription Duration\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Complaint\",\n \"name\": \"Complaint\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Diagnosis\",\n \"name\": \"Diagnosis\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Lab Test Sample\",\n \"name\": \"Lab Test Sample\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Lab Test UOM\",\n \"name\": \"Lab Test UOM\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Antibiotic\",\n \"name\": \"Antibiotic\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Sensitivity\",\n \"name\": \"Sensitivity\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Lab Test Template\",\n \"name\": \"Lab Test Template\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Clinical Procedure Template\",\n \"name\": \"Clinical Procedure Template\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Healthcare Service Unit Type\",\n \"name\": \"Healthcare Service Unit Type\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Settings"
+ },
+ {
+ "icon": "icon-list",
+ "links": "[\n {\n \"label\": \"Lab Test\",\n \"name\": \"Lab Test\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Sample Collection\",\n \"name\": \"Sample Collection\",\n \"type\": \"doctype\"\n },\n {\n \"is_query_report\": true,\n \"label\": \"Lab Test Report\",\n \"name\": \"Lab Test Report\",\n \"type\": \"report\"\n }\n]",
+ "title": "Laboratory"
+ },
+ {
+ "icon": "icon-list",
+ "links": "[\n {\n \"label\": \"Patient\",\n \"name\": \"Patient\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Healthcare Practitioner\",\n \"name\": \"Healthcare Practitioner\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Practitioner Schedule\",\n \"name\": \"Practitioner Schedule\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Medical Code Standard\",\n \"name\": \"Medical Code Standard\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Medical Code\",\n \"name\": \"Medical Code\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Healthcare Service Unit\",\n \"name\": \"Healthcare Service Unit\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Masters"
+ },
+ {
+ "icon": "icon-star",
+ "links": "[\n {\n \"label\": \"Patient Appointment\",\n \"name\": \"Patient Appointment\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Patient Encounter\",\n \"name\": \"Patient Encounter\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Record Patient Vitals\",\n \"label\": \"Vital Signs\",\n \"name\": \"Vital Signs\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Patient History\",\n \"name\": \"patient_history\",\n \"type\": \"page\"\n },\n {\n \"label\": \"Appointment Analytics\",\n \"name\": \"appointment-analytic\",\n \"type\": \"page\"\n },\n {\n \"label\": \"Clinical Procedure\",\n \"name\": \"Clinical Procedure\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Inpatient Record\",\n \"name\": \"Inpatient Record\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Consultation"
+ }
+ ],
+ "category": "Domains",
+ "charts": [],
+ "creation": "2020-03-02 17:23:17.919682",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Healthcare",
+ "modified": "2020-03-12 16:30:36.952979",
+ "modified_by": "Administrator",
+ "module": "Healthcare",
+ "name": "Healthcare",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "restrict_to_domain": "Healthcare",
+ "shortcuts": []
+}
\ No newline at end of file
diff --git a/erpnext/healthcare/doctype/healthcare_service_unit/healthcare_service_unit.json b/erpnext/healthcare/doctype/healthcare_service_unit/healthcare_service_unit.json
index 6e92455..8601f69 100644
--- a/erpnext/healthcare/doctype/healthcare_service_unit/healthcare_service_unit.json
+++ b/erpnext/healthcare/doctype/healthcare_service_unit/healthcare_service_unit.json
@@ -1,542 +1,205 @@
{
- "allow_copy": 0,
- "allow_events_in_timeline": 0,
- "allow_guest_to_view": 0,
+ "actions": [],
"allow_import": 1,
"allow_rename": 1,
"autoname": "field:healthcare_service_unit_name",
"beta": 1,
"creation": "2016-09-21 13:48:14.731437",
- "custom": 0,
"description": "Healthcare Service Unit",
- "docstatus": 0,
"doctype": "DocType",
"document_type": "Setup",
"editable_grid": 1,
+ "field_order": [
+ "healthcare_service_unit_name",
+ "parent_healthcare_service_unit",
+ "is_group",
+ "service_unit_type",
+ "allow_appointments",
+ "overlap_appointments",
+ "inpatient_occupancy",
+ "occupancy_status",
+ "warehouse",
+ "company",
+ "lft",
+ "rgt",
+ "old_parent"
+ ],
"fields": [
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
"fieldname": "healthcare_service_unit_name",
"fieldtype": "Data",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
"in_global_search": 1,
"in_list_view": 1,
- "in_standard_filter": 0,
"label": "Service Unit",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
"reqd": 1,
- "search_index": 0,
- "set_only_once": 0,
- "translatable": 0,
"unique": 1
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
"bold": 1,
- "collapsible": 0,
- "columns": 0,
"fieldname": "parent_healthcare_service_unit",
"fieldtype": "Link",
- "hidden": 0,
"ignore_user_permissions": 1,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
"in_list_view": 1,
- "in_standard_filter": 0,
"label": "Parent Service Unit",
- "length": 0,
- "no_copy": 0,
- "options": "Healthcare Service Unit",
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "translatable": 0,
- "unique": 0
+ "options": "Healthcare Service Unit"
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
"bold": 1,
- "collapsible": 0,
- "columns": 0,
"default": "0",
"depends_on": "eval:doc.inpatient_occupancy != 1 && doc.allow_appointments != 1",
"fieldname": "is_group",
"fieldtype": "Check",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
"in_list_view": 1,
- "in_standard_filter": 0,
- "label": "Is Group",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "translatable": 0,
- "unique": 0
+ "label": "Is Group"
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
"bold": 1,
- "collapsible": 0,
- "columns": 0,
"depends_on": "eval:doc.is_group != 1",
"fieldname": "service_unit_type",
"fieldtype": "Link",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 0,
- "in_standard_filter": 0,
"label": "Service Unit Type",
- "length": 0,
- "no_copy": 0,
- "options": "Healthcare Service Unit Type",
- "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": "Healthcare Service Unit Type"
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
"bold": 1,
- "collapsible": 0,
- "columns": 0,
"default": "0",
"depends_on": "eval:doc.is_group != 1 && doc.inpatient_occupancy != 1",
"fetch_from": "service_unit_type.allow_appointments",
"fieldname": "allow_appointments",
"fieldtype": "Check",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 0,
- "in_standard_filter": 0,
"label": "Allow Appointments",
- "length": 0,
"no_copy": 1,
- "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
+ "read_only": 1
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
"default": "0",
"depends_on": "eval:doc.is_group != 1 && doc.allow_appointments == 1 && doc.inpatient_occupany != 1",
"fetch_from": "service_unit_type.overlap_appointments",
"fieldname": "overlap_appointments",
"fieldtype": "Check",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 0,
- "in_standard_filter": 0,
"label": "Allow Overlap",
- "length": 0,
"no_copy": 1,
- "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
+ "read_only": 1
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
"bold": 1,
- "collapsible": 0,
- "columns": 0,
"default": "0",
"depends_on": "eval:doc.allow_appointments != 1 && doc.is_group != 1",
"fetch_from": "service_unit_type.inpatient_occupancy",
"fieldname": "inpatient_occupancy",
"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": "Inpatient Occupancy",
- "length": 0,
"no_copy": 1,
- "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": 1,
- "set_only_once": 0,
- "translatable": 0,
- "unique": 0
+ "search_index": 1
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "default": "",
"depends_on": "eval:doc.inpatient_occupancy == 1",
"fieldname": "occupancy_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": 0,
"label": "Occupancy Status",
- "length": 0,
"no_copy": 1,
"options": "Vacant\nOccupied",
- "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
+ "read_only": 1
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
"bold": 1,
- "collapsible": 0,
- "columns": 0,
"depends_on": "eval:doc.is_group != 1",
"fieldname": "warehouse",
"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": "Warehouse",
- "length": 0,
"no_copy": 1,
- "options": "Warehouse",
- "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": "Warehouse"
},
{
- "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": 1,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 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,
"remember_last_selected_value": 1,
- "report_hide": 0,
"reqd": 1,
- "search_index": 1,
- "set_only_once": 0,
- "translatable": 0,
- "unique": 0
+ "search_index": 1
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
"fieldname": "lft",
"fieldtype": "Int",
"hidden": 1,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 0,
- "in_standard_filter": 0,
"label": "lft",
- "length": 0,
"no_copy": 1,
- "permlevel": 0,
- "precision": "",
"print_hide": 1,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 1,
- "set_only_once": 0,
- "translatable": 0,
- "unique": 0
+ "search_index": 1
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
"fieldname": "rgt",
"fieldtype": "Int",
"hidden": 1,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 0,
- "in_standard_filter": 0,
"label": "rgt",
- "length": 0,
"no_copy": 1,
- "permlevel": 0,
- "precision": "",
"print_hide": 1,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 1,
- "set_only_once": 0,
- "translatable": 0,
- "unique": 0
+ "search_index": 1
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
"fieldname": "old_parent",
"fieldtype": "Link",
"hidden": 1,
"ignore_user_permissions": 1,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 0,
- "in_standard_filter": 0,
"label": "Old Parent",
- "length": 0,
"no_copy": 1,
"options": "Healthcare Service Unit",
- "permlevel": 0,
- "precision": "",
"print_hide": 1,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 1,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "translatable": 0,
- "unique": 0
+ "report_hide": 1
}
],
- "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-10-04 21:09:52.261882",
+ "is_tree": 1,
+ "links": [],
+ "modified": "2020-03-18 18:02:23.713439",
"modified_by": "Administrator",
"module": "Healthcare",
"name": "Healthcare Service Unit",
- "name_case": "",
+ "nsm_parent_field": "parent_healthcare_service_unit",
"owner": "Administrator",
"permissions": [
{
- "amend": 0,
- "cancel": 0,
- "create": 0,
- "delete": 0,
"email": 1,
"export": 1,
- "if_owner": 0,
- "import": 0,
- "permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "Nursing User",
- "set_user_permissions": 0,
- "share": 1,
- "submit": 0,
- "write": 0
+ "share": 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": "Healthcare Administrator",
- "set_user_permissions": 0,
"share": 1,
- "submit": 0,
"write": 1
},
{
- "amend": 0,
- "cancel": 0,
"create": 1,
- "delete": 0,
"email": 1,
"export": 1,
- "if_owner": 0,
- "import": 0,
- "permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "Physician",
- "set_user_permissions": 0,
"share": 1,
- "submit": 0,
"write": 1
}
],
"quick_entry": 1,
- "read_only": 0,
- "read_only_onload": 0,
"restrict_to_domain": "Healthcare",
"search_fields": "healthcare_service_unit_name",
- "show_name_in_global_search": 0,
"sort_field": "modified",
"sort_order": "DESC",
"title_field": "healthcare_service_unit_name",
- "track_changes": 1,
- "track_seen": 0,
- "track_views": 0
+ "track_changes": 1
}
\ No newline at end of file
diff --git a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py
index d562245..5f48c9f 100755
--- a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py
+++ b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py
@@ -386,5 +386,5 @@
return frappe.db.sql("""select pp.name, pp.procedure, pp.parent, ct.practitioner,
ct.encounter_date, pp.practitioner, pp.date, pp.department
from `tabPatient Encounter` ct, `tabProcedure Prescription` pp
- where ct.patient='{0}' and pp.parent=ct.name and pp.appointment_booked=0
- order by ct.creation desc""".format(patient))
+ where ct.patient=%(patient)s and pp.parent=ct.name and pp.appointment_booked=0
+ order by ct.creation desc""", {"patient": patient})
diff --git a/erpnext/hr/desk_page/hr/hr.json b/erpnext/hr/desk_page/hr/hr.json
new file mode 100644
index 0000000..ec38ef0
--- /dev/null
+++ b/erpnext/hr/desk_page/hr/hr.json
@@ -0,0 +1,123 @@
+{
+ "cards": [
+ {
+ "links": "[\n {\n \"label\": \"Employee\",\n \"name\": \"Employee\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Employment Type\",\n \"name\": \"Employment Type\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Branch\",\n \"name\": \"Branch\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Department\",\n \"name\": \"Department\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Designation\",\n \"name\": \"Designation\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Employee Grade\",\n \"name\": \"Employee Grade\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Employee Group\",\n \"name\": \"Employee Group\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Employee Health Insurance\",\n \"name\": \"Employee Health Insurance\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Employee"
+ },
+ {
+ "links": "[\n {\n \"dependencies\": [\n \"Job Applicant\"\n ],\n \"label\": \"Employee Onboarding\",\n \"name\": \"Employee Onboarding\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Employee Skill Map\",\n \"name\": \"Employee Skill Map\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Employee Promotion\",\n \"name\": \"Employee Promotion\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Employee Transfer\",\n \"name\": \"Employee Transfer\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Employee Separation\",\n \"name\": \"Employee Separation\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Employee Onboarding Template\",\n \"name\": \"Employee Onboarding Template\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Employee Separation Template\",\n \"name\": \"Employee Separation Template\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Employee Lifecycle"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Shift Type\",\n \"name\": \"Shift Type\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Shift Request\",\n \"name\": \"Shift Request\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Shift Assignment\",\n \"name\": \"Shift Assignment\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Shift Management"
+ },
+ {
+ "links": "[\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Leave Application\",\n \"name\": \"Leave Application\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Leave Allocation\",\n \"name\": \"Leave Allocation\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Leave Type\"\n ],\n \"label\": \"Leave Policy\",\n \"name\": \"Leave Policy\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Leave Period\",\n \"name\": \"Leave Period\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Leave Type\",\n \"name\": \"Leave Type\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Holiday List\",\n \"name\": \"Holiday List\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Compensatory Leave Request\",\n \"name\": \"Compensatory Leave Request\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Leave Encashment\",\n \"name\": \"Leave Encashment\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Leave Block List\",\n \"name\": \"Leave Block List\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Leave Application\"\n ],\n \"doctype\": \"Leave Application\",\n \"is_query_report\": true,\n \"label\": \"Employee Leave Balance\",\n \"name\": \"Employee Leave Balance\",\n \"type\": \"report\"\n }\n]",
+ "title": "Leaves"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Salary Structure\",\n \"name\": \"Salary Structure\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Salary Structure\",\n \"Employee\"\n ],\n \"label\": \"Salary Structure Assignment\",\n \"name\": \"Salary Structure Assignment\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Payroll Entry\",\n \"name\": \"Payroll Entry\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Salary Slip\",\n \"name\": \"Salary Slip\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Payroll Period\",\n \"name\": \"Payroll Period\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Salary Component\",\n \"name\": \"Salary Component\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Additional Salary\",\n \"name\": \"Additional Salary\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Retention Bonus\",\n \"name\": \"Retention Bonus\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Employee Incentive\",\n \"name\": \"Employee Incentive\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Salary Slip\"\n ],\n \"doctype\": \"Salary Slip\",\n \"is_query_report\": true,\n \"label\": \"Salary Register\",\n \"name\": \"Salary Register\",\n \"type\": \"report\"\n }\n]",
+ "title": "Payroll"
+ },
+ {
+ "links": "[\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"hide_count\": true,\n \"label\": \"Employee Attendance Tool\",\n \"name\": \"Employee Attendance Tool\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Attendance\",\n \"name\": \"Attendance\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Attendance Request\",\n \"name\": \"Attendance Request\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"hide_count\": true,\n \"label\": \"Upload Attendance\",\n \"name\": \"Upload Attendance\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"hide_count\": true,\n \"label\": \"Employee Checkin\",\n \"name\": \"Employee Checkin\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Attendance\"\n ],\n \"doctype\": \"Attendance\",\n \"is_query_report\": true,\n \"label\": \"Monthly Attendance Sheet\",\n \"name\": \"Monthly Attendance Sheet\",\n \"type\": \"report\"\n }\n]",
+ "title": "Attendance"
+ },
+ {
+ "links": "[\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Expense Claim\",\n \"name\": \"Expense Claim\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Employee Advance\",\n \"name\": \"Employee Advance\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Expense Claims"
+ },
+ {
+ "icon": "fa fa-cog",
+ "links": "[\n {\n \"label\": \"HR Settings\",\n \"name\": \"HR Settings\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Daily Work Summary Group\",\n \"name\": \"Daily Work Summary Group\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Team Updates\",\n \"name\": \"team-updates\",\n \"type\": \"page\"\n }\n]",
+ "title": "Settings"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Vehicle\",\n \"name\": \"Vehicle\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Vehicle Log\",\n \"name\": \"Vehicle Log\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Vehicle\"\n ],\n \"doctype\": \"Vehicle\",\n \"is_query_report\": true,\n \"label\": \"Vehicle Expenses\",\n \"name\": \"Vehicle Expenses\",\n \"type\": \"report\"\n }\n]",
+ "title": "Fleet Management"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Job Opening\",\n \"name\": \"Job Opening\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Job Applicant\",\n \"name\": \"Job Applicant\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Job Offer\",\n \"name\": \"Job Offer\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Staffing Plan\",\n \"name\": \"Staffing Plan\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Recruitment"
+ },
+ {
+ "links": "[\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Loan Application\",\n \"name\": \"Loan Application\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Loan\",\n \"name\": \"Loan\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Loan Type\",\n \"name\": \"Loan Type\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Loans"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Training Program\",\n \"name\": \"Training Program\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Training Event\",\n \"name\": \"Training Event\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Training Result\",\n \"name\": \"Training Result\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Training Feedback\",\n \"name\": \"Training Feedback\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Training"
+ },
+ {
+ "icon": "fa fa-list",
+ "links": "[\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"doctype\": \"Employee\",\n \"is_query_report\": true,\n \"label\": \"Employee Birthday\",\n \"name\": \"Employee Birthday\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"doctype\": \"Employee\",\n \"is_query_report\": true,\n \"label\": \"Employees working on a holiday\",\n \"name\": \"Employees working on a holiday\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"doctype\": \"Employee\",\n \"is_query_report\": true,\n \"label\": \"Department Analytics\",\n \"name\": \"Department Analytics\",\n \"type\": \"report\"\n }\n]",
+ "title": "Reports"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Appraisal\",\n \"name\": \"Appraisal\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Appraisal Template\",\n \"name\": \"Appraisal Template\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Energy Point Rule\",\n \"name\": \"Energy Point Rule\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Energy Point Log\",\n \"name\": \"Energy Point Log\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Performance"
+ },
+ {
+ "links": "[\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Employee Tax Exemption Declaration\",\n \"name\": \"Employee Tax Exemption Declaration\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Employee Tax Exemption Proof Submission\",\n \"name\": \"Employee Tax Exemption Proof Submission\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Employee Benefit Application\",\n \"name\": \"Employee Benefit Application\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Employee Benefit Claim\",\n \"name\": \"Employee Benefit Claim\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Employee Tax Exemption Category\",\n \"name\": \"Employee Tax Exemption Category\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"label\": \"Employee Tax Exemption Sub Category\",\n \"name\": \"Employee Tax Exemption Sub Category\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Employee Tax and Benefits"
+ }
+ ],
+ "category": "Modules",
+ "charts": [],
+ "creation": "2020-03-02 15:48:58.322521",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "icon": "",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "HR",
+ "modified": "2020-03-12 16:30:35.211246",
+ "modified_by": "Administrator",
+ "module": "HR",
+ "name": "HR",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+ {
+ "format": "{} Active",
+ "is_query_report": 0,
+ "link_to": "Employee",
+ "stats_filter": "{\"status\":\"Active\"}",
+ "type": "DocType"
+ },
+ {
+ "format": "{} Unpaid",
+ "is_query_report": 0,
+ "link_to": "Expense Claim",
+ "stats_filter": "{\"approval_status\":\"Draft\"}",
+ "type": "DocType"
+ },
+ {
+ "format": "{} Open",
+ "is_query_report": 0,
+ "link_to": "Job Applicant",
+ "stats_filter": "{\n \"status\": \"Open\"\n}",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Salary Structure",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Leave Application",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Salary Register",
+ "type": "Report"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/department/department.json b/erpnext/hr/doctype/department/department.json
index a191b6b..6469f4c 100644
--- a/erpnext/hr/doctype/department/department.json
+++ b/erpnext/hr/doctype/department/department.json
@@ -129,11 +129,13 @@
],
"icon": "fa fa-sitemap",
"idx": 1,
+ "is_tree": 1,
"links": [],
- "modified": "2019-12-12 14:48:35.254308",
+ "modified": "2020-03-18 18:03:27.784362",
"modified_by": "Administrator",
"module": "HR",
"name": "Department",
+ "nsm_parent_field": "parent_department",
"owner": "Administrator",
"permissions": [
{
diff --git a/erpnext/hr/doctype/department/department.py b/erpnext/hr/doctype/department/department.py
index 9b2b581..2cef509 100644
--- a/erpnext/hr/doctype/department/department.py
+++ b/erpnext/hr/doctype/department/department.py
@@ -48,12 +48,17 @@
@frappe.whitelist()
def get_children(doctype, parent=None, company=None, is_root=False):
condition = ''
+ var_dict = {
+ "name": get_root_of("Department"),
+ "parent": parent,
+ "company": company,
+ }
if company == parent:
- condition = "name='{0}'".format(get_root_of("Department"))
+ condition = "name=%(name)s"
elif company:
- condition = "parent_department='{0}' and company='{1}'".format(parent, company)
+ condition = "parent_department=%(parent)s and company=%(company)s"
else:
- condition = "parent_department = '{0}'".format(parent)
+ condition = "parent_department = %(parent)s"
return frappe.db.sql("""
select
@@ -62,7 +67,7 @@
from `tab{doctype}`
where
{condition}
- order by name""".format(doctype=doctype, condition=condition), as_dict=1)
+ order by name""".format(doctype=doctype, condition=condition), var_dict, as_dict=1)
@frappe.whitelist()
def add_node():
diff --git a/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py b/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py
index fea4246..feaa925 100644
--- a/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py
+++ b/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py
@@ -190,6 +190,7 @@
component_max_benefit, depends_on_payment_days = frappe.db.get_value("Salary Component",
salary_component, ["max_benefit_amount", "depends_on_payment_days"])
+ benefit_amount = 0
if benefit_application:
benefit_amount = frappe.db.get_value("Employee Benefit Application Detail",
{"parent": benefit_application[0][0], "earning_component": salary_component}, "amount")
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 96ad1b7..d68caf1 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,7 +71,7 @@
"label": "Amount",
"oldfieldname": "tax_amount",
"oldfieldtype": "Currency",
- "options": "currency"
+ "options": "Company:company:default_currency"
},
{
"columns": 2,
@@ -81,7 +81,7 @@
"label": "Total",
"oldfieldname": "total",
"oldfieldtype": "Currency",
- "options": "currency",
+ "options": "Company:company:default_currency",
"read_only": 1
},
{
@@ -95,7 +95,7 @@
],
"istable": 1,
"links": [],
- "modified": "2019-12-11 13:50:02.883328",
+ "modified": "2020-03-11 13:25:06.721917",
"modified_by": "Administrator",
"module": "HR",
"name": "Expense Taxes and Charges",
diff --git a/erpnext/hr/doctype/vehicle_log/test_vehicle_log.py b/erpnext/hr/doctype/vehicle_log/test_vehicle_log.py
index 3770da7..e9dc776 100644
--- a/erpnext/hr/doctype/vehicle_log/test_vehicle_log.py
+++ b/erpnext/hr/doctype/vehicle_log/test_vehicle_log.py
@@ -6,11 +6,14 @@
import frappe
import unittest
from frappe.utils import nowdate,flt, cstr,random_string
-# test_records = frappe.get_test_records('Vehicle Log')
+
class TestVehicleLog(unittest.TestCase):
def test_make_vehicle_log_and_syncing_of_odometer_value(self):
- employee_id=frappe.db.sql("""select name from `tabEmployee` order by modified desc limit 1""")[0][0]
+ employee_id = frappe.db.sql("""select name from `tabEmployee` where status='Active' order by modified desc limit 1""")
+ employee_id = employee_id[0][0] if employee_id else None
+
license_plate = get_vehicle(employee_id)
+
vehicle_log = frappe.get_doc({
"doctype": "Vehicle Log",
"license_plate": cstr(license_plate),
diff --git a/erpnext/hr/doctype/vehicle_log/vehicle_log.js b/erpnext/hr/doctype/vehicle_log/vehicle_log.js
index bdb37d2..6f3a0dc 100644
--- a/erpnext/hr/doctype/vehicle_log/vehicle_log.js
+++ b/erpnext/hr/doctype/vehicle_log/vehicle_log.js
@@ -3,11 +3,6 @@
frappe.ui.form.on("Vehicle Log", {
refresh: function(frm) {
-
- if(frm.doc.license_plate && frm.doc.__islocal){
- frm.events.set_vehicle_details(frm);
- }
-
if(frm.doc.docstatus == 1) {
frm.add_custom_button(__('Expense Claim'), function() {
frm.events.expense_claim(frm);
@@ -16,27 +11,6 @@
}
},
- license_plate: function(frm) {
- if(frm.doc.license_plate){
- frm.events.set_vehicle_details(frm);
- }
- },
-
- set_vehicle_details: function(frm) {
- frappe.call({
- method: "erpnext.hr.doctype.vehicle_log.vehicle_log.get_make_model",
- args: {
- license_plate: frm.doc.license_plate
- },
- callback: function(r) {
- frappe.model.set_value(cur_frm.doctype, cur_frm.docname, "make", r.message[0]);
- frappe.model.set_value(cur_frm.doctype, cur_frm.docname, "model", r.message[1]);
- frappe.model.set_value(cur_frm.doctype, cur_frm.docname, "last_odometer", r.message[2]);
- frappe.model.set_value(cur_frm.doctype, cur_frm.docname, "employee", r.message[3]);
- }
- });
- },
-
expense_claim: function(frm){
frappe.call({
method: "erpnext.hr.doctype.vehicle_log.vehicle_log.make_expense_claim",
diff --git a/erpnext/hr/doctype/vehicle_log/vehicle_log.json b/erpnext/hr/doctype/vehicle_log/vehicle_log.json
index 52effff..619e295 100644
--- a/erpnext/hr/doctype/vehicle_log/vehicle_log.json
+++ b/erpnext/hr/doctype/vehicle_log/vehicle_log.json
@@ -1,5 +1,4 @@
{
- "actions": [],
"autoname": "naming_series:",
"creation": "2016-09-03 14:14:51.788550",
"doctype": "DocType",
@@ -56,6 +55,8 @@
"reqd": 1
},
{
+ "fetch_from": "license_plate.employee",
+ "fetch_if_empty": 1,
"fieldname": "employee",
"fieldtype": "Link",
"in_list_view": 1,
@@ -73,11 +74,13 @@
"fieldtype": "Column Break"
},
{
+ "fetch_from": "license_plate.model",
"fieldname": "model",
"fieldtype": "Read Only",
"label": "Model"
},
{
+ "fetch_from": "license_plate.make",
"fieldname": "make",
"fieldtype": "Read Only",
"label": "Make"
@@ -152,6 +155,7 @@
"read_only": 1
},
{
+ "fetch_from": "license_plate.last_odometer",
"fieldname": "last_odometer",
"fieldtype": "Int",
"label": "last Odometer Value ",
@@ -164,8 +168,7 @@
}
],
"is_submittable": 1,
- "links": [],
- "modified": "2020-01-28 12:43:34.419647",
+ "modified": "2020-03-18 16:45:45.060761",
"modified_by": "Administrator",
"module": "HR",
"name": "Vehicle Log",
diff --git a/erpnext/hr/doctype/vehicle_log/vehicle_log.py b/erpnext/hr/doctype/vehicle_log/vehicle_log.py
index 12cc1dd..8affab2 100644
--- a/erpnext/hr/doctype/vehicle_log/vehicle_log.py
+++ b/erpnext/hr/doctype/vehicle_log/vehicle_log.py
@@ -12,18 +12,7 @@
class VehicleLog(Document):
def validate(self):
if flt(self.odometer) < flt(self.last_odometer):
- frappe.throw(_("Current Odometer reading entered should be greater than initial Vehicle Odometer {0}").format(self.last_odometer))
- for service_detail in self.service_detail:
- if (service_detail.service_item or service_detail.type or service_detail.frequency or service_detail.expense_amount):
- if not (service_detail.service_item and service_detail.type and service_detail.frequency and service_detail.expense_amount):
- frappe.throw(_("Service Item,Type,frequency and expense amount are required"))
-
- def before_insert(self):
- model_details = get_make_model(self.license_plate)
- self.make = model_details[0]
- self.model = model_details[1]
- self.last_odometer = model_details[2]
- self.employee = model_details[3]
+ frappe.throw(_("Current Odometer Value should be greater than Last Odometer Value {0}").format(self.last_odometer))
def on_submit(self):
frappe.db.set_value("Vehicle", self.license_plate, "last_odometer", self.odometer)
@@ -35,34 +24,25 @@
frappe.db.set_value("Vehicle", self.license_plate, "last_odometer", updated_odometer_value)
@frappe.whitelist()
-def get_make_model(license_plate):
- vehicle=frappe.get_doc("Vehicle",license_plate)
- return (vehicle.make, vehicle.model, vehicle.last_odometer, vehicle.employee)
-
-@frappe.whitelist()
def make_expense_claim(docname):
- def check_exp_claim_exists():
- exp_claim = frappe.db.sql("""select name from `tabExpense Claim` where vehicle_log=%s""",vehicle_log.name)
- return exp_claim[0][0] if exp_claim else ""
- def calc_service_exp():
- total_exp_amt=0
- exp_claim = check_exp_claim_exists()
- if exp_claim:
- frappe.throw(_("Expense Claim {0} already exists for the Vehicle Log").format(exp_claim))
- for serdetail in vehicle_log.service_detail:
- total_exp_amt = total_exp_amt + serdetail.expense_amount
- return total_exp_amt
+ expense_claim = frappe.db.exists("Expense Claim", {"vehicle_log": docname})
+ if expense_claim:
+ frappe.throw(_("Expense Claim {0} already exists for the Vehicle Log").format(expense_claim))
vehicle_log = frappe.get_doc("Vehicle Log", docname)
+ service_expense = sum([flt(d.expense_amount) for d in vehicle_log.service_detail])
+
+ claim_amount = service_expense + flt(vehicle_log.price)
+ if not claim_amount:
+ frappe.throw(_("No additional expenses has been added"))
+
exp_claim = frappe.new_doc("Expense Claim")
- exp_claim.employee=vehicle_log.employee
- exp_claim.vehicle_log=vehicle_log.name
- exp_claim.remark=_("Expense Claim for Vehicle Log {0}").format(vehicle_log.name)
- fuel_price=vehicle_log.price
- total_claim_amt=calc_service_exp() + fuel_price
- exp_claim.append("expenses",{
- "expense_date":vehicle_log.date,
- "description":_("Vehicle Expenses"),
- "amount":total_claim_amt
+ exp_claim.employee = vehicle_log.employee
+ exp_claim.vehicle_log = vehicle_log.name
+ exp_claim.remark = _("Expense Claim for Vehicle Log {0}").format(vehicle_log.name)
+ exp_claim.append("expenses", {
+ "expense_date": vehicle_log.date,
+ "description": _("Vehicle Expenses"),
+ "amount": claim_amount
})
return exp_claim.as_dict()
diff --git a/erpnext/hr/doctype/vehicle_service/vehicle_service.json b/erpnext/hr/doctype/vehicle_service/vehicle_service.json
index 7d9d0df..e0bce2b 100644
--- a/erpnext/hr/doctype/vehicle_service/vehicle_service.json
+++ b/erpnext/hr/doctype/vehicle_service/vehicle_service.json
@@ -1,153 +1,57 @@
{
- "allow_copy": 0,
- "allow_import": 0,
- "allow_rename": 0,
- "beta": 0,
- "creation": "2016-09-03 19:20:14.561962",
- "custom": 0,
- "docstatus": 0,
- "doctype": "DocType",
- "document_type": "Document",
- "editable_grid": 1,
+ "creation": "2016-09-03 19:20:14.561962",
+ "doctype": "DocType",
+ "document_type": "Document",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+ "service_item",
+ "type",
+ "frequency",
+ "expense_amount"
+ ],
"fields": [
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "fieldname": "service_item",
- "fieldtype": "Select",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_list_view": 1,
- "in_standard_filter": 0,
- "label": "Service Item",
- "length": 0,
- "no_copy": 0,
- "options": "\nBrake Oil\nBrake Pad\nClutch Plate\nEngine Oil\nOil Change\nWheels",
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
- },
+ "fieldname": "service_item",
+ "fieldtype": "Select",
+ "in_list_view": 1,
+ "label": "Service Item",
+ "options": "\nBrake Oil\nBrake Pad\nClutch Plate\nEngine Oil\nOil Change\nWheels",
+ "reqd": 1
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "fieldname": "type",
- "fieldtype": "Select",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_list_view": 1,
- "in_standard_filter": 0,
- "label": "Type",
- "length": 0,
- "no_copy": 0,
- "options": "\nInspection\nService\nChange",
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
- },
+ "fieldname": "type",
+ "fieldtype": "Select",
+ "in_list_view": 1,
+ "label": "Type",
+ "options": "\nInspection\nService\nChange",
+ "reqd": 1
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "fieldname": "frequency",
- "fieldtype": "Select",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_list_view": 1,
- "in_standard_filter": 0,
- "label": "Frequency",
- "length": 0,
- "no_copy": 0,
- "options": "\nMileage\nMonthly\nQuarterly\nHalf Yearly\nYearly",
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
- },
+ "fieldname": "frequency",
+ "fieldtype": "Select",
+ "in_list_view": 1,
+ "label": "Frequency",
+ "options": "\nMileage\nMonthly\nQuarterly\nHalf Yearly\nYearly",
+ "reqd": 1
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "fieldname": "expense_amount",
- "fieldtype": "Currency",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_list_view": 1,
- "in_standard_filter": 0,
- "label": "Expense",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
+ "fieldname": "expense_amount",
+ "fieldtype": "Currency",
+ "in_list_view": 1,
+ "label": "Expense",
+ "reqd": 1
}
- ],
- "hide_heading": 0,
- "hide_toolbar": 0,
- "idx": 0,
- "image_view": 0,
- "in_create": 0,
-
- "is_submittable": 0,
- "issingle": 0,
- "istable": 1,
- "max_attachments": 0,
- "modified": "2017-01-09 11:10:29.476907",
- "modified_by": "Administrator",
- "module": "HR",
- "name": "Vehicle Service",
- "name_case": "",
- "owner": "Administrator",
- "permissions": [],
- "quick_entry": 1,
- "read_only": 0,
- "read_only_onload": 0,
- "sort_field": "modified",
- "sort_order": "DESC",
- "track_changes": 1,
- "track_seen": 0
+ ],
+ "istable": 1,
+ "modified": "2020-03-18 16:49:46.645004",
+ "modified_by": "Administrator",
+ "module": "HR",
+ "name": "Vehicle Service",
+ "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/loan_management/desk_page/loan_management/loan_management.json b/erpnext/loan_management/desk_page/loan_management/loan_management.json
new file mode 100644
index 0000000..1d60ca4
--- /dev/null
+++ b/erpnext/loan_management/desk_page/loan_management/loan_management.json
@@ -0,0 +1,54 @@
+{
+ "cards": [
+ {
+ "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]",
+ "title": "Loan"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Process Loan Security Shortfall\",\n \"name\": \"Process Loan Security Shortfall\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Process Loan Interest Accrual\",\n \"name\": \"Process Loan Interest Accrual\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Loan Processes"
+ },
+ {
+ "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]",
+ "title": "Disbursement and Repayment"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Loan Security Type\",\n \"name\": \"Loan Security Type\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Loan Security Price\",\n \"name\": \"Loan Security Price\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Loan Security\",\n \"name\": \"Loan Security\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Loan Security Pledge\",\n \"name\": \"Loan Security Pledge\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Loan Security Unpledge\",\n \"name\": \"Loan Security Unpledge\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Loan Security Shortfall\",\n \"name\": \"Loan Security Shortfall\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Loan Security"
+ },
+ {
+ "links": "[\n {\n \"dependencies\": [\n \"Loan Repayment\"\n ],\n \"doctype\": \"Loan Repayment\",\n \"incomplete_dependencies\": [\n \"Loan Repayment\"\n ],\n \"is_query_report\": true,\n \"label\": \"Loan Repayment and Closure\",\n \"name\": \"Loan Repayment and Closure\",\n \"route\": \"#query-report/Loan Repayment and Closure\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Loan Security Pledge\"\n ],\n \"doctype\": \"Loan Security Pledge\",\n \"incomplete_dependencies\": [\n \"Loan Security Pledge\"\n ],\n \"is_query_report\": true,\n \"label\": \"Loan Security Status\",\n \"name\": \"Loan Security Status\",\n \"route\": \"#query-report/Loan Security Status\",\n \"type\": \"report\"\n }\n]",
+ "title": "Reports"
+ }
+ ],
+ "category": "Modules",
+ "charts": [],
+ "creation": "2020-03-12 16:35:55.299820",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Loan Management",
+ "modified": "2020-03-12 16:38:00.347959",
+ "modified_by": "Administrator",
+ "module": "Loan Management",
+ "name": "Loan Management",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+ {
+ "is_query_report": 0,
+ "link_to": "Loan Application",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Loan",
+ "type": "DocType"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/loan_management/doctype/loan/test_loan.py b/erpnext/loan_management/doctype/loan/test_loan.py
index 08c2f22..759b0d8 100644
--- a/erpnext/loan_management/doctype/loan/test_loan.py
+++ b/erpnext/loan_management/doctype/loan/test_loan.py
@@ -273,11 +273,11 @@
penalty_amount = (accrued_interest_amount * 4 * 25) / (100 * days_in_year(get_datetime(first_date).year))
- lia = frappe.get_all("Loan Interest Accrual", fields=["is_paid"],
- filters={"loan": loan.name}, order_by="posting_date")
+ lia1 = frappe.get_value("Loan Interest Accrual", {"loan": loan.name, "is_paid": 1}, 'name')
+ lia2 = frappe.get_value("Loan Interest Accrual", {"loan": loan.name, "is_paid": 0}, 'name')
- self.assertTrue(lia[0].get('is_paid'))
- self.assertFalse(lia[1].get('is_paid'))
+ self.assertTrue(lia1)
+ self.assertTrue(lia2)
def test_security_shortfall(self):
pledges = []
@@ -294,18 +294,21 @@
make_loan_disbursement_entry(loan.name, loan.loan_amount)
- frappe.db.sql(""" UPDATE `tabLoan Security Price` SET loan_security_price = %s
- where loan_security=%s""", (100, 'Test Security 2'))
+ frappe.db.sql(""" UPDATE `tabLoan Security Price` SET loan_security_price = 100
+ where loan_security='Test Security 2'""")
check_for_ltv_shortfall()
loan_security_shortfall = frappe.get_doc("Loan Security Shortfall", {"loan": loan.name})
-
self.assertTrue(loan_security_shortfall)
self.assertEquals(loan_security_shortfall.loan_amount, 1000000.00)
self.assertEquals(loan_security_shortfall.security_value, 400000.00)
self.assertEquals(loan_security_shortfall.shortfall_amount, 600000.00)
+ frappe.db.sql(""" UPDATE `tabLoan Security Price` SET loan_security_price = 250
+ where loan_security='Test Security 2'""")
+
+
def create_loan_accounts():
if not frappe.db.exists("Account", "Loans and Advances (Assets) - _TC"):
frappe.get_doc({
@@ -399,7 +402,8 @@
"doctype": "Loan Security Type",
"loan_security_type": "Stock",
"unit_of_measure": "Nos",
- "haircut": 50.00
+ "haircut": 50.00,
+ "loan_to_value_ratio": 50
}).insert(ignore_permissions=True)
def create_loan_security():
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 a3442e4..b8e6dab 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
@@ -130,9 +130,10 @@
loan.loan_account, loan.principal_amount + loan.balance_loan_amount, loan.interest_amount,
payable_principal = loan.principal_amount , posting_date=posting_date)
- frappe.db.sql("""UPDATE `tabRepayment Schedule`
- SET is_accrued = 1 where name in (%s)""" #nosec
- % ", ".join(['%s']*len(accrued_entries)), tuple(accrued_entries))
+ if accrued_entries:
+ frappe.db.sql("""UPDATE `tabRepayment Schedule`
+ SET is_accrued = 1 where name in (%s)""" #nosec
+ % ", ".join(['%s']*len(accrued_entries)), tuple(accrued_entries))
def make_loan_interest_accrual_entry(loan, applicant_type, applicant, interest_income_account, loan_account,
pending_principal_amount, interest_amount, payable_principal=None, process_loan_interest=None, posting_date=None):
diff --git a/erpnext/manufacturing/desk_page/manufacturing/manufacturing.json b/erpnext/manufacturing/desk_page/manufacturing/manufacturing.json
new file mode 100644
index 0000000..6127ef6
--- /dev/null
+++ b/erpnext/manufacturing/desk_page/manufacturing/manufacturing.json
@@ -0,0 +1,52 @@
+{
+ "cards": [
+ {
+ "icon": "fa fa-star",
+ "links": "[\n {\n \"dependencies\": [\n \"Item\",\n \"BOM\"\n ],\n \"description\": \"Orders released for production.\",\n \"label\": \"Work Order\",\n \"name\": \"Work Order\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\",\n \"BOM\"\n ],\n \"description\": \"Generate Material Requests (MRP) and Work Orders.\",\n \"label\": \"Production Plan\",\n \"name\": \"Production Plan\",\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 \"Activity Type\"\n ],\n \"description\": \"Time Sheet for manufacturing.\",\n \"label\": \"Timesheet\",\n \"name\": \"Timesheet\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Job Card\",\n \"name\": \"Job Card\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Production"
+ },
+ {
+ "links": "[\n {\n \"description\": \"All Products or Services.\",\n \"label\": \"Item\",\n \"name\": \"Item\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"description\": \"Bill of Materials (BOM)\",\n \"label\": \"Bill of Materials\",\n \"name\": \"BOM\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Where manufacturing operations are carried.\",\n \"label\": \"Workstation\",\n \"name\": \"Workstation\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Details of the operations carried out.\",\n \"label\": \"Operation\",\n \"name\": \"Operation\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Routing\",\n \"name\": \"Routing\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Bill of Materials"
+ },
+ {
+ "icon": "fa fa-list",
+ "links": "[\n {\n \"dependencies\": [\n \"Work Order\"\n ],\n \"doctype\": \"Work Order\",\n \"is_query_report\": true,\n \"label\": \"Open Work Orders\",\n \"name\": \"Open Work Orders\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Work Order\"\n ],\n \"doctype\": \"Work Order\",\n \"is_query_report\": true,\n \"label\": \"Work Orders in Progress\",\n \"name\": \"Work Orders in Progress\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Work Order\"\n ],\n \"doctype\": \"Work Order\",\n \"is_query_report\": true,\n \"label\": \"Issued Items Against Work Order\",\n \"name\": \"Issued Items Against Work Order\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Work Order\"\n ],\n \"doctype\": \"Work Order\",\n \"is_query_report\": true,\n \"label\": \"Completed Work Orders\",\n \"name\": \"Completed Work Orders\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Work Order\"\n ],\n \"doctype\": \"Work Order\",\n \"is_query_report\": true,\n \"label\": \"Production Analytics\",\n \"name\": \"Production Analytics\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"BOM\"\n ],\n \"doctype\": \"BOM\",\n \"is_query_report\": true,\n \"label\": \"BOM Search\",\n \"name\": \"BOM Search\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"BOM\"\n ],\n \"doctype\": \"BOM\",\n \"is_query_report\": true,\n \"label\": \"BOM Stock Report\",\n \"name\": \"BOM Stock Report\",\n \"type\": \"report\"\n }\n]",
+ "title": "Reports"
+ },
+ {
+ "icon": "fa fa-wrench",
+ "links": "[\n {\n \"description\": \"Replace BOM and update latest price in all BOMs\",\n \"label\": \"BOM Update Tool\",\n \"name\": \"BOM Update Tool\",\n \"type\": \"doctype\"\n },\n {\n \"data_doctype\": \"BOM\",\n \"description\": \"Compare BOMs for changes in Raw Materials and Operations\",\n \"label\": \"BOM Comparison Tool\",\n \"name\": \"bom-comparison-tool\",\n \"type\": \"page\"\n }\n]",
+ "title": "Tools"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Global settings for all manufacturing processes.\",\n \"label\": \"Manufacturing Settings\",\n \"name\": \"Manufacturing Settings\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Settings"
+ },
+ {
+ "icon": "fa fa-facetime-video",
+ "links": "[\n {\n \"label\": \"Work Order\",\n \"name\": \"Work Order\",\n \"type\": \"help\",\n \"youtube_id\": \"ZotgLyp2YFY\"\n }\n]",
+ "title": "Help"
+ }
+ ],
+ "category": "Domains",
+ "charts": [],
+ "creation": "2020-03-02 17:11:37.032604",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Manufacturing",
+ "modified": "2020-03-12 16:30:36.389877",
+ "modified_by": "Administrator",
+ "module": "Manufacturing",
+ "name": "Manufacturing",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "restrict_to_domain": "Manufacturing",
+ "shortcuts": []
+}
\ No newline at end of file
diff --git a/erpnext/manufacturing/doctype/bom/bom.js b/erpnext/manufacturing/doctype/bom/bom.js
index 3acaee4..0051ad9 100644
--- a/erpnext/manufacturing/doctype/bom/bom.js
+++ b/erpnext/manufacturing/doctype/bom/bom.js
@@ -43,8 +43,7 @@
frm.set_query("item_code", "items", function() {
return {
- query: "erpnext.controllers.queries.item_query",
- filters: [["Item", "name", "!=", cur_frm.doc.item]]
+ query: "erpnext.controllers.queries.item_query"
};
});
@@ -135,6 +134,7 @@
frappe.call({
method: "erpnext.manufacturing.doctype.work_order.work_order.make_work_order",
args: {
+ bom_no: frm.doc.name,
item: frm.doc.item,
qty: data.qty || 0.0,
project: frm.doc.project
diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py
index 7f8bd67..b3e602b 100644
--- a/erpnext/manufacturing/doctype/bom/bom.py
+++ b/erpnext/manufacturing/doctype/bom/bom.py
@@ -114,10 +114,6 @@
child = self.append('operations', d)
child.hour_rate = flt(d.hour_rate / self.conversion_rate, 2)
- def validate_rm_item(self, item):
- if (item[0]['name'] in [it.item_code for it in self.items]) and item[0]['name'] == self.item:
- frappe.throw(_("BOM #{0}: Raw material cannot be same as main Item").format(self.name))
-
def set_bom_material_details(self):
for item in self.get("items"):
self.validate_bom_currecny(item)
@@ -147,7 +143,6 @@
args = json.loads(args)
item = self.get_item_det(args['item_code'])
- self.validate_rm_item(item)
args['bom_no'] = args['bom_no'] or item and cstr(item[0]['default_bom']) or ''
args['transfer_for_manufacture'] = (cstr(args.get('include_item_in_manufacturing', '')) or
@@ -498,6 +493,14 @@
self.scrap_material_cost = total_sm_cost
self.base_scrap_material_cost = base_total_sm_cost
+ def update_new_bom(self, old_bom, new_bom, rate):
+ for d in self.get("items"):
+ if d.bom_no != old_bom: continue
+
+ d.bom_no = new_bom
+ d.rate = rate
+ d.amount = (d.stock_qty or d.qty) * rate
+
def update_exploded_items(self):
""" Update Flat BOM, following will be correct data"""
self.get_exploded_items()
@@ -827,6 +830,10 @@
def get_bom_diff(bom1, bom2):
from frappe.model import table_fields
+ if bom1 == bom2:
+ frappe.throw(_("BOM 1 {0} and BOM 2 {1} should not be same")
+ .format(frappe.bold(bom1), frappe.bold(bom2)))
+
doc1 = frappe.get_doc('BOM', bom1)
doc2 = frappe.get_doc('BOM', bom2)
diff --git a/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py b/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py
index 31a9fdb..2758a42 100644
--- a/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py
+++ b/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py
@@ -14,10 +14,13 @@
class BOMUpdateTool(Document):
def replace_bom(self):
self.validate_bom()
- self.update_new_bom()
+
+ unit_cost = get_new_bom_unit_cost(self.new_bom)
+ self.update_new_bom(unit_cost)
+
frappe.cache().delete_key('bom_children')
bom_list = self.get_parent_boms(self.new_bom)
- updated_bom = []
+
with click.progressbar(bom_list) as bom_list:
pass
for bom in bom_list:
@@ -26,7 +29,9 @@
# this is only used for versioning and we do not want
# to make separate db calls by using load_doc_before_save
# which proves to be expensive while doing bulk replace
- bom_obj._doc_before_save = bom_obj.as_dict()
+ bom_obj._doc_before_save = bom_obj
+ bom_obj.update_new_bom(self.current_bom, self.new_bom, unit_cost)
+ bom_obj.update_exploded_items()
bom_obj.calculate_cost()
bom_obj.update_parent_cost()
bom_obj.db_update()
@@ -43,14 +48,10 @@
!= frappe.db.get_value("BOM", self.new_bom, "item"):
frappe.throw(_("The selected BOMs are not for the same item"))
- def update_new_bom(self):
- new_bom_unitcost = frappe.db.sql("""SELECT `total_cost`/`quantity`
- FROM `tabBOM` WHERE name = %s""", self.new_bom)
- new_bom_unitcost = flt(new_bom_unitcost[0][0]) if new_bom_unitcost else 0
-
+ def update_new_bom(self, unit_cost):
frappe.db.sql("""update `tabBOM Item` set bom_no=%s,
rate=%s, amount=stock_qty*%s where bom_no = %s and docstatus < 2 and parenttype='BOM'""",
- (self.new_bom, new_bom_unitcost, new_bom_unitcost, self.current_bom))
+ (self.new_bom, unit_cost, unit_cost, self.current_bom))
def get_parent_boms(self, bom, bom_list=[]):
data = frappe.db.sql("""SELECT DISTINCT parent FROM `tabBOM Item`
@@ -65,12 +66,18 @@
return list(set(bom_list))
+def get_new_bom_unit_cost(bom):
+ new_bom_unitcost = frappe.db.sql("""SELECT `total_cost`/`quantity`
+ FROM `tabBOM` WHERE name = %s""", bom)
+
+ return flt(new_bom_unitcost[0][0]) if new_bom_unitcost else 0
+
@frappe.whitelist()
def enqueue_replace_bom(args):
if isinstance(args, string_types):
args = json.loads(args)
- frappe.enqueue("erpnext.manufacturing.doctype.bom_update_tool.bom_update_tool.replace_bom", args=args, timeout=4000)
+ frappe.enqueue("erpnext.manufacturing.doctype.bom_update_tool.bom_update_tool.replace_bom", args=args, timeout=40000)
frappe.msgprint(_("Queued for replacing the BOM. It may take a few minutes."))
@frappe.whitelist()
diff --git a/erpnext/manufacturing/doctype/job_card/job_card.js b/erpnext/manufacturing/doctype/job_card/job_card.js
index bc8c229..8c7876d 100644
--- a/erpnext/manufacturing/doctype/job_card/job_card.js
+++ b/erpnext/manufacturing/doctype/job_card/job_card.js
@@ -20,7 +20,7 @@
}
}
- if (frm.doc.docstatus == 0 && frm.doc.for_quantity > frm.doc.total_completed_qty
+ if (frm.doc.docstatus == 0 && (frm.doc.for_quantity > frm.doc.total_completed_qty || !frm.doc.for_quantity)
&& (!frm.doc.items.length || frm.doc.for_quantity == frm.doc.transferred_qty)) {
frm.trigger("prepare_timer_buttons");
}
@@ -59,10 +59,14 @@
let completed_time = frappe.datetime.now_datetime();
frm.trigger("hide_timer");
- frappe.prompt({fieldtype: 'Float', label: __('Completed Quantity'),
- fieldname: 'qty', reqd: 1, default: frm.doc.for_quantity}, data => {
- frm.events.complete_job(frm, completed_time, data.qty);
- }, __("Enter Value"), __("Complete"));
+ if (frm.doc.for_quantity) {
+ frappe.prompt({fieldtype: 'Float', label: __('Completed Quantity'),
+ fieldname: 'qty', reqd: 1, default: frm.doc.for_quantity}, data => {
+ frm.events.complete_job(frm, completed_time, data.qty);
+ }, __("Enter Value"), __("Complete"));
+ } else {
+ frm.events.complete_job(frm, completed_time, 0);
+ }
}).addClass("btn-primary");
}
},
diff --git a/erpnext/manufacturing/doctype/job_card/job_card.json b/erpnext/manufacturing/doctype/job_card/job_card.json
index 156acce..7661fff 100644
--- a/erpnext/manufacturing/doctype/job_card/job_card.json
+++ b/erpnext/manufacturing/doctype/job_card/job_card.json
@@ -99,8 +99,7 @@
"fieldname": "for_quantity",
"fieldtype": "Float",
"in_list_view": 1,
- "label": "Qty To Manufacture",
- "reqd": 1
+ "label": "Qty To Manufacture"
},
{
"fieldname": "wip_warehouse",
@@ -122,6 +121,7 @@
"options": "Employee"
},
{
+ "allow_bulk_edit": 1,
"fieldname": "time_logs",
"fieldtype": "Table",
"label": "Time Logs",
@@ -290,7 +290,7 @@
}
],
"is_submittable": 1,
- "modified": "2019-12-03 13:08:57.926201",
+ "modified": "2020-03-27 13:36:35.417502",
"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 029db1c..f8c60f2 100644
--- a/erpnext/manufacturing/doctype/job_card/job_card.py
+++ b/erpnext/manufacturing/doctype/job_card/job_card.py
@@ -191,12 +191,9 @@
if not self.time_logs:
frappe.throw(_("Time logs are required for job card {0}").format(self.name))
- if self.total_completed_qty <= 0.0:
- frappe.throw(_("Total completed qty must be greater than zero"))
-
- if self.total_completed_qty != self.for_quantity:
- frappe.throw(_("The total completed qty({0}) must be equal to qty to manufacture({1})")
- .format(frappe.bold(self.total_completed_qty),frappe.bold(self.for_quantity)))
+ if self.for_quantity and self.total_completed_qty != self.for_quantity:
+ frappe.throw(_("The total completed qty({0}) must be equal to qty to manufacture({1})"
+ .format(frappe.bold(self.total_completed_qty),frappe.bold(self.for_quantity))))
def update_work_order(self):
if not self.work_order:
@@ -205,27 +202,34 @@
for_quantity, time_in_mins = 0, 0
from_time_list, to_time_list = [], []
- for d in frappe.get_all('Job Card',
- filters = {'docstatus': 1, 'operation_id': self.operation_id}):
- doc = frappe.get_doc('Job Card', d.name)
- for_quantity += doc.total_completed_qty
- time_in_mins += doc.total_time_in_mins
- for time_log in doc.time_logs:
- if time_log.from_time:
- from_time_list.append(time_log.from_time)
- if time_log.to_time:
- to_time_list.append(time_log.to_time)
+ data = frappe.get_all('Job Card',
+ fields = ["sum(total_time_in_mins) as time_in_mins", "sum(total_completed_qty) as completed_qty"],
+ filters = {"docstatus": 1, "work_order": self.work_order,
+ "workstation": self.workstation, "operation": self.operation})
+
+ if data and len(data) > 0:
+ for_quantity = data[0].completed_qty
+ time_in_mins = data[0].time_in_mins
if for_quantity:
+ time_data = frappe.db.sql("""
+ SELECT
+ min(from_time) as start_time, max(to_time) as end_time
+ FROM `tabJob Card` jc, `tabJob Card Time Log` jctl
+ WHERE
+ jctl.parent = jc.name and jc.work_order = %s
+ and jc.workstation = %s and jc.operation = %s and jc.docstatus = 1
+ """, (self.work_order, self.workstation, self.operation), as_dict=1)
+
wo = frappe.get_doc('Work Order', self.work_order)
for data in wo.operations:
- if data.name == self.operation_id:
+ if data.workstation == self.workstation and data.operation == self.operation:
data.completed_qty = for_quantity
data.actual_operation_time = time_in_mins
- data.actual_start_time = min(from_time_list) if from_time_list else None
- data.actual_end_time = max(to_time_list) if to_time_list else None
+ data.actual_start_time = time_data[0].start_time if time_data else None
+ data.actual_end_time = time_data[0].end_time if time_data else None
wo.flags.ignore_validate_update_after_submit = True
wo.update_operation_status()
diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.py b/erpnext/manufacturing/doctype/production_plan/production_plan.py
index a79ea0e..358a542 100644
--- a/erpnext/manufacturing/doctype/production_plan/production_plan.py
+++ b/erpnext/manufacturing/doctype/production_plan/production_plan.py
@@ -144,7 +144,7 @@
item_condition = " and mr_item.item_code ={0}".format(frappe.db.escape(self.item_code))
items = frappe.db.sql("""select distinct parent, name, item_code, warehouse, description,
- (qty - ordered_qty) as pending_qty
+ (qty - ordered_qty) * conversion_factor as pending_qty
from `tabMaterial Request Item` mr_item
where parent in (%s) and docstatus = 1 and qty > ordered_qty
and exists (select name from `tabBOM` bom where bom.item=mr_item.item_code
diff --git a/erpnext/manufacturing/doctype/work_order/test_work_order.py b/erpnext/manufacturing/doctype/work_order/test_work_order.py
index 0a8f41f..2260bef 100644
--- a/erpnext/manufacturing/doctype/work_order/test_work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/test_work_order.py
@@ -14,6 +14,7 @@
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
from erpnext.stock.doctype.item.test_item import make_item
from erpnext.manufacturing.doctype.production_plan.test_production_plan import make_bom
+from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
class TestWorkOrder(unittest.TestCase):
def setUp(self):
@@ -82,6 +83,37 @@
wo_order.set_work_order_operations()
self.assertEqual(wo_order.planned_operating_cost, cost*2)
+ def test_resered_qty_for_partial_completion(self):
+ item = "_Test Item"
+ warehouse = create_warehouse("Test Warehouse for reserved_qty - _TC")
+
+ bin1_at_start = get_bin(item, warehouse)
+
+ # reset to correct value
+ bin1_at_start.update_reserved_qty_for_production()
+
+ wo_order = make_wo_order_test_record(item="_Test FG Item", qty=2,
+ source_warehouse=warehouse, skip_transfer=1)
+
+ bin1_on_submit = get_bin(item, warehouse)
+
+ # reserved qty for production is updated
+ self.assertEqual(cint(bin1_at_start.reserved_qty_for_production) + 2,
+ cint(bin1_on_submit.reserved_qty_for_production))
+
+ test_stock_entry.make_stock_entry(item_code="_Test Item",
+ target=warehouse, qty=100, basic_rate=100)
+ test_stock_entry.make_stock_entry(item_code="_Test Item Home Desktop 100",
+ target=warehouse, qty=100, basic_rate=100)
+
+ s = frappe.get_doc(make_stock_entry(wo_order.name, "Manufacture", 1))
+ s.submit()
+
+ bin1_at_completion = get_bin(item, warehouse)
+
+ self.assertEqual(cint(bin1_at_completion.reserved_qty_for_production),
+ cint(bin1_on_submit.reserved_qty_for_production) - 1)
+
def test_production_item(self):
wo_order = make_wo_order_test_record(item="_Test FG Item", qty=1, do_not_save=True)
frappe.db.set_value("Item", "_Test FG Item", "end_of_life", "2000-1-1")
@@ -404,7 +436,7 @@
wo_order.company = args.company or "_Test Company"
wo_order.stock_uom = args.stock_uom or "_Test UOM"
wo_order.use_multi_level_bom=0
- wo_order.skip_transfer=1
+ wo_order.skip_transfer=args.skip_transfer or 0
wo_order.get_items_and_operations_from_bom()
wo_order.sales_order = args.sales_order or None
wo_order.planned_start_date = args.planned_start_date or now()
diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py
index dd4a872..84bfab2 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/work_order.py
@@ -279,7 +279,7 @@
if enable_capacity_planning and job_card_doc:
row.planned_start_time = job_card_doc.time_logs[-1].from_time
row.planned_end_time = job_card_doc.time_logs[-1].to_time
-
+ print(row.planned_start_time, original_start_time, plan_days)
if date_diff(row.planned_start_time, original_start_time) > plan_days:
frappe.message_log.pop()
frappe.throw(_("Unable to find the time slot in the next {0} days for the operation {1}.")
@@ -314,7 +314,7 @@
stock_entry = frappe.db.sql("""select name from `tabStock Entry`
where work_order = %s and docstatus = 1""", self.name)
if stock_entry:
- frappe.throw(_("Cannot cancel because submitted Stock Entry {0} exists").format(stock_entry[0][0]))
+ frappe.throw(_("Cannot cancel because submitted Stock Entry {0} exists").format(frappe.utils.get_link_to_form('Stock Entry', stock_entry[0][0])))
def update_planned_qty(self):
update_bin_qty(self.production_item, self.fg_warehouse, {
@@ -468,6 +468,9 @@
update bin reserved_qty_for_production
called from Stock Entry for production, after submit, cancel
'''
+ # calculate consumed qty based on submitted stock entries
+ self.update_consumed_qty_for_required_items()
+
if self.docstatus==1:
# calculate transferred qty based on submitted stock entries
self.update_transaferred_qty_for_required_items()
@@ -475,9 +478,6 @@
# update in bin
self.update_reserved_qty_for_production()
- # calculate consumed qty based on submitted stock entries
- self.update_consumed_qty_for_required_items()
-
def update_reserved_qty_for_production(self, items=None):
'''update reserved_qty_for_production in bins'''
for d in self.required_items:
@@ -552,24 +552,33 @@
d.db_set('transferred_qty', flt(transferred_qty), update_modified = False)
def update_consumed_qty_for_required_items(self):
- '''update consumed qty from submitted stock entries for that item against
- the work order'''
+ '''
+ Update consumed qty from submitted stock entries
+ against a work order for each stock item
+ '''
- for d in self.required_items:
- consumed_qty = frappe.db.sql('''select sum(qty)
- from `tabStock Entry` entry, `tabStock Entry Detail` detail
- where
+ for item in self.required_items:
+ consumed_qty = frappe.db.sql('''
+ SELECT
+ SUM(qty)
+ FROM
+ `tabStock Entry` entry,
+ `tabStock Entry Detail` detail
+ WHERE
entry.work_order = %(name)s
- and (entry.purpose = "Material Consumption for Manufacture"
- or entry.purpose = "Manufacture")
- and entry.docstatus = 1
- and detail.parent = entry.name
- and (detail.item_code = %(item)s or detail.original_item = %(item)s)''', {
- 'name': self.name,
- 'item': d.item_code
- })[0][0]
+ AND (entry.purpose = "Material Consumption for Manufacture"
+ OR entry.purpose = "Manufacture")
+ AND entry.docstatus = 1
+ AND detail.parent = entry.name
+ AND detail.s_warehouse IS NOT null
+ AND (detail.item_code = %(item)s
+ OR detail.original_item = %(item)s)
+ ''', {
+ 'name': self.name,
+ 'item': item.item_code
+ })[0][0]
- d.db_set('consumed_qty', flt(consumed_qty), update_modified = False)
+ item.db_set('consumed_qty', flt(consumed_qty), update_modified=False)
def make_bom(self):
data = frappe.db.sql(""" select sed.item_code, sed.qty, sed.s_warehouse
@@ -648,7 +657,7 @@
return res
@frappe.whitelist()
-def make_work_order(item, qty=0, project=None):
+def make_work_order(bom_no, item, qty=0, project=None):
if not frappe.has_permission("Work Order", "write"):
frappe.throw(_("Not permitted"), frappe.PermissionError)
@@ -657,6 +666,7 @@
wo_doc = frappe.new_doc("Work Order")
wo_doc.production_item = item
wo_doc.update(item_details)
+ wo_doc.bom_no = bom_no
if flt(qty) > 0:
wo_doc.qty = flt(qty)
diff --git a/erpnext/manufacturing/page/bom_comparison_tool/bom_comparison_tool.js b/erpnext/manufacturing/page/bom_comparison_tool/bom_comparison_tool.js
index 7152d3d..1bcb1ef 100644
--- a/erpnext/manufacturing/page/bom_comparison_tool/bom_comparison_tool.js
+++ b/erpnext/manufacturing/page/bom_comparison_tool/bom_comparison_tool.js
@@ -22,7 +22,14 @@
fieldname: 'name1',
fieldtype: 'Link',
options: 'BOM',
- change: () => this.fetch_and_render()
+ change: () => this.fetch_and_render(),
+ get_query: () => {
+ return {
+ filters: {
+ "name": ["not in", [this.form.get_value("name2") || ""]]
+ }
+ }
+ }
},
{
fieldtype: 'Column Break'
@@ -32,7 +39,14 @@
fieldname: 'name2',
fieldtype: 'Link',
options: 'BOM',
- change: () => this.fetch_and_render()
+ change: () => this.fetch_and_render(),
+ get_query: () => {
+ return {
+ filters: {
+ "name": ["not in", [this.form.get_value("name1") || ""]]
+ }
+ }
+ }
},
{
fieldtype: 'Section Break'
diff --git a/erpnext/non_profit/desk_page/non_profit/non_profit.json b/erpnext/non_profit/desk_page/non_profit/non_profit.json
new file mode 100644
index 0000000..5d759ba
--- /dev/null
+++ b/erpnext/non_profit/desk_page/non_profit/non_profit.json
@@ -0,0 +1,50 @@
+{
+ "cards": [
+ {
+ "icon": "icon-list",
+ "links": "[\n {\n \"description\": \"Define various loan types\",\n \"label\": \"Loan Type\",\n \"name\": \"Loan Type\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Loan Application\",\n \"label\": \"Loan Application\",\n \"name\": \"Loan Application\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Loan\",\n \"name\": \"Loan\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Loan Management"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Grant information.\",\n \"label\": \"Grant Application\",\n \"name\": \"Grant Application\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Grant Application"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Member information.\",\n \"label\": \"Member\",\n \"name\": \"Member\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Memebership Details\",\n \"label\": \"Membership\",\n \"name\": \"Membership\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Memebership Type Details\",\n \"label\": \"Membership Type\",\n \"name\": \"Membership Type\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Membership"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Volunteer information.\",\n \"label\": \"Volunteer\",\n \"name\": \"Volunteer\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Volunteer Type information.\",\n \"label\": \"Volunteer Type\",\n \"name\": \"Volunteer Type\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Volunteer"
+ },
+ {
+ "icon": "fa fa-star",
+ "links": "[\n {\n \"description\": \"Chapter information.\",\n \"label\": \"Chapter\",\n \"name\": \"Chapter\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n }\n]",
+ "title": "Chapter"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Donor information.\",\n \"label\": \"Donor\",\n \"name\": \"Donor\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Donor Type information.\",\n \"label\": \"Donor Type\",\n \"name\": \"Donor Type\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Donor"
+ }
+ ],
+ "category": "Domains",
+ "charts": [],
+ "creation": "2020-03-02 17:23:47.811421",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Non Profit",
+ "modified": "2020-03-12 16:30:36.683012",
+ "modified_by": "Administrator",
+ "module": "Non Profit",
+ "name": "Non Profit",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "restrict_to_domain": "Non Profit",
+ "shortcuts": []
+}
\ No newline at end of file
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index b0fc7ea..8aec8bd 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -658,4 +658,5 @@
erpnext.patches.v12_0.set_published_in_hub_tracked_item
erpnext.patches.v12_0.set_job_offer_applicant_email
erpnext.patches.v12_0.create_irs_1099_field_united_states
+erpnext.patches.v12_0.move_bank_account_swift_number_to_bank
erpnext.patches.v12_0.rename_bank_reconciliation_fields # 2020-01-22
diff --git a/erpnext/patches/v12_0/move_bank_account_swift_number_to_bank.py b/erpnext/patches/v12_0/move_bank_account_swift_number_to_bank.py
new file mode 100644
index 0000000..3c9758e
--- /dev/null
+++ b/erpnext/patches/v12_0/move_bank_account_swift_number_to_bank.py
@@ -0,0 +1,15 @@
+from __future__ import unicode_literals
+import frappe
+
+def execute():
+ frappe.reload_doc('accounts', 'doctype', 'bank', force=1)
+
+ if frappe.db.table_exists('Bank') and frappe.db.table_exists('Bank Account'):
+ frappe.db.sql("""
+ UPDATE `tabBank` b, `tabBank Account` ba
+ SET b.swift_number = ba.swift_number, b.branch_code = ba.branch_code
+ WHERE b.name = ba.bank
+ """)
+
+ frappe.reload_doc('accounts', 'doctype', 'bank_account')
+ frappe.reload_doc('accounts', 'doctype', 'payment_request')
\ No newline at end of file
diff --git a/erpnext/projects/desk_page/projects/projects.json b/erpnext/projects/desk_page/projects/projects.json
new file mode 100644
index 0000000..13fd1b8
--- /dev/null
+++ b/erpnext/projects/desk_page/projects/projects.json
@@ -0,0 +1,61 @@
+{
+ "cards": [
+ {
+ "icon": "fa fa-star",
+ "links": "[\n {\n \"description\": \"Project master.\",\n \"label\": \"Project\",\n \"name\": \"Project\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Project activity / task.\",\n \"label\": \"Task\",\n \"name\": \"Task\",\n \"onboard\": 1,\n \"route\": \"#List/Task\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Make project from a template.\",\n \"label\": \"Project Template\",\n \"name\": \"Project Template\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Define Project type.\",\n \"label\": \"Project Type\",\n \"name\": \"Project Type\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Project\"\n ],\n \"description\": \"Project Update.\",\n \"label\": \"Project Update\",\n \"name\": \"Project Update\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Projects"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Timesheet for tasks.\",\n \"label\": \"Timesheet\",\n \"name\": \"Timesheet\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Types of activities for Time Logs\",\n \"label\": \"Activity Type\",\n \"name\": \"Activity Type\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Activity Type\"\n ],\n \"description\": \"Cost of various activities\",\n \"label\": \"Activity Cost\",\n \"name\": \"Activity Cost\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Time Tracking"
+ },
+ {
+ "icon": "fa fa-list",
+ "links": "[\n {\n \"dependencies\": [\n \"Timesheet\"\n ],\n \"doctype\": \"Timesheet\",\n \"is_query_report\": true,\n \"label\": \"Daily Timesheet Summary\",\n \"name\": \"Daily Timesheet Summary\",\n \"onboard\": 1,\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Project\"\n ],\n \"doctype\": \"Project\",\n \"is_query_report\": true,\n \"label\": \"Project wise Stock Tracking\",\n \"name\": \"Project wise Stock Tracking\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Project\"\n ],\n \"doctype\": \"Project\",\n \"is_query_report\": true,\n \"label\": \"Project Billing Summary\",\n \"name\": \"Project Billing Summary\",\n \"type\": \"report\"\n }\n]",
+ "title": "Reports"
+ }
+ ],
+ "category": "Modules",
+ "charts": [],
+ "creation": "2020-03-02 15:46:04.874669",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "icon": "",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Projects",
+ "modified": "2020-03-12 16:30:41.538685",
+ "modified_by": "Administrator",
+ "module": "Projects",
+ "name": "Projects",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+ {
+ "format": "{} Assigned",
+ "is_query_report": 0,
+ "link_to": "Task",
+ "stats_filter": "{\n \"_assign\": [\"like\", '%' + frappe.session.user + '%'],\n \"status\": \"Open\"\n}",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Project",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Timesheet",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Project Billing Summary",
+ "type": "Report"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/projects/doctype/project/project.js b/erpnext/projects/doctype/project/project.js
index 3570a0f..5862963 100644
--- a/erpnext/projects/doctype/project/project.js
+++ b/erpnext/projects/doctype/project/project.js
@@ -18,7 +18,7 @@
};
},
onload: function (frm) {
- var so = frappe.meta.get_docfield("Project", "sales_order");
+ var so = frm.get_docfield("Project", "sales_order");
so.get_route_options_for_new_doc = function (field) {
if (frm.is_new()) return;
return {
@@ -135,4 +135,4 @@
frappe.ui.form.make_quick_entry(doctype, null, null, new_doc);
});
-}
\ No newline at end of file
+}
diff --git a/erpnext/projects/doctype/task/task.json b/erpnext/projects/doctype/task/task.json
index 794d816..f4b3d3e 100644
--- a/erpnext/projects/doctype/task/task.json
+++ b/erpnext/projects/doctype/task/task.json
@@ -1,4 +1,5 @@
{
+ "actions": [],
"allow_import": 1,
"autoname": "TASK-.YYYY.-.#####",
"creation": "2013-01-29 19:25:50",
@@ -200,7 +201,6 @@
{
"fieldname": "description",
"fieldtype": "Text Editor",
- "in_preview": 1,
"label": "Task Description",
"oldfieldname": "description",
"oldfieldtype": "Text Editor",
@@ -361,11 +361,14 @@
],
"icon": "fa fa-check",
"idx": 1,
+ "is_tree": 1,
+ "links": [],
"max_attachments": 5,
- "modified": "2019-09-10 13:46:24.631754",
+ "modified": "2020-03-18 18:08:44.153211",
"modified_by": "Administrator",
"module": "Projects",
"name": "Task",
+ "nsm_parent_field": "parent_task",
"owner": "Administrator",
"permissions": [
{
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index fea2d5e..4397fe4 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -4,7 +4,7 @@
erpnext.TransactionController = erpnext.taxes_and_totals.extend({
setup: function() {
this._super();
- frappe.flags.hide_serial_batch_dialog = false;
+ frappe.flags.hide_serial_batch_dialog = true;
frappe.ui.form.on(this.frm.doctype + " Item", "rate", function(frm, cdt, cdn) {
var item = frappe.get_doc(cdt, cdn);
var has_margin_field = frappe.meta.has_field(cdt, 'margin_type');
@@ -165,6 +165,16 @@
return (doc.rule_applied) ? "green" : "red";
});
}
+
+ let batch_no_field = this.frm.get_docfield("items", "batch_no");
+ if (batch_no_field) {
+ batch_no_field.get_route_options_for_new_doc = function(row) {
+ return {
+ "item": row.doc.item_code
+ }
+ };
+ }
+
},
onload: function() {
var me = this;
@@ -352,12 +362,17 @@
['serial_no', 'batch_no', 'barcode'].forEach(field => {
if (data[field] && frappe.meta.has_field(row_to_modify.doctype, field)) {
+
+ let value = (row_to_modify[field] && field === "serial_no")
+ ? row_to_modify[field] + '\n' + data[field] : data[field];
+
frappe.model.set_value(row_to_modify.doctype,
- row_to_modify.name, field, data[field]);
+ row_to_modify.name, field, value);
}
});
scan_barcode_field.set_value('');
+ refresh_field("items");
});
}
return false;
@@ -520,6 +535,15 @@
},
() => me.toggle_conversion_factor(item),
() => {
+ if (show_batch_dialog)
+ return frappe.db.get_value("Item", item.item_code, ["has_batch_no", "has_serial_no"])
+ .then((r) => {
+ if(r.message.has_batch_no || r.message.has_serial_no) {
+ frappe.flags.hide_serial_batch_dialog = false;
+ }
+ });
+ },
+ () => {
if(show_batch_dialog && !frappe.flags.hide_serial_batch_dialog) {
var d = locals[cdt][cdn];
$.each(r.message, function(k, v) {
@@ -528,7 +552,9 @@
erpnext.show_serial_batch_selector(me.frm, d, (item) => {
me.frm.script_manager.trigger('qty', item.doctype, item.name);
- });
+ if (!me.frm.doc.set_warehouse)
+ me.frm.script_manager.trigger('warehouse', item.doctype, item.name);
+ }, undefined, !frappe.flags.hide_serial_batch_dialog);
}
},
() => me.conversion_factor(doc, cdt, cdn, true),
diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js
index 35dc842..4eb3175 100755
--- a/erpnext/public/js/utils.js
+++ b/erpnext/public/js/utils.js
@@ -439,12 +439,13 @@
const dialog = new frappe.ui.Dialog({
title: __("Update Items"),
fields: [
- {fieldtype:'Section Break', label: __('Items')},
{
fieldname: "trans_items",
fieldtype: "Table",
+ label: "Items",
cannot_add_rows: cannot_add_row,
in_place_edit: true,
+ reqd: 1,
data: this.data,
get_data: () => {
return this.data;
diff --git a/erpnext/public/js/utils/dimension_tree_filter.js b/erpnext/public/js/utils/dimension_tree_filter.js
index 7abe4a7..75c5a82 100644
--- a/erpnext/public/js/utils/dimension_tree_filter.js
+++ b/erpnext/public/js/utils/dimension_tree_filter.js
@@ -1,23 +1,25 @@
frappe.provide('frappe.ui.form');
-erpnext.doctypes_with_dimensions = ["GL Entry", "Sales Invoice", "Purchase Invoice", "Payment Entry", "Asset",
+let default_dimensions = {};
+
+let doctypes_with_dimensions = ["GL Entry", "Sales Invoice", "Purchase Invoice", "Payment Entry", "Asset",
"Expense Claim", "Stock Entry", "Budget", "Payroll Entry", "Delivery Note", "Shipping Rule", "Loyalty Program",
"Fee Schedule", "Fee Structure", "Stock Reconciliation", "Travel Request", "Fees", "POS Profile", "Opening Invoice Creation Tool",
"Subscription", "Purchase Order", "Journal Entry", "Material Request", "Purchase Receipt", "Landed Cost Item", "Asset"];
-erpnext.child_docs = ["Sales Invoice Item", "Purchase Invoice Item", "Purchase Order Item", "Journal Entry Account",
+let child_docs = ["Sales Invoice Item", "Purchase Invoice Item", "Purchase Order Item", "Journal Entry Account",
"Material Request Item", "Delivery Note Item", "Purchase Receipt Item", "Stock Entry Detail", "Payment Entry Deduction",
"Landed Cost Item", "Asset Value Adjustment", "Opening Invoice Creation Tool Item", "Subscription Plan"];
frappe.call({
method: "erpnext.accounts.doctype.accounting_dimension.accounting_dimension.get_dimension_filters",
- callback: function(r){
+ callback: function(r) {
erpnext.dimension_filters = r.message[0];
- erpnext.default_dimensions = r.message[1];
+ default_dimensions = r.message[1];
}
});
-erpnext.doctypes_with_dimensions.forEach((doctype) => {
+doctypes_with_dimensions.forEach((doctype) => {
frappe.ui.form.on(doctype, {
onload: function(frm) {
erpnext.dimension_filters.forEach((dimension) => {
@@ -27,39 +29,40 @@
"is_group": 0
});
}
-
- if (Object.keys(erpnext.default_dimensions).length > 0) {
- if (frappe.meta.has_field(doctype, dimension['fieldname'])) {
- if (frm.is_new() && frappe.meta.has_field(doctype, 'company') && frm.doc.company) {
- frm.set_value(dimension['fieldname'], erpnext.default_dimensions[frm.doc.company][dimension['document_type']]);
- }
- }
-
- if (frm.doc.items && frm.doc.items.length) {
- frm.doc.items[0][dimension['fieldname']] = erpnext.default_dimensions[frm.doc.company][dimension['document_type']];
- }
-
- if (frm.doc.accounts && frm.doc.accounts.length) {
- frm.doc.accounts[0][dimension['fieldname']] = erpnext.default_dimensions[frm.doc.company][dimension['document_type']];
- }
- }
});
});
},
company: function(frm) {
- if(frm.doc.company && (Object.keys(erpnext.default_dimensions).length > 0)) {
- erpnext.dimension_filters.forEach((dimension) => {
- if (frappe.meta.has_field(doctype, dimension['fieldname'])) {
- frm.set_value(dimension['fieldname'], erpnext.default_dimensions[frm.doc.company][dimension['document_type']]);
- }
- });
+ if(frm.doc.company && (Object.keys(default_dimensions || {}).length > 0)
+ && default_dimensions[frm.doc.company]) {
+ frm.trigger('update_dimension');
}
},
+
+ update_dimension: function(frm) {
+ erpnext.dimension_filters.forEach((dimension) => {
+ if (frm.is_new()) {
+ if (frm.doc.company && Object.keys(default_dimensions || {}).length > 0
+ && default_dimensions[frm.doc.company]) {
+
+ if (frappe.meta.has_field(doctype, dimension['fieldname'])) {
+ frm.set_value(dimension['fieldname'],
+ default_dimensions[frm.doc.company][dimension['document_type']]);
+ }
+
+ $.each(frm.doc.items || frm.doc.accounts || [], function(i, row) {
+ frappe.model.set_value(row.doctype, row.name, dimension['fieldname'],
+ default_dimensions[frm.doc.company][dimension['document_type']])
+ });
+ }
+ }
+ });
+ }
});
});
-erpnext.child_docs.forEach((doctype) => {
+child_docs.forEach((doctype) => {
frappe.ui.form.on(doctype, {
items_add: function(frm, cdt, cdn) {
erpnext.dimension_filters.forEach((dimension) => {
@@ -75,14 +78,6 @@
});
},
- company: function(frm) {
- if(frm.doc.company) {
- erpnext.dimension_filters.forEach((dimension) => {
- frm.set_value(dimension['fieldname'], erpnext.default_dimensions[frm.doc.company][dimension['document_type']]);
- });
- }
- },
-
items_add: function(frm, cdt, cdn) {
erpnext.dimension_filters.forEach((dimension) => {
var row = frappe.get_doc(cdt, cdn);
diff --git a/erpnext/public/js/utils/serial_no_batch_selector.js b/erpnext/public/js/utils/serial_no_batch_selector.js
index a240e49..d75633e 100644
--- a/erpnext/public/js/utils/serial_no_batch_selector.js
+++ b/erpnext/public/js/utils/serial_no_batch_selector.js
@@ -5,14 +5,13 @@
this.show_dialog = show_dialog;
// frm, item, warehouse_details, has_batch, oldest
let d = this.item;
- if (d && d.has_batch_no && (!d.batch_no || this.show_dialog)) {
- this.has_batch = 1;
- this.setup();
+ this.has_batch = 0; this.has_serial_no = 0;
+
+ if (d && d.has_batch_no && (!d.batch_no || this.show_dialog)) this.has_batch = 1;
// !(this.show_dialog == false) ensures that show_dialog is implictly true, even when undefined
- } else if(d && d.has_serial_no && !(this.show_dialog == false)) {
- this.has_batch = 0;
- this.setup();
- }
+ if(d && d.has_serial_no && !(this.show_dialog == false)) this.has_serial_no = 1;
+
+ this.setup();
},
setup: function() {
@@ -36,16 +35,16 @@
label: __('Item Code'),
default: me.item_code
},
- {fieldtype:'Column Break'},
{
fieldname: 'warehouse',
fieldtype:'Link',
options: 'Warehouse',
+ reqd: me.has_batch && !me.has_serial_no ? 0 : 1,
label: __(me.warehouse_details.type),
- default: me.warehouse_details.name,
+ default: typeof me.warehouse_details.name == "string" ? me.warehouse_details.name : '',
onchange: function(e) {
- if(me.has_batch) {
+ if(me.has_batch && !me.has_serial_no) {
fields = fields.concat(me.get_batch_fields());
} else {
fields = fields.concat(me.get_serial_no_fields());
@@ -74,15 +73,16 @@
{
fieldname: 'qty',
fieldtype:'Float',
- read_only: me.has_batch,
- label: __(me.has_batch ? 'Total Qty' : 'Qty'),
+ read_only: me.has_batch && !me.has_serial_no,
+ label: __(me.has_batch && !me.has_serial_no ? 'Total Qty' : 'Qty'),
default: 0
},
{
fieldname: 'auto_fetch_button',
fieldtype:'Button',
- hidden: me.has_batch,
- label: __('Fetch based on FIFO'),
+ hidden: me.has_batch && !me.has_serial_no,
+ label: __('Auto Fetch'),
+ description: __('Fetch Serial Numbers based on FIFO'),
click: () => {
let qty = this.dialog.fields_dict.qty.get_value();
let numbers = frappe.call({
@@ -90,7 +90,7 @@
args: {
qty: qty,
item_code: me.item_code,
- warehouse: me.warehouse_details.name,
+ warehouse: typeof me.warehouse_details.name == "string" ? me.warehouse_details.name : '',
batch_no: me.item.batch_no || null
}
});
@@ -109,10 +109,12 @@
}
];
- if (this.has_batch) {
+ if (this.has_batch && !this.has_serial_no) {
title = __("Select Batch Numbers");
fields = fields.concat(this.get_batch_fields());
} else {
+ // if only serial no OR
+ // if both batch_no & serial_no then only select serial_no and auto set batches nos
title = __("Select Serial Numbers");
fields = fields.concat(this.get_serial_no_fields());
}
@@ -122,25 +124,31 @@
fields: fields
});
- if (this.item.serial_no) {
- this.dialog.fields_dict.serial_no.set_value(this.item.serial_no);
- }
-
this.dialog.set_primary_action(__('Insert'), function() {
me.values = me.dialog.get_values();
if(me.validate()) {
- me.set_items();
- me.dialog.hide();
+ frappe.run_serially([
+ () => me.update_batch_items(),
+ () => me.update_serial_no_item(),
+ () => me.update_batch_serial_no_items(),
+ () => {
+ refresh_field("items");
+ if (me.callback) {
+ return me.callback(me.item);
+ }
+ },
+ () => me.dialog.hide()
+ ])
}
});
if(this.show_dialog) {
let d = this.item;
- if (d.has_serial_no && d.serial_no) {
- this.dialog.set_value('serial_no', d.serial_no);
+ if (this.item.serial_no) {
+ this.dialog.fields_dict.serial_no.set_value(this.item.serial_no);
}
-
- if (d.has_batch_no && d.batch_no) {
+
+ if (this.has_batch && !this.has_serial_no && d.batch_no) {
this.frm.doc.items.forEach(data => {
if(data.item_code == d.item_code) {
this.dialog.fields_dict.batches.df.data.push({
@@ -155,7 +163,7 @@
}
}
- if (this.has_batch) {
+ if (this.has_batch && !this.has_serial_no) {
this.update_total_qty();
}
@@ -174,7 +182,7 @@
frappe.throw(__("Please select a warehouse"));
return false;
}
- if(this.has_batch) {
+ if(this.has_batch && !this.has_serial_no) {
if(values.batches.length === 0 || !values.batches) {
frappe.throw(__("Please select batches for batched item "
+ values.item_code));
@@ -193,34 +201,23 @@
} else {
let serial_nos = values.serial_no || '';
if (!serial_nos || !serial_nos.replace(/\s/g, '').length) {
- if (!this.show_dialog) {
- frappe.throw(__("Please enter serial numbers for serialized item "
- + values.item_code));
- return false;
- }
+ frappe.throw(__("Please enter serial numbers for serialized item "
+ + values.item_code));
+ return false;
}
return true;
}
},
- set_items: function() {
- var me = this;
- if(this.has_batch) {
+ update_batch_items() {
+ // clones an items if muliple batches are selected.
+ if(this.has_batch && !this.has_serial_no) {
this.values.batches.map((batch, i) => {
let batch_no = batch.batch_no;
let row = '';
if (i !== 0 && !this.batch_exists(batch_no)) {
- row = this.frm.add_child("items", {
- 'item_code': this.item.item_code,
- 'item_name': this.item.item_name,
- 'price_list_rate': this.item.price_list_rate,
- 'rate': this.item.rate,
- 'qty': batch.selected_qty,
- 'batch_no': batch_no,
- 'actual_qty': this.item.actual_qty,
- 'discount_percentage': this.item.discount_percentage
- });
+ row = this.frm.add_child("items", { ...this.item });
} else {
row = this.frm.doc.items.find(i => i.batch_no === batch_no);
}
@@ -228,16 +225,59 @@
if (!row) {
row = this.item;
}
-
+ // this ensures that qty & batch no is set
this.map_row_values(row, batch, 'batch_no',
'selected_qty', this.values.warehouse);
});
- } else {
+ }
+ },
+
+ update_serial_no_item() {
+ // just updates serial no for the item
+ if(this.has_serial_no && !this.has_batch) {
this.map_row_values(this.item, this.values, 'serial_no', 'qty');
}
+ },
- refresh_field("items");
- this.callback && this.callback(this.item);
+ update_batch_serial_no_items() {
+ // if serial no selected is from different batches, adds new rows for each batch.
+ if(this.has_batch && this.has_serial_no) {
+ const selected_serial_nos = this.values.serial_no.split(/\n/g).filter(s => s);
+
+ return frappe.db.get_list("Serial No", {
+ filters: { 'name': ["in", selected_serial_nos]},
+ fields: ["batch_no", "name"]
+ }).then((data) => {
+ // data = [{batch_no: 'batch-1', name: "SR-001"},
+ // {batch_no: 'batch-2', name: "SR-003"}, {batch_no: 'batch-2', name: "SR-004"}]
+ const batch_serial_map = data.reduce((acc, d) => {
+ if (!acc[d['batch_no']]) acc[d['batch_no']] = [];
+ acc[d['batch_no']].push(d['name'])
+ return acc
+ }, {})
+ // batch_serial_map = { "batch-1": ['SR-001'], "batch-2": ["SR-003", "SR-004"]}
+ Object.keys(batch_serial_map).map((batch_no, i) => {
+ let row = '';
+ const serial_no = batch_serial_map[batch_no];
+ if (i == 0) {
+ row = this.item;
+ this.map_row_values(row, {qty: serial_no.length, batch_no: batch_no}, 'batch_no',
+ 'qty', this.values.warehouse);
+ } else if (!this.batch_exists(batch_no)) {
+ row = this.frm.add_child("items", { ...this.item });
+ row.batch_no = batch_no;
+ } else {
+ row = this.frm.doc.items.find(i => i.batch_no === batch_no);
+ }
+ const values = {
+ 'qty': serial_no.length,
+ 'serial_no': serial_no.join('\n')
+ }
+ this.map_row_values(row, values, 'serial_no',
+ 'qty', this.values.warehouse);
+ });
+ })
+ }
},
batch_exists: function(batch) {
@@ -287,7 +327,7 @@
return {
filters: {
item_code: me.item_code,
- warehouse: me.warehouse || me.warehouse_details.name
+ warehouse: me.warehouse || typeof me.warehouse_details.name == "string" ? me.warehouse_details.name : ''
},
query: 'erpnext.controllers.queries.get_batch_no'
};
@@ -313,11 +353,15 @@
frappe.throw(__(`Batch ${val} already selected.`));
return;
}
+
+ let batch_number = me.item.batch_no ||
+ this.grid_row.on_grid_fields_dict.batch_no.get_value();
+
if (me.warehouse_details.name) {
frappe.call({
method: 'erpnext.stock.doctype.batch.batch.get_batch_qty',
args: {
- batch_no: me.item.batch_no,
+ batch_no: batch_number,
warehouse: me.warehouse_details.name,
item_code: me.item_code
},
@@ -444,7 +488,7 @@
{
fieldname: 'serial_no',
fieldtype: 'Small Text',
- label: __(me.has_batch ? 'Selected Batch Numbers' : 'Selected Serial Numbers'),
+ label: __(me.has_batch && !me.has_serial_no ? 'Selected Batch Numbers' : 'Selected Serial Numbers'),
onchange: function() {
me.serial_list = this.get_value()
.replace(/\n/g, ' ').match(/\S+/g) || [];
diff --git a/erpnext/quality_management/desk_page/quality/quality.json b/erpnext/quality_management/desk_page/quality/quality.json
new file mode 100644
index 0000000..5193e0c
--- /dev/null
+++ b/erpnext/quality_management/desk_page/quality/quality.json
@@ -0,0 +1,56 @@
+{
+ "cards": [
+ {
+ "links": "[\n {\n \"description\": \"Quality Goal.\",\n \"label\": \"Quality Goal\",\n \"name\": \"Quality Goal\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Quality Procedure.\",\n \"label\": \"Quality Procedure\",\n \"name\": \"Quality Procedure\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Tree of Quality Procedures.\",\n \"icon\": \"fa fa-sitemap\",\n \"label\": \"Tree of Procedures\",\n \"name\": \"Quality Procedure\",\n \"route\": \"#Tree/Quality Procedure\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Goal and Procedure"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Quality Feedback\",\n \"label\": \"Quality Feedback\",\n \"name\": \"Quality Feedback\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Quality Feedback Template\",\n \"label\": \"Quality Feedback Template\",\n \"name\": \"Quality Feedback Template\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Feedback"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Quality Meeting\",\n \"label\": \"Quality Meeting\",\n \"name\": \"Quality Meeting\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Meeting"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Quality Review\",\n \"label\": \"Quality Review\",\n \"name\": \"Quality Review\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Quality Action\",\n \"label\": \"Quality Action\",\n \"name\": \"Quality Action\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Review and Action"
+ }
+ ],
+ "category": "Modules",
+ "charts": [],
+ "creation": "2020-03-02 15:49:28.632014",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "icon": "",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Quality",
+ "modified": "2020-03-12 16:30:39.093081",
+ "modified_by": "Administrator",
+ "module": "Quality Management",
+ "name": "Quality",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+ {
+ "is_query_report": 0,
+ "link_to": "Quality Goal",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Quality Procedure",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Quality Inspection",
+ "type": "DocType"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/quality_management/doctype/quality_procedure/quality_procedure.json b/erpnext/quality_management/doctype/quality_procedure/quality_procedure.json
index 472b751..6df116c 100644
--- a/erpnext/quality_management/doctype/quality_procedure/quality_procedure.json
+++ b/erpnext/quality_management/doctype/quality_procedure/quality_procedure.json
@@ -1,4 +1,5 @@
{
+ "actions": [],
"autoname": "format:PRC-{quality_procedure_name}",
"creation": "2018-10-06 00:06:29.756804",
"doctype": "DocType",
@@ -69,10 +70,13 @@
"reqd": 1
}
],
- "modified": "2019-08-05 13:09:29.945082",
+ "is_tree": 1,
+ "links": [],
+ "modified": "2020-03-18 18:09:29.371627",
"modified_by": "Administrator",
"module": "Quality Management",
"name": "Quality Procedure",
+ "nsm_parent_field": "parent_quality_procedure",
"owner": "Administrator",
"permissions": [
{
diff --git a/erpnext/regional/india/utils.py b/erpnext/regional/india/utils.py
index f37b0e4..0282382 100644
--- a/erpnext/regional/india/utils.py
+++ b/erpnext/regional/india/utils.py
@@ -478,7 +478,7 @@
`tabDynamic Link`.parent = `tabAddress`.name and
`tabDynamic Link`.parenttype = 'Address' and
`tabDynamic Link`.link_doctype = 'Company' and
- `tabDynamic Link`.link_name = '{0}'""".format(company))
+ `tabDynamic Link`.link_name = %(company)s""", {"company": company})
return company_gstins
def get_address_details(data, doc, company_address, billing_address):
diff --git a/erpnext/regional/report/datev/datev.js b/erpnext/regional/report/datev/datev.js
index 1e000b6..d8638ab 100644
--- a/erpnext/regional/report/datev/datev.js
+++ b/erpnext/regional/report/datev/datev.js
@@ -21,6 +21,12 @@
"default": frappe.datetime.now_date(),
"fieldtype": "Date",
"reqd": 1
+ },
+ {
+ "fieldname": "voucher_type",
+ "label": __("Voucher Type"),
+ "fieldtype": "Select",
+ "options": "\nSales Invoice\nPurchase Invoice\nPayment Entry\nExpense Claim\nPayroll Entry\nBank Reconciliation\nAsset\nStock Entry"
}
],
onload: function(query_report) {
diff --git a/erpnext/regional/report/datev/datev.py b/erpnext/regional/report/datev/datev.py
index 7ceaf50..a657912 100644
--- a/erpnext/regional/report/datev/datev.py
+++ b/erpnext/regional/report/datev/datev.py
@@ -62,6 +62,7 @@
filters -- dict of filters to be passed to the sql query
as_dict -- return as list of dicts [0,1]
"""
+ filter_by_voucher = 'AND gl.voucher_type = %(voucher_type)s' if filters.get('voucher_type') else ''
gl_entries = frappe.db.sql("""
SELECT
@@ -80,8 +81,10 @@
gl.posting_date as 'Belegdatum',
gl.voucher_no as 'Belegfeld 1',
gl.remarks as 'Buchungstext',
- gl.against_voucher_type as 'Beleginfo - Art 1',
- gl.against_voucher as 'Beleginfo - Inhalt 1'
+ gl.voucher_type as 'Beleginfo - Art 1',
+ gl.voucher_no as 'Beleginfo - Inhalt 1',
+ gl.against_voucher_type as 'Beleginfo - Art 2',
+ gl.against_voucher as 'Beleginfo - Inhalt 2'
FROM `tabGL Entry` gl
@@ -109,7 +112,8 @@
WHERE gl.company = %(company)s
AND DATE(gl.posting_date) >= %(from_date)s
AND DATE(gl.posting_date) <= %(to_date)s
- ORDER BY 'Belegdatum', gl.voucher_no""", filters, as_dict=as_dict, as_utf8=1)
+ {}
+ ORDER BY 'Belegdatum', gl.voucher_no""".format(filter_by_voucher), filters, as_dict=as_dict)
return gl_entries
@@ -160,7 +164,7 @@
and ccl.company = par.company
WHERE par.company = %(company)s
- AND par.parenttype = 'Customer'""", filters, as_dict=1, as_utf8=1)
+ AND par.parenttype = 'Customer'""", filters, as_dict=1)
def get_suppliers(filters):
@@ -217,7 +221,7 @@
and con.is_primary_contact = '1'
WHERE par.company = %(company)s
- AND par.parenttype = 'Supplier'""", filters, as_dict=1, as_utf8=1)
+ AND par.parenttype = 'Supplier'""", filters, as_dict=1)
def get_account_names(filters):
@@ -281,24 +285,24 @@
def get_header(filters, csv_class):
coa = frappe.get_value("Company", filters.get("company"), "chart_of_accounts")
- coa_used = "SKR04" if "SKR04" in coa else ("SKR03" if "SKR03" in coa else "")
+ coa_used = "04" if "SKR04" in coa else ("03" if "SKR03" in coa else "")
header = [
# DATEV format
- # "DTVF" = created by DATEV software,
- # "EXTF" = created by other software
+ # "DTVF" = created by DATEV software,
+ # "EXTF" = created by other software
'"EXTF"',
# version of the DATEV format
- # 141 = 1.41,
- # 510 = 5.10,
- # 720 = 7.20
+ # 141 = 1.41,
+ # 510 = 5.10,
+ # 720 = 7.20
'700',
csv_class.DATA_CATEGORY,
'"%s"' % csv_class.FORMAT_NAME,
# Format version (regarding format name)
csv_class.FORMAT_VERSION,
# Generated on
- datetime.datetime.now().strftime("%Y%m%d%H%M%S"),
+ datetime.datetime.now().strftime("%Y%m%d%H%M%S") + '000',
# Imported on -- stays empty
'',
# Origin. Any two symbols, will be replaced by "SV" on import.
@@ -328,13 +332,21 @@
# R = Diktatkürzel
'',
# S = Buchungstyp
- # 1 = Transaction batch (Finanzbuchführung),
- # 2 = Annual financial statement (Jahresabschluss)
+ # 1 = Transaction batch (Finanzbuchführung),
+ # 2 = Annual financial statement (Jahresabschluss)
'1' if csv_class.DATA_CATEGORY == DataCategory.TRANSACTIONS else '',
# T = Rechnungslegungszweck
- '',
+ # 0 oder leer = vom Rechnungslegungszweck unabhängig
+ # 50 = Handelsrecht
+ # 30 = Steuerrecht
+ # 64 = IFRS
+ # 40 = Kalkulatorik
+ # 11 = Reserviert
+ # 12 = Reserviert
+ '0',
# U = Festschreibung
- '',
+ # TODO: Filter by Accounting Period. In export for closed Accounting Period, this will be "1"
+ '0',
# V = Default currency, for example, "EUR"
'"%s"' % frappe.get_value("Company", filters.get("company"), "default_currency"),
# reserviert
diff --git a/erpnext/regional/report/datev/datev_constants.py b/erpnext/regional/report/datev/datev_constants.py
index a4cd5fc..a059ed3 100644
--- a/erpnext/regional/report/datev/datev_constants.py
+++ b/erpnext/regional/report/datev/datev_constants.py
@@ -498,13 +498,27 @@
},
{
"label": "Beleginfo - Art 1",
- "fieldname": "Beleginfo - Art 2",
- "fieldtype": "Data",
+ "fieldname": "Beleginfo - Art 1",
+ "fieldtype": "Link",
+ "options": "DocType"
},
{
"label": "Beleginfo - Inhalt 1",
+ "fieldname": "Beleginfo - Inhalt 1",
+ "fieldtype": "Dynamic Link",
+ "options": "Beleginfo - Art 1"
+ },
+ {
+ "label": "Beleginfo - Art 2",
+ "fieldname": "Beleginfo - Art 2",
+ "fieldtype": "Link",
+ "options": "DocType"
+ },
+ {
+ "label": "Beleginfo - Inhalt 2",
"fieldname": "Beleginfo - Inhalt 2",
- "fieldtype": "Data",
+ "fieldtype": "Dynamic Link",
+ "options": "Beleginfo - Art 2"
}
]
diff --git a/erpnext/regional/report/gst_itemised_purchase_register/gst_itemised_purchase_register.py b/erpnext/regional/report/gst_itemised_purchase_register/gst_itemised_purchase_register.py
index 3ce2547..b5948f9 100644
--- a/erpnext/regional/report/gst_itemised_purchase_register/gst_itemised_purchase_register.py
+++ b/erpnext/regional/report/gst_itemised_purchase_register/gst_itemised_purchase_register.py
@@ -13,9 +13,9 @@
dict(fieldtype='Data', label='GST Category', fieldname="gst_category", width=120),
dict(fieldtype='Data', label='Export Type', fieldname="export_type", width=120),
dict(fieldtype='Data', label='E-Commerce GSTIN', fieldname="ecommerce_gstin", width=130),
- dict(fieldtype='Data', label='HSN Code', fieldname="hsn_code", width=120),
- dict(fieldtype='Data', label='Supplier Invoice No', fieldname="supplier_invoice_no", width=120),
- dict(fieldtype='Date', label='Supplier Invoice Date', fieldname="supplier_invoice_date", width=100)
+ dict(fieldtype='Data', label='HSN Code', fieldname="gst_hsn_code", width=120),
+ dict(fieldtype='Data', label='Supplier Invoice No', fieldname="bill_no", width=120),
+ dict(fieldtype='Date', label='Supplier Invoice Date', fieldname="bill_date", width=100)
], additional_query_columns=[
'supplier_gstin',
'company_gstin',
diff --git a/erpnext/regional/report/gstr_1/gstr_1.py b/erpnext/regional/report/gstr_1/gstr_1.py
index 2c5ab7c..fd1cc58 100644
--- a/erpnext/regional/report/gstr_1/gstr_1.py
+++ b/erpnext/regional/report/gstr_1/gstr_1.py
@@ -54,8 +54,8 @@
return self.columns, self.data
def get_data(self):
- if self.filters.get("type_of_business") == "B2C Small":
- self.get_b2cs_data()
+ if self.filters.get("type_of_business") in ("B2C Small", "B2C Large"):
+ self.get_b2c_data()
else:
for inv, items_based_on_rate in self.items_based_on_tax_rate.items():
invoice_details = self.invoices.get(inv)
@@ -69,7 +69,7 @@
if taxable_value:
self.data.append(row)
- def get_b2cs_data(self):
+ def get_b2c_data(self):
b2cs_output = {}
for inv, items_based_on_rate in self.items_based_on_tax_rate.items():
@@ -84,7 +84,10 @@
"rate": "",
"taxable_value": 0,
"cess_amount": 0,
- "type": ""
+ "type": "",
+ "invoice_number": invoice_details.get("invoice_number"),
+ "posting_date": invoice_details.get("posting_date"),
+ "invoice_value": invoice_details.get("base_grand_total"),
})
row = b2cs_output.get((rate, place_of_supply, ecommerce_gstin))
@@ -164,7 +167,7 @@
frappe.throw(_("Please set B2C Limit in GST Settings."))
if self.filters.get("type_of_business") == "B2C Large":
- conditions += """ and SUBSTR(place_of_supply, 1, 2) != SUBSTR(company_gstin, 1, 2)
+ conditions += """ and ifnull(SUBSTR(place_of_supply, 1, 2),'') != ifnull(SUBSTR(company_gstin, 1, 2),'')
and grand_total > {0} and is_return != 1 and gst_category ='Unregistered' """.format(flt(b2c_limit))
elif self.filters.get("type_of_business") == "B2C Small":
@@ -581,6 +584,11 @@
if not gst_in: continue
for number, invoice in iteritems(res[gst_in]):
+ if not invoice[0]["place_of_supply"]:
+ frappe.throw(_("""{0} not entered in Invoice {1}.
+ Please update and try again""").format(frappe.bold("Place Of Supply"),
+ frappe.bold(invoice[0]['invoice_number'])))
+
inv_item = get_basic_invoice_detail(invoice[0])
inv_item["pos"] = "%02d" % int(invoice[0]["place_of_supply"].split('-')[0])
inv_item["rchrg"] = invoice[0]["reverse_charge"]
@@ -606,6 +614,9 @@
out = []
for d in data:
+ if not d.get("place_of_supply"):
+ frappe.throw(_("""{0} not entered in some invoices.
+ Please update and try again""").format(frappe.bold("Place Of Supply")))
pos = d.get('place_of_supply').split('-')[0]
tax_details = {}
@@ -642,6 +653,10 @@
def get_b2cl_json(res, gstin):
out = []
for pos in res:
+ if not pos:
+ frappe.throw(_("""{0} not entered in some invoices.
+ Please update and try again""").format(frappe.bold("Place Of Supply")))
+
b2cl_item, inv = {"pos": "%02d" % int(pos.split('-')[0]), "inv": []}, []
for row in res[pos]:
diff --git a/erpnext/regional/turkey/setup.py b/erpnext/regional/turkey/setup.py
new file mode 100644
index 0000000..ebf3b2b
--- /dev/null
+++ b/erpnext/regional/turkey/setup.py
@@ -0,0 +1,4 @@
+from __future__ import unicode_literals
+
+def setup(company=None, patch=True):
+ pass
\ No newline at end of file
diff --git a/erpnext/selling/desk_page/retail/retail.json b/erpnext/selling/desk_page/retail/retail.json
new file mode 100644
index 0000000..9838462
--- /dev/null
+++ b/erpnext/selling/desk_page/retail/retail.json
@@ -0,0 +1,28 @@
+{
+ "cards": [
+ {
+ "links": "[\n {\n \"description\": \"Setup default values for POS Invoices\",\n \"label\": \"Point-of-Sale Profile\",\n \"name\": \"POS Profile\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"POS Profile\"\n ],\n \"description\": \"Point of Sale\",\n \"label\": \"POS\",\n \"name\": \"pos\",\n \"onboard\": 1,\n \"type\": \"page\"\n },\n {\n \"description\": \"Cashier Closing\",\n \"label\": \"Cashier Closing\",\n \"name\": \"Cashier Closing\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Setup mode of POS (Online / Offline)\",\n \"label\": \"POS Settings\",\n \"name\": \"POS Settings\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"To make Customer based incentive schemes.\",\n \"label\": \"Loyalty Program\",\n \"name\": \"Loyalty Program\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"To view logs of Loyalty Points assigned to a Customer.\",\n \"label\": \"Loyalty Point Entry\",\n \"name\": \"Loyalty Point Entry\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Retail Operations"
+ }
+ ],
+ "category": "Domains",
+ "charts": [],
+ "creation": "2020-03-02 17:18:32.505616",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Retail",
+ "modified": "2020-03-12 16:30:36.154297",
+ "modified_by": "Administrator",
+ "module": "Selling",
+ "name": "Retail",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "restrict_to_domain": "Retail",
+ "shortcuts": []
+}
\ No newline at end of file
diff --git a/erpnext/selling/desk_page/selling/selling.json b/erpnext/selling/desk_page/selling/selling.json
new file mode 100644
index 0000000..7a0111c
--- /dev/null
+++ b/erpnext/selling/desk_page/selling/selling.json
@@ -0,0 +1,85 @@
+{
+ "cards": [
+ {
+ "links": "[\n {\n \"description\": \"All Products or Services.\",\n \"label\": \"Item\",\n \"name\": \"Item\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\",\n \"Price List\"\n ],\n \"description\": \"Multiple Item prices.\",\n \"label\": \"Item Price\",\n \"name\": \"Item Price\",\n \"onboard\": 1,\n \"route\": \"#Report/Item Price\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Price List master.\",\n \"label\": \"Price List\",\n \"name\": \"Price List\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Tree of Item Groups.\",\n \"icon\": \"fa fa-sitemap\",\n \"label\": \"Item Group\",\n \"link\": \"Tree/Item Group\",\n \"name\": \"Item Group\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"description\": \"Bundle items at time of sale.\",\n \"label\": \"Product Bundle\",\n \"name\": \"Product Bundle\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Rules for applying different promotional schemes.\",\n \"label\": \"Promotional Scheme\",\n \"name\": \"Promotional Scheme\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"description\": \"Rules for applying pricing and discount.\",\n \"label\": \"Pricing Rule\",\n \"name\": \"Pricing Rule\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Rules for adding shipping costs.\",\n \"label\": \"Shipping Rule\",\n \"name\": \"Shipping Rule\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Define coupon codes.\",\n \"label\": \"Coupon Code\",\n \"name\": \"Coupon Code\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Items and Pricing"
+ },
+ {
+ "icon": "fa fa-cog",
+ "links": "[\n {\n \"description\": \"Default settings for selling transactions.\",\n \"label\": \"Selling Settings\",\n \"name\": \"Selling Settings\",\n \"settings\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Template of terms or contract.\",\n \"label\": \"Terms and Conditions Template\",\n \"name\": \"Terms and Conditions\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Tax template for selling transactions.\",\n \"label\": \"Sales Taxes and Charges Template\",\n \"name\": \"Sales Taxes and Charges Template\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Track Leads by Lead Source.\",\n \"label\": \"Lead Source\",\n \"name\": \"Lead Source\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Manage Customer Group Tree.\",\n \"icon\": \"fa fa-sitemap\",\n \"label\": \"Customer Group\",\n \"link\": \"Tree/Customer Group\",\n \"name\": \"Customer Group\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"All Contacts.\",\n \"label\": \"Contact\",\n \"name\": \"Contact\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"All Addresses.\",\n \"label\": \"Address\",\n \"name\": \"Address\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Manage Territory Tree.\",\n \"icon\": \"fa fa-sitemap\",\n \"label\": \"Territory\",\n \"link\": \"Tree/Territory\",\n \"name\": \"Territory\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Sales campaigns.\",\n \"label\": \"Campaign\",\n \"name\": \"Campaign\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Settings"
+ },
+ {
+ "icon": "fa fa-list",
+ "links": "[\n {\n \"dependencies\": [\n \"Lead\"\n ],\n \"doctype\": \"Lead\",\n \"is_query_report\": true,\n \"label\": \"Lead Details\",\n \"name\": \"Lead Details\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Address\"\n ],\n \"doctype\": \"Address\",\n \"is_query_report\": true,\n \"label\": \"Customer Addresses And Contacts\",\n \"name\": \"Address And Contacts\",\n \"route_options\": {\n \"party_type\": \"Customer\"\n },\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"BOM\"\n ],\n \"doctype\": \"BOM\",\n \"is_query_report\": true,\n \"label\": \"BOM Search\",\n \"name\": \"BOM Search\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"doctype\": \"Item\",\n \"is_query_report\": true,\n \"label\": \"Available Stock for Packing Items\",\n \"name\": \"Available Stock for Packing Items\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Order\"\n ],\n \"doctype\": \"Sales Order\",\n \"is_query_report\": true,\n \"label\": \"Pending SO Items For Purchase Request\",\n \"name\": \"Pending SO Items For Purchase Request\",\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 \"Customer\"\n ],\n \"doctype\": \"Customer\",\n \"is_query_report\": true,\n \"label\": \"Customers Without Any Sales Transactions\",\n \"name\": \"Customers Without Any Sales Transactions\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Customer\"\n ],\n \"doctype\": \"Customer\",\n \"is_query_report\": true,\n \"label\": \"Sales Partners Commission\",\n \"name\": \"Sales Partners Commission\",\n \"type\": \"report\"\n }\n]",
+ "title": "Other Reports"
+ },
+ {
+ "icon": "fa fa-star",
+ "links": "[\n {\n \"description\": \"Customer Database.\",\n \"label\": \"Customer\",\n \"name\": \"Customer\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\",\n \"Customer\"\n ],\n \"description\": \"Quotes to Leads or Customers.\",\n \"label\": \"Quotation\",\n \"name\": \"Quotation\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\",\n \"Customer\"\n ],\n \"description\": \"Confirmed orders from Customers.\",\n \"label\": \"Sales Order\",\n \"name\": \"Sales Order\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\",\n \"Customer\"\n ],\n \"description\": \"Invoices for Costumers.\",\n \"label\": \"Sales Invoice\",\n \"name\": \"Sales Invoice\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\",\n \"Customer\"\n ],\n \"description\": \"Blanket Orders from Costumers.\",\n \"label\": \"Blanket Order\",\n \"name\": \"Blanket Order\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"description\": \"Manage Sales Partners.\",\n \"label\": \"Sales Partner\",\n \"name\": \"Sales Partner\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\",\n \"Customer\"\n ],\n \"description\": \"Manage Sales Person Tree.\",\n \"icon\": \"fa fa-sitemap\",\n \"label\": \"Sales Person\",\n \"link\": \"Tree/Sales Person\",\n \"name\": \"Sales Person\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Sales"
+ },
+ {
+ "icon": "fa fa-table",
+ "links": "[\n {\n \"dependencies\": [\n \"Sales Order\"\n ],\n \"doctype\": \"Sales Order\",\n \"is_query_report\": true,\n \"label\": \"Sales Analytics\",\n \"name\": \"Sales Analytics\",\n \"onboard\": 1,\n \"type\": \"report\"\n },\n {\n \"icon\": \"fa fa-bar-chart\",\n \"label\": \"Sales Funnel\",\n \"name\": \"sales-funnel\",\n \"onboard\": 1,\n \"type\": \"page\"\n },\n {\n \"dependencies\": [\n \"Customer\"\n ],\n \"doctype\": \"Customer\",\n \"icon\": \"fa fa-bar-chart\",\n \"is_query_report\": true,\n \"label\": \"Customer Acquisition and Loyalty\",\n \"name\": \"Customer Acquisition and Loyalty\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Order\"\n ],\n \"doctype\": \"Sales Order\",\n \"is_query_report\": true,\n \"label\": \"Inactive Customers\",\n \"name\": \"Inactive Customers\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Order\"\n ],\n \"doctype\": \"Sales Order\",\n \"is_query_report\": true,\n \"label\": \"Ordered Items To Be Delivered\",\n \"name\": \"Ordered Items To Be Delivered\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Order\"\n ],\n \"doctype\": \"Sales Order\",\n \"is_query_report\": true,\n \"label\": \"Sales Person-wise Transaction Summary\",\n \"name\": \"Sales Person-wise Transaction Summary\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"doctype\": \"Item\",\n \"is_query_report\": true,\n \"label\": \"Item-wise Sales History\",\n \"name\": \"Item-wise Sales History\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Quotation\"\n ],\n \"doctype\": \"Quotation\",\n \"is_query_report\": true,\n \"label\": \"Quotation Trends\",\n \"name\": \"Quotation Trends\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Sales Order\"\n ],\n \"doctype\": \"Sales Order\",\n \"is_query_report\": true,\n \"label\": \"Sales Order Trends\",\n \"name\": \"Sales Order Trends\",\n \"type\": \"report\"\n }\n]",
+ "title": "Key Reports"
+ }
+ ],
+ "category": "Modules",
+ "charts": [
+ {
+ "chart_name": "Income",
+ "label": "Income",
+ "size": "Full"
+ }
+ ],
+ "creation": "2020-01-28 11:49:12.092882",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "icon": "",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Selling",
+ "modified": "2020-03-12 16:30:38.207013",
+ "modified_by": "Administrator",
+ "module": "Selling",
+ "name": "Selling",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+ {
+ "is_query_report": 0,
+ "link_to": "Sales Invoice",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Sales Order",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Quotation",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Delivery Note",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Accounts Receivable",
+ "type": "Report"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Sales Register",
+ "type": "Report"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py
index 9261289..02667e8 100644
--- a/erpnext/selling/doctype/customer/customer.py
+++ b/erpnext/selling/doctype/customer/customer.py
@@ -76,7 +76,8 @@
def validate_default_bank_account(self):
if self.default_bank_account:
is_company_account = frappe.db.get_value('Bank Account', self.default_bank_account, 'is_company_account')
- frappe.throw(_("{0} is not a company bank account").format(frappe.bold(self.default_bank_account)))
+ if not is_company_account:
+ frappe.throw(_("{0} is not a company bank account").format(frappe.bold(self.default_bank_account)))
def on_update(self):
self.validate_name_with_customer_group()
@@ -267,9 +268,11 @@
target_doc.run_method("set_other_charges")
target_doc.run_method("calculate_taxes_and_totals")
- price_list = frappe.get_value("Customer", source_name, 'default_price_list')
+ price_list, currency = frappe.db.get_value("Customer", {'name': source_name}, ['default_price_list', 'default_currency'])
if price_list:
target_doc.selling_price_list = price_list
+ if currency:
+ target_doc.currency = currency
return target_doc
diff --git a/erpnext/selling/doctype/quotation_item/quotation_item.json b/erpnext/selling/doctype/quotation_item/quotation_item.json
index a299b88..3ff5555 100644
--- a/erpnext/selling/doctype/quotation_item/quotation_item.json
+++ b/erpnext/selling/doctype/quotation_item/quotation_item.json
@@ -1,4 +1,5 @@
{
+ "actions": [],
"creation": "2013-03-07 11:42:57",
"doctype": "DocType",
"document_type": "Document",
@@ -163,6 +164,7 @@
"oldfieldname": "stock_uom",
"oldfieldtype": "Data",
"options": "UOM",
+ "print_hide": 1,
"print_width": "100px",
"read_only": 1,
"width": "100px"
@@ -176,7 +178,6 @@
"fieldtype": "Link",
"label": "UOM",
"options": "UOM",
- "print_hide": 1,
"reqd": 1
},
{
@@ -382,6 +383,7 @@
"read_only": 1
},
{
+ "default": "0",
"fieldname": "is_free_item",
"fieldtype": "Check",
"label": "Is Free Item",
@@ -517,6 +519,7 @@
},
{
"allow_on_submit": 1,
+ "default": "0",
"fieldname": "page_break",
"fieldtype": "Check",
"label": "Page Break",
@@ -574,7 +577,8 @@
],
"idx": 1,
"istable": 1,
- "modified": "2019-05-01 17:39:14.228141",
+ "links": [],
+ "modified": "2020-03-05 14:18:58.783751",
"modified_by": "Administrator",
"module": "Selling",
"name": "Quotation Item",
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index fa765df..61aa608 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -664,7 +664,8 @@
reference_doctype: me.frm.doctype,
reference_name: me.frm.docname,
content: __('Reason for hold: ')+data.reason_for_hold,
- comment_email: frappe.session.user
+ comment_email: frappe.session.user,
+ comment_by: frappe.session.user_fullname
},
callback: function(r) {
if(!r.exc) {
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index e7cbf40..ef2d19a 100755
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -496,7 +496,7 @@
def get_requested_item_qty(sales_order):
return frappe._dict(frappe.db.sql("""
- select sales_order_item, sum(stock_qty)
+ select sales_order_item, sum(qty)
from `tabMaterial Request Item`
where docstatus = 1
and sales_order = %s
@@ -507,16 +507,12 @@
def make_material_request(source_name, target_doc=None):
requested_item_qty = get_requested_item_qty(source_name)
- def postprocess(source, doc):
- doc.material_request_type = "Purchase"
-
def update_item(source, target, source_parent):
# qty is for packed items, because packed items don't have stock_qty field
- qty = source.get("stock_qty") or source.get("qty")
+ qty = source.get("qty")
target.project = source_parent.project
target.qty = qty - requested_item_qty.get(source.name, 0)
- target.conversion_factor = 1
- target.stock_qty = qty - requested_item_qty.get(source.name, 0)
+ target.stock_qty = flt(target.qty) * flt(target.conversion_factor)
doc = get_mapped_doc("Sales Order", source_name, {
"Sales Order": {
@@ -537,14 +533,12 @@
"doctype": "Material Request Item",
"field_map": {
"name": "sales_order_item",
- "parent": "sales_order",
- "stock_uom": "uom",
- "stock_qty": "qty"
+ "parent": "sales_order"
},
"condition": lambda doc: not frappe.db.exists('Product Bundle', doc.item_code) and doc.stock_qty > requested_item_qty.get(doc.name, 0),
"postprocess": update_item
}
- }, target_doc, postprocess)
+ }, target_doc)
return doc
@@ -641,7 +635,6 @@
target.set_advances()
def set_missing_values(source, target):
- target.is_pos = 0
target.ignore_pricing_rule = 1
target.flags.ignore_permissions = True
target.run_method("set_missing_values")
diff --git a/erpnext/selling/doctype/sales_order_item/sales_order_item.json b/erpnext/selling/doctype/sales_order_item/sales_order_item.json
index 70e534a..73f233c 100644
--- a/erpnext/selling/doctype/sales_order_item/sales_order_item.json
+++ b/erpnext/selling/doctype/sales_order_item/sales_order_item.json
@@ -212,7 +212,6 @@
"fieldtype": "Link",
"label": "UOM",
"options": "UOM",
- "print_hide": 1,
"reqd": 1
},
{
@@ -770,7 +769,7 @@
"idx": 1,
"istable": 1,
"links": [],
- "modified": "2020-01-13 12:29:03.103797",
+ "modified": "2020-03-05 14:20:28.085117",
"modified_by": "Administrator",
"module": "Selling",
"name": "Sales Order Item",
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 3425f8f..17136e0 100644
--- a/erpnext/selling/page/point_of_sale/point_of_sale.py
+++ b/erpnext/selling/page/point_of_sale/point_of_sale.py
@@ -64,30 +64,40 @@
for d in item_prices_data:
item_prices[d.item_code] = d
-
+ # prepare filter for bin query
+ bin_filters = {'item_code': ['in', items]}
+ if warehouse:
+ bin_filters['warehouse'] = warehouse
if display_items_in_stock:
- filters = {'actual_qty': [">", 0], 'item_code': ['in', items]}
+ bin_filters['actual_qty'] = [">", 0]
- if warehouse:
- filters['warehouse'] = warehouse
+ # query item bin
+ bin_data = frappe.get_all(
+ 'Bin', fields=['item_code', 'sum(actual_qty) as actual_qty'],
+ filters=bin_filters, group_by='item_code'
+ )
- bin_data = frappe._dict(
- frappe.get_all("Bin", fields = ["item_code", "sum(actual_qty) as actual_qty"],
- filters = filters, group_by = "item_code")
- )
+ # convert list of dict into dict as {item_code: actual_qty}
+ bin_dict = {}
+ for b in bin_data:
+ bin_dict[b.get('item_code')] = b.get('actual_qty')
for item in items_data:
- row = {}
+ item_code = item.item_code
+ item_price = item_prices.get(item_code) or {}
+ item_stock_qty = bin_dict.get(item_code)
- row.update(item)
- item_price = item_prices.get(item.item_code) or {}
- row.update({
- 'price_list_rate': item_price.get('price_list_rate'),
- 'currency': item_price.get('currency'),
- 'actual_qty': bin_data.get('actual_qty')
- })
-
- result.append(row)
+ if display_items_in_stock and not item_stock_qty:
+ pass
+ else:
+ row = {}
+ row.update(item)
+ row.update({
+ 'price_list_rate': item_price.get('price_list_rate'),
+ 'currency': item_price.get('currency'),
+ 'actual_qty': item_stock_qty,
+ })
+ result.append(row)
res = {
'items': result
diff --git a/erpnext/selling/report/item_wise_sales_history/item_wise_sales_history.py b/erpnext/selling/report/item_wise_sales_history/item_wise_sales_history.py
index 1fc3663..405004e 100644
--- a/erpnext/selling/report/item_wise_sales_history/item_wise_sales_history.py
+++ b/erpnext/selling/report/item_wise_sales_history/item_wise_sales_history.py
@@ -121,8 +121,8 @@
},
{
"label": _("Billed Amount"),
- "fieldname": "rate",
- "options": "billed_amount",
+ "fieldtype": "currency",
+ "fieldname": "billed_amount",
"width": 120
},
{
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index 8278745..af10069 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -413,15 +413,20 @@
*/
set_batch_number: function(cdt, cdn) {
const doc = frappe.get_doc(cdt, cdn);
- if (doc && doc.has_batch_no) {
+ if (doc && doc.has_batch_no && doc.warehouse) {
this._set_batch_number(doc);
}
},
_set_batch_number: function(doc) {
+ let args = {'item_code': doc.item_code, 'warehouse': doc.warehouse, 'qty': flt(doc.qty) * flt(doc.conversion_factor)};
+ if (doc.has_serial_no && doc.serial_no) {
+ args['serial_no'] = doc.serial_no
+ }
+
return frappe.call({
method: 'erpnext.stock.doctype.batch.batch.get_batch_no',
- args: {'item_code': doc.item_code, 'warehouse': doc.warehouse, 'qty': flt(doc.qty) * flt(doc.conversion_factor)},
+ args: args,
callback: function(r) {
if(r.message) {
frappe.model.set_value(doc.doctype, doc.name, 'batch_no', r.message);
diff --git a/erpnext/setup/desk_page/erpnext_settings/erpnext_settings.json b/erpnext/setup/desk_page/erpnext_settings/erpnext_settings.json
new file mode 100644
index 0000000..ac0a4b2
--- /dev/null
+++ b/erpnext/setup/desk_page/erpnext_settings/erpnext_settings.json
@@ -0,0 +1,112 @@
+{
+ "cards": [],
+ "category": "Modules",
+ "charts": [],
+ "creation": "2020-03-12 14:47:51.166455",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends": "Settings",
+ "extends_another_page": 1,
+ "idx": 0,
+ "is_standard": 1,
+ "label": "ERPNext Settings",
+ "modified": "2020-03-12 18:03:17.126782",
+ "modified_by": "Administrator",
+ "module": "Setup",
+ "name": "ERPNext Settings",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+ {
+ "icon": "octicon octicon-rocket",
+ "is_query_report": 0,
+ "link_to": "Projects Settings",
+ "type": "DocType"
+ },
+ {
+ "icon": "octicon octicon-repo",
+ "is_query_report": 0,
+ "link_to": "Accounts Settings",
+ "type": "DocType"
+ },
+ {
+ "icon": "octicon octicon-package",
+ "is_query_report": 0,
+ "link_to": "Stock Settings",
+ "type": "DocType"
+ },
+ {
+ "icon": "octicon octicon-organization",
+ "is_query_report": 0,
+ "link_to": "HR Settings",
+ "type": "DocType"
+ },
+ {
+ "icon": "octicon octicon-tag",
+ "is_query_report": 0,
+ "link_to": "Selling Settings",
+ "type": "DocType"
+ },
+ {
+ "icon": "octicon octicon-briefcase",
+ "is_query_report": 0,
+ "link_to": "Buying Settings",
+ "type": "DocType"
+ },
+ {
+ "icon": "fa fa-life-ring",
+ "is_query_report": 0,
+ "link_to": "Support Settings",
+ "type": "DocType"
+ },
+ {
+ "icon": "fa fa-shopping-cart",
+ "is_query_report": 0,
+ "link_to": "Shopping Cart Settings",
+ "type": "DocType"
+ },
+ {
+ "icon": "fa fa-globe",
+ "is_query_report": 0,
+ "link_to": "Portal Settings",
+ "type": "DocType"
+ },
+ {
+ "icon": "octicon octicon-tools",
+ "is_query_report": 0,
+ "link_to": "Manufacturing Settings",
+ "restrict_to_domain": "Manufacturing",
+ "type": "DocType"
+ },
+ {
+ "icon": "octicon octicon-mortar-board",
+ "is_query_report": 0,
+ "link_to": "Education Settings",
+ "restrict_to_domain": "Education",
+ "type": "DocType"
+ },
+ {
+ "icon": "fa fa-bed",
+ "is_query_report": 0,
+ "link_to": "Hotel Settings",
+ "restrict_to_domain": "Hospitality",
+ "type": "DocType"
+ },
+ {
+ "icon": "fa fa-heartbeat",
+ "is_query_report": 0,
+ "link_to": "Healthcare Settings",
+ "restrict_to_domain": "Healthcare",
+ "type": "DocType"
+ },
+ {
+ "icon": "fa fa-cog",
+ "is_query_report": 0,
+ "link_to": "Domain Settings",
+ "type": "DocType"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/setup/desk_page/getting_started/getting_started.json b/erpnext/setup/desk_page/getting_started/getting_started.json
new file mode 100644
index 0000000..b045b5d
--- /dev/null
+++ b/erpnext/setup/desk_page/getting_started/getting_started.json
@@ -0,0 +1,96 @@
+{
+ "cards": [
+ {
+ "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]",
+ "title": "Healthcare"
+ },
+ {
+ "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]",
+ "title": "Agriculture"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Warehouse\",\n \"name\": \"Warehouse\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Brand\",\n \"name\": \"Brand\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Unit of Measure (UOM)\",\n \"name\": \"UOM\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Stock Reconciliation\",\n \"name\": \"Stock Reconciliation\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n }\n]",
+ "title": "Stock"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Employee\",\n \"name\": \"Employee\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Employee\"\n ],\n \"hide_count\": true,\n \"label\": \"Employee Attendance Tool\",\n \"name\": \"Employee Attendance Tool\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Salary Structure\",\n \"name\": \"Salary Structure\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n }\n]",
+ "title": "Human Resources"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Database of potential customers.\",\n \"label\": \"Lead\",\n \"name\": \"Lead\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Manage Customer Group Tree.\",\n \"icon\": \"fa fa-sitemap\",\n \"label\": \"Customer Group\",\n \"link\": \"Tree/Customer Group\",\n \"name\": \"Customer Group\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Manage Territory Tree.\",\n \"icon\": \"fa fa-sitemap\",\n \"label\": \"Territory\",\n \"link\": \"Tree/Territory\",\n \"name\": \"Territory\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n }\n]",
+ "title": "CRM"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Item\",\n \"name\": \"Item\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Customer database.\",\n \"label\": \"Customer\",\n \"name\": \"Customer\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Supplier database.\",\n \"label\": \"Supplier\",\n \"name\": \"Supplier\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Company (not Customer or Supplier) master.\",\n \"label\": \"Company\",\n \"name\": \"Company\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Tree of financial accounts.\",\n \"icon\": \"fa fa-sitemap\",\n \"label\": \"Chart of Accounts\",\n \"name\": \"Account\",\n \"onboard\": 1,\n \"route\": \"#Tree/Account\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Create Opening Sales and Purchase Invoices\",\n \"label\": \"Opening Invoice Creation Tool\",\n \"name\": \"Opening Invoice Creation Tool\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n }\n]",
+ "title": "Accounting"
+ },
+ {
+ "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]",
+ "title": "Education"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Import Data from CSV / Excel files.\",\n \"icon\": \"octicon octicon-cloud-upload\",\n \"label\": \"Import Data\",\n \"name\": \"Data Import\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Import Chart Of Accounts from CSV / Excel files\",\n \"labe\": \"Chart Of Accounts Importer\",\n \"label\": \"Chart of Accounts Importer\",\n \"name\": \"Chart of Accounts Importer\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Letter Heads for print templates.\",\n \"label\": \"Letter Head\",\n \"name\": \"Letter Head\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Add / Manage Email Accounts.\",\n \"label\": \"Email Account\",\n \"name\": \"Email Account\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n }\n]",
+ "title": "Data Import and Settings"
+ },
+ {
+ "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]",
+ "title": "Non Profit"
+ }
+ ],
+ "category": "Modules",
+ "charts": [
+ {
+ "chart_name": "Bank Balance",
+ "label": "Bank Balance"
+ }
+ ],
+ "creation": "2020-01-23 13:46:38.833076",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "icon": "",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Getting Started",
+ "modified": "2020-03-23 11:20:49.161823",
+ "modified_by": "Administrator",
+ "module": "Setup",
+ "name": "Getting Started",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 1,
+ "shortcuts": [
+ {
+ "is_query_report": 0,
+ "link_to": "Item",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Customer",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Supplier",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Sales Invoice",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "dashboard",
+ "type": "Page"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "leaderboard",
+ "type": "Page"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/company/company.json b/erpnext/setup/doctype/company/company.json
index dd602ec..020a93f 100644
--- a/erpnext/setup/doctype/company/company.json
+++ b/erpnext/setup/doctype/company/company.json
@@ -1,4 +1,5 @@
{
+ "actions": [],
"allow_import": 1,
"allow_rename": 1,
"autoname": "field:company_name",
@@ -156,6 +157,7 @@
{
"fieldname": "parent_company",
"fieldtype": "Link",
+ "ignore_user_permissions": 1,
"in_list_view": 1,
"label": "Parent Company",
"options": "Company"
@@ -276,6 +278,7 @@
"depends_on": "eval:doc.create_chart_of_accounts_based_on===\"Existing Company\"",
"fieldname": "existing_company",
"fieldtype": "Link",
+ "ignore_user_permissions": 1,
"label": "Existing Company ",
"no_copy": 1,
"options": "Company"
@@ -725,10 +728,13 @@
"icon": "fa fa-building",
"idx": 1,
"image_field": "company_logo",
- "modified": "2019-11-22 13:04:47.470768",
+ "is_tree": 1,
+ "links": [],
+ "modified": "2020-03-21 18:09:53.534211",
"modified_by": "Administrator",
"module": "Setup",
"name": "Company",
+ "nsm_parent_field": "parent_company",
"owner": "Administrator",
"permissions": [
{
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index 6aa2c04..956deef 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -424,8 +424,13 @@
company_doc = frappe.get_doc("Company", company)
path = frappe.get_app_path('erpnext', 'regional', frappe.scrub(company_doc.country))
if os.path.exists(path.encode("utf-8")):
- frappe.get_attr("erpnext.regional.{0}.setup.setup"
- .format(frappe.scrub(company_doc.country)))(company_doc, False)
+ try:
+ module_name = "erpnext.regional.{0}.setup.setup".format(frappe.scrub(company_doc.country))
+ frappe.get_attr(module_name)(company_doc, False)
+ except Exception as e:
+ frappe.log_error(str(e), frappe.get_traceback())
+ frappe.throw(_("Failed to setup defaults for country {0}. Please contact support@erpnext.com").format(frappe.bold(company_doc.country)))
+
def update_company_current_month_sales(company):
current_month_year = formatdate(today(), "MM-yyyy")
diff --git a/erpnext/setup/doctype/company/test_company.py b/erpnext/setup/doctype/company/test_company.py
index af30abd..b37cc17 100644
--- a/erpnext/setup/doctype/company/test_company.py
+++ b/erpnext/setup/doctype/company/test_company.py
@@ -9,7 +9,7 @@
from frappe.utils import random_string
from erpnext.accounts.doctype.account.chart_of_accounts.chart_of_accounts import get_charts_for_country
-test_ignore = ["Account", "Cost Center", "Payment Terms Template", "Salary Component"]
+test_ignore = ["Account", "Cost Center", "Payment Terms Template", "Salary Component", "Warehouse"]
test_dependencies = ["Fiscal Year"]
test_records = frappe.get_test_records('Company')
diff --git a/erpnext/setup/doctype/customer_group/customer_group.json b/erpnext/setup/doctype/customer_group/customer_group.json
index 7fa242a..10f9bd0 100644
--- a/erpnext/setup/doctype/customer_group/customer_group.json
+++ b/erpnext/setup/doctype/customer_group/customer_group.json
@@ -137,11 +137,13 @@
],
"icon": "fa fa-sitemap",
"idx": 1,
+ "is_tree": 1,
"links": [],
- "modified": "2020-01-28 13:49:23.961708",
+ "modified": "2020-03-18 18:10:13.048492",
"modified_by": "Administrator",
"module": "Setup",
"name": "Customer Group",
+ "nsm_parent_field": "parent_customer_group",
"owner": "Administrator",
"permissions": [
{
diff --git a/erpnext/setup/doctype/item_group/item_group.json b/erpnext/setup/doctype/item_group/item_group.json
index 36e3e68..004421d 100644
--- a/erpnext/setup/doctype/item_group/item_group.json
+++ b/erpnext/setup/doctype/item_group/item_group.json
@@ -185,13 +185,15 @@
"icon": "fa fa-sitemap",
"idx": 1,
"image_field": "image",
+ "is_tree": 1,
"links": [],
"max_attachments": 3,
- "modified": "2020-01-28 13:51:05.456014",
+ "modified": "2020-03-18 18:10:34.383363",
"modified_by": "Administrator",
"module": "Setup",
"name": "Item Group",
"name_case": "Title Case",
+ "nsm_parent_field": "parent_item_group",
"owner": "Administrator",
"permissions": [
{
diff --git a/erpnext/setup/doctype/sales_person/sales_person.json b/erpnext/setup/doctype/sales_person/sales_person.json
index b05365d..e526ac4 100644
--- a/erpnext/setup/doctype/sales_person/sales_person.json
+++ b/erpnext/setup/doctype/sales_person/sales_person.json
@@ -143,11 +143,13 @@
],
"icon": "icon-user",
"idx": 1,
+ "is_tree": 1,
"links": [],
- "modified": "2020-01-28 13:50:31.891050",
+ "modified": "2020-03-18 18:11:13.968024",
"modified_by": "Administrator",
"module": "Setup",
"name": "Sales Person",
+ "nsm_parent_field": "parent_sales_person",
"owner": "Administrator",
"permissions": [
{
diff --git a/erpnext/setup/doctype/supplier_group/supplier_group.json b/erpnext/setup/doctype/supplier_group/supplier_group.json
index 5c41334..9119bb9 100644
--- a/erpnext/setup/doctype/supplier_group/supplier_group.json
+++ b/erpnext/setup/doctype/supplier_group/supplier_group.json
@@ -1,481 +1,163 @@
{
- "allow_copy": 0,
- "allow_guest_to_view": 0,
+ "actions": [],
"allow_import": 1,
"allow_rename": 1,
"autoname": "field:supplier_group_name",
- "beta": 0,
"creation": "2013-01-10 16:34:24",
- "custom": 0,
- "docstatus": 0,
"doctype": "DocType",
"document_type": "Setup",
- "editable_grid": 0,
+ "field_order": [
+ "supplier_group_name",
+ "parent_supplier_group",
+ "is_group",
+ "section_credit_limit",
+ "payment_terms",
+ "default_payable_account",
+ "accounts",
+ "lft",
+ "rgt",
+ "old_parent"
+ ],
"fields": [
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
"fieldname": "supplier_group_name",
"fieldtype": "Data",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 0,
- "in_standard_filter": 0,
"label": "Supplier Group Name",
- "length": 0,
- "no_copy": 0,
"oldfieldname": "supplier_type",
"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": 1
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
"bold": 1,
- "collapsible": 0,
- "columns": 0,
"fieldname": "parent_supplier_group",
"fieldtype": "Link",
- "hidden": 0,
"ignore_user_permissions": 1,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
"in_list_view": 1,
- "in_standard_filter": 0,
"label": "Parent Supplier Group",
- "length": 0,
- "no_copy": 0,
- "options": "Supplier Group",
- "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": "Supplier Group"
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
"bold": 1,
- "collapsible": 0,
- "columns": 0,
+ "default": "0",
"fieldname": "is_group",
"fieldtype": "Check",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
"in_list_view": 1,
- "in_standard_filter": 0,
- "label": "Is Group",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "translatable": 0,
- "unique": 0
+ "label": "Is Group"
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
"collapsible": 1,
- "columns": 0,
"fieldname": "section_credit_limit",
"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": "Credit Limit",
- "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
+ "label": "Credit Limit"
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
"fieldname": "payment_terms",
"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 Payment Terms Template",
- "length": 0,
- "no_copy": 0,
- "options": "Payment Terms Template",
- "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": "Payment Terms Template"
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
"fieldname": "default_payable_account",
"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": "Default Payable Account",
- "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
+ "label": "Default Payable Account"
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
"depends_on": "eval:!doc.__islocal",
"description": "Mention if non-standard receivable account applicable",
"fieldname": "accounts",
"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": "Accounts",
- "length": 0,
- "no_copy": 0,
- "options": "Party Account",
- "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
+ "options": "Party Account"
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
"fieldname": "lft",
"fieldtype": "Int",
"hidden": 1,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 0,
- "in_standard_filter": 0,
"label": "lft",
- "length": 0,
"no_copy": 1,
- "permlevel": 0,
- "precision": "",
"print_hide": 1,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
"report_hide": 1,
- "reqd": 0,
- "search_index": 1,
- "set_only_once": 0,
- "translatable": 0,
- "unique": 0
+ "search_index": 1
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
"fieldname": "rgt",
"fieldtype": "Int",
"hidden": 1,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 0,
- "in_standard_filter": 0,
"label": "rgt",
- "length": 0,
"no_copy": 1,
- "permlevel": 0,
- "precision": "",
"print_hide": 1,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
"report_hide": 1,
- "reqd": 0,
- "search_index": 1,
- "set_only_once": 0,
- "translatable": 0,
- "unique": 0
+ "search_index": 1
},
{
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
"fieldname": "old_parent",
"fieldtype": "Link",
"hidden": 1,
"ignore_user_permissions": 1,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 0,
- "in_standard_filter": 0,
"label": "Old Parent",
- "length": 0,
"no_copy": 1,
"options": "Supplier Group",
- "permlevel": 0,
- "precision": "",
"print_hide": 1,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 1,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "translatable": 0,
- "unique": 0
+ "report_hide": 1
}
],
- "has_web_view": 0,
- "hide_heading": 0,
- "hide_toolbar": 0,
"icon": "fa fa-flag",
"idx": 1,
- "image_view": 0,
- "in_create": 0,
- "is_submittable": 0,
- "issingle": 0,
- "istable": 0,
- "max_attachments": 0,
- "modified": "2018-08-29 06:25:57.589824",
+ "is_tree": 1,
+ "links": [],
+ "modified": "2020-03-18 18:10:49.228407",
"modified_by": "Administrator",
"module": "Setup",
"name": "Supplier Group",
+ "nsm_parent_field": "parent_supplier_group",
"owner": "Administrator",
"permissions": [
{
- "amend": 0,
- "cancel": 0,
- "create": 0,
- "delete": 0,
"email": 1,
- "export": 0,
- "if_owner": 0,
- "import": 0,
- "permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
- "role": "Purchase Manager",
- "set_user_permissions": 0,
- "share": 0,
- "submit": 0,
- "write": 0
+ "role": "Purchase Manager"
},
{
- "amend": 0,
- "cancel": 0,
- "create": 0,
- "delete": 0,
"email": 1,
- "export": 0,
- "if_owner": 0,
- "import": 0,
- "permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
- "role": "Purchase User",
- "set_user_permissions": 0,
- "share": 0,
- "submit": 0,
- "write": 0
+ "role": "Purchase User"
},
{
- "amend": 0,
- "cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
- "if_owner": 0,
"import": 1,
- "permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "Purchase Master Manager",
"set_user_permissions": 1,
"share": 1,
- "submit": 0,
"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": "Purchase Master Manager",
- "set_user_permissions": 0,
- "share": 0,
- "submit": 0,
"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": "Purchase Manager",
- "set_user_permissions": 0,
- "share": 0,
- "submit": 0,
- "write": 0
+ "role": "Purchase Manager"
},
{
- "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": "Purchase User",
- "set_user_permissions": 0,
- "share": 0,
- "submit": 0,
- "write": 0
+ "role": "Purchase User"
}
],
- "quick_entry": 0,
- "read_only": 0,
- "read_only_onload": 0,
"show_name_in_global_search": 1,
- "sort_order": "ASC",
- "track_changes": 0,
- "track_seen": 0,
- "track_views": 0
+ "sort_order": "ASC"
}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/territory/territory.json b/erpnext/setup/doctype/territory/territory.json
index 91a3dda..aa8e048 100644
--- a/erpnext/setup/doctype/territory/territory.json
+++ b/erpnext/setup/doctype/territory/territory.json
@@ -121,12 +121,14 @@
],
"icon": "fa fa-map-marker",
"idx": 1,
+ "is_tree": 1,
"links": [],
- "modified": "2020-01-28 13:49:31.905800",
+ "modified": "2020-03-18 18:11:36.623555",
"modified_by": "Administrator",
"module": "Setup",
"name": "Territory",
"name_case": "Title Case",
+ "nsm_parent_field": "parent_territory",
"owner": "Administrator",
"permissions": [
{
diff --git a/erpnext/setup/utils.py b/erpnext/setup/utils.py
index 439e6a5..13269a8 100644
--- a/erpnext/setup/utils.py
+++ b/erpnext/setup/utils.py
@@ -142,6 +142,6 @@
raise
def welcome_email():
- site_name = get_default_company()
+ site_name = get_default_company() or "ERPNext"
title = _("Welcome to {0}").format(site_name)
return title
diff --git a/erpnext/stock/__init__.py b/erpnext/stock/__init__.py
index a4d4cbd..8d64efe 100644
--- a/erpnext/stock/__init__.py
+++ b/erpnext/stock/__init__.py
@@ -13,12 +13,16 @@
]
def get_warehouse_account_map(company=None):
- if not frappe.flags.warehouse_account_map or frappe.flags.in_test:
+ company_warehouse_account_map = company and frappe.flags.setdefault('warehouse_account_map', {}).get(company)
+ warehouse_account_map = frappe.flags.warehouse_account_map
+
+ if not warehouse_account_map or not company_warehouse_account_map or frappe.flags.in_test:
warehouse_account = frappe._dict()
filters = {}
if company:
filters['company'] = company
+ frappe.flags.setdefault('warehouse_account_map', {}).setdefault(company, {})
for d in frappe.get_all('Warehouse',
fields = ["name", "account", "parent_warehouse", "company", "is_group"],
@@ -30,10 +34,12 @@
if d.account:
d.account_currency = frappe.db.get_value('Account', d.account, 'account_currency', cache=True)
warehouse_account.setdefault(d.name, d)
-
- frappe.flags.warehouse_account_map = warehouse_account
-
- return frappe.flags.warehouse_account_map
+ if company:
+ frappe.flags.warehouse_account_map[company] = warehouse_account
+ else:
+ frappe.flags.warehouse_account_map = warehouse_account
+
+ return frappe.flags.warehouse_account_map.get(company) or frappe.flags.warehouse_account_map
def get_warehouse_account(warehouse, warehouse_account=None):
account = warehouse.account
diff --git a/erpnext/stock/desk_page/stock/stock.json b/erpnext/stock/desk_page/stock/stock.json
new file mode 100644
index 0000000..779e61f
--- /dev/null
+++ b/erpnext/stock/desk_page/stock/stock.json
@@ -0,0 +1,86 @@
+{
+ "cards": [
+ {
+ "links": "[\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\": \"Material Request\",\n \"name\": \"Material Request\",\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]",
+ "title": "Stock Transactions"
+ },
+ {
+ "links": "[\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"doctype\": \"Stock Ledger Entry\",\n \"is_query_report\": true,\n \"label\": \"Stock Ledger\",\n \"name\": \"Stock Ledger\",\n \"onboard\": 1,\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"doctype\": \"Stock Ledger Entry\",\n \"is_query_report\": true,\n \"label\": \"Stock Balance\",\n \"name\": \"Stock Balance\",\n \"onboard\": 1,\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"doctype\": \"Item\",\n \"is_query_report\": true,\n \"label\": \"Stock Projected Qty\",\n \"name\": \"Stock Projected Qty\",\n \"onboard\": 1,\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"label\": \"Stock Summary\",\n \"name\": \"stock-balance\",\n \"type\": \"page\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"doctype\": \"Item\",\n \"is_query_report\": true,\n \"label\": \"Stock Ageing\",\n \"name\": \"Stock Ageing\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"doctype\": \"Item\",\n \"is_query_report\": true,\n \"label\": \"Item Price Stock\",\n \"name\": \"Item Price Stock\",\n \"type\": \"report\"\n }\n]",
+ "title": "Stock Reports"
+ },
+ {
+ "icon": "fa fa-cog",
+ "links": "[\n {\n \"label\": \"Stock Settings\",\n \"name\": \"Stock Settings\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Warehouse\",\n \"name\": \"Warehouse\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Unit of Measure (UOM)\",\n \"name\": \"UOM\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Brand\",\n \"name\": \"Brand\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Item Attribute\",\n \"name\": \"Item Attribute\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Item Variant Settings\",\n \"name\": \"Item Variant Settings\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Settings"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Item\",\n \"name\": \"Item\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Product Bundle\",\n \"name\": \"Product Bundle\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"icon\": \"fa fa-sitemap\",\n \"label\": \"Item Group\",\n \"link\": \"Tree/Item Group\",\n \"name\": \"Item Group\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Price List\",\n \"name\": \"Price List\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Item Price\",\n \"name\": \"Item Price\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Shipping Rule\",\n \"name\": \"Shipping Rule\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Pricing Rule\",\n \"name\": \"Pricing Rule\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Item Alternative\",\n \"name\": \"Item Alternative\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Item Manufacturer\",\n \"name\": \"Item Manufacturer\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Item Variant Settings\",\n \"name\": \"Item Variant Settings\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Items and Pricing"
+ },
+ {
+ "links": "[\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"label\": \"Serial No\",\n \"name\": \"Serial No\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"label\": \"Batch\",\n \"name\": \"Batch\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"label\": \"Installation Note\",\n \"name\": \"Installation Note\",\n \"type\": \"doctype\"\n },\n {\n \"dependencies\": [\n \"Serial No\"\n ],\n \"doctype\": \"Serial No\",\n \"label\": \"Serial No Service Contract Expiry\",\n \"name\": \"Serial No Service Contract Expiry\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Serial No\"\n ],\n \"doctype\": \"Serial No\",\n \"label\": \"Serial No Status\",\n \"name\": \"Serial No Status\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Serial No\"\n ],\n \"doctype\": \"Serial No\",\n \"label\": \"Serial No Warranty Expiry\",\n \"name\": \"Serial No Warranty Expiry\",\n \"type\": \"report\"\n }\n]",
+ "title": "Serial No and Batch"
+ },
+ {
+ "icon": "fa fa-wrench",
+ "links": "[\n {\n \"label\": \"Stock Reconciliation\",\n \"name\": \"Stock Reconciliation\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Landed Cost Voucher\",\n \"name\": \"Landed Cost Voucher\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Packing Slip\",\n \"name\": \"Packing Slip\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Quality Inspection\",\n \"name\": \"Quality Inspection\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Quality Inspection Template\",\n \"name\": \"Quality Inspection Template\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Quick Stock Balance\",\n \"name\": \"Quick Stock Balance\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Tools"
+ },
+ {
+ "icon": "fa fa-table",
+ "links": "[\n {\n \"dependencies\": [\n \"Item Price\"\n ],\n \"doctype\": \"Item Price\",\n \"is_query_report\": false,\n \"label\": \"Item-wise Price List Rate\",\n \"name\": \"Item-wise Price List Rate\",\n \"onboard\": 1,\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Stock Entry\"\n ],\n \"doctype\": \"Stock Entry\",\n \"is_query_report\": true,\n \"label\": \"Stock Analytics\",\n \"name\": \"Stock Analytics\",\n \"onboard\": 1,\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Delivery Note\"\n ],\n \"doctype\": \"Delivery Note\",\n \"is_query_report\": true,\n \"label\": \"Delivery Note Trends\",\n \"name\": \"Delivery Note Trends\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Purchase Receipt\"\n ],\n \"doctype\": \"Purchase Receipt\",\n \"is_query_report\": true,\n \"label\": \"Purchase Receipt Trends\",\n \"name\": \"Purchase Receipt Trends\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Delivery Note\"\n ],\n \"doctype\": \"Delivery Note\",\n \"is_query_report\": true,\n \"label\": \"Ordered Items To Be Delivered\",\n \"name\": \"Ordered Items To Be Delivered\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Purchase Receipt\"\n ],\n \"doctype\": \"Purchase Receipt\",\n \"is_query_report\": true,\n \"label\": \"Purchase Order Items To Be Received\",\n \"name\": \"Purchase Order Items To Be Received\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Bin\"\n ],\n \"doctype\": \"Bin\",\n \"is_query_report\": true,\n \"label\": \"Item Shortage Report\",\n \"name\": \"Item Shortage Report\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Batch\"\n ],\n \"doctype\": \"Batch\",\n \"is_query_report\": true,\n \"label\": \"Batch-Wise Balance History\",\n \"name\": \"Batch-Wise Balance History\",\n \"type\": \"report\"\n }\n]",
+ "title": "Key Reports"
+ },
+ {
+ "icon": "fa fa-list",
+ "links": "[\n {\n \"dependencies\": [\n \"Material Request\"\n ],\n \"doctype\": \"Material Request\",\n \"is_query_report\": true,\n \"label\": \"Requested Items To Be Transferred\",\n \"name\": \"Requested Items To Be Transferred\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Stock Ledger Entry\"\n ],\n \"doctype\": \"Stock Ledger Entry\",\n \"is_query_report\": true,\n \"label\": \"Batch Item Expiry Status\",\n \"name\": \"Batch Item Expiry Status\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Price List\"\n ],\n \"doctype\": \"Price List\",\n \"is_query_report\": true,\n \"label\": \"Item Prices\",\n \"name\": \"Item Prices\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"doctype\": \"Item\",\n \"is_query_report\": true,\n \"label\": \"Itemwise Recommended Reorder Level\",\n \"name\": \"Itemwise Recommended Reorder Level\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Item\"\n ],\n \"doctype\": \"Item\",\n \"is_query_report\": true,\n \"label\": \"Item Variant Details\",\n \"name\": \"Item Variant Details\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Purchase Order\"\n ],\n \"doctype\": \"Purchase Order\",\n \"is_query_report\": true,\n \"label\": \"Subcontracted Raw Materials To Be Transferred\",\n \"name\": \"Subcontracted Raw Materials To Be Transferred\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Purchase Order\"\n ],\n \"doctype\": \"Purchase Order\",\n \"is_query_report\": true,\n \"label\": \"Subcontracted Item To Be Received\",\n \"name\": \"Subcontracted Item To Be Received\",\n \"type\": \"report\"\n },\n {\n \"dependencies\": [\n \"Stock Ledger Entry\"\n ],\n \"doctype\": \"Stock Ledger Entry\",\n \"is_query_report\": true,\n \"label\": \"Stock and Account Value Comparison\",\n \"name\": \"Stock and Account Value Comparison\",\n \"type\": \"report\"\n }\n]",
+ "title": "Other Reports"
+ }
+ ],
+ "category": "Modules",
+ "charts": [],
+ "creation": "2020-03-02 15:43:10.096528",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "icon": "",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Stock",
+ "modified": "2020-03-12 16:30:39.881667",
+ "modified_by": "Administrator",
+ "module": "Stock",
+ "name": "Stock",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+ {
+ "is_query_report": 0,
+ "link_to": "Item",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Pricing Rule",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Stock Entry",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Stock Ledger",
+ "type": "Report"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Stock Balance",
+ "type": "Report"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/stock/doctype/batch/batch.py b/erpnext/stock/doctype/batch/batch.py
index 8ae978e..9b7249e 100644
--- a/erpnext/stock/doctype/batch/batch.py
+++ b/erpnext/stock/doctype/batch/batch.py
@@ -122,8 +122,11 @@
self.expiry_date = add_days(self.manufacturing_date, shelf_life_in_days)
if has_expiry_date and not self.expiry_date:
- frappe.msgprint(_('Expiry date is mandatory for selected item.'))
- frappe.throw(_("Set item's shelf life in days, to set expiry based on manufacturing date plus shelf-life."))
+ frappe.throw(msg=_("Please set {0} for Batched Item {1}, which is used to set {2} on Submit.") \
+ .format(frappe.bold("Shelf Life in Days"),
+ frappe.utils.get_link_to_form("Item", self.item),
+ frappe.bold("Batch Expiry Date")),
+ title=_("Expiry Date Mandatory"))
def get_name_from_naming_series(self):
"""
diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py
index 97a8472..73b36e3 100644
--- a/erpnext/stock/doctype/bin/bin.py
+++ b/erpnext/stock/doctype/bin/bin.py
@@ -69,15 +69,21 @@
'''Update qty reserved for production from Production Item tables
in open work orders'''
self.reserved_qty_for_production = frappe.db.sql('''
- select sum(item.required_qty - item.transferred_qty)
- from `tabWork Order` pro, `tabWork Order Item` item
- where
+ SELECT
+ CASE WHEN ifnull(skip_transfer, 0) = 0 THEN
+ SUM(item.required_qty - item.transferred_qty)
+ ELSE
+ SUM(item.required_qty - item.consumed_qty)
+ END
+ FROM `tabWork Order` pro, `tabWork Order Item` item
+ WHERE
item.item_code = %s
and item.parent = pro.name
and pro.docstatus = 1
and item.source_warehouse = %s
and pro.status not in ("Stopped", "Completed")
- and item.required_qty > item.transferred_qty''', (self.item_code, self.warehouse))[0][0]
+ and (item.required_qty > item.transferred_qty or item.required_qty > item.consumed_qty)
+ ''', (self.item_code, self.warehouse))[0][0]
self.set_projected_qty()
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index ea94c7b..30d82ca 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -414,7 +414,6 @@
invoiced_qty_map = get_invoiced_qty_map(source_name)
def set_missing_values(source, target):
- target.is_pos = 0
target.ignore_pricing_rule = 1
target.run_method("set_missing_values")
target.run_method("set_po_nos")
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 af06dae..782ac84 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",
@@ -180,6 +181,7 @@
"oldfieldname": "stock_uom",
"oldfieldtype": "Data",
"options": "UOM",
+ "print_hide": 1,
"print_width": "50px",
"read_only": 1,
"reqd": 1,
@@ -195,7 +197,6 @@
"in_list_view": 1,
"label": "UOM",
"options": "UOM",
- "print_hide": 1,
"reqd": 1
},
{
@@ -702,7 +703,8 @@
],
"idx": 1,
"istable": 1,
- "modified": "2019-05-25 22:08:27.452734",
+ "links": [],
+ "modified": "2020-03-05 14:18:33.131672",
"modified_by": "Administrator",
"module": "Stock",
"name": "Delivery Note Item",
diff --git a/erpnext/stock/doctype/delivery_trip/delivery_trip.py b/erpnext/stock/doctype/delivery_trip/delivery_trip.py
index a34db45..28e9533 100644
--- a/erpnext/stock/doctype/delivery_trip/delivery_trip.py
+++ b/erpnext/stock/doctype/delivery_trip/delivery_trip.py
@@ -238,7 +238,7 @@
try:
directions = maps_client.directions(**directions_data)
except Exception as e:
- frappe.throw(_(e))
+ frappe.throw(_(str(e)))
return directions[0] if directions else False
diff --git a/erpnext/stock/doctype/item/item.json b/erpnext/stock/doctype/item/item.json
index 3503e7c..aa6b2fe 100644
--- a/erpnext/stock/doctype/item/item.json
+++ b/erpnext/stock/doctype/item/item.json
@@ -343,7 +343,8 @@
{
"fieldname": "shelf_life_in_days",
"fieldtype": "Int",
- "label": "Shelf Life In Days"
+ "label": "Shelf Life In Days",
+ "mandatory_depends_on": "eval:doc.has_batch_no && doc.has_expiry_date"
},
{
"default": "2099-12-31",
@@ -1045,7 +1046,7 @@
"image_field": "image",
"links": [],
"max_attachments": 1,
- "modified": "2020-01-02 19:13:59.295963",
+ "modified": "2020-03-24 16:14:36.950677",
"modified_by": "Administrator",
"module": "Stock",
"name": "Item",
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index 74ae627..e2e84c4 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -183,12 +183,17 @@
# default warehouse, or Stores
for default in self.item_defaults or [frappe._dict({'company': frappe.defaults.get_defaults().company})]:
default_warehouse = (default.default_warehouse
- or frappe.db.get_single_value('Stock Settings', 'default_warehouse')
- or frappe.db.get_value('Warehouse', {'warehouse_name': _('Stores')}))
+ or frappe.db.get_single_value('Stock Settings', 'default_warehouse'))
+ if default_warehouse:
+ warehouse_company = frappe.db.get_value("Warehouse", default_warehouse, "company")
+
+ if not default_warehouse or warehouse_company != default.company:
+ default_warehouse = frappe.db.get_value('Warehouse',
+ {'warehouse_name': _('Stores'), 'company': default.company})
if default_warehouse:
stock_entry = make_stock_entry(item_code=self.name, target=default_warehouse, qty=self.opening_stock,
- rate=self.valuation_rate, company=default.company)
+ rate=self.valuation_rate, company=default.company)
stock_entry.add_comment("Comment", _("Opening Stock"))
@@ -736,14 +741,12 @@
defaults = frappe.defaults.get_defaults() or {}
# To check default warehouse is belong to the default company
- if defaults.get("default_warehouse") and frappe.db.exists("Warehouse",
+ if defaults.get("default_warehouse") and defaults.company and frappe.db.exists("Warehouse",
{'name': defaults.default_warehouse, 'company': defaults.company}):
- warehouse = defaults.default_warehouse
-
- self.append("item_defaults", {
- "company": defaults.get("company"),
- "default_warehouse": warehouse
- })
+ self.append("item_defaults", {
+ "company": defaults.get("company"),
+ "default_warehouse": defaults.default_warehouse
+ })
def update_variants(self):
if self.flags.dont_update_variants or \
diff --git a/erpnext/stock/doctype/item_alternative/item_alternative.py b/erpnext/stock/doctype/item_alternative/item_alternative.py
index b14683b..da0c3b7 100644
--- a/erpnext/stock/doctype/item_alternative/item_alternative.py
+++ b/erpnext/stock/doctype/item_alternative/item_alternative.py
@@ -22,6 +22,21 @@
if self.item_code == self.alternative_item_code:
frappe.throw(_("Alternative item must not be same as item code"))
+ item_meta = frappe.get_meta("Item")
+ fields = ["is_stock_item", "include_item_in_manufacturing","has_serial_no","has_batch_no"]
+ item_data = frappe.db.get_values("Item", self.item_code, fields, as_dict=1)
+ alternative_item_data = frappe.db.get_values("Item", self.alternative_item_code, fields, as_dict=1)
+
+ for field in fields:
+ if item_data[0].get(field) != alternative_item_data[0].get(field):
+ raise_exception, alert = [1, False] if field == "is_stock_item" else [0, True]
+
+ frappe.msgprint(_("The value of {0} differs between Items {1} and {2}") \
+ .format(frappe.bold(item_meta.get_label(field)),
+ frappe.bold(self.alternative_item_code),
+ frappe.bold(self.item_code)),
+ alert=alert, raise_exception=raise_exception)
+
def validate_duplicate(self):
if frappe.db.get_value("Item Alternative", {'item_code': self.item_code,
'alternative_item_code': self.alternative_item_code, 'name': ('!=', self.name)}):
diff --git a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
index 7df40fb..5ad0e13 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
+++ b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
@@ -8,6 +8,7 @@
from frappe.model.meta import get_field_precision
from frappe.model.document import Document
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
+from erpnext.accounts.doctype.account.account import get_account_currency
class LandedCostVoucher(Document):
def get_items_from_purchase_receipts(self):
@@ -43,6 +44,7 @@
else:
self.validate_applicable_charges_for_item()
self.validate_purchase_receipts()
+ self.validate_expense_accounts()
self.set_total_taxes_and_charges()
def check_mandatory(self):
@@ -71,6 +73,14 @@
frappe.throw(_("Row {0}: Cost center is required for an item {1}")
.format(item.idx, item.item_code))
+ def validate_expense_accounts(self):
+ company_currency = erpnext.get_company_currency(self.company)
+ for account in self.taxes:
+ if get_account_currency(account.expense_account) != company_currency:
+ frappe.throw(msg=_(""" Row {0}: Expense account currency should be same as company's default currency.
+ Please select expense account with account currency as {1}""")
+ .format(account.idx, frappe.bold(company_currency)), title=_("Invalid Account Currency"))
+
def set_total_taxes_and_charges(self):
self.total_taxes_and_charges = sum([flt(d.amount) for d in self.get("taxes")])
@@ -104,7 +114,6 @@
def update_landed_cost(self):
for d in self.get("purchase_receipts"):
doc = frappe.get_doc(d.receipt_document_type, d.receipt_document)
-
# check if there are {qty} assets created and linked to this receipt document
self.validate_asset_qty_and_status(d.receipt_document_type, doc)
@@ -123,6 +132,8 @@
# update latest valuation rate in serial no
self.update_rate_in_serial_no_for_non_asset_items(doc)
+ for d in self.get("purchase_receipts"):
+ doc = frappe.get_doc(d.receipt_document_type, d.receipt_document)
# update stock & gl entries for cancelled state of PR
doc.docstatus = 2
doc.update_stock_ledger(allow_negative_stock=True, via_landed_cost_voucher=True)
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index 4542847..285643d 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -501,7 +501,7 @@
wo_order = frappe.new_doc("Work Order")
wo_order.update({
"production_item": d.item_code,
- "qty": d.qty - d.ordered_qty,
+ "qty": d.stock_qty - d.ordered_qty,
"fg_warehouse": d.warehouse,
"wip_warehouse": default_wip_warehouse,
"description": d.description,
diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
index d80e8f2..cba7f20 100644
--- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
@@ -53,7 +53,7 @@
self.assertFalse(get_gl_entries("Purchase Receipt", pr.name))
def test_batched_serial_no_purchase(self):
- item = frappe.get_doc("Item", { 'item_name': 'Batched Serialized Item' })
+ item = frappe.db.exists("Item", {'item_name': 'Batched Serialized Item'})
if not item:
item = create_item("Batched Serialized Item")
item.has_batch_no = 1
@@ -62,6 +62,8 @@
item.batch_number_series = "BS-BATCH-.##"
item.serial_no_series = "BS-.####"
item.save()
+ else:
+ item = frappe.get_doc("Item", {'item_name': 'Batched Serialized Item'})
pr = make_purchase_receipt(item_code=item.name, qty=5, rate=500)
@@ -302,6 +304,8 @@
self.assertEqual(serial_no, frappe.db.get_value("Serial No",
{"purchase_document_type": "Purchase Receipt", "purchase_document_no": pr_doc.name}, "name"))
+ pr_doc.cancel()
+
#check for the auto created serial nos
item_code = "Test Auto Created Serial No"
if not frappe.db.exists("Item", item_code):
@@ -317,9 +321,9 @@
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
- item_code = frappe.db.get_value('Item', {'has_serial_no': 1, 'is_fixed_asset': 0})
+ item_code = frappe.db.get_value('Item', {'has_serial_no': 1, 'is_fixed_asset': 0, "has_batch_no": 0})
if not item_code:
- item = make_item("Test Serial Item 1", dict(has_serial_no=1))
+ item = make_item("Test Serial Item 1", dict(has_serial_no=1, has_batch_no=0))
item_code = item.name
serial_no = random_string(5)
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 bfb7577..a8b9c81 100644
--- a/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json
+++ b/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json
@@ -224,7 +224,6 @@
"oldfieldname": "uom",
"oldfieldtype": "Link",
"options": "UOM",
- "print_hide": 1,
"print_width": "100px",
"reqd": 1,
"width": "100px"
@@ -833,7 +832,7 @@
"idx": 1,
"istable": 1,
"links": [],
- "modified": "2020-01-13 16:03:34.879827",
+ "modified": "2020-03-11 14:19:48.799370",
"modified_by": "Administrator",
"module": "Stock",
"name": "Purchase Receipt Item",
diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py
index 64d4c6c..772ac58 100644
--- a/erpnext/stock/doctype/serial_no/serial_no.py
+++ b/erpnext/stock/doctype/serial_no/serial_no.py
@@ -523,12 +523,15 @@
return serial_nos
@frappe.whitelist()
-def auto_fetch_serial_number(qty, item_code, warehouse, batch_no=None):
- serial_numbers = frappe.get_list("Serial No", filters={
+def auto_fetch_serial_number(qty, item_code, warehouse, batch_nos=None):
+ import json
+ filters = {
"item_code": item_code,
"warehouse": warehouse,
- "batch_no": batch_no,
"delivery_document_no": "",
"sales_invoice": ""
- }, limit=qty, order_by="creation")
+ }
+ if batch_nos: filters["batch_no"] = ["in", json.loads(batch_nos)]
+
+ serial_numbers = frappe.get_list("Serial No", filters=filters, limit=qty, order_by="creation")
return [item['name'] for item in serial_numbers]
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index 170a80f..3bb9415 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -60,7 +60,8 @@
}
}
- if(item.s_warehouse) filters["warehouse"] = item.s_warehouse;
+ filters["warehouse"] = item.s_warehouse || item.t_warehouse;
+
return {
query : "erpnext.controllers.queries.get_batch_no",
filters: filters
@@ -309,12 +310,12 @@
method: "erpnext.stock.get_item_details.get_serial_no",
args: {"args": args},
callback: function(r) {
- if (!r.exe){
+ if (!r.exe && r.message){
frappe.model.set_value(cdt, cdn, "serial_no", r.message);
- }
- if (callback) {
- callback();
+ if (callback) {
+ callback();
+ }
}
}
});
@@ -622,10 +623,15 @@
if(r.message) {
var d = locals[cdt][cdn];
$.each(r.message, function(k, v) {
- frappe.model.set_value(cdt, cdn, k, v); // qty and it's subsequent fields weren't triggered
+ if (v) {
+ frappe.model.set_value(cdt, cdn, k, v); // qty and it's subsequent fields weren't triggered
+ }
});
refresh_field("items");
- erpnext.stock.select_batch_and_serial_no(frm, d);
+
+ if (!d.serial_no) {
+ erpnext.stock.select_batch_and_serial_no(frm, d);
+ }
}
}
});
@@ -964,10 +970,8 @@
}
}
- if(item && item.has_serial_no
- && frm.doc.purpose === 'Material Receipt') {
- return;
- }
+ if(item && !item.has_serial_no && !item.has_batch_no) return;
+ if (frm.doc.purpose === 'Material Receipt') return;
frappe.require("assets/erpnext/js/utils/serial_no_batch_selector.js", function() {
new erpnext.SerialNoBatchSelector({
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 8b072c6..be4c78b 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -177,6 +177,10 @@
stock_items = self.get_stock_items()
serialized_items = self.get_serialized_items()
for item in self.get("items"):
+ if item.qty and item.qty < 0:
+ frappe.throw(_("Row {0}: The item {1}, quantity must be positive number")
+ .format(item.idx, frappe.bold(item.item_code)))
+
if item.item_code not in stock_items:
frappe.throw(_("{0} is not a stock Item").format(item.item_code))
@@ -234,7 +238,7 @@
if self.purpose == "Manufacture" and self.work_order:
production_item = frappe.get_value('Work Order', self.work_order, 'production_item')
for item in self.items:
- if item.item_code == production_item and item.qty != self.fg_completed_qty:
+ if item.item_code == production_item and item.t_warehouse and item.qty != self.fg_completed_qty:
frappe.throw(_("Finished product quantity <b>{0}</b> and For Quantity <b>{1}</b> cannot be different")
.format(item.qty, self.fg_completed_qty))
@@ -294,13 +298,8 @@
if validate_for_manufacture:
if d.bom_no:
d.s_warehouse = None
-
if not d.t_warehouse:
frappe.throw(_("Target warehouse is mandatory for row {0}").format(d.idx))
-
- elif self.pro_doc and (cstr(d.t_warehouse) != self.pro_doc.fg_warehouse and cstr(d.t_warehouse) != self.pro_doc.scrap_warehouse):
- frappe.throw(_("Target warehouse in row {0} must be same as Work Order").format(d.idx))
-
else:
d.t_warehouse = None
if not d.s_warehouse:
diff --git a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json
index d86e68b..a848c80 100644
--- a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json
+++ b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json
@@ -1,4 +1,5 @@
{
+ "actions": [],
"autoname": "hash",
"creation": "2013-03-29 18:22:12",
"doctype": "DocType",
@@ -479,8 +480,7 @@
"fieldname": "project",
"fieldtype": "Link",
"label": "Project",
- "options": "Project",
- "read_only": 1
+ "options": "Project"
},
{
"fieldname": "po_detail",
@@ -494,7 +494,8 @@
],
"idx": 1,
"istable": 1,
- "modified": "2019-08-20 14:01:02.319754",
+ "links": [],
+ "modified": "2020-03-19 12:34:09.836295",
"modified_by": "Administrator",
"module": "Stock",
"name": "Stock Entry Detail",
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index ca2741c..afa2394 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -190,6 +190,9 @@
has_serial_no = True
self.get_sle_for_serialized_items(row, sl_entries)
else:
+ if row.serial_no or row.batch_no:
+ frappe.throw(_("Row #{0}: Item {1} is not a Serialized/Batched Item. It cannot have a Serial No/Batch No against it.") \
+ .format(row.idx, frappe.bold(row.item_code)))
previous_sle = get_previous_sle({
"item_code": row.item_code,
"warehouse": row.warehouse,
diff --git a/erpnext/stock/doctype/warehouse/warehouse.json b/erpnext/stock/doctype/warehouse/warehouse.json
index 2bf1ed8..5d534af 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.json
+++ b/erpnext/stock/doctype/warehouse/warehouse.json
@@ -228,11 +228,13 @@
],
"icon": "fa fa-building",
"idx": 1,
+ "is_tree": 1,
"links": [],
- "modified": "2020-01-28 13:50:59.368846",
+ "modified": "2020-03-18 18:11:53.282358",
"modified_by": "Administrator",
"module": "Stock",
"name": "Warehouse",
+ "nsm_parent_field": "parent_warehouse",
"owner": "Administrator",
"permissions": [
{
diff --git a/erpnext/stock/report/stock_ledger/stock_ledger.js b/erpnext/stock/report/stock_ledger/stock_ledger.js
index 3d5cfdc..9adfbf7 100644
--- a/erpnext/stock/report/stock_ledger/stock_ledger.js
+++ b/erpnext/stock/report/stock_ledger/stock_ledger.js
@@ -29,7 +29,13 @@
"fieldname":"warehouse",
"label": __("Warehouse"),
"fieldtype": "Link",
- "options": "Warehouse"
+ "options": "Warehouse",
+ "get_query": function() {
+ const company = frappe.query_report.get_filter_value('company');
+ return {
+ filters: { 'company': company }
+ }
+ }
},
{
"fieldname":"item_code",
diff --git a/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py b/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py
index 913d7d8..c8efb16 100644
--- a/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py
+++ b/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py
@@ -44,7 +44,9 @@
re_order_level = d.warehouse_reorder_level
re_order_qty = d.warehouse_reorder_qty
- shortage_qty = re_order_level - flt(bin.projected_qty) if (re_order_level or re_order_qty) else 0
+ shortage_qty = 0
+ if (re_order_level or re_order_qty) and re_order_level > bin.projected_qty:
+ shortage_qty = re_order_level - flt(bin.projected_qty)
data.append([item.name, item.item_name, item.description, item.item_group, item.brand, bin.warehouse,
item.stock_uom, bin.actual_qty, bin.planned_qty, bin.indented_qty, bin.ordered_qty,
diff --git a/erpnext/support/desk_page/support/support.json b/erpnext/support/desk_page/support/support.json
new file mode 100644
index 0000000..4a7885e
--- /dev/null
+++ b/erpnext/support/desk_page/support/support.json
@@ -0,0 +1,66 @@
+{
+ "cards": [
+ {
+ "links": "[\n {\n \"description\": \"Service Level.\",\n \"label\": \"Service Level\",\n \"name\": \"Service Level\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Service Level Agreement.\",\n \"label\": \"Service Level Agreement\",\n \"name\": \"Service Level Agreement\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Service Level Agreement"
+ },
+ {
+ "links": "[\n {\n \"label\": \"Maintenance Schedule\",\n \"name\": \"Maintenance Schedule\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Maintenance Visit\",\n \"name\": \"Maintenance Visit\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Maintenance"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Support queries from customers.\",\n \"label\": \"Issue\",\n \"name\": \"Issue\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Issue Type.\",\n \"label\": \"Issue Type\",\n \"name\": \"Issue Type\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Issue Priority.\",\n \"label\": \"Issue Priority\",\n \"name\": \"Issue Priority\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Issues"
+ },
+ {
+ "links": "[\n {\n \"description\": \"Warranty Claim against Serial No.\",\n \"label\": \"Warranty Claim\",\n \"name\": \"Warranty Claim\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Single unit of an Item.\",\n \"label\": \"Serial No\",\n \"name\": \"Serial No\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Warranty"
+ },
+ {
+ "icon": "fa fa-list",
+ "links": "[\n {\n \"label\": \"Support Settings\",\n \"name\": \"Support Settings\",\n \"type\": \"doctype\"\n }\n]",
+ "title": "Settings"
+ },
+ {
+ "icon": "fa fa-list",
+ "links": "[\n {\n \"dependencies\": [\n \"Issue\"\n ],\n \"doctype\": \"Issue\",\n \"is_query_report\": true,\n \"label\": \"Minutes to First Response for Issues\",\n \"name\": \"Minutes to First Response for Issues\",\n \"type\": \"report\"\n }\n]",
+ "title": "Reports"
+ }
+ ],
+ "category": "Modules",
+ "charts": [],
+ "creation": "2020-03-02 15:48:23.224699",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Desk Page",
+ "extends_another_page": 0,
+ "icon": "",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Support",
+ "modified": "2020-03-12 16:30:39.482621",
+ "modified_by": "Administrator",
+ "module": "Support",
+ "name": "Support",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+ {
+ "is_query_report": 0,
+ "link_to": "Issue",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Service Level",
+ "type": "DocType"
+ },
+ {
+ "is_query_report": 0,
+ "link_to": "Maintenance Visit",
+ "type": "DocType"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/support/web_form/issues/issues.json b/erpnext/support/web_form/issues/issues.json
index 9b904ad..0f15e47 100644
--- a/erpnext/support/web_form/issues/issues.json
+++ b/erpnext/support/web_form/issues/issues.json
@@ -18,7 +18,7 @@
"is_standard": 1,
"login_required": 1,
"max_attachment_size": 0,
- "modified": "2019-12-10 13:48:19.894186",
+ "modified": "2020-03-06 05:24:05.749664",
"modified_by": "Administrator",
"module": "Support",
"name": "issues",
@@ -58,7 +58,7 @@
"options": "Open\nReplied\nHold\nClosed",
"read_only": 1,
"reqd": 0,
- "show_in_filter": 0
+ "show_in_filter": 1
},
{
"allow_read_on_all_link_options": 0,
diff --git a/erpnext/tests/utils.py b/erpnext/tests/utils.py
index dfd3ed7..16ecd51 100644
--- a/erpnext/tests/utils.py
+++ b/erpnext/tests/utils.py
@@ -7,6 +7,8 @@
def create_test_contact_and_address():
frappe.db.sql('delete from tabContact')
+ frappe.db.sql('delete from `tabContact Email`')
+ frappe.db.sql('delete from `tabContact Phone`')
frappe.db.sql('delete from tabAddress')
frappe.db.sql('delete from `tabDynamic Link`')
diff --git a/erpnext/translations/af.csv b/erpnext/translations/af.csv
index 779306e..98b202f 100644
--- a/erpnext/translations/af.csv
+++ b/erpnext/translations/af.csv
@@ -168,12 +168,11 @@
DocType: Work Order Operation,Work In Progress,Werk aan die gang
DocType: Leave Control Panel,Branch (optional),Tak (opsioneel)
apps/erpnext/erpnext/education/report/absent_student_report/absent_student_report.py,Please select date,Kies asseblief datum
-DocType: Item Price,Minimum Qty ,Minimum aantal
+apps/erpnext/erpnext/stock/report/product_bundle_balance/product_bundle_balance.py,Minimum Qty ,Minimum aantal
apps/erpnext/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py,BOM recursion: {0} cannot be child of {1},Rekursie van die BOM: {0} kan nie die kind van {1} wees nie
DocType: Finance Book,Finance Book,Finansies Boek
DocType: Patient Encounter,HLC-ENC-.YYYY.-,HLC-ENC-.YYYY.-
DocType: Appointment Booking Settings,Holiday List,Vakansie Lys
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,The parent account {0} does not exists,Die ouerrekening {0} bestaan nie
apps/erpnext/erpnext/config/quality_management.py,Review and Action,Hersiening en aksie
apps/erpnext/erpnext/hr/doctype/employee_checkin/employee_checkin.py,This employee already has a log with the same timestamp.{0},Hierdie werknemer het reeds 'n logboek met dieselfde tydstempel. {0}
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Accountant,rekenmeester
@@ -245,7 +244,6 @@
DocType: Exchange Rate Revaluation Account,Gain/Loss,Wins / verlies
DocType: Crop,Perennial,meerjarige
DocType: Program,Is Published,Word gepubliseer
-apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js,Show Delivery Notes,Wys afleweringsnotas
apps/erpnext/erpnext/controllers/status_updater.py,"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.","Om oorfakturering toe te laat, moet u "Toelae vir oorfakturering" in rekeninginstellings of die item opdateer."
DocType: Patient Appointment,Procedure,prosedure
DocType: Accounts Settings,Use Custom Cash Flow Format,Gebruik aangepaste kontantvloeiformaat
@@ -981,7 +979,6 @@
DocType: Patient,Risk Factors,Risiko faktore
DocType: Patient,Occupational Hazards and Environmental Factors,Beroepsgevare en omgewingsfaktore
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Stock Entries already created for Work Order ,Voorraadinskrywings wat reeds vir werkorder geskep is
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Item Code > Item Group > Brand,Itemkode> Itemgroep> Merk
apps/erpnext/erpnext/templates/pages/cart.html,See past orders,Kyk vorige bestellings
apps/erpnext/erpnext/public/js/hub/pages/Selling.vue,{0} conversations,{0} gesprekke
DocType: Vital Signs,Respiratory rate,Respiratoriese tempo
@@ -1139,7 +1136,6 @@
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,An error occurred during the update process,'N Fout het voorgekom tydens die opdateringsproses
DocType: Restaurant Reservation,Restaurant Reservation,Restaurant bespreking
apps/erpnext/erpnext/public/js/hub/Sidebar.vue,Your Items,U items
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Supplier > Supplier Type,Verskaffer> Verskaffer tipe
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Proposal Writing,Voorstel Skryf
DocType: Payment Entry Deduction,Payment Entry Deduction,Betaling Inskrywing Aftrek
DocType: Service Level Priority,Service Level Priority,Prioriteit op diensvlak
@@ -1438,7 +1434,6 @@
apps/erpnext/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js,Please select Company and Posting Date to getting entries,Kies asseblief Maatskappy en Posdatum om inskrywings te kry
DocType: Asset,Maintenance,onderhoud
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test.js,Get from Patient Encounter,Kry van pasiënt ontmoeting
-apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,UOM Conversion factor ({0} -> {1}) not found for item: {2},UOM-omskakelingsfaktor ({0} -> {1}) nie vir item gevind nie: {2}
DocType: Subscriber,Subscriber,intekenaar
DocType: Item Attribute Value,Item Attribute Value,Item Attribuutwaarde
apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py,Currency Exchange must be applicable for Buying or for Selling.,Geldwissel moet van toepassing wees vir koop of verkoop.
@@ -1936,7 +1931,6 @@
DocType: Purchase Invoice,Is Return (Debit Note),Is Terugbetaling (Debiet Nota)
DocType: Workstation,Wages,lone
DocType: Asset Maintenance,Maintenance Manager Name,Onderhoudbestuurder Naam
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js,Transactions against the company already exist! ,Daar bestaan reeds transaksies teen die onderneming!
apps/erpnext/erpnext/buying/report/procurement_tracker/procurement_tracker.py,Requesting Site,Versoek webwerf
DocType: Agriculture Task,Urgent,dringende
apps/erpnext/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js,Fetching records......,Rekords gaan haal ......
@@ -2633,7 +2627,6 @@
apps/erpnext/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.py,The Payment Term at row {0} is possibly a duplicate.,Die betalingstermyn by ry {0} is moontlik 'n duplikaat.
apps/erpnext/erpnext/public/js/setup_wizard.js,Agriculture (beta),Landbou (beta)
apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.js,Packing Slip,Packing Slip
-apps/erpnext/erpnext/setup/doctype/naming_series/naming_series.py,Please set Naming Series for {0} via Setup > Settings > Naming Series,Stel Naming Series in vir {0} via Setup> Settings> Naming Series
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py,Office Rent,Kantoorhuur
apps/erpnext/erpnext/config/settings.py,Setup SMS gateway settings,Opstel SMS gateway instellings
DocType: Disease,Common Name,Algemene naam
@@ -2799,7 +2792,6 @@
apps/erpnext/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py,Leaves Allocated Successfully for {0},Blare suksesvol toegeken vir {0}
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py,No Items to pack,Geen items om te pak nie
apps/erpnext/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py,Only .csv and .xlsx files are supported currently,Slegs .csv- en .xlsx-lêers word tans ondersteun
-apps/erpnext/erpnext/hr/doctype/employee/employee.py,Please setup Employee Naming System in Human Resource > HR Settings,Stel asseblief 'n naamstelsel vir werknemers in vir mensehulpbronne> HR-instellings
DocType: Shipping Rule Condition,From Value,Uit Waarde
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Manufacturing Quantity is mandatory,Vervaardiging Hoeveelheid is verpligtend
DocType: Loan,Repayment Method,Terugbetaling Metode
@@ -4046,7 +4038,6 @@
apps/erpnext/erpnext/templates/form_grid/material_request_grid.html,Required On,Vereis Aan
DocType: HR Settings,"If checked, hides and disables Rounded Total field in Salary Slips","As dit gemerk is, verberg en deaktiveer u die veld Afgeronde totaal in salarisstrokies"
DocType: Woocommerce Settings,This is the default offset (days) for the Delivery Date in Sales Orders. The fallback offset is 7 days from the order placement date.,Dit is die standaardverrekening (dae) vir die afleweringsdatum in verkoopsbestellings. Die terugwaartse verrekening is 7 dae vanaf die datum van die bestellingsplasing.
-apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py,Please setup numbering series for Attendance via Setup > Numbering Series,Stel nommeringreekse op vir bywoning via Setup> Numbering Series
DocType: Rename Tool,File to Rename,Lêer om hernoem te word
apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,Please select BOM for Item in Row {0},Kies asseblief BOM vir item in ry {0}
apps/erpnext/erpnext/accounts/doctype/subscription/subscription.js,Fetch Subscription Updates,Haal intekeningopdaterings
@@ -4649,7 +4640,6 @@
DocType: Cash Flow Mapping,Is Finance Cost,Is finansieringskoste
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py,Attendance for employee {0} is already marked,Bywoning vir werknemer {0} is reeds gemerk
DocType: Packing Slip,If more than one package of the same type (for print),As meer as een pakket van dieselfde tipe (vir druk)
-apps/erpnext/erpnext/education/doctype/instructor/instructor.py,Please setup Instructor Naming System in Education > Education Settings,Stel asb. Die opvoeder-naamstelsel op in onderwys> Onderwysinstellings
apps/erpnext/erpnext/restaurant/doctype/restaurant_order_entry/restaurant_order_entry.py,Please set default customer in Restaurant Settings,Stel asseblief die standaardkliënt in Restaurantinstellings
,Salary Register,Salarisregister
DocType: Company,Default warehouse for Sales Return,Standaard pakhuis vir verkoopsopgawe
@@ -4920,7 +4910,6 @@
apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html,Pending Activities,Hangende aktiwiteite
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test_list.js,Create Lab Test,Skep labtoets
DocType: Patient Appointment,Reminded,herinner
-DocType: Homepage Section,Cards,kaarte
apps/erpnext/erpnext/public/js/setup_wizard.js,View Chart of Accounts,Bekyk grafiek van rekeninge
DocType: Chapter Member,Chapter Member,Hooflid
DocType: Material Request Plan Item,Minimum Order Quantity,Minimum bestelhoeveelheid
@@ -4938,7 +4927,7 @@
apps/erpnext/erpnext/hr/utils.py,Future dates not allowed,Toekomstige datums nie toegelaat nie
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py,Expected Delivery Date should be after Sales Order Date,Verwagte afleweringsdatum moet na-verkope besteldatum wees
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,Reorder Level,Herbestel vlak
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Chart Of Accounts Template,Sjabloon van rekeninge
+DocType: Company,Chart Of Accounts Template,Sjabloon van rekeninge
DocType: Attendance,Attendance Date,Bywoningsdatum
apps/erpnext/erpnext/assets/doctype/asset/asset.py,Update stock must be enable for the purchase invoice {0},Opdateringsvoorraad moet vir die aankoopfaktuur {0}
apps/erpnext/erpnext/stock/get_item_details.py,Item Price updated for {0} in Price List {1},Itemprys opgedateer vir {0} in Pryslys {1}
@@ -5503,8 +5492,6 @@
apps/erpnext/erpnext/accounts/doctype/shareholder/shareholder.js,Share Ledger,Deel Grootboek
apps/erpnext/erpnext/healthcare/doctype/patient/patient.js,Sales Invoice {0} created,Verkoopsfaktuur {0} geskep
DocType: Employee,Confirmation Date,Bevestigingsdatum
-apps/erpnext/erpnext/hr/doctype/employee_transfer/employee_transfer.py,"Please delete the Employee <a href=""#Form/Employee/{0}"">{0}</a>\
- to cancel this document","Skrap die werknemer <a href=""#Form/Employee/{0}"">{0}</a> \ om hierdie dokument te kanselleer"
DocType: Inpatient Occupancy,Check Out,Uitteken
DocType: C-Form,Total Invoiced Amount,Totale gefaktureerde bedrag
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py,Min Qty can not be greater than Max Qty,Minimum hoeveelheid kan nie groter wees as Max
@@ -5711,7 +5698,6 @@
DocType: Cheque Print Template,Cheque Width,Kyk breedte
DocType: Selling Settings,Validate Selling Price for Item against Purchase Rate or Valuation Rate,Valideer Verkoopprys vir Item teen Aankoopprys of Waardasietarief
DocType: Fee Schedule,Fee Schedule,Fooibedule
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Column Labels : ,Kolom Etikette:
DocType: Bank Transaction,Settled,gevestig
apps/erpnext/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.html,Cess,ning
DocType: Quality Feedback,Parameters,Grense
@@ -6385,6 +6371,7 @@
DocType: Salary Component,Formula,formule
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py,Serial #,Serie #
DocType: Material Request Plan Item,Required Quantity,Vereiste hoeveelheid
+DocType: Cash Flow Mapping Template,Template Name,Sjabloon Naam
DocType: Lab Test Template,Lab Test Template,Lab Test Template
apps/erpnext/erpnext/accounts/doctype/accounting_period/accounting_period.py,Accounting Period overlaps with {0},Rekeningkundige tydperk oorvleuel met {0}
apps/erpnext/erpnext/setup/doctype/company/company.py,Sales Account,Verkooprekening
@@ -6445,7 +6432,7 @@
DocType: Bank Reconciliation Detail,Cheque Date,Check Date
apps/erpnext/erpnext/accounts/doctype/account/account.py,Account {0}: Parent account {1} does not belong to company: {2},Rekening {0}: Ouerrekening {1} behoort nie aan maatskappy nie: {2}
apps/erpnext/erpnext/setup/doctype/company/company.js,Successfully deleted all transactions related to this company!,Suksesvol verwyder alle transaksies met betrekking tot hierdie maatskappy!
-apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js,As on Date,Soos op datum
+apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.js,As on Date,Soos op datum
DocType: Additional Salary,HR,HR
DocType: Course Enrollment,Enrollment Date,Inskrywingsdatum
DocType: Healthcare Settings,Out Patient SMS Alerts,Uit Pasiënt SMS Alert
@@ -6511,7 +6498,6 @@
DocType: Course Content,Quiz,Vasvra
DocType: Subscription,Trial Period End Date,Proefperiode Einddatum
apps/erpnext/erpnext/setup/doctype/authorization_control/authorization_control.py,Not authroized since {0} exceeds limits,Nie outhroized sedert {0} oorskry limiete
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Start entering data from here : ,Begin data van hier af invoer:
DocType: Serial No,Asset Status,Bate Status
DocType: Sales Invoice,Over Dimensional Cargo (ODC),Oor Dimensionele Lading (ODC)
DocType: Restaurant Order Entry,Restaurant Table,Restaurant Tafel
@@ -6737,7 +6723,6 @@
DocType: Contract,Party User,Party gebruiker
apps/erpnext/erpnext/controllers/buying_controller.py,Assets not created for <b>{0}</b>. You will have to create asset manually.,Bates nie geskep vir <b>{0}</b> . U moet bates met die hand opstel.
apps/erpnext/erpnext/stock/report/total_stock_summary/total_stock_summary.py,Please set Company filter blank if Group By is 'Company',Stel asseblief die Maatskappyfilter leeg as Groep By 'Maatskappy' is.
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Customer > Customer Group > Territory,Kliënt> Kliëntegroep> Gebied
apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py,Posting Date cannot be future date,Posdatum kan nie toekomstige datum wees nie
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Row # {0}: Serial No {1} does not match with {2} {3},Ry # {0}: reeksnommer {1} stem nie ooreen met {2} {3}
DocType: Loan Repayment,Interest Payable,Rente betaalbaar
@@ -6970,7 +6955,6 @@
apps/erpnext/erpnext/accounts/report/share_balance/share_balance.py,Average Rate,Gemiddelde koers
DocType: Appointment,Appointment With,Afspraak met
apps/erpnext/erpnext/controllers/accounts_controller.py,Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total,Totale Betalingsbedrag in Betaalskedule moet gelyk wees aan Grand / Rounded Total
-apps/erpnext/erpnext/hr/doctype/attendance/attendance_list.js,Mark attendance as <b></b>,Merk bywoning as <b></b>
apps/erpnext/erpnext/stock/doctype/item/item.py,"""Customer Provided Item"" cannot have Valuation Rate","Klant voorsien artikel" kan nie 'n waardasiekoers hê nie
DocType: Subscription Plan Detail,Plan,plan
apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py,Bank Statement balance as per General Ledger,Bankstaatbalans soos per Algemene Grootboek
@@ -7661,7 +7645,6 @@
apps/erpnext/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py,Maximum benefit amount of employee {0} exceeds {1},Maksimum voordeelbedrag van werknemer {0} oorskry {1}
apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py,Total allocated leaves are more than days in the period,Totale toegekende blare is meer as dae in die tydperk
DocType: Linked Soil Analysis,Linked Soil Analysis,Gekoppelde grondanalise
-DocType: Pricing Rule,Percentage,persentasie
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Item {0} must be a stock Item,Item {0} moet 'n voorraaditem wees
DocType: Manufacturing Settings,Default Work In Progress Warehouse,Verstek werk in voortgang Warehouse
apps/erpnext/erpnext/healthcare/doctype/practitioner_schedule/practitioner_schedule.js,"Schedules for {0} overlaps, do you want to proceed after skiping overlaped slots ?","Bylaes vir {0} oorvleuelings, wil jy voortgaan nadat jy oorlaaide gleuwe geslaan het?"
diff --git a/erpnext/translations/am.csv b/erpnext/translations/am.csv
index 9c6d63d..9402bdd 100644
--- a/erpnext/translations/am.csv
+++ b/erpnext/translations/am.csv
@@ -168,12 +168,11 @@
DocType: Work Order Operation,Work In Progress,ገና በሂደት ላይ ያለ ስራ
DocType: Leave Control Panel,Branch (optional),ቅርንጫፍ (አማራጭ)
apps/erpnext/erpnext/education/report/absent_student_report/absent_student_report.py,Please select date,ቀን ይምረጡ
-DocType: Item Price,Minimum Qty ,አነስተኛ ሂሳብ
+apps/erpnext/erpnext/stock/report/product_bundle_balance/product_bundle_balance.py,Minimum Qty ,አነስተኛ ሂሳብ
apps/erpnext/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py,BOM recursion: {0} cannot be child of {1},BOM ድግግሞሽ-{0} የ {1} ልጅ መሆን አይችልም
DocType: Finance Book,Finance Book,የገንዘብ መጽሐፍ
DocType: Patient Encounter,HLC-ENC-.YYYY.-,HLC-ENC-yYYYY.-
DocType: Appointment Booking Settings,Holiday List,የበዓል ዝርዝር
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,The parent account {0} does not exists,የወላጅ መለያ {0} የለም
apps/erpnext/erpnext/config/quality_management.py,Review and Action,ክለሳ እና ተግባር ፡፡
apps/erpnext/erpnext/hr/doctype/employee_checkin/employee_checkin.py,This employee already has a log with the same timestamp.{0},ይህ ሠራተኛ ቀድሞውኑ በተመሳሳይ የጊዜ ማህተም የተረጋገጠ መዝገብ አለው። {0}
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Accountant,ሒሳብ ሠራተኛ
@@ -245,7 +244,6 @@
DocType: Exchange Rate Revaluation Account,Gain/Loss,ትርፍ ማግኘት / ኪሳራ / ኪሳራ
DocType: Crop,Perennial,የብዙ ዓመት
DocType: Program,Is Published,ታትሟል ፡፡
-apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js,Show Delivery Notes,የአቅርቦት ማስታወሻዎችን አሳይ።
apps/erpnext/erpnext/controllers/status_updater.py,"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.",የክፍያ መጠየቂያ ከልክ በላይ ለመፍቀድ በመለያዎች ቅንብሮች ወይም በንጥል ውስጥ «ከመጠን በላይ የክፍያ አበል» ን ያዘምኑ።
DocType: Patient Appointment,Procedure,ሂደት
DocType: Accounts Settings,Use Custom Cash Flow Format,ብጁ የገንዘብ ፍሰት ቅርጸት ተጠቀም
@@ -978,7 +976,6 @@
DocType: Patient,Risk Factors,የጭንቀት ሁኔታዎች
DocType: Patient,Occupational Hazards and Environmental Factors,የሥራ ጉዳት እና የአካባቢ ብክለቶች
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Stock Entries already created for Work Order ,ክምችት ምዝገባዎች ቀድሞ ለስራ ትእዛዝ ተዘጋጅተዋል
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Item Code > Item Group > Brand,የንጥል ኮድ> የንጥል ቡድን> የምርት ስም
apps/erpnext/erpnext/templates/pages/cart.html,See past orders,ያለፉ ትዕዛዞችን ይመልከቱ።
apps/erpnext/erpnext/public/js/hub/pages/Selling.vue,{0} conversations,{0} ውይይቶች።
DocType: Vital Signs,Respiratory rate,የመተንፈሻ መጠን
@@ -1136,7 +1133,6 @@
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,An error occurred during the update process,በማዘመን ሂደቱ ጊዜ ስህተት ተከስቷል
DocType: Restaurant Reservation,Restaurant Reservation,የምግብ ቤት ቦታ ማስያዣ
apps/erpnext/erpnext/public/js/hub/Sidebar.vue,Your Items,ዕቃዎችዎ
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Supplier > Supplier Type,አቅራቢ> የአቅራቢ ዓይነት
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Proposal Writing,ሐሳብ መጻፍ
DocType: Payment Entry Deduction,Payment Entry Deduction,የክፍያ Entry ተቀናሽ
DocType: Service Level Priority,Service Level Priority,የአገልግሎት ደረጃ ቅድሚያ።
@@ -1435,7 +1431,6 @@
apps/erpnext/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js,Please select Company and Posting Date to getting entries,እባክዎ ግቤቶችን ለመመዝገብ እባክዎ ኩባንያ እና የድረ-ገጽ ቀንን ይምረጡ
DocType: Asset,Maintenance,ጥገና
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test.js,Get from Patient Encounter,ከታካሚዎች ግኝት ያግኙ
-apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,UOM Conversion factor ({0} -> {1}) not found for item: {2},UOM የልወጣ ሁኔታ ({0} -> {1}) ለእንጥል አልተገኘም {{2}
DocType: Subscriber,Subscriber,ደንበኛ
DocType: Item Attribute Value,Item Attribute Value,ንጥል ዋጋ የአይነት
apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py,Currency Exchange must be applicable for Buying or for Selling.,የምንዛሬ ልውውጥ ለግዢ ወይም ለሽያጭ ተፈጻሚ መሆን አለበት.
@@ -1933,7 +1928,6 @@
DocType: Purchase Invoice,Is Return (Debit Note),ተመላሽ ይባላል (ዕዳ መግለጫ)
DocType: Workstation,Wages,ደመወዝ
DocType: Asset Maintenance,Maintenance Manager Name,የጥገና አስተዳዳሪ ስም
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js,Transactions against the company already exist! ,በድርጅቱ ላይ ግብይቶች ቀድሞውኑ ነበሩ!
apps/erpnext/erpnext/buying/report/procurement_tracker/procurement_tracker.py,Requesting Site,ጣቢያ መጠየቅ
DocType: Agriculture Task,Urgent,አስቸኳይ
apps/erpnext/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js,Fetching records......,መዝገቦችን በማምጣት ላይ ……
@@ -2795,7 +2789,6 @@
apps/erpnext/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py,Leaves Allocated Successfully for {0},ለ በተሳካ ሁኔታ የተመደበ ማምለኩን {0}
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py,No Items to pack,ምንም ንጥሎች ለመሸከፍ
apps/erpnext/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py,Only .csv and .xlsx files are supported currently,በአሁኑ ጊዜ .csv እና .xlsx ፋይሎች ብቻ ይደገፋሉ።
-apps/erpnext/erpnext/hr/doctype/employee/employee.py,Please setup Employee Naming System in Human Resource > HR Settings,በሰብአዊ ሀብት> የሰው ሠራሽ ቅንብሮች ውስጥ የሰራተኛ መለያ ስም መስሪያ ስርዓት ያዋቅሩ
DocType: Shipping Rule Condition,From Value,እሴት ከ
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Manufacturing Quantity is mandatory,ከማኑፋክቸሪንግ ብዛት የግዴታ ነው
DocType: Loan,Repayment Method,ብድር መክፈል ስልት
@@ -4039,7 +4032,6 @@
apps/erpnext/erpnext/templates/form_grid/material_request_grid.html,Required On,ያስፈልጋል ላይ
DocType: HR Settings,"If checked, hides and disables Rounded Total field in Salary Slips",ከተረጋገጠ ፣ ደሞዝ እና አቦዝን በ Salary Slips ውስጥ የተጠጋጋ አጠቃላይ መስክ
DocType: Woocommerce Settings,This is the default offset (days) for the Delivery Date in Sales Orders. The fallback offset is 7 days from the order placement date.,በሽያጭ ትዕዛዞችን ማቅረቢያ ቀን ይህ ነባሪ ማካካሻ (ቀናት) ነው። ውድድሩ ማካካሻ ትዕዛዙ ከምደባ ከተሰጠበት ቀን ጀምሮ 7 ቀናት ነው።
-apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py,Please setup numbering series for Attendance via Setup > Numbering Series,እባክዎን ለተማሪ ተገኝነት በማዋቀር> የቁጥር ተከታታይ በኩል ያዘጋጁ
DocType: Rename Tool,File to Rename,ዳግም ሰይም ፋይል
apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,Please select BOM for Item in Row {0},ረድፍ ውስጥ ንጥል ለማግኘት BOM ይምረጡ {0}
apps/erpnext/erpnext/accounts/doctype/subscription/subscription.js,Fetch Subscription Updates,የደንበኝነት ምዝገባ ዝመናዎችን በማምጣት ላይ
@@ -4639,7 +4631,6 @@
DocType: Cash Flow Mapping,Is Finance Cost,የፋይናንስ ወጪ ነው
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py,Attendance for employee {0} is already marked,ሠራተኛ {0} ክትትልን አስቀድሞ ምልክት ነው
DocType: Packing Slip,If more than one package of the same type (for print),ከሆነ ተመሳሳይ ዓይነት ከአንድ በላይ ጥቅል (የህትመት ለ)
-apps/erpnext/erpnext/education/doctype/instructor/instructor.py,Please setup Instructor Naming System in Education > Education Settings,እባክዎ በትምህርቱ> የትምህርት ቅንብሮች ውስጥ አስተማሪ ስም ማጎሪያ ስርዓት ያዋቅሩ
apps/erpnext/erpnext/restaurant/doctype/restaurant_order_entry/restaurant_order_entry.py,Please set default customer in Restaurant Settings,እባክዎ በሆቴሎች ቅንጅቶች ውስጥ ነባሪ ደንበኛ ያዘጋጁ
,Salary Register,ደመወዝ ይመዝገቡ
DocType: Company,Default warehouse for Sales Return,ለሽያጭ ተመላሽ ነባሪ መጋዘን
@@ -4910,7 +4901,6 @@
apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html,Pending Activities,በመጠባበቅ ላይ እንቅስቃሴዎች
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test_list.js,Create Lab Test,የቤተ ሙከራ ሙከራ ይፍጠሩ
DocType: Patient Appointment,Reminded,አስታውሷል
-DocType: Homepage Section,Cards,ካርዶች
apps/erpnext/erpnext/public/js/setup_wizard.js,View Chart of Accounts,የመለያዎች ሰንጠረዥ ይመልከቱ
DocType: Chapter Member,Chapter Member,የምዕራፍ አባል
DocType: Material Request Plan Item,Minimum Order Quantity,አነስተኛ የትዕዛዝ ብዛት
@@ -4928,7 +4918,7 @@
apps/erpnext/erpnext/hr/utils.py,Future dates not allowed,የወደፊት ቀናት አይፈቀዱም
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py,Expected Delivery Date should be after Sales Order Date,የተያዘው የመላኪያ ቀን ከሽያጭ ትእዛዝ ቀን በኋላ መሆን አለበት
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,Reorder Level,አስይዝ ደረጃ
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Chart Of Accounts Template,መለያዎች አብነት ነው ገበታ
+DocType: Company,Chart Of Accounts Template,መለያዎች አብነት ነው ገበታ
DocType: Attendance,Attendance Date,በስብሰባው ቀን
apps/erpnext/erpnext/assets/doctype/asset/asset.py,Update stock must be enable for the purchase invoice {0},ክምችት አዘምን ለግዢ ሂሳብ {0} መንቃት አለበት
apps/erpnext/erpnext/stock/get_item_details.py,Item Price updated for {0} in Price List {1},የእቃ ዋጋ {0} ውስጥ የዋጋ ዝርዝር ዘምኗል {1}
@@ -5492,8 +5482,6 @@
apps/erpnext/erpnext/accounts/doctype/shareholder/shareholder.js,Share Ledger,Ledger አጋራ
apps/erpnext/erpnext/healthcare/doctype/patient/patient.js,Sales Invoice {0} created,የሽያጭ ደረሰኝ {0} ተፈጥሯል
DocType: Employee,Confirmation Date,ማረጋገጫ ቀን
-apps/erpnext/erpnext/hr/doctype/employee_transfer/employee_transfer.py,"Please delete the Employee <a href=""#Form/Employee/{0}"">{0}</a>\
- to cancel this document","ይህንን ሰነድ ለመሰረዝ እባክዎ ሰራተኛውን <a href=""#Form/Employee/{0}"">{0}</a> \ ያጥፉ"
DocType: Inpatient Occupancy,Check Out,ጨርሰህ ውጣ
DocType: C-Form,Total Invoiced Amount,ጠቅላላ በደረሰኝ የተቀመጠው መጠን
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py,Min Qty can not be greater than Max Qty,ዝቅተኛ ብዛት ማክስ ብዛት በላይ ሊሆን አይችልም
@@ -5698,7 +5686,6 @@
DocType: Cheque Print Template,Cheque Width,ቼክ ስፋት
DocType: Selling Settings,Validate Selling Price for Item against Purchase Rate or Valuation Rate,የግዢ Rate ወይም ግምቱ ተመን ላይ ንጥል ለ ሽያጭ ዋጋ Validate
DocType: Fee Schedule,Fee Schedule,ክፍያ ፕሮግራም
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Column Labels : ,የአምድ መለያዎች
DocType: Bank Transaction,Settled,የተስተካከለ
apps/erpnext/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.html,Cess,Cess
DocType: Quality Feedback,Parameters,መለኪያዎች።
@@ -6372,6 +6359,7 @@
DocType: Salary Component,Formula,ፎርሙላ
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py,Serial #,ተከታታይ #
DocType: Material Request Plan Item,Required Quantity,የሚፈለግ ብዛት።
+DocType: Cash Flow Mapping Template,Template Name,የአብነት ስም
DocType: Lab Test Template,Lab Test Template,የሙከራ መለኪያ አብነት
apps/erpnext/erpnext/accounts/doctype/accounting_period/accounting_period.py,Accounting Period overlaps with {0},የሂሳብ ጊዜ ከ {0} ጋር ይደራረባል
apps/erpnext/erpnext/setup/doctype/company/company.py,Sales Account,የሽያጭ መለያ
@@ -6432,7 +6420,7 @@
DocType: Bank Reconciliation Detail,Cheque Date,ቼክ ቀን
apps/erpnext/erpnext/accounts/doctype/account/account.py,Account {0}: Parent account {1} does not belong to company: {2},መለያ {0}: የወላጅ መለያ {1} ኩባንያ የእርሱ ወገን አይደለም: {2}
apps/erpnext/erpnext/setup/doctype/company/company.js,Successfully deleted all transactions related to this company!,በተሳካ ሁኔታ ከዚህ ድርጅት ጋር የተያያዙ ሁሉም ግብይቶች ተሰርዟል!
-apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js,As on Date,ቀን ላይ እንደ
+apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.js,As on Date,ቀን ላይ እንደ
DocType: Additional Salary,HR,HR
DocType: Course Enrollment,Enrollment Date,የምዝገባ ቀን
DocType: Healthcare Settings,Out Patient SMS Alerts,ታካሚ የኤስኤምኤስ ማስጠንቀቂያዎች
@@ -6498,7 +6486,6 @@
DocType: Course Content,Quiz,ጥያቄ
DocType: Subscription,Trial Period End Date,የሙከራ ክፍለ ጊዜ መጨረሻ ቀን
apps/erpnext/erpnext/setup/doctype/authorization_control/authorization_control.py,Not authroized since {0} exceeds limits,{0} ገደብ አልፏል ጀምሮ authroized አይደለም
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Start entering data from here : ,ከዚህ ውስጥ ውሂብ ማስገባት ይጀምሩ
DocType: Serial No,Asset Status,የንብረት ሁኔታ
DocType: Sales Invoice,Over Dimensional Cargo (ODC),ከዲዛይነር ጭነት (ኦ ዲ ኤ ሲ)
DocType: Restaurant Order Entry,Restaurant Table,የምግብ ቤት ሰንጠረዥ
@@ -6724,7 +6711,6 @@
DocType: Contract,Party User,የጭፈራ ተጠቃሚ
apps/erpnext/erpnext/controllers/buying_controller.py,Assets not created for <b>{0}</b>. You will have to create asset manually.,ለ <b>{0}</b> ንብረቶች አልተፈጠሩም። ንብረት እራስዎ መፍጠር ይኖርብዎታል።
apps/erpnext/erpnext/stock/report/total_stock_summary/total_stock_summary.py,Please set Company filter blank if Group By is 'Company',የቡድን በ «ኩባንያ 'ከሆነ ኩባንያ ባዶ ማጣሪያ ያዘጋጁ እባክዎ
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Customer > Customer Group > Territory,ደንበኛ> የደንበኛ ቡድን> ግዛት
apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py,Posting Date cannot be future date,መለጠፍ ቀን ወደፊት ቀን ሊሆን አይችልም
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Row # {0}: Serial No {1} does not match with {2} {3},የረድፍ # {0}: መለያ አይ {1} ጋር አይዛመድም {2} {3}
DocType: Loan Repayment,Interest Payable,የወለድ ክፍያ
@@ -6959,7 +6945,6 @@
apps/erpnext/erpnext/accounts/report/share_balance/share_balance.py,Average Rate,አማካኝ ደረጃ
DocType: Appointment,Appointment With,ቀጠሮ በ
apps/erpnext/erpnext/controllers/accounts_controller.py,Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total,ጠቅላላ የክፍያ መጠን በክፍያ ሠንጠረዥ ውስጥ ከትልቅ / ጠቅላላ ድምር ጋር መሆን አለበት
-apps/erpnext/erpnext/hr/doctype/attendance/attendance_list.js,Mark attendance as <b></b>,ተገኝነትን እንደ ምልክት ያድርጉ <b></b>
apps/erpnext/erpnext/stock/doctype/item/item.py,"""Customer Provided Item"" cannot have Valuation Rate",“በደንበኞች የቀረበ ንጥል” የዋጋ ምጣኔ ሊኖረው አይችልም ፡፡
DocType: Subscription Plan Detail,Plan,ዕቅድ
apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py,Bank Statement balance as per General Ledger,አጠቃላይ የሒሳብ መዝገብ መሠረት የባንክ መግለጫ ቀሪ
@@ -7648,7 +7633,6 @@
apps/erpnext/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py,Maximum benefit amount of employee {0} exceeds {1},ከፍተኛ የደመወዝ መጠን {0} ከ {1}
apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py,Total allocated leaves are more than days in the period,ጠቅላላ የተመደበ ቅጠሎች ጊዜ ውስጥ ቀኖች በላይ ናቸው
DocType: Linked Soil Analysis,Linked Soil Analysis,የተገናኙ የአፈር ትንታኔ
-DocType: Pricing Rule,Percentage,በመቶ
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Item {0} must be a stock Item,ንጥል {0} ከአክሲዮን ንጥል መሆን አለበት
DocType: Manufacturing Settings,Default Work In Progress Warehouse,የሂደት መጋዘን ውስጥ ነባሪ ሥራ
apps/erpnext/erpnext/healthcare/doctype/practitioner_schedule/practitioner_schedule.js,"Schedules for {0} overlaps, do you want to proceed after skiping overlaped slots ?","ለ {0} የጊዜ ሰሌዳዎች መደቦች ተደራርበው, በተደጋጋሚ የተደባዙ ስሎዶች ከተዘለሉ በኋላ መቀጠል ይፈልጋሉ?"
diff --git a/erpnext/translations/ar.csv b/erpnext/translations/ar.csv
index f8f8466..b305fd9 100644
--- a/erpnext/translations/ar.csv
+++ b/erpnext/translations/ar.csv
@@ -168,12 +168,11 @@
DocType: Work Order Operation,Work In Progress,التقدم في العمل
DocType: Leave Control Panel,Branch (optional),فرع (اختياري)
apps/erpnext/erpnext/education/report/absent_student_report/absent_student_report.py,Please select date,يرجى تحديد التاريخ
-DocType: Item Price,Minimum Qty ,الكمية الدنيا
+apps/erpnext/erpnext/stock/report/product_bundle_balance/product_bundle_balance.py,Minimum Qty ,الكمية الدنيا
apps/erpnext/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py,BOM recursion: {0} cannot be child of {1},تكرار BOM: {0} لا يمكن أن يكون تابعًا لـ {1}
DocType: Finance Book,Finance Book,كتاب المالية
DocType: Patient Encounter,HLC-ENC-.YYYY.-,HLC-ENC-.YYYY.-
DocType: Appointment Booking Settings,Holiday List,قائمة العطلات
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,The parent account {0} does not exists,الحساب الأصل {0} غير موجود
apps/erpnext/erpnext/config/quality_management.py,Review and Action,مراجعة والعمل
apps/erpnext/erpnext/hr/doctype/employee_checkin/employee_checkin.py,This employee already has a log with the same timestamp.{0},هذا الموظف لديه بالفعل سجل بنفس الطابع الزمني. {0}
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Accountant,محاسب
@@ -245,7 +244,6 @@
DocType: Exchange Rate Revaluation Account,Gain/Loss,الربح / الخسارة
DocType: Crop,Perennial,الدائمة
DocType: Program,Is Published,يتم نشر
-apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js,Show Delivery Notes,إظهار ملاحظات التسليم
apps/erpnext/erpnext/controllers/status_updater.py,"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.",للسماح بزيادة الفواتير ، حدّث "Over Billing Allowance" في إعدادات الحسابات أو العنصر.
DocType: Patient Appointment,Procedure,إجراء
DocType: Accounts Settings,Use Custom Cash Flow Format,استخدم تنسيق التدفق النقدي المخصص
@@ -981,7 +979,6 @@
DocType: Patient,Risk Factors,عوامل الخطر
DocType: Patient,Occupational Hazards and Environmental Factors,المخاطر المهنية والعوامل البيئية
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Stock Entries already created for Work Order ,تم إنشاء إدخالات المخزون بالفعل لأمر العمل
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Item Code > Item Group > Brand,كود الصنف> مجموعة الصنف> العلامة التجارية
apps/erpnext/erpnext/templates/pages/cart.html,See past orders,انظر الطلبات السابقة
apps/erpnext/erpnext/public/js/hub/pages/Selling.vue,{0} conversations,{0} محادثات
DocType: Vital Signs,Respiratory rate,معدل التنفس
@@ -1139,7 +1136,6 @@
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,An error occurred during the update process,حدث خطأ أثناء عملية التحديث
DocType: Restaurant Reservation,Restaurant Reservation,حجز المطعم
apps/erpnext/erpnext/public/js/hub/Sidebar.vue,Your Items,البنود الخاصة بك
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Supplier > Supplier Type,مورد> نوع المورد
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Proposal Writing,تجهيز العروض
DocType: Payment Entry Deduction,Payment Entry Deduction,دفع الاشتراك خصم
DocType: Service Level Priority,Service Level Priority,أولوية مستوى الخدمة
@@ -1438,7 +1434,6 @@
apps/erpnext/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js,Please select Company and Posting Date to getting entries,يرجى تحديد الشركة وتاريخ النشر للحصول على إدخالات
DocType: Asset,Maintenance,صيانة
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test.js,Get from Patient Encounter,الحصول على من لقاء المريض
-apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,UOM Conversion factor ({0} -> {1}) not found for item: {2},معامل تحويل UOM ({0} -> {1}) غير موجود للعنصر: {2}
DocType: Subscriber,Subscriber,مكتتب
DocType: Item Attribute Value,Item Attribute Value,قيمة مواصفة الصنف
apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py,Currency Exchange must be applicable for Buying or for Selling.,يجب أن يكون صرف العملات ساريًا للشراء أو البيع.
@@ -1955,7 +1950,6 @@
DocType: Purchase Invoice,Is Return (Debit Note),هو العودة (ملاحظة الخصم)
DocType: Workstation,Wages,أجور
DocType: Asset Maintenance,Maintenance Manager Name,اسم مدير الصيانة
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js,Transactions against the company already exist! ,المعاملات ضد الشركة موجودة بالفعل!
apps/erpnext/erpnext/buying/report/procurement_tracker/procurement_tracker.py,Requesting Site,طلب موقع
DocType: Agriculture Task,Urgent,عاجل
apps/erpnext/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js,Fetching records......,جلب السجلات ......
@@ -2653,7 +2647,6 @@
apps/erpnext/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.py,The Payment Term at row {0} is possibly a duplicate.,قد يكون مصطلح الدفع في الصف {0} مكررا.
apps/erpnext/erpnext/public/js/setup_wizard.js,Agriculture (beta),الزراعة (تجريبي)
apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.js,Packing Slip,قائمة بمحتويات الشحنة
-apps/erpnext/erpnext/setup/doctype/naming_series/naming_series.py,Please set Naming Series for {0} via Setup > Settings > Naming Series,يرجى تعيين سلسلة التسمية لـ {0} عبر الإعداد> الإعدادات> سلسلة التسمية
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py,Office Rent,ايجار مكتب
apps/erpnext/erpnext/config/settings.py,Setup SMS gateway settings,إعدادات العبارة SMS
DocType: Disease,Common Name,اسم شائع
@@ -2819,7 +2812,6 @@
apps/erpnext/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py,Leaves Allocated Successfully for {0},الاجازات خصصت بنجاح ل {0}
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py,No Items to pack,لا توجد عناصر لحزمة
apps/erpnext/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py,Only .csv and .xlsx files are supported currently,فقط ملفات .csv و .xlsx مدعومة حاليًا
-apps/erpnext/erpnext/hr/doctype/employee/employee.py,Please setup Employee Naming System in Human Resource > HR Settings,يرجى إعداد نظام تسمية الموظف في الموارد البشرية> إعدادات الموارد البشرية
DocType: Shipping Rule Condition,From Value,من القيمة
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Manufacturing Quantity is mandatory,تصنيع الكمية إلزامي
DocType: Loan,Repayment Method,طريقة السداد
@@ -4067,7 +4059,6 @@
apps/erpnext/erpnext/templates/form_grid/material_request_grid.html,Required On,مطلوب في
DocType: HR Settings,"If checked, hides and disables Rounded Total field in Salary Slips",إذا تم تحديده ، يقوم بإخفاء وتعطيل حقل Rounded Total في قسائم الرواتب
DocType: Woocommerce Settings,This is the default offset (days) for the Delivery Date in Sales Orders. The fallback offset is 7 days from the order placement date.,هذا هو الإزاحة الافتراضية (أيام) لتاريخ التسليم في أوامر المبيعات. الإزاحة الاحتياطية هي 7 أيام من تاريخ وضع الطلب.
-apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py,Please setup numbering series for Attendance via Setup > Numbering Series,يرجى إعداد سلسلة الترقيم للحضور عبر الإعداد> سلسلة الترقيم
DocType: Rename Tool,File to Rename,إعادة تسمية الملف
apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,Please select BOM for Item in Row {0},الرجاء تحديد قائمة المواد للبند في الصف {0}
apps/erpnext/erpnext/accounts/doctype/subscription/subscription.js,Fetch Subscription Updates,جلب تحديثات الاشتراك
@@ -4702,7 +4693,6 @@
DocType: Cash Flow Mapping,Is Finance Cost,تكلفة التمويل
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py,Attendance for employee {0} is already marked,تم وضع علامة حضور للموظف {0} بالفعل
DocType: Packing Slip,If more than one package of the same type (for print),إذا كان أكثر من حزمة واحدة من نفس النوع (للطباعة)
-apps/erpnext/erpnext/education/doctype/instructor/instructor.py,Please setup Instructor Naming System in Education > Education Settings,يرجى إعداد نظام تسمية المدرب في التعليم> إعدادات التعليم
apps/erpnext/erpnext/restaurant/doctype/restaurant_order_entry/restaurant_order_entry.py,Please set default customer in Restaurant Settings,يرجى تعيين العملاء الافتراضي في إعدادات المطعم
,Salary Register,راتب التسجيل
DocType: Company,Default warehouse for Sales Return,المستودع الافتراضي لعائد المبيعات
@@ -4973,7 +4963,6 @@
apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html,Pending Activities,الأنشطة المعلقة
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test_list.js,Create Lab Test,إنشاء اختبار معملي
DocType: Patient Appointment,Reminded,ذكر
-DocType: Homepage Section,Cards,بطاقات
apps/erpnext/erpnext/public/js/setup_wizard.js,View Chart of Accounts,عرض الرسم البياني للحسابات
DocType: Chapter Member,Chapter Member,عضو الفصل
DocType: Material Request Plan Item,Minimum Order Quantity,أقل كمية ممكن طلبها
@@ -4991,7 +4980,7 @@
apps/erpnext/erpnext/hr/utils.py,Future dates not allowed,التواريخ المستقبلية غير مسموح بها
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py,Expected Delivery Date should be after Sales Order Date,يجب أن يكون تاريخ التسليم المتوقع بعد تاريخ أمر المبيعات
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,Reorder Level,مستوى اعادة الطلب
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Chart Of Accounts Template,نمودج دليل الحسابات
+DocType: Company,Chart Of Accounts Template,نمودج دليل الحسابات
DocType: Attendance,Attendance Date,تاريخ الحضور
apps/erpnext/erpnext/assets/doctype/asset/asset.py,Update stock must be enable for the purchase invoice {0},يجب تمكين مخزون التحديث لفاتورة الشراء {0}
apps/erpnext/erpnext/stock/get_item_details.py,Item Price updated for {0} in Price List {1},سعر الصنف محدث ل{0} في قائمة الأسعار {1}
@@ -5556,8 +5545,6 @@
apps/erpnext/erpnext/accounts/doctype/shareholder/shareholder.js,Share Ledger,مشاركة دفتر الأستاذ
apps/erpnext/erpnext/healthcare/doctype/patient/patient.js,Sales Invoice {0} created,تم إنشاء فاتورة المبيعات {0}
DocType: Employee,Confirmation Date,تاريخ التأكيد
-apps/erpnext/erpnext/hr/doctype/employee_transfer/employee_transfer.py,"Please delete the Employee <a href=""#Form/Employee/{0}"">{0}</a>\
- to cancel this document","يرجى حذف الموظف <a href=""#Form/Employee/{0}"">{0}</a> \ لإلغاء هذا المستند"
DocType: Inpatient Occupancy,Check Out,الدفع
DocType: C-Form,Total Invoiced Amount,إجمالي مبلغ الفاتورة
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py,Min Qty can not be greater than Max Qty,الكمية الادنى لايمكن ان تكون اكبر من الكمية الاعلى
@@ -5764,7 +5751,6 @@
DocType: Cheque Print Template,Cheque Width,عرض الشيك
DocType: Selling Settings,Validate Selling Price for Item against Purchase Rate or Valuation Rate,تحقق من سعر البيع للالبند ضد سعر الشراء أو معدل التقييم
DocType: Fee Schedule,Fee Schedule,جدول التكاليف
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Column Labels : ,تسميات الأعمدة:
DocType: Bank Transaction,Settled,تسوية
apps/erpnext/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.html,Cess,سيس
DocType: Quality Feedback,Parameters,المعلمات
@@ -6438,6 +6424,7 @@
DocType: Salary Component,Formula,صيغة
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py,Serial #,المسلسل #
DocType: Material Request Plan Item,Required Quantity,الكمية المطلوبة
+DocType: Cash Flow Mapping Template,Template Name,اسم القالب
DocType: Lab Test Template,Lab Test Template,قالب اختبار المختبر
apps/erpnext/erpnext/accounts/doctype/accounting_period/accounting_period.py,Accounting Period overlaps with {0},فترة المحاسبة تتداخل مع {0}
apps/erpnext/erpnext/setup/doctype/company/company.py,Sales Account,حساب مبيعات
@@ -6498,7 +6485,7 @@
DocType: Bank Reconciliation Detail,Cheque Date,تاريخ الشيك
apps/erpnext/erpnext/accounts/doctype/account/account.py,Account {0}: Parent account {1} does not belong to company: {2},الحساب {0}: الحساب الرئيسي {1} لا ينتمي إلى الشركة: {2}
apps/erpnext/erpnext/setup/doctype/company/company.js,Successfully deleted all transactions related to this company!,تم حذف جميع المعاملات المتعلقة بهذه الشركة!
-apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js,As on Date,كما هو بتاريخ
+apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.js,As on Date,كما هو بتاريخ
DocType: Additional Salary,HR,الموارد البشرية
DocType: Course Enrollment,Enrollment Date,تاريخ التسجيل
DocType: Healthcare Settings,Out Patient SMS Alerts,خارج التنبيهات سمز المريض
@@ -6564,7 +6551,6 @@
DocType: Course Content,Quiz,لغز
DocType: Subscription,Trial Period End Date,تاريخ انتهاء الفترة التجريبية
apps/erpnext/erpnext/setup/doctype/authorization_control/authorization_control.py,Not authroized since {0} exceeds limits,غير مخول عندما {0} تتجاوز الحدود
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Start entering data from here : ,ابدأ في إدخال البيانات من هنا:
DocType: Serial No,Asset Status,حالة الأصول
DocType: Sales Invoice,Over Dimensional Cargo (ODC),عبر البعد الشحن (ODC)
DocType: Restaurant Order Entry,Restaurant Table,طاولة المطعم
@@ -6791,7 +6777,6 @@
DocType: Contract,Party User,مستخدم الحزب
apps/erpnext/erpnext/controllers/buying_controller.py,Assets not created for <b>{0}</b>. You will have to create asset manually.,الأصول التي لم يتم تكوينها لـ <b>{0}</b> . سيكون عليك إنشاء أصل يدويًا.
apps/erpnext/erpnext/stock/report/total_stock_summary/total_stock_summary.py,Please set Company filter blank if Group By is 'Company',الرجاء تعيين فلتر الشركة فارغا إذا كانت المجموعة بي هي 'كومباني'
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Customer > Customer Group > Territory,العملاء> مجموعة العملاء> الإقليم
apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py,Posting Date cannot be future date,تاريخ النشر لا يمكن أن يكون تاريخ مستقبلي
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Row # {0}: Serial No {1} does not match with {2} {3},الصف # {0}: الرقم التسلسلي {1} لا يتطابق مع {2} {3}
DocType: Loan Repayment,Interest Payable,الفوائد المستحقة الدفع
@@ -7026,7 +7011,6 @@
apps/erpnext/erpnext/accounts/report/share_balance/share_balance.py,Average Rate,المعدل المتوسط
DocType: Appointment,Appointment With,موعد مع
apps/erpnext/erpnext/controllers/accounts_controller.py,Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total,يجب أن يكون إجمالي مبلغ الدفع في جدول الدفع مساويا للمجموع الكبير / المستدير
-apps/erpnext/erpnext/hr/doctype/attendance/attendance_list.js,Mark attendance as <b></b>,علامة الحضور كما <b></b>
apps/erpnext/erpnext/stock/doctype/item/item.py,"""Customer Provided Item"" cannot have Valuation Rate","""الأصناف المقدمة من العملاء"" لا يمكن ان تحتوي على تكلفة"
DocType: Subscription Plan Detail,Plan,خطة
apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py,Bank Statement balance as per General Ledger,كشف رصيد الحساب المصرفي وفقا لدفتر الأستاذ العام
@@ -7721,7 +7705,6 @@
apps/erpnext/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py,Maximum benefit amount of employee {0} exceeds {1},أقصى مبلغ لمبلغ الموظف {0} يتجاوز {1}
apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py,Total allocated leaves are more than days in the period,مجموع الأوراق المخصصة هي أكثر من أيام في الفترة
DocType: Linked Soil Analysis,Linked Soil Analysis,تحليل التربة المرتبط
-DocType: Pricing Rule,Percentage,النسبة المئوية
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Item {0} must be a stock Item,البند {0} يجب أن يكون البند الأسهم
DocType: Manufacturing Settings,Default Work In Progress Warehouse,افتراضي العمل في مستودع التقدم
apps/erpnext/erpnext/healthcare/doctype/practitioner_schedule/practitioner_schedule.js,"Schedules for {0} overlaps, do you want to proceed after skiping overlaped slots ?",جداول التداخلات {0} ، هل تريد المتابعة بعد تخطي الفتحات المتراكبة؟
diff --git a/erpnext/translations/bg.csv b/erpnext/translations/bg.csv
index 396c296..5cdac6f 100644
--- a/erpnext/translations/bg.csv
+++ b/erpnext/translations/bg.csv
@@ -168,12 +168,11 @@
DocType: Work Order Operation,Work In Progress,Незавършено производство
DocType: Leave Control Panel,Branch (optional),Клон (незадължително)
apps/erpnext/erpnext/education/report/absent_student_report/absent_student_report.py,Please select date,"Моля, изберете дата"
-DocType: Item Price,Minimum Qty ,Минимален брой
+apps/erpnext/erpnext/stock/report/product_bundle_balance/product_bundle_balance.py,Minimum Qty ,Минимален брой
apps/erpnext/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py,BOM recursion: {0} cannot be child of {1},BOM рекурсия: {0} не може да бъде дете на {1}
DocType: Finance Book,Finance Book,Финансова книга
DocType: Patient Encounter,HLC-ENC-.YYYY.-,HLC-ENC-.YYYY.-
DocType: Appointment Booking Settings,Holiday List,Списък на празиниците
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,The parent account {0} does not exists,Родителският акаунт {0} не съществува
apps/erpnext/erpnext/config/quality_management.py,Review and Action,Преглед и действие
apps/erpnext/erpnext/hr/doctype/employee_checkin/employee_checkin.py,This employee already has a log with the same timestamp.{0},Този служител вече има дневник със същата времева марка. {0}
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Accountant,Счетоводител
@@ -245,7 +244,6 @@
DocType: Exchange Rate Revaluation Account,Gain/Loss,Печалба / загуба
DocType: Crop,Perennial,целогодишен
DocType: Program,Is Published,Издава се
-apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js,Show Delivery Notes,Показване на бележки за доставка
apps/erpnext/erpnext/controllers/status_updater.py,"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.","За да разрешите над таксуване, актуализирайте „Над надбавка за фактуриране“ в Настройки на акаунти или Елемент."
DocType: Patient Appointment,Procedure,процедура
DocType: Accounts Settings,Use Custom Cash Flow Format,Използвайте персонализиран формат на паричен поток
@@ -981,7 +979,6 @@
DocType: Patient,Risk Factors,Рискови фактори
DocType: Patient,Occupational Hazards and Environmental Factors,Професионални опасности и фактори на околната среда
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Stock Entries already created for Work Order ,Вече се създават записи за поръчка за работа
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Item Code > Item Group > Brand,Код на артикула> Група артикули> Марка
apps/erpnext/erpnext/templates/pages/cart.html,See past orders,Вижте минали поръчки
apps/erpnext/erpnext/public/js/hub/pages/Selling.vue,{0} conversations,{0} разговори
DocType: Vital Signs,Respiratory rate,Респираторна скорост
@@ -1139,7 +1136,6 @@
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,An error occurred during the update process,Възникна грешка по време на процеса на актуализиране
DocType: Restaurant Reservation,Restaurant Reservation,Ресторант Резервация
apps/erpnext/erpnext/public/js/hub/Sidebar.vue,Your Items,Вашите вещи
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Supplier > Supplier Type,Доставчик> Тип доставчик
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Proposal Writing,Предложение за писане
DocType: Payment Entry Deduction,Payment Entry Deduction,Плащането - отстъпка/намаление
DocType: Service Level Priority,Service Level Priority,Приоритет на нивото на услугата
@@ -1438,7 +1434,6 @@
apps/erpnext/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js,Please select Company and Posting Date to getting entries,"Моля, изберете Фирма и дата на публикуване, за да получавате записи"
DocType: Asset,Maintenance,Поддръжка
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test.js,Get from Patient Encounter,Излез от срещата с пациента
-apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,UOM Conversion factor ({0} -> {1}) not found for item: {2},Коефициент на конверсия на UOM ({0} -> {1}) не е намерен за елемент: {2}
DocType: Subscriber,Subscriber,абонат
DocType: Item Attribute Value,Item Attribute Value,Позиция атрибут - Стойност
apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py,Currency Exchange must be applicable for Buying or for Selling.,Валутната обмяна трябва да бъде приложима при закупуване или продажба.
@@ -1936,7 +1931,6 @@
DocType: Purchase Invoice,Is Return (Debit Note),Връща се (дебитна бележка)
DocType: Workstation,Wages,Заплати
DocType: Asset Maintenance,Maintenance Manager Name,Име на мениджъра на поддръжката
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js,Transactions against the company already exist! ,Сделките срещу компанията вече съществуват!
apps/erpnext/erpnext/buying/report/procurement_tracker/procurement_tracker.py,Requesting Site,Заявка на сайт
DocType: Agriculture Task,Urgent,Спешно
apps/erpnext/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js,Fetching records......,Извличане на записи ......
@@ -2633,7 +2627,6 @@
apps/erpnext/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.py,The Payment Term at row {0} is possibly a duplicate.,Срокът за плащане на ред {0} е вероятно дубликат.
apps/erpnext/erpnext/public/js/setup_wizard.js,Agriculture (beta),Селското стопанство (бета)
apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.js,Packing Slip,Приемо-предавателен протокол
-apps/erpnext/erpnext/setup/doctype/naming_series/naming_series.py,Please set Naming Series for {0} via Setup > Settings > Naming Series,"Моля, задайте Именуване на серия за {0} чрез Настройка> Настройки> Наименуване на серия"
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py,Office Rent,Офис под наем
apps/erpnext/erpnext/config/settings.py,Setup SMS gateway settings,Настройки Setup SMS Gateway
DocType: Disease,Common Name,Често срещано име
@@ -2799,7 +2792,6 @@
apps/erpnext/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py,Leaves Allocated Successfully for {0},Листата Разпределен успешно в продължение на {0}
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py,No Items to pack,Няма елементи за опаковане
apps/erpnext/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py,Only .csv and .xlsx files are supported currently,Понастоящем се поддържат само .csv и .xlsx файлове
-apps/erpnext/erpnext/hr/doctype/employee/employee.py,Please setup Employee Naming System in Human Resource > HR Settings,"Моля, настройте системата за именуване на служители в Човешки ресурси> Настройки за човешки ресурси"
DocType: Shipping Rule Condition,From Value,От стойност
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Manufacturing Quantity is mandatory,Произвеждано количество е задължително
DocType: Loan,Repayment Method,Възстановяване Метод
@@ -4046,7 +4038,6 @@
apps/erpnext/erpnext/templates/form_grid/material_request_grid.html,Required On,Необходим на
DocType: HR Settings,"If checked, hides and disables Rounded Total field in Salary Slips","Ако е поставено отметка, скрива и деактивира поле Окръглена обща стойност в фишовете за заплати"
DocType: Woocommerce Settings,This is the default offset (days) for the Delivery Date in Sales Orders. The fallback offset is 7 days from the order placement date.,Това е компенсиране по подразбиране (дни) за датата на доставка в поръчки за продажби. Резервното компенсиране е 7 дни от датата на поставяне на поръчката.
-apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py,Please setup numbering series for Attendance via Setup > Numbering Series,"Моля, настройте номерацията на сериите за присъствие чрез настройка> серия от номерация"
DocType: Rename Tool,File to Rename,Файл за Преименуване
apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,Please select BOM for Item in Row {0},Моля изберете BOM за позиция в Row {0}
apps/erpnext/erpnext/accounts/doctype/subscription/subscription.js,Fetch Subscription Updates,Извличане на актуализации на абонаментите
@@ -4649,7 +4640,6 @@
DocType: Cash Flow Mapping,Is Finance Cost,Финансовата цена е
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py,Attendance for employee {0} is already marked,Присъствие на служител {0} вече е маркирана
DocType: Packing Slip,If more than one package of the same type (for print),Ако повече от един пакет от същия тип (за печат)
-apps/erpnext/erpnext/education/doctype/instructor/instructor.py,Please setup Instructor Naming System in Education > Education Settings,"Моля, настройте системата за именуване на инструктори в Образование> Настройки за образование"
apps/erpnext/erpnext/restaurant/doctype/restaurant_order_entry/restaurant_order_entry.py,Please set default customer in Restaurant Settings,"Моля, задайте клиент по подразбиране в настройките на ресторанта"
,Salary Register,Заплата Регистрирайте се
DocType: Company,Default warehouse for Sales Return,По подразбиране склад за връщане на продажби
@@ -4920,7 +4910,6 @@
apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html,Pending Activities,Предстоящите дейности
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test_list.js,Create Lab Test,Създайте лабораторен тест
DocType: Patient Appointment,Reminded,Напомнено
-DocType: Homepage Section,Cards,карти
apps/erpnext/erpnext/public/js/setup_wizard.js,View Chart of Accounts,Преглед на плана на сметките
DocType: Chapter Member,Chapter Member,Член на главата
DocType: Material Request Plan Item,Minimum Order Quantity,Минимално Количество за Поръчка
@@ -4938,7 +4927,7 @@
apps/erpnext/erpnext/hr/utils.py,Future dates not allowed,Бъдещите дати не са разрешени
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py,Expected Delivery Date should be after Sales Order Date,Очакваната дата на доставка трябва да бъде след датата на поръчката за продажба
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,Reorder Level,Пренареждане Level
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Chart Of Accounts Template,Сметкоплан - Шаблон
+DocType: Company,Chart Of Accounts Template,Сметкоплан - Шаблон
DocType: Attendance,Attendance Date,Присъствие Дата
apps/erpnext/erpnext/assets/doctype/asset/asset.py,Update stock must be enable for the purchase invoice {0},Актуализирането на запас трябва да бъде разрешено за фактурата за покупка {0}
apps/erpnext/erpnext/stock/get_item_details.py,Item Price updated for {0} in Price List {1},Елемент Цена актуализиран за {0} в Ценовата листа {1}
@@ -5503,8 +5492,6 @@
apps/erpnext/erpnext/accounts/doctype/shareholder/shareholder.js,Share Ledger,Акционерна книга
apps/erpnext/erpnext/healthcare/doctype/patient/patient.js,Sales Invoice {0} created,Създадена е фактура за продажба {0}
DocType: Employee,Confirmation Date,Потвърждение Дата
-apps/erpnext/erpnext/hr/doctype/employee_transfer/employee_transfer.py,"Please delete the Employee <a href=""#Form/Employee/{0}"">{0}</a>\
- to cancel this document","Моля, изтрийте Служителя <a href=""#Form/Employee/{0}"">{0}</a> \, за да отмените този документ"
DocType: Inpatient Occupancy,Check Out,Разгледайте
DocType: C-Form,Total Invoiced Amount,Общо Сума по фактура
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py,Min Qty can not be greater than Max Qty,Минималното количество не може да бъде по-голяма от максималното количество
@@ -5711,7 +5698,6 @@
DocType: Cheque Print Template,Cheque Width,Чек Ширина
DocType: Selling Settings,Validate Selling Price for Item against Purchase Rate or Valuation Rate,Валидиране на продажна цена за позиция срещу процент за закупуване или цена по оценка
DocType: Fee Schedule,Fee Schedule,График за такса
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Column Labels : ,Етикети на колоните:
DocType: Bank Transaction,Settled,установен
apps/erpnext/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.html,Cess,данък
DocType: Quality Feedback,Parameters,Параметри
@@ -6385,6 +6371,7 @@
DocType: Salary Component,Formula,формула
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py,Serial #,Serial #
DocType: Material Request Plan Item,Required Quantity,Необходимо количество
+DocType: Cash Flow Mapping Template,Template Name,Име на шаблона
DocType: Lab Test Template,Lab Test Template,Лабораторен тестов шаблон
apps/erpnext/erpnext/accounts/doctype/accounting_period/accounting_period.py,Accounting Period overlaps with {0},Счетоводният период се припокрива с {0}
apps/erpnext/erpnext/setup/doctype/company/company.py,Sales Account,Профил за продажби
@@ -6445,7 +6432,7 @@
DocType: Bank Reconciliation Detail,Cheque Date,Чек Дата
apps/erpnext/erpnext/accounts/doctype/account/account.py,Account {0}: Parent account {1} does not belong to company: {2},Сметка {0}: Родителска сметка {1} не принадлежи на фирмата: {2}
apps/erpnext/erpnext/setup/doctype/company/company.js,Successfully deleted all transactions related to this company!,"Успешно изтрити всички транзакции, свързани с тази компания!"
-apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js,As on Date,Както по Дата
+apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.js,As on Date,Както по Дата
DocType: Additional Salary,HR,ЧР
DocType: Course Enrollment,Enrollment Date,Записван - Дата
DocType: Healthcare Settings,Out Patient SMS Alerts,Извън SMS съобщения за пациента
@@ -6511,7 +6498,6 @@
DocType: Course Content,Quiz,викторина
DocType: Subscription,Trial Period End Date,Крайна дата на пробния период
apps/erpnext/erpnext/setup/doctype/authorization_control/authorization_control.py,Not authroized since {0} exceeds limits,Не authroized тъй {0} надхвърля границите
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Start entering data from here : ,Започнете да въвеждате данни от тук:
DocType: Serial No,Asset Status,Състояние на активите
DocType: Sales Invoice,Over Dimensional Cargo (ODC),Различни товари (ODC)
DocType: Restaurant Order Entry,Restaurant Table,Ресторант Маса
@@ -6737,7 +6723,6 @@
DocType: Contract,Party User,Потребител на партия
apps/erpnext/erpnext/controllers/buying_controller.py,Assets not created for <b>{0}</b>. You will have to create asset manually.,Активите не са създадени за <b>{0}</b> . Ще трябва да създадете актив ръчно.
apps/erpnext/erpnext/stock/report/total_stock_summary/total_stock_summary.py,Please set Company filter blank if Group By is 'Company',"Моля, поставете фирмения филтър празен, ако Group By е "Company""
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Customer > Customer Group > Territory,Клиент> Клиентска група> Територия
apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py,Posting Date cannot be future date,Публикуване Дата не може да бъде бъдеща дата
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Row # {0}: Serial No {1} does not match with {2} {3},Row # {0}: Пореден № {1} не съвпада с {2} {3}
DocType: Loan Repayment,Interest Payable,Дължими лихви
@@ -6972,7 +6957,6 @@
apps/erpnext/erpnext/accounts/report/share_balance/share_balance.py,Average Rate,Средна цена
DocType: Appointment,Appointment With,Назначение С
apps/erpnext/erpnext/controllers/accounts_controller.py,Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total,Общата сума за плащане в График на плащанията трябва да е равна на Голямо / Закръглено Общо
-apps/erpnext/erpnext/hr/doctype/attendance/attendance_list.js,Mark attendance as <b></b>,Отбележете присъствието като <b></b>
apps/erpnext/erpnext/stock/doctype/item/item.py,"""Customer Provided Item"" cannot have Valuation Rate","„Предмет, предоставен от клиента“ не може да има процент на оценка"
DocType: Subscription Plan Detail,Plan,план
apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py,Bank Statement balance as per General Ledger,Банково извлечение по Главна книга
@@ -7663,7 +7647,6 @@
apps/erpnext/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py,Maximum benefit amount of employee {0} exceeds {1},Максималната стойност на доходите на служител {0} надвишава {1}
apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py,Total allocated leaves are more than days in the period,Общо отпуснати листа са повече от дните през периода
DocType: Linked Soil Analysis,Linked Soil Analysis,Свързан анализ на почвите
-DocType: Pricing Rule,Percentage,Процент
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Item {0} must be a stock Item,Позиция {0} трябва да бъде позиция със следене на наличности
DocType: Manufacturing Settings,Default Work In Progress Warehouse,Склад за незав.производство по подразбиране
apps/erpnext/erpnext/healthcare/doctype/practitioner_schedule/practitioner_schedule.js,"Schedules for {0} overlaps, do you want to proceed after skiping overlaped slots ?","Графики за припокриване на {0}, искате ли да продължите, след като прескочите припокритите слотове?"
diff --git a/erpnext/translations/bn.csv b/erpnext/translations/bn.csv
index 24f3fbe..f586e66 100644
--- a/erpnext/translations/bn.csv
+++ b/erpnext/translations/bn.csv
@@ -167,11 +167,10 @@
DocType: Work Order Operation,Work In Progress,কাজ চলছে
DocType: Leave Control Panel,Branch (optional),শাখা (alচ্ছিক)
apps/erpnext/erpnext/education/report/absent_student_report/absent_student_report.py,Please select date,দয়া করে তারিখ নির্বাচন
-DocType: Item Price,Minimum Qty ,ন্যূনতম Qty
+apps/erpnext/erpnext/stock/report/product_bundle_balance/product_bundle_balance.py,Minimum Qty ,ন্যূনতম Qty
DocType: Finance Book,Finance Book,ফাইন্যান্স বুক
DocType: Patient Encounter,HLC-ENC-.YYYY.-,HLC-ENC-.YYYY.-
DocType: Appointment Booking Settings,Holiday List,ছুটির তালিকা
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,The parent account {0} does not exists,প্যারেন্ট অ্যাকাউন্ট {0} বিদ্যমান নেই
apps/erpnext/erpnext/config/quality_management.py,Review and Action,পর্যালোচনা এবং কর্ম
apps/erpnext/erpnext/hr/doctype/employee_checkin/employee_checkin.py,This employee already has a log with the same timestamp.{0},এই কর্মচারীর ইতিমধ্যে একই টাইমস্ট্যাম্পের একটি লগ রয়েছে {0}
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Accountant,হিসাবরক্ষক
@@ -243,7 +242,6 @@
DocType: Exchange Rate Revaluation Account,Gain/Loss,লাভ ক্ষতি
DocType: Crop,Perennial,বহুবর্ষজীবী
DocType: Program,Is Published,প্রকাশিত হয়
-apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js,Show Delivery Notes,বিতরণ নোটগুলি প্রদর্শন করুন
apps/erpnext/erpnext/controllers/status_updater.py,"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.",অতিরিক্ত বিলিংয়ের অনুমতি দেওয়ার জন্য অ্যাকাউন্টস সেটিংস বা আইটেমটিতে "ওভার বিলিং ভাতা" আপডেট করুন।
DocType: Patient Appointment,Procedure,কার্যপ্রণালী
DocType: Accounts Settings,Use Custom Cash Flow Format,কাস্টম ক্যাশ ফ্লো বিন্যাস ব্যবহার করুন
@@ -963,7 +961,6 @@
DocType: Patient,Risk Factors,ঝুঁকির কারণ
DocType: Patient,Occupational Hazards and Environmental Factors,পেশাগত ঝুঁকি এবং পরিবেশগত ফ্যাক্টর
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Stock Entries already created for Work Order ,স্টক তালিকাগুলি ইতিমধ্যে ওয়ার্ক অর্ডারের জন্য তৈরি করা হয়েছে
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Item Code > Item Group > Brand,আইটেম কোড> আইটেম গ্রুপ> ব্র্যান্ড
apps/erpnext/erpnext/templates/pages/cart.html,See past orders,অতীত আদেশ দেখুন
apps/erpnext/erpnext/public/js/hub/pages/Selling.vue,{0} conversations,{0} কথোপকথন
DocType: Vital Signs,Respiratory rate,শ্বাসপ্রশ্বাসের হার
@@ -1116,7 +1113,6 @@
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,An error occurred during the update process,আপডেট প্রক্রিয়ার সময় একটি ত্রুটি ঘটেছে
DocType: Restaurant Reservation,Restaurant Reservation,রেস্টুরেন্ট রিজার্ভেশন
apps/erpnext/erpnext/public/js/hub/Sidebar.vue,Your Items,আপনার আইটেম
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Supplier > Supplier Type,সরবরাহকারী> সরবরাহকারী প্রকার
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Proposal Writing,প্রস্তাবনা লিখন
DocType: Payment Entry Deduction,Payment Entry Deduction,পেমেন্ট এণ্ট্রি সিদ্ধান্তগ্রহণ
DocType: Service Level Priority,Service Level Priority,পরিষেবা স্তরের অগ্রাধিকার
@@ -1411,7 +1407,6 @@
apps/erpnext/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js,Please select Company and Posting Date to getting entries,অনুগ্রহ করে এন্ট্রি পাওয়ার জন্য কোম্পানি এবং পোস্টিং তারিখ নির্বাচন করুন
DocType: Asset,Maintenance,রক্ষণাবেক্ষণ
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test.js,Get from Patient Encounter,রোগীর এনকাউন্টার থেকে পান
-apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,UOM Conversion factor ({0} -> {1}) not found for item: {2},ইউওএম রূপান্তর ফ্যাক্টর ({0} -> {1}) আইটেমটির জন্য পাওয়া যায় নি: {2}
DocType: Subscriber,Subscriber,গ্রাহক
DocType: Item Attribute Value,Item Attribute Value,আইটেম মান গুন
apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py,Currency Exchange must be applicable for Buying or for Selling.,মুদ্রা বিনিময় কেনা বা বিক্রয়ের জন্য প্রযোজ্য হবে।
@@ -1906,7 +1901,6 @@
DocType: Purchase Invoice,Is Return (Debit Note),রিটার্ন (ডেবিট নোট)
DocType: Workstation,Wages,মজুরি
DocType: Asset Maintenance,Maintenance Manager Name,রক্ষণাবেক্ষণ ম্যানেজার নাম
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js,Transactions against the company already exist! ,কোম্পানির বিরুদ্ধে লেনদেন ইতিমধ্যে বিদ্যমান!
apps/erpnext/erpnext/buying/report/procurement_tracker/procurement_tracker.py,Requesting Site,অনুরোধ সাইট
DocType: Agriculture Task,Urgent,জরুরী
apps/erpnext/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js,Fetching records......,রেকর্ড আনছে ......
@@ -2750,7 +2744,6 @@
apps/erpnext/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py,Leaves Allocated Successfully for {0},সাফল্যের বরাদ্দ পাতার {0}
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py,No Items to pack,কোনও আইটেম প্যাক
apps/erpnext/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py,Only .csv and .xlsx files are supported currently,বর্তমানে কেবলমাত্র .csv এবং .xlsx ফাইলগুলি সমর্থিত
-apps/erpnext/erpnext/hr/doctype/employee/employee.py,Please setup Employee Naming System in Human Resource > HR Settings,মানব সম্পদ> এইচআর সেটিংসে কর্মচারী নামকরণ সিস্টেম সেটআপ করুন
DocType: Shipping Rule Condition,From Value,মূল্য থেকে
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Manufacturing Quantity is mandatory,উৎপাদন পরিমাণ বাধ্যতামূলক
DocType: Loan,Repayment Method,পরিশোধ পদ্ধতি
@@ -3968,7 +3961,6 @@
apps/erpnext/erpnext/templates/form_grid/material_request_grid.html,Required On,প্রয়োজনীয় উপর
DocType: HR Settings,"If checked, hides and disables Rounded Total field in Salary Slips","যদি চেক করা থাকে, বেতন স্লিপগুলিতে গোলাকার মোট ক্ষেত্রটি লুকায় ও অক্ষম করে"
DocType: Woocommerce Settings,This is the default offset (days) for the Delivery Date in Sales Orders. The fallback offset is 7 days from the order placement date.,বিক্রয় অর্ডারে বিতরণ তারিখের জন্য এটি ডিফল্ট অফসেট (দিন)। অর্ডার প্লেসমেন্টের তারিখ থেকে ফ্যালব্যাক অফসেটটি 7 দিন।
-apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py,Please setup numbering series for Attendance via Setup > Numbering Series,দয়া করে সেটআপ> নম্বরিং সিরিজের মাধ্যমে উপস্থিতির জন্য সংখ্যায়ন সিরিজটি সেট করুন
DocType: Rename Tool,File to Rename,পুনঃনামকরণ করা ফাইল
apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,Please select BOM for Item in Row {0},সারি মধ্যে আইটেম জন্য BOM দয়া করে নির্বাচন করুন {0}
apps/erpnext/erpnext/accounts/doctype/subscription/subscription.js,Fetch Subscription Updates,সদস্যতা আপডেটগুলি আনুন
@@ -4564,7 +4556,6 @@
DocType: Cash Flow Mapping,Is Finance Cost,অর্থ খরচ হয়
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py,Attendance for employee {0} is already marked,কর্মচারী {0} উপস্থিতির ইতিমধ্যে চিহ্নিত করা হয়
DocType: Packing Slip,If more than one package of the same type (for print),তাহলে একই ধরনের একাধিক বাক্স (প্রিন্ট জন্য)
-apps/erpnext/erpnext/education/doctype/instructor/instructor.py,Please setup Instructor Naming System in Education > Education Settings,অনুগ্রহ করে শিক্ষা> শিক্ষা সেটিংসে প্রশিক্ষক নামকরণ সিস্টেম সেটআপ করুন
apps/erpnext/erpnext/restaurant/doctype/restaurant_order_entry/restaurant_order_entry.py,Please set default customer in Restaurant Settings,রেস্টুরেন্ট সেটিংস এ ডিফল্ট গ্রাহক সেট করুন
,Salary Register,বেতন নিবন্ধন
DocType: Company,Default warehouse for Sales Return,বিক্রয় ফেরতের জন্য ডিফল্ট গুদাম
@@ -4829,7 +4820,6 @@
apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html,Pending Activities,মুলতুবি কার্যক্রম
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test_list.js,Create Lab Test,ল্যাব টেস্ট তৈরি করুন
DocType: Patient Appointment,Reminded,মনে করানো
-DocType: Homepage Section,Cards,তাস
apps/erpnext/erpnext/public/js/setup_wizard.js,View Chart of Accounts,অ্যাকাউন্টের চার্ট দেখুন
DocType: Chapter Member,Chapter Member,অধ্যায় সদস্য
DocType: Material Request Plan Item,Minimum Order Quantity,ন্যূনতম চাহিদার পরিমাণ
@@ -4846,7 +4836,7 @@
apps/erpnext/erpnext/hr/utils.py,Future dates not allowed,ভবিষ্যতের তারিখগুলি অনুমোদিত নয়
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py,Expected Delivery Date should be after Sales Order Date,প্রত্যাশিত ডেলিভারি তারিখ বিক্রয় আদেশ তারিখের পরে হওয়া উচিত
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,Reorder Level,পুনর্বিন্যাস স্তর
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Chart Of Accounts Template,একাউন্টস টেমপ্লেটের চার্ট
+DocType: Company,Chart Of Accounts Template,একাউন্টস টেমপ্লেটের চার্ট
DocType: Attendance,Attendance Date,এ্যাটেনডেন্স তারিখ
apps/erpnext/erpnext/assets/doctype/asset/asset.py,Update stock must be enable for the purchase invoice {0},আপডেট স্টক ক্রয় বিনিময় জন্য সক্ষম করা আবশ্যক {0}
apps/erpnext/erpnext/stock/get_item_details.py,Item Price updated for {0} in Price List {1},আইটেম দাম {0} মূল্য তালিকা জন্য আপডেট {1}
@@ -5405,8 +5395,6 @@
apps/erpnext/erpnext/accounts/doctype/shareholder/shareholder.js,Share Ledger,লেজার শেয়ার করুন
apps/erpnext/erpnext/healthcare/doctype/patient/patient.js,Sales Invoice {0} created,সেলস ইনভয়েস {0} তৈরি করেছে
DocType: Employee,Confirmation Date,নিশ্চিতকরণ তারিখ
-apps/erpnext/erpnext/hr/doctype/employee_transfer/employee_transfer.py,"Please delete the Employee <a href=""#Form/Employee/{0}"">{0}</a>\
- to cancel this document","এই নথিটি বাতিল করতে দয়া করে কর্মচারী <a href=""#Form/Employee/{0}"">{0}</a> delete মুছুন"
DocType: Inpatient Occupancy,Check Out,চেক আউট
DocType: C-Form,Total Invoiced Amount,মোট invoiced পরিমাণ
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py,Min Qty can not be greater than Max Qty,ন্যূনতম Qty সর্বোচ্চ Qty তার চেয়ে অনেক বেশী হতে পারে না
@@ -5608,7 +5596,6 @@
DocType: Cheque Print Template,Cheque Width,চেক প্রস্থ
DocType: Selling Settings,Validate Selling Price for Item against Purchase Rate or Valuation Rate,যাচাই করে নিন বিক্রয় মূল্য ক্রয় হার বা মূল্যনির্ধারণ হার বিরুদ্ধে আইটেম জন্য
DocType: Fee Schedule,Fee Schedule,ফি সময়সূচী
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Column Labels : ,কলাম লেবেল:
DocType: Bank Transaction,Settled,স্থায়ী
apps/erpnext/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.html,Cess,উপকর
DocType: Quality Feedback,Parameters,পরামিতি
@@ -6273,6 +6260,7 @@
DocType: Salary Component,Formula,সূত্র
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py,Serial #,সিরিয়াল #
DocType: Material Request Plan Item,Required Quantity,প্রয়োজনীয় পরিমাণ
+DocType: Cash Flow Mapping Template,Template Name,টেম্পলেট নাম
DocType: Lab Test Template,Lab Test Template,ল্যাব টেস্ট টেমপ্লেট
apps/erpnext/erpnext/setup/doctype/company/company.py,Sales Account,বিক্রয় অ্যাকাউন্ট
DocType: Purchase Invoice Item,Total Weight,সম্পূর্ণ ওজন
@@ -6332,7 +6320,7 @@
DocType: Bank Reconciliation Detail,Cheque Date,চেক তারিখ
apps/erpnext/erpnext/accounts/doctype/account/account.py,Account {0}: Parent account {1} does not belong to company: {2},অ্যাকাউন্ট {0}: মূল অ্যাকাউন্ট {1} কোম্পানি অন্তর্গত নয়: {2}
apps/erpnext/erpnext/setup/doctype/company/company.js,Successfully deleted all transactions related to this company!,সফলভাবে এই কোম্পানীর সাথে সম্পর্কিত সব লেনদেন মোছা!
-apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js,As on Date,আজকের তারিখে
+apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.js,As on Date,আজকের তারিখে
DocType: Additional Salary,HR,এইচআর
DocType: Course Enrollment,Enrollment Date,তালিকাভুক্তি তারিখ
DocType: Healthcare Settings,Out Patient SMS Alerts,আউট রোগীর এসএমএস সতর্কতা
@@ -6397,7 +6385,6 @@
DocType: Course Content,Quiz,ব্যঙ্গ
DocType: Subscription,Trial Period End Date,ট্রায়াল সময়কাল শেষ তারিখ
apps/erpnext/erpnext/setup/doctype/authorization_control/authorization_control.py,Not authroized since {0} exceeds limits,"{0} সীমা অতিক্রম করে, যেহেতু authroized না"
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Start entering data from here : ,এখান থেকে ডেটা প্রবেশ করা শুরু করুন:
DocType: Serial No,Asset Status,সম্পদ স্থিতি
DocType: Sales Invoice,Over Dimensional Cargo (ODC),ডাইমেনশনাল কার্গো ওভার (ওডিসি)
DocType: Restaurant Order Entry,Restaurant Table,রেস্টুরেন্ট টেবিল
@@ -6616,7 +6603,6 @@
apps/erpnext/erpnext/public/js/hub/components/ReviewArea.vue,Submit Review,পর্যালোচনা জমা দিন
DocType: Contract,Party User,পার্টি ব্যবহারকারী
apps/erpnext/erpnext/stock/report/total_stock_summary/total_stock_summary.py,Please set Company filter blank if Group By is 'Company',দয়া করে কোম্পানির ফাঁকা ফিল্টার সেট করুন যদি একদল 'কোম্পানি' হল
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Customer > Customer Group > Territory,গ্রাহক> গ্রাহক গোষ্ঠী> অঞ্চল
apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py,Posting Date cannot be future date,পোস্টিং তারিখ ভবিষ্যতে তারিখে হতে পারে না
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Row # {0}: Serial No {1} does not match with {2} {3},সারি # {0}: সিরিয়াল কোন {1} সঙ্গে মেলে না {2} {3}
DocType: Loan Repayment,Interest Payable,প্রদেয় সুদ
@@ -6850,7 +6836,6 @@
apps/erpnext/erpnext/accounts/report/share_balance/share_balance.py,Average Rate,গড় হার
DocType: Appointment,Appointment With,সাথে নিয়োগ
apps/erpnext/erpnext/controllers/accounts_controller.py,Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total,পেমেন্ট শংসাপত্রের মোট পরিশোধের পরিমাণ গ্র্যান্ড / গোলাকার মোট সমান হওয়া আবশ্যক
-apps/erpnext/erpnext/hr/doctype/attendance/attendance_list.js,Mark attendance as <b></b>,হিসাবে উপস্থিতি চিহ্নিত করুন <b></b>
apps/erpnext/erpnext/stock/doctype/item/item.py,"""Customer Provided Item"" cannot have Valuation Rate","গ্রাহক সরবরাহিত আইটেম" এর মূল্য মূল্য হতে পারে না
DocType: Subscription Plan Detail,Plan,পরিকল্পনা
apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py,Bank Statement balance as per General Ledger,জেনারেল লেজার অনুযায়ী ব্যাংক ব্যালেন্সের
@@ -7526,7 +7511,6 @@
apps/erpnext/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py,Maximum benefit amount of employee {0} exceeds {1},কর্মীর সর্বাধিক সুবিধা পরিমাণ {0} অতিক্রম করে {1}
apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py,Total allocated leaves are more than days in the period,সর্বমোট পাতার সময়ের মধ্যে দিনের বেশী হয়
DocType: Linked Soil Analysis,Linked Soil Analysis,সংযুক্ত মৃত্তিকা বিশ্লেষণ
-DocType: Pricing Rule,Percentage,শতকরা হার
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Item {0} must be a stock Item,আইটেম {0} একটি স্টক আইটেম হতে হবে
DocType: Manufacturing Settings,Default Work In Progress Warehouse,প্রগতি গুদাম ডিফল্ট কাজ
apps/erpnext/erpnext/healthcare/doctype/practitioner_schedule/practitioner_schedule.js,"Schedules for {0} overlaps, do you want to proceed after skiping overlaped slots ?","{0} ওভারল্যাপের জন্য সময়সূচী, আপনি কি ওভারল্যাপেড স্লটগুলি বাদ দিয়ে এগিয়ে যেতে চান?"
diff --git a/erpnext/translations/bs.csv b/erpnext/translations/bs.csv
index 46afee3..5e3f53d 100644
--- a/erpnext/translations/bs.csv
+++ b/erpnext/translations/bs.csv
@@ -168,12 +168,11 @@
DocType: Work Order Operation,Work In Progress,Radovi u toku
DocType: Leave Control Panel,Branch (optional),Podružnica (neobavezno)
apps/erpnext/erpnext/education/report/absent_student_report/absent_student_report.py,Please select date,Molimo izaberite datum
-DocType: Item Price,Minimum Qty ,Minimalni količina
+apps/erpnext/erpnext/stock/report/product_bundle_balance/product_bundle_balance.py,Minimum Qty ,Minimalni količina
apps/erpnext/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py,BOM recursion: {0} cannot be child of {1},BOM rekurzija: {0} ne može biti dijete od {1}
DocType: Finance Book,Finance Book,Finansijska knjiga
DocType: Patient Encounter,HLC-ENC-.YYYY.-,HLC-ENC-YYYY.-
DocType: Appointment Booking Settings,Holiday List,Lista odmora
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,The parent account {0} does not exists,Roditeljski račun {0} ne postoji
apps/erpnext/erpnext/config/quality_management.py,Review and Action,Pregled i radnja
apps/erpnext/erpnext/hr/doctype/employee_checkin/employee_checkin.py,This employee already has a log with the same timestamp.{0},Ovaj zaposlenik već ima dnevnik sa istim vremenskim žigom. {0}
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Accountant,Računovođa
@@ -245,7 +244,6 @@
DocType: Exchange Rate Revaluation Account,Gain/Loss,Dobit / gubitak
DocType: Crop,Perennial,Višegodišnje
DocType: Program,Is Published,Objavljeno je
-apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js,Show Delivery Notes,Prikaži bilješke o isporuci
apps/erpnext/erpnext/controllers/status_updater.py,"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.","Da biste omogućili prekomerno naplaćivanje, ažurirajte „Nadoplatu za naplatu“ u Postavkama računa ili Stavka."
DocType: Patient Appointment,Procedure,Procedura
DocType: Accounts Settings,Use Custom Cash Flow Format,Koristite Custom Flow Flow Format
@@ -981,7 +979,6 @@
DocType: Patient,Risk Factors,Faktori rizika
DocType: Patient,Occupational Hazards and Environmental Factors,Opasnosti po životnu sredinu i faktore zaštite životne sredine
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Stock Entries already created for Work Order ,Upis zaliha već je kreiran za radni nalog
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Item Code > Item Group > Brand,Kod artikla> Grupa artikala> Marka
apps/erpnext/erpnext/templates/pages/cart.html,See past orders,Pogledajte prošla naređenja
apps/erpnext/erpnext/public/js/hub/pages/Selling.vue,{0} conversations,{0} razgovora
DocType: Vital Signs,Respiratory rate,Stopa respiratornih organa
@@ -1139,7 +1136,6 @@
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,An error occurred during the update process,Došlo je do greške tokom procesa ažuriranja
DocType: Restaurant Reservation,Restaurant Reservation,Rezervacija restorana
apps/erpnext/erpnext/public/js/hub/Sidebar.vue,Your Items,Vaše predmete
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Supplier > Supplier Type,Dobavljač> vrsta dobavljača
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Proposal Writing,Pisanje prijedlog
DocType: Payment Entry Deduction,Payment Entry Deduction,Plaćanje Entry Odbitak
DocType: Service Level Priority,Service Level Priority,Prioritet na nivou usluge
@@ -1438,7 +1434,6 @@
apps/erpnext/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js,Please select Company and Posting Date to getting entries,Molimo da odaberete Kompaniju i Datum objavljivanja da biste dobili unose
DocType: Asset,Maintenance,Održavanje
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test.js,Get from Patient Encounter,Izlazite iz susreta sa pacijentom
-apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,UOM Conversion factor ({0} -> {1}) not found for item: {2},Faktor konverzije UOM ({0} -> {1}) nije pronađen za stavku: {2}
DocType: Subscriber,Subscriber,Pretplatnik
DocType: Item Attribute Value,Item Attribute Value,Stavka vrijednost atributa
apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py,Currency Exchange must be applicable for Buying or for Selling.,Menjanje mjenjača mora biti primjenjivo za kupovinu ili prodaju.
@@ -1955,7 +1950,6 @@
DocType: Purchase Invoice,Is Return (Debit Note),Je povratak (obaveštenje o zaduživanju)
DocType: Workstation,Wages,Plata
DocType: Asset Maintenance,Maintenance Manager Name,Ime menadžera održavanja
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js,Transactions against the company already exist! ,Transakcije protiv kompanije već postoje!
apps/erpnext/erpnext/buying/report/procurement_tracker/procurement_tracker.py,Requesting Site,Podnošenje zahtjeva
DocType: Agriculture Task,Urgent,Hitan
apps/erpnext/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js,Fetching records......,Dohvaćanje zapisa ......
@@ -2653,7 +2647,6 @@
apps/erpnext/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.py,The Payment Term at row {0} is possibly a duplicate.,Rok plaćanja na redu {0} je možda duplikat.
apps/erpnext/erpnext/public/js/setup_wizard.js,Agriculture (beta),Poljoprivreda (beta)
apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.js,Packing Slip,Odreskom
-apps/erpnext/erpnext/setup/doctype/naming_series/naming_series.py,Please set Naming Series for {0} via Setup > Settings > Naming Series,Molimo postavite Naming Series za {0} putem Podešavanje> Podešavanja> Imenovanje serije
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py,Office Rent,najam ureda
apps/erpnext/erpnext/config/settings.py,Setup SMS gateway settings,Postavke Setup SMS gateway
DocType: Disease,Common Name,Zajedničko ime
@@ -2819,7 +2812,6 @@
apps/erpnext/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py,Leaves Allocated Successfully for {0},Lišće Dodijeljeni uspješno za {0}
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py,No Items to pack,Nema stavki za omot
apps/erpnext/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py,Only .csv and .xlsx files are supported currently,Trenutno su podržane samo .csv i .xlsx datoteke
-apps/erpnext/erpnext/hr/doctype/employee/employee.py,Please setup Employee Naming System in Human Resource > HR Settings,Postavite sistem imenovanja zaposlenika u ljudskim resursima> HR postavke
DocType: Shipping Rule Condition,From Value,Od Vrijednost
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Manufacturing Quantity is mandatory,Proizvodnja Količina je obvezno
DocType: Loan,Repayment Method,otplata Način
@@ -4066,7 +4058,6 @@
apps/erpnext/erpnext/templates/form_grid/material_request_grid.html,Required On,Potrebna On
DocType: HR Settings,"If checked, hides and disables Rounded Total field in Salary Slips","Ako je označeno, sakriva i onemogućuje polje Zaokruženo ukupno u listićima plaće"
DocType: Woocommerce Settings,This is the default offset (days) for the Delivery Date in Sales Orders. The fallback offset is 7 days from the order placement date.,Ovo je zadani offset (dani) za datum isporuke u prodajnim nalozima. Ponovno nadoknađivanje je 7 dana od datuma slanja narudžbe.
-apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py,Please setup numbering series for Attendance via Setup > Numbering Series,Molimo podesite seriju brojeva za Attendance putem Podešavanje> Serija numeriranja
DocType: Rename Tool,File to Rename,File da biste preimenovali
apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,Please select BOM for Item in Row {0},Molimo odaberite BOM za Stavka zaredom {0}
apps/erpnext/erpnext/accounts/doctype/subscription/subscription.js,Fetch Subscription Updates,Izvrši ažuriranje pretplate
@@ -4700,7 +4691,6 @@
DocType: Cash Flow Mapping,Is Finance Cost,Da li je finansijski trošak
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py,Attendance for employee {0} is already marked,Gledatelja za zaposlenika {0} već označen
DocType: Packing Slip,If more than one package of the same type (for print),Ako je više od jedan paket od iste vrste (za tisak)
-apps/erpnext/erpnext/education/doctype/instructor/instructor.py,Please setup Instructor Naming System in Education > Education Settings,Postavite sistem imenovanja instruktora u Obrazovanje> Postavke obrazovanja
apps/erpnext/erpnext/restaurant/doctype/restaurant_order_entry/restaurant_order_entry.py,Please set default customer in Restaurant Settings,Podesite podrazumevani kupac u podešavanjima restorana
,Salary Register,Plaća Registracija
DocType: Company,Default warehouse for Sales Return,Zadano skladište za povraćaj prodaje
@@ -4971,7 +4961,6 @@
apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html,Pending Activities,Aktivnosti na čekanju
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test_list.js,Create Lab Test,Napravite laboratorijski test
DocType: Patient Appointment,Reminded,Podsetio
-DocType: Homepage Section,Cards,Karte
apps/erpnext/erpnext/public/js/setup_wizard.js,View Chart of Accounts,Pregled grafikona računa
DocType: Chapter Member,Chapter Member,Član poglavlja
DocType: Material Request Plan Item,Minimum Order Quantity,Minimalna količina narudžbine
@@ -4989,7 +4978,7 @@
apps/erpnext/erpnext/hr/utils.py,Future dates not allowed,Dalji datumi nisu dozvoljeni
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py,Expected Delivery Date should be after Sales Order Date,Očekivani datum isporuke treba da bude nakon datuma prodaje
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,Reorder Level,Ponovno red Level
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Chart Of Accounts Template,Kontni plan Template
+DocType: Company,Chart Of Accounts Template,Kontni plan Template
DocType: Attendance,Attendance Date,Gledatelja Datum
apps/erpnext/erpnext/assets/doctype/asset/asset.py,Update stock must be enable for the purchase invoice {0},Ažuriranje zaliha mora biti omogućeno za fakturu za kupovinu {0}
apps/erpnext/erpnext/stock/get_item_details.py,Item Price updated for {0} in Price List {1},Artikal Cijena ažuriranje za {0} u Cjenik {1}
@@ -5554,8 +5543,6 @@
apps/erpnext/erpnext/accounts/doctype/shareholder/shareholder.js,Share Ledger,Share Ledger
apps/erpnext/erpnext/healthcare/doctype/patient/patient.js,Sales Invoice {0} created,Prodajna faktura {0} kreirana
DocType: Employee,Confirmation Date,potvrda Datum
-apps/erpnext/erpnext/hr/doctype/employee_transfer/employee_transfer.py,"Please delete the Employee <a href=""#Form/Employee/{0}"">{0}</a>\
- to cancel this document","Izbrišite zaposlenika <a href=""#Form/Employee/{0}"">{0}</a> \ da biste otkazali ovaj dokument"
DocType: Inpatient Occupancy,Check Out,Provjeri
DocType: C-Form,Total Invoiced Amount,Ukupno Iznos dostavnice
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py,Min Qty can not be greater than Max Qty,Min Kol ne može biti veći od Max Kol
@@ -5762,7 +5749,6 @@
DocType: Cheque Print Template,Cheque Width,Ček Širina
DocType: Selling Settings,Validate Selling Price for Item against Purchase Rate or Valuation Rate,Potvrditi prodajna cijena za artikl protiv kupovine objekta ili Vrednovanje Rate
DocType: Fee Schedule,Fee Schedule,naknada Raspored
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Column Labels : ,Oznake stupaca:
DocType: Bank Transaction,Settled,Riješeni
apps/erpnext/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.html,Cess,Cess
DocType: Quality Feedback,Parameters,Parametri
@@ -6436,6 +6422,7 @@
DocType: Salary Component,Formula,formula
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py,Serial #,Serial #
DocType: Material Request Plan Item,Required Quantity,Tražena količina
+DocType: Cash Flow Mapping Template,Template Name,template Name
DocType: Lab Test Template,Lab Test Template,Lab test šablon
apps/erpnext/erpnext/accounts/doctype/accounting_period/accounting_period.py,Accounting Period overlaps with {0},Računovodstveno razdoblje se preklapa sa {0}
apps/erpnext/erpnext/setup/doctype/company/company.py,Sales Account,Račun prodaje
@@ -6496,7 +6483,7 @@
DocType: Bank Reconciliation Detail,Cheque Date,Datum čeka
apps/erpnext/erpnext/accounts/doctype/account/account.py,Account {0}: Parent account {1} does not belong to company: {2},Konto {0}: Nadređeni konto {1} ne pripada preduzeću: {2}
apps/erpnext/erpnext/setup/doctype/company/company.js,Successfully deleted all transactions related to this company!,Uspješno obrisane sve transakcije koje se odnose na ove kompanije!
-apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js,As on Date,Kao i na datum
+apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.js,As on Date,Kao i na datum
DocType: Additional Salary,HR,HR
DocType: Course Enrollment,Enrollment Date,upis Datum
DocType: Healthcare Settings,Out Patient SMS Alerts,Out Patient SMS upozorenja
@@ -6562,7 +6549,6 @@
DocType: Course Content,Quiz,Kviz
DocType: Subscription,Trial Period End Date,Datum završetka probnog perioda
apps/erpnext/erpnext/setup/doctype/authorization_control/authorization_control.py,Not authroized since {0} exceeds limits,Ne authroized od {0} prelazi granice
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Start entering data from here : ,Počnite unositi podatke odavde:
DocType: Serial No,Asset Status,Status imovine
DocType: Sales Invoice,Over Dimensional Cargo (ODC),Over Dimensional Cargo (ODC)
DocType: Restaurant Order Entry,Restaurant Table,Restoran Stol
@@ -6789,7 +6775,6 @@
DocType: Contract,Party User,Party User
apps/erpnext/erpnext/controllers/buying_controller.py,Assets not created for <b>{0}</b>. You will have to create asset manually.,Sredstva nisu stvorena za <b>{0}</b> . Morat ćete stvoriti imovinu ručno.
apps/erpnext/erpnext/stock/report/total_stock_summary/total_stock_summary.py,Please set Company filter blank if Group By is 'Company',Molimo podesite Company filter prazno ako Skupina Od je 'Company'
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Customer > Customer Group > Territory,Kupac> grupa kupaca> teritorija
apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py,Posting Date cannot be future date,Datum knjiženja ne može biti u budućnosti
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Row # {0}: Serial No {1} does not match with {2} {3},Row # {0}: {1} Serial No ne odgovara {2} {3}
DocType: Loan Repayment,Interest Payable,Kamata se plaća
@@ -7024,7 +7009,6 @@
apps/erpnext/erpnext/accounts/report/share_balance/share_balance.py,Average Rate,Prosečna stopa
DocType: Appointment,Appointment With,Sastanak sa
apps/erpnext/erpnext/controllers/accounts_controller.py,Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total,Ukupan iznos plaćanja u rasporedu plaćanja mora biti jednak Grand / zaokruženom ukupno
-apps/erpnext/erpnext/hr/doctype/attendance/attendance_list.js,Mark attendance as <b></b>,Označi prisustvo kao <b></b>
apps/erpnext/erpnext/stock/doctype/item/item.py,"""Customer Provided Item"" cannot have Valuation Rate","Predmet koji pruža klijent" ne može imati stopu vrednovanja
DocType: Subscription Plan Detail,Plan,Plan
apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py,Bank Statement balance as per General Ledger,Banka bilans po glavnoj knjizi
@@ -7716,7 +7700,6 @@
apps/erpnext/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py,Maximum benefit amount of employee {0} exceeds {1},Maksimalan iznos naknade zaposlenog {0} prelazi {1}
apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py,Total allocated leaves are more than days in the period,Ukupno izdvojene Listovi su više od nekoliko dana u razdoblju
DocType: Linked Soil Analysis,Linked Soil Analysis,Linked soil analysis
-DocType: Pricing Rule,Percentage,postotak
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Item {0} must be a stock Item,Stavka {0} mora bitistock Stavka
DocType: Manufacturing Settings,Default Work In Progress Warehouse,Uobičajeno Work in Progress Skladište
apps/erpnext/erpnext/healthcare/doctype/practitioner_schedule/practitioner_schedule.js,"Schedules for {0} overlaps, do you want to proceed after skiping overlaped slots ?","Rasporedi za {0} se preklapaju, da li želite da nastavite nakon preskakanja preklapanih slotova?"
diff --git a/erpnext/translations/ca.csv b/erpnext/translations/ca.csv
index 07116ab..e147d04 100644
--- a/erpnext/translations/ca.csv
+++ b/erpnext/translations/ca.csv
@@ -168,12 +168,11 @@
DocType: Work Order Operation,Work In Progress,Treball en curs
DocType: Leave Control Panel,Branch (optional),Oficina (opcional)
apps/erpnext/erpnext/education/report/absent_student_report/absent_student_report.py,Please select date,Si us plau seleccioni la data
-DocType: Item Price,Minimum Qty ,Quantitat mínima
+apps/erpnext/erpnext/stock/report/product_bundle_balance/product_bundle_balance.py,Minimum Qty ,Quantitat mínima
apps/erpnext/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py,BOM recursion: {0} cannot be child of {1},Recursió de BOM: {0} no pot ser fill de {1}
DocType: Finance Book,Finance Book,Llibre de finances
DocType: Patient Encounter,HLC-ENC-.YYYY.-,HLC-ENC-.YYYY.-
DocType: Appointment Booking Settings,Holiday List,Llista de vacances
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,The parent account {0} does not exists,El compte pare {0} no existeix
apps/erpnext/erpnext/config/quality_management.py,Review and Action,Revisió i acció
apps/erpnext/erpnext/hr/doctype/employee_checkin/employee_checkin.py,This employee already has a log with the same timestamp.{0},Aquest empleat ja té un registre amb la mateixa marca de temps. {0}
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Accountant,Accountant
@@ -245,7 +244,6 @@
DocType: Exchange Rate Revaluation Account,Gain/Loss,Guany / pèrdua
DocType: Crop,Perennial,Perenne
DocType: Program,Is Published,Es publica
-apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js,Show Delivery Notes,Mostra albarans de lliurament
apps/erpnext/erpnext/controllers/status_updater.py,"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.","Per permetre la facturació excessiva, actualitzeu "Indemnització sobre facturació" a la configuració del compte o a l'element."
DocType: Patient Appointment,Procedure,Procediment
DocType: Accounts Settings,Use Custom Cash Flow Format,Utilitzeu el format de flux de caixa personalitzat
@@ -981,7 +979,6 @@
DocType: Patient,Risk Factors,Factors de risc
DocType: Patient,Occupational Hazards and Environmental Factors,Riscos laborals i factors ambientals
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Stock Entries already created for Work Order ,Entrades de valors ja creades per a la comanda de treball
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Item Code > Item Group > Brand,Codi de l'article> Grup d'elements> Marca
apps/erpnext/erpnext/templates/pages/cart.html,See past orders,Consulteu ordres anteriors
apps/erpnext/erpnext/public/js/hub/pages/Selling.vue,{0} conversations,{0} converses
DocType: Vital Signs,Respiratory rate,Taxa respiratòria
@@ -1139,7 +1136,6 @@
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,An error occurred during the update process,S'ha produït un error durant el procés d'actualització
DocType: Restaurant Reservation,Restaurant Reservation,Reserva de restaurants
apps/erpnext/erpnext/public/js/hub/Sidebar.vue,Your Items,Els seus articles
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Supplier > Supplier Type,Proveïdor> Tipus de proveïdor
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Proposal Writing,Redacció de propostes
DocType: Payment Entry Deduction,Payment Entry Deduction,El pagament Deducció d'entrada
DocType: Service Level Priority,Service Level Priority,Prioritat de nivell de servei
@@ -1438,7 +1434,6 @@
apps/erpnext/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js,Please select Company and Posting Date to getting entries,Seleccioneu Companyia i Data de publicació per obtenir entrades
DocType: Asset,Maintenance,Manteniment
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test.js,Get from Patient Encounter,Obtenir de Trobada de pacients
-apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,UOM Conversion factor ({0} -> {1}) not found for item: {2},Factor de conversió UOM ({0} -> {1}) no trobat per a l'element: {2}
DocType: Subscriber,Subscriber,Subscriptor
DocType: Item Attribute Value,Item Attribute Value,Element Atribut Valor
apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py,Currency Exchange must be applicable for Buying or for Selling.,L'intercanvi de divises ha de ser aplicable per a la compra o per a la venda.
@@ -1955,7 +1950,6 @@
DocType: Purchase Invoice,Is Return (Debit Note),És retorn (Nota de dèbit)
DocType: Workstation,Wages,Salari
DocType: Asset Maintenance,Maintenance Manager Name,Nom del gestor de manteniment
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js,Transactions against the company already exist! ,Les transaccions amb l'empresa ja existeixen.
apps/erpnext/erpnext/buying/report/procurement_tracker/procurement_tracker.py,Requesting Site,Sol·licitant el lloc
DocType: Agriculture Task,Urgent,Urgent
apps/erpnext/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js,Fetching records......,Recuperació de registres ......
@@ -2653,7 +2647,6 @@
apps/erpnext/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.py,The Payment Term at row {0} is possibly a duplicate.,El termini de pagament a la fila {0} és possiblement un duplicat.
apps/erpnext/erpnext/public/js/setup_wizard.js,Agriculture (beta),Agricultura (beta)
apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.js,Packing Slip,Llista de presència
-apps/erpnext/erpnext/setup/doctype/naming_series/naming_series.py,Please set Naming Series for {0} via Setup > Settings > Naming Series,Configureu Naming Series per a {0} mitjançant Configuració> Configuració> Sèries de nom
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py,Office Rent,lloguer de l'oficina
apps/erpnext/erpnext/config/settings.py,Setup SMS gateway settings,Paràmetres de configuració de Porta de SMS
DocType: Disease,Common Name,Nom comú
@@ -2819,7 +2812,6 @@
apps/erpnext/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py,Leaves Allocated Successfully for {0},Les fulles Numerat amb èxit per {0}
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py,No Items to pack,No hi ha articles per embalar
apps/erpnext/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py,Only .csv and .xlsx files are supported currently,"Actualment, només són compatibles els fitxers .csv i .xlsx"
-apps/erpnext/erpnext/hr/doctype/employee/employee.py,Please setup Employee Naming System in Human Resource > HR Settings,Configureu el sistema de nominació dels empleats a Recursos humans> Configuració de recursos humans
DocType: Shipping Rule Condition,From Value,De Valor
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Manufacturing Quantity is mandatory,Quantitat de fabricació és obligatori
DocType: Loan,Repayment Method,Mètode d'amortització
@@ -4067,7 +4059,6 @@
apps/erpnext/erpnext/templates/form_grid/material_request_grid.html,Required On,Requerit Per
DocType: HR Settings,"If checked, hides and disables Rounded Total field in Salary Slips","Si es marca, amaga i inhabilita el camp Total arrodonit als traços de salari"
DocType: Woocommerce Settings,This is the default offset (days) for the Delivery Date in Sales Orders. The fallback offset is 7 days from the order placement date.,Aquest és el decalatge (dies) predeterminat de la data de lliurament a les comandes de venda. La compensació de retard és de 7 dies des de la data de col·locació de la comanda.
-apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py,Please setup numbering series for Attendance via Setup > Numbering Series,Configureu les sèries de numeració per assistència mitjançant Configuració> Sèries de numeració
DocType: Rename Tool,File to Rename,Arxiu per canviar el nom de
apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,Please select BOM for Item in Row {0},Seleccioneu la llista de materials per a l'article a la fila {0}
apps/erpnext/erpnext/accounts/doctype/subscription/subscription.js,Fetch Subscription Updates,Obteniu actualitzacions de subscripció
@@ -4702,7 +4693,6 @@
DocType: Cash Flow Mapping,Is Finance Cost,El cost financer
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py,Attendance for employee {0} is already marked,Assistència per a l'empleat {0} ja està marcat
DocType: Packing Slip,If more than one package of the same type (for print),Si més d'un paquet del mateix tipus (per impressió)
-apps/erpnext/erpnext/education/doctype/instructor/instructor.py,Please setup Instructor Naming System in Education > Education Settings,Configureu un sistema de nom de l’Instructor a Educació> Configuració d’educació
apps/erpnext/erpnext/restaurant/doctype/restaurant_order_entry/restaurant_order_entry.py,Please set default customer in Restaurant Settings,Establiu el client predeterminat a la Configuració del restaurant
,Salary Register,salari Registre
DocType: Company,Default warehouse for Sales Return,Magatzem per defecte del retorn de vendes
@@ -4973,7 +4963,6 @@
apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html,Pending Activities,Activitats pendents
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test_list.js,Create Lab Test,Crea una prova de laboratori
DocType: Patient Appointment,Reminded,Recordat
-DocType: Homepage Section,Cards,Targetes
apps/erpnext/erpnext/public/js/setup_wizard.js,View Chart of Accounts,Veure el gràfic de comptes
DocType: Chapter Member,Chapter Member,Membre del capítol
DocType: Material Request Plan Item,Minimum Order Quantity,Quantitat mínima de comanda
@@ -4991,7 +4980,7 @@
apps/erpnext/erpnext/hr/utils.py,Future dates not allowed,No es permeten dates futures
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py,Expected Delivery Date should be after Sales Order Date,La data de lliurament prevista hauria de ser posterior a la data de la comanda de vendes
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,Reorder Level,Nivell de Reabastecimiento
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Chart Of Accounts Template,Gràfic de la plantilla de Comptes
+DocType: Company,Chart Of Accounts Template,Gràfic de la plantilla de Comptes
DocType: Attendance,Attendance Date,Assistència Data
apps/erpnext/erpnext/assets/doctype/asset/asset.py,Update stock must be enable for the purchase invoice {0},L'actualització de valors ha de ser habilitada per a la factura de compra {0}
apps/erpnext/erpnext/stock/get_item_details.py,Item Price updated for {0} in Price List {1},Article Preu s'actualitza per {0} de la llista de preus {1}
@@ -5556,8 +5545,6 @@
apps/erpnext/erpnext/accounts/doctype/shareholder/shareholder.js,Share Ledger,Comparteix el compilador
apps/erpnext/erpnext/healthcare/doctype/patient/patient.js,Sales Invoice {0} created,S'ha creat la factura de vendes {0}
DocType: Employee,Confirmation Date,Data de confirmació
-apps/erpnext/erpnext/hr/doctype/employee_transfer/employee_transfer.py,"Please delete the Employee <a href=""#Form/Employee/{0}"">{0}</a>\
- to cancel this document","Elimineu l'empleat <a href=""#Form/Employee/{0}"">{0}</a> \ per cancel·lar aquest document"
DocType: Inpatient Occupancy,Check Out,Sortida
DocType: C-Form,Total Invoiced Amount,Suma total facturada
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py,Min Qty can not be greater than Max Qty,Quantitat mínima no pot ser major que Quantitat màxima
@@ -5764,7 +5751,6 @@
DocType: Cheque Print Template,Cheque Width,ample Xec
DocType: Selling Settings,Validate Selling Price for Item against Purchase Rate or Valuation Rate,Validar preu de venda per a l'article contra la Tarifa de compra o taxa de valorització
DocType: Fee Schedule,Fee Schedule,Llista de tarifes
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Column Labels : ,Etiquetes de columnes:
DocType: Bank Transaction,Settled,Assentat
apps/erpnext/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.html,Cess,Cessar
DocType: Quality Feedback,Parameters,Paràmetres
@@ -6439,6 +6425,7 @@
DocType: Salary Component,Formula,fórmula
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py,Serial #,Serial #
DocType: Material Request Plan Item,Required Quantity,Quantitat necessària
+DocType: Cash Flow Mapping Template,Template Name,Nom de la plantilla
DocType: Lab Test Template,Lab Test Template,Plantilla de prova de laboratori
apps/erpnext/erpnext/accounts/doctype/accounting_period/accounting_period.py,Accounting Period overlaps with {0},El període de comptabilitat es superposa amb {0}
apps/erpnext/erpnext/setup/doctype/company/company.py,Sales Account,Compte de vendes
@@ -6499,7 +6486,7 @@
DocType: Bank Reconciliation Detail,Cheque Date,Data Xec
apps/erpnext/erpnext/accounts/doctype/account/account.py,Account {0}: Parent account {1} does not belong to company: {2},Compte {0}: el compte Pare {1} no pertany a la companyia: {2}
apps/erpnext/erpnext/setup/doctype/company/company.js,Successfully deleted all transactions related to this company!,Eliminat correctament totes les transaccions relacionades amb aquesta empresa!
-apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js,As on Date,Com en la data
+apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.js,As on Date,Com en la data
DocType: Additional Salary,HR,HR
DocType: Course Enrollment,Enrollment Date,Data d'inscripció
DocType: Healthcare Settings,Out Patient SMS Alerts,Alertes SMS de pacients
@@ -6565,7 +6552,6 @@
DocType: Course Content,Quiz,Test
DocType: Subscription,Trial Period End Date,Període de prova Data de finalització
apps/erpnext/erpnext/setup/doctype/authorization_control/authorization_control.py,Not authroized since {0} exceeds limits,No distribuïdor oficial autoritzat des {0} excedeix els límits
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Start entering data from here : ,Comenceu a introduir dades des d'aquí:
DocType: Serial No,Asset Status,Estat d'actius
DocType: Sales Invoice,Over Dimensional Cargo (ODC),Càrrec a gran dimensió (ODC)
DocType: Restaurant Order Entry,Restaurant Table,Taula de restaurants
@@ -6792,7 +6778,6 @@
DocType: Contract,Party User,Usuari del partit
apps/erpnext/erpnext/controllers/buying_controller.py,Assets not created for <b>{0}</b>. You will have to create asset manually.,Actius no creats per a <b>{0}</b> . Haureu de crear actius manualment.
apps/erpnext/erpnext/stock/report/total_stock_summary/total_stock_summary.py,Please set Company filter blank if Group By is 'Company',Si us plau ajust empresa de filtres en blanc si és Agrupa per 'empresa'
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Customer > Customer Group > Territory,Client> Grup de clients> Territori
apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py,Posting Date cannot be future date,Data d'entrada no pot ser data futura
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Row # {0}: Serial No {1} does not match with {2} {3},Fila # {0}: Nombre de sèrie {1} no coincideix amb {2} {3}
DocType: Loan Repayment,Interest Payable,Interessos a pagar
@@ -7027,7 +7012,6 @@
apps/erpnext/erpnext/accounts/report/share_balance/share_balance.py,Average Rate,Tarifa mitjana
DocType: Appointment,Appointment With,Cita amb
apps/erpnext/erpnext/controllers/accounts_controller.py,Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total,L'import total del pagament en el calendari de pagaments ha de ser igual a Grand / Rounded Total
-apps/erpnext/erpnext/hr/doctype/attendance/attendance_list.js,Mark attendance as <b></b>,Marcar l'assistència com <b></b>
apps/erpnext/erpnext/stock/doctype/item/item.py,"""Customer Provided Item"" cannot have Valuation Rate","L'element subministrat pel client" no pot tenir un percentatge de valoració
DocType: Subscription Plan Detail,Plan,Pla
apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py,Bank Statement balance as per General Ledger,Equilibri extracte bancari segons Comptabilitat General
@@ -7719,7 +7703,6 @@
apps/erpnext/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py,Maximum benefit amount of employee {0} exceeds {1},La quantitat de benefici màxim de l'empleat {0} supera {1}
apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py,Total allocated leaves are more than days in the period,Total de fulles assignats més de dia en el període
DocType: Linked Soil Analysis,Linked Soil Analysis,Anàlisi del sòl enllaçat
-DocType: Pricing Rule,Percentage,percentatge
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Item {0} must be a stock Item,Article {0} ha de ser un d'article de l'estoc
DocType: Manufacturing Settings,Default Work In Progress Warehouse,Per defecte Work In Progress Magatzem
apps/erpnext/erpnext/healthcare/doctype/practitioner_schedule/practitioner_schedule.js,"Schedules for {0} overlaps, do you want to proceed after skiping overlaped slots ?","Programes per a {0} superposicions, voleu continuar després de saltar les ranures superposades?"
diff --git a/erpnext/translations/cs.csv b/erpnext/translations/cs.csv
index 9dd21a5..0a01dcd 100644
--- a/erpnext/translations/cs.csv
+++ b/erpnext/translations/cs.csv
@@ -168,12 +168,11 @@
DocType: Work Order Operation,Work In Progress,Na cestě
DocType: Leave Control Panel,Branch (optional),Větev (volitelné)
apps/erpnext/erpnext/education/report/absent_student_report/absent_student_report.py,Please select date,"Prosím, vyberte datum"
-DocType: Item Price,Minimum Qty ,Minimální počet
+apps/erpnext/erpnext/stock/report/product_bundle_balance/product_bundle_balance.py,Minimum Qty ,Minimální počet
apps/erpnext/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py,BOM recursion: {0} cannot be child of {1},Rekurze kusovníku: {0} nemůže být dítě {1}
DocType: Finance Book,Finance Book,Finanční kniha
DocType: Patient Encounter,HLC-ENC-.YYYY.-,HLC-ENC-.YYYY.-
DocType: Appointment Booking Settings,Holiday List,Seznam dovolené
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,The parent account {0} does not exists,Nadřazený účet {0} neexistuje
apps/erpnext/erpnext/config/quality_management.py,Review and Action,Přezkum a akce
apps/erpnext/erpnext/hr/doctype/employee_checkin/employee_checkin.py,This employee already has a log with the same timestamp.{0},Tento zaměstnanec již má záznam se stejným časovým razítkem. {0}
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Accountant,Účetní
@@ -245,7 +244,6 @@
DocType: Exchange Rate Revaluation Account,Gain/Loss,Zisk / ztráta
DocType: Crop,Perennial,Trvalka
DocType: Program,Is Published,Je publikováno
-apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js,Show Delivery Notes,Zobrazit dodací listy
apps/erpnext/erpnext/controllers/status_updater.py,"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.","Chcete-li povolit přeúčtování, aktualizujte položku „Příplatek za fakturaci“ v Nastavení účtů nebo v položce."
DocType: Patient Appointment,Procedure,Postup
DocType: Accounts Settings,Use Custom Cash Flow Format,Použijte formát vlastní peněžní toky
@@ -981,7 +979,6 @@
DocType: Patient,Risk Factors,Rizikové faktory
DocType: Patient,Occupational Hazards and Environmental Factors,Pracovní nebezpečí a environmentální faktory
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Stock Entries already created for Work Order ,Zápisy již vytvořené pro pracovní objednávku
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Item Code > Item Group > Brand,Kód položky> Skupina položek> Značka
apps/erpnext/erpnext/templates/pages/cart.html,See past orders,Zobrazit minulé objednávky
apps/erpnext/erpnext/public/js/hub/pages/Selling.vue,{0} conversations,{0} konverzací
DocType: Vital Signs,Respiratory rate,Dechová frekvence
@@ -1139,7 +1136,6 @@
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,An error occurred during the update process,Během procesu aktualizace došlo k chybě
DocType: Restaurant Reservation,Restaurant Reservation,Rezervace restaurace
apps/erpnext/erpnext/public/js/hub/Sidebar.vue,Your Items,Vaše položky
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Supplier > Supplier Type,Dodavatel> Typ dodavatele
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Proposal Writing,Návrh Psaní
DocType: Payment Entry Deduction,Payment Entry Deduction,Platba Vstup dedukce
DocType: Service Level Priority,Service Level Priority,Priorita úrovně služeb
@@ -1438,7 +1434,6 @@
apps/erpnext/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js,Please select Company and Posting Date to getting entries,Zvolte prosím datum společnosti a datum odevzdání
DocType: Asset,Maintenance,Údržba
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test.js,Get from Patient Encounter,Získejte z setkání pacienta
-apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,UOM Conversion factor ({0} -> {1}) not found for item: {2},UOM konverzní faktor ({0} -> {1}) nebyl nalezen pro položku: {2}
DocType: Subscriber,Subscriber,Odběratel
DocType: Item Attribute Value,Item Attribute Value,Položka Hodnota atributu
apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py,Currency Exchange must be applicable for Buying or for Selling.,Směnárna musí být platná pro nákup nebo pro prodej.
@@ -1955,7 +1950,6 @@
DocType: Purchase Invoice,Is Return (Debit Note),Je Return (Debit Note)
DocType: Workstation,Wages,Mzdy
DocType: Asset Maintenance,Maintenance Manager Name,Název správce údržby
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js,Transactions against the company already exist! ,Transakce proti společnosti již existují!
apps/erpnext/erpnext/buying/report/procurement_tracker/procurement_tracker.py,Requesting Site,Žádající web
DocType: Agriculture Task,Urgent,Naléhavý
apps/erpnext/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js,Fetching records......,Načítání záznamů ......
@@ -2653,7 +2647,6 @@
apps/erpnext/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.py,The Payment Term at row {0} is possibly a duplicate.,Platba v řádku {0} je možná duplikát.
apps/erpnext/erpnext/public/js/setup_wizard.js,Agriculture (beta),Zemědělství (beta)
apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.js,Packing Slip,Balící list
-apps/erpnext/erpnext/setup/doctype/naming_series/naming_series.py,Please set Naming Series for {0} via Setup > Settings > Naming Series,Nastavte Naming Series pro {0} prostřednictvím Setup> Settings> Naming Series
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py,Office Rent,Pronájem kanceláře
apps/erpnext/erpnext/config/settings.py,Setup SMS gateway settings,Nastavení SMS brány
DocType: Disease,Common Name,Běžné jméno
@@ -2819,7 +2812,6 @@
apps/erpnext/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py,Leaves Allocated Successfully for {0},Dovolená úspěšně přidělena {0}
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py,No Items to pack,Žádné položky k balení
apps/erpnext/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py,Only .csv and .xlsx files are supported currently,Aktuálně jsou podporovány pouze soubory CSV a XLSX
-apps/erpnext/erpnext/hr/doctype/employee/employee.py,Please setup Employee Naming System in Human Resource > HR Settings,Nastavte prosím systém názvů zaměstnanců v části Lidské zdroje> Nastavení lidských zdrojů
DocType: Shipping Rule Condition,From Value,Od hodnoty
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Manufacturing Quantity is mandatory,Výrobní množství je povinné
DocType: Loan,Repayment Method,splácení Metoda
@@ -4067,7 +4059,6 @@
apps/erpnext/erpnext/templates/form_grid/material_request_grid.html,Required On,Povinné On
DocType: HR Settings,"If checked, hides and disables Rounded Total field in Salary Slips","Pokud je zaškrtnuto, skryje a zakáže pole Zaokrouhlený celkový počet v Salary Slips"
DocType: Woocommerce Settings,This is the default offset (days) for the Delivery Date in Sales Orders. The fallback offset is 7 days from the order placement date.,Toto je výchozí offset (dny) pro datum dodání v prodejních objednávkách. Náhradní kompenzace je 7 dní od data zadání objednávky.
-apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py,Please setup numbering series for Attendance via Setup > Numbering Series,Nastavte číslovací řady pro Docházku prostřednictvím Nastavení> Číslovací řady
DocType: Rename Tool,File to Rename,Soubor k přejmenování
apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,Please select BOM for Item in Row {0},"Prosím, vyberte BOM pro položku v řádku {0}"
apps/erpnext/erpnext/accounts/doctype/subscription/subscription.js,Fetch Subscription Updates,Načíst aktualizace předplatného
@@ -4702,7 +4693,6 @@
DocType: Cash Flow Mapping,Is Finance Cost,Jsou finanční náklady
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py,Attendance for employee {0} is already marked,Účast na zaměstnance {0} je již označen
DocType: Packing Slip,If more than one package of the same type (for print),Pokud je více než jeden balík stejného typu (pro tisk)
-apps/erpnext/erpnext/education/doctype/instructor/instructor.py,Please setup Instructor Naming System in Education > Education Settings,Nastavte prosím Pojmenovací systém instruktorů v sekci Vzdělávání> Nastavení vzdělávání
apps/erpnext/erpnext/restaurant/doctype/restaurant_order_entry/restaurant_order_entry.py,Please set default customer in Restaurant Settings,Nastavte výchozího zákazníka v nastavení restaurace
,Salary Register,plat Register
DocType: Company,Default warehouse for Sales Return,Výchozí sklad pro vrácení prodeje
@@ -4973,7 +4963,6 @@
apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html,Pending Activities,Nevyřízené Aktivity
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test_list.js,Create Lab Test,Vytvořit laboratorní test
DocType: Patient Appointment,Reminded,Připomenuto
-DocType: Homepage Section,Cards,Karty
apps/erpnext/erpnext/public/js/setup_wizard.js,View Chart of Accounts,Zobrazit přehled účtů
DocType: Chapter Member,Chapter Member,Člen kapitoly
DocType: Material Request Plan Item,Minimum Order Quantity,Minimální množství pro objednání
@@ -4991,7 +4980,7 @@
apps/erpnext/erpnext/hr/utils.py,Future dates not allowed,Budoucí data nejsou povolená
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py,Expected Delivery Date should be after Sales Order Date,Očekávaný termín dodání by měl být po datu objednávky
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,Reorder Level,Změna pořadí Level
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Chart Of Accounts Template,Účtový rozvrh šablony
+DocType: Company,Chart Of Accounts Template,Účtový rozvrh šablony
DocType: Attendance,Attendance Date,Účast Datum
apps/erpnext/erpnext/assets/doctype/asset/asset.py,Update stock must be enable for the purchase invoice {0},Aktualizace akcií musí být povolena pro nákupní fakturu {0}
apps/erpnext/erpnext/stock/get_item_details.py,Item Price updated for {0} in Price List {1},Položka Cena aktualizován pro {0} v Ceníku {1}
@@ -5555,8 +5544,6 @@
apps/erpnext/erpnext/accounts/doctype/shareholder/shareholder.js,Share Ledger,Sdílet knihu
apps/erpnext/erpnext/healthcare/doctype/patient/patient.js,Sales Invoice {0} created,Byla vytvořena prodejní faktura {0}
DocType: Employee,Confirmation Date,Potvrzení Datum
-apps/erpnext/erpnext/hr/doctype/employee_transfer/employee_transfer.py,"Please delete the Employee <a href=""#Form/Employee/{0}"">{0}</a>\
- to cancel this document","Chcete-li tento dokument zrušit, prosím odstraňte zaměstnance <a href=""#Form/Employee/{0}"">{0}</a> \"
DocType: Inpatient Occupancy,Check Out,Překontrolovat
DocType: C-Form,Total Invoiced Amount,Celkem Fakturovaná částka
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py,Min Qty can not be greater than Max Qty,Min množství nemůže být větší než Max Množství
@@ -5763,7 +5750,6 @@
DocType: Cheque Print Template,Cheque Width,Šek Šířka
DocType: Selling Settings,Validate Selling Price for Item against Purchase Rate or Valuation Rate,Ověření prodejní ceny položky proti nákupní ceně nebo ocenění
DocType: Fee Schedule,Fee Schedule,poplatek Plán
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Column Labels : ,Štítky sloupců:
DocType: Bank Transaction,Settled,Usadil se
apps/erpnext/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.html,Cess,Cess
DocType: Quality Feedback,Parameters,Parametry
@@ -6437,6 +6423,7 @@
DocType: Salary Component,Formula,Vzorec
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py,Serial #,Serial #
DocType: Material Request Plan Item,Required Quantity,Požadované množství
+DocType: Cash Flow Mapping Template,Template Name,Název šablony
DocType: Lab Test Template,Lab Test Template,Šablona zkušebního laboratoře
apps/erpnext/erpnext/accounts/doctype/accounting_period/accounting_period.py,Accounting Period overlaps with {0},Účetní období se překrývá s {0}
apps/erpnext/erpnext/setup/doctype/company/company.py,Sales Account,Prodejní účet
@@ -6497,7 +6484,7 @@
DocType: Bank Reconciliation Detail,Cheque Date,Šek Datum
apps/erpnext/erpnext/accounts/doctype/account/account.py,Account {0}: Parent account {1} does not belong to company: {2},Účet {0}: Nadřazený účet {1} nepatří ke společnosti: {2}
apps/erpnext/erpnext/setup/doctype/company/company.js,Successfully deleted all transactions related to this company!,Úspěšně vypouští všechny transakce související s tímto společnosti!
-apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js,As on Date,Stejně jako u Date
+apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.js,As on Date,Stejně jako u Date
DocType: Additional Salary,HR,HR
DocType: Course Enrollment,Enrollment Date,zápis Datum
DocType: Healthcare Settings,Out Patient SMS Alerts,Upozornění na upozornění pacienta
@@ -6563,7 +6550,6 @@
DocType: Course Content,Quiz,Kviz
DocType: Subscription,Trial Period End Date,Datum ukončení zkušebního období
apps/erpnext/erpnext/setup/doctype/authorization_control/authorization_control.py,Not authroized since {0} exceeds limits,Není authroized od {0} překročí limity
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Start entering data from here : ,Začněte zadávat data odtud:
DocType: Serial No,Asset Status,Stav majetku
DocType: Sales Invoice,Over Dimensional Cargo (ODC),Rozměrný náklad (ODC)
DocType: Restaurant Order Entry,Restaurant Table,Restaurace Tabulka
@@ -6790,7 +6776,6 @@
DocType: Contract,Party User,Party Uživatel
apps/erpnext/erpnext/controllers/buying_controller.py,Assets not created for <b>{0}</b>. You will have to create asset manually.,Aktiva nebyla vytvořena pro <b>{0}</b> . Budete muset vytvořit dílo ručně.
apps/erpnext/erpnext/stock/report/total_stock_summary/total_stock_summary.py,Please set Company filter blank if Group By is 'Company',"Nastavte filtr společnosti prázdný, pokud je Skupina By je 'Company'"
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Customer > Customer Group > Territory,Zákazník> Skupina zákazníků> Území
apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py,Posting Date cannot be future date,Vysílání datum nemůže být budoucí datum
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Row # {0}: Serial No {1} does not match with {2} {3},Řádek # {0}: Výrobní číslo {1} neodpovídá {2} {3}
DocType: Loan Repayment,Interest Payable,Úroky splatné
@@ -7025,7 +7010,6 @@
apps/erpnext/erpnext/accounts/report/share_balance/share_balance.py,Average Rate,Průměrné hodnocení
DocType: Appointment,Appointment With,Schůzka s
apps/erpnext/erpnext/controllers/accounts_controller.py,Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total,Celková částka platby v rozpisu plateb se musí rovnat hodnotě Grand / Rounded Total
-apps/erpnext/erpnext/hr/doctype/attendance/attendance_list.js,Mark attendance as <b></b>,Označit účast jako <b></b>
apps/erpnext/erpnext/stock/doctype/item/item.py,"""Customer Provided Item"" cannot have Valuation Rate",„Položka poskytovaná zákazníkem“ nemůže mít sazbu ocenění
DocType: Subscription Plan Detail,Plan,Plán
apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py,Bank Statement balance as per General Ledger,Výpis z bankovního účtu zůstatek podle hlavní knihy
@@ -7717,7 +7701,6 @@
apps/erpnext/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py,Maximum benefit amount of employee {0} exceeds {1},Maximální výše příspěvku zaměstnance {0} přesahuje {1}
apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py,Total allocated leaves are more than days in the period,Celkové přidělené listy jsou více než dnů v období
DocType: Linked Soil Analysis,Linked Soil Analysis,Analýza propojené půdy
-DocType: Pricing Rule,Percentage,Procento
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Item {0} must be a stock Item,Položka {0} musí být skladem
DocType: Manufacturing Settings,Default Work In Progress Warehouse,Výchozí práci ve skladu Progress
apps/erpnext/erpnext/healthcare/doctype/practitioner_schedule/practitioner_schedule.js,"Schedules for {0} overlaps, do you want to proceed after skiping overlaped slots ?","Plán pro překrytí {0}, chcete pokračovat po přeskočení přesahovaných slotů?"
diff --git a/erpnext/translations/da.csv b/erpnext/translations/da.csv
index 8a54136..df6b6c5 100644
--- a/erpnext/translations/da.csv
+++ b/erpnext/translations/da.csv
@@ -168,12 +168,11 @@
DocType: Work Order Operation,Work In Progress,Varer i arbejde
DocType: Leave Control Panel,Branch (optional),Gren (valgfri)
apps/erpnext/erpnext/education/report/absent_student_report/absent_student_report.py,Please select date,Vælg venligst dato
-DocType: Item Price,Minimum Qty ,Minimum antal
+apps/erpnext/erpnext/stock/report/product_bundle_balance/product_bundle_balance.py,Minimum Qty ,Minimum antal
apps/erpnext/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py,BOM recursion: {0} cannot be child of {1},BOM-rekursion: {0} kan ikke være barn af {1}
DocType: Finance Book,Finance Book,Finans Bog
DocType: Patient Encounter,HLC-ENC-.YYYY.-,HLC-ENC-.YYYY.-
DocType: Appointment Booking Settings,Holiday List,Helligdagskalender
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,The parent account {0} does not exists,Forældrekontoen {0} findes ikke
apps/erpnext/erpnext/config/quality_management.py,Review and Action,Gennemgang og handling
apps/erpnext/erpnext/hr/doctype/employee_checkin/employee_checkin.py,This employee already has a log with the same timestamp.{0},Denne medarbejder har allerede en log med det samme tidsstempel. {0}
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Accountant,Revisor
@@ -245,7 +244,6 @@
DocType: Exchange Rate Revaluation Account,Gain/Loss,Gevinst / Tab
DocType: Crop,Perennial,Perennial
DocType: Program,Is Published,Udgives
-apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js,Show Delivery Notes,Vis leveringsnotater
apps/erpnext/erpnext/controllers/status_updater.py,"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.",For at tillade overfakturering skal du opdatere "Over faktureringsgodtgørelse" i Kontoindstillinger eller elementet.
DocType: Patient Appointment,Procedure,Procedure
DocType: Accounts Settings,Use Custom Cash Flow Format,Brug Custom Cash Flow Format
@@ -981,7 +979,6 @@
DocType: Patient,Risk Factors,Risikofaktorer
DocType: Patient,Occupational Hazards and Environmental Factors,Arbejdsfarer og miljøfaktorer
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Stock Entries already created for Work Order ,"Aktieindtægter, der allerede er oprettet til Arbejdsordre"
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Item Code > Item Group > Brand,Varekode> Varegruppe> Mærke
apps/erpnext/erpnext/templates/pages/cart.html,See past orders,Se tidligere ordrer
apps/erpnext/erpnext/public/js/hub/pages/Selling.vue,{0} conversations,{0} samtaler
DocType: Vital Signs,Respiratory rate,Respirationsfrekvens
@@ -1139,7 +1136,6 @@
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,An error occurred during the update process,Der opstod en fejl under opdateringsprocessen
DocType: Restaurant Reservation,Restaurant Reservation,Restaurant Reservation
apps/erpnext/erpnext/public/js/hub/Sidebar.vue,Your Items,Dine varer
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Supplier > Supplier Type,Leverandør> Leverandørtype
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Proposal Writing,Forslag Skrivning
DocType: Payment Entry Deduction,Payment Entry Deduction,Betaling indtastning Fradrag
DocType: Service Level Priority,Service Level Priority,Prioritet på serviceniveau
@@ -1438,7 +1434,6 @@
apps/erpnext/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js,Please select Company and Posting Date to getting entries,Vælg venligst Company og Posting Date for at få poster
DocType: Asset,Maintenance,Vedligeholdelse
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test.js,Get from Patient Encounter,Få fra Patient Encounter
-apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,UOM Conversion factor ({0} -> {1}) not found for item: {2},UOM-konverteringsfaktor ({0} -> {1}) ikke fundet for varen: {2}
DocType: Subscriber,Subscriber,abonnent
DocType: Item Attribute Value,Item Attribute Value,Item Attribut Værdi
apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py,Currency Exchange must be applicable for Buying or for Selling.,Valutaveksling skal være gældende for køb eller salg.
@@ -1936,7 +1931,6 @@
DocType: Purchase Invoice,Is Return (Debit Note),Er retur (debit note)
DocType: Workstation,Wages,Løn
DocType: Asset Maintenance,Maintenance Manager Name,Maintenance Manager Navn
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js,Transactions against the company already exist! ,Der findes allerede transaktioner mod virksomheden!
apps/erpnext/erpnext/buying/report/procurement_tracker/procurement_tracker.py,Requesting Site,Anmoder om websted
DocType: Agriculture Task,Urgent,Hurtigst muligt
apps/erpnext/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js,Fetching records......,Henter poster ......
@@ -2633,7 +2627,6 @@
apps/erpnext/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.py,The Payment Term at row {0} is possibly a duplicate.,Betalingsperioden i række {0} er muligvis et duplikat.
apps/erpnext/erpnext/public/js/setup_wizard.js,Agriculture (beta),Landbrug (beta)
apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.js,Packing Slip,Pakkeseddel
-apps/erpnext/erpnext/setup/doctype/naming_series/naming_series.py,Please set Naming Series for {0} via Setup > Settings > Naming Series,Angiv Naming Series for {0} via Setup> Settings> Naming Series
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py,Office Rent,Kontorleje
apps/erpnext/erpnext/config/settings.py,Setup SMS gateway settings,Opsætning SMS gateway-indstillinger
DocType: Disease,Common Name,Almindeligt navn
@@ -2799,7 +2792,6 @@
apps/erpnext/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py,Leaves Allocated Successfully for {0},Fravær blev succesfuldt tildelt til {0}
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py,No Items to pack,Ingen varer at pakke
apps/erpnext/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py,Only .csv and .xlsx files are supported currently,Kun .csv- og .xlsx-filer understøttes i øjeblikket
-apps/erpnext/erpnext/hr/doctype/employee/employee.py,Please setup Employee Naming System in Human Resource > HR Settings,Indstil venligst medarbejdernavningssystem i menneskelig ressource> HR-indstillinger
DocType: Shipping Rule Condition,From Value,Fra Value
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Manufacturing Quantity is mandatory,Produktionmængde er obligatorisk
DocType: Loan,Repayment Method,tilbagebetaling Metode
@@ -4046,7 +4038,6 @@
apps/erpnext/erpnext/templates/form_grid/material_request_grid.html,Required On,Forfalder den
DocType: HR Settings,"If checked, hides and disables Rounded Total field in Salary Slips","Hvis markeret, skjuler og deaktiverer feltet Rounded Total i lønningssedler"
DocType: Woocommerce Settings,This is the default offset (days) for the Delivery Date in Sales Orders. The fallback offset is 7 days from the order placement date.,Dette er standardforskydningen (dage) for leveringsdatoen i salgsordrer. Fallback-forskydningen er 7 dage fra bestillingsdato.
-apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py,Please setup numbering series for Attendance via Setup > Numbering Series,Indstil nummerserier til deltagelse via Opsætning> Nummereringsserie
DocType: Rename Tool,File to Rename,Fil der skal omdøbes
apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,Please select BOM for Item in Row {0},Vælg BOM for Item i række {0}
apps/erpnext/erpnext/accounts/doctype/subscription/subscription.js,Fetch Subscription Updates,Hent abonnementsopdateringer
@@ -4649,7 +4640,6 @@
DocType: Cash Flow Mapping,Is Finance Cost,Er finansiering omkostninger
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py,Attendance for employee {0} is already marked,Fremmøde til medarbejder {0} er allerede markeret
DocType: Packing Slip,If more than one package of the same type (for print),Hvis mere end én pakke af samme type (til udskrivning)
-apps/erpnext/erpnext/education/doctype/instructor/instructor.py,Please setup Instructor Naming System in Education > Education Settings,Indstil instruktørens navngivningssystem i uddannelse> Uddannelsesindstillinger
apps/erpnext/erpnext/restaurant/doctype/restaurant_order_entry/restaurant_order_entry.py,Please set default customer in Restaurant Settings,Indstil standardkunde i Restaurantindstillinger
,Salary Register,Løn Register
DocType: Company,Default warehouse for Sales Return,Standardlager til salgsafkast
@@ -4920,7 +4910,6 @@
apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html,Pending Activities,Afventende aktiviteter
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test_list.js,Create Lab Test,Lav Lab Test
DocType: Patient Appointment,Reminded,mindet
-DocType: Homepage Section,Cards,Kort
apps/erpnext/erpnext/public/js/setup_wizard.js,View Chart of Accounts,Se oversigt over konti
DocType: Chapter Member,Chapter Member,Kapitel Medlem
DocType: Material Request Plan Item,Minimum Order Quantity,Minimumsordrenummer
@@ -4938,7 +4927,7 @@
apps/erpnext/erpnext/hr/utils.py,Future dates not allowed,Fremtidige datoer ikke tilladt
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py,Expected Delivery Date should be after Sales Order Date,Forventet leveringsdato skal være efter salgsordredato
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,Reorder Level,Genbestil Level
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Chart Of Accounts Template,Kontoplan Skabelon
+DocType: Company,Chart Of Accounts Template,Kontoplan Skabelon
DocType: Attendance,Attendance Date,Fremmøde dato
apps/erpnext/erpnext/assets/doctype/asset/asset.py,Update stock must be enable for the purchase invoice {0},Opdateringslager skal aktiveres for købsfakturaen {0}
apps/erpnext/erpnext/stock/get_item_details.py,Item Price updated for {0} in Price List {1},Vareprisen opdateret for {0} i prisliste {1}
@@ -5503,8 +5492,6 @@
apps/erpnext/erpnext/accounts/doctype/shareholder/shareholder.js,Share Ledger,Del Ledger
apps/erpnext/erpnext/healthcare/doctype/patient/patient.js,Sales Invoice {0} created,Salgsfaktura {0} oprettet
DocType: Employee,Confirmation Date,Bekræftet den
-apps/erpnext/erpnext/hr/doctype/employee_transfer/employee_transfer.py,"Please delete the Employee <a href=""#Form/Employee/{0}"">{0}</a>\
- to cancel this document","Slet medarbejderen <a href=""#Form/Employee/{0}"">{0}</a> \ for at annullere dette dokument"
DocType: Inpatient Occupancy,Check Out,Check ud
DocType: C-Form,Total Invoiced Amount,Totalt faktureret beløb
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py,Min Qty can not be greater than Max Qty,Min Antal kan ikke være større end Max Antal
@@ -5711,7 +5698,6 @@
DocType: Cheque Print Template,Cheque Width,Anvendes ikke
DocType: Selling Settings,Validate Selling Price for Item against Purchase Rate or Valuation Rate,Godkend salgspris for vare mod købspris eller værdiansættelsespris
DocType: Fee Schedule,Fee Schedule,Fee Schedule
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Column Labels : ,Kolonnetiketter:
DocType: Bank Transaction,Settled,Slog sig ned
apps/erpnext/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.html,Cess,Cess
DocType: Quality Feedback,Parameters,Parametre
@@ -6386,6 +6372,7 @@
DocType: Salary Component,Formula,Formel
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py,Serial #,Serienummer
DocType: Material Request Plan Item,Required Quantity,Påkrævet mængde
+DocType: Cash Flow Mapping Template,Template Name,Skabelonnavn
DocType: Lab Test Template,Lab Test Template,Lab Test Template
apps/erpnext/erpnext/accounts/doctype/accounting_period/accounting_period.py,Accounting Period overlaps with {0},Regnskabsperiode overlapper med {0}
apps/erpnext/erpnext/setup/doctype/company/company.py,Sales Account,Salgskonto
@@ -6446,7 +6433,7 @@
DocType: Bank Reconciliation Detail,Cheque Date,Anvendes ikke
apps/erpnext/erpnext/accounts/doctype/account/account.py,Account {0}: Parent account {1} does not belong to company: {2},Konto {0}: Forældre-konto {1} tilhører ikke virksomheden: {2}
apps/erpnext/erpnext/setup/doctype/company/company.js,Successfully deleted all transactions related to this company!,Succesfuld slettet alle transaktioner i forbindelse med dette selskab!
-apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js,As on Date,Som på dato
+apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.js,As on Date,Som på dato
DocType: Additional Salary,HR,HR
DocType: Course Enrollment,Enrollment Date,Tilmelding Dato
DocType: Healthcare Settings,Out Patient SMS Alerts,Out Patient SMS Alerts
@@ -6512,7 +6499,6 @@
DocType: Course Content,Quiz,Quiz
DocType: Subscription,Trial Period End Date,Prøveperiode Slutdato
apps/erpnext/erpnext/setup/doctype/authorization_control/authorization_control.py,Not authroized since {0} exceeds limits,Ikke authroized da {0} overskrider grænser
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Start entering data from here : ,Begynd med at indtaste data herfra:
DocType: Serial No,Asset Status,Aktiver status
DocType: Sales Invoice,Over Dimensional Cargo (ODC),Over dimensionel last (ODC)
DocType: Restaurant Order Entry,Restaurant Table,Restaurantbord
@@ -6738,7 +6724,6 @@
DocType: Contract,Party User,Selskabs-bruger
apps/erpnext/erpnext/controllers/buying_controller.py,Assets not created for <b>{0}</b>. You will have to create asset manually.,"Aktiver, der ikke er oprettet for <b>{0}</b> . Du skal oprette aktiv manuelt."
apps/erpnext/erpnext/stock/report/total_stock_summary/total_stock_summary.py,Please set Company filter blank if Group By is 'Company',"Indstil Firmafilter blankt, hvis Group By er 'Company'"
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Customer > Customer Group > Territory,Kunde> Kundegruppe> Territorium
apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py,Posting Date cannot be future date,Bogføringsdato kan ikke være en fremtidig dato
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Row # {0}: Serial No {1} does not match with {2} {3},Række # {0}: serienummer {1} matcher ikke med {2} {3}
DocType: Loan Repayment,Interest Payable,Rentebetaling
@@ -6973,7 +6958,6 @@
apps/erpnext/erpnext/accounts/report/share_balance/share_balance.py,Average Rate,Gennemsnitlig sats
DocType: Appointment,Appointment With,Aftale med
apps/erpnext/erpnext/controllers/accounts_controller.py,Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total,Samlet betalingsbeløb i betalingsplan skal svare til Grand / Rounded Total
-apps/erpnext/erpnext/hr/doctype/attendance/attendance_list.js,Mark attendance as <b></b>,Markér deltagelse som <b></b>
apps/erpnext/erpnext/stock/doctype/item/item.py,"""Customer Provided Item"" cannot have Valuation Rate","""Kundens leverede vare"" kan ikke have værdiansættelsesrate"
DocType: Subscription Plan Detail,Plan,Plan
apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py,Bank Statement balance as per General Ledger,Kontoudskrift balance pr Finans
@@ -7663,7 +7647,6 @@
apps/erpnext/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py,Maximum benefit amount of employee {0} exceeds {1},Maksimal ydelsesbeløb for medarbejderen {0} overstiger {1}
apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py,Total allocated leaves are more than days in the period,Samlede fordelte blade er mere end dage i perioden
DocType: Linked Soil Analysis,Linked Soil Analysis,Linked Soil Analysis
-DocType: Pricing Rule,Percentage,Procent
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Item {0} must be a stock Item,Vare {0} skal være en lagervare
DocType: Manufacturing Settings,Default Work In Progress Warehouse,Standard varer-i-arbejde-lager
apps/erpnext/erpnext/healthcare/doctype/practitioner_schedule/practitioner_schedule.js,"Schedules for {0} overlaps, do you want to proceed after skiping overlaped slots ?","Skemaer for {0} overlapninger, vil du fortsætte efter at have oversat overlapte slots?"
diff --git a/erpnext/translations/de.csv b/erpnext/translations/de.csv
index 0d406dc..66b10ef 100644
--- a/erpnext/translations/de.csv
+++ b/erpnext/translations/de.csv
@@ -168,12 +168,11 @@
DocType: Work Order Operation,Work In Progress,Laufende Arbeit/-en
DocType: Leave Control Panel,Branch (optional),Zweigstelle (optional)
apps/erpnext/erpnext/education/report/absent_student_report/absent_student_report.py,Please select date,Bitte wählen Sie Datum
-DocType: Item Price,Minimum Qty ,Mindestmenge
+apps/erpnext/erpnext/stock/report/product_bundle_balance/product_bundle_balance.py,Minimum Qty ,Mindestmenge
apps/erpnext/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py,BOM recursion: {0} cannot be child of {1},Stücklistenrekursion: {0} darf nicht untergeordnet zu {1} sein
DocType: Finance Book,Finance Book,Finanzbuch
DocType: Patient Encounter,HLC-ENC-.YYYY.-,HLC-ENC-.YYYY.-
DocType: Appointment Booking Settings,Holiday List,Urlaubsübersicht
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,The parent account {0} does not exists,Das übergeordnete Konto {0} ist nicht vorhanden
apps/erpnext/erpnext/config/quality_management.py,Review and Action,Überprüfung und Aktion
apps/erpnext/erpnext/hr/doctype/employee_checkin/employee_checkin.py,This employee already has a log with the same timestamp.{0},Dieser Mitarbeiter hat bereits ein Protokoll mit demselben Zeitstempel. {0}
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Accountant,Buchhalter
@@ -245,7 +244,6 @@
DocType: Exchange Rate Revaluation Account,Gain/Loss,Gewinn/Verlust
DocType: Crop,Perennial,Staude
DocType: Program,Is Published,Ist veröffentlicht
-apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js,Show Delivery Notes,Lieferscheine anzeigen
apps/erpnext/erpnext/controllers/status_updater.py,"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.","Aktualisieren Sie "Over Billing Allowance" in den Kontoeinstellungen oder im Artikel, um eine Überberechnung zuzulassen."
DocType: Patient Appointment,Procedure,Verfahren
DocType: Accounts Settings,Use Custom Cash Flow Format,Benutzerdefiniertes Cashflow-Format verwenden
@@ -981,7 +979,6 @@
DocType: Patient,Risk Factors,Risikofaktoren
DocType: Patient,Occupational Hazards and Environmental Factors,Berufsrisiken und Umweltfaktoren
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Stock Entries already created for Work Order ,"Lagereinträge, die bereits für den Arbeitsauftrag erstellt wurden"
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Item Code > Item Group > Brand,Artikelcode> Artikelgruppe> Marke
apps/erpnext/erpnext/templates/pages/cart.html,See past orders,Frühere Bestellungen anzeigen
apps/erpnext/erpnext/public/js/hub/pages/Selling.vue,{0} conversations,{0} Konversationen
DocType: Vital Signs,Respiratory rate,Atemfrequenz
@@ -1139,7 +1136,6 @@
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,An error occurred during the update process,Während des Aktualisierungsprozesses ist ein Fehler aufgetreten
DocType: Restaurant Reservation,Restaurant Reservation,Restaurant Reservierung
apps/erpnext/erpnext/public/js/hub/Sidebar.vue,Your Items,Ihre Artikel
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Supplier > Supplier Type,Lieferant> Lieferantentyp
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Proposal Writing,Verfassen von Angeboten
DocType: Payment Entry Deduction,Payment Entry Deduction,Zahlungsabzug
DocType: Service Level Priority,Service Level Priority,Service Level Priorität
@@ -1438,7 +1434,6 @@
apps/erpnext/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js,Please select Company and Posting Date to getting entries,"Bitte wählen Sie Unternehmen und Buchungsdatum, um Einträge zu erhalten"
DocType: Asset,Maintenance,Wartung
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test.js,Get from Patient Encounter,Von der Patientenbegegnung erhalten
-apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,UOM Conversion factor ({0} -> {1}) not found for item: {2},UOM-Umrechnungsfaktor ({0} -> {1}) für Element nicht gefunden: {2}
DocType: Subscriber,Subscriber,Teilnehmer
DocType: Item Attribute Value,Item Attribute Value,Attributwert des Artikels
apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py,Currency Exchange must be applicable for Buying or for Selling.,Der Währungsumtausch muss beim Kauf oder beim Verkauf anwendbar sein.
@@ -1955,7 +1950,6 @@
DocType: Purchase Invoice,Is Return (Debit Note),ist Rücklieferung (Lastschrift)
DocType: Workstation,Wages,Lohn
DocType: Asset Maintenance,Maintenance Manager Name,Name des Wartungs-Managers
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js,Transactions against the company already exist! ,Transaktionen gegen das Unternehmen bestehen bereits!
apps/erpnext/erpnext/buying/report/procurement_tracker/procurement_tracker.py,Requesting Site,Anfordernde Site
DocType: Agriculture Task,Urgent,Dringend
apps/erpnext/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js,Fetching records......,Einträge werden abgefragt ...
@@ -2652,7 +2646,6 @@
apps/erpnext/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.py,The Payment Term at row {0} is possibly a duplicate.,Die Zahlungsbedingung in Zeile {0} ist möglicherweise ein Duplikat.
apps/erpnext/erpnext/public/js/setup_wizard.js,Agriculture (beta),Landwirtschaft (beta)
apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.js,Packing Slip,Packzettel
-apps/erpnext/erpnext/setup/doctype/naming_series/naming_series.py,Please set Naming Series for {0} via Setup > Settings > Naming Series,Bitte stellen Sie die Namensreihe über Setup> Einstellungen> Namensreihe auf {0} ein
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py,Office Rent,Büromiete
apps/erpnext/erpnext/config/settings.py,Setup SMS gateway settings,Einstellungen für SMS-Gateway verwalten
DocType: Disease,Common Name,Gemeinsamen Namen
@@ -2818,7 +2811,6 @@
apps/erpnext/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py,Leaves Allocated Successfully for {0},Erfolgreich zugewiesene Abwesenheiten für {0}
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py,No Items to pack,Keine Artikel zum Verpacken
apps/erpnext/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py,Only .csv and .xlsx files are supported currently,Derzeit werden nur CSV- und XLSX-Dateien unterstützt
-apps/erpnext/erpnext/hr/doctype/employee/employee.py,Please setup Employee Naming System in Human Resource > HR Settings,Bitte richten Sie das Employee Naming System unter Human Resource> HR Settings ein
DocType: Shipping Rule Condition,From Value,Von-Wert
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Manufacturing Quantity is mandatory,Eingabe einer Fertigungsmenge ist erforderlich
DocType: Loan,Repayment Method,Rückzahlweg
@@ -4065,7 +4057,6 @@
apps/erpnext/erpnext/templates/form_grid/material_request_grid.html,Required On,Benötigt am
DocType: HR Settings,"If checked, hides and disables Rounded Total field in Salary Slips","Wenn diese Option aktiviert ist, wird das Feld "Gerundete Summe" in Gehaltsabrechnungen ausgeblendet und deaktiviert"
DocType: Woocommerce Settings,This is the default offset (days) for the Delivery Date in Sales Orders. The fallback offset is 7 days from the order placement date.,Dies ist der Standardversatz (Tage) für das Lieferdatum in Kundenaufträgen. Der Fallback-Offset beträgt 7 Tage ab Bestelldatum.
-apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py,Please setup numbering series for Attendance via Setup > Numbering Series,Bitte richten Sie die Nummerierungsserie für die Teilnahme über Setup> Nummerierungsserie ein
DocType: Rename Tool,File to Rename,"Datei, die umbenannt werden soll"
apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,Please select BOM for Item in Row {0},Bitte Stückliste für Artikel in Zeile {0} auswählen
apps/erpnext/erpnext/accounts/doctype/subscription/subscription.js,Fetch Subscription Updates,Abruf von Abonnement-Updates
@@ -4700,7 +4691,6 @@
DocType: Cash Flow Mapping,Is Finance Cost,Ist Finanzen Kosten
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py,Attendance for employee {0} is already marked,"""Anwesenheit von Mitarbeiter"" {0} ist bereits markiert"
DocType: Packing Slip,If more than one package of the same type (for print),Wenn es mehr als ein Paket von der gleichen Art (für den Druck) gibt
-apps/erpnext/erpnext/education/doctype/instructor/instructor.py,Please setup Instructor Naming System in Education > Education Settings,Bitte richten Sie das Instructor Naming System unter Education> Education Settings ein
apps/erpnext/erpnext/restaurant/doctype/restaurant_order_entry/restaurant_order_entry.py,Please set default customer in Restaurant Settings,Bitte setzen Sie den Standardkunden in den Restauranteinstellungen
,Salary Register,Gehalt Register
DocType: Company,Default warehouse for Sales Return,Standardlager für Verkaufsretoure
@@ -4971,7 +4961,6 @@
apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html,Pending Activities,Ausstehende Aktivitäten
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test_list.js,Create Lab Test,Labortest erstellen
DocType: Patient Appointment,Reminded,Erinnert
-DocType: Homepage Section,Cards,Karten
apps/erpnext/erpnext/public/js/setup_wizard.js,View Chart of Accounts,Kontenplan anzeigen
DocType: Chapter Member,Chapter Member,Gruppen-Mitglied
DocType: Material Request Plan Item,Minimum Order Quantity,Mindestbestellmenge
@@ -4989,7 +4978,7 @@
apps/erpnext/erpnext/hr/utils.py,Future dates not allowed,Zukünftige Termine sind nicht erlaubt
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py,Expected Delivery Date should be after Sales Order Date,Voraussichtlicher Liefertermin sollte nach Kundenauftragsdatum erfolgen
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,Reorder Level,Meldebestand
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Chart Of Accounts Template,Kontenvorlage
+DocType: Company,Chart Of Accounts Template,Kontenvorlage
DocType: Attendance,Attendance Date,Anwesenheitsdatum
apps/erpnext/erpnext/assets/doctype/asset/asset.py,Update stock must be enable for the purchase invoice {0},Die Aktualisierung des Bestands muss für die Eingangsrechnung {0} aktiviert sein.
apps/erpnext/erpnext/stock/get_item_details.py,Item Price updated for {0} in Price List {1},Artikel Preis aktualisiert für {0} in der Preisliste {1}
@@ -5554,8 +5543,6 @@
apps/erpnext/erpnext/accounts/doctype/shareholder/shareholder.js,Share Ledger,Aktienbuch
apps/erpnext/erpnext/healthcare/doctype/patient/patient.js,Sales Invoice {0} created,Verkaufsrechnung {0} erstellt
DocType: Employee,Confirmation Date,Datum bestätigen
-apps/erpnext/erpnext/hr/doctype/employee_transfer/employee_transfer.py,"Please delete the Employee <a href=""#Form/Employee/{0}"">{0}</a>\
- to cancel this document","Bitte löschen Sie den Mitarbeiter <a href=""#Form/Employee/{0}"">{0}</a> \, um dieses Dokument zu stornieren"
DocType: Inpatient Occupancy,Check Out,Check-Out
DocType: C-Form,Total Invoiced Amount,Gesamtrechnungsbetrag
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py,Min Qty can not be greater than Max Qty,Mindestmenge kann nicht größer als Maximalmenge sein
@@ -5762,7 +5749,6 @@
DocType: Cheque Print Template,Cheque Width,Scheck Breite
DocType: Selling Settings,Validate Selling Price for Item against Purchase Rate or Valuation Rate,Bestätigen Sie den Verkaufspreis für den Posten gegen den Einkaufspreis oder Bewertungskurs
DocType: Fee Schedule,Fee Schedule,Gebührenordnung
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Column Labels : ,Spaltenbeschriftungen:
DocType: Bank Transaction,Settled,Erledigt
apps/erpnext/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.html,Cess,Cess
DocType: Quality Feedback,Parameters,Parameter
@@ -6436,6 +6422,7 @@
DocType: Salary Component,Formula,Formel
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py,Serial #,Serien #
DocType: Material Request Plan Item,Required Quantity,Benötigte Menge
+DocType: Cash Flow Mapping Template,Template Name,Vorlagenname
DocType: Lab Test Template,Lab Test Template,Labortestvorlage
apps/erpnext/erpnext/accounts/doctype/accounting_period/accounting_period.py,Accounting Period overlaps with {0},Abrechnungszeitraum überschneidet sich mit {0}
apps/erpnext/erpnext/setup/doctype/company/company.py,Sales Account,Verkaufskonto
@@ -6496,7 +6483,7 @@
DocType: Bank Reconciliation Detail,Cheque Date,Scheckdatum
apps/erpnext/erpnext/accounts/doctype/account/account.py,Account {0}: Parent account {1} does not belong to company: {2},Konto {0}: Kontogruppe {1} gehört nicht zu Unternehmen {2}
apps/erpnext/erpnext/setup/doctype/company/company.js,Successfully deleted all transactions related to this company!,Alle Transaktionen dieses Unternehmens wurden erfolgreich gelöscht!
-apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js,As on Date,Zum
+apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.js,As on Date,Zum
DocType: Additional Salary,HR,HR
DocType: Course Enrollment,Enrollment Date,Enrollment Datum
DocType: Healthcare Settings,Out Patient SMS Alerts,SMS-Benachrichtungen für ambulante Patienten
@@ -6562,7 +6549,6 @@
DocType: Course Content,Quiz,Quiz
DocType: Subscription,Trial Period End Date,Testzeitraum Enddatum
apps/erpnext/erpnext/setup/doctype/authorization_control/authorization_control.py,Not authroized since {0} exceeds limits,Keine Berechtigung da {0} die Höchstgrenzen überschreitet
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Start entering data from here : ,Beginnen Sie hier mit der Dateneingabe:
DocType: Serial No,Asset Status,Status Vermögenswert
DocType: Sales Invoice,Over Dimensional Cargo (ODC),Überdimensionale Ladung (ODC)
DocType: Restaurant Order Entry,Restaurant Table,Restaurant-Tisch
@@ -6788,7 +6774,6 @@
DocType: Contract,Party User,Party Benutzer
apps/erpnext/erpnext/controllers/buying_controller.py,Assets not created for <b>{0}</b>. You will have to create asset manually.,Für <b>{0} wurden</b> keine Assets erstellt. Sie müssen das Asset manuell erstellen.
apps/erpnext/erpnext/stock/report/total_stock_summary/total_stock_summary.py,Please set Company filter blank if Group By is 'Company',"Bitte den Filter ""Unternehmen"" leeren, wenn nach Unternehmen gruppiert wird"
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Customer > Customer Group > Territory,Kunde> Kundengruppe> Gebiet
apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py,Posting Date cannot be future date,Buchungsdatum kann nicht Datum in der Zukunft sein
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Row # {0}: Serial No {1} does not match with {2} {3},Zeile # {0}: Seriennummer {1} stimmt nicht mit {2} {3} überein
DocType: Loan Repayment,Interest Payable,Zu zahlende Zinsen
@@ -7021,7 +7006,6 @@
apps/erpnext/erpnext/accounts/report/share_balance/share_balance.py,Average Rate,Durchschnittsrate
DocType: Appointment,Appointment With,Termin mit
apps/erpnext/erpnext/controllers/accounts_controller.py,Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total,Der gesamte Zahlungsbetrag im Zahlungsplan muss gleich Groß / Abgerundet sein
-apps/erpnext/erpnext/hr/doctype/attendance/attendance_list.js,Mark attendance as <b></b>,Anwesenheit als markieren <b></b>
apps/erpnext/erpnext/stock/doctype/item/item.py,"""Customer Provided Item"" cannot have Valuation Rate","""Customer Provided Item"" kann eine Bewertung haben."
DocType: Subscription Plan Detail,Plan,Planen
apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py,Bank Statement balance as per General Ledger,Kontoauszug Bilanz nach Hauptbuch
@@ -7713,7 +7697,6 @@
apps/erpnext/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py,Maximum benefit amount of employee {0} exceeds {1},Der maximale Leistungsbetrag von Mitarbeiter {0} übersteigt {1}
apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py,Total allocated leaves are more than days in the period,Die Gesamtmenge des beantragten Urlaubs übersteigt die Tage in der Periode
DocType: Linked Soil Analysis,Linked Soil Analysis,Verbundene Bodenanalyse
-DocType: Pricing Rule,Percentage,Prozentsatz
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Item {0} must be a stock Item,Artikel {0} muss ein Lagerartikel sein
DocType: Manufacturing Settings,Default Work In Progress Warehouse,Standard-Fertigungslager
apps/erpnext/erpnext/healthcare/doctype/practitioner_schedule/practitioner_schedule.js,"Schedules for {0} overlaps, do you want to proceed after skiping overlaped slots ?","Schedules für {0} Überlappungen, möchten Sie nach Überlappung überlappender Slots fortfahren?"
diff --git a/erpnext/translations/el.csv b/erpnext/translations/el.csv
index d8b5a0f..b63948a 100644
--- a/erpnext/translations/el.csv
+++ b/erpnext/translations/el.csv
@@ -168,12 +168,11 @@
DocType: Work Order Operation,Work In Progress,Εργασία σε εξέλιξη
DocType: Leave Control Panel,Branch (optional),Υποκατάστημα (προαιρετικό)
apps/erpnext/erpnext/education/report/absent_student_report/absent_student_report.py,Please select date,Παρακαλώ επιλέξτε ημερομηνία
-DocType: Item Price,Minimum Qty ,Ελάχιστη ποσότητα
+apps/erpnext/erpnext/stock/report/product_bundle_balance/product_bundle_balance.py,Minimum Qty ,Ελάχιστη ποσότητα
apps/erpnext/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py,BOM recursion: {0} cannot be child of {1},Αναδρομή στο BOM: {0} δεν μπορεί να είναι παιδί {1}
DocType: Finance Book,Finance Book,Οικονομικό βιβλίο
DocType: Patient Encounter,HLC-ENC-.YYYY.-,HLC-ENC-.YYYY.-
DocType: Appointment Booking Settings,Holiday List,Λίστα αργιών
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,The parent account {0} does not exists,Ο γονικός λογαριασμός {0} δεν υπάρχει
apps/erpnext/erpnext/config/quality_management.py,Review and Action,Ανασκόπηση και δράση
apps/erpnext/erpnext/hr/doctype/employee_checkin/employee_checkin.py,This employee already has a log with the same timestamp.{0},Αυτός ο υπάλληλος έχει ήδη ένα αρχείο καταγραφής με την ίδια χρονική σήμανση. {0}
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Accountant,Λογιστής
@@ -245,7 +244,6 @@
DocType: Exchange Rate Revaluation Account,Gain/Loss,Κέρδος / Απώλεια
DocType: Crop,Perennial,Αιωνόβιος
DocType: Program,Is Published,Δημοσιεύεται
-apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js,Show Delivery Notes,Εμφάνιση σημείων παραλαβής
apps/erpnext/erpnext/controllers/status_updater.py,"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.","Για να επιτρέψετε την υπερβολική τιμολόγηση, ενημερώστε την "Over Allowance Billing" στις Ρυθμίσεις Λογαριασμών ή στο Στοιχείο."
DocType: Patient Appointment,Procedure,Διαδικασία
DocType: Accounts Settings,Use Custom Cash Flow Format,Χρησιμοποιήστε την προσαρμοσμένη μορφή ροής μετρητών
@@ -981,7 +979,6 @@
DocType: Patient,Risk Factors,Παράγοντες κινδύνου
DocType: Patient,Occupational Hazards and Environmental Factors,Επαγγελματικοί κίνδυνοι και περιβαλλοντικοί παράγοντες
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Stock Entries already created for Work Order ,Καταχωρήσεις αποθέματος που έχουν ήδη δημιουργηθεί για παραγγελία εργασίας
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Item Code > Item Group > Brand,Κωδικός στοιχείου> Ομάδα στοιχείων> Μάρκα
apps/erpnext/erpnext/templates/pages/cart.html,See past orders,Δείτε τις προηγούμενες παραγγελίες
apps/erpnext/erpnext/public/js/hub/pages/Selling.vue,{0} conversations,{0} συνομιλίες
DocType: Vital Signs,Respiratory rate,Ρυθμός αναπνοής
@@ -1139,7 +1136,6 @@
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,An error occurred during the update process,Παρουσιάστηκε σφάλμα κατά τη διαδικασία ενημέρωσης
DocType: Restaurant Reservation,Restaurant Reservation,Εστιατόριο Κράτηση
apps/erpnext/erpnext/public/js/hub/Sidebar.vue,Your Items,Τα στοιχεία σας
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Supplier > Supplier Type,Προμηθευτής> Τύπος προμηθευτή
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Proposal Writing,Συγγραφή πρότασης
DocType: Payment Entry Deduction,Payment Entry Deduction,Έκπτωση Έναρξη Πληρωμής
DocType: Service Level Priority,Service Level Priority,Προτεραιότητα επιπέδου υπηρεσιών
@@ -1438,7 +1434,6 @@
apps/erpnext/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js,Please select Company and Posting Date to getting entries,Επιλέξτε Εταιρεία και ημερομηνία δημοσίευσης για να λάβετε καταχωρήσεις
DocType: Asset,Maintenance,Συντήρηση
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test.js,Get from Patient Encounter,Λάβετε από την συνάντηση των ασθενών
-apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,UOM Conversion factor ({0} -> {1}) not found for item: {2},UOM Ο συντελεστής μετατροπής ({0} -> {1}) δεν βρέθηκε για το στοιχείο: {2}
DocType: Subscriber,Subscriber,Συνδρομητής
DocType: Item Attribute Value,Item Attribute Value,Τιμή χαρακτηριστικού είδους
apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py,Currency Exchange must be applicable for Buying or for Selling.,Η υπηρεσία συναλλάγματος πρέπει να ισχύει για την αγορά ή την πώληση.
@@ -1955,7 +1950,6 @@
DocType: Purchase Invoice,Is Return (Debit Note),Επιστροφή (χρεωστική σημείωση)
DocType: Workstation,Wages,Μισθοί
DocType: Asset Maintenance,Maintenance Manager Name,Όνομα διαχειριστή συντήρησης
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js,Transactions against the company already exist! ,Συναλλαγές με την εταιρεία υπάρχουν ήδη!
apps/erpnext/erpnext/buying/report/procurement_tracker/procurement_tracker.py,Requesting Site,Αιτούσα τοποθεσία
DocType: Agriculture Task,Urgent,Επείγον
apps/erpnext/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js,Fetching records......,Ανάκτηση αρχείων ......
@@ -2651,7 +2645,6 @@
apps/erpnext/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.py,The Payment Term at row {0} is possibly a duplicate.,Ο όρος πληρωμής στη σειρά {0} είναι πιθανώς διπλό.
apps/erpnext/erpnext/public/js/setup_wizard.js,Agriculture (beta),Γεωργία (βήτα)
apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.js,Packing Slip,Δελτίο συσκευασίας
-apps/erpnext/erpnext/setup/doctype/naming_series/naming_series.py,Please set Naming Series for {0} via Setup > Settings > Naming Series,Ορίστε την Ονοματοδοσία για {0} μέσω του Setup> Settings> Naming Series
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py,Office Rent,Ενοίκιο γραφείου
apps/erpnext/erpnext/config/settings.py,Setup SMS gateway settings,Ρύθμιση στοιχείων SMS gateway
DocType: Disease,Common Name,Συνηθισμένο όνομα
@@ -2817,7 +2810,6 @@
apps/erpnext/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py,Leaves Allocated Successfully for {0},Οι άδειες κατανεμήθηκαν επιτυχώς για {0}
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py,No Items to pack,Δεν βρέθηκαν είδη για συσκευασία
apps/erpnext/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py,Only .csv and .xlsx files are supported currently,Μόνο αρχεία .csv και .xlsx υποστηρίζονται αυτήν τη στιγμή
-apps/erpnext/erpnext/hr/doctype/employee/employee.py,Please setup Employee Naming System in Human Resource > HR Settings,Ρυθμίστε το Σύστημα Ονοματοδοσίας Εργαζομένων σε Ανθρώπινο Δυναμικό> Ρυθμίσεις HR
DocType: Shipping Rule Condition,From Value,Από τιμή
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Manufacturing Quantity is mandatory,Η παραγόμενη ποσότητα είναι απαραίτητη
DocType: Loan,Repayment Method,Τρόπος αποπληρωμής
@@ -4064,7 +4056,6 @@
apps/erpnext/erpnext/templates/form_grid/material_request_grid.html,Required On,Απαιτείται στις
DocType: HR Settings,"If checked, hides and disables Rounded Total field in Salary Slips","Εάν είναι επιλεγμένο, αποκρύπτει και απενεργοποιεί το πεδίο Στρογγυλεμένο Σύνολο στις Μορφές Μισθών"
DocType: Woocommerce Settings,This is the default offset (days) for the Delivery Date in Sales Orders. The fallback offset is 7 days from the order placement date.,Αυτή είναι η προεπιλεγμένη αντιστάθμιση (ημέρες) για την Ημερομηνία παράδοσης στις Παραγγελίες Πωλήσεων. Η αντισταθμιστική αντιστάθμιση είναι 7 ημέρες από την ημερομηνία τοποθέτησης της παραγγελίας.
-apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py,Please setup numbering series for Attendance via Setup > Numbering Series,Ρυθμίστε τη σειρά αρίθμησης για τη συμμετοχή μέσω του προγράμματος Εγκατάστασης> Σειρά αρίθμησης
DocType: Rename Tool,File to Rename,Αρχείο μετονομασίας
apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,Please select BOM for Item in Row {0},Επιλέξτε BOM για τη θέση στη σειρά {0}
apps/erpnext/erpnext/accounts/doctype/subscription/subscription.js,Fetch Subscription Updates,Λήψη ενημερώσεων συνδρομής
@@ -4699,7 +4690,6 @@
DocType: Cash Flow Mapping,Is Finance Cost,Είναι το κόστος χρηματοδότησης
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py,Attendance for employee {0} is already marked,Η συμμετοχή για εργαζομένο {0} έχει ήδη σημειώθει
DocType: Packing Slip,If more than one package of the same type (for print),Εάν περισσότερες από μία συσκευασίες του ίδιου τύπου (για εκτύπωση)
-apps/erpnext/erpnext/education/doctype/instructor/instructor.py,Please setup Instructor Naming System in Education > Education Settings,Ρυθμίστε το Σύστημα Ονοματοδοσίας Εκπαιδευτών στην Εκπαίδευση> Ρυθμίσεις Εκπαίδευσης
apps/erpnext/erpnext/restaurant/doctype/restaurant_order_entry/restaurant_order_entry.py,Please set default customer in Restaurant Settings,Ορίστε τον προεπιλεγμένο πελάτη στις Ρυθμίσεις εστιατορίου
,Salary Register,μισθός Εγγραφή
DocType: Company,Default warehouse for Sales Return,Προκαθορισμένη αποθήκη για επιστροφή πωλήσεων
@@ -4970,7 +4960,6 @@
apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html,Pending Activities,Εν αναμονή Δραστηριότητες
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test_list.js,Create Lab Test,Δημιουργία δοκιμής εργαστηρίου
DocType: Patient Appointment,Reminded,Υπενθύμισε
-DocType: Homepage Section,Cards,Καρτέλλες
apps/erpnext/erpnext/public/js/setup_wizard.js,View Chart of Accounts,Δείτε το πρόγραμμα λογαριασμών
DocType: Chapter Member,Chapter Member,Μέλος του κεφαλαίου
DocType: Material Request Plan Item,Minimum Order Quantity,Ελάχιστη ποσότητα παραγγελίας
@@ -4988,7 +4977,7 @@
apps/erpnext/erpnext/hr/utils.py,Future dates not allowed,Οι μελλοντικές ημερομηνίες δεν επιτρέπονται
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py,Expected Delivery Date should be after Sales Order Date,Η αναμενόμενη ημερομηνία παράδοσης πρέπει να είναι μετά την ημερομηνία παραγγελίας
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,Reorder Level,Αναδιάταξη επιπέδου
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Chart Of Accounts Template,Διάγραμμα του προτύπου Λογαριασμών
+DocType: Company,Chart Of Accounts Template,Διάγραμμα του προτύπου Λογαριασμών
DocType: Attendance,Attendance Date,Ημερομηνία συμμετοχής
apps/erpnext/erpnext/assets/doctype/asset/asset.py,Update stock must be enable for the purchase invoice {0},Πρέπει να ενεργοποιηθεί το ενημερωτικό απόθεμα για το τιμολόγιο αγοράς {0}
apps/erpnext/erpnext/stock/get_item_details.py,Item Price updated for {0} in Price List {1},Είδους Τιμή ενημερωθεί για {0} στον κατάλογο τιμή {1}
@@ -5553,8 +5542,6 @@
apps/erpnext/erpnext/accounts/doctype/shareholder/shareholder.js,Share Ledger,Λογαριασμός μετοχών
apps/erpnext/erpnext/healthcare/doctype/patient/patient.js,Sales Invoice {0} created,Το τιμολόγιο πωλήσεων {0} δημιουργήθηκε
DocType: Employee,Confirmation Date,Ημερομηνία επιβεβαίωσης
-apps/erpnext/erpnext/hr/doctype/employee_transfer/employee_transfer.py,"Please delete the Employee <a href=""#Form/Employee/{0}"">{0}</a>\
- to cancel this document","Διαγράψτε τον υπάλληλο <a href=""#Form/Employee/{0}"">{0}</a> \ για να ακυρώσετε αυτό το έγγραφο"
DocType: Inpatient Occupancy,Check Out,Ολοκλήρωση αγοράς
DocType: C-Form,Total Invoiced Amount,Συνολικό ποσό που τιμολογήθηκε
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py,Min Qty can not be greater than Max Qty,Η ελάχιστη ποσότητα δεν μπορεί να είναι μεγαλύτερη από την μέγιστη ποσότητα
@@ -5761,7 +5748,6 @@
DocType: Cheque Print Template,Cheque Width,Επιταγή Πλάτος
DocType: Selling Settings,Validate Selling Price for Item against Purchase Rate or Valuation Rate,Επικυρώνει τιμή πώλησης για τη θέση ενάντια Purchase Rate ή αποτίμησης Rate
DocType: Fee Schedule,Fee Schedule,Πρόγραμμα Fee
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Column Labels : ,Ετικέτες στήλης:
DocType: Bank Transaction,Settled,Τακτοποιημένο
apps/erpnext/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.html,Cess,Cess
DocType: Quality Feedback,Parameters,Παράμετροι
@@ -6435,6 +6421,7 @@
DocType: Salary Component,Formula,Τύπος
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py,Serial #,Σειριακός αριθμός #
DocType: Material Request Plan Item,Required Quantity,Απαιτούμενη ποσότητα
+DocType: Cash Flow Mapping Template,Template Name,Όνομα προτύπου
DocType: Lab Test Template,Lab Test Template,Πρότυπο δοκιμής εργαστηρίου
apps/erpnext/erpnext/accounts/doctype/accounting_period/accounting_period.py,Accounting Period overlaps with {0},Η περίοδος λογιστικής επικαλύπτεται με {0}
apps/erpnext/erpnext/setup/doctype/company/company.py,Sales Account,Λογαριασμός πωλήσεων
@@ -6495,7 +6482,7 @@
DocType: Bank Reconciliation Detail,Cheque Date,Ημερομηνία επιταγής
apps/erpnext/erpnext/accounts/doctype/account/account.py,Account {0}: Parent account {1} does not belong to company: {2},Ο λογαριασμός {0}: γονικός λογαριασμός {1} δεν ανήκει στην εταιρεία: {2}
apps/erpnext/erpnext/setup/doctype/company/company.js,Successfully deleted all transactions related to this company!,Διαγράφηκε επιτυχώς όλες τις συναλλαγές που σχετίζονται με αυτή την εταιρεία!
-apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js,As on Date,Ως ημερομηνία για
+apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.js,As on Date,Ως ημερομηνία για
DocType: Additional Salary,HR,HR
DocType: Course Enrollment,Enrollment Date,εγγραφή Ημερομηνία
DocType: Healthcare Settings,Out Patient SMS Alerts,Ειδοποιήσεις SMS ασθενούς
@@ -6561,7 +6548,6 @@
DocType: Course Content,Quiz,Κουίζ
DocType: Subscription,Trial Period End Date,Ημερομηνία λήξης της δοκιμαστικής περιόδου
apps/erpnext/erpnext/setup/doctype/authorization_control/authorization_control.py,Not authroized since {0} exceeds limits,Δεν επιτρέπεται δεδομένου ότι το {0} υπερβαίνει τα όρια
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Start entering data from here : ,Αρχίστε να εισάγετε δεδομένα από εδώ:
DocType: Serial No,Asset Status,Κατάσταση περιουσιακών στοιχείων
DocType: Sales Invoice,Over Dimensional Cargo (ODC),Υπερφορικό φορτίο (ODC)
DocType: Restaurant Order Entry,Restaurant Table,Πίνακας εστιατορίων
@@ -6788,7 +6774,6 @@
DocType: Contract,Party User,Χρήστης κόμματος
apps/erpnext/erpnext/controllers/buying_controller.py,Assets not created for <b>{0}</b>. You will have to create asset manually.,Τα στοιχεία που δεν δημιουργήθηκαν για <b>{0}</b> . Θα πρέπει να δημιουργήσετε το στοιχείο μη αυτόματα.
apps/erpnext/erpnext/stock/report/total_stock_summary/total_stock_summary.py,Please set Company filter blank if Group By is 'Company',"Ρυθμίστε το φίλτρο Εταιρεία κενό, εάν η ομάδα είναι "Εταιρεία""
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Customer > Customer Group > Territory,Πελάτης> Ομάδα πελατών> Επικράτεια
apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py,Posting Date cannot be future date,Απόσπαση ημερομηνία αυτή δεν μπορεί να είναι μελλοντική ημερομηνία
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Row # {0}: Serial No {1} does not match with {2} {3},Σειρά # {0}: Αύξων αριθμός {1} δεν ταιριάζει με το {2} {3}
DocType: Loan Repayment,Interest Payable,Πληρωτέος τόκος
@@ -7023,7 +7008,6 @@
apps/erpnext/erpnext/accounts/report/share_balance/share_balance.py,Average Rate,Μέσος όρος
DocType: Appointment,Appointment With,Ραντεβού με
apps/erpnext/erpnext/controllers/accounts_controller.py,Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total,Το συνολικό ποσό πληρωμής στο Πρόγραμμα Πληρωμών πρέπει να είναι ίσο με το Μεγάλο / Στρογγυλεμένο Σύνολο
-apps/erpnext/erpnext/hr/doctype/attendance/attendance_list.js,Mark attendance as <b></b>,Σημειώστε τη συμμετοχή ως <b></b>
apps/erpnext/erpnext/stock/doctype/item/item.py,"""Customer Provided Item"" cannot have Valuation Rate","Το ""Στοιχείο που παρέχεται από πελάτη"" δεν μπορεί να έχει Τιμή εκτίμησης"
DocType: Subscription Plan Detail,Plan,Σχέδιο
apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py,Bank Statement balance as per General Ledger,Δήλωση ισορροπία τραπεζών σύμφωνα με τη Γενική Λογιστική
@@ -7714,7 +7698,6 @@
apps/erpnext/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py,Maximum benefit amount of employee {0} exceeds {1},Το μέγιστο ποσό παροχών του υπαλλήλου {0} υπερβαίνει το {1}
apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py,Total allocated leaves are more than days in the period,Σύνολο των κατανεμημένων φύλλα είναι περισσότερο από ημέρες κατά την περίοδο
DocType: Linked Soil Analysis,Linked Soil Analysis,Συνδεδεμένη ανάλυση εδάφους
-DocType: Pricing Rule,Percentage,Τοις εκατό
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Item {0} must be a stock Item,Το είδος {0} πρέπει να είναι ένα αποθηκεύσιμο είδος
DocType: Manufacturing Settings,Default Work In Progress Warehouse,Προεπιλογή Work In Progress Αποθήκη
apps/erpnext/erpnext/healthcare/doctype/practitioner_schedule/practitioner_schedule.js,"Schedules for {0} overlaps, do you want to proceed after skiping overlaped slots ?","Χρονοδιαγράμματα για επικαλύψεις {0}, θέλετε να προχωρήσετε αφού παρακάμπτεστε τις επικαλυμμένες υποδοχές;"
diff --git a/erpnext/translations/es.csv b/erpnext/translations/es.csv
index d86a3ba..5e1bd42 100644
--- a/erpnext/translations/es.csv
+++ b/erpnext/translations/es.csv
@@ -168,12 +168,11 @@
DocType: Work Order Operation,Work In Progress,Trabajo en proceso
DocType: Leave Control Panel,Branch (optional),Rama (opcional)
apps/erpnext/erpnext/education/report/absent_student_report/absent_student_report.py,Please select date,Por favor seleccione la fecha
-DocType: Item Price,Minimum Qty ,Cantidad Mínima
+apps/erpnext/erpnext/stock/report/product_bundle_balance/product_bundle_balance.py,Minimum Qty ,Cantidad Mínima
apps/erpnext/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py,BOM recursion: {0} cannot be child of {1},Recurrencia de la lista de materiales: {0} no puede ser hijo de {1}
DocType: Finance Book,Finance Book,Libro de Finanzas
DocType: Patient Encounter,HLC-ENC-.YYYY.-,HLC-ENC-.YYYY.-
DocType: Appointment Booking Settings,Holiday List,Lista de festividades
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,The parent account {0} does not exists,La cuenta principal {0} no existe
apps/erpnext/erpnext/config/quality_management.py,Review and Action,Revisión y acción
apps/erpnext/erpnext/hr/doctype/employee_checkin/employee_checkin.py,This employee already has a log with the same timestamp.{0},Este empleado ya tiene un registro con la misma marca de tiempo. {0}
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Accountant,Contador
@@ -245,7 +244,6 @@
DocType: Exchange Rate Revaluation Account,Gain/Loss,Pérdida/Ganancia
DocType: Crop,Perennial,Perenne
DocType: Program,Is Published,Esta publicado
-apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js,Show Delivery Notes,Mostrar notas de entrega
apps/erpnext/erpnext/controllers/status_updater.py,"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.","Para permitir la facturación excesiva, actualice "Asignación de facturación excesiva" en la Configuración de cuentas o el Artículo."
DocType: Patient Appointment,Procedure,Procedimiento
DocType: Accounts Settings,Use Custom Cash Flow Format,Utilice el Formato de Flujo de Efectivo Personalizado
@@ -981,7 +979,6 @@
DocType: Patient,Risk Factors,Factores de Riesgo
DocType: Patient,Occupational Hazards and Environmental Factors,Riesgos Laborales y Factores Ambientales
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Stock Entries already created for Work Order ,Entradas de Stock ya creadas para Órden de Trabajo
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Item Code > Item Group > Brand,Código de artículo> Grupo de artículos> Marca
apps/erpnext/erpnext/templates/pages/cart.html,See past orders,Ver pedidos anteriores
apps/erpnext/erpnext/public/js/hub/pages/Selling.vue,{0} conversations,{0} conversaciones
DocType: Vital Signs,Respiratory rate,Frecuencia Respiratoria
@@ -1139,7 +1136,6 @@
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,An error occurred during the update process,Se produjo un error durante el proceso de actualización
DocType: Restaurant Reservation,Restaurant Reservation,Reserva de Restaurante
apps/erpnext/erpnext/public/js/hub/Sidebar.vue,Your Items,Tus cosas
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Supplier > Supplier Type,Proveedor> Tipo de proveedor
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Proposal Writing,Redacción de propuestas
DocType: Payment Entry Deduction,Payment Entry Deduction,Deducción de Entrada de Pago
DocType: Service Level Priority,Service Level Priority,Prioridad de nivel de servicio
@@ -1438,7 +1434,6 @@
apps/erpnext/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js,Please select Company and Posting Date to getting entries,Seleccione Empresa y Fecha de publicación para obtener entradas
DocType: Asset,Maintenance,Mantenimiento
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test.js,Get from Patient Encounter,Obtenga del Encuentro de Pacientes
-apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,UOM Conversion factor ({0} -> {1}) not found for item: {2},Factor de conversión de UOM ({0} -> {1}) no encontrado para el elemento: {2}
DocType: Subscriber,Subscriber,Abonado
DocType: Item Attribute Value,Item Attribute Value,Atributos del Producto
apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py,Currency Exchange must be applicable for Buying or for Selling.,El Cambio de Moneda debe ser aplicable para comprar o vender.
@@ -1936,7 +1931,6 @@
DocType: Purchase Invoice,Is Return (Debit Note),Es Retorno (Nota de Débito)
DocType: Workstation,Wages,Salarios
DocType: Asset Maintenance,Maintenance Manager Name,Nombre del Administrador de Mantenimiento
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js,Transactions against the company already exist! ,¡Ya existen transacciones contra la empresa!
apps/erpnext/erpnext/buying/report/procurement_tracker/procurement_tracker.py,Requesting Site,Sitio solicitante
DocType: Agriculture Task,Urgent,Urgente
apps/erpnext/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js,Fetching records......,Obteniendo Registros......
@@ -2633,7 +2627,6 @@
apps/erpnext/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.py,The Payment Term at row {0} is possibly a duplicate.,El Término de Pago en la fila {0} es posiblemente un duplicado.
apps/erpnext/erpnext/public/js/setup_wizard.js,Agriculture (beta),Agricultura (beta)
apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.js,Packing Slip,Lista de embalaje
-apps/erpnext/erpnext/setup/doctype/naming_series/naming_series.py,Please set Naming Series for {0} via Setup > Settings > Naming Series,Configure Naming Series para {0} a través de Configuración> Configuración> Naming Series
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py,Office Rent,Alquiler de Oficina
apps/erpnext/erpnext/config/settings.py,Setup SMS gateway settings,Configuración de pasarela SMS
DocType: Disease,Common Name,Nombre Común
@@ -2799,7 +2792,6 @@
apps/erpnext/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py,Leaves Allocated Successfully for {0},Vacaciones Distribuidas Satisfactoriamente para {0}
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py,No Items to pack,No hay productos para empacar
apps/erpnext/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py,Only .csv and .xlsx files are supported currently,Actualmente solo se admiten archivos .csv y .xlsx
-apps/erpnext/erpnext/hr/doctype/employee/employee.py,Please setup Employee Naming System in Human Resource > HR Settings,Configure el Sistema de nombres de empleados en Recursos humanos> Configuración de recursos humanos
DocType: Shipping Rule Condition,From Value,Desde Valor
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Manufacturing Quantity is mandatory,La cantidad a producir es obligatoria
DocType: Loan,Repayment Method,Método de Reembolso
@@ -4046,7 +4038,6 @@
apps/erpnext/erpnext/templates/form_grid/material_request_grid.html,Required On,Solicitado el
DocType: HR Settings,"If checked, hides and disables Rounded Total field in Salary Slips","Si está marcado, oculta y deshabilita el campo Total redondeado en los recibos de salario"
DocType: Woocommerce Settings,This is the default offset (days) for the Delivery Date in Sales Orders. The fallback offset is 7 days from the order placement date.,Este es el desplazamiento predeterminado (días) para la Fecha de entrega en Pedidos de ventas. La compensación alternativa es de 7 días a partir de la fecha de colocación del pedido.
-apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py,Please setup numbering series for Attendance via Setup > Numbering Series,Configure la serie de numeración para la Asistencia a través de Configuración> Serie de numeración
DocType: Rename Tool,File to Rename,Archivo a renombrar
apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,Please select BOM for Item in Row {0},"Por favor, seleccione la lista de materiales para el artículo en la fila {0}"
apps/erpnext/erpnext/accounts/doctype/subscription/subscription.js,Fetch Subscription Updates,Obtener Actualizaciones de Suscripción
@@ -4661,7 +4652,6 @@
DocType: Cash Flow Mapping,Is Finance Cost,Es el Costo de las Finanzas
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py,Attendance for employee {0} is already marked,Asistencia para el empleado {0} ya está marcado
DocType: Packing Slip,If more than one package of the same type (for print),Si es más de un paquete del mismo tipo (para impresión)
-apps/erpnext/erpnext/education/doctype/instructor/instructor.py,Please setup Instructor Naming System in Education > Education Settings,Configure el Sistema de nombres de instructores en Educación> Configuración de educación
apps/erpnext/erpnext/restaurant/doctype/restaurant_order_entry/restaurant_order_entry.py,Please set default customer in Restaurant Settings,"Por favor, configure el cliente predeterminado en la configuración del Restaurante"
,Salary Register,Registro de Salario
DocType: Company,Default warehouse for Sales Return,Almacén predeterminado para devolución de ventas
@@ -4932,7 +4922,6 @@
apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html,Pending Activities,Actividades Pendientes
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test_list.js,Create Lab Test,Crear Prueba de Laboratorio
DocType: Patient Appointment,Reminded,Recordado
-DocType: Homepage Section,Cards,Tarjetas
apps/erpnext/erpnext/public/js/setup_wizard.js,View Chart of Accounts,Ver el Cuadro de Cuentas
DocType: Chapter Member,Chapter Member,Miembro del Capítulo
DocType: Material Request Plan Item,Minimum Order Quantity,Cantidad Mínima de Pedido
@@ -4950,7 +4939,7 @@
apps/erpnext/erpnext/hr/utils.py,Future dates not allowed,No se permiten fechas futuras
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py,Expected Delivery Date should be after Sales Order Date,La fecha de entrega esperada debe ser posterior a la fecha del pedido de cliente
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,Reorder Level,Nivel de reabastecimiento
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Chart Of Accounts Template,Plantilla del catálogo de cuentas
+DocType: Company,Chart Of Accounts Template,Plantilla del catálogo de cuentas
DocType: Attendance,Attendance Date,Fecha de Asistencia
apps/erpnext/erpnext/assets/doctype/asset/asset.py,Update stock must be enable for the purchase invoice {0},Actualizar Stock debe estar habilitado para la Factura de Compra {0}
apps/erpnext/erpnext/stock/get_item_details.py,Item Price updated for {0} in Price List {1},Precio del producto actualizado para {0} en Lista de Precios {1}
@@ -5515,8 +5504,6 @@
apps/erpnext/erpnext/accounts/doctype/shareholder/shareholder.js,Share Ledger,Share Ledger
apps/erpnext/erpnext/healthcare/doctype/patient/patient.js,Sales Invoice {0} created,Factura de Venta {0} creada
DocType: Employee,Confirmation Date,Fecha de confirmación
-apps/erpnext/erpnext/hr/doctype/employee_transfer/employee_transfer.py,"Please delete the Employee <a href=""#Form/Employee/{0}"">{0}</a>\
- to cancel this document","Elimine el empleado <a href=""#Form/Employee/{0}"">{0}</a> \ para cancelar este documento"
DocType: Inpatient Occupancy,Check Out,Check Out
DocType: C-Form,Total Invoiced Amount,Total Facturado
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py,Min Qty can not be greater than Max Qty,La cantidad mínima no puede ser mayor que la cantidad maxima
@@ -5723,7 +5710,6 @@
DocType: Cheque Print Template,Cheque Width,Ancho Cheque
DocType: Selling Settings,Validate Selling Price for Item against Purchase Rate or Valuation Rate,Validar precio de venta para el artículo contra la Tarifa de compra o tasa de valorización
DocType: Fee Schedule,Fee Schedule,Programa de Cuotas
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Column Labels : ,Etiquetas de columna:
DocType: Bank Transaction,Settled,Colocado
apps/erpnext/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.html,Cess,Impuesto
DocType: Quality Feedback,Parameters,Parámetros
@@ -6397,6 +6383,7 @@
DocType: Salary Component,Formula,Fórmula
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py,Serial #,Serial #.
DocType: Material Request Plan Item,Required Quantity,Cantidad requerida
+DocType: Cash Flow Mapping Template,Template Name,Nombre de Plantilla
DocType: Lab Test Template,Lab Test Template,Plantilla de Prueba de Laboratorio
apps/erpnext/erpnext/accounts/doctype/accounting_period/accounting_period.py,Accounting Period overlaps with {0},El período contable se superpone con {0}
apps/erpnext/erpnext/setup/doctype/company/company.py,Sales Account,Cuenta de Ventas
@@ -6457,7 +6444,7 @@
DocType: Bank Reconciliation Detail,Cheque Date,Fecha del cheque
apps/erpnext/erpnext/accounts/doctype/account/account.py,Account {0}: Parent account {1} does not belong to company: {2},Cuenta {0}: la cuenta padre {1} no pertenece a la empresa: {2}
apps/erpnext/erpnext/setup/doctype/company/company.js,Successfully deleted all transactions related to this company!,Todas las transacciones relacionadas con esta compañía han sido eliminadas correctamente.
-apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js,As on Date,A la fecha
+apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.js,As on Date,A la fecha
DocType: Additional Salary,HR,HR
DocType: Course Enrollment,Enrollment Date,Fecha de inscripción
DocType: Healthcare Settings,Out Patient SMS Alerts,Alertas SMS de Pacientes
@@ -6523,7 +6510,6 @@
DocType: Course Content,Quiz,Examen
DocType: Subscription,Trial Period End Date,Fecha de Finalización del Período de Prueba
apps/erpnext/erpnext/setup/doctype/authorization_control/authorization_control.py,Not authroized since {0} exceeds limits,No autorizado desde {0} excede los límites
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Start entering data from here : ,Comience a ingresar datos desde aquí:
DocType: Serial No,Asset Status,Estado del Activo
DocType: Sales Invoice,Over Dimensional Cargo (ODC),Carga Sobredimensionada (ODC)
DocType: Restaurant Order Entry,Restaurant Table,Mesa de Restaurante
@@ -6749,7 +6735,6 @@
DocType: Contract,Party User,Usuario Tercero
apps/erpnext/erpnext/controllers/buying_controller.py,Assets not created for <b>{0}</b>. You will have to create asset manually.,Activos no creados para <b>{0}</b> . Deberá crear un activo manualmente.
apps/erpnext/erpnext/stock/report/total_stock_summary/total_stock_summary.py,Please set Company filter blank if Group By is 'Company',"Por favor, ponga el filtro de la Compañía en blanco si el Grupo Por es ' Empresa'."
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Customer > Customer Group > Territory,Cliente> Grupo de clientes> Territorio
apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py,Posting Date cannot be future date,Fecha de entrada no puede ser fecha futura
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Row # {0}: Serial No {1} does not match with {2} {3},Fila #{0}: Número de serie {1} no coincide con {2} {3}
DocType: Loan Repayment,Interest Payable,Los intereses a pagar
@@ -6984,7 +6969,6 @@
apps/erpnext/erpnext/accounts/report/share_balance/share_balance.py,Average Rate,Tasa Promedio
DocType: Appointment,Appointment With,Cita con
apps/erpnext/erpnext/controllers/accounts_controller.py,Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total,El monto total del pago en el cronograma de pago debe ser igual al total / Total Redondeado
-apps/erpnext/erpnext/hr/doctype/attendance/attendance_list.js,Mark attendance as <b></b>,Marcar asistencia como <b></b>
apps/erpnext/erpnext/stock/doctype/item/item.py,"""Customer Provided Item"" cannot have Valuation Rate","El ""artículo proporcionado por el cliente"" no puede tener una tasa de valoración"
DocType: Subscription Plan Detail,Plan,Plan
apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py,Bank Statement balance as per General Ledger,Saldo de Extracto Bancario según Balance General
@@ -7676,7 +7660,6 @@
apps/erpnext/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py,Maximum benefit amount of employee {0} exceeds {1},La cantidad máxima de beneficios del empleado {0} excede de {1}
apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py,Total allocated leaves are more than days in the period,Total de hojas asignados son más que los días en el período
DocType: Linked Soil Analysis,Linked Soil Analysis,Análisis de Suelo Vinculado
-DocType: Pricing Rule,Percentage,Porcentaje
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Item {0} must be a stock Item,El producto {0} debe ser un producto en stock
DocType: Manufacturing Settings,Default Work In Progress Warehouse,Almacén predeterminado de trabajos en proceso
apps/erpnext/erpnext/healthcare/doctype/practitioner_schedule/practitioner_schedule.js,"Schedules for {0} overlaps, do you want to proceed after skiping overlaped slots ?","Las planificaciones para superposiciones de {0}, ¿Desea continuar después de omitir las ranuras superpuestas?"
diff --git a/erpnext/translations/et.csv b/erpnext/translations/et.csv
index f303ca4..a876b5c 100644
--- a/erpnext/translations/et.csv
+++ b/erpnext/translations/et.csv
@@ -166,12 +166,11 @@
DocType: Work Order Operation,Work In Progress,Töö käib
DocType: Leave Control Panel,Branch (optional),Filiaal (valikuline)
apps/erpnext/erpnext/education/report/absent_student_report/absent_student_report.py,Please select date,Palun valige kuupäev
-DocType: Item Price,Minimum Qty ,Minimaalne kogus
+apps/erpnext/erpnext/stock/report/product_bundle_balance/product_bundle_balance.py,Minimum Qty ,Minimaalne kogus
apps/erpnext/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py,BOM recursion: {0} cannot be child of {1},BOM-i rekursioon: {0} ei saa olla lapse {1} laps
DocType: Finance Book,Finance Book,Rahandusraamat
DocType: Patient Encounter,HLC-ENC-.YYYY.-,HLC-ENC- .YYYY.-
DocType: Appointment Booking Settings,Holiday List,Holiday nimekiri
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,The parent account {0} does not exists,Emakontot {0} ei eksisteeri
apps/erpnext/erpnext/config/quality_management.py,Review and Action,Ülevaade ja tegevus
apps/erpnext/erpnext/hr/doctype/employee_checkin/employee_checkin.py,This employee already has a log with the same timestamp.{0},Sellel töötajal on juba sama ajatempliga logi. {0}
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Accountant,Raamatupidaja
@@ -243,7 +242,6 @@
DocType: Exchange Rate Revaluation Account,Gain/Loss,Kasum / kahjum
DocType: Crop,Perennial,Mitmeaastane
DocType: Program,Is Published,Avaldatakse
-apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js,Show Delivery Notes,Kuva saatelehed
apps/erpnext/erpnext/controllers/status_updater.py,"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.",Ülearvelduse lubamiseks värskendage konto seadetes või üksuses jaotist "Üle arvelduse hüvitis".
DocType: Patient Appointment,Procedure,Menetlus
DocType: Accounts Settings,Use Custom Cash Flow Format,Kasutage kohandatud rahavoogude vormingut
@@ -976,7 +974,6 @@
DocType: Patient,Risk Factors,Riskifaktorid
DocType: Patient,Occupational Hazards and Environmental Factors,Kutsealased ohud ja keskkonnategurid
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Stock Entries already created for Work Order ,Tööpakkumiste jaoks juba loodud laoseisud
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Item Code > Item Group > Brand,Kauba kood> esemerühm> kaubamärk
apps/erpnext/erpnext/templates/pages/cart.html,See past orders,Varasemate tellimuste vaatamine
apps/erpnext/erpnext/public/js/hub/pages/Selling.vue,{0} conversations,{0} vestlust
DocType: Vital Signs,Respiratory rate,Hingamissagedus
@@ -1133,7 +1130,6 @@
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,An error occurred during the update process,Värskendamise käigus tekkis viga
DocType: Restaurant Reservation,Restaurant Reservation,Restorani broneering
apps/erpnext/erpnext/public/js/hub/Sidebar.vue,Your Items,Teie esemed
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Supplier > Supplier Type,Tarnija> Tarnija tüüp
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Proposal Writing,Ettepanek kirjutamine
DocType: Payment Entry Deduction,Payment Entry Deduction,Makse Entry mahaarvamine
DocType: Service Level Priority,Service Level Priority,Teenuse taseme prioriteet
@@ -1431,7 +1427,6 @@
apps/erpnext/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js,Please select Company and Posting Date to getting entries,Kirjete saamiseks valige ettevõtte ja postitamise kuupäev
DocType: Asset,Maintenance,Hooldus
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test.js,Get from Patient Encounter,Hankige patsiendikogusest
-apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,UOM Conversion factor ({0} -> {1}) not found for item: {2},UOM teisendustegurit ({0} -> {1}) üksusele {2} ei leitud
DocType: Subscriber,Subscriber,Abonent
DocType: Item Attribute Value,Item Attribute Value,Punkt omadus Value
apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py,Currency Exchange must be applicable for Buying or for Selling.,Valuutavahetus tuleb kohaldada ostmise või müügi suhtes.
@@ -1929,7 +1924,6 @@
DocType: Purchase Invoice,Is Return (Debit Note),Kas tagasitulek (debiteerimata märkus)
DocType: Workstation,Wages,Palgad
DocType: Asset Maintenance,Maintenance Manager Name,Hooldusjuhi nimi
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js,Transactions against the company already exist! ,Ettevõtte vastu on tehingud juba olemas!
apps/erpnext/erpnext/buying/report/procurement_tracker/procurement_tracker.py,Requesting Site,Taotlev sait
DocType: Agriculture Task,Urgent,Urgent
apps/erpnext/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js,Fetching records......,Kirjete toomine ......
@@ -2625,7 +2619,6 @@
apps/erpnext/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.py,The Payment Term at row {0} is possibly a duplicate.,Makse tähtaeg reas {0} on tõenäoliselt duplikaat.
apps/erpnext/erpnext/public/js/setup_wizard.js,Agriculture (beta),Põllumajandus (beetaversioon)
apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.js,Packing Slip,Pakkesedel
-apps/erpnext/erpnext/setup/doctype/naming_series/naming_series.py,Please set Naming Series for {0} via Setup > Settings > Naming Series,"Valige Seadistamise seeria väärtuseks {0}, mis asub seadistuse> Seadistused> Seeria nimetamine"
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py,Office Rent,Office rent
apps/erpnext/erpnext/config/settings.py,Setup SMS gateway settings,Setup SMS gateway seaded
DocType: Disease,Common Name,Üldnimetus
@@ -2791,7 +2784,6 @@
apps/erpnext/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py,Leaves Allocated Successfully for {0},Lehed Eraldatud edukalt {0}
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py,No Items to pack,"Ole tooteid, mida pakkida"
apps/erpnext/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py,Only .csv and .xlsx files are supported currently,Praegu toetatakse ainult .csv- ja .xlsx-faile
-apps/erpnext/erpnext/hr/doctype/employee/employee.py,Please setup Employee Naming System in Human Resource > HR Settings,Palun seadistage töötajate nimetamise süsteem personaliressursist> HR-sätted
DocType: Shipping Rule Condition,From Value,Väärtuse
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Manufacturing Quantity is mandatory,Tootmine Kogus on kohustuslikuks
DocType: Loan,Repayment Method,tagasimaksmine meetod
@@ -4036,7 +4028,6 @@
apps/erpnext/erpnext/templates/form_grid/material_request_grid.html,Required On,Nõutav
DocType: HR Settings,"If checked, hides and disables Rounded Total field in Salary Slips","Kui see on märgitud, peidab ja keelab palgaklaaside välja ümardatud kogusumma"
DocType: Woocommerce Settings,This is the default offset (days) for the Delivery Date in Sales Orders. The fallback offset is 7 days from the order placement date.,See on müügikorralduses tarnekuupäeva vaikimisi nihkumine (päevades). Varu korvamine toimub 7 päeva jooksul alates tellimuse esitamise kuupäevast.
-apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py,Please setup numbering series for Attendance via Setup > Numbering Series,Palun seadistage kohaloleku jaoks numeratsiooniseeria seadistamise> Numeratsiooniseeria kaudu
DocType: Rename Tool,File to Rename,Fail Nimeta ümber
apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,Please select BOM for Item in Row {0},Palun valige Bom Punkt reas {0}
apps/erpnext/erpnext/accounts/doctype/subscription/subscription.js,Fetch Subscription Updates,Liitumiste värskenduste hankimine
@@ -4636,7 +4627,6 @@
DocType: Cash Flow Mapping,Is Finance Cost,Kas rahakulu
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py,Attendance for employee {0} is already marked,Osalemine töötajate {0} on juba märgitud
DocType: Packing Slip,If more than one package of the same type (for print),Kui rohkem kui üks pakett on sama tüüpi (trüki)
-apps/erpnext/erpnext/education/doctype/instructor/instructor.py,Please setup Instructor Naming System in Education > Education Settings,Seadistage juhendaja nimetamise süsteem jaotises Haridus> Hariduse sätted
apps/erpnext/erpnext/restaurant/doctype/restaurant_order_entry/restaurant_order_entry.py,Please set default customer in Restaurant Settings,Tehke vaikeseaded restoranis seaded
,Salary Register,palk Registreeri
DocType: Company,Default warehouse for Sales Return,Vaikeladu müügi tagastamiseks
@@ -4907,7 +4897,6 @@
apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html,Pending Activities,Kuni Tegevused
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test_list.js,Create Lab Test,Loo Lab Test
DocType: Patient Appointment,Reminded,Meenutas
-DocType: Homepage Section,Cards,Kaardid
apps/erpnext/erpnext/public/js/setup_wizard.js,View Chart of Accounts,Vaadake arveldusarvestust
DocType: Chapter Member,Chapter Member,Peatükk Liige
DocType: Material Request Plan Item,Minimum Order Quantity,Tellimuse miinimumkogus
@@ -4925,7 +4914,7 @@
apps/erpnext/erpnext/hr/utils.py,Future dates not allowed,Tulevased kuupäevad pole lubatud
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py,Expected Delivery Date should be after Sales Order Date,Oodatud tarnetähtaeg peaks olema pärast Müügikorralduse kuupäeva
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,Reorder Level,Reorder Level
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Chart Of Accounts Template,Kontoplaani Mall
+DocType: Company,Chart Of Accounts Template,Kontoplaani Mall
DocType: Attendance,Attendance Date,Osavõtt kuupäev
apps/erpnext/erpnext/assets/doctype/asset/asset.py,Update stock must be enable for the purchase invoice {0},Ostuarve {0} jaoks peab olema lubatud väärtuse värskendamine
apps/erpnext/erpnext/stock/get_item_details.py,Item Price updated for {0} in Price List {1},Toode Hind uuendatud {0} Hinnakirjas {1}
@@ -5487,8 +5476,6 @@
apps/erpnext/erpnext/accounts/doctype/shareholder/shareholder.js,Share Ledger,Jaga Ledger
apps/erpnext/erpnext/healthcare/doctype/patient/patient.js,Sales Invoice {0} created,Müügiarve {0} loodud
DocType: Employee,Confirmation Date,Kinnitus kuupäev
-apps/erpnext/erpnext/hr/doctype/employee_transfer/employee_transfer.py,"Please delete the Employee <a href=""#Form/Employee/{0}"">{0}</a>\
- to cancel this document","Selle dokumendi tühistamiseks kustutage töötaja <a href=""#Form/Employee/{0}"">{0}</a> \"
DocType: Inpatient Occupancy,Check Out,Check Out
DocType: C-Form,Total Invoiced Amount,Kokku Arve kogusumma
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py,Min Qty can not be greater than Max Qty,Min Kogus ei saa olla suurem kui Max Kogus
@@ -5695,7 +5682,6 @@
DocType: Cheque Print Template,Cheque Width,Tšekk Laius
DocType: Selling Settings,Validate Selling Price for Item against Purchase Rate or Valuation Rate,Kinnitada müügihind kulukoht ostmise korral või Hindamine Rate
DocType: Fee Schedule,Fee Schedule,Fee Ajakava
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Column Labels : ,Veergude sildid:
DocType: Bank Transaction,Settled,Asustatud
apps/erpnext/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.html,Cess,Cess
DocType: Quality Feedback,Parameters,Parameetrid
@@ -6366,6 +6352,7 @@
DocType: Salary Component,Formula,valem
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py,Serial #,Serial #
DocType: Material Request Plan Item,Required Quantity,Vajalik kogus
+DocType: Cash Flow Mapping Template,Template Name,malli nimi
DocType: Lab Test Template,Lab Test Template,Lab Test Template
apps/erpnext/erpnext/accounts/doctype/accounting_period/accounting_period.py,Accounting Period overlaps with {0},Arvestusperiood kattub {0} -ga
apps/erpnext/erpnext/setup/doctype/company/company.py,Sales Account,Müügikonto
@@ -6426,7 +6413,7 @@
DocType: Bank Reconciliation Detail,Cheque Date,Tšekk kuupäev
apps/erpnext/erpnext/accounts/doctype/account/account.py,Account {0}: Parent account {1} does not belong to company: {2},Konto {0}: Parent konto {1} ei kuulu firma: {2}
apps/erpnext/erpnext/setup/doctype/company/company.js,Successfully deleted all transactions related to this company!,"Edukalt kustutatud kõik tehingud, mis on seotud selle firma!"
-apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js,As on Date,Kuupäeva järgi
+apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.js,As on Date,Kuupäeva järgi
DocType: Additional Salary,HR,HR
DocType: Course Enrollment,Enrollment Date,Registreerimine kuupäev
DocType: Healthcare Settings,Out Patient SMS Alerts,Patsiendi SMS-teated välja
@@ -6492,7 +6479,6 @@
DocType: Course Content,Quiz,Viktoriin
DocType: Subscription,Trial Period End Date,Katseperioodi lõppkuupäev
apps/erpnext/erpnext/setup/doctype/authorization_control/authorization_control.py,Not authroized since {0} exceeds limits,Ei authroized kuna {0} ületab piirid
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Start entering data from here : ,Alustage andmete sisestamist siit:
DocType: Serial No,Asset Status,Vara olek
DocType: Sales Invoice,Over Dimensional Cargo (ODC),Ülemõõduline lasti (ODC)
DocType: Restaurant Order Entry,Restaurant Table,Restoran Tabel
@@ -6718,7 +6704,6 @@
DocType: Contract,Party User,Partei kasutaja
apps/erpnext/erpnext/controllers/buying_controller.py,Assets not created for <b>{0}</b>. You will have to create asset manually.,Varasid pole <b>{0}</b> jaoks loodud. Peate vara looma käsitsi.
apps/erpnext/erpnext/stock/report/total_stock_summary/total_stock_summary.py,Please set Company filter blank if Group By is 'Company',"Määrake Company filtreerida tühjaks, kui rühm Autor on "Firma""
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Customer > Customer Group > Territory,Klient> kliendirühm> territoorium
apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py,Posting Date cannot be future date,Postitamise kuupäev ei saa olla tulevikus
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Row # {0}: Serial No {1} does not match with {2} {3},Row # {0}: Serial No {1} ei ühti {2} {3}
DocType: Loan Repayment,Interest Payable,Makstav intress
@@ -6953,7 +6938,6 @@
apps/erpnext/erpnext/accounts/report/share_balance/share_balance.py,Average Rate,Keskmine määr
DocType: Appointment,Appointment With,Ametisse nimetamine
apps/erpnext/erpnext/controllers/accounts_controller.py,Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total,Maksete kogusumma maksegraafikus peab olema võrdne Suur / Ümardatud Kokku
-apps/erpnext/erpnext/hr/doctype/attendance/attendance_list.js,Mark attendance as <b></b>,Märgi kohalolijaks kui <b></b>
apps/erpnext/erpnext/stock/doctype/item/item.py,"""Customer Provided Item"" cannot have Valuation Rate",Hindamismäära ei saa olla valikul „Kliendi pakutav üksus”
DocType: Subscription Plan Detail,Plan,Plaan
apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py,Bank Statement balance as per General Ledger,Bank avaldus tasakaalu kohta pearaamat
@@ -7643,7 +7627,6 @@
apps/erpnext/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py,Maximum benefit amount of employee {0} exceeds {1},Töötaja maksimaalne hüvitise summa {0} ületab {1}
apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py,Total allocated leaves are more than days in the period,Kokku eraldatakse lehed on rohkem kui päeva võrra
DocType: Linked Soil Analysis,Linked Soil Analysis,Seotud mullanalüüs
-DocType: Pricing Rule,Percentage,protsent
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Item {0} must be a stock Item,Punkt {0} peab olema laoartikkel
DocType: Manufacturing Settings,Default Work In Progress Warehouse,Vaikimisi Work In Progress Warehouse
apps/erpnext/erpnext/healthcare/doctype/practitioner_schedule/practitioner_schedule.js,"Schedules for {0} overlaps, do you want to proceed after skiping overlaped slots ?",Kas soovite {0} kattuvate ajakavade jätkata pärast ülekattega teenindusaegade vahelejätmist?
diff --git a/erpnext/translations/fa.csv b/erpnext/translations/fa.csv
index bb47a6c..d51d2ca 100644
--- a/erpnext/translations/fa.csv
+++ b/erpnext/translations/fa.csv
@@ -167,11 +167,10 @@
DocType: Work Order Operation,Work In Progress,کار در حال انجام
DocType: Leave Control Panel,Branch (optional),شعبه (اختیاری)
apps/erpnext/erpnext/education/report/absent_student_report/absent_student_report.py,Please select date,لطفا تاریخ را انتخاب کنید
-DocType: Item Price,Minimum Qty ,حداقل تعداد
+apps/erpnext/erpnext/stock/report/product_bundle_balance/product_bundle_balance.py,Minimum Qty ,حداقل تعداد
DocType: Finance Book,Finance Book,کتاب مالی
DocType: Patient Encounter,HLC-ENC-.YYYY.-,HLC-ENC- .YYYY.-
DocType: Appointment Booking Settings,Holiday List,فهرست تعطیلات
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,The parent account {0} does not exists,حساب والدین {0} وجود ندارد
apps/erpnext/erpnext/config/quality_management.py,Review and Action,بررسی و اقدام
apps/erpnext/erpnext/hr/doctype/employee_checkin/employee_checkin.py,This employee already has a log with the same timestamp.{0},این کارمند قبلاً با همان دفترچه زمانی وارد سیستم شده است. {0}
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Accountant,حسابدار
@@ -243,7 +242,6 @@
DocType: Exchange Rate Revaluation Account,Gain/Loss,به دست آوردن / از دست دادن
DocType: Crop,Perennial,چند ساله
DocType: Program,Is Published,منتشر شده است
-apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js,Show Delivery Notes,نمایش یادداشت های تحویل
apps/erpnext/erpnext/controllers/status_updater.py,"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.",برای اجازه بیش از صدور صورت حساب ، "بیش از کمک هزینه صورتحساب" را در تنظیمات حساب یا مورد به روز کنید.
DocType: Patient Appointment,Procedure,روش
DocType: Accounts Settings,Use Custom Cash Flow Format,از فرم سفارشی جریان جریان استفاده کنید
@@ -963,7 +961,6 @@
DocType: Patient,Risk Factors,عوامل خطر
DocType: Patient,Occupational Hazards and Environmental Factors,خطرات کاری و عوامل محیطی
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Stock Entries already created for Work Order ,مقالات موجود برای سفارش کار ایجاد شده است
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Item Code > Item Group > Brand,کد کالا> گروه مورد> نام تجاری
apps/erpnext/erpnext/templates/pages/cart.html,See past orders,سفارشات گذشته را مشاهده کنید
apps/erpnext/erpnext/public/js/hub/pages/Selling.vue,{0} conversations,{0} مکالمه
DocType: Vital Signs,Respiratory rate,نرخ تنفس
@@ -1117,7 +1114,6 @@
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,An error occurred during the update process,یک خطا در طول فرایند به روز رسانی رخ داد
DocType: Restaurant Reservation,Restaurant Reservation,رزرو رستوران
apps/erpnext/erpnext/public/js/hub/Sidebar.vue,Your Items,موارد شما
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Supplier > Supplier Type,عرضه کننده> نوع عرضه کننده
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Proposal Writing,نوشتن طرح های پیشنهادی
DocType: Payment Entry Deduction,Payment Entry Deduction,پرداخت کسر ورود
DocType: Service Level Priority,Service Level Priority,اولویت سطح خدمات
@@ -1905,7 +1901,6 @@
DocType: Purchase Invoice,Is Return (Debit Note),آیا بازگشت (توجه توجه)
DocType: Workstation,Wages,مزد
DocType: Asset Maintenance,Maintenance Manager Name,نام مدیر تعمیر و نگهداری
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js,Transactions against the company already exist! ,معاملات علیه شرکت در حال حاضر وجود دارد!
apps/erpnext/erpnext/buying/report/procurement_tracker/procurement_tracker.py,Requesting Site,درخواست سایت
DocType: Agriculture Task,Urgent,فوری
apps/erpnext/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js,Fetching records......,ثبت پرونده ها ......
@@ -2747,7 +2742,6 @@
apps/erpnext/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py,Leaves Allocated Successfully for {0},برگ با موفقیت برای اختصاص {0}
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py,No Items to pack,هیچ آیتمی برای بسته
apps/erpnext/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py,Only .csv and .xlsx files are supported currently,فقط فایلهای .csv و .xlsx در حال حاضر پشتیبانی می شوند
-apps/erpnext/erpnext/hr/doctype/employee/employee.py,Please setup Employee Naming System in Human Resource > HR Settings,لطفاً سیستم نامگذاری کارمندان را در منابع انسانی> تنظیمات HR تنظیم کنید
DocType: Shipping Rule Condition,From Value,از ارزش
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Manufacturing Quantity is mandatory,ساخت تعداد الزامی است
DocType: Loan,Repayment Method,روش بازپرداخت
@@ -3964,7 +3958,6 @@
apps/erpnext/erpnext/templates/form_grid/material_request_grid.html,Required On,مورد نیاز در
DocType: HR Settings,"If checked, hides and disables Rounded Total field in Salary Slips",اگر علامت زده شود ، قسمت Rounded Total را در Slip Slips مخفی کرده و غیرفعال می کند
DocType: Woocommerce Settings,This is the default offset (days) for the Delivery Date in Sales Orders. The fallback offset is 7 days from the order placement date.,این افست پیش فرض (روزها) برای تاریخ تحویل در سفارشات فروش است. افست برگشتی 7 روز از تاریخ تعیین سفارش می باشد.
-apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py,Please setup numbering series for Attendance via Setup > Numbering Series,لطفاً سریال های شماره گذاری را برای حضور از طریق تنظیم> سری شماره گذاری تنظیم کنید
DocType: Rename Tool,File to Rename,فایل برای تغییر نام
apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,Please select BOM for Item in Row {0},لطفا BOM در ردیف را انتخاب کنید برای مورد {0}
apps/erpnext/erpnext/accounts/doctype/subscription/subscription.js,Fetch Subscription Updates,دریافت به روز رسانی اشتراک
@@ -4550,7 +4543,6 @@
DocType: Cash Flow Mapping,Is Finance Cost,هزینه مالی است
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py,Attendance for employee {0} is already marked,حضور و غیاب کارکنان برای {0} در حال حاضر مشخص شده
DocType: Packing Slip,If more than one package of the same type (for print),اگر بیش از یک بسته از همان نوع (برای چاپ)
-apps/erpnext/erpnext/education/doctype/instructor/instructor.py,Please setup Instructor Naming System in Education > Education Settings,لطفاً سیستم نامگذاری مربی را در آموزش و پرورش> تنظیمات آموزش تنظیم کنید
apps/erpnext/erpnext/restaurant/doctype/restaurant_order_entry/restaurant_order_entry.py,Please set default customer in Restaurant Settings,لطفا تنظیمات پیشفرض را در تنظیمات رستوران تنظیم کنید
,Salary Register,حقوق و دستمزد ثبت نام
DocType: Company,Default warehouse for Sales Return,انبار پیش فرض برای بازده فروش
@@ -4813,7 +4805,6 @@
apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html,Pending Activities,فعالیت در انتظار
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test_list.js,Create Lab Test,ایجاد تست آزمایشگاهی
DocType: Patient Appointment,Reminded,یادآوری شد
-DocType: Homepage Section,Cards,کارت
apps/erpnext/erpnext/public/js/setup_wizard.js,View Chart of Accounts,نمایش نمودار حسابها
DocType: Chapter Member,Chapter Member,اعضای گروه
DocType: Material Request Plan Item,Minimum Order Quantity,حداقل مقدار سفارش
@@ -4829,7 +4820,7 @@
apps/erpnext/erpnext/hr/utils.py,Future dates not allowed,تاریخ های آینده مجاز نیست
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py,Expected Delivery Date should be after Sales Order Date,تاریخ تحویل پیش بینی شده باید پس از تاریخ سفارش فروش باشد
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,Reorder Level,ترتیب مجدد سطح
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Chart Of Accounts Template,نمودار حساب الگو
+DocType: Company,Chart Of Accounts Template,نمودار حساب الگو
DocType: Attendance,Attendance Date,حضور و غیاب عضویت
apps/erpnext/erpnext/assets/doctype/asset/asset.py,Update stock must be enable for the purchase invoice {0},به روز رسانی سهام باید برای صورتحساب خرید فعال شود {0}
apps/erpnext/erpnext/stock/get_item_details.py,Item Price updated for {0} in Price List {1},مورد قیمت به روز شده برای {0} در لیست قیمت {1}
@@ -5385,8 +5376,6 @@
apps/erpnext/erpnext/accounts/doctype/shareholder/shareholder.js,Share Ledger,به اشتراک گذاشتن لجر
apps/erpnext/erpnext/healthcare/doctype/patient/patient.js,Sales Invoice {0} created,فاکتور فروش {0} ایجاد شد
DocType: Employee,Confirmation Date,تایید عضویت
-apps/erpnext/erpnext/hr/doctype/employee_transfer/employee_transfer.py,"Please delete the Employee <a href=""#Form/Employee/{0}"">{0}</a>\
- to cancel this document","لطفاً برای لغو این سند ، <a href=""#Form/Employee/{0}"">{0}</a> \ کارمند را حذف کنید"
DocType: Inpatient Occupancy,Check Out,وارسی
DocType: C-Form,Total Invoiced Amount,کل مقدار صورتحساب
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py,Min Qty can not be greater than Max Qty,حداقل تعداد نمی تواند بیشتر از حداکثر تعداد
@@ -5585,7 +5574,6 @@
DocType: Cheque Print Template,Cheque Width,عرض چک
DocType: Selling Settings,Validate Selling Price for Item against Purchase Rate or Valuation Rate,اعتبار قیمت فروش برای مورد در برابر نرخ خرید و یا رای دادن به ارزش گذاری
DocType: Fee Schedule,Fee Schedule,هزینه های برنامه
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Column Labels : ,برچسب های ستون:
DocType: Bank Transaction,Settled,حل و فصل
apps/erpnext/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.html,Cess,سس
DocType: Quality Feedback,Parameters,مولفه های
@@ -6249,6 +6237,7 @@
DocType: Salary Component,Formula,فرمول
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py,Serial #,سریال #
DocType: Material Request Plan Item,Required Quantity,مقدار مورد نیاز
+DocType: Cash Flow Mapping Template,Template Name,نام الگو
DocType: Lab Test Template,Lab Test Template,آزمایش آزمایشی
apps/erpnext/erpnext/accounts/doctype/accounting_period/accounting_period.py,Accounting Period overlaps with {0},دوره حسابداری با {0} همپوشانی دارد
apps/erpnext/erpnext/setup/doctype/company/company.py,Sales Account,حساب فروش
@@ -6308,7 +6297,7 @@
DocType: Bank Reconciliation Detail,Cheque Date,چک تاریخ
apps/erpnext/erpnext/accounts/doctype/account/account.py,Account {0}: Parent account {1} does not belong to company: {2},حساب {0}: حساب مرجع {1} به شرکت تعلق ندارد: {2}
apps/erpnext/erpnext/setup/doctype/company/company.js,Successfully deleted all transactions related to this company!,با موفقیت حذف تمام معاملات مربوط به این شرکت!
-apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js,As on Date,همانطور که در تاریخ
+apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.js,As on Date,همانطور که در تاریخ
DocType: Additional Salary,HR,HR
DocType: Course Enrollment,Enrollment Date,تاریخ ثبت نام
DocType: Healthcare Settings,Out Patient SMS Alerts,هشدارهای SMS بیمار
@@ -6373,7 +6362,6 @@
DocType: Course Content,Quiz,مسابقه
DocType: Subscription,Trial Period End Date,تاریخ پایان دوره آزمایشی
apps/erpnext/erpnext/setup/doctype/authorization_control/authorization_control.py,Not authroized since {0} exceeds limits,authroized نه از {0} بیش از محدودیت
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Start entering data from here : ,وارد کردن داده ها از اینجا شروع کنید:
DocType: Serial No,Asset Status,وضعیت دارایی
DocType: Sales Invoice,Over Dimensional Cargo (ODC),بیش از اندازه بار (ODC)
DocType: Restaurant Order Entry,Restaurant Table,جدول رستوران
@@ -6592,7 +6580,6 @@
apps/erpnext/erpnext/public/js/hub/components/ReviewArea.vue,Submit Review,ارسال بررسی
DocType: Contract,Party User,کاربر حزب
apps/erpnext/erpnext/stock/report/total_stock_summary/total_stock_summary.py,Please set Company filter blank if Group By is 'Company',لطفا مجموعه شرکت فیلتر خالی اگر گروه توسط است شرکت '
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Customer > Customer Group > Territory,مشتری> گروه مشتری> سرزمین
apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py,Posting Date cannot be future date,مجوز های ارسال و تاریخ نمی تواند تاریخ آینده
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Row # {0}: Serial No {1} does not match with {2} {3},ردیف # {0}: سریال نه {1} با مطابقت ندارد {2} {3}
DocType: Loan Repayment,Interest Payable,بهره قابل پرداخت
@@ -6824,7 +6811,6 @@
apps/erpnext/erpnext/accounts/report/share_balance/share_balance.py,Average Rate,میانگین امتیازات
DocType: Appointment,Appointment With,ملاقات با
apps/erpnext/erpnext/controllers/accounts_controller.py,Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total,مجموع مبلغ پرداختی در برنامه پرداخت باید برابر با مقدار Grand / Rounded باشد
-apps/erpnext/erpnext/hr/doctype/attendance/attendance_list.js,Mark attendance as <b></b>,حضور علامت گذاری به عنوان <b></b>
apps/erpnext/erpnext/stock/doctype/item/item.py,"""Customer Provided Item"" cannot have Valuation Rate","""ایتم مورد نظر مشتری""
اعتبار کافی ندارد"
DocType: Subscription Plan Detail,Plan,طرح
@@ -7498,7 +7484,6 @@
apps/erpnext/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py,Maximum benefit amount of employee {0} exceeds {1},حداکثر مبلغ مزیت کارمند {0} بیش از {1}
apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py,Total allocated leaves are more than days in the period,مجموع برگ اختصاص داده بیش از روز در دوره
DocType: Linked Soil Analysis,Linked Soil Analysis,تجزیه و تحلیل خاک مرتبط است
-DocType: Pricing Rule,Percentage,در صد
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Item {0} must be a stock Item,مورد {0} باید مورد سهام است
DocType: Manufacturing Settings,Default Work In Progress Warehouse,پیش فرض کار در انبار پیشرفت
apps/erpnext/erpnext/healthcare/doctype/practitioner_schedule/practitioner_schedule.js,"Schedules for {0} overlaps, do you want to proceed after skiping overlaped slots ?",آیا برنامه هایی برای {0} همپوشانی را دنبال می کنید، پس از لغو شکاف های پوشیدنی، می خواهید؟
diff --git a/erpnext/translations/fi.csv b/erpnext/translations/fi.csv
index c8eff03..e12875e 100644
--- a/erpnext/translations/fi.csv
+++ b/erpnext/translations/fi.csv
@@ -168,12 +168,11 @@
DocType: Work Order Operation,Work In Progress,Työnalla
DocType: Leave Control Panel,Branch (optional),Haara (valinnainen)
apps/erpnext/erpnext/education/report/absent_student_report/absent_student_report.py,Please select date,Valitse päivämäärä
-DocType: Item Price,Minimum Qty ,Vähimmäismäärä
+apps/erpnext/erpnext/stock/report/product_bundle_balance/product_bundle_balance.py,Minimum Qty ,Vähimmäismäärä
apps/erpnext/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py,BOM recursion: {0} cannot be child of {1},BOM-rekursio: {0} ei voi olla käyttäjän {1} lapsi
DocType: Finance Book,Finance Book,Rahoituskirja
DocType: Patient Encounter,HLC-ENC-.YYYY.-,HLC-ENC-.YYYY.-
DocType: Appointment Booking Settings,Holiday List,lomaluettelo
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,The parent account {0} does not exists,Vanhempaa tiliä {0} ei ole
apps/erpnext/erpnext/config/quality_management.py,Review and Action,Katsaus ja toiminta
apps/erpnext/erpnext/hr/doctype/employee_checkin/employee_checkin.py,This employee already has a log with the same timestamp.{0},Tällä työntekijällä on jo loki samalla aikaleimalla. {0}
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Accountant,Kirjanpitäjä
@@ -245,7 +244,6 @@
DocType: Exchange Rate Revaluation Account,Gain/Loss,Voitto / tappio
DocType: Crop,Perennial,Monivuotinen
DocType: Program,Is Published,On julkaistu
-apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js,Show Delivery Notes,Näytä toimitusilmoitukset
apps/erpnext/erpnext/controllers/status_updater.py,"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.",Päivitä "Yli laskutuskorvaus" Tilit-asetuksissa tai Kohteessa salliaksesi ylilaskutuksen.
DocType: Patient Appointment,Procedure,menettely
DocType: Accounts Settings,Use Custom Cash Flow Format,Käytä Custom Cash Flow -muotoa
@@ -981,7 +979,6 @@
DocType: Patient,Risk Factors,Riskitekijät
DocType: Patient,Occupational Hazards and Environmental Factors,Työperäiset vaaratekijät ja ympäristötekijät
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Stock Entries already created for Work Order ,"Osakkeet, jotka on jo luotu työjärjestykseen"
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Item Code > Item Group > Brand,Tuotekoodi> Tuoteryhmä> Tuotemerkki
apps/erpnext/erpnext/templates/pages/cart.html,See past orders,Katso aiemmat tilaukset
apps/erpnext/erpnext/public/js/hub/pages/Selling.vue,{0} conversations,{0} keskustelua
DocType: Vital Signs,Respiratory rate,Hengitysnopeus
@@ -1139,7 +1136,6 @@
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,An error occurred during the update process,Päivitysprosessissa tapahtui virhe
DocType: Restaurant Reservation,Restaurant Reservation,Ravintolavaraus
apps/erpnext/erpnext/public/js/hub/Sidebar.vue,Your Items,Tuotteet
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Supplier > Supplier Type,Toimittaja> Toimittajan tyyppi
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Proposal Writing,Ehdotus Kirjoittaminen
DocType: Payment Entry Deduction,Payment Entry Deduction,Payment Entry Vähennys
DocType: Service Level Priority,Service Level Priority,Palvelutaso prioriteettina
@@ -1438,7 +1434,6 @@
apps/erpnext/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js,Please select Company and Posting Date to getting entries,Valitse Yritykset ja kirjauspäivämäärä saadaksesi merkinnät
DocType: Asset,Maintenance,huolto
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test.js,Get from Patient Encounter,Patient Encounterista
-apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,UOM Conversion factor ({0} -> {1}) not found for item: {2},UOM-muuntokerrointa ({0} -> {1}) ei löydy tuotteelle: {2}
DocType: Subscriber,Subscriber,Tilaaja
DocType: Item Attribute Value,Item Attribute Value,"tuotetuntomerkki, arvo"
apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py,Currency Exchange must be applicable for Buying or for Selling.,Valuutanvaihtoa on sovellettava ostamiseen tai myyntiin.
@@ -1936,7 +1931,6 @@
DocType: Purchase Invoice,Is Return (Debit Note),Palautus (debit-huomautus)
DocType: Workstation,Wages,Palkat
DocType: Asset Maintenance,Maintenance Manager Name,Huoltopäällikön nimi
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js,Transactions against the company already exist! ,Kauppoja yritystä vastaan on jo olemassa!
apps/erpnext/erpnext/buying/report/procurement_tracker/procurement_tracker.py,Requesting Site,Pyydä sivustoa
DocType: Agriculture Task,Urgent,Kiireellinen
apps/erpnext/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js,Fetching records......,Haetaan tietueita ......
@@ -2633,7 +2627,6 @@
apps/erpnext/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.py,The Payment Term at row {0} is possibly a duplicate.,Maksuehto rivillä {0} on mahdollisesti kaksoiskappale.
apps/erpnext/erpnext/public/js/setup_wizard.js,Agriculture (beta),Maatalous (beta)
apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.js,Packing Slip,Pakkauslappu
-apps/erpnext/erpnext/setup/doctype/naming_series/naming_series.py,Please set Naming Series for {0} via Setup > Settings > Naming Series,Aseta Naming-sarjan asetukseksi {0} Asetukset> Asetukset> Sarjasta nimeäminen -kohdassa
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py,Office Rent,Toimisto Vuokra
apps/erpnext/erpnext/config/settings.py,Setup SMS gateway settings,Tekstiviestin reititinmääritykset
DocType: Disease,Common Name,Yleinen nimi
@@ -2799,7 +2792,6 @@
apps/erpnext/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py,Leaves Allocated Successfully for {0},Vapaat kohdennettu {0}:lle
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py,No Items to pack,ei pakattavia tuotteita
apps/erpnext/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py,Only .csv and .xlsx files are supported currently,Vain .csv- ja .xlsx-tiedostoja tuetaan tällä hetkellä
-apps/erpnext/erpnext/hr/doctype/employee/employee.py,Please setup Employee Naming System in Human Resource > HR Settings,Asenna Työntekijöiden nimeämisjärjestelmä kohtaan Henkilöstöresurssit> HR-asetukset
DocType: Shipping Rule Condition,From Value,arvosta
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Manufacturing Quantity is mandatory,Valmistus Määrä on pakollista
DocType: Loan,Repayment Method,lyhennystapa
@@ -4046,7 +4038,6 @@
apps/erpnext/erpnext/templates/form_grid/material_request_grid.html,Required On,pyydetylle
DocType: HR Settings,"If checked, hides and disables Rounded Total field in Salary Slips","Jos tämä on valittuna, piilottaa ja poistaa käytöstä Pyöristetty kokonaisuus -kentän palkkalaskelmissa"
DocType: Woocommerce Settings,This is the default offset (days) for the Delivery Date in Sales Orders. The fallback offset is 7 days from the order placement date.,Tämä on oletusarvo (päivät) toimituspäivämäärälle myyntitilauksissa. Varakorvaus on 7 päivää tilauksen tekemispäivästä.
-apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py,Please setup numbering series for Attendance via Setup > Numbering Series,Asenna läsnäolosuhteiden numerointisarjat kohdasta Asetukset> Numerointisarjat
DocType: Rename Tool,File to Rename,Uudelleen nimettävä tiedosto
apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,Please select BOM for Item in Row {0},Valitse BOM varten Tuote rivillä {0}
apps/erpnext/erpnext/accounts/doctype/subscription/subscription.js,Fetch Subscription Updates,Hae tilauksen päivitykset
@@ -4649,7 +4640,6 @@
DocType: Cash Flow Mapping,Is Finance Cost,Onko rahoituskustannus
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py,Attendance for employee {0} is already marked,työntekijän {0} osallistuminen on jo merkitty
DocType: Packing Slip,If more than one package of the same type (for print),mikäli useampi saman tyypin pakkaus (tulostus)
-apps/erpnext/erpnext/education/doctype/instructor/instructor.py,Please setup Instructor Naming System in Education > Education Settings,Asenna ohjaajien nimeämisjärjestelmä kohtaan Koulutus> Koulutusasetukset
apps/erpnext/erpnext/restaurant/doctype/restaurant_order_entry/restaurant_order_entry.py,Please set default customer in Restaurant Settings,Aseta oletusasiakas ravintolaasetuksissa
,Salary Register,Palkka Register
DocType: Company,Default warehouse for Sales Return,Oletusvarasto myynnin palautusta varten
@@ -4920,7 +4910,6 @@
apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html,Pending Activities,Odottaa Aktiviteetit
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test_list.js,Create Lab Test,Luo testi
DocType: Patient Appointment,Reminded,muistutti
-DocType: Homepage Section,Cards,Kortit
apps/erpnext/erpnext/public/js/setup_wizard.js,View Chart of Accounts,Näytä tilikartta
DocType: Chapter Member,Chapter Member,Luku Jäsen
DocType: Material Request Plan Item,Minimum Order Quantity,vähimmäistilausmäärä
@@ -4938,7 +4927,7 @@
apps/erpnext/erpnext/hr/utils.py,Future dates not allowed,Tulevat päivät eivät ole sallittuja
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py,Expected Delivery Date should be after Sales Order Date,Odotettu toimituspäivä on myynnin tilauspäivän jälkeen
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,Reorder Level,Täydennystilaustaso
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Chart Of Accounts Template,Tilikartta Template
+DocType: Company,Chart Of Accounts Template,Tilikartta Template
DocType: Attendance,Attendance Date,"osallistuminen, päivä"
apps/erpnext/erpnext/assets/doctype/asset/asset.py,Update stock must be enable for the purchase invoice {0},Päivityksen on oltava mahdollinen ostolaskun {0}
apps/erpnext/erpnext/stock/get_item_details.py,Item Price updated for {0} in Price List {1},Hinta päivitetty {0} in hinnasto {1}
@@ -5503,8 +5492,6 @@
apps/erpnext/erpnext/accounts/doctype/shareholder/shareholder.js,Share Ledger,Osakekirja
apps/erpnext/erpnext/healthcare/doctype/patient/patient.js,Sales Invoice {0} created,Myynti lasku {0} luotiin
DocType: Employee,Confirmation Date,Työsopimuksen vahvistamispäivä
-apps/erpnext/erpnext/hr/doctype/employee_transfer/employee_transfer.py,"Please delete the Employee <a href=""#Form/Employee/{0}"">{0}</a>\
- to cancel this document","Poista työntekijä <a href=""#Form/Employee/{0}"">{0}</a> \ peruuttaaksesi tämän asiakirjan"
DocType: Inpatient Occupancy,Check Out,Tarkista
DocType: C-Form,Total Invoiced Amount,Kokonaislaskutus arvomäärä
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py,Min Qty can not be greater than Max Qty,min yksikkömäärä ei voi olla suurempi kuin max yksikkömäärä
@@ -5711,7 +5698,6 @@
DocType: Cheque Print Template,Cheque Width,Shekki Leveys
DocType: Selling Settings,Validate Selling Price for Item against Purchase Rate or Valuation Rate,Validoi myyntihinta Tuote vastaan Purchase Rate tai arvostus Hinta
DocType: Fee Schedule,Fee Schedule,Fee aikataulu
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Column Labels : ,Sarakkeen etiketit:
DocType: Bank Transaction,Settled,ratkaistu
apps/erpnext/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.html,Cess,Cess
DocType: Quality Feedback,Parameters,parametrit
@@ -6385,6 +6371,7 @@
DocType: Salary Component,Formula,Kaava
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py,Serial #,Sarja #
DocType: Material Request Plan Item,Required Quantity,Vaadittu määrä
+DocType: Cash Flow Mapping Template,Template Name,Mallin nimi
DocType: Lab Test Template,Lab Test Template,Lab Test Template
apps/erpnext/erpnext/accounts/doctype/accounting_period/accounting_period.py,Accounting Period overlaps with {0},Tilikausi päällekkäin {0} kanssa
apps/erpnext/erpnext/setup/doctype/company/company.py,Sales Account,Myynti tili
@@ -6445,7 +6432,7 @@
DocType: Bank Reconciliation Detail,Cheque Date,takaus/shekki päivä
apps/erpnext/erpnext/accounts/doctype/account/account.py,Account {0}: Parent account {1} does not belong to company: {2},Tili {0}: emotili {1} ei kuulu yritykselle: {2}
apps/erpnext/erpnext/setup/doctype/company/company.js,Successfully deleted all transactions related to this company!,kaikki tähän yritykseen liittyvät tapahtumat on poistettu
-apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js,As on Date,Kuin Päivämäärä
+apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.js,As on Date,Kuin Päivämäärä
DocType: Additional Salary,HR,HR
DocType: Course Enrollment,Enrollment Date,ilmoittautuminen Date
DocType: Healthcare Settings,Out Patient SMS Alerts,Out Patient SMS -ilmoitukset
@@ -6511,7 +6498,6 @@
DocType: Course Content,Quiz,Tietokilpailu
DocType: Subscription,Trial Period End Date,Trial Period End Date
apps/erpnext/erpnext/setup/doctype/authorization_control/authorization_control.py,Not authroized since {0} exceeds limits,Ei authroized koska {0} ylittää rajat
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Start entering data from here : ,Aloita tietojen syöttäminen täältä:
DocType: Serial No,Asset Status,Omaisuuden tila
DocType: Sales Invoice,Over Dimensional Cargo (ODC),Mittatikku (ODC)
DocType: Restaurant Order Entry,Restaurant Table,Ravintola-taulukko
@@ -6737,7 +6723,6 @@
DocType: Contract,Party User,Party-käyttäjä
apps/erpnext/erpnext/controllers/buying_controller.py,Assets not created for <b>{0}</b>. You will have to create asset manually.,"Omaisuutta, jota ei ole luotu <b>{0}</b> . Omaisuus on luotava manuaalisesti."
apps/erpnext/erpnext/stock/report/total_stock_summary/total_stock_summary.py,Please set Company filter blank if Group By is 'Company',Aseta Yritysfiltteri tyhjäksi jos Ryhmittelyperuste on 'yritys'
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Customer > Customer Group > Territory,Asiakas> Asiakasryhmä> Alue
apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py,Posting Date cannot be future date,Kirjoittamisen päivämäärä ei voi olla tulevaisuudessa
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Row # {0}: Serial No {1} does not match with {2} {3},Rivi # {0}: Sarjanumero {1} ei vastaa {2} {3}
DocType: Loan Repayment,Interest Payable,Maksettava korko
@@ -6972,7 +6957,6 @@
apps/erpnext/erpnext/accounts/report/share_balance/share_balance.py,Average Rate,Keskimääräinen hinta
DocType: Appointment,Appointment With,Nimitys
apps/erpnext/erpnext/controllers/accounts_controller.py,Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total,Maksun kokonaissumman summan on vastattava suurta / pyöristettyä summaa
-apps/erpnext/erpnext/hr/doctype/attendance/attendance_list.js,Mark attendance as <b></b>,Merkitse läsnäolo nimellä <b></b>
apps/erpnext/erpnext/stock/doctype/item/item.py,"""Customer Provided Item"" cannot have Valuation Rate","Asiakkaan toimittamalla tuotteella" ei voi olla arviointiastetta
DocType: Subscription Plan Detail,Plan,Suunnitelma
apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py,Bank Statement balance as per General Ledger,Tiliote tasapaino kohti Pääkirja
@@ -7668,7 +7652,6 @@
apps/erpnext/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py,Maximum benefit amount of employee {0} exceeds {1},Työntekijän {0} enimmäisetuuksien määrä ylittää {1}
apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py,Total allocated leaves are more than days in the period,Yhteensä myönnetty lehdet ovat enemmän kuin päivää kaudella
DocType: Linked Soil Analysis,Linked Soil Analysis,Linkitetty maaperän analyysi
-DocType: Pricing Rule,Percentage,Prosentti
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Item {0} must be a stock Item,Nimike {0} pitää olla varastonimike
DocType: Manufacturing Settings,Default Work In Progress Warehouse,Oletus KET-varasto
apps/erpnext/erpnext/healthcare/doctype/practitioner_schedule/practitioner_schedule.js,"Schedules for {0} overlaps, do you want to proceed after skiping overlaped slots ?","Aikataulut {0} päällekkäisyyksillä, haluatko jatkaa päällekkäisten paikkojen tyhjentämisen jälkeen?"
diff --git a/erpnext/translations/fr.csv b/erpnext/translations/fr.csv
index 4bb6eaac..974c4b1 100644
--- a/erpnext/translations/fr.csv
+++ b/erpnext/translations/fr.csv
@@ -168,12 +168,11 @@
DocType: Work Order Operation,Work In Progress,Travaux En Cours
DocType: Leave Control Panel,Branch (optional),Branche (optionnel)
apps/erpnext/erpnext/education/report/absent_student_report/absent_student_report.py,Please select date,Veuillez sélectionner une date
-DocType: Item Price,Minimum Qty ,Quantité minimum
+apps/erpnext/erpnext/stock/report/product_bundle_balance/product_bundle_balance.py,Minimum Qty ,Quantité minimum
apps/erpnext/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py,BOM recursion: {0} cannot be child of {1},Récursion de nomenclature: {0} ne peut pas être enfant de {1}
DocType: Finance Book,Finance Book,Livre comptable
DocType: Patient Encounter,HLC-ENC-.YYYY.-,HLC-ENC-.YYYY.-
DocType: Appointment Booking Settings,Holiday List,Liste de Vacances
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,The parent account {0} does not exists,Le compte parent {0} n'existe pas
apps/erpnext/erpnext/config/quality_management.py,Review and Action,Révision et action
apps/erpnext/erpnext/hr/doctype/employee_checkin/employee_checkin.py,This employee already has a log with the same timestamp.{0},Cet employé a déjà un journal avec le même horodatage. {0}
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Accountant,Comptable
@@ -245,7 +244,6 @@
DocType: Exchange Rate Revaluation Account,Gain/Loss,Profit/perte
DocType: Crop,Perennial,Vivace
DocType: Program,Is Published,Est publié
-apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js,Show Delivery Notes,Afficher les notes de livraison
apps/erpnext/erpnext/controllers/status_updater.py,"To allow over billing, update ""Over Billing Allowance"" in Accounts Settings or the Item.","Pour autoriser la facturation excédentaire, mettez à jour "Provision de facturation excédentaire" dans les paramètres de compte ou le poste."
DocType: Patient Appointment,Procedure,Procédure
DocType: Accounts Settings,Use Custom Cash Flow Format,Utiliser le format de flux de trésorerie personnalisé
@@ -982,7 +980,6 @@
DocType: Patient,Risk Factors,Facteurs de Risque
DocType: Patient,Occupational Hazards and Environmental Factors,Dangers Professionnels et Facteurs Environnementaux
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Stock Entries already created for Work Order ,Ecritures de stock déjà créées pour l'ordre de travail
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Item Code > Item Group > Brand,Code article> Groupe d'articles> Marque
apps/erpnext/erpnext/templates/pages/cart.html,See past orders,Voir les commandes passées
apps/erpnext/erpnext/public/js/hub/pages/Selling.vue,{0} conversations,{0} conversations
DocType: Vital Signs,Respiratory rate,Fréquence Respiratoire
@@ -1140,7 +1137,6 @@
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,An error occurred during the update process,Une erreur s'est produite lors du processus de mise à jour
DocType: Restaurant Reservation,Restaurant Reservation,Réservation de restaurant
apps/erpnext/erpnext/public/js/hub/Sidebar.vue,Your Items,Vos articles
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Supplier > Supplier Type,Fournisseur> Type de fournisseur
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Proposal Writing,Rédaction de Propositions
DocType: Payment Entry Deduction,Payment Entry Deduction,Déduction d’Écriture de Paiement
DocType: Service Level Priority,Service Level Priority,Priorité de niveau de service
@@ -1439,7 +1435,6 @@
apps/erpnext/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js,Please select Company and Posting Date to getting entries,Veuillez sélectionner la société et la date de comptabilisation pour obtenir les écritures
DocType: Asset,Maintenance,Entretien
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test.js,Get from Patient Encounter,Obtenez de la rencontre du patient
-apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,UOM Conversion factor ({0} -> {1}) not found for item: {2},Facteur de conversion UdM ({0} -> {1}) introuvable pour l'article: {2}
DocType: Subscriber,Subscriber,Abonné
DocType: Item Attribute Value,Item Attribute Value,Valeur de l'Attribut de l'Article
apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py,Currency Exchange must be applicable for Buying or for Selling.,Le taux de change doit être applicable à l'achat ou la vente.
@@ -1957,7 +1952,6 @@
DocType: Purchase Invoice,Is Return (Debit Note),Est une note de débit
DocType: Workstation,Wages,Salaires
DocType: Asset Maintenance,Maintenance Manager Name,Nom du responsable de la maintenance
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js,Transactions against the company already exist! ,Les transactions avec l'entreprise existent déjà!
apps/erpnext/erpnext/buying/report/procurement_tracker/procurement_tracker.py,Requesting Site,Site demandeur
DocType: Agriculture Task,Urgent,Urgent
apps/erpnext/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js,Fetching records......,Récupération des enregistrements ......
@@ -2654,7 +2648,6 @@
apps/erpnext/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.py,The Payment Term at row {0} is possibly a duplicate.,Le délai de paiement à la ligne {0} est probablement un doublon.
apps/erpnext/erpnext/public/js/setup_wizard.js,Agriculture (beta),Agriculture (beta)
apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.js,Packing Slip,Bordereau de Colis
-apps/erpnext/erpnext/setup/doctype/naming_series/naming_series.py,Please set Naming Series for {0} via Setup > Settings > Naming Series,Veuillez définir la série de noms pour {0} via Configuration> Paramètres> Série de noms
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py,Office Rent,Loyer du Bureau
apps/erpnext/erpnext/config/settings.py,Setup SMS gateway settings,Configuration de la passerelle SMS
DocType: Disease,Common Name,Nom commun
@@ -2820,7 +2813,6 @@
apps/erpnext/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py,Leaves Allocated Successfully for {0},Congés Attribués avec Succès pour {0}
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py,No Items to pack,Pas d’Articles à emballer
apps/erpnext/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py,Only .csv and .xlsx files are supported currently,Seuls les fichiers .csv et .xlsx sont actuellement pris en charge.
-apps/erpnext/erpnext/hr/doctype/employee/employee.py,Please setup Employee Naming System in Human Resource > HR Settings,Veuillez configurer le système de dénomination des employés dans Ressources humaines> Paramètres RH
DocType: Shipping Rule Condition,From Value,De la Valeur
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Manufacturing Quantity is mandatory,Quantité de production obligatoire
DocType: Loan,Repayment Method,Méthode de Remboursement
@@ -4068,7 +4060,6 @@
apps/erpnext/erpnext/templates/form_grid/material_request_grid.html,Required On,Requis Pour
DocType: HR Settings,"If checked, hides and disables Rounded Total field in Salary Slips","Si coché, masque et désactive le champ Total arrondi dans les fiches de salaire"
DocType: Woocommerce Settings,This is the default offset (days) for the Delivery Date in Sales Orders. The fallback offset is 7 days from the order placement date.,Il s'agit du décalage par défaut (jours) pour la date de livraison dans les commandes client. La compensation de repli est de 7 jours à compter de la date de passation de la commande.
-apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py,Please setup numbering series for Attendance via Setup > Numbering Series,Veuillez configurer la série de numérotation pour l'assistance via Configuration> Série de numérotation
DocType: Rename Tool,File to Rename,Fichier à Renommer
apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,Please select BOM for Item in Row {0},Veuillez sélectionnez une LDM pour l’Article à la Ligne {0}
apps/erpnext/erpnext/accounts/doctype/subscription/subscription.js,Fetch Subscription Updates,Vérifier les mises à jour des abonnements
@@ -4703,7 +4694,6 @@
DocType: Cash Flow Mapping,Is Finance Cost,Est un coût financier
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py,Attendance for employee {0} is already marked,La présence de l'employé {0} est déjà marquée
DocType: Packing Slip,If more than one package of the same type (for print),Si plus d'un paquet du même type (pour l'impression)
-apps/erpnext/erpnext/education/doctype/instructor/instructor.py,Please setup Instructor Naming System in Education > Education Settings,Veuillez configurer le système de dénomination de l'instructeur dans Éducation> Paramètres de l'éducation
apps/erpnext/erpnext/restaurant/doctype/restaurant_order_entry/restaurant_order_entry.py,Please set default customer in Restaurant Settings,Veuillez définir le client par défaut dans les paramètres du restaurant
,Salary Register,Registre du Salaire
DocType: Company,Default warehouse for Sales Return,Magasin par défaut pour retour de vente
@@ -4974,7 +4964,6 @@
apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html,Pending Activities,Activités en Attente
apps/erpnext/erpnext/healthcare/doctype/lab_test/lab_test_list.js,Create Lab Test,Créer un test de laboratoire
DocType: Patient Appointment,Reminded,Rappelé
-DocType: Homepage Section,Cards,Cartes
apps/erpnext/erpnext/public/js/setup_wizard.js,View Chart of Accounts,Voir le plan comptable
DocType: Chapter Member,Chapter Member,Membre du chapitre
DocType: Material Request Plan Item,Minimum Order Quantity,Quantité minimale d'achat
@@ -4992,7 +4981,7 @@
apps/erpnext/erpnext/hr/utils.py,Future dates not allowed,Dates futures non autorisées
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py,Expected Delivery Date should be after Sales Order Date,La Date de Livraison Prévue doit être après la Date indiquée sur le Bon de Commande de Vente
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,Reorder Level,Niveau de Réapprovisionnement
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Chart Of Accounts Template,Modèle de Plan Comptable
+DocType: Company,Chart Of Accounts Template,Modèle de Plan Comptable
DocType: Attendance,Attendance Date,Date de Présence
apps/erpnext/erpnext/assets/doctype/asset/asset.py,Update stock must be enable for the purchase invoice {0},La mise à jour du stock doit être activée pour la facture d'achat {0}
apps/erpnext/erpnext/stock/get_item_details.py,Item Price updated for {0} in Price List {1},Prix de l'Article mis à jour pour {0} dans la Liste des Prix {1}
@@ -5557,8 +5546,6 @@
apps/erpnext/erpnext/accounts/doctype/shareholder/shareholder.js,Share Ledger,Registre des actions
apps/erpnext/erpnext/healthcare/doctype/patient/patient.js,Sales Invoice {0} created,Facture de Vente {0} créée
DocType: Employee,Confirmation Date,Date de Confirmation
-apps/erpnext/erpnext/hr/doctype/employee_transfer/employee_transfer.py,"Please delete the Employee <a href=""#Form/Employee/{0}"">{0}</a>\
- to cancel this document","Veuillez supprimer l'employé <a href=""#Form/Employee/{0}"">{0}</a> \ pour annuler ce document"
DocType: Inpatient Occupancy,Check Out,Départ
DocType: C-Form,Total Invoiced Amount,Montant Total Facturé
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py,Min Qty can not be greater than Max Qty,Qté Min ne peut pas être supérieure à Qté Max
@@ -5765,7 +5752,6 @@
DocType: Cheque Print Template,Cheque Width,Largeur du Chèque
DocType: Selling Settings,Validate Selling Price for Item against Purchase Rate or Valuation Rate,Valider le Prix de Vente de l'Article avec le Prix d'Achat ou le Taux de Valorisation
DocType: Fee Schedule,Fee Schedule,Barème d'Honoraires
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Column Labels : ,Étiquettes de colonne:
DocType: Bank Transaction,Settled,Colonisé
apps/erpnext/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.html,Cess,Cesser
DocType: Quality Feedback,Parameters,Paramètres
@@ -6439,6 +6425,7 @@
DocType: Salary Component,Formula,Formule
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py,Serial #,Série #
DocType: Material Request Plan Item,Required Quantity,Quantité requise
+DocType: Cash Flow Mapping Template,Template Name,Nom du Modèle
DocType: Lab Test Template,Lab Test Template,Modèle de test de laboratoire
apps/erpnext/erpnext/accounts/doctype/accounting_period/accounting_period.py,Accounting Period overlaps with {0},La période comptable chevauche avec {0}
apps/erpnext/erpnext/setup/doctype/company/company.py,Sales Account,Compte de vente
@@ -6499,7 +6486,7 @@
DocType: Bank Reconciliation Detail,Cheque Date,Date du Chèque
apps/erpnext/erpnext/accounts/doctype/account/account.py,Account {0}: Parent account {1} does not belong to company: {2},Compte {0}: Le Compte parent {1} n'appartient pas à l'entreprise: {2}
apps/erpnext/erpnext/setup/doctype/company/company.js,Successfully deleted all transactions related to this company!,Suppression de toutes les transactions liées à cette société avec succès !
-apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js,As on Date,Comme à la date
+apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.js,As on Date,Comme à la date
DocType: Additional Salary,HR,RH
DocType: Course Enrollment,Enrollment Date,Date de l'Inscription
DocType: Healthcare Settings,Out Patient SMS Alerts,Alertes SMS pour Patients
@@ -6565,7 +6552,6 @@
DocType: Course Content,Quiz,Quiz
DocType: Subscription,Trial Period End Date,Date de fin de la période d'évaluation
apps/erpnext/erpnext/setup/doctype/authorization_control/authorization_control.py,Not authroized since {0} exceeds limits,Non autorisé car {0} dépasse les limites
-apps/erpnext/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py,Start entering data from here : ,Commencez à saisir des données à partir d'ici:
DocType: Serial No,Asset Status,Statut de l'actif
DocType: Sales Invoice,Over Dimensional Cargo (ODC),Cargaison hors dimension (ODC)
DocType: Restaurant Order Entry,Restaurant Table,Table de restaurant
@@ -6791,7 +6777,6 @@
DocType: Contract,Party User,Utilisateur tiers
apps/erpnext/erpnext/controllers/buying_controller.py,Assets not created for <b>{0}</b>. You will have to create asset manually.,Éléments non créés pour <b>{0}</b> . Vous devrez créer l'actif manuellement.
apps/erpnext/erpnext/stock/report/total_stock_summary/total_stock_summary.py,Please set Company filter blank if Group By is 'Company',Veuillez laisser le filtre de la Société vide si Group By est 'Société'
-apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js,Customer > Customer Group > Territory,Client> Groupe de clients> Territoire
apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py,Posting Date cannot be future date,La Date de Publication ne peut pas être une date future
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Row # {0}: Serial No {1} does not match with {2} {3},Ligne # {0} : N° de série {1} ne correspond pas à {2} {3}
DocType: Loan Repayment,Interest Payable,Intérêts payables
@@ -7026,7 +7011,6 @@
apps/erpnext/erpnext/accounts/report/share_balance/share_balance.py,Average Rate,Prix moyen
DocType: Appointment,Appointment With,Rendez-vous avec
apps/erpnext/erpnext/controllers/accounts_controller.py,Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total,Le montant total du paiement dans l'échéancier doit être égal au Total Général / Total Arrondi
-apps/erpnext/erpnext/hr/doctype/attendance/attendance_list.js,Mark attendance as <b></b>,Marquer la présence comme <b></b>
apps/erpnext/erpnext/stock/doctype/item/item.py,"""Customer Provided Item"" cannot have Valuation Rate","Un ""article fourni par un client"" ne peut pas avoir de taux de valorisation"
DocType: Subscription Plan Detail,Plan,Plan
apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py,Bank Statement balance as per General Ledger,Solde du Relevé Bancaire d’après le Grand Livre
@@ -7718,7 +7702,6 @@
apps/erpnext/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py,Maximum benefit amount of employee {0} exceeds {1},Le montant maximal des prestations sociales de l'employé {0} dépasse {1}
apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py,Total allocated leaves are more than days in the period,Le Total des feuilles attribuées est supérieur au nombre de jours dans la période
DocType: Linked Soil Analysis,Linked Soil Analysis,Analyse de sol liée
-DocType: Pricing Rule,Percentage,Pourcentage
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Item {0} must be a stock Item,L'article {0} doit être un article en stock
DocType: Manufacturing Settings,Default Work In Progress Warehouse,Entrepôt de Travail en Cours par Défaut
apps/erpnext/erpnext/healthcare/doctype/practitioner_schedule/practitioner_schedule.js,"Schedules for {0} overlaps, do you want to proceed after skiping overlaped slots ?","Les plannings pour {0} se chevauchent, voulez-vous continuer sans prendre en compte les créneaux qui se chevauchent ?"