diff --git a/README.md b/README.md index d91136f3ff5..8be3f22b1e9 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# ERPNext - Open source ERP for small and medium-size business [![Build Status](https://travis-ci.org/frappe/erpnext.png)](https://travis-ci.org/frappe/erpnext) +# ERPNext - ERP made simple -[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/frappe/erpnext?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[![Build Status](https://travis-ci.org/frappe/erpnext.png)](https://travis-ci.org/frappe/erpnext) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/frappe/erpnext?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [https://erpnext.com](https://erpnext.com) diff --git a/erpnext/__version__.py b/erpnext/__version__.py index 82beb8b0873..4c762409456 100644 --- a/erpnext/__version__.py +++ b/erpnext/__version__.py @@ -1,2 +1,2 @@ from __future__ import unicode_literals -__version__ = '6.1.1' +__version__ = '6.2.0' diff --git a/erpnext/accounts/doctype/account/account.json b/erpnext/accounts/doctype/account/account.json index 8927036b82c..2ab09631d64 100644 --- a/erpnext/accounts/doctype/account/account.json +++ b/erpnext/accounts/doctype/account/account.json @@ -1,515 +1,539 @@ { - "allow_copy": 1, - "allow_import": 1, - "allow_rename": 1, - "creation": "2013-01-30 12:49:46", - "custom": 0, - "description": "Heads (or groups) against which Accounting Entries are made and balances are maintained.", - "docstatus": 0, - "doctype": "DocType", - "document_type": "Master", + "allow_copy": 1, + "allow_import": 1, + "allow_rename": 1, + "creation": "2013-01-30 12:49:46", + "custom": 0, + "description": "Heads (or groups) against which Accounting Entries are made and balances are maintained.", + "docstatus": 0, + "doctype": "DocType", + "document_type": "Setup", "fields": [ { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "properties", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "", - "no_copy": 0, - "oldfieldtype": "Section Break", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "properties", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "", + "no_copy": 0, + "oldfieldtype": "Section Break", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break0", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break0", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "account_name", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 1, - "label": "Account Name", - "no_copy": 1, - "oldfieldname": "account_name", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "account_name", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 1, + "label": "Account Name", + "no_copy": 1, + "oldfieldname": "account_name", + "oldfieldtype": "Data", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": "0", - "fieldname": "is_group", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Is Group", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "0", + "fieldname": "is_group", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Is Group", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "company", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Company", - "no_copy": 0, - "oldfieldname": "company", - "oldfieldtype": "Link", - "options": "Company", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "company", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Company", + "no_copy": 0, + "oldfieldname": "company", + "oldfieldtype": "Link", + "options": "Company", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "root_type", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Root Type", - "no_copy": 0, - "options": "\nAsset\nLiability\nIncome\nExpense\nEquity", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "root_type", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Root Type", + "no_copy": 0, + "options": "\nAsset\nLiability\nIncome\nExpense\nEquity", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "report_type", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Report Type", - "no_copy": 0, - "options": "\nBalance Sheet\nProfit and Loss", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "report_type", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Report Type", + "no_copy": 0, + "options": "\nBalance Sheet\nProfit and Loss", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break1", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_group==0", + "fieldname": "account_currency", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Currency", + "no_copy": 0, + "options": "Currency", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break1", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "parent_account", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 1, - "in_filter": 0, - "in_list_view": 0, - "label": "Parent Account", - "no_copy": 0, - "oldfieldname": "parent_account", - "oldfieldtype": "Link", - "options": "Account", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "parent_account", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 1, + "in_filter": 0, + "in_list_view": 0, + "label": "Parent Account", + "no_copy": 0, + "oldfieldname": "parent_account", + "oldfieldtype": "Link", + "options": "Account", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "Setting Account Type helps in selecting this Account in transactions.", - "fieldname": "account_type", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Account Type", - "no_copy": 0, - "oldfieldname": "account_type", - "oldfieldtype": "Select", - "options": "\nBank\nCash\nTax\nChargeable\nWarehouse\nReceivable\nPayable\nEquity\nFixed Asset\nCost of Goods Sold\nExpense Account\nRound Off\nIncome Account\nStock Received But Not Billed\nExpenses Included In Valuation\nStock Adjustment\nStock\nTemporary", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "Setting Account Type helps in selecting this Account in transactions.", + "fieldname": "account_type", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Account Type", + "no_copy": 0, + "oldfieldname": "account_type", + "oldfieldtype": "Select", + "options": "\nBank\nCash\nTax\nChargeable\nWarehouse\nReceivable\nPayable\nEquity\nFixed Asset\nCost of Goods Sold\nExpense Account\nRound Off\nIncome Account\nStock Received But Not Billed\nExpenses Included In Valuation\nStock Adjustment\nStock\nTemporary", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "Rate at which this tax is applied", - "fieldname": "tax_rate", - "fieldtype": "Float", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Rate", - "no_copy": 0, - "oldfieldname": "tax_rate", - "oldfieldtype": "Currency", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "Rate at which this tax is applied", + "fieldname": "tax_rate", + "fieldtype": "Float", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Rate", + "no_copy": 0, + "oldfieldname": "tax_rate", + "oldfieldtype": "Currency", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "If the account is frozen, entries are allowed to restricted users.", - "fieldname": "freeze_account", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Frozen", - "no_copy": 0, - "oldfieldname": "freeze_account", - "oldfieldtype": "Select", - "options": "No\nYes", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "If the account is frozen, entries are allowed to restricted users.", + "fieldname": "freeze_account", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Frozen", + "no_copy": 0, + "oldfieldname": "freeze_account", + "oldfieldtype": "Select", + "options": "No\nYes", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "warehouse", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Warehouse", - "no_copy": 0, - "options": "Warehouse", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "warehouse", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Warehouse", + "no_copy": 0, + "options": "Warehouse", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "balance_must_be", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Balance must be", - "no_copy": 0, - "options": "\nDebit\nCredit", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "balance_must_be", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Balance must be", + "no_copy": 0, + "options": "\nDebit\nCredit", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "lft", - "fieldtype": "Int", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Lft", - "no_copy": 0, - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "lft", + "fieldtype": "Int", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Lft", + "no_copy": 0, + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "rgt", - "fieldtype": "Int", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Rgt", - "no_copy": 0, - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "rgt", + "fieldtype": "Int", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Rgt", + "no_copy": 0, + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "old_parent", - "fieldtype": "Data", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Old Parent", - "no_copy": 0, - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "old_parent", + "fieldtype": "Data", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Old Parent", + "no_copy": 0, + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 } - ], - "hide_heading": 0, - "hide_toolbar": 0, - "icon": "icon-money", - "idx": 1, - "in_create": 0, - "in_dialog": 0, - "is_submittable": 0, - "issingle": 0, - "istable": 0, - "modified": "2015-09-07 15:51:26", - "modified_by": "Administrator", - "module": "Accounts", - "name": "Account", - "owner": "Administrator", + ], + "hide_heading": 0, + "hide_toolbar": 0, + "icon": "icon-money", + "idx": 1, + "in_create": 0, + "in_dialog": 0, + "is_submittable": 0, + "issingle": 0, + "istable": 0, + "modified": "2015-09-11 15:51:26", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Account", + "owner": "Administrator", "permissions": [ { - "amend": 0, - "apply_user_permissions": 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": "Accounts User", - "set_user_permissions": 0, - "share": 1, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Accounts User", + "set_user_permissions": 0, + "share": 1, + "submit": 0, "write": 1 - }, + }, { - "amend": 0, - "apply_user_permissions": 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": "Auditor", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Auditor", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 - }, + }, { - "amend": 0, - "apply_user_permissions": 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": "Sales User", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Sales User", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 - }, + }, { - "amend": 0, - "apply_user_permissions": 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, + "amend": 0, + "apply_user_permissions": 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 - }, + }, { - "amend": 0, - "apply_user_permissions": 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": "Accounts Manager", - "set_user_permissions": 1, - "share": 1, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Accounts Manager", + "set_user_permissions": 1, + "share": 1, + "submit": 0, "write": 1 } - ], - "read_only": 0, - "read_only_onload": 0, + ], + "read_only": 0, + "read_only_onload": 0, "search_fields": "" -} \ No newline at end of file +} diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py index 46f75208fc6..079bc361cac 100644 --- a/erpnext/accounts/doctype/account/account.py +++ b/erpnext/accounts/doctype/account/account.py @@ -7,6 +7,8 @@ from frappe.utils import cstr, cint from frappe import throw, _ from frappe.model.document import Document +class RootNotEditable(frappe.ValidationError): pass + class Account(Document): nsm_parent_field = 'parent_account' @@ -28,6 +30,7 @@ class Account(Document): self.validate_warehouse_account() self.validate_frozen_accounts_modifier() self.validate_balance_must_be_debit_or_credit() + self.validate_account_currency() def validate_parent(self): """Fetch Parent Details and validate parent account""" @@ -67,7 +70,7 @@ class Account(Document): # does not exists parent if frappe.db.exists("Account", self.name): if not frappe.db.get_value("Account", self.name, "parent_account"): - throw(_("Root cannot be edited.")) + throw(_("Root cannot be edited."), RootNotEditable) def validate_frozen_accounts_modifier(self): old_value = frappe.db.get_value("Account", self.name, "freeze_account") @@ -86,6 +89,14 @@ class Account(Document): frappe.throw(_("Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'")) elif account_balance < 0 and self.balance_must_be == "Debit": frappe.throw(_("Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'")) + + def validate_account_currency(self): + if not self.account_currency: + self.account_currency = frappe.db.get_value("Company", self.company, "default_currency") + + elif self.account_currency != frappe.db.get_value("Account", self.name, "account_currency"): + if frappe.db.get_value("GL Entry", {"account": self.name}): + frappe.throw(_("Currency can not be changed after making entries using some other currency")) def convert_group_to_ledger(self): if self.check_if_child_exists(): diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py b/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py index ce3a7fddb75..bfb5240fa82 100644 --- a/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py +++ b/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py @@ -36,7 +36,8 @@ def create_charts(chart_name, company): "is_group": is_group, "root_type": root_type, "report_type": report_type, - "account_type": child.get("account_type") + "account_type": child.get("account_type"), + "account_currency": frappe.db.get_value("Company", company, "default_currency") }) if root_account: diff --git a/erpnext/accounts/doctype/account/test_account.py b/erpnext/accounts/doctype/account/test_account.py index 2a3feda79b1..83516dacb9d 100644 --- a/erpnext/accounts/doctype/account/test_account.py +++ b/erpnext/accounts/doctype/account/test_account.py @@ -9,36 +9,39 @@ def _make_test_records(verbose): accounts = [ # [account_name, parent_account, is_group] - ["_Test Account Bank Account", "Bank Accounts", 0, "Bank"], + ["_Test Bank", "Bank Accounts", 0, "Bank", None], + ["_Test Bank USD", "Bank Accounts", 0, "Bank", "USD"], + ["_Test Bank EUR", "Bank Accounts", 0, "Bank", "EUR"], - ["_Test Account Stock Expenses", "Direct Expenses", 1, None], - ["_Test Account Shipping Charges", "_Test Account Stock Expenses", 0, "Chargeable"], - ["_Test Account Customs Duty", "_Test Account Stock Expenses", 0, "Tax"], - ["_Test Account Insurance Charges", "_Test Account Stock Expenses", 0, "Chargeable"], - ["_Test Account Stock Adjustment", "_Test Account Stock Expenses", 0, "Stock Adjustment"], + ["_Test Account Stock Expenses", "Direct Expenses", 1, None, None], + ["_Test Account Shipping Charges", "_Test Account Stock Expenses", 0, "Chargeable", None], + ["_Test Account Customs Duty", "_Test Account Stock Expenses", 0, "Tax", None], + ["_Test Account Insurance Charges", "_Test Account Stock Expenses", 0, "Chargeable", None], + ["_Test Account Stock Adjustment", "_Test Account Stock Expenses", 0, "Stock Adjustment", None], + ["_Test Account Tax Assets", "Current Assets", 1, None, None], + ["_Test Account VAT", "_Test Account Tax Assets", 0, "Tax", None], + ["_Test Account Service Tax", "_Test Account Tax Assets", 0, "Tax", None], - ["_Test Account Tax Assets", "Current Assets", 1, None], - ["_Test Account VAT", "_Test Account Tax Assets", 0, "Tax"], - ["_Test Account Service Tax", "_Test Account Tax Assets", 0, "Tax"], + ["_Test Account Reserves and Surplus", "Current Liabilities", 0, None, None], - ["_Test Account Reserves and Surplus", "Current Liabilities", 0, None], - - ["_Test Account Cost for Goods Sold", "Expenses", 0, None], - ["_Test Account Excise Duty", "_Test Account Tax Assets", 0, "Tax"], - ["_Test Account Education Cess", "_Test Account Tax Assets", 0, "Tax"], - ["_Test Account S&H Education Cess", "_Test Account Tax Assets", 0, "Tax"], - ["_Test Account CST", "Direct Expenses", 0, "Tax"], - ["_Test Account Discount", "Direct Expenses", 0, None], - ["_Test Write Off", "Indirect Expenses", 0, None], + ["_Test Account Cost for Goods Sold", "Expenses", 0, None, None], + ["_Test Account Excise Duty", "_Test Account Tax Assets", 0, "Tax", None], + ["_Test Account Education Cess", "_Test Account Tax Assets", 0, "Tax", None], + ["_Test Account S&H Education Cess", "_Test Account Tax Assets", 0, "Tax", None], + ["_Test Account CST", "Direct Expenses", 0, "Tax", None], + ["_Test Account Discount", "Direct Expenses", 0, None, None], + ["_Test Write Off", "Indirect Expenses", 0, None, None], # related to Account Inventory Integration - ["_Test Account Stock In Hand", "Current Assets", 0, None], - ["_Test Account Fixed Assets", "Current Assets", 0, None], + ["_Test Account Stock In Hand", "Current Assets", 0, None, None], + ["_Test Account Fixed Assets", "Current Assets", 0, None, None], # Receivable / Payable Account - ["_Test Receivable", "Current Assets", 0, "Receivable"], - ["_Test Payable", "Current Liabilities", 0, "Payable"], + ["_Test Receivable", "Current Assets", 0, "Receivable", None], + ["_Test Payable", "Current Liabilities", 0, "Payable", None], + ["_Test Receivable USD", "Current Assets", 0, "Receivable", "USD"], + ["_Test Payable USD", "Current Liabilities", 0, "Payable", "USD"] ] for company, abbr in [["_Test Company", "_TC"], ["_Test Company 1", "_TC1"]]: @@ -48,7 +51,8 @@ def _make_test_records(verbose): "parent_account": parent_account + " - " + abbr, "company": company, "is_group": is_group, - "account_type": account_type - } for account_name, parent_account, is_group, account_type in accounts]) + "account_type": account_type, + "account_currency": currency + } for account_name, parent_account, is_group, account_type, currency in accounts]) return test_objects diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py index 9fc9854d2dc..5f569a83052 100644 --- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py +++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py @@ -16,7 +16,9 @@ class AccountsSettings(Document): if cint(self.auto_accounting_for_stock): # set default perpetual account in company for company in frappe.db.sql("select name from tabCompany"): - frappe.get_doc("Company", company[0]).save() + company = frappe.get_doc("Company", company[0]) + company.flags.ignore_permissions = True + company.save() # Create account head for warehouses warehouse_list = frappe.db.sql("select name, company from tabWarehouse", as_dict=1) @@ -25,4 +27,5 @@ class AccountsSettings(Document): frappe.throw(_("Company is missing in warehouses {0}").format(comma_and(warehouse_with_no_company))) for wh in warehouse_list: wh_doc = frappe.get_doc("Warehouse", wh.name) + wh_doc.flags.ignore_permissions = True wh_doc.save() diff --git a/erpnext/accounts/doctype/cost_center/cost_center.json b/erpnext/accounts/doctype/cost_center/cost_center.json index d1bd2179d91..710930a56a6 100644 --- a/erpnext/accounts/doctype/cost_center/cost_center.json +++ b/erpnext/accounts/doctype/cost_center/cost_center.json @@ -8,7 +8,7 @@ "description": "Track separate Income and Expense for product verticals or divisions.", "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -298,7 +298,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:55.020690", "modified_by": "Administrator", "module": "Accounts", "name": "Cost Center", diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.json b/erpnext/accounts/doctype/fiscal_year/fiscal_year.json index a6496934150..0ba75361785 100644 --- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.json +++ b/erpnext/accounts/doctype/fiscal_year/fiscal_year.json @@ -8,7 +8,7 @@ "description": "**Fiscal Year** represents a Financial Year. All accounting entries and other major transactions are tracked against **Fiscal Year**.", "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -133,7 +133,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:56.280252", "modified_by": "Administrator", "module": "Accounts", "name": "Fiscal Year", diff --git a/erpnext/accounts/doctype/fiscal_year_company/fiscal_year_company.json b/erpnext/accounts/doctype/fiscal_year_company/fiscal_year_company.json index cbebc322b8f..11d0226a6b0 100644 --- a/erpnext/accounts/doctype/fiscal_year_company/fiscal_year_company.json +++ b/erpnext/accounts/doctype/fiscal_year_company/fiscal_year_company.json @@ -6,7 +6,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -39,7 +39,7 @@ "is_submittable": 0, "issingle": 0, "istable": 1, - "modified": "2014-10-02 13:35:44.155278", + "modified": "2015-09-14 02:55:56.368682", "modified_by": "Administrator", "module": "Accounts", "name": "Fiscal Year Company", diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.json b/erpnext/accounts/doctype/gl_entry/gl_entry.json index 521e3baf0af..b4ec8beeb9b 100644 --- a/erpnext/accounts/doctype/gl_entry/gl_entry.json +++ b/erpnext/accounts/doctype/gl_entry/gl_entry.json @@ -1,517 +1,586 @@ { - "allow_copy": 0, - "allow_import": 0, - "allow_rename": 0, - "autoname": "GL.#######", - "creation": "2013-01-10 16:34:06", - "custom": 0, - "docstatus": 0, - "doctype": "DocType", + "allow_copy": 0, + "allow_import": 0, + "allow_rename": 0, + "autoname": "GL.#######", + "creation": "2013-01-10 16:34:06", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", "fields": [ { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "posting_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 1, - "label": "Posting Date", - "no_copy": 0, - "oldfieldname": "posting_date", - "oldfieldtype": "Date", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "posting_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 1, + "label": "Posting Date", + "no_copy": 0, + "oldfieldname": "posting_date", + "oldfieldtype": "Date", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "transaction_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Transaction Date", - "no_copy": 0, - "oldfieldname": "transaction_date", - "oldfieldtype": "Date", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "transaction_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 1, + "label": "Transaction Date", + "no_copy": 0, + "oldfieldname": "transaction_date", + "oldfieldtype": "Date", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "account", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 1, - "label": "Account", - "no_copy": 0, - "oldfieldname": "account", - "oldfieldtype": "Link", - "options": "Account", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "account", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 1, + "label": "Account", + "no_copy": 0, + "oldfieldname": "account", + "oldfieldtype": "Link", + "options": "Account", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "party_type", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Party Type", - "no_copy": 0, - "options": "DocType", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "party_type", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Party Type", + "no_copy": 0, + "options": "DocType", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "party", - "fieldtype": "Dynamic Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Party", - "no_copy": 0, - "options": "party_type", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "party", + "fieldtype": "Dynamic Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Party", + "no_copy": 0, + "options": "party_type", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "cost_center", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 1, - "label": "Cost Center", - "no_copy": 0, - "oldfieldname": "cost_center", - "oldfieldtype": "Link", - "options": "Cost Center", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "cost_center", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 1, + "label": "Cost Center", + "no_copy": 0, + "oldfieldname": "cost_center", + "oldfieldtype": "Link", + "options": "Cost Center", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "debit", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Debit Amt", - "no_copy": 0, - "oldfieldname": "debit", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "debit", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Debit Amount", + "no_copy": 0, + "oldfieldname": "debit", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "credit", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Credit Amt", - "no_copy": 0, - "oldfieldname": "credit", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "credit", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Credit Amount", + "no_copy": 0, + "oldfieldname": "credit", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "against", - "fieldtype": "Text", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Against", - "no_copy": 0, - "oldfieldname": "against", - "oldfieldtype": "Text", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "account_currency", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Account Currency", + "no_copy": 0, + "options": "Currency", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "against_voucher_type", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Against Voucher Type", - "no_copy": 0, - "oldfieldname": "against_voucher_type", - "oldfieldtype": "Data", - "options": "DocType", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "debit_in_account_currency", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Debit Amount in Account Currency", + "no_copy": 0, + "options": "currency", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "against_voucher", - "fieldtype": "Dynamic Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Against Voucher", - "no_copy": 0, - "oldfieldname": "against_voucher", - "oldfieldtype": "Data", - "options": "against_voucher_type", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "credit_in_account_currency", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Credit Amount in Account Currency", + "no_copy": 0, + "options": "currency", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "voucher_type", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Voucher Type", - "no_copy": 0, - "oldfieldname": "voucher_type", - "oldfieldtype": "Select", - "options": "DocType", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "against", + "fieldtype": "Text", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Against", + "no_copy": 0, + "oldfieldname": "against", + "oldfieldtype": "Text", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "voucher_no", - "fieldtype": "Dynamic Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Voucher No", - "no_copy": 0, - "oldfieldname": "voucher_no", - "oldfieldtype": "Data", - "options": "voucher_type", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "against_voucher_type", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Against Voucher Type", + "no_copy": 0, + "oldfieldname": "against_voucher_type", + "oldfieldtype": "Data", + "options": "DocType", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "remarks", - "fieldtype": "Text", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Remarks", - "no_copy": 1, - "oldfieldname": "remarks", - "oldfieldtype": "Text", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "against_voucher", + "fieldtype": "Dynamic Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Against Voucher", + "no_copy": 0, + "oldfieldname": "against_voucher", + "oldfieldtype": "Data", + "options": "against_voucher_type", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "is_opening", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Is Opening", - "no_copy": 0, - "oldfieldname": "is_opening", - "oldfieldtype": "Select", - "options": "No\nYes", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "voucher_type", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Voucher Type", + "no_copy": 0, + "oldfieldname": "voucher_type", + "oldfieldtype": "Select", + "options": "DocType", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "is_advance", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Is Advance", - "no_copy": 0, - "oldfieldname": "is_advance", - "oldfieldtype": "Select", - "options": "No\nYes", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "voucher_no", + "fieldtype": "Dynamic Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Voucher No", + "no_copy": 0, + "oldfieldname": "voucher_no", + "oldfieldtype": "Data", + "options": "voucher_type", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "fiscal_year", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Fiscal Year", - "no_copy": 0, - "oldfieldname": "fiscal_year", - "oldfieldtype": "Select", - "options": "Fiscal Year", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "remarks", + "fieldtype": "Text", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Remarks", + "no_copy": 1, + "oldfieldname": "remarks", + "oldfieldtype": "Text", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "company", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Company", - "no_copy": 0, - "oldfieldname": "company", - "oldfieldtype": "Link", - "options": "Company", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "is_opening", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Is Opening", + "no_copy": 0, + "oldfieldname": "is_opening", + "oldfieldtype": "Select", + "options": "No\nYes", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "is_advance", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Is Advance", + "no_copy": 0, + "oldfieldname": "is_advance", + "oldfieldtype": "Select", + "options": "No\nYes", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "fiscal_year", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Fiscal Year", + "no_copy": 0, + "oldfieldname": "fiscal_year", + "oldfieldtype": "Select", + "options": "Fiscal Year", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "company", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Company", + "no_copy": 0, + "oldfieldname": "company", + "oldfieldtype": "Link", + "options": "Company", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 } - ], - "hide_heading": 0, - "hide_toolbar": 0, - "icon": "icon-list", - "idx": 1, - "in_create": 1, - "in_dialog": 0, - "is_submittable": 0, - "issingle": 0, - "istable": 0, - "modified": "2015-09-07 15:51:26", - "modified_by": "Administrator", - "module": "Accounts", - "name": "GL Entry", - "owner": "Administrator", + ], + "hide_heading": 0, + "hide_toolbar": 0, + "icon": "icon-list", + "idx": 1, + "in_create": 1, + "in_dialog": 0, + "is_submittable": 0, + "issingle": 0, + "istable": 0, + "modified": "2015-09-11 15:51:26", + "modified_by": "Administrator", + "module": "Accounts", + "name": "GL Entry", + "owner": "Administrator", "permissions": [ { - "amend": 0, - "apply_user_permissions": 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": "Accounts User", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Accounts User", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 - }, + }, { - "amend": 0, - "apply_user_permissions": 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": "Accounts Manager", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Accounts Manager", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 - }, + }, { - "amend": 0, - "apply_user_permissions": 0, - "cancel": 0, - "create": 0, - "delete": 0, - "email": 0, - "export": 1, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 0, - "read": 1, - "report": 1, - "role": "Auditor", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 0, + "delete": 0, + "email": 0, + "export": 1, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 0, + "read": 1, + "report": 1, + "role": "Auditor", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 } - ], - "read_only": 0, - "read_only_onload": 0, - "search_fields": "voucher_no,account,posting_date,against_voucher", - "sort_field": "modified", + ], + "read_only": 0, + "read_only_onload": 0, + "search_fields": "voucher_no,account,posting_date,against_voucher", + "sort_field": "modified", "sort_order": "DESC" -} \ No newline at end of file +} diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py index c4596284826..dbaf5901daf 100644 --- a/erpnext/accounts/doctype/gl_entry/gl_entry.py +++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py @@ -10,6 +10,8 @@ from frappe import _ from frappe.model.document import Document class CustomerFrozen(frappe.ValidationError): pass +class InvalidCurrency(frappe.ValidationError): pass +class InvalidAccountCurrency(frappe.ValidationError): pass class GLEntry(Document): def validate(self): @@ -20,6 +22,7 @@ class GLEntry(Document): self.check_pl_account() self.validate_cost_center() self.validate_party() + self.validate_currency() def on_update_with_args(self, adv_adj, update_outstanding = 'Yes'): self.validate_account_details(adv_adj) @@ -98,6 +101,25 @@ class GLEntry(Document): if not frozen_accounts_modifier in frappe.get_roles(): if frappe.db.get_value(self.party_type, self.party, "is_frozen"): frappe.throw("{0} {1} is frozen".format(self.party_type, self.party), CustomerFrozen) + + def validate_currency(self): + company_currency = frappe.db.get_value("Company", self.company, "default_currency") + account_currency = frappe.db.get_value("Account", self.account, "account_currency") or company_currency + + if not self.account_currency: + self.account_currency = company_currency + if account_currency != self.account_currency: + frappe.throw(_("Accounting Entry for {0} can only be made in currency: {1}") + .format(self.account, (account_currency or company_currency)), InvalidAccountCurrency) + + + if self.party_type and self.party: + party_account_currency = frappe.db.get_value(self.party_type, self.party, "party_account_currency") \ + or company_currency + + if party_account_currency != self.account_currency: + frappe.throw(_("Accounting Entry for {0}: {1} can only be made in currency: {2}") + .format(self.party_type, self.party, party_account_currency), InvalidAccountCurrency) def validate_balance_type(account, adv_adj=False): if not adv_adj and account: @@ -131,17 +153,18 @@ def update_outstanding_amt(account, party_type, party, against_voucher_type, aga party_condition = "" # get final outstanding amt - bal = flt(frappe.db.sql("""select sum(ifnull(debit, 0)) - sum(ifnull(credit, 0)) + bal = flt(frappe.db.sql(""" + select sum(ifnull(debit_in_account_currency, 0)) - sum(ifnull(credit_in_account_currency, 0)) from `tabGL Entry` where against_voucher_type=%s and against_voucher=%s and account = %s {0}""".format(party_condition), (against_voucher_type, against_voucher, account))[0][0] or 0.0) - + if against_voucher_type == 'Purchase Invoice': bal = -bal elif against_voucher_type == "Journal Entry": against_voucher_amount = flt(frappe.db.sql(""" - select sum(ifnull(debit, 0)) - sum(ifnull(credit, 0)) + select sum(ifnull(debit_in_account_currency, 0)) - sum(ifnull(credit_in_account_currency, 0)) from `tabGL Entry` where voucher_type = 'Journal Entry' and voucher_no = %s and account = %s and ifnull(against_voucher, '') = '' {0}""" .format(party_condition), (against_voucher, account))[0][0]) diff --git a/erpnext/accounts/doctype/gl_entry/test_gl_entry.py b/erpnext/accounts/doctype/gl_entry/test_gl_entry.py index 383409cd3bf..146d084a11b 100644 --- a/erpnext/accounts/doctype/gl_entry/test_gl_entry.py +++ b/erpnext/accounts/doctype/gl_entry/test_gl_entry.py @@ -11,7 +11,7 @@ class TestGLEntry(unittest.TestCase): frappe.db.set_value("Company", "_Test Company", "round_off_cost_center", "_Test Cost Center - _TC") jv = make_journal_entry("_Test Account Cost for Goods Sold - _TC", - "_Test Account Bank Account - _TC", 100, "_Test Cost Center - _TC", submit=False) + "_Test Bank - _TC", 100, "_Test Cost Center - _TC", submit=False) jv.get("accounts")[0].debit = 100.01 jv.flags.ignore_validate = True diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js index 1e77422a250..383b4b620d5 100644 --- a/erpnext/accounts/doctype/journal_entry/journal_entry.js +++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js @@ -2,8 +2,54 @@ // License: GNU General Public License v3. See license.txt frappe.provide("erpnext.accounts"); +frappe.provide("erpnext.journal_entry"); frappe.require("assets/erpnext/js/utils.js"); +frappe.ui.form.on("Journal Entry", { + refresh: function(frm) { + erpnext.toggle_naming_series(); + cur_frm.cscript.voucher_type(frm.doc); + + if(frm.doc.docstatus==1) { + cur_frm.add_custom_button(__('View Ledger'), function() { + frappe.route_options = { + "voucher_no": frm.doc.name, + "from_date": frm.doc.posting_date, + "to_date": frm.doc.posting_date, + "company": frm.doc.company, + group_by_voucher: 0 + }; + frappe.set_route("query-report", "General Ledger"); + }, "icon-table"); + } + + // hide /unhide fields based on currency + erpnext.journal_entry.toggle_fields_based_on_currency(frm); + }, + + multi_currency: function(frm) { + erpnext.journal_entry.toggle_fields_based_on_currency(frm); + } +}) + +erpnext.journal_entry.toggle_fields_based_on_currency = function(frm) { + var fields = ["currency_section", "account_currency", "exchange_rate", "debit", "credit"]; + + var grid = frm.get_field("accounts").grid; + if(grid) grid.set_column_disp(fields, frm.doc.multi_currency); + + // dynamic label + var field_label_map = { + "debit_in_account_currency": "Debit", + "credit_in_account_currency": "Credit" + }; + + $.each(field_label_map, function (fieldname, label) { + var df = frappe.meta.get_docfield("Journal Entry Account", fieldname, frm.doc.name); + df.label = frm.doc.multi_currency ? (label + " in Account Currency") : label; + }) +} + erpnext.accounts.JournalEntry = frappe.ui.form.Controller.extend({ onload: function() { this.load_defaults(); @@ -29,17 +75,27 @@ erpnext.accounts.JournalEntry = frappe.ui.form.Controller.extend({ setup_queries: function() { var me = this; - - $.each(["account", "cost_center"], function(i, fieldname) { - me.frm.set_query(fieldname, "accounts", function() { - frappe.model.validate_missing(me.frm.doc, "company"); - return { - filters: { - company: me.frm.doc.company, - is_group: 0 - } - }; - }); + + me.frm.set_query("account", "accounts", function(doc, cdt, cdn) { + var filters = { + company: me.frm.doc.company, + is_group: 0 + }; + if(!doc.multi_currency) { + $.extend(filters, { + account_currency: frappe.get_doc(":Company", me.frm.doc.company).default_currency + }); + } + return { filters: filters }; + }); + + me.frm.set_query("cost_center", "accounts", function(doc, cdt, cdn) { + return { + filters: { + company: me.frm.doc.company, + is_group: 0 + } + }; }); me.frm.set_query("party_type", "accounts", function(doc, cdt, cdn) { @@ -118,32 +174,39 @@ erpnext.accounts.JournalEntry = frappe.ui.form.Controller.extend({ reference_name: function(doc, cdt, cdn) { var d = frappe.get_doc(cdt, cdn); - if (d.reference_type==="Purchase Invoice" && !flt(d.debit)) { - this.get_outstanding('Purchase Invoice', d.reference_name, d); - } - if (d.reference_type==="Sales Invoice" && !flt(d.credit)) { - this.get_outstanding('Sales Invoice', d.reference_name, d); - } - if (d.reference_type==="Journal Entry" && !flt(d.credit) && !flt(d.debit)) { - this.get_outstanding('Journal Entry', d.reference_name, d); + if(d.reference_name) { + if (d.reference_type==="Purchase Invoice" && !flt(d.debit)) { + this.get_outstanding('Purchase Invoice', d.reference_name, doc.company, d); + } + if (d.reference_type==="Sales Invoice" && !flt(d.credit)) { + this.get_outstanding('Sales Invoice', d.reference_name, doc.company, d); + } + if (d.reference_type==="Journal Entry" && !flt(d.credit) && !flt(d.debit)) { + this.get_outstanding('Journal Entry', d.reference_name, doc.company, d); + } } }, - get_outstanding: function(doctype, docname, child) { + get_outstanding: function(doctype, docname, company, child) { var me = this; var args = { "doctype": doctype, "docname": docname, "party": child.party, - "account": child.account + "account": child.account, + "account_currency": child.account_currency, + "company": company } - return this.frm.call({ - child: child, - method: "get_outstanding", + return frappe.call({ + method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_outstanding", args: { args: args}, callback: function(r) { - cur_frm.cscript.update_totals(me.frm.doc); + if(r.message) { + $.each(r.message, function(field, value) { + frappe.model.set_value(child.doctype, child.name, field, value); + }) + } } }); }, @@ -161,35 +224,20 @@ erpnext.accounts.JournalEntry = frappe.ui.form.Controller.extend({ // set difference if(doc.difference) { if(doc.difference > 0) { + row.credit_in_account_currency = doc.difference; row.credit = doc.difference; } else { + row.debit_in_account_currency = -doc.difference; row.debit = -doc.difference; } } + cur_frm.cscript.update_totals(doc); }, }); cur_frm.script_manager.make(erpnext.accounts.JournalEntry); -cur_frm.cscript.refresh = function(doc) { - erpnext.toggle_naming_series(); - cur_frm.cscript.voucher_type(doc); - - if(doc.docstatus==1) { - cur_frm.add_custom_button(__('View Ledger'), function() { - frappe.route_options = { - "voucher_no": doc.name, - "from_date": doc.posting_date, - "to_date": doc.posting_date, - "company": doc.company, - group_by_voucher: 0 - }; - frappe.set_route("query-report", "General Ledger"); - }, "icon-table"); - } -} - cur_frm.cscript.company = function(doc, cdt, cdn) { cur_frm.refresh_fields(); erpnext.get_fiscal_year(doc.company, doc.posting_date); @@ -201,10 +249,10 @@ cur_frm.cscript.posting_date = function(doc, cdt, cdn){ cur_frm.cscript.update_totals = function(doc) { var td=0.0; var tc =0.0; - var el = doc.accounts || []; - for(var i in el) { - td += flt(el[i].debit, precision("debit", el[i])); - tc += flt(el[i].credit, precision("credit", el[i])); + var accounts = doc.accounts || []; + for(var i in accounts) { + td += flt(accounts[i].debit, precision("debit", accounts[i])); + tc += flt(accounts[i].credit, precision("credit", accounts[i])); } var doc = locals[doc.doctype][doc.name]; doc.total_debit = td; @@ -213,32 +261,12 @@ cur_frm.cscript.update_totals = function(doc) { refresh_many(['total_debit','total_credit','difference']); } -cur_frm.cscript.debit = function(doc,dt,dn) { cur_frm.cscript.update_totals(doc); } -cur_frm.cscript.credit = function(doc,dt,dn) { cur_frm.cscript.update_totals(doc); } - cur_frm.cscript.get_balance = function(doc,dt,dn) { cur_frm.cscript.update_totals(doc); return $c_obj(cur_frm.doc, 'get_balance', '', function(r, rt){ cur_frm.refresh(); }); } -// Get balance -// ----------- - -cur_frm.cscript.account = function(doc,dt,dn) { - var d = locals[dt][dn]; - if(d.account) { - return frappe.call({ - method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_account_balance_and_party_type", - args: {account: d.account, date: doc.posting_date}, - callback: function(r) { - $.extend(d, r.message); - refresh_field('balance', d.name, 'accounts'); - refresh_field('party_type', d.name, 'accounts'); - } - }); - } -} cur_frm.cscript.validate = function(doc,cdt,cdn) { cur_frm.cscript.update_totals(doc); @@ -303,18 +331,63 @@ cur_frm.cscript.voucher_type = function(doc, cdt, cdn) { } } -frappe.ui.form.on("Journal Entry Account", "party", function(frm, cdt, cdn) { - var d = frappe.get_doc(cdt, cdn); - if(!d.account && d.party_type && d.party) { - return frm.call({ - method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_party_account_and_balance", - child: d, - args: { - company: frm.doc.company, - party_type: d.party_type, - party: d.party - } - }); +frappe.ui.form.on("Journal Entry Account", { + party: function(frm, cdt, cdn) { + var d = frappe.get_doc(cdt, cdn); + if(!d.account && d.party_type && d.party) { + return frm.call({ + method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_party_account_and_balance", + child: d, + args: { + company: frm.doc.company, + party_type: d.party_type, + party: d.party + } + }); + } + }, + + account: function(frm, dt, dn) { + var d = locals[dt][dn]; + if(d.account) { + return frappe.call({ + method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_account_balance_and_party_type", + args: { + account: d.account, + date: frm.doc.posting_date, + company: frm.doc.company, + debit: flt(d.debit_in_account_currency), + credit: flt(d.credit_in_account_currency), + exchange_rate: d.exchange_rate + }, + callback: function(r) { + if(r.message) { + $.extend(d, r.message); + refresh_field('accounts'); + } + } + }); + } + }, + + debit_in_account_currency: function(frm, cdt, cdn) { + erpnext.journal_entry.set_debit_credit_in_company_currency(frm, cdt, cdn); + }, + + credit_in_account_currency: function(frm, cdt, cdn) { + erpnext.journal_entry.set_debit_credit_in_company_currency(frm, cdt, cdn); + }, + + debit: function(frm, dt, dn) { + cur_frm.cscript.update_totals(frm.doc); + }, + + credit: function(frm, dt, dn) { + cur_frm.cscript.update_totals(frm.doc); + }, + + exchange_rate: function(frm, cdt, cdn) { + erpnext.journal_entry.set_debit_credit_in_company_currency(frm, cdt, cdn); } }) @@ -322,3 +395,41 @@ frappe.ui.form.on("Journal Entry Account", "accounts_remove", function(frm) { cur_frm.cscript.update_totals(frm.doc); }); +erpnext.journal_entry.set_debit_credit_in_company_currency = function(frm, cdt, cdn) { + erpnext.journal_entry.set_exchange_rate(frm, cdt, cdn); + + var row = locals[cdt][cdn]; + + frappe.model.set_value(cdt, cdn, "debit", + flt(flt(row.debit_in_account_currency)*row.exchange_rate), precision("debit", row)); + frappe.model.set_value(cdt, cdn, "credit", + flt(flt(row.credit_in_account_currency)*row.exchange_rate), precision("credit", row)); +} + +erpnext.journal_entry.set_exchange_rate = function(frm, cdt, cdn) { + var company_currency = frappe.get_doc(":Company", frm.doc.company).default_currency; + var row = locals[cdt][cdn]; + + if(row.account_currency == company_currency || !frm.doc.multi_currency) { + frappe.model.set_value(cdt, cdn, "exchange_rate", 1); + } else if (!row.exchange_rate || row.account_type == "Bank") { + frappe.call({ + method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_exchange_rate", + args: { + account: row.account, + account_currency: row.account_currency, + company: frm.doc.company, + reference_type: cstr(row.reference_type), + reference_name: cstr(row.reference_name), + debit: flt(row.debit_in_account_currency), + credit: flt(row.credit_in_account_currency), + exchange_rate: row.exchange_rate + }, + callback: function(r) { + if(r.message) { + frappe.model.set_value(cdt, cdn, "exchange_rate", r.message); + } + } + }) + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.json b/erpnext/accounts/doctype/journal_entry/journal_entry.json index d29de0a9190..175f4ae1abb 100644 --- a/erpnext/accounts/doctype/journal_entry/journal_entry.json +++ b/erpnext/accounts/doctype/journal_entry/journal_entry.json @@ -1,1078 +1,1100 @@ { - "allow_copy": 0, - "allow_import": 1, - "allow_rename": 0, - "autoname": "naming_series:", - "creation": "2013-03-25 10:53:52", - "custom": 0, - "docstatus": 0, - "doctype": "DocType", + "allow_copy": 0, + "allow_import": 1, + "allow_rename": 0, + "autoname": "naming_series:", + "creation": "2013-03-25 10:53:52", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", "fields": [ { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "entry_type_and_date", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "", - "no_copy": 0, - "options": "icon-flag", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "entry_type_and_date", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "", + "no_copy": 0, + "options": "icon-flag", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "default": "", - "fieldname": "title", - "fieldtype": "Data", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Title", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "default": "", + "fieldname": "title", + "fieldtype": "Data", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Title", + "no_copy": 1, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": "Journal Entry", - "fieldname": "voucher_type", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Entry Type", - "no_copy": 0, - "oldfieldname": "voucher_type", - "oldfieldtype": "Select", - "options": "Journal Entry\nBank Entry\nCash Entry\nCredit Card Entry\nDebit Note\nCredit Note\nContra Entry\nExcise Entry\nWrite Off Entry\nOpening Entry", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "Journal Entry", + "fieldname": "voucher_type", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Entry Type", + "no_copy": 0, + "oldfieldname": "voucher_type", + "oldfieldtype": "Select", + "options": "Journal Entry\nBank Entry\nCash Entry\nCredit Card Entry\nDebit Note\nCredit Note\nContra Entry\nExcise Entry\nWrite Off Entry\nOpening Entry", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "naming_series", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Series", - "no_copy": 1, - "oldfieldname": "naming_series", - "oldfieldtype": "Select", - "options": "JV-", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "naming_series", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Series", + "no_copy": 1, + "oldfieldname": "naming_series", + "oldfieldtype": "Select", + "options": "JV-", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break1", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "oldfieldtype": "Column Break", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break1", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "oldfieldtype": "Column Break", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "posting_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Posting Date", - "no_copy": 1, - "oldfieldname": "posting_date", - "oldfieldtype": "Date", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "posting_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Posting Date", + "no_copy": 1, + "oldfieldname": "posting_date", + "oldfieldtype": "Date", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "2_add_edit_gl_entries", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "icon-table", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "2_add_edit_gl_entries", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "icon-table", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "fieldname": "accounts", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Accounting Entries", - "no_copy": 0, - "oldfieldname": "entries", - "oldfieldtype": "Table", - "options": "Journal Entry Account", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "fieldname": "accounts", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Accounting Entries", + "no_copy": 0, + "oldfieldname": "entries", + "oldfieldtype": "Table", + "options": "Journal Entry Account", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "section_break99", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "section_break99", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "", - "fieldname": "cheque_no", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 1, - "label": "Reference Number", - "no_copy": 1, - "oldfieldname": "cheque_no", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "", + "fieldname": "cheque_no", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 1, + "label": "Reference Number", + "no_copy": 1, + "oldfieldname": "cheque_no", + "oldfieldtype": "Data", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "cheque_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Reference Date", - "no_copy": 1, - "oldfieldname": "cheque_date", - "oldfieldtype": "Date", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "cheque_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Reference Date", + "no_copy": 1, + "oldfieldname": "cheque_date", + "oldfieldtype": "Date", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "user_remark", - "fieldtype": "Small Text", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "User Remark", - "no_copy": 1, - "oldfieldname": "user_remark", - "oldfieldtype": "Small Text", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "user_remark", + "fieldtype": "Small Text", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "User Remark", + "no_copy": 1, + "oldfieldname": "user_remark", + "oldfieldtype": "Small Text", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break99", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break99", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "total_debit", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 1, - "label": "Total Debit", - "no_copy": 1, - "oldfieldname": "total_debit", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "total_debit", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 1, + "label": "Total Debit", + "no_copy": 1, + "oldfieldname": "total_debit", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "total_credit", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Total Credit", - "no_copy": 1, - "oldfieldname": "total_credit", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "total_credit", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Total Credit", + "no_copy": 1, + "oldfieldname": "total_credit", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "difference", - "fieldname": "difference", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Difference (Dr - Cr)", - "no_copy": 1, - "oldfieldname": "difference", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "difference", + "fieldname": "difference", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Difference (Dr - Cr)", + "no_copy": 1, + "oldfieldname": "difference", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "difference", - "fieldname": "get_balance", - "fieldtype": "Button", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Make Difference Entry", - "no_copy": 0, - "oldfieldtype": "Button", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "difference", + "fieldname": "get_balance", + "fieldtype": "Button", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Make Difference Entry", + "no_copy": 0, + "oldfieldtype": "Button", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "total_amount", - "fieldtype": "Currency", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Total Amount", - "no_copy": 1, - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 1, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "multi_currency", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Multi Currency", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "total_amount_in_words", - "fieldtype": "Data", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Total Amount in Words", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 1, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "total_amount", + "fieldtype": "Currency", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Total Amount", + "no_copy": 1, + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 1, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "fieldname": "reference", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Reference", - "no_copy": 0, - "options": "icon-pushpin", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "total_amount_in_words", + "fieldtype": "Data", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Total Amount in Words", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 1, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "clearance_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Clearance Date", - "no_copy": 1, - "oldfieldname": "clearance_date", - "oldfieldtype": "Date", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "fieldname": "reference", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Reference", + "no_copy": 0, + "options": "icon-pushpin", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "", - "fieldname": "remark", - "fieldtype": "Small Text", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Remark", - "no_copy": 1, - "oldfieldname": "remark", - "oldfieldtype": "Small Text", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "clearance_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Clearance Date", + "no_copy": 1, + "oldfieldname": "clearance_date", + "oldfieldtype": "Date", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break98", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "", + "fieldname": "remark", + "fieldtype": "Small Text", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Remark", + "no_copy": 1, + "oldfieldname": "remark", + "oldfieldtype": "Small Text", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "bill_no", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Bill No", - "no_copy": 0, - "oldfieldname": "bill_no", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break98", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "bill_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Bill Date", - "no_copy": 0, - "oldfieldname": "bill_date", - "oldfieldtype": "Date", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "bill_no", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Bill No", + "no_copy": 0, + "oldfieldname": "bill_no", + "oldfieldtype": "Data", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "due_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Due Date", - "no_copy": 0, - "oldfieldname": "due_date", - "oldfieldtype": "Date", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "bill_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Bill Date", + "no_copy": 0, + "oldfieldname": "bill_date", + "oldfieldtype": "Date", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "depends_on": "eval:doc.voucher_type == 'Write Off Entry'", - "fieldname": "write_off", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Write Off", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "due_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Due Date", + "no_copy": 0, + "oldfieldname": "due_date", + "oldfieldtype": "Date", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": "Accounts Receivable", - "depends_on": "eval:doc.voucher_type == 'Write Off Entry'", - "fieldname": "write_off_based_on", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Write Off Based On", - "no_copy": 0, - "options": "Accounts Receivable\nAccounts Payable", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 1, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "depends_on": "eval:doc.voucher_type == 'Write Off Entry'", + "fieldname": "write_off", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Write Off", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.voucher_type == 'Write Off Entry'", - "fieldname": "get_outstanding_invoices", - "fieldtype": "Button", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Get Outstanding Invoices", - "no_copy": 0, - "options": "get_outstanding_invoices", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "Accounts Receivable", + "depends_on": "eval:doc.voucher_type == 'Write Off Entry'", + "fieldname": "write_off_based_on", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Write Off Based On", + "no_copy": 0, + "options": "Accounts Receivable\nAccounts Payable", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 1, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_30", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.voucher_type == 'Write Off Entry'", + "fieldname": "get_outstanding_invoices", + "fieldtype": "Button", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Get Outstanding Invoices", + "no_copy": 0, + "options": "get_outstanding_invoices", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.voucher_type == 'Write Off Entry'", - "fieldname": "write_off_amount", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Write Off Amount", - "no_copy": 0, - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 1, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_30", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "fieldname": "printing_settings", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Printing Settings", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.voucher_type == 'Write Off Entry'", + "fieldname": "write_off_amount", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Write Off Amount", + "no_copy": 0, + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 1, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "pay_to_recd_from", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Pay To / Recd From", - "no_copy": 1, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 1, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "fieldname": "printing_settings", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Printing Settings", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_35", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "pay_to_recd_from", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Pay To / Recd From", + "no_copy": 1, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 1, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "fieldname": "letter_head", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Letter Head", - "no_copy": 0, - "options": "Letter Head", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_35", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "fieldname": "select_print_heading", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Print Heading", - "no_copy": 1, - "oldfieldname": "select_print_heading", - "oldfieldtype": "Link", - "options": "Print Heading", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 1, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "fieldname": "letter_head", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Letter Head", + "no_copy": 0, + "options": "Letter Head", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "fieldname": "addtional_info", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "More Information", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "icon-file-text", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "fieldname": "select_print_heading", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Print Heading", + "no_copy": 1, + "oldfieldname": "select_print_heading", + "oldfieldtype": "Link", + "options": "Print Heading", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 1, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "company", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Company", - "no_copy": 0, - "oldfieldname": "company", - "oldfieldtype": "Link", - "options": "Company", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "fieldname": "addtional_info", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "More Information", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "icon-file-text", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "fiscal_year", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Fiscal Year", - "no_copy": 0, - "oldfieldname": "fiscal_year", - "oldfieldtype": "Select", - "options": "Fiscal Year", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "company", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Company", + "no_copy": 0, + "oldfieldname": "company", + "oldfieldtype": "Link", + "options": "Company", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break3", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "oldfieldtype": "Column Break", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "fiscal_year", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Fiscal Year", + "no_copy": 0, + "oldfieldname": "fiscal_year", + "oldfieldtype": "Select", + "options": "Fiscal Year", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 1, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break3", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "oldfieldtype": "Column Break", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": "No", - "description": "", - "fieldname": "is_opening", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Is Opening", - "no_copy": 0, - "oldfieldname": "is_opening", - "oldfieldtype": "Select", - "options": "No\nYes", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "No", + "description": "", + "fieldname": "is_opening", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Is Opening", + "no_copy": 0, + "oldfieldname": "is_opening", + "oldfieldtype": "Select", + "options": "No\nYes", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:inList([\"Credit Note\", \"Debit Note\"], doc.voucher_type)", - "fieldname": "stock_entry", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Stock Entry", - "no_copy": 0, - "options": "Stock Entry", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:inList([\"Credit Note\", \"Debit Note\"], doc.voucher_type)", + "fieldname": "stock_entry", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Stock Entry", + "no_copy": 0, + "options": "Stock Entry", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "amended_from", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 1, - "in_filter": 0, - "in_list_view": 0, - "label": "Amended From", - "no_copy": 1, - "oldfieldname": "amended_from", - "oldfieldtype": "Link", - "options": "Journal Entry", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 1, + "in_filter": 0, + "in_list_view": 0, + "label": "Amended From", + "no_copy": 1, + "oldfieldname": "amended_from", + "oldfieldtype": "Link", + "options": "Journal Entry", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 } - ], - "hide_heading": 0, - "hide_toolbar": 0, - "icon": "icon-file-text", - "idx": 1, - "in_create": 0, - "in_dialog": 0, - "is_submittable": 1, - "issingle": 0, - "istable": 0, - "modified": "2015-09-07 15:51:26", - "modified_by": "Administrator", - "module": "Accounts", - "name": "Journal Entry", - "owner": "Administrator", + ], + "hide_heading": 0, + "hide_toolbar": 0, + "icon": "icon-file-text", + "idx": 1, + "in_create": 0, + "in_dialog": 0, + "is_submittable": 1, + "issingle": 0, + "istable": 0, + "modified": "2015-09-11 12:21:50.635624", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Journal Entry", + "owner": "Administrator", "permissions": [ { - "amend": 1, - "apply_user_permissions": 0, - "cancel": 1, - "create": 1, - "delete": 1, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Accounts User", - "set_user_permissions": 0, - "share": 1, - "submit": 1, + "amend": 1, + "apply_user_permissions": 0, + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Accounts User", + "set_user_permissions": 0, + "share": 1, + "submit": 1, "write": 1 - }, + }, { - "amend": 1, - "apply_user_permissions": 0, - "cancel": 1, - "create": 1, - "delete": 1, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Accounts Manager", - "set_user_permissions": 0, - "share": 1, - "submit": 1, + "amend": 1, + "apply_user_permissions": 0, + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Accounts Manager", + "set_user_permissions": 0, + "share": 1, + "submit": 1, "write": 1 - }, + }, { - "amend": 0, - "apply_user_permissions": 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": "Auditor", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Auditor", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 } - ], - "read_only": 0, - "read_only_onload": 1, - "search_fields": "voucher_type,posting_date, due_date, cheque_no", - "sort_field": "modified", - "sort_order": "DESC", + ], + "read_only": 0, + "read_only_onload": 1, + "search_fields": "voucher_type,posting_date, due_date, cheque_no", + "sort_field": "modified", + "sort_order": "DESC", "title_field": "title" -} \ No newline at end of file +} diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py index f5f22dccac2..cb12969112c 100644 --- a/erpnext/accounts/doctype/journal_entry/journal_entry.py +++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py @@ -3,11 +3,11 @@ from __future__ import unicode_literals import frappe -from frappe.utils import cstr, flt, fmt_money, formatdate, getdate, date_diff +from frappe.utils import cstr, flt, fmt_money, formatdate from frappe import msgprint, _, scrub -from erpnext.setup.utils import get_company_currency from erpnext.controllers.accounts_controller import AccountsController from erpnext.accounts.utils import get_balance_on +from erpnext.setup.utils import get_company_currency class JournalEntry(AccountsController): @@ -26,6 +26,7 @@ class JournalEntry(AccountsController): self.validate_party() self.validate_cheque_info() self.validate_entries_for_advance() + self.validate_multi_currency() self.validate_debit_and_credit() self.validate_against_jv() self.validate_reference_doc() @@ -35,6 +36,7 @@ class JournalEntry(AccountsController): self.validate_expense_claim() self.validate_credit_debit_note() self.validate_empty_accounts_table() + self.set_account_and_party_balance() self.set_title() def on_submit(self): @@ -144,6 +146,7 @@ class JournalEntry(AccountsController): self.reference_totals = {} self.reference_types = {} + self.reference_parties = {} for d in self.get("accounts"): if not d.reference_type: @@ -151,8 +154,8 @@ class JournalEntry(AccountsController): if not d.reference_name: d.reference_type = None if d.reference_type and d.reference_name and (d.reference_type in field_dict.keys()): - dr_or_cr = "credit" if d.reference_type in ("Sales Order", "Sales Invoice") \ - else "debit" + dr_or_cr = "credit_in_account_currency" \ + if d.reference_type in ("Sales Order", "Sales Invoice") else "debit_in_account_currency" # check debit or credit type Sales / Purchase Order if d.reference_type=="Sales Order" and flt(d.debit) > 0: @@ -166,6 +169,8 @@ class JournalEntry(AccountsController): self.reference_totals[d.reference_name] = 0.0 self.reference_totals[d.reference_name] += flt(d.get(dr_or_cr)) self.reference_types[d.reference_name] = d.reference_type + if d.party_type and d.party: + self.reference_parties[d.reference_name] = [d.party_type, d.party] against_voucher = frappe.db.get_value(d.reference_type, d.reference_name, [scrub(dt) for dt in field_dict.get(d.reference_type)]) @@ -191,23 +196,31 @@ class JournalEntry(AccountsController): """Validate totals, stopped and docstatus for orders""" for reference_name, total in self.reference_totals.iteritems(): reference_type = self.reference_types[reference_name] + party_type, party = self.reference_parties.get(reference_name) if reference_type in ("Sales Order", "Purchase Order"): - voucher_properties = frappe.db.get_value(reference_type, reference_name, - ["docstatus", "per_billed", "status", "advance_paid", "base_grand_total"]) + order = frappe.db.get_value(reference_type, reference_name, + ["docstatus", "per_billed", "status", "advance_paid", + "base_grand_total", "grand_total", "currency"], as_dict=1) - if voucher_properties[0] != 1: + if order.docstatus != 1: frappe.throw(_("{0} {1} is not submitted").format(reference_type, reference_name)) - if flt(voucher_properties[1]) >= 100: + if flt(order.per_billed) >= 100: frappe.throw(_("{0} {1} is fully billed").format(reference_type, reference_name)) - if cstr(voucher_properties[2]) == "Stopped": + if cstr(order.status) == "Stopped": frappe.throw(_("{0} {1} is stopped").format(reference_type, reference_name)) - if flt(voucher_properties[4]) < (flt(voucher_properties[3]) + total): + party_account_currency = frappe.db.get_value(party_type, party, "party_account_currency") + if party_account_currency == self.company_currency: + voucher_total = order.base_grand_total + else: + voucher_total = order.grand_total + + if flt(voucher_total) < (flt(order.advance_paid) + total): frappe.throw(_("Advance paid against {0} {1} cannot be greater \ - than Grand Total {2}").format(reference_type, reference_name, voucher_properties[4])) + than Grand Total {2}").format(reference_type, reference_name, voucher_total)) def validate_invoices(self): """Validate totals and docstatus for invoices""" @@ -215,15 +228,15 @@ class JournalEntry(AccountsController): reference_type = self.reference_types[reference_name] if reference_type in ("Sales Invoice", "Purchase Invoice"): - voucher_properties = frappe.db.get_value(reference_type, reference_name, - ["docstatus", "outstanding_amount"]) + invoice = frappe.db.get_value(reference_type, reference_name, + ["docstatus", "outstanding_amount"], as_dict=1) - if voucher_properties[0] != 1: + if invoice.docstatus != 1: frappe.throw(_("{0} {1} is not submitted").format(reference_type, reference_name)) - if total and flt(voucher_properties[1]) < total: - frappe.throw(_("Payment against {0} {1} cannot be greater \ - than Outstanding Amount {2}").format(reference_type, reference_name, voucher_properties[1])) + if total and flt(invoice.outstanding_amount) < total: + frappe.throw(_("Payment against {0} {1} cannot be greater than Outstanding Amount {2}") + .format(reference_type, reference_name, invoice.outstanding_amount)) def set_against_account(self): accounts_debited, accounts_credited = [], [] @@ -237,13 +250,12 @@ class JournalEntry(AccountsController): def validate_debit_and_credit(self): self.total_debit, self.total_credit, self.difference = 0, 0, 0 - for d in self.get("accounts"): if d.debit and d.credit: frappe.throw(_("You cannot credit and debit same account at the same time")) - self.total_debit = flt(self.total_debit) + flt(d.debit, self.precision("debit", "accounts")) - self.total_credit = flt(self.total_credit) + flt(d.credit, self.precision("credit", "accounts")) + self.total_debit = flt(self.total_debit) + flt(d.debit, d.precision("debit")) + self.total_credit = flt(self.total_credit) + flt(d.credit, d.precision("credit")) self.difference = flt(self.total_debit, self.precision("total_debit")) - \ flt(self.total_credit, self.precision("total_credit")) @@ -252,6 +264,41 @@ class JournalEntry(AccountsController): frappe.throw(_("Total Debit must be equal to Total Credit. The difference is {0}") .format(self.difference)) + def validate_multi_currency(self): + alternate_currency = [] + for d in self.get("accounts"): + account = frappe.db.get_value("Account", d.account, ["account_currency", "account_type"], as_dict=1) + d.account_currency = account.account_currency or self.company_currency + d.account_type = account.account_type + + if d.account_currency!=self.company_currency and d.account_currency not in alternate_currency: + alternate_currency.append(d.account_currency) + + if alternate_currency: + if not self.multi_currency: + frappe.throw(_("Please check Multi Currency option to allow accounts with other currency")) + + if len(alternate_currency) > 1: + frappe.throw(_("Only one alternate currency can be used in a single Journal Entry")) + + self.set_exchange_rate() + + for d in self.get("accounts"): + d.debit = flt(flt(d.debit_in_account_currency)*flt(d.exchange_rate), d.precision("debit")) + d.credit = flt(flt(d.credit_in_account_currency)*flt(d.exchange_rate), d.precision("credit")) + + def set_exchange_rate(self): + for d in self.get("accounts"): + if d.account_currency == self.company_currency: + d.exchange_rate = 1 + elif not d.exchange_rate or d.account_type=="Bank" or \ + (d.reference_type in ("Sales Invoice", "Purchase Invoice") and d.reference_name): + d.exchange_rate = get_exchange_rate(d.account, d.account_currency, self.company, + d.reference_type, d.reference_name, d.debit, d.credit, d.exchange_rate) + + if not d.exchange_rate: + frappe.throw(_("Row {0}: Exchange Rate is mandatory").format(d.idx)) + def create_remarks(self): r = [] if self.cheque_no: @@ -260,15 +307,13 @@ class JournalEntry(AccountsController): else: msgprint(_("Please enter Reference date"), raise_exception=frappe.MandatoryError) - company_currency = get_company_currency(self.company) - for d in self.get('accounts'): if d.reference_type=="Sales Invoice" and d.credit: - r.append(_("{0} against Sales Invoice {1}").format(fmt_money(flt(d.credit), currency = company_currency), \ + r.append(_("{0} against Sales Invoice {1}").format(fmt_money(flt(d.credit), currency = self.company_currency), \ d.reference_name)) if d.reference_type=="Sales Order" and d.credit: - r.append(_("{0} against Sales Order {1}").format(fmt_money(flt(d.credit), currency = company_currency), \ + r.append(_("{0} against Sales Order {1}").format(fmt_money(flt(d.credit), currency = self.company_currency), \ d.reference_name)) if d.reference_type == "Purchase Invoice" and d.debit: @@ -276,11 +321,11 @@ class JournalEntry(AccountsController): from `tabPurchase Invoice` where name=%s""", d.reference_name) if bill_no and bill_no[0][0] and bill_no[0][0].lower().strip() \ not in ['na', 'not applicable', 'none']: - r.append(_('{0} against Bill {1} dated {2}').format(fmt_money(flt(d.debit), currency=company_currency), bill_no[0][0], + r.append(_('{0} against Bill {1} dated {2}').format(fmt_money(flt(d.debit), currency=self.company_currency), bill_no[0][0], bill_no[0][1] and formatdate(bill_no[0][1].strftime('%Y-%m-%d')))) if d.reference_type == "Purchase Order" and d.debit: - r.append(_("{0} against Purchase Order {1}").format(fmt_money(flt(d.credit), currency = company_currency), \ + r.append(_("{0} against Purchase Order {1}").format(fmt_money(flt(d.credit), currency = self.company_currency), \ d.reference_name)) if self.user_remark: @@ -301,10 +346,9 @@ class JournalEntry(AccountsController): self.set_total_amount(d.debit or d.credit) def set_total_amount(self, amt): - company_currency = get_company_currency(self.company) self.total_amount = amt from frappe.utils import money_in_words - self.total_amount_in_words = money_in_words(amt, company_currency) + self.total_amount_in_words = money_in_words(amt, self.company_currency) def make_gl_entries(self, cancel=0, adv_adj=0): from erpnext.accounts.general_ledger import make_gl_entries @@ -318,8 +362,11 @@ class JournalEntry(AccountsController): "party_type": d.party_type, "party": d.party, "against": d.against_account, - "debit": flt(d.debit, self.precision("debit", "accounts")), - "credit": flt(d.credit, self.precision("credit", "accounts")), + "debit": flt(d.debit, d.precision("debit")), + "credit": flt(d.credit, d.precision("credit")), + "account_currency": d.account_currency, + "debit_in_account_currency": flt(d.debit_in_account_currency, d.precision("debit_in_account_currency")), + "credit_in_account_currency": flt(d.credit_in_account_currency, d.precision("credit_in_account_currency")), "against_voucher_type": d.reference_type, "against_voucher": d.reference_name, "remarks": self.remark, @@ -338,21 +385,21 @@ class JournalEntry(AccountsController): diff = flt(self.difference, self.precision("difference")) # If any row without amount, set the diff on that row - for d in self.get('accounts'): - if not d.credit and not d.debit and diff != 0: - if diff>0: - d.credit = diff - elif diff<0: - d.debit = diff - flag = 1 + if diff: + for d in self.get('accounts'): + if not d.credit_in_account_currency and not d.debit_in_account_currency and diff != 0: + blank_row = d - # Set the diff in a new row - if flag == 0 and diff != 0: - jd = self.append('accounts', {}) + if not blank_row: + blank_row = self.append('accounts', {}) + + blank_row.exchange_rate = 1 if diff>0: - jd.credit = abs(diff) + blank_row.credit_in_account_currency = diff + blank_row.credit = diff elif diff<0: - jd.debit = abs(diff) + blank_row.debit_in_account_currency = abs(diff) + blank_row.debit = abs(diff) self.validate_debit_and_credit() @@ -427,6 +474,11 @@ class JournalEntry(AccountsController): if not self.get('accounts'): frappe.throw("Accounts table cannot be blank.") + def set_account_and_party_balance(self): + for d in self.get("accounts"): + d.account_balance = get_balance_on(account=d.account, date=self.posting_date) + d.party_balance = get_balance_on(party_type=d.party_type, party=d.party, date=self.posting_date) + @frappe.whitelist() def get_default_bank_cash_account(company, voucher_type, mode_of_payment=None): from erpnext.accounts.doctype.sales_invoice.sales_invoice import get_bank_cash_account @@ -446,9 +498,12 @@ def get_default_bank_cash_account(company, voucher_type, mode_of_payment=None): account = frappe.db.get_value("Account", {"company": company, "account_type": "Cash", "is_group": 0}) if account: + account_details = frappe.db.get_value("Account", account, ["account_currency", "account_type"], as_dict=1) return { "account": account, - "balance": get_balance_on(account) + "balance": get_balance_on(account), + "account_currency": account_details.account_currency, + "account_type": account_details.account_type } @frappe.whitelist() @@ -456,21 +511,38 @@ def get_payment_entry_from_sales_invoice(sales_invoice): """Returns new Journal Entry document as dict for given Sales Invoice""" from erpnext.accounts.utils import get_balance_on si = frappe.get_doc("Sales Invoice", sales_invoice) + + # exchange rate + exchange_rate = get_exchange_rate(si.debit_to, si.party_account_currency, si.company, + si.doctype, si.name) + jv = get_payment_entry(si) jv.remark = 'Payment received against Sales Invoice {0}. {1}'.format(si.name, si.remarks) # credit customer - jv.get("accounts")[0].account = si.debit_to - jv.get("accounts")[0].party_type = "Customer" - jv.get("accounts")[0].party = si.customer - jv.get("accounts")[0].balance = get_balance_on(si.debit_to) - jv.get("accounts")[0].party_balance = get_balance_on(party=si.customer, party_type="Customer") - jv.get("accounts")[0].credit = si.outstanding_amount - jv.get("accounts")[0].reference_type = si.doctype - jv.get("accounts")[0].reference_name = si.name + row1 = jv.get("accounts")[0] + row1.account = si.debit_to + row1.account_currency = si.party_account_currency + row1.party_type = "Customer" + row1.party = si.customer + row1.balance = get_balance_on(si.debit_to) + row1.party_balance = get_balance_on(party=si.customer, party_type="Customer") + row1.credit_in_account_currency = si.outstanding_amount + row1.reference_type = si.doctype + row1.reference_name = si.name + row1.exchange_rate = exchange_rate + row1.account_type = "Receivable" if si.customer else "" # debit bank - jv.get("accounts")[1].debit = si.outstanding_amount + row2 = jv.get("accounts")[1] + if row2.account_currency == si.party_account_currency: + row2.debit_in_account_currency = si.outstanding_amount + else: + row2.debit_in_account_currency = si.outstanding_amount * exchange_rate + + # set multi currency check + if row1.account_currency != si.company_currency or row2.account_currency != si.company_currency: + jv.multi_currency = 1 return jv.as_dict() @@ -478,21 +550,38 @@ def get_payment_entry_from_sales_invoice(sales_invoice): def get_payment_entry_from_purchase_invoice(purchase_invoice): """Returns new Journal Entry document as dict for given Purchase Invoice""" pi = frappe.get_doc("Purchase Invoice", purchase_invoice) + + exchange_rate = get_exchange_rate(pi.debit_to, pi.party_account_currency, pi.company, + pi.doctype, pi.name) + jv = get_payment_entry(pi) jv.remark = 'Payment against Purchase Invoice {0}. {1}'.format(pi.name, pi.remarks) + jv.exchange_rate = exchange_rate # credit supplier - jv.get("accounts")[0].account = pi.credit_to - jv.get("accounts")[0].party_type = "Supplier" - jv.get("accounts")[0].party = pi.supplier - jv.get("accounts")[0].balance = get_balance_on(pi.credit_to) - jv.get("accounts")[0].party_balance = get_balance_on(party=pi.supplier, party_type="Supplier") - jv.get("accounts")[0].debit = pi.outstanding_amount - jv.get("accounts")[0].reference_type = pi.doctype - jv.get("accounts")[0].reference_name = pi.name + row1 = jv.get("accounts")[0] + row1.account = pi.credit_to + row1.account_currency = pi.party_account_currency + row1.party_type = "Supplier" + row1.party = pi.supplier + row1.balance = get_balance_on(pi.credit_to) + row1.party_balance = get_balance_on(party=pi.supplier, party_type="Supplier") + row1.debit_in_account_currency = pi.outstanding_amount + row1.reference_type = pi.doctype + row1.reference_name = pi.name + row1.exchange_rate = exchange_rate + row1.account_type = "Payable" if pi.supplier else "" # credit bank - jv.get("accounts")[1].credit = pi.outstanding_amount + row2 = jv.get("accounts")[1] + if row2.account_currency == pi.party_account_currency: + row2.credit_in_account_currency = pi.outstanding_amount + else: + row2.credit_in_account_currency = pi.outstanding_amount * exchange_rate + + # set multi currency check + if row1.account_currency != pi.company_currency or row2.account_currency != pi.company_currency: + jv.multi_currency = 1 return jv.as_dict() @@ -501,6 +590,7 @@ def get_payment_entry_from_sales_order(sales_order): """Returns new Journal Entry document as dict for given Sales Order""" from erpnext.accounts.utils import get_balance_on from erpnext.accounts.party import get_party_account + so = frappe.get_doc("Sales Order", sales_order) if flt(so.per_billed, 2) != 0.0: @@ -508,23 +598,42 @@ def get_payment_entry_from_sales_order(sales_order): jv = get_payment_entry(so) jv.remark = 'Advance payment received against Sales Order {0}.'.format(so.name) - party_account = get_party_account(so.company, so.customer, "Customer") - amount = flt(so.base_grand_total) - flt(so.advance_paid) + party_account = get_party_account(so.company, so.customer, "Customer") + party_account_currency = frappe.db.get_value("Account", party_account, "account_currency") + + exchange_rate = get_exchange_rate(party_account, party_account_currency, so.company) + + if party_account_currency == so.company_currency: + amount = flt(so.base_grand_total) - flt(so.advance_paid) + else: + amount = flt(so.grand_total) - flt(so.advance_paid) # credit customer - jv.get("accounts")[0].account = party_account - jv.get("accounts")[0].party_type = "Customer" - jv.get("accounts")[0].party = so.customer - jv.get("accounts")[0].balance = get_balance_on(party_account) - jv.get("accounts")[0].party_balance = get_balance_on(party=so.customer, party_type="Customer") - jv.get("accounts")[0].credit = amount - jv.get("accounts")[0].reference_type = so.doctype - jv.get("accounts")[0].reference_name = so.name - jv.get("accounts")[0].is_advance = "Yes" + row1 = jv.get("accounts")[0] + row1.account = party_account + row1.account_currency = party_account_currency + row1.party_type = "Customer" + row1.party = so.customer + row1.balance = get_balance_on(party_account) + row1.party_balance = get_balance_on(party=so.customer, party_type="Customer") + row1.credit_in_account_currency = amount + row1.reference_type = so.doctype + row1.reference_name = so.name + row1.is_advance = "Yes" + row1.exchange_rate = exchange_rate + row1.account_type = "Receivable" # debit bank - jv.get("accounts")[1].debit = amount + row2 = jv.get("accounts")[1] + if row2.account_currency == party_account_currency: + row2.debit_in_account_currency = amount + else: + row2.debit_in_account_currency = amount * exchange_rate + + # set multi currency check + if row1.account_currency != so.company_currency or row2.account_currency != so.company_currency: + jv.multi_currency = 1 return jv.as_dict() @@ -540,23 +649,41 @@ def get_payment_entry_from_purchase_order(purchase_order): jv = get_payment_entry(po) jv.remark = 'Advance payment made against Purchase Order {0}.'.format(po.name) - party_account = get_party_account(po.company, po.supplier, "Supplier") - amount = flt(po.base_grand_total) - flt(po.advance_paid) + party_account = get_party_account(po.company, po.supplier, "Supplier") + party_account_currency = frappe.db.get_value("Account", party_account, "account_currency") + + exchange_rate = get_exchange_rate(party_account, party_account_currency, po.company) + + if party_account_currency == po.company_currency: + amount = flt(po.base_grand_total) - flt(po.advance_paid) + else: + amount = flt(po.grand_total) - flt(po.advance_paid) # credit customer - jv.get("accounts")[0].account = party_account - jv.get("accounts")[0].party_type = "Supplier" - jv.get("accounts")[0].party = po.supplier - jv.get("accounts")[0].balance = get_balance_on(party_account) - jv.get("accounts")[0].party_balance = get_balance_on(party=po.supplier, party_type="Supplier") - jv.get("accounts")[0].debit = amount - jv.get("accounts")[0].reference_type = po.doctype - jv.get("accounts")[0].reference_name = po.name - jv.get("accounts")[0].is_advance = "Yes" + row1 = jv.get("accounts")[0] + row1.account = party_account + row1.party_type = "Supplier" + row1.party = po.supplier + row1.balance = get_balance_on(party_account) + row1.party_balance = get_balance_on(party=po.supplier, party_type="Supplier") + row1.debit_in_account_currency = amount + row1.reference_type = po.doctype + row1.reference_name = po.name + row1.is_advance = "Yes" + row1.exchange_rate = exchange_rate + row1.account_type = "Payable" # debit bank - jv.get("accounts")[1].credit = amount + row2 = jv.get("accounts")[1] + if row2.account_currency == party_account_currency: + row2.credit_in_account_currency = amount + else: + row2.credit_in_account_currency = amount * exchange_rate + + # set multi currency check + if row1.account_currency != po.company_currency or row2.account_currency != po.company_currency: + jv.multi_currency = 1 return jv.as_dict() @@ -574,6 +701,10 @@ def get_payment_entry(doc): if bank_account: d2.account = bank_account["account"] d2.balance = bank_account["balance"] + d2.account_currency = bank_account["account_currency"] + d2.account_type = bank_account["account_type"] + d2.exchange_rate = get_exchange_rate(bank_account["account"], + bank_account["account_currency"], doc.company) return jv @@ -599,27 +730,37 @@ def get_outstanding(args): if not frappe.has_permission("Account"): frappe.msgprint(_("No Permission"), raise_exception=1) args = eval(args) + company_currency = get_company_currency(args.get("company")) + if args.get("doctype") == "Journal Entry": condition = " and party=%(party)s" if args.get("party") else "" against_jv_amount = frappe.db.sql(""" - select sum(ifnull(debit, 0)) - sum(ifnull(credit, 0)) + select sum(ifnull(debit_in_account_currency, 0)) - sum(ifnull(credit_in_account_currency, 0)) from `tabJournal Entry Account` where parent=%(docname)s and account=%(account)s {0} and ifnull(reference_type, '')=''""".format(condition), args) against_jv_amount = flt(against_jv_amount[0][0]) if against_jv_amount else 0 + amount_field = "credit_in_account_currency" if against_jv_amount > 0 else "debit_in_account_currency" return { - ("credit" if against_jv_amount > 0 else "debit"): abs(against_jv_amount) + amount_field: abs(against_jv_amount) } - elif args.get("doctype") == "Sales Invoice": - outstanding_amount = flt(frappe.db.get_value("Sales Invoice", args["docname"], "outstanding_amount")) + elif args.get("doctype") in ("Sales Invoice", "Purchase Invoice"): + invoice = frappe.db.get_value(args["doctype"], args["docname"], + ["outstanding_amount", "conversion_rate"], as_dict=1) + + exchange_rate = invoice.conversion_rate if (args.get("account_currency") != company_currency) else 1 + + if args["doctype"] == "Sales Invoice": + amount_field = "credit_in_account_currency" \ + if flt(invoice.outstanding_amount) > 0 else "debit_in_account_currency" + else: + amount_field = "debit_in_account_currency" \ + if flt(invoice.outstanding_amount) > 0 else "credit_in_account_currency" + return { - ("credit" if outstanding_amount > 0 else "debit"): abs(outstanding_amount) - } - elif args.get("doctype") == "Purchase Invoice": - outstanding_amount = flt(frappe.db.get_value("Purchase Invoice", args["docname"], "outstanding_amount")) - return { - ("debit" if outstanding_amount > 0 else "credit"): abs(outstanding_amount) + amount_field: abs(flt(invoice.outstanding_amount)), + "exchange_rate": exchange_rate } @frappe.whitelist() @@ -640,14 +781,58 @@ def get_party_account_and_balance(company, party_type, party): } @frappe.whitelist() -def get_account_balance_and_party_type(account, date): +def get_account_balance_and_party_type(account, date, company, debit=None, credit=None, exchange_rate=None): """Returns dict of account balance and party type to be set in Journal Entry on selection of account.""" if not frappe.has_permission("Account"): frappe.msgprint(_("No Permission"), raise_exception=1) - account_type = frappe.db.get_value("Account", account, "account_type") - return { - "balance": get_balance_on(account, date), - "party_type": {"Receivable":"Customer", "Payable":"Supplier"}.get(account_type, "") - } + company_currency = get_company_currency(company) + account_details = frappe.db.get_value("Account", account, ["account_type", "account_currency"], as_dict=1) + if account_details.account_type == "Receivable": + party_type = "Customer" + elif account_details.account_type == "Payable": + party_type = "Supplier" + else: + party_type = "" + + grid_values = { + "balance": get_balance_on(account, date), + "party_type": party_type, + "account_type": account_details.account_type, + "account_currency": account_details.account_currency or company_currency, + "exchange_rate": get_exchange_rate(account, account_details.account_currency, + company, debit=debit, credit=credit, exchange_rate=exchange_rate) + } + return grid_values + +@frappe.whitelist() +def get_exchange_rate(account, account_currency, company, + reference_type=None, reference_name=None, debit=None, credit=None, exchange_rate=None): + from erpnext.setup.utils import get_exchange_rate + company_currency = get_company_currency(company) + account_details = frappe.db.get_value("Account", account, ["account_type", "root_type"], as_dict=1) + + if account_currency != company_currency: + if reference_type in ("Sales Invoice", "Purchase Invoice") and reference_name: + exchange_rate = frappe.db.get_value(reference_type, reference_name, "conversion_rate") + elif account_details.account_type == "Bank" and \ + ((account_details.root_type == "Asset" and flt(credit) > 0) or + (account_details.root_type == "Liability" and debit)): + exchange_rate = get_average_exchange_rate(account) + + if not exchange_rate: + exchange_rate = get_exchange_rate(account_currency, company_currency) + else: + exchange_rate = 1 + + return exchange_rate + +def get_average_exchange_rate(account): + exchange_rate = 0 + bank_balance_in_account_currency = get_balance_on(account) + if bank_balance_in_account_currency: + bank_balance_in_company_currency = get_balance_on(account, in_account_currency=False) + exchange_rate = bank_balance_in_company_currency / bank_balance_in_account_currency + + return exchange_rate diff --git a/erpnext/accounts/doctype/journal_entry/test_journal_entry.py b/erpnext/accounts/doctype/journal_entry/test_journal_entry.py index 8995e34220f..753e0126c9b 100644 --- a/erpnext/accounts/doctype/journal_entry/test_journal_entry.py +++ b/erpnext/accounts/doctype/journal_entry/test_journal_entry.py @@ -101,7 +101,7 @@ class TestJournalEntry(unittest.TestCase): self.set_total_expense_zero("2013-02-28") jv = make_journal_entry("_Test Account Cost for Goods Sold - _TC", - "_Test Account Bank Account - _TC", 40000, "_Test Cost Center - _TC", submit=True) + "_Test Bank - _TC", 40000, "_Test Cost Center - _TC", submit=True) self.assertTrue(frappe.db.get_value("GL Entry", {"voucher_type": "Journal Entry", "voucher_no": jv.name})) @@ -112,7 +112,7 @@ class TestJournalEntry(unittest.TestCase): self.set_total_expense_zero("2013-02-28") jv = make_journal_entry("_Test Account Cost for Goods Sold - _TC", - "_Test Account Bank Account - _TC", 40000, "_Test Cost Center - _TC") + "_Test Bank - _TC", 40000, "_Test Cost Center - _TC") self.assertRaises(BudgetError, jv.submit) @@ -126,7 +126,7 @@ class TestJournalEntry(unittest.TestCase): self.set_total_expense_zero("2013-02-28") jv = make_journal_entry("_Test Account Cost for Goods Sold - _TC", - "_Test Account Bank Account - _TC", 150000, "_Test Cost Center - _TC") + "_Test Bank - _TC", 150000, "_Test Cost Center - _TC") self.assertRaises(BudgetError, jv.submit) @@ -136,13 +136,13 @@ class TestJournalEntry(unittest.TestCase): self.set_total_expense_zero("2013-02-28") jv1 = make_journal_entry("_Test Account Cost for Goods Sold - _TC", - "_Test Account Bank Account - _TC", 20000, "_Test Cost Center - _TC", submit=True) + "_Test Bank - _TC", 20000, "_Test Cost Center - _TC", submit=True) self.assertTrue(frappe.db.get_value("GL Entry", {"voucher_type": "Journal Entry", "voucher_no": jv1.name})) jv2 = make_journal_entry("_Test Account Cost for Goods Sold - _TC", - "_Test Account Bank Account - _TC", 20000, "_Test Cost Center - _TC", submit=True) + "_Test Bank - _TC", 20000, "_Test Cost Center - _TC", submit=True) self.assertTrue(frappe.db.get_value("GL Entry", {"voucher_type": "Journal Entry", "voucher_no": jv2.name})) @@ -165,32 +165,80 @@ class TestJournalEntry(unittest.TestCase): def set_total_expense_zero(self, posting_date): existing_expense = self.get_actual_expense(posting_date) make_journal_entry("_Test Account Cost for Goods Sold - _TC", - "_Test Account Bank Account - _TC", -existing_expense, "_Test Cost Center - _TC", submit=True) + "_Test Bank - _TC", -existing_expense, "_Test Cost Center - _TC", submit=True) + + def test_multi_currency(self): + jv = make_journal_entry("_Test Bank USD - _TC", + "_Test Bank - _TC", 100, exchange_rate=50, save=False) + + jv.get("accounts")[1].credit_in_account_currency = 5000 + jv.submit() + + gl_entries = frappe.db.sql("""select account, account_currency, debit, credit, + debit_in_account_currency, credit_in_account_currency + from `tabGL Entry` where voucher_type='Journal Entry' and voucher_no=%s + order by account asc""", jv.name, as_dict=1) -def make_journal_entry(account1, account2, amount, cost_center=None, submit=False): + self.assertTrue(gl_entries) + + expected_values = { + "_Test Bank USD - _TC": { + "account_currency": "USD", + "debit": 5000, + "debit_in_account_currency": 100, + "credit": 0, + "credit_in_account_currency": 0 + }, + "_Test Bank - _TC": { + "account_currency": "INR", + "debit": 0, + "debit_in_account_currency": 0, + "credit": 5000, + "credit_in_account_currency": 5000 + } + } + + for field in ("account_currency", "debit", "debit_in_account_currency", "credit", "credit_in_account_currency"): + for i, gle in enumerate(gl_entries): + self.assertEquals(expected_values[gle.account][field], gle[field]) + + + + # cancel + jv.cancel() + + gle = frappe.db.sql("""select name from `tabGL Entry` + where voucher_type='Sales Invoice' and voucher_no=%s""", jv.name) + + self.assertFalse(gle) + +def make_journal_entry(account1, account2, amount, cost_center=None, exchange_rate=1, save=True, submit=False): jv = frappe.new_doc("Journal Entry") jv.posting_date = "2013-02-14" jv.company = "_Test Company" jv.fiscal_year = "_Test Fiscal Year 2013" jv.user_remark = "test" - + jv.multi_currency = 1 jv.set("accounts", [ { "account": account1, "cost_center": cost_center, - "debit": amount if amount > 0 else 0, - "credit": abs(amount) if amount < 0 else 0, + "debit_in_account_currency": amount if amount > 0 else 0, + "credit_in_account_currency": abs(amount) if amount < 0 else 0, + "exchange_rate": exchange_rate }, { "account": account2, "cost_center": cost_center, - "credit": amount if amount > 0 else 0, - "debit": abs(amount) if amount < 0 else 0, + "credit_in_account_currency": amount if amount > 0 else 0, + "debit_in_account_currency": abs(amount) if amount < 0 else 0, + exchange_rate: exchange_rate } ]) - jv.insert() + if save or submit: + jv.insert() - if submit: - jv.submit() + if submit: + jv.submit() return jv diff --git a/erpnext/accounts/doctype/journal_entry/test_records.json b/erpnext/accounts/doctype/journal_entry/test_records.json index f6608638e09..5e25c3cb4a5 100644 --- a/erpnext/accounts/doctype/journal_entry/test_records.json +++ b/erpnext/accounts/doctype/journal_entry/test_records.json @@ -9,15 +9,15 @@ "account": "_Test Receivable - _TC", "party_type": "Customer", "party": "_Test Customer", - "credit": 400.0, - "debit": 0.0, + "credit_in_account_currency": 400.0, + "debit_in_account_currency": 0.0, "doctype": "Journal Entry Account", "parentfield": "accounts" }, { - "account": "_Test Account Bank Account - _TC", - "credit": 0.0, - "debit": 400.0, + "account": "_Test Bank - _TC", + "credit_in_account_currency": 0.0, + "debit_in_account_currency": 400.0, "doctype": "Journal Entry Account", "parentfield": "accounts" } @@ -40,15 +40,15 @@ "account": "_Test Payable - _TC", "party_type": "Supplier", "party": "_Test Supplier", - "credit": 0.0, - "debit": 400.0, + "credit_in_account_currency": 0.0, + "debit_in_account_currency": 400.0, "doctype": "Journal Entry Account", "parentfield": "accounts" }, { - "account": "_Test Account Bank Account - _TC", - "credit": 400.0, - "debit": 0.0, + "account": "_Test Bank - _TC", + "credit_in_account_currency": 400.0, + "debit_in_account_currency": 0.0, "doctype": "Journal Entry Account", "parentfield": "accounts" } @@ -71,16 +71,16 @@ "account": "_Test Receivable - _TC", "party_type": "Customer", "party": "_Test Customer", - "credit": 0.0, - "debit": 400.0, + "credit_in_account_currency": 0.0, + "debit_in_account_currency": 400.0, "doctype": "Journal Entry Account", "parentfield": "accounts" }, { "account": "Sales - _TC", "cost_center": "_Test Cost Center - _TC", - "credit": 400.0, - "debit": 0.0, + "credit_in_account_currency": 400.0, + "debit_in_account_currency": 0.0, "doctype": "Journal Entry Account", "parentfield": "accounts" } diff --git a/erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json b/erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json index f63722d13cf..51e1342cab7 100644 --- a/erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json +++ b/erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json @@ -1,416 +1,574 @@ { - "allow_copy": 0, - "allow_import": 0, - "allow_rename": 0, - "autoname": "hash", - "creation": "2013-02-22 01:27:39", - "custom": 0, - "docstatus": 0, - "doctype": "DocType", + "allow_copy": 0, + "allow_import": 0, + "allow_rename": 0, + "autoname": "hash", + "creation": "2013-02-22 01:27:39", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", "fields": [ { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "account", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 1, - "label": "Account", - "no_copy": 0, - "oldfieldname": "account", - "oldfieldtype": "Link", - "options": "Account", - "permlevel": 0, - "print_hide": 0, - "print_width": "250px", - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 1, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "account", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 1, + "label": "Account", + "no_copy": 0, + "oldfieldname": "account", + "oldfieldtype": "Link", + "options": "Account", + "permlevel": 0, + "print_hide": 0, + "print_width": "250px", + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 1, + "set_only_once": 0, + "unique": 0, "width": "250px" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "balance", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Account Balance", - "no_copy": 1, - "oldfieldname": "balance", - "oldfieldtype": "Data", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "account_type", + "fieldtype": "Data", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Account Type", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": ":Company", - "description": "If Income or Expense", - "fieldname": "cost_center", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Cost Center", - "no_copy": 0, - "oldfieldname": "cost_center", - "oldfieldtype": "Link", - "options": "Cost Center", - "permlevel": 0, - "print_hide": 1, - "print_width": "180px", - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "balance", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Account Balance", + "no_copy": 1, + "oldfieldname": "balance", + "oldfieldtype": "Data", + "options": "account_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": ":Company", + "description": "If Income or Expense", + "fieldname": "cost_center", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Cost Center", + "no_copy": 0, + "oldfieldname": "cost_center", + "oldfieldtype": "Link", + "options": "Cost Center", + "permlevel": 0, + "print_hide": 1, + "print_width": "180px", + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "180px" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "col_break1", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "col_break1", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "party_type", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Party Type", - "no_copy": 0, - "options": "DocType", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "party_type", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Party Type", + "no_copy": 0, + "options": "DocType", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "party", - "fieldtype": "Dynamic Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Party", - "no_copy": 0, - "options": "party_type", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "party", + "fieldtype": "Dynamic Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 1, + "label": "Party", + "no_copy": 0, + "options": "party_type", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "party_balance", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Party Balance", - "no_copy": 0, - "options": "Company:company:default_currency", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "party_balance", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Party Balance", + "no_copy": 0, + "options": "account_currency", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "sec_break1", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Amount", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": "", + "depends_on": "", + "fieldname": "currency_section", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Currency", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "debit", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Debit", - "no_copy": 0, - "oldfieldname": "debit", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "account_currency", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Account Currency", + "no_copy": 1, + "options": "Currency", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "col_break2", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_10", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "credit", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Credit", - "no_copy": 0, - "oldfieldname": "credit", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "exchange_rate", + "fieldtype": "Float", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Exchange Rate", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "reference", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Reference", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "sec_break1", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Amount", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "reference_type", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Reference Type", - "no_copy": 0, - "options": "\nSales Invoice\nPurchase Invoice\nJournal Entry\nSales Order\nPurchase Order\nExpense Claim", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "debit_in_account_currency", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 1, + "label": "Debit in Account Currency", + "no_copy": 0, + "options": "account_currency", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "reference_name", - "fieldtype": "Dynamic Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Reference Name", - "no_copy": 0, - "options": "reference_type", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "debit", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Debit in Company Currency", + "no_copy": 1, + "oldfieldname": "debit", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "col_break3", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "col_break2", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "is_advance", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Is Advance", - "no_copy": 1, - "oldfieldname": "is_advance", - "oldfieldtype": "Select", - "options": "No\nYes", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "credit_in_account_currency", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 1, + "label": "Credit in Account Currency", + "no_copy": 0, + "options": "account_currency", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "against_account", - "fieldtype": "Text", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Against Account", - "no_copy": 1, - "oldfieldname": "against_account", - "oldfieldtype": "Text", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "credit", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Credit in Company Currency", + "no_copy": 1, + "oldfieldname": "credit", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "reference", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Reference", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "reference_type", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Reference Type", + "no_copy": 0, + "options": "\nSales Invoice\nPurchase Invoice\nJournal Entry\nSales Order\nPurchase Order\nExpense Claim", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "reference_name", + "fieldtype": "Dynamic Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 1, + "label": "Reference Name", + "no_copy": 0, + "options": "reference_type", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "col_break3", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "is_advance", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Is Advance", + "no_copy": 1, + "oldfieldname": "is_advance", + "oldfieldtype": "Select", + "options": "No\nYes", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "against_account", + "fieldtype": "Text", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Against Account", + "no_copy": 1, + "oldfieldname": "against_account", + "oldfieldtype": "Text", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 } - ], - "hide_heading": 0, - "hide_toolbar": 0, - "idx": 1, - "in_create": 0, - "in_dialog": 0, - "is_submittable": 0, - "issingle": 0, - "istable": 1, - "modified": "2015-08-17 02:11:33.991361", - "modified_by": "Administrator", - "module": "Accounts", - "name": "Journal Entry Account", - "owner": "Administrator", - "permissions": [], - "read_only": 0, + ], + "hide_heading": 0, + "hide_toolbar": 0, + "idx": 1, + "in_create": 0, + "in_dialog": 0, + "is_submittable": 0, + "issingle": 0, + "istable": 1, + "modified": "2015-09-11 12:55:59.270539", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Journal Entry Account", + "owner": "Administrator", + "permissions": [], + "read_only": 0, "read_only_onload": 0 -} \ No newline at end of file +} diff --git a/erpnext/accounts/doctype/mode_of_payment/mode_of_payment.json b/erpnext/accounts/doctype/mode_of_payment/mode_of_payment.json index 1600205bb8a..706b226686d 100644 --- a/erpnext/accounts/doctype/mode_of_payment/mode_of_payment.json +++ b/erpnext/accounts/doctype/mode_of_payment/mode_of_payment.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -65,7 +65,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:58.003800", "modified_by": "Administrator", "module": "Accounts", "name": "Mode of Payment", diff --git a/erpnext/accounts/doctype/mode_of_payment/test_mode_of_payment.py b/erpnext/accounts/doctype/mode_of_payment/test_mode_of_payment.py new file mode 100644 index 00000000000..ad6cd4795f3 --- /dev/null +++ b/erpnext/accounts/doctype/mode_of_payment/test_mode_of_payment.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals + +import frappe +import unittest + +# test_records = frappe.get_test_records('Mode of Payment') + +class TestModeofPayment(unittest.TestCase): + pass diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py index b283c8fcb67..09bd7d2cc88 100644 --- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py +++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py @@ -79,6 +79,7 @@ class PaymentReconciliation(Document): `tabGL Entry` where party_type = %(party_type)s and party = %(party)s + and voucher_type != "Journal Entry" and account = %(account)s and {dr_or_cr} > 0 {cond} group by voucher_type, voucher_no """.format(**{ diff --git a/erpnext/accounts/doctype/payment_tool/payment_tool.js b/erpnext/accounts/doctype/payment_tool/payment_tool.js index 6eefdb936c3..0b4fb2dadeb 100644 --- a/erpnext/accounts/doctype/payment_tool/payment_tool.js +++ b/erpnext/accounts/doctype/payment_tool/payment_tool.js @@ -25,8 +25,14 @@ frappe.ui.form.on("Payment Tool", "onload", function(frm) { }); frm.set_query("against_voucher_type", "vouchers", function() { + if (frm.doc.party_type=="Customer") { + var doctypes = ["Sales Order", "Sales Invoice", "Journal Entry"]; + } else { + var doctypes = ["Purchase Order", "Purchase Invoice", "Journal Entry"]; + } + return { - filters: {"name": ["in", ["Sales Invoice", "Purchase Invoice", "Journal Entry", "Sales Order", "Purchase Order"]]} + filters: { "name": ["in", doctypes] } }; }); }); @@ -55,6 +61,25 @@ frappe.ui.form.on("Payment Tool", "party", function(frm) { } }) +frappe.ui.form.on("Payment Tool", "party_account", function(frm) { + if(frm.doc.party_account) { + frm.call({ + method: "frappe.client.get_value", + args: { + doctype: "Account", + fieldname: "account_currency", + filters: { name: frm.doc.party_account }, + }, + callback: function(r, rt) { + if(r.message) { + frm.set_value("party_account_currency", r.message.account_currency); + erpnext.payment_tool.check_mandatory_to_set_button(frm); + } + } + }); + } +}) + frappe.ui.form.on("Payment Tool", "company", function(frm) { erpnext.payment_tool.check_mandatory_to_set_button(frm); }); @@ -63,10 +88,6 @@ frappe.ui.form.on("Payment Tool", "received_or_paid", function(frm) { erpnext.payment_tool.check_mandatory_to_set_button(frm); }); -frappe.ui.form.on("Payment Tool", "party", function(frm) { - erpnext.payment_tool.check_mandatory_to_set_button(frm); -}); - // Fetch bank/cash account based on payment mode frappe.ui.form.on("Payment Tool", "payment_mode", function(frm) { return frappe.call({ @@ -75,7 +96,7 @@ frappe.ui.form.on("Payment Tool", "payment_mode", function(frm) { "mode_of_payment": frm.doc.payment_mode, "company": frm.doc.company }, - callback: function(r, rt) { + callback: function(r, rt) { if(r.message) { cur_frm.set_value("payment_account", r.message['account']); } @@ -120,6 +141,7 @@ frappe.ui.form.on("Payment Tool", "get_outstanding_vouchers", function(frm) { c.against_voucher_no = d.voucher_no; c.total_amount = d.invoice_amount; c.outstanding_amount = d.outstanding_amount; + c.payment_amount = d.outstanding_amount; }); } refresh_field("vouchers"); @@ -130,41 +152,63 @@ frappe.ui.form.on("Payment Tool", "get_outstanding_vouchers", function(frm) { }); // validate against_voucher_type -frappe.ui.form.on("Payment Tool Detail", "against_voucher_type", function(frm) { - erpnext.payment_tool.validate_against_voucher(frm); +frappe.ui.form.on("Payment Tool Detail", "against_voucher_type", function(frm, cdt, cdn) { + var row = frappe.model.get_doc(cdt, cdn); + erpnext.payment_tool.validate_against_voucher(frm, row); }); -erpnext.payment_tool.validate_against_voucher = function(frm) { - $.each(frm.doc.vouchers || [], function(i, row) { +erpnext.payment_tool.validate_against_voucher = function(frm, row) { + var _validate = function(i, row) { + if (!row.against_voucher_type) { + return; + } + if(frm.doc.party_type=="Customer" && !in_list(["Sales Order", "Sales Invoice", "Journal Entry"], row.against_voucher_type)) { frappe.model.set_value(row.doctype, row.name, "against_voucher_type", ""); - frappe.throw(__("Against Voucher Type must be one of Sales Order, Sales Invoice or Journal Entry")) + frappe.msgprint(__("Against Voucher Type must be one of Sales Order, Sales Invoice or Journal Entry")); + return false; } if(frm.doc.party_type=="Supplier" && !in_list(["Purchase Order", "Purchase Invoice", "Journal Entry"], row.against_voucher_type)) { frappe.model.set_value(row.doctype, row.name, "against_voucher_type", ""); - frappe.throw(__("Against Voucher Type must be one of Purchase Order, Purchase Invoice or Journal Entry")) + frappe.msgprint(__("Against Voucher Type must be one of Purchase Order, Purchase Invoice or Journal Entry")); + return false; } - }); + } + + if (row) { + _validate(0, row); + } else { + $.each(frm.doc.vouchers || [], _validate); + } + } // validate against_voucher_type frappe.ui.form.on("Payment Tool Detail", "against_voucher_no", function(frm, cdt, cdn) { var row = locals[cdt][cdn]; + if (!row.against_voucher_no) { + return; + } + frappe.call({ method: 'erpnext.accounts.doctype.payment_tool.payment_tool.get_against_voucher_amount', args: { "against_voucher_type": row.against_voucher_type, - "against_voucher_no": row.against_voucher_no + "against_voucher_no": row.against_voucher_no, + "party_account": frm.doc.party_account, + "company": frm.doc.company }, callback: function(r) { if(!r.exc) { $.each(r.message, function(k, v) { frappe.model.set_value(cdt, cdn, k, v); }); + + frappe.model.set_value(cdt, cdn, "payment_amount", r.message.outstanding_amount); } } }); @@ -187,7 +231,7 @@ erpnext.payment_tool.set_total_payment_amount = function(frm) { } else { if(row.payment_amount < 0) msgprint(__("Row {0}: Payment amount can not be negative", [row.idx])); - else if(row.payment_amount >= row.outstanding_amount) + else if(row.payment_amount > row.outstanding_amount) msgprint(__("Row {0}: Payment Amount cannot be greater than Outstanding Amount", [__(row.idx)])); frappe.model.set_value(row.doctype, row.name, "payment_amount", 0.0); diff --git a/erpnext/accounts/doctype/payment_tool/payment_tool.json b/erpnext/accounts/doctype/payment_tool/payment_tool.json index e00d9e29abf..55e70481e2c 100644 --- a/erpnext/accounts/doctype/payment_tool/payment_tool.json +++ b/erpnext/accounts/doctype/payment_tool/payment_tool.json @@ -106,7 +106,7 @@ "ignore_user_permissions": 0, "in_filter": 0, "in_list_view": 0, - "label": "Column Break 1", + "label": "", "no_copy": 0, "permlevel": 0, "print_hide": 0, @@ -162,6 +162,29 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "party_account_currency", + "fieldtype": "Link", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Party Account Currency", + "no_copy": 1, + "options": "Currency", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, { "allow_on_submit": 0, "bold": 0, @@ -306,6 +329,7 @@ "in_list_view": 0, "label": "Total Payment Amount", "no_copy": 0, + "options": "party_account_currency", "permlevel": 0, "print_hide": 0, "read_only": 1, @@ -450,7 +474,7 @@ "is_submittable": 0, "issingle": 1, "istable": 0, - "modified": "2015-06-05 11:17:33.843334", + "modified": "2015-08-31 18:58:21.813054", "modified_by": "Administrator", "module": "Accounts", "name": "Payment Tool", diff --git a/erpnext/accounts/doctype/payment_tool/payment_tool.py b/erpnext/accounts/doctype/payment_tool/payment_tool.py index 4edbebd09f7..eedf69fe5db 100644 --- a/erpnext/accounts/doctype/payment_tool/payment_tool.py +++ b/erpnext/accounts/doctype/payment_tool/payment_tool.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals import frappe -from frappe import _ +from frappe import _, scrub from frappe.utils import flt from frappe.model.document import Document import json @@ -33,15 +33,18 @@ class PaymentTool(Document): d1.party_type = self.party_type d1.party = self.party d1.balance = get_balance_on(self.party_account) - d1.set("debit" if self.received_or_paid=="Paid" else "credit", flt(v.payment_amount)) + d1.set("debit_in_account_currency" if self.received_or_paid=="Paid" \ + else "credit_in_account_currency", flt(v.payment_amount)) d1.set("reference_type", v.against_voucher_type) d1.set("reference_name", v.against_voucher_no) d1.set('is_advance', 'Yes' if v.against_voucher_type in ['Sales Order', 'Purchase Order'] else 'No') - total_payment_amount = flt(total_payment_amount) + flt(d1.debit) - flt(d1.credit) + total_payment_amount = flt(total_payment_amount) + \ + flt(d1.debit_in_account_currency) - flt(d1.credit_in_account_currency) d2 = jv.append("accounts") d2.account = self.payment_account - d2.set('debit' if total_payment_amount < 0 else 'credit', abs(total_payment_amount)) + d2.set('debit_in_account_currency' if total_payment_amount < 0 \ + else 'credit_in_account_currency', abs(total_payment_amount)) if self.payment_account: d2.balance = get_balance_on(self.payment_account) @@ -56,39 +59,49 @@ def get_outstanding_vouchers(args): args = json.loads(args) + party_account_currency = frappe.db.get_value("Account", args.get("party_account"), "account_currency") + company_currency = frappe.db.get_value("Company", args.get("company"), "default_currency") + if args.get("party_type") == "Customer" and args.get("received_or_paid") == "Received": - amount_query = "ifnull(debit, 0) - ifnull(credit, 0)" + amount_query = "ifnull(debit_in_account_currency, 0) - ifnull(credit_in_account_currency, 0)" elif args.get("party_type") == "Supplier" and args.get("received_or_paid") == "Paid": - amount_query = "ifnull(credit, 0) - ifnull(debit, 0)" + amount_query = "ifnull(credit_in_account_currency, 0) - ifnull(debit_in_account_currency, 0)" else: frappe.throw(_("Please enter the Against Vouchers manually")) # Get all outstanding sales /purchase invoices outstanding_invoices = get_outstanding_invoices(amount_query, args.get("party_account"), - args.get("party_type"), args.get("party")) + args.get("party_type"), args.get("party"), with_journal_entry=False) # Get all SO / PO which are not fully billed or aginst which full advance not paid - orders_to_be_billed = get_orders_to_be_billed(args.get("party_type"), args.get("party")) + orders_to_be_billed = get_orders_to_be_billed(args.get("party_type"), args.get("party"), + party_account_currency, company_currency) return outstanding_invoices + orders_to_be_billed -def get_orders_to_be_billed(party_type, party): +def get_orders_to_be_billed(party_type, party, party_account_currency, company_currency): voucher_type = 'Sales Order' if party_type == "Customer" else 'Purchase Order' + + ref_field = "base_grand_total" if party_account_currency == company_currency else "grand_total" + orders = frappe.db.sql(""" select name as voucher_no, - ifnull(base_grand_total, 0) as invoice_amount, - (ifnull(base_grand_total, 0) - ifnull(advance_paid, 0)) as outstanding_amount, + ifnull({ref_field}, 0) as invoice_amount, + (ifnull({ref_field}, 0) - ifnull(advance_paid, 0)) as outstanding_amount, transaction_date as posting_date from - `tab%s` + `tab{voucher_type}` where - %s = %s + {party_type} = %s and docstatus = 1 and ifnull(status, "") != "Stopped" - and ifnull(base_grand_total, 0) > ifnull(advance_paid, 0) + and ifnull({ref_field}, 0) > ifnull(advance_paid, 0) and abs(100 - ifnull(per_billed, 0)) > 0.01 - """ % (voucher_type, 'customer' if party_type == "Customer" else 'supplier', '%s'), - party, as_dict = True) + """.format(**{ + "ref_field": ref_field, + "voucher_type": voucher_type, + "party_type": scrub(party_type) + }), party, as_dict = True) order_list = [] for d in orders: @@ -98,13 +111,19 @@ def get_orders_to_be_billed(party_type, party): return order_list @frappe.whitelist() -def get_against_voucher_amount(against_voucher_type, against_voucher_no): +def get_against_voucher_amount(against_voucher_type, against_voucher_no, party_account, company): + party_account_currency = frappe.db.get_value("Account", party_account, "account_currency") + company_currency = frappe.db.get_value("Company", company, "default_currency") + ref_field = "base_grand_total" if party_account_currency == company_currency else "grand_total" + if against_voucher_type in ["Sales Order", "Purchase Order"]: - select_cond = "base_grand_total as total_amount, ifnull(base_grand_total, 0) - ifnull(advance_paid, 0) as outstanding_amount" + select_cond = "{0} as total_amount, ifnull({0}, 0) - ifnull(advance_paid, 0) as outstanding_amount"\ + .format(ref_field) elif against_voucher_type in ["Sales Invoice", "Purchase Invoice"]: - select_cond = "base_grand_total as total_amount, outstanding_amount" + select_cond = "{0} as total_amount, outstanding_amount".format(ref_field) elif against_voucher_type == "Journal Entry": - select_cond = "total_debit as total_amount" + ref_field = "total_debit" if party_account_currency == company_currency else "total_debit/exchange_rate" + select_cond = "{0} as total_amount".format(ref_field) details = frappe.db.sql("""select {0} from `tab{1}` where name = %s""" .format(select_cond, against_voucher_type), against_voucher_no, as_dict=1) diff --git a/erpnext/accounts/doctype/payment_tool/test_payment_tool.py b/erpnext/accounts/doctype/payment_tool/test_payment_tool.py index 321986cd466..4f1c9e98a4a 100644 --- a/erpnext/accounts/doctype/payment_tool/test_payment_tool.py +++ b/erpnext/accounts/doctype/payment_tool/test_payment_tool.py @@ -39,7 +39,7 @@ class TestPaymentTool(unittest.TestCase): "party": "_Test Customer 3", "reference_type": "Sales Order", "reference_name": so2.name, - "credit": 1000, + "credit_in_account_currency": 1000, "is_advance": "Yes" }) @@ -67,7 +67,7 @@ class TestPaymentTool(unittest.TestCase): "party": "_Test Customer 3", "reference_type": si2.doctype, "reference_name": si2.name, - "credit": 561.80 + "credit_in_account_currency": 561.80 }) pi = self.create_voucher(pi_test_records[0], { @@ -91,7 +91,7 @@ class TestPaymentTool(unittest.TestCase): "party": "_Test Customer 3", "party_account": "_Test Receivable - _TC", "payment_mode": "Cheque", - "payment_account": "_Test Account Bank Account - _TC", + "payment_account": "_Test Bank - _TC", "reference_no": "123456", "reference_date": "2013-02-14" } @@ -117,10 +117,10 @@ class TestPaymentTool(unittest.TestCase): def create_against_jv(self, test_record, args): jv = frappe.copy_doc(test_record) jv.get("accounts")[0].update(args) - if args.get("debit"): - jv.get("accounts")[1].credit = args["debit"] - elif args.get("credit"): - jv.get("accounts")[1].debit = args["credit"] + if args.get("debit_in_account_currency"): + jv.get("accounts")[1].credit_in_account_currency = args["debit_in_account_currency"] + elif args.get("credit_in_account_currency"): + jv.get("accounts")[1].debit_in_account_currency = args["credit_in_account_currency"] jv.insert() jv.submit() @@ -141,7 +141,8 @@ class TestPaymentTool(unittest.TestCase): outstanding_entries = get_outstanding_vouchers(json.dumps(args)) for d in outstanding_entries: - self.assertEquals(flt(d.get("outstanding_amount"), 2), expected_outstanding.get(d.get("voucher_type"))[1]) + self.assertEquals(flt(d.get("outstanding_amount"), 2), + expected_outstanding.get(d.get("voucher_type"))[1]) self.check_jv_entries(doc, outstanding_entries, expected_outstanding) @@ -156,11 +157,10 @@ class TestPaymentTool(unittest.TestCase): paytool.total_payment_amount = 300 new_jv = paytool.make_journal_entry() - for jv_entry in new_jv.get("accounts"): if paytool.party_account == jv_entry.get("account") and paytool.party == jv_entry.get("party"): - self.assertEquals(100.00, - jv_entry.get("debit" if paytool.party_type=="Supplier" else "credit")) + self.assertEquals(100.00, jv_entry.get("debit_in_account_currency" + if paytool.party_type=="Supplier" else "credit_in_account_currency")) self.assertEquals(jv_entry.reference_name, expected_outstanding[jv_entry.reference_type][0]) @@ -170,4 +170,6 @@ class TestPaymentTool(unittest.TestCase): def clear_table_entries(self): frappe.db.sql("""delete from `tabGL Entry` where party in ("_Test Customer 3", "_Test Supplier 1")""") frappe.db.sql("""delete from `tabSales Order` where customer = "_Test Customer 3" """) + frappe.db.sql("""delete from `tabSales Invoice` where customer = "_Test Customer 3" """) frappe.db.sql("""delete from `tabPurchase Order` where supplier = "_Test Supplier 1" """) + frappe.db.sql("""delete from `tabPurchase Invoice` where supplier = "_Test Supplier 1" """) diff --git a/erpnext/accounts/doctype/payment_tool_detail/payment_tool_detail.json b/erpnext/accounts/doctype/payment_tool_detail/payment_tool_detail.json index 5221f35a3fd..7e1460863ad 100644 --- a/erpnext/accounts/doctype/payment_tool_detail/payment_tool_detail.json +++ b/erpnext/accounts/doctype/payment_tool_detail/payment_tool_detail.json @@ -87,6 +87,7 @@ "in_list_view": 1, "label": "Total Amount", "no_copy": 0, + "options": "party_account_currency", "permlevel": 0, "print_hide": 0, "read_only": 1, @@ -108,6 +109,7 @@ "in_list_view": 1, "label": "Outstanding Amount", "no_copy": 0, + "options": "party_account_currency", "permlevel": 0, "print_hide": 0, "read_only": 1, @@ -129,6 +131,7 @@ "in_list_view": 1, "label": "Payment Amount", "no_copy": 0, + "options": "party_account_currency", "permlevel": 0, "print_hide": 0, "read_only": 0, @@ -146,7 +149,7 @@ "is_submittable": 0, "issingle": 0, "istable": 1, - "modified": "2014-09-11 08:55:34.384017", + "modified": "2015-08-31 18:58:35.537060", "modified_by": "Administrator", "module": "Accounts", "name": "Payment Tool Detail", diff --git a/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py index afff47fd40c..0b597462a9a 100644 --- a/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py +++ b/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py @@ -10,11 +10,11 @@ from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journ class TestPeriodClosingVoucher(unittest.TestCase): def test_closing_entry(self): - make_journal_entry("_Test Account Bank Account - _TC", "Sales - _TC", 400, + make_journal_entry("_Test Bank - _TC", "Sales - _TC", 400, "_Test Cost Center - _TC", submit=True) make_journal_entry("_Test Account Cost for Goods Sold - _TC", - "_Test Account Bank Account - _TC", 600, "_Test Cost Center - _TC", submit=True) + "_Test Bank - _TC", 600, "_Test Cost Center - _TC", submit=True) profit_or_loss = frappe.db.sql("""select sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) as balance from `tabGL Entry` t1, `tabAccount` t2 diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.json b/erpnext/accounts/doctype/pricing_rule/pricing_rule.json index ed3b2d12943..be027ad9a82 100644 --- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.json +++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.json @@ -41,7 +41,7 @@ "in_filter": 0, "in_list_view": 0, "label": "Title", - "no_copy": 0, + "no_copy": 1, "permlevel": 0, "precision": "", "print_hide": 0, @@ -851,7 +851,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-08-13 14:58:29.194326", + "modified": "2015-09-11 12:19:52.242771", "modified_by": "Administrator", "module": "Accounts", "name": "Pricing Rule", diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js index 70ebee1ef6e..2e3794a2385 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js @@ -75,8 +75,29 @@ erpnext.accounts.PurchaseInvoice = erpnext.buying.BuyingController.extend({ me.apply_pricing_rule(); }) }, + + credit_to: function() { + var me = this; + if(this.frm.doc.credit_to) { + me.frm.call({ + method: "frappe.client.get_value", + args: { + doctype: "Account", + fieldname: "account_currency", + filters: { name: me.frm.doc.credit_to }, + }, + callback: function(r, rt) { + if(r.message) { + me.frm.set_value("party_account_currency", r.message.account_currency); + me.set_dynamic_labels(); + } + } + }); + } + }, write_off_amount: function() { + this.set_in_company_currency(this.frm.doc, ["write_off_amount"]); this.calculate_outstanding_amount(); this.frm.refresh_fields(); }, diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json index 8d47dd220ec..25ac8ffcc3d 100755 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json @@ -1,2311 +1,2378 @@ { - "allow_copy": 0, - "allow_import": 1, - "allow_rename": 0, - "autoname": "naming_series:", - "creation": "2013-05-21 16:16:39", - "custom": 0, - "docstatus": 0, - "doctype": "DocType", + "allow_copy": 0, + "allow_import": 1, + "allow_rename": 0, + "autoname": "naming_series:", + "creation": "2013-05-21 16:16:39", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", "fields": [ { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "default": "{supplier_name}", - "fieldname": "title", - "fieldtype": "Data", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Title", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "default": "{supplier_name}", + "fieldname": "title", + "fieldtype": "Data", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Title", + "no_copy": 1, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "naming_series", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Series", - "no_copy": 1, - "oldfieldname": "naming_series", - "oldfieldtype": "Select", - "options": "PINV-\nPINV-RET-", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "naming_series", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Series", + "no_copy": 1, + "oldfieldname": "naming_series", + "oldfieldtype": "Select", + "options": "PINV-\nPINV-RET-", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "supplier", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Supplier", - "no_copy": 0, - "oldfieldname": "supplier", - "oldfieldtype": "Link", - "options": "Supplier", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "supplier", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Supplier", + "no_copy": 0, + "oldfieldname": "supplier", + "oldfieldtype": "Link", + "options": "Supplier", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "supplier", - "fieldname": "supplier_name", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Supplier Name", - "no_copy": 0, - "oldfieldname": "supplier_name", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "supplier", + "fieldname": "supplier_name", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Supplier Name", + "no_copy": 0, + "oldfieldname": "supplier_name", + "oldfieldtype": "Data", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "address_display", - "fieldtype": "Small Text", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Address", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "address_display", + "fieldtype": "Small Text", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Address", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "contact_display", - "fieldtype": "Small Text", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Contact", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "contact_display", + "fieldtype": "Small Text", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Contact", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "contact_mobile", - "fieldtype": "Small Text", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Mobile No", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "contact_mobile", + "fieldtype": "Small Text", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Mobile No", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "contact_email", - "fieldtype": "Small Text", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Contact Email", - "no_copy": 0, - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "contact_email", + "fieldtype": "Small Text", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Contact Email", + "no_copy": 0, + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break1", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "oldfieldtype": "Column Break", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break1", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "oldfieldtype": "Column Break", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": "Today", - "fieldname": "posting_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Date", - "no_copy": 0, - "oldfieldname": "posting_date", - "oldfieldtype": "Date", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "Today", + "fieldname": "posting_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Date", + "no_copy": 0, + "oldfieldname": "posting_date", + "oldfieldtype": "Date", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "", - "fieldname": "bill_no", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Supplier Invoice No", - "no_copy": 0, - "oldfieldname": "bill_no", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "", + "fieldname": "bill_no", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Supplier Invoice No", + "no_copy": 0, + "oldfieldname": "bill_no", + "oldfieldtype": "Data", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "bill_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Supplier Invoice Date", - "no_copy": 0, - "oldfieldname": "bill_date", - "oldfieldtype": "Date", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "bill_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Supplier Invoice Date", + "no_copy": 0, + "oldfieldname": "bill_date", + "oldfieldtype": "Date", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "amended_from", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 1, - "in_filter": 0, - "in_list_view": 0, - "label": "Amended From", - "no_copy": 1, - "oldfieldname": "amended_from", - "oldfieldtype": "Link", - "options": "Purchase Invoice", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 1, + "in_filter": 0, + "in_list_view": 0, + "label": "Amended From", + "no_copy": 1, + "oldfieldname": "amended_from", + "oldfieldtype": "Link", + "options": "Purchase Invoice", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "company", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Company", - "no_copy": 0, - "oldfieldname": "company", - "oldfieldtype": "Link", - "options": "Company", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "company", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Company", + "no_copy": 0, + "oldfieldname": "company", + "oldfieldtype": "Link", + "options": "Company", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "is_return", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Is Return", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "is_return", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Is Return", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "is_return", - "fieldname": "return_against", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Return Against Purchase Invoice", - "no_copy": 0, - "options": "Purchase Invoice", - "permlevel": 0, - "precision": "", - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "is_return", + "fieldname": "return_against", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Return Against Purchase Invoice", + "no_copy": 0, + "options": "Purchase Invoice", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "fieldname": "currency_and_price_list", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Currency and Price List", - "no_copy": 0, - "options": "icon-tag", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "fieldname": "currency_and_price_list", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Currency and Price List", + "no_copy": 0, + "options": "icon-tag", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "currency", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Currency", - "no_copy": 0, - "oldfieldname": "currency", - "oldfieldtype": "Select", - "options": "Currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "currency", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Currency", + "no_copy": 0, + "oldfieldname": "currency", + "oldfieldtype": "Select", + "options": "Currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "", - "fieldname": "conversion_rate", - "fieldtype": "Float", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Exchange Rate", - "no_copy": 0, - "oldfieldname": "conversion_rate", - "oldfieldtype": "Currency", - "permlevel": 0, - "precision": "9", - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "", + "fieldname": "conversion_rate", + "fieldtype": "Float", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Exchange Rate", + "no_copy": 0, + "oldfieldname": "conversion_rate", + "oldfieldtype": "Currency", + "permlevel": 0, + "precision": "9", + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break2", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break2", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "buying_price_list", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Price List", - "no_copy": 0, - "options": "Price List", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "buying_price_list", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Price List", + "no_copy": 0, + "options": "Price List", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "price_list_currency", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Price List Currency", - "no_copy": 0, - "options": "Currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "price_list_currency", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Price List Currency", + "no_copy": 0, + "options": "Currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "plc_conversion_rate", - "fieldtype": "Float", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Price List Exchange Rate", - "no_copy": 0, - "permlevel": 0, - "precision": "9", - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "plc_conversion_rate", + "fieldtype": "Float", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Price List Exchange Rate", + "no_copy": 0, + "permlevel": 0, + "precision": "9", + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "ignore_pricing_rule", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Ignore Pricing Rule", - "no_copy": 1, - "permlevel": 1, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "ignore_pricing_rule", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Ignore Pricing Rule", + "no_copy": 1, + "permlevel": 1, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "items_section", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "icon-shopping-cart", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "items_section", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "icon-shopping-cart", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "fieldname": "items", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Items", - "no_copy": 0, - "oldfieldname": "entries", - "oldfieldtype": "Table", - "options": "Purchase Invoice Item", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "fieldname": "items", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Items", + "no_copy": 0, + "oldfieldname": "entries", + "oldfieldtype": "Table", + "options": "Purchase Invoice Item", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "section_break_26", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "section_break_26", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "base_total", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Total (Company Currency)", - "no_copy": 0, - "options": "Company:company:default_currency", - "permlevel": 0, - "precision": "", - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "base_total", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Total (Company Currency)", + "no_copy": 0, + "options": "Company:company:default_currency", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "", - "fieldname": "base_net_total", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Net Total (Company Currency)", - "no_copy": 0, - "oldfieldname": "net_total", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "", + "fieldname": "base_net_total", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Net Total (Company Currency)", + "no_copy": 0, + "oldfieldname": "net_total", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_28", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_28", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "total", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Total", - "no_copy": 0, - "options": "currency", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "total", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Total", + "no_copy": 0, + "options": "currency", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "net_total", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Net Total", - "no_copy": 0, - "oldfieldname": "net_total_import", - "oldfieldtype": "Currency", - "options": "currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "net_total", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Net Total", + "no_copy": 0, + "oldfieldname": "net_total_import", + "oldfieldtype": "Currency", + "options": "currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "taxes_section", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "icon-money", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "taxes_section", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "icon-money", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "taxes_and_charges", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Taxes and Charges", - "no_copy": 0, - "oldfieldname": "purchase_other_charges", - "oldfieldtype": "Link", - "options": "Purchase Taxes and Charges Template", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "taxes_and_charges", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Taxes and Charges", + "no_copy": 0, + "oldfieldname": "purchase_other_charges", + "oldfieldtype": "Link", + "options": "Purchase Taxes and Charges Template", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "taxes", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Purchase Taxes and Charges", - "no_copy": 0, - "oldfieldname": "purchase_tax_details", - "oldfieldtype": "Table", - "options": "Purchase Taxes and Charges", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "taxes", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Purchase Taxes and Charges", + "no_copy": 0, + "oldfieldname": "purchase_tax_details", + "oldfieldtype": "Table", + "options": "Purchase Taxes and Charges", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "other_charges_calculation", - "fieldtype": "HTML", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Taxes and Charges Calculation", - "no_copy": 0, - "oldfieldtype": "HTML", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "other_charges_calculation", + "fieldtype": "HTML", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Taxes and Charges Calculation", + "no_copy": 0, + "oldfieldtype": "HTML", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "totals", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "icon-money", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "totals", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "icon-money", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "base_taxes_and_charges_added", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Taxes and Charges Added (Company Currency)", - "no_copy": 0, - "oldfieldname": "other_charges_added", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "base_taxes_and_charges_added", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Taxes and Charges Added (Company Currency)", + "no_copy": 0, + "oldfieldname": "other_charges_added", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "base_taxes_and_charges_deducted", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Taxes and Charges Deducted (Company Currency)", - "no_copy": 0, - "oldfieldname": "other_charges_deducted", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "base_taxes_and_charges_deducted", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Taxes and Charges Deducted (Company Currency)", + "no_copy": 0, + "oldfieldname": "other_charges_deducted", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "base_total_taxes_and_charges", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Total Taxes and Charges (Company Currency)", - "no_copy": 0, - "oldfieldname": "total_tax", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "base_total_taxes_and_charges", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Total Taxes and Charges (Company Currency)", + "no_copy": 0, + "oldfieldname": "total_tax", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_40", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_40", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "taxes_and_charges_added", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Taxes and Charges Added", - "no_copy": 0, - "oldfieldname": "other_charges_added_import", - "oldfieldtype": "Currency", - "options": "currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "taxes_and_charges_added", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Taxes and Charges Added", + "no_copy": 0, + "oldfieldname": "other_charges_added_import", + "oldfieldtype": "Currency", + "options": "currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "taxes_and_charges_deducted", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Taxes and Charges Deducted", - "no_copy": 0, - "oldfieldname": "other_charges_deducted_import", - "oldfieldtype": "Currency", - "options": "currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "taxes_and_charges_deducted", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Taxes and Charges Deducted", + "no_copy": 0, + "oldfieldname": "other_charges_deducted_import", + "oldfieldtype": "Currency", + "options": "currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "total_taxes_and_charges", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Total Taxes and Charges", - "no_copy": 0, - "options": "currency", - "permlevel": 0, - "precision": "", - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "total_taxes_and_charges", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Total Taxes and Charges", + "no_copy": 0, + "options": "currency", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "discount_amount", - "fieldname": "section_break_44", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Additional Discount", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "discount_amount", + "fieldname": "section_break_44", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Additional Discount", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": "Grand Total", - "fieldname": "apply_discount_on", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Apply Additional Discount On", - "no_copy": 0, - "options": "\nGrand Total\nNet Total", - "permlevel": 0, - "precision": "", - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "Grand Total", + "fieldname": "apply_discount_on", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Apply Additional Discount On", + "no_copy": 0, + "options": "\nGrand Total\nNet Total", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_46", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_46", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "discount_amount", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Additional Discount Amount", - "no_copy": 0, - "options": "currency", - "permlevel": 0, - "precision": "", - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "discount_amount", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Additional Discount Amount", + "no_copy": 0, + "options": "currency", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "base_discount_amount", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Additional Discount Amount (Company Currency)", - "no_copy": 0, - "options": "Company:company:default_currency", - "permlevel": 0, - "precision": "", - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "base_discount_amount", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Additional Discount Amount (Company Currency)", + "no_copy": 0, + "options": "Company:company:default_currency", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "section_break_49", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "section_break_49", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "base_grand_total", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Grand Total (Company Currency)", - "no_copy": 0, - "oldfieldname": "grand_total", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "base_grand_total", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Grand Total (Company Currency)", + "no_copy": 0, + "oldfieldname": "grand_total", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "", - "fieldname": "base_in_words", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "In Words (Company Currency)", - "no_copy": 0, - "oldfieldname": "in_words", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "", + "fieldname": "base_in_words", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "In Words (Company Currency)", + "no_copy": 0, + "oldfieldname": "in_words", + "oldfieldtype": "Data", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break8", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "oldfieldtype": "Column Break", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break8", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "oldfieldtype": "Column Break", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "grand_total", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Grand Total", - "no_copy": 0, - "oldfieldname": "grand_total_import", - "oldfieldtype": "Currency", - "options": "currency", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "grand_total", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 1, + "label": "Grand Total", + "no_copy": 0, + "oldfieldname": "grand_total_import", + "oldfieldtype": "Currency", + "options": "currency", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "in_words", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "In Words", - "no_copy": 0, - "oldfieldname": "in_words_import", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "in_words", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "In Words", + "no_copy": 0, + "oldfieldname": "in_words_import", + "oldfieldtype": "Data", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "total_amount_to_pay", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Total Amount To Pay", - "no_copy": 1, - "oldfieldname": "total_amount_to_pay", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "total_advance", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Total Advance", + "no_copy": 1, + "oldfieldname": "total_advance", + "oldfieldtype": "Currency", + "options": "party_account_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "total_advance", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Total Advance", - "no_copy": 1, - "oldfieldname": "total_advance", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "outstanding_amount", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Outstanding Amount", + "no_copy": 1, + "oldfieldname": "outstanding_amount", + "oldfieldtype": "Currency", + "options": "party_account_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "outstanding_amount", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Outstanding Amount", - "no_copy": 1, - "oldfieldname": "outstanding_amount", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "write_off_amount", + "depends_on": "grand_total", + "fieldname": "write_off", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Write Off", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "write_off_amount", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Write Off Amount", - "no_copy": 1, - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "write_off_amount", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Write Off Amount", + "no_copy": 1, + "options": "currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:flt(doc.write_off_amount)!=0", - "fieldname": "write_off_account", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Write Off Account", - "no_copy": 1, - "options": "Account", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "base_write_off_amount", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Write Off Amount (Company Currency)", + "no_copy": 1, + "options": "Company:company:default_currency", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:flt(doc.write_off_amount)!=0", - "fieldname": "write_off_cost_center", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Write Off Cost Center", - "no_copy": 1, - "options": "Cost Center", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_61", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "against_expense_account", - "fieldtype": "Small Text", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Against Expense Account", - "no_copy": 1, - "oldfieldname": "against_expense_account", - "oldfieldtype": "Small Text", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:flt(doc.write_off_amount)!=0", + "fieldname": "write_off_account", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Write Off Account", + "no_copy": 1, + "options": "Account", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "advances", - "fieldname": "advances_section", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Advance Payments", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "icon-money", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:flt(doc.write_off_amount)!=0", + "fieldname": "write_off_cost_center", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Write Off Cost Center", + "no_copy": 1, + "options": "Cost Center", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "get_advances_paid", - "fieldtype": "Button", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Get Advances Paid", - "no_copy": 0, - "oldfieldtype": "Button", - "options": "get_advances", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "advances", + "fieldname": "advances_section", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Advance Payments", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "icon-money", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "advances", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Advances", - "no_copy": 1, - "oldfieldname": "advance_allocation_details", - "oldfieldtype": "Table", - "options": "Purchase Invoice Advance", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "get_advances_paid", + "fieldtype": "Button", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Get Advances Paid", + "no_copy": 0, + "oldfieldtype": "Button", + "options": "get_advances", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "terms", - "fieldname": "terms_section_break", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Terms and Conditions", - "no_copy": 0, - "options": "icon-legal", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "advances", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Advances", + "no_copy": 1, + "oldfieldname": "advance_allocation_details", + "oldfieldtype": "Table", + "options": "Purchase Invoice Advance", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "tc_name", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Terms", - "no_copy": 0, - "options": "Terms and Conditions", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "terms", + "fieldname": "terms_section_break", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Terms and Conditions", + "no_copy": 0, + "options": "icon-legal", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "terms", - "fieldtype": "Text Editor", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Terms and Conditions1", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "tc_name", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Terms", + "no_copy": 0, + "options": "Terms and Conditions", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "depends_on": "supplier", - "fieldname": "contact_section", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Contact Details", - "no_copy": 0, - "options": "icon-bullhorn", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "terms", + "fieldtype": "Text Editor", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Terms and Conditions1", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "supplier_address", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Supplier Address", - "no_copy": 0, - "options": "Address", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "depends_on": "supplier", + "fieldname": "contact_section", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Contact Details", + "no_copy": 0, + "options": "icon-bullhorn", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "col_break23", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "supplier_address", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Supplier Address", + "no_copy": 0, + "options": "Address", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "col_break23", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "contact_person", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Contact Person", - "no_copy": 0, - "options": "Contact", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "contact_person", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Contact Person", + "no_copy": 0, + "options": "Contact", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "fieldname": "printing_settings", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Printing Settings", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "fieldname": "printing_settings", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Printing Settings", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "fieldname": "select_print_heading", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Print Heading", - "no_copy": 1, - "oldfieldname": "select_print_heading", - "oldfieldtype": "Link", - "options": "Print Heading", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 1, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "fieldname": "select_print_heading", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Print Heading", + "no_copy": 1, + "oldfieldname": "select_print_heading", + "oldfieldtype": "Link", + "options": "Print Heading", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 1, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "fieldname": "more_info", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "More Information", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "icon-file-text", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "fieldname": "more_info", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "More Information", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "icon-file-text", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "", - "fieldname": "credit_to", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Credit To", - "no_copy": 0, - "oldfieldname": "credit_to", - "oldfieldtype": "Link", - "options": "Account", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "", + "fieldname": "credit_to", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Credit To", + "no_copy": 0, + "oldfieldname": "credit_to", + "oldfieldtype": "Link", + "options": "Account", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": "No", - "description": "", - "fieldname": "is_opening", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Is Opening", - "no_copy": 0, - "oldfieldname": "is_opening", - "oldfieldtype": "Select", - "options": "No\nYes", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "party_account_currency", + "fieldtype": "Link", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Party Account Currency", + "no_copy": 1, + "options": "Currency", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "due_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Due Date", - "no_copy": 0, - "oldfieldname": "due_date", - "oldfieldtype": "Date", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "No", + "description": "", + "fieldname": "is_opening", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Is Opening", + "no_copy": 0, + "oldfieldname": "is_opening", + "oldfieldtype": "Select", + "options": "No\nYes", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_63", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "due_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Due Date", + "no_copy": 0, + "oldfieldname": "due_date", + "oldfieldtype": "Date", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "mode_of_payment", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Mode of Payment", - "no_copy": 0, - "oldfieldname": "mode_of_payment", - "oldfieldtype": "Select", - "options": "Mode of Payment", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "against_expense_account", + "fieldtype": "Small Text", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Against Expense Account", + "no_copy": 1, + "oldfieldname": "against_expense_account", + "oldfieldtype": "Small Text", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "fiscal_year", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Fiscal Year", - "no_copy": 0, - "oldfieldname": "fiscal_year", - "oldfieldtype": "Select", - "options": "Fiscal Year", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_63", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "remarks", - "fieldtype": "Small Text", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Remarks", - "no_copy": 1, - "oldfieldname": "remarks", - "oldfieldtype": "Text", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "mode_of_payment", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Mode of Payment", + "no_copy": 0, + "oldfieldname": "mode_of_payment", + "oldfieldtype": "Select", + "options": "Mode of Payment", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "is_recurring", - "depends_on": "eval:doc.docstatus<2", - "fieldname": "recurring_invoice", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Recurring Invoice", - "no_copy": 0, - "options": "icon-time", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "fiscal_year", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Fiscal Year", + "no_copy": 0, + "oldfieldname": "fiscal_year", + "oldfieldtype": "Select", + "options": "Fiscal Year", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.docstatus<2", - "description": "", - "fieldname": "is_recurring", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Is Recurring", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "remarks", + "fieldtype": "Small Text", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Remarks", + "no_copy": 1, + "oldfieldname": "remarks", + "oldfieldtype": "Text", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "description": "Select the period when the invoice will be generated automatically", - "fieldname": "recurring_type", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Recurring Type", - "no_copy": 1, - "options": "Monthly\nQuarterly\nHalf-yearly\nYearly", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "is_recurring", + "depends_on": "eval:doc.docstatus<2", + "fieldname": "recurring_invoice", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Recurring Invoice", + "no_copy": 0, + "options": "icon-time", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "description": "Start date of current invoice's period", - "fieldname": "from_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "From Date", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.docstatus<2", + "description": "", + "fieldname": "is_recurring", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Is Recurring", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "description": "End date of current invoice's period", - "fieldname": "to_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "To Date", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "description": "Select the period when the invoice will be generated automatically", + "fieldname": "recurring_type", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Recurring Type", + "no_copy": 1, + "options": "Monthly\nQuarterly\nHalf-yearly\nYearly", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "description": "The day of the month on which auto invoice will be generated e.g. 05, 28 etc", - "fieldname": "repeat_on_day_of_month", - "fieldtype": "Int", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Repeat on Day of Month", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "description": "Start date of current invoice's period", + "fieldname": "from_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "From Date", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "description": "The date on which recurring invoice will be stop", - "fieldname": "end_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "End Date", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "description": "End date of current invoice's period", + "fieldname": "to_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "To Date", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_82", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "description": "The day of the month on which auto invoice will be generated e.g. 05, 28 etc", + "fieldname": "repeat_on_day_of_month", + "fieldtype": "Int", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Repeat on Day of Month", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "description": "The date on which recurring invoice will be stop", + "fieldname": "end_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "End Date", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_82", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "description": "The date on which next invoice will be generated. It is generated on submit.", - "fieldname": "next_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Next Date", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "description": "The date on which next invoice will be generated. It is generated on submit.", + "fieldname": "next_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Next Date", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "description": "The unique id for tracking all recurring invoices. It is generated on submit.", - "fieldname": "recurring_id", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Recurring Id", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "description": "The unique id for tracking all recurring invoices. It is generated on submit.", + "fieldname": "recurring_id", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Recurring Id", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "description": "Enter email id separated by commas, invoice will be mailed automatically on particular date", - "fieldname": "notification_email_address", - "fieldtype": "Small Text", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Notification Email Address", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "description": "Enter email id separated by commas, invoice will be mailed automatically on particular date", + "fieldname": "notification_email_address", + "fieldtype": "Small Text", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Notification Email Address", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "fieldname": "recurring_print_format", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Recurring Print Format", - "no_copy": 0, - "options": "Print Format", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "fieldname": "recurring_print_format", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Recurring Print Format", + "no_copy": 0, + "options": "Print Format", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 } - ], - "hide_heading": 0, - "hide_toolbar": 0, - "icon": "icon-file-text", - "idx": 1, - "in_create": 0, - "in_dialog": 0, - "is_submittable": 1, - "issingle": 0, - "istable": 0, - "modified": "2015-09-07 15:51:26", - "modified_by": "Administrator", - "module": "Accounts", - "name": "Purchase Invoice", - "owner": "Administrator", + ], + "hide_heading": 0, + "hide_toolbar": 0, + "icon": "icon-file-text", + "idx": 1, + "in_create": 0, + "in_dialog": 0, + "is_submittable": 1, + "issingle": 0, + "istable": 0, + "modified": "2015-09-11 12:21:39.803805", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Purchase Invoice", + "owner": "Administrator", "permissions": [ { - "amend": 1, - "apply_user_permissions": 0, - "cancel": 1, - "create": 1, - "delete": 0, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Accounts User", - "set_user_permissions": 0, - "share": 1, - "submit": 1, + "amend": 1, + "apply_user_permissions": 0, + "cancel": 1, + "create": 1, + "delete": 0, + "email": 1, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Accounts User", + "set_user_permissions": 0, + "share": 1, + "submit": 1, "write": 1 - }, + }, { - "amend": 0, - "apply_user_permissions": 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, + "amend": 0, + "apply_user_permissions": 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 - }, + }, { - "amend": 0, - "apply_user_permissions": 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": "Supplier", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Supplier", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 - }, + }, { - "amend": 1, - "apply_user_permissions": 0, - "cancel": 1, - "create": 1, - "delete": 1, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Accounts Manager", - "set_user_permissions": 0, - "share": 1, - "submit": 1, + "amend": 1, + "apply_user_permissions": 0, + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Accounts Manager", + "set_user_permissions": 0, + "share": 1, + "submit": 1, "write": 1 - }, + }, { - "amend": 0, - "apply_user_permissions": 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": "Auditor", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Auditor", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 - }, + }, { - "amend": 0, - "apply_user_permissions": 0, - "cancel": 0, - "create": 0, - "delete": 0, - "email": 0, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 1, - "print": 0, - "read": 1, - "report": 0, - "role": "Accounts Manager", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 0, + "delete": 0, + "email": 0, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 1, + "print": 0, + "read": 1, + "report": 0, + "role": "Accounts Manager", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 1 } - ], - "read_only": 0, - "read_only_onload": 1, - "search_fields": "posting_date, supplier, fiscal_year, bill_no, base_grand_total, outstanding_amount", - "sort_field": "modified", - "sort_order": "DESC", + ], + "read_only": 0, + "read_only_onload": 1, + "search_fields": "posting_date, supplier, fiscal_year, bill_no, base_grand_total, outstanding_amount", + "sort_field": "modified", + "sort_order": "DESC", "title_field": "title" -} \ No newline at end of file +} diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py index a43e553ea00..d92e1fa0ccd 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -91,13 +91,16 @@ class PurchaseInvoice(BuyingController): throw(_("Conversion rate cannot be 0 or 1")) def validate_credit_to_acc(self): - account = frappe.db.get_value("Account", self.credit_to, ["account_type", "report_type"], as_dict=True) + account = frappe.db.get_value("Account", self.credit_to, + ["account_type", "report_type", "account_currency"], as_dict=True) if account.report_type != "Balance Sheet": frappe.throw(_("Credit To account must be a Balance Sheet account")) if self.supplier and account.account_type != "Payable": frappe.throw(_("Credit To account must be a Payable account")) + + self.party_account_currency = account.account_currency def check_for_stopped_status(self): check_list = [] @@ -213,7 +216,7 @@ class PurchaseInvoice(BuyingController): 'party_type': 'Supplier', 'party': self.supplier, 'is_advance' : 'Yes', - 'dr_or_cr' : 'debit', + 'dr_or_cr' : 'debit_in_account_currency', 'unadjusted_amt' : flt(d.advance_amount), 'allocated_amt' : flt(d.allocated_amount) } @@ -248,7 +251,7 @@ class PurchaseInvoice(BuyingController): expenses_included_in_valuation = self.get_company_default("expenses_included_in_valuation") gl_entries = [] - + # parent's gl entry if self.base_grand_total: gl_entries.append( @@ -257,26 +260,32 @@ class PurchaseInvoice(BuyingController): "party_type": "Supplier", "party": self.supplier, "against": self.against_expense_account, - "credit": self.total_amount_to_pay, - "remarks": self.remarks, + "credit": self.base_grand_total, + "credit_in_account_currency": self.base_grand_total \ + if self.party_account_currency==self.company_currency else self.grand_total, "against_voucher": self.return_against if cint(self.is_return) else self.name, "against_voucher_type": self.doctype, - }) + }, self.party_account_currency) ) # tax table gl entries valuation_tax = {} for tax in self.get("taxes"): if tax.category in ("Total", "Valuation and Total") and flt(tax.base_tax_amount_after_discount_amount): + account_currency = frappe.db.get_value("Account", tax.account_head, "account_currency") + + dr_or_cr = "debit" if tax.add_deduct_tax == "Add" else "credit" + gl_entries.append( self.get_gl_dict({ "account": tax.account_head, "against": self.supplier, - "debit": tax.add_deduct_tax == "Add" and tax.base_tax_amount_after_discount_amount or 0, - "credit": tax.add_deduct_tax == "Deduct" and tax.base_tax_amount_after_discount_amount or 0, - "remarks": self.remarks, + dr_or_cr: tax.base_tax_amount_after_discount_amount, + dr_or_cr + "_in_account_currency": tax.base_tax_amount_after_discount_amount \ + if account_currency==self.company_currency \ + else tax.tax_amount_after_discount_amount, "cost_center": tax.cost_center - }) + }, account_currency) ) # accumulate valuation tax @@ -292,14 +301,16 @@ class PurchaseInvoice(BuyingController): stock_items = self.get_stock_items() for item in self.get("items"): if flt(item.base_net_amount): + account_currency = frappe.db.get_value("Account", item.expense_account, "account_currency") gl_entries.append( self.get_gl_dict({ "account": item.expense_account, "against": self.supplier, "debit": item.base_net_amount, - "remarks": self.remarks, + "debit_in_account_currency": item.base_net_amount \ + if account_currency==self.company_currency else item.net_amount, "cost_center": item.cost_center - }) + }, account_currency) ) if auto_accounting_for_stock and self.is_opening == "No" and \ @@ -352,12 +363,28 @@ class PurchaseInvoice(BuyingController): # writeoff account includes petty difference in the invoice amount # and the amount that is paid if self.write_off_account and flt(self.write_off_amount): + write_off_account_currency = frappe.db.get_value("Account", self.write_off_account, "account_currency") + + gl_entries.append( + self.get_gl_dict({ + "account": self.credit_to, + "party_type": "Supplier", + "party": self.supplier, + "against": self.write_off_account, + "debit": self.base_write_off_amount, + "debit_in_account_currency": self.base_write_off_amount \ + if self.party_account_currency==self.company_currency else self.write_off_amount, + "against_voucher": self.return_against if cint(self.is_return) else self.name, + "against_voucher_type": self.doctype, + }, self.party_account_currency) + ) gl_entries.append( self.get_gl_dict({ "account": self.write_off_account, "against": self.supplier, - "credit": flt(self.write_off_amount), - "remarks": self.remarks, + "credit": flt(self.base_write_off_amount), + "credit_in_account_currency": self.base_write_off_amount \ + if write_off_account_currency==self.company_currency else self.write_off_amount, "cost_center": self.write_off_cost_center }) ) diff --git a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py index 0b74948d0e1..b39f30bbdcc 100644 --- a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py @@ -10,6 +10,7 @@ from frappe.utils import cint import frappe.defaults from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import set_perpetual_inventory, \ test_records as pr_test_records +from erpnext.controllers.accounts_controller import InvalidCurrency test_dependencies = ["Item", "Cost Center"] test_ignore = ["Serial No"] @@ -218,7 +219,8 @@ class TestPurchaseInvoice(unittest.TestCase): pi.load_from_db() self.assertTrue(frappe.db.sql("""select name from `tabJournal Entry Account` - where reference_type='Purchase Invoice' and reference_name=%s and debit=300""", pi.name)) + where reference_type='Purchase Invoice' + and reference_name=%s and debit_in_account_currency=300""", pi.name)) self.assertEqual(pi.outstanding_amount, 1212.30) @@ -276,6 +278,55 @@ class TestPurchaseInvoice(unittest.TestCase): self.assertEquals(expected_values[gle.account][1], gle.credit) set_perpetual_inventory(0) + + def test_multi_currency_gle(self): + set_perpetual_inventory(0) + + pi = make_purchase_invoice(supplier="_Test Supplier USD", credit_to="_Test Payable USD - _TC", + currency="USD", conversion_rate=50) + + gl_entries = frappe.db.sql("""select account, account_currency, debit, credit, + debit_in_account_currency, credit_in_account_currency + from `tabGL Entry` where voucher_type='Purchase Invoice' and voucher_no=%s + order by account asc""", pi.name, as_dict=1) + + self.assertTrue(gl_entries) + + expected_values = { + "_Test Payable USD - _TC": { + "account_currency": "USD", + "debit": 0, + "debit_in_account_currency": 0, + "credit": 12500, + "credit_in_account_currency": 250 + }, + "_Test Account Cost for Goods Sold - _TC": { + "account_currency": "INR", + "debit": 12500, + "debit_in_account_currency": 12500, + "credit": 0, + "credit_in_account_currency": 0 + } + } + + for field in ("account_currency", "debit", "debit_in_account_currency", "credit", "credit_in_account_currency"): + for i, gle in enumerate(gl_entries): + self.assertEquals(expected_values[gle.account][field], gle[field]) + + + # Check for valid currency + pi1 = make_purchase_invoice(supplier="_Test Supplier USD", credit_to="_Test Payable USD - _TC", + do_not_save=True) + + self.assertRaises(InvalidCurrency, pi1.save) + + # cancel + pi.cancel() + + gle = frappe.db.sql("""select name from `tabGL Entry` + where voucher_type='Sales Invoice' and voucher_no=%s""", pi.name) + + self.assertFalse(gle) def make_purchase_invoice(**args): pi = frappe.new_doc("Purchase Invoice") diff --git a/erpnext/accounts/doctype/purchase_invoice/test_records.json b/erpnext/accounts/doctype/purchase_invoice/test_records.json index 679e87024ac..e6961d978bc 100644 --- a/erpnext/accounts/doctype/purchase_invoice/test_records.json +++ b/erpnext/accounts/doctype/purchase_invoice/test_records.json @@ -141,6 +141,9 @@ "supplier": "_Test Supplier", "supplier_name": "_Test Supplier" }, + + + { "bill_no": "NA", "buying_price_list": "_Test Price List", diff --git a/erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.json b/erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.json index c9139d1be1c..f190809a15a 100644 --- a/erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.json +++ b/erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.json @@ -117,7 +117,7 @@ "no_copy": 1, "oldfieldname": "advance_amount", "oldfieldtype": "Currency", - "options": "Company:company:default_currency", + "options": "party_account_currency", "permlevel": 0, "print_hide": 0, "print_width": "100px", @@ -143,7 +143,7 @@ "no_copy": 1, "oldfieldname": "allocated_amount", "oldfieldtype": "Currency", - "options": "Company:company:default_currency", + "options": "party_account_currency", "permlevel": 0, "print_hide": 0, "print_width": "100px", @@ -164,7 +164,7 @@ "is_submittable": 0, "issingle": 0, "istable": 1, - "modified": "2014-12-25 16:29:15.176476", + "modified": "2015-08-25 17:51:30.274069", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice Advance", diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.json b/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.json index ab18215301d..86fd799ba26 100644 --- a/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.json +++ b/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.json @@ -8,7 +8,7 @@ "description": "Standard tax template that can be applied to all Purchase Transactions. This template can contain list of tax heads and also other expense heads like \"Shipping\", \"Insurance\", \"Handling\" etc.\n\n#### Note\n\nThe tax rate you define here will be the standard tax rate for all **Items**. If there are **Items** that have different rates, they must be added in the **Item Tax** table in the **Item** master.\n\n#### Description of Columns\n\n1. Calculation Type: \n - This can be on **Net Total** (that is the sum of basic amount).\n - **On Previous Row Total / Amount** (for cumulative taxes or charges). If you select this option, the tax will be applied as a percentage of the previous row (in the tax table) amount or total.\n - **Actual** (as mentioned).\n2. Account Head: The Account ledger under which this tax will be booked\n3. Cost Center: If the tax / charge is an income (like shipping) or expense it needs to be booked against a Cost Center.\n4. Description: Description of the tax (that will be printed in invoices / quotes).\n5. Rate: Tax rate.\n6. Amount: Tax amount.\n7. Total: Cumulative total to this point.\n8. Enter Row: If based on \"Previous Row Total\" you can select the row number which will be taken as a base for this calculation (default is the previous row).\n9. Consider Tax or Charge for: In this section you can specify if the tax / charge is only for valuation (not a part of total) or only for total (does not add value to the item) or for both.\n10. Add or Deduct: Whether you want to add or deduct the tax.", "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -21,7 +21,7 @@ "in_filter": 1, "in_list_view": 0, "label": "Title", - "no_copy": 0, + "no_copy": 1, "oldfieldname": "title", "oldfieldtype": "Data", "permlevel": 0, @@ -176,7 +176,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-05-06 08:52:01.499434", + "modified": "2015-09-11 12:19:53.741725", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Taxes and Charges Template", diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js index ec84302f1ee..5e8d3a5d9b7 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js @@ -175,6 +175,26 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte me.apply_pricing_rule(); }) }, + + debit_to: function() { + var me = this; + if(this.frm.doc.debit_to) { + me.frm.call({ + method: "frappe.client.get_value", + args: { + doctype: "Account", + fieldname: "account_currency", + filters: { name: me.frm.doc.debit_to }, + }, + callback: function(r, rt) { + if(r.message) { + me.frm.set_value("party_account_currency", r.message.account_currency); + me.set_dynamic_labels(); + } + } + }); + } + }, allocated_amount: function() { this.calculate_total_advance(); @@ -183,10 +203,10 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte write_off_outstanding_amount_automatically: function() { if(cint(this.frm.doc.write_off_outstanding_amount_automatically)) { - frappe.model.round_floats_in(this.frm.doc, ["base_grand_total", "paid_amount"]); + frappe.model.round_floats_in(this.frm.doc, ["grand_total", "paid_amount"]); // this will make outstanding amount 0 this.frm.set_value("write_off_amount", - flt(this.frm.doc.base_grand_total - this.frm.doc.paid_amount - this.frm.doc.total_advance, precision("write_off_amount")) + flt(this.frm.doc.grand_total - this.frm.doc.paid_amount - this.frm.doc.total_advance, precision("write_off_amount")) ); this.frm.toggle_enable("write_off_amount", false); @@ -199,10 +219,12 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte }, write_off_amount: function() { + this.set_in_company_currency(this.frm.doc, ["write_off_amount"]); this.write_off_outstanding_amount_automatically(); }, paid_amount: function() { + this.set_in_company_currency(this.frm.doc, ["paid_amount"]); this.write_off_outstanding_amount_automatically(); }, diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json index 81012fb1e83..08a7b24f3e1 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json @@ -1,2978 +1,3047 @@ { - "allow_copy": 0, - "allow_import": 1, - "allow_rename": 0, - "autoname": "naming_series:", - "creation": "2013-05-24 19:29:05", - "custom": 0, - "default_print_format": "Standard", - "docstatus": 0, - "doctype": "DocType", - "document_type": "", + "allow_copy": 0, + "allow_import": 1, + "allow_rename": 0, + "autoname": "naming_series:", + "creation": "2013-05-24 19:29:05", + "custom": 0, + "default_print_format": "Standard", + "docstatus": 0, + "doctype": "DocType", + "document_type": "", "fields": [ { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "customer_section", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "", - "no_copy": 0, - "options": "icon-user", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "customer_section", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "", + "no_copy": 0, + "options": "icon-user", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "default": "{customer_name}", - "fieldname": "title", - "fieldtype": "Data", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Title", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "default": "{customer_name}", + "fieldname": "title", + "fieldtype": "Data", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Title", + "no_copy": 1, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 1, - "collapsible": 0, - "fieldname": "naming_series", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Series", - "no_copy": 1, - "oldfieldname": "naming_series", - "oldfieldtype": "Select", - "options": "SINV-\nSINV-RET-", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 1, + "collapsible": 0, + "fieldname": "naming_series", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Series", + "no_copy": 1, + "oldfieldname": "naming_series", + "oldfieldtype": "Select", + "options": "SINV-\nSINV-RET-", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 1, - "collapsible": 0, - "fieldname": "customer", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Customer", - "no_copy": 0, - "oldfieldname": "customer", - "oldfieldtype": "Link", - "options": "Customer", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 1, + "collapsible": 0, + "fieldname": "customer", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Customer", + "no_copy": 0, + "oldfieldname": "customer", + "oldfieldtype": "Link", + "options": "Customer", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "customer", - "fieldname": "customer_name", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Customer Name", - "no_copy": 0, - "oldfieldname": "customer_name", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "customer", + "fieldname": "customer_name", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Customer Name", + "no_copy": 0, + "oldfieldname": "customer_name", + "oldfieldtype": "Data", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "address_display", - "fieldtype": "Small Text", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Address", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "address_display", + "fieldtype": "Small Text", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Address", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "contact_display", - "fieldtype": "Small Text", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Contact", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "contact_display", + "fieldtype": "Small Text", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Contact", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "contact_mobile", - "fieldtype": "Small Text", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Mobile No", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "contact_mobile", + "fieldtype": "Small Text", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Mobile No", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "contact_email", - "fieldtype": "Small Text", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Contact Email", - "no_copy": 0, - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "contact_email", + "fieldtype": "Small Text", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Contact Email", + "no_copy": 0, + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "is_pos", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Is POS", - "no_copy": 0, - "oldfieldname": "is_pos", - "oldfieldtype": "Check", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "is_pos", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Is POS", + "no_copy": 0, + "oldfieldname": "is_pos", + "oldfieldtype": "Check", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "is_return", - "fieldname": "is_return", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Is Return", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "is_return", + "fieldname": "is_return", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Is Return", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break1", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "oldfieldtype": "Column Break", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break1", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "oldfieldtype": "Column Break", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 1, - "collapsible": 0, - "default": "Today", - "fieldname": "posting_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Date", - "no_copy": 1, - "oldfieldname": "posting_date", - "oldfieldtype": "Date", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 1, + "collapsible": 0, + "default": "Today", + "fieldname": "posting_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Date", + "no_copy": 1, + "oldfieldname": "posting_date", + "oldfieldtype": "Date", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "due_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Payment Due Date", - "no_copy": 1, - "oldfieldname": "due_date", - "oldfieldtype": "Date", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "due_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Payment Due Date", + "no_copy": 1, + "oldfieldname": "due_date", + "oldfieldtype": "Date", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "company", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Company", - "no_copy": 0, - "oldfieldname": "company", - "oldfieldtype": "Link", - "options": "Company", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "company", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Company", + "no_copy": 0, + "oldfieldname": "company", + "oldfieldtype": "Link", + "options": "Company", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "amended_from", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 1, - "in_filter": 0, - "in_list_view": 0, - "label": "Amended From", - "no_copy": 1, - "oldfieldname": "amended_from", - "oldfieldtype": "Link", - "options": "Sales Invoice", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 1, + "in_filter": 0, + "in_list_view": 0, + "label": "Amended From", + "no_copy": 1, + "oldfieldname": "amended_from", + "oldfieldtype": "Link", + "options": "Sales Invoice", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "is_return", - "fieldname": "return_against", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Return Against Sales Invoice", - "no_copy": 0, - "options": "Sales Invoice", - "permlevel": 0, - "precision": "", - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "is_return", + "fieldname": "return_against", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Return Against Sales Invoice", + "no_copy": 0, + "options": "Sales Invoice", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "shipping_address_name", - "fieldtype": "Link", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Shipping Address Name", - "no_copy": 0, - "options": "Address", - "permlevel": 0, - "precision": "", - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "shipping_address_name", + "fieldtype": "Link", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Shipping Address Name", + "no_copy": 0, + "options": "Address", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "shipping_address", - "fieldtype": "Small Text", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Shipping Address", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "shipping_address", + "fieldtype": "Small Text", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Shipping Address", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "fieldname": "currency_and_price_list", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Currency and Price List", - "no_copy": 0, - "options": "", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "fieldname": "currency_and_price_list", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Currency and Price List", + "no_copy": 0, + "options": "", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "currency", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Currency", - "no_copy": 0, - "oldfieldname": "currency", - "oldfieldtype": "Select", - "options": "Currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "currency", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Currency", + "no_copy": 0, + "oldfieldname": "currency", + "oldfieldtype": "Select", + "options": "Currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "Rate at which Customer Currency is converted to customer's base currency", - "fieldname": "conversion_rate", - "fieldtype": "Float", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Exchange Rate", - "no_copy": 0, - "oldfieldname": "conversion_rate", - "oldfieldtype": "Currency", - "permlevel": 0, - "precision": "9", - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "Rate at which Customer Currency is converted to customer's base currency", + "fieldname": "conversion_rate", + "fieldtype": "Float", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Exchange Rate", + "no_copy": 0, + "oldfieldname": "conversion_rate", + "oldfieldtype": "Currency", + "permlevel": 0, + "precision": "9", + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break2", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break2", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "selling_price_list", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Price List", - "no_copy": 0, - "oldfieldname": "price_list_name", - "oldfieldtype": "Select", - "options": "Price List", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "selling_price_list", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Price List", + "no_copy": 0, + "oldfieldname": "price_list_name", + "oldfieldtype": "Select", + "options": "Price List", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "price_list_currency", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Price List Currency", - "no_copy": 0, - "options": "Currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "price_list_currency", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Price List Currency", + "no_copy": 0, + "options": "Currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "Rate at which Price list currency is converted to customer's base currency", - "fieldname": "plc_conversion_rate", - "fieldtype": "Float", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Price List Exchange Rate", - "no_copy": 0, - "permlevel": 0, - "precision": "9", - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "Rate at which Price list currency is converted to customer's base currency", + "fieldname": "plc_conversion_rate", + "fieldtype": "Float", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Price List Exchange Rate", + "no_copy": 0, + "permlevel": 0, + "precision": "9", + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "ignore_pricing_rule", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Ignore Pricing Rule", - "no_copy": 1, - "permlevel": 1, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "ignore_pricing_rule", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Ignore Pricing Rule", + "no_copy": 1, + "permlevel": 1, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "items_section", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "icon-shopping-cart", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "items_section", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "icon-shopping-cart", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "update_stock", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Update Stock", - "no_copy": 0, - "oldfieldname": "update_stock", - "oldfieldtype": "Check", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "update_stock", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Update Stock", + "no_copy": 0, + "oldfieldname": "update_stock", + "oldfieldtype": "Check", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "fieldname": "items", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Items", - "no_copy": 0, - "oldfieldname": "entries", - "oldfieldtype": "Table", - "options": "Sales Invoice Item", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "fieldname": "items", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Items", + "no_copy": 0, + "oldfieldname": "entries", + "oldfieldtype": "Table", + "options": "Sales Invoice Item", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "packing_list", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Packing List", - "no_copy": 0, - "options": "icon-suitcase", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "packing_list", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Packing List", + "no_copy": 0, + "options": "icon-suitcase", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "packed_items", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Packed Items", - "no_copy": 0, - "options": "Packed Item", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "packed_items", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Packed Items", + "no_copy": 0, + "options": "Packed Item", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "product_bundle_help", - "fieldtype": "HTML", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Product Bundle Help", - "no_copy": 0, - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "product_bundle_help", + "fieldtype": "HTML", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Product Bundle Help", + "no_copy": 0, + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "section_break_30", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "section_break_30", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "base_total", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Total (Company Currency)", - "no_copy": 0, - "options": "Company:company:default_currency", - "permlevel": 0, - "precision": "", - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "base_total", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Total (Company Currency)", + "no_copy": 0, + "options": "Company:company:default_currency", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "base_net_total", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Net Total (Company Currency)", - "no_copy": 0, - "oldfieldname": "net_total", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "base_net_total", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Net Total (Company Currency)", + "no_copy": 0, + "oldfieldname": "net_total", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_32", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_32", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "total", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Total", - "no_copy": 0, - "options": "currency", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "total", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Total", + "no_copy": 0, + "options": "currency", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "net_total", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Net Total", - "no_copy": 0, - "options": "currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "net_total", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Net Total", + "no_copy": 0, + "options": "currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "taxes_section", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "icon-money", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "taxes_section", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "icon-money", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "taxes_and_charges", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Taxes and Charges", - "no_copy": 0, - "oldfieldname": "charge", - "oldfieldtype": "Link", - "options": "Sales Taxes and Charges Template", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "taxes_and_charges", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Taxes and Charges", + "no_copy": 0, + "oldfieldname": "charge", + "oldfieldtype": "Link", + "options": "Sales Taxes and Charges Template", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_38", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_38", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "shipping_rule", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Shipping Rule", - "no_copy": 0, - "oldfieldtype": "Button", - "options": "Shipping Rule", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "shipping_rule", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Shipping Rule", + "no_copy": 0, + "oldfieldtype": "Button", + "options": "Shipping Rule", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "section_break_40", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "section_break_40", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "fieldname": "taxes", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Sales Taxes and Charges", - "no_copy": 0, - "oldfieldname": "other_charges", - "oldfieldtype": "Table", - "options": "Sales Taxes and Charges", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "fieldname": "taxes", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Sales Taxes and Charges", + "no_copy": 0, + "oldfieldname": "other_charges", + "oldfieldtype": "Table", + "options": "Sales Taxes and Charges", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "other_charges_calculation", - "fieldtype": "HTML", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Taxes and Charges Calculation", - "no_copy": 0, - "oldfieldtype": "HTML", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "other_charges_calculation", + "fieldtype": "HTML", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Taxes and Charges Calculation", + "no_copy": 0, + "oldfieldtype": "HTML", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "section_break_43", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "section_break_43", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "base_total_taxes_and_charges", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Total Taxes and Charges (Company Currency)", - "no_copy": 0, - "oldfieldname": "other_charges_total", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "base_total_taxes_and_charges", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Total Taxes and Charges (Company Currency)", + "no_copy": 0, + "oldfieldname": "other_charges_total", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_47", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_47", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "total_taxes_and_charges", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Total Taxes and Charges", - "no_copy": 0, - "options": "currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "total_taxes_and_charges", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Total Taxes and Charges", + "no_copy": 0, + "options": "currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "discount_amount", - "fieldname": "section_break_49", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Discount", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "discount_amount", + "fieldname": "section_break_49", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Additional Discount", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": "Grand Total", - "fieldname": "apply_discount_on", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Apply Additional Discount On", - "no_copy": 0, - "options": "\nGrand Total\nNet Total", - "permlevel": 0, - "precision": "", - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "Grand Total", + "fieldname": "apply_discount_on", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Apply Additional Discount On", + "no_copy": 0, + "options": "\nGrand Total\nNet Total", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_51", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_51", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "discount_amount", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Additional Discount Amount", - "no_copy": 0, - "options": "currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "discount_amount", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Additional Discount Amount", + "no_copy": 0, + "options": "currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "base_discount_amount", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Additional Discount Amount (Company Currency)", - "no_copy": 0, - "options": "Company:company:default_currency", - "permlevel": 0, - "precision": "", - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "base_discount_amount", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Additional Discount Amount (Company Currency)", + "no_copy": 0, + "options": "Company:company:default_currency", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "totals", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "icon-money", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "totals", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "icon-money", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "base_grand_total", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Grand Total (Company Currency)", - "no_copy": 0, - "oldfieldname": "grand_total", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "base_grand_total", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Grand Total (Company Currency)", + "no_copy": 0, + "oldfieldname": "grand_total", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "base_rounded_total", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Rounded Total (Company Currency)", - "no_copy": 0, - "oldfieldname": "rounded_total", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "base_rounded_total", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Rounded Total (Company Currency)", + "no_copy": 0, + "oldfieldname": "rounded_total", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "In Words will be visible once you save the Sales Invoice.", - "fieldname": "base_in_words", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "In Words (Company Currency)", - "no_copy": 0, - "oldfieldname": "in_words", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "In Words will be visible once you save the Sales Invoice.", + "fieldname": "base_in_words", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "In Words (Company Currency)", + "no_copy": 0, + "oldfieldname": "in_words", + "oldfieldtype": "Data", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break5", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "oldfieldtype": "Column Break", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break5", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "oldfieldtype": "Column Break", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 1, - "collapsible": 0, - "fieldname": "grand_total", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Grand Total", - "no_copy": 0, - "oldfieldname": "grand_total_export", - "oldfieldtype": "Currency", - "options": "currency", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 1, + "collapsible": 0, + "fieldname": "grand_total", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 1, + "label": "Grand Total", + "no_copy": 0, + "oldfieldname": "grand_total_export", + "oldfieldtype": "Currency", + "options": "currency", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "rounded_total", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Rounded Total", - "no_copy": 0, - "oldfieldname": "rounded_total_export", - "oldfieldtype": "Currency", - "options": "currency", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "rounded_total", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Rounded Total", + "no_copy": 0, + "oldfieldname": "rounded_total_export", + "oldfieldtype": "Currency", + "options": "currency", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "in_words", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "In Words", - "no_copy": 0, - "oldfieldname": "in_words_export", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "in_words", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "In Words", + "no_copy": 0, + "oldfieldname": "in_words_export", + "oldfieldtype": "Data", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "total_advance", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Total Advance", - "no_copy": 0, - "oldfieldname": "total_advance", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "total_advance", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Total Advance", + "no_copy": 0, + "oldfieldname": "total_advance", + "oldfieldtype": "Currency", + "options": "party_account_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "outstanding_amount", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Outstanding Amount", - "no_copy": 1, - "oldfieldname": "outstanding_amount", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "outstanding_amount", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Outstanding Amount", + "no_copy": 1, + "oldfieldname": "outstanding_amount", + "oldfieldtype": "Currency", + "options": "party_account_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "advances", - "fieldname": "advances_section", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Advance Payments", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "icon-money", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "advances", + "fieldname": "advances_section", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Advance Payments", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "icon-money", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "get_advances_received", - "fieldtype": "Button", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Get Advances Received", - "no_copy": 0, - "oldfieldtype": "Button", - "options": "get_advances", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "get_advances_received", + "fieldtype": "Button", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Get Advances Received", + "no_copy": 0, + "oldfieldtype": "Button", + "options": "get_advances", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "advances", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Advances", - "no_copy": 0, - "oldfieldname": "advance_adjustment_details", - "oldfieldtype": "Table", - "options": "Sales Invoice Advance", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "advances", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Advances", + "no_copy": 0, + "oldfieldname": "advance_adjustment_details", + "oldfieldtype": "Table", + "options": "Sales Invoice Advance", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "paid_amount", - "depends_on": "eval:doc.is_pos===1||(doc.advances && doc.advances.length>0)", - "fieldname": "payments_section", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Payments", - "no_copy": 0, - "options": "icon-money", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "paid_amount", + "depends_on": "eval:doc.is_pos===1||(doc.advances && doc.advances.length>0)", + "fieldname": "payments_section", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Payments", + "no_copy": 0, + "options": "icon-money", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "mode_of_payment", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Mode of Payment", - "no_copy": 0, - "oldfieldname": "mode_of_payment", - "oldfieldtype": "Select", - "options": "Mode of Payment", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "mode_of_payment", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Mode of Payment", + "no_copy": 0, + "oldfieldname": "mode_of_payment", + "oldfieldtype": "Select", + "options": "Mode of Payment", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "is_pos", - "fieldname": "cash_bank_account", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Cash/Bank Account", - "no_copy": 0, - "oldfieldname": "cash_bank_account", - "oldfieldtype": "Link", - "options": "Account", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "is_pos", + "fieldname": "cash_bank_account", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Cash/Bank Account", + "no_copy": 0, + "oldfieldname": "cash_bank_account", + "oldfieldtype": "Link", + "options": "Account", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "is_pos", - "fieldname": "column_break3", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "is_pos", + "fieldname": "column_break3", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "is_pos", - "fieldname": "paid_amount", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Paid Amount", - "no_copy": 1, - "oldfieldname": "paid_amount", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "is_pos", + "fieldname": "paid_amount", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Paid Amount", + "no_copy": 1, + "oldfieldname": "paid_amount", + "oldfieldtype": "Currency", + "options": "currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "write_off_amount", - "depends_on": "grand_total", - "fieldname": "column_break4", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Write Off", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "base_paid_amount", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Paid Amount (Company Currency)", + "no_copy": 1, + "options": "Company:company:default_currency", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "write_off_amount", + "depends_on": "grand_total", + "fieldname": "column_break4", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Write Off", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "", - "fieldname": "write_off_amount", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Write Off Amount", - "no_copy": 1, - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "", + "fieldname": "write_off_amount", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Write Off Amount", + "no_copy": 1, + "options": "currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "is_pos", - "fieldname": "write_off_outstanding_amount_automatically", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Write Off Outstanding Amount", - "no_copy": 0, - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "base_write_off_amount", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Write Off Amount (Company Currency)", + "no_copy": 1, + "options": "Company:company:default_currency", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "", - "fieldname": "column_break_74", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "is_pos", + "fieldname": "write_off_outstanding_amount_automatically", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Write Off Outstanding Amount", + "no_copy": 0, + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "", - "fieldname": "write_off_account", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Write Off Account", - "no_copy": 0, - "options": "Account", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "", + "fieldname": "column_break_74", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "", - "fieldname": "write_off_cost_center", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Write Off Cost Center", - "no_copy": 0, - "options": "Cost Center", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "", + "fieldname": "write_off_account", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Write Off Account", + "no_copy": 0, + "options": "Account", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "terms", - "fieldname": "terms_section_break", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Terms", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "", + "fieldname": "write_off_cost_center", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Write Off Cost Center", + "no_copy": 0, + "options": "Cost Center", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "tc_name", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Terms", - "no_copy": 0, - "oldfieldname": "tc_name", - "oldfieldtype": "Link", - "options": "Terms and Conditions", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "terms", + "fieldname": "terms_section_break", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Terms", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "terms", - "fieldtype": "Text Editor", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Terms and Conditions Details", - "no_copy": 0, - "oldfieldname": "terms", - "oldfieldtype": "Text Editor", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "tc_name", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Terms", + "no_copy": 0, + "oldfieldname": "tc_name", + "oldfieldtype": "Link", + "options": "Terms and Conditions", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "fieldname": "edit_printing_settings", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Printing Settings", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "terms", + "fieldtype": "Text Editor", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Terms and Conditions Details", + "no_copy": 0, + "oldfieldname": "terms", + "oldfieldtype": "Text Editor", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "fieldname": "letter_head", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Letter Head", - "no_copy": 0, - "oldfieldname": "letter_head", - "oldfieldtype": "Select", - "options": "Letter Head", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "fieldname": "edit_printing_settings", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Printing Settings", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_84", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "fieldname": "letter_head", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Letter Head", + "no_copy": 0, + "oldfieldname": "letter_head", + "oldfieldtype": "Select", + "options": "Letter Head", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "fieldname": "select_print_heading", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Print Heading", - "no_copy": 1, - "oldfieldname": "select_print_heading", - "oldfieldtype": "Link", - "options": "Print Heading", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 1, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_84", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "depends_on": "customer", - "fieldname": "contact_section", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "More Information", - "no_copy": 0, - "options": "icon-bullhorn", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "fieldname": "select_print_heading", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Print Heading", + "no_copy": 1, + "oldfieldname": "select_print_heading", + "oldfieldtype": "Link", + "options": "Print Heading", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 1, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "project_name", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Project Name", - "no_copy": 0, - "oldfieldname": "project_name", - "oldfieldtype": "Link", - "options": "Project", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "depends_on": "customer", + "fieldname": "contact_section", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "More Information", + "no_copy": 0, + "options": "icon-bullhorn", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "", - "fieldname": "territory", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Territory", - "no_copy": 0, - "options": "Territory", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "project_name", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Project Name", + "no_copy": 0, + "oldfieldname": "project_name", + "oldfieldtype": "Link", + "options": "Project", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "", - "fieldname": "customer_group", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Customer Group", - "no_copy": 0, - "options": "Customer Group", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "", + "fieldname": "territory", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Territory", + "no_copy": 0, + "options": "Territory", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "col_break23", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "", + "fieldname": "customer_group", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Customer Group", + "no_copy": 0, + "options": "Customer Group", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "col_break23", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "customer_address", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Customer Address", - "no_copy": 0, - "options": "Address", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "customer_address", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Customer Address", + "no_copy": 0, + "options": "Address", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "contact_person", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Contact Person", - "no_copy": 0, - "options": "Contact", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "contact_person", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Contact Person", + "no_copy": 0, + "options": "Contact", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.source == 'Campaign'", - "fieldname": "campaign", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Campaign", - "no_copy": 0, - "oldfieldname": "campaign", - "oldfieldtype": "Link", - "options": "Campaign", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.source == 'Campaign'", + "fieldname": "campaign", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Campaign", + "no_copy": 0, + "oldfieldname": "campaign", + "oldfieldtype": "Link", + "options": "Campaign", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "source", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Source", - "no_copy": 0, - "oldfieldname": "source", - "oldfieldtype": "Select", - "options": "\nExisting Customer\nReference\nAdvertisement\nCold Calling\nExhibition\nSupplier Reference\nMass Mailing\nCustomer's Vendor\nCampaign", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "source", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Source", + "no_copy": 0, + "oldfieldname": "source", + "oldfieldtype": "Select", + "options": "\nExisting Customer\nReference\nAdvertisement\nCold Calling\nExhibition\nSupplier Reference\nMass Mailing\nCustomer's Vendor\nCampaign", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "fieldname": "more_info", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Accounting Details", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "icon-file-text", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "fieldname": "more_info", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Accounting Details", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "icon-file-text", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "", - "fieldname": "debit_to", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Debit To", - "no_copy": 0, - "oldfieldname": "debit_to", - "oldfieldtype": "Link", - "options": "Account", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "", + "fieldname": "debit_to", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Debit To", + "no_copy": 0, + "oldfieldname": "debit_to", + "oldfieldtype": "Link", + "options": "Account", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": "No", - "description": "", - "fieldname": "is_opening", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Is Opening Entry", - "no_copy": 0, - "oldfieldname": "is_opening", - "oldfieldtype": "Select", - "options": "No\nYes", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "party_account_currency", + "fieldtype": "Link", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Party Account Currency", + "no_copy": 1, + "options": "Currency", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "c_form_applicable", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "C-Form Applicable", - "no_copy": 1, - "options": "No\nYes", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "No", + "description": "", + "fieldname": "is_opening", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Is Opening Entry", + "no_copy": 0, + "oldfieldname": "is_opening", + "oldfieldtype": "Select", + "options": "No\nYes", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "c_form_no", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "C-Form No", - "no_copy": 1, - "options": "C-Form", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "c_form_applicable", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "C-Form Applicable", + "no_copy": 1, + "options": "No\nYes", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break8", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "oldfieldtype": "Column Break", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "c_form_no", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "C-Form No", + "no_copy": 1, + "options": "C-Form", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "posting_time", - "fieldtype": "Time", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Posting Time", - "no_copy": 1, - "oldfieldname": "posting_time", - "oldfieldtype": "Time", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break8", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "oldfieldtype": "Column Break", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "fiscal_year", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Fiscal Year", - "no_copy": 0, - "oldfieldname": "fiscal_year", - "oldfieldtype": "Select", - "options": "Fiscal Year", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "posting_time", + "fieldtype": "Time", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Posting Time", + "no_copy": 1, + "oldfieldname": "posting_time", + "oldfieldtype": "Time", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "remarks", - "fieldtype": "Small Text", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Remarks", - "no_copy": 1, - "oldfieldname": "remarks", - "oldfieldtype": "Text", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "fiscal_year", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Fiscal Year", + "no_copy": 0, + "oldfieldname": "fiscal_year", + "oldfieldtype": "Select", + "options": "Fiscal Year", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "sales_partner", - "fieldname": "sales_team_section_break", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Commission", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "icon-group", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "remarks", + "fieldtype": "Small Text", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Remarks", + "no_copy": 1, + "oldfieldname": "remarks", + "oldfieldtype": "Text", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "sales_partner", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Sales Partner", - "no_copy": 0, - "oldfieldname": "sales_partner", - "oldfieldtype": "Link", - "options": "Sales Partner", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "sales_partner", + "fieldname": "sales_team_section_break", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Commission", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "icon-group", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break10", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "oldfieldtype": "Column Break", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "sales_partner", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Sales Partner", + "no_copy": 0, + "oldfieldname": "sales_partner", + "oldfieldtype": "Link", + "options": "Sales Partner", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break10", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "oldfieldtype": "Column Break", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "commission_rate", - "fieldtype": "Float", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Commission Rate (%)", - "no_copy": 0, - "oldfieldname": "commission_rate", - "oldfieldtype": "Currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "commission_rate", + "fieldtype": "Float", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Commission Rate (%)", + "no_copy": 0, + "oldfieldname": "commission_rate", + "oldfieldtype": "Currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "total_commission", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Total Commission", - "no_copy": 0, - "oldfieldname": "total_commission", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "total_commission", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Total Commission", + "no_copy": 0, + "oldfieldname": "total_commission", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "sales_team", - "fieldname": "section_break2", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Sales Team", - "no_copy": 0, - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "sales_team", + "fieldname": "section_break2", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Sales Team", + "no_copy": 0, + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "sales_team", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Sales Team1", - "no_copy": 0, - "oldfieldname": "sales_team", - "oldfieldtype": "Table", - "options": "Sales Team", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "sales_team", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Sales Team1", + "no_copy": 0, + "oldfieldname": "sales_team", + "oldfieldtype": "Table", + "options": "Sales Team", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "is_recurring", - "depends_on": "eval:doc.docstatus<2", - "fieldname": "recurring_invoice", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Recurring", - "no_copy": 0, - "options": "icon-time", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "is_recurring", + "depends_on": "eval:doc.docstatus<2", + "fieldname": "recurring_invoice", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Recurring", + "no_copy": 0, + "options": "icon-time", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break11", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break11", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.docstatus<2", - "description": "Check if recurring invoice, uncheck to stop recurring or put proper End Date", - "fieldname": "is_recurring", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Is Recurring", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.docstatus<2", + "description": "Check if recurring invoice, uncheck to stop recurring or put proper End Date", + "fieldname": "is_recurring", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Is Recurring", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "description": "Select the period when the invoice will be generated automatically", - "fieldname": "recurring_type", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Recurring Type", - "no_copy": 1, - "options": "\nMonthly\nQuarterly\nHalf-yearly\nYearly", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "description": "Select the period when the invoice will be generated automatically", + "fieldname": "recurring_type", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Recurring Type", + "no_copy": 1, + "options": "\nMonthly\nQuarterly\nHalf-yearly\nYearly", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "description": "Start date of current invoice's period", - "fieldname": "from_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "From Date", - "no_copy": 1, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "description": "Start date of current invoice's period", + "fieldname": "from_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "From Date", + "no_copy": 1, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "description": "End date of current invoice's period", - "fieldname": "to_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "To Date", - "no_copy": 1, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "description": "End date of current invoice's period", + "fieldname": "to_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "To Date", + "no_copy": 1, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "description": "The day of the month on which auto invoice will be generated e.g. 05, 28 etc ", - "fieldname": "repeat_on_day_of_month", - "fieldtype": "Int", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Repeat on Day of Month", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "description": "The day of the month on which auto invoice will be generated e.g. 05, 28 etc ", + "fieldname": "repeat_on_day_of_month", + "fieldtype": "Int", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Repeat on Day of Month", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "description": "The date on which recurring invoice will be stop", - "fieldname": "end_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "End Date", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "description": "The date on which recurring invoice will be stop", + "fieldname": "end_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "End Date", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break12", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break12", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "description": "The date on which next invoice will be generated. It is generated on submit.\n", - "fieldname": "next_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Next Date", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "description": "The date on which next invoice will be generated. It is generated on submit.\n", + "fieldname": "next_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Next Date", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "description": "The unique id for tracking all recurring invoices.\u00a0It is generated on submit.", - "fieldname": "recurring_id", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Recurring Id", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "description": "The unique id for tracking all recurring invoices.\u00a0It is generated on submit.", + "fieldname": "recurring_id", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Recurring Id", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "description": "Enter email id separated by commas, invoice will be mailed automatically on particular date", - "fieldname": "notification_email_address", - "fieldtype": "Small Text", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Notification Email Address", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "description": "Enter email id separated by commas, invoice will be mailed automatically on particular date", + "fieldname": "notification_email_address", + "fieldtype": "Small Text", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Notification Email Address", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.is_recurring==1", - "fieldname": "recurring_print_format", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Recurring Print Format", - "no_copy": 0, - "options": "Print Format", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.is_recurring==1", + "fieldname": "recurring_print_format", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Recurring Print Format", + "no_copy": 0, + "options": "Print Format", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "against_income_account", - "fieldtype": "Small Text", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Against Income Account", - "no_copy": 1, - "oldfieldname": "against_income_account", - "oldfieldtype": "Small Text", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 1, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "against_income_account", + "fieldtype": "Small Text", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Against Income Account", + "no_copy": 1, + "oldfieldname": "against_income_account", + "oldfieldtype": "Small Text", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 1, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 } - ], - "hide_heading": 0, - "hide_toolbar": 0, - "icon": "icon-file-text", - "idx": 1, - "in_create": 0, - "in_dialog": 0, - "is_submittable": 1, - "issingle": 0, - "istable": 0, - "modified": "2015-09-07 15:51:26", - "modified_by": "Administrator", - "module": "Accounts", - "name": "Sales Invoice", - "owner": "Administrator", + ], + "hide_heading": 0, + "hide_toolbar": 0, + "icon": "icon-file-text", + "idx": 1, + "in_create": 0, + "in_dialog": 0, + "is_submittable": 1, + "issingle": 0, + "istable": 0, + "modified": "2015-09-11 12:21:06.545927", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Sales Invoice", + "owner": "Administrator", "permissions": [ { - "amend": 1, - "apply_user_permissions": 0, - "cancel": 1, - "create": 1, - "delete": 1, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Accounts Manager", - "set_user_permissions": 0, - "share": 1, - "submit": 1, + "amend": 1, + "apply_user_permissions": 0, + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Accounts Manager", + "set_user_permissions": 0, + "share": 1, + "submit": 1, "write": 1 - }, + }, { - "amend": 1, - "apply_user_permissions": 0, - "cancel": 0, - "create": 1, - "delete": 0, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Accounts User", - "set_user_permissions": 0, - "share": 1, - "submit": 1, + "amend": 1, + "apply_user_permissions": 0, + "cancel": 0, + "create": 1, + "delete": 0, + "email": 1, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Accounts User", + "set_user_permissions": 0, + "share": 1, + "submit": 1, "write": 1 - }, + }, { - "amend": 0, - "apply_user_permissions": 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": "Customer", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Customer", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 - }, + }, { - "amend": 0, - "apply_user_permissions": 0, - "cancel": 0, - "create": 0, - "delete": 0, - "email": 0, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 1, - "print": 0, - "read": 1, - "report": 0, - "role": "Accounts Manager", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 0, + "delete": 0, + "email": 0, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 1, + "print": 0, + "read": 1, + "report": 0, + "role": "Accounts Manager", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 1 } - ], - "read_only": 0, - "read_only_onload": 1, - "search_fields": "posting_date, due_date, customer, fiscal_year, base_grand_total, outstanding_amount", - "sort_field": "modified", - "sort_order": "DESC", + ], + "read_only": 0, + "read_only_onload": 1, + "search_fields": "posting_date, due_date, customer, fiscal_year, base_grand_total, outstanding_amount", + "sort_field": "modified", + "sort_order": "DESC", "title_field": "title" -} \ No newline at end of file +} diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index 2ebe25da0c0..030fddbb997 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -271,7 +271,7 @@ class SalesInvoice(SellingController): 'party_type': 'Customer', 'party': self.customer, 'is_advance' : 'Yes', - 'dr_or_cr' : 'credit', + 'dr_or_cr' : 'credit_in_account_currency', 'unadjusted_amt' : flt(d.advance_amount), 'allocated_amt' : flt(d.allocated_amount) } @@ -282,13 +282,16 @@ class SalesInvoice(SellingController): reconcile_against_document(lst) def validate_debit_to_acc(self): - account = frappe.db.get_value("Account", self.debit_to, ["account_type", "report_type"], as_dict=True) + account = frappe.db.get_value("Account", self.debit_to, + ["account_type", "report_type", "account_currency"], as_dict=True) if account.report_type != "Balance Sheet": frappe.throw(_("Debit To account must be a Balance Sheet account")) if self.customer and account.account_type != "Receivable": frappe.throw(_("Debit To account must be a Receivable account")) + + self.party_account_currency = account.account_currency def validate_fixed_asset_account(self): """Validate Fixed Asset and whether Income Account Entered Exists""" @@ -434,15 +437,18 @@ class SalesInvoice(SellingController): if cint(self.is_pos) == 1: if flt(self.paid_amount) == 0: if self.cash_bank_account: - frappe.db.set(self, 'paid_amount', - (flt(self.base_grand_total) - flt(self.write_off_amount))) + frappe.db.set(self, 'paid_amount', + flt(flt(self.grand_total) - flt(self.write_off_amount), self.precision("paid_amount"))) else: # show message that the amount is not paid frappe.db.set(self,'paid_amount',0) frappe.msgprint(_("Note: Payment Entry will not be created since 'Cash or Bank Account' was not specified")) else: frappe.db.set(self,'paid_amount',0) - + + frappe.db.set(self, 'base_paid_amount', + flt(self.paid_amount*self.conversion_rate, self.precision("base_paid_amount"))) + def check_prev_docstatus(self): for d in self.get('items'): if d.sales_order and frappe.db.get_value("Sales Order", d.sales_order, "docstatus") != 1: @@ -481,7 +487,7 @@ class SalesInvoice(SellingController): from erpnext.accounts.general_ledger import merge_similar_entries gl_entries = [] - + self.make_customer_gl_entry(gl_entries) self.make_tax_gl_entries(gl_entries) @@ -498,7 +504,7 @@ class SalesInvoice(SellingController): return gl_entries def make_customer_gl_entry(self, gl_entries): - if self.base_grand_total: + if self.grand_total: gl_entries.append( self.get_gl_dict({ "account": self.debit_to, @@ -506,37 +512,42 @@ class SalesInvoice(SellingController): "party": self.customer, "against": self.against_income_account, "debit": self.base_grand_total, - "remarks": self.remarks, + "debit_in_account_currency": self.base_grand_total \ + if self.party_account_currency==self.company_currency else self.grand_total, "against_voucher": self.return_against if cint(self.is_return) else self.name, "against_voucher_type": self.doctype - }) + }, self.party_account_currency) ) def make_tax_gl_entries(self, gl_entries): for tax in self.get("taxes"): if flt(tax.base_tax_amount_after_discount_amount): + account_currency = frappe.db.get_value("Account", tax.account_head, "account_currency") gl_entries.append( self.get_gl_dict({ "account": tax.account_head, "against": self.customer, "credit": flt(tax.base_tax_amount_after_discount_amount), - "remarks": self.remarks, + "credit_in_account_currency": flt(tax.base_tax_amount_after_discount_amount) \ + if account_currency==self.company_currency else flt(tax.tax_amount_after_discount_amount), "cost_center": tax.cost_center - }) + }, account_currency) ) def make_item_gl_entries(self, gl_entries): # income account gl entries for item in self.get("items"): if flt(item.base_net_amount): + account_currency = frappe.db.get_value("Account", item.income_account, "account_currency") gl_entries.append( self.get_gl_dict({ "account": item.income_account, "against": self.customer, "credit": item.base_net_amount, - "remarks": self.remarks, + "credit_in_account_currency": item.base_net_amount \ + if account_currency==self.company_currency else item.net_amount, "cost_center": item.cost_center - }) + }, account_currency) ) # expense account gl entries @@ -546,6 +557,7 @@ class SalesInvoice(SellingController): def make_pos_gl_entries(self, gl_entries): if cint(self.is_pos) and self.cash_bank_account and self.paid_amount: + bank_account_currency = frappe.db.get_value("Account", self.cash_bank_account, "account_currency") # POS, make payment entries gl_entries.append( self.get_gl_dict({ @@ -553,44 +565,50 @@ class SalesInvoice(SellingController): "party_type": "Customer", "party": self.customer, "against": self.cash_bank_account, - "credit": self.paid_amount, - "remarks": self.remarks, + "credit": self.base_paid_amount, + "credit_in_account_currency": self.base_paid_amount \ + if self.party_account_currency==self.company_currency else self.paid_amount, "against_voucher": self.return_against if cint(self.is_return) else self.name, "against_voucher_type": self.doctype, - }) + }, self.party_account_currency) ) gl_entries.append( self.get_gl_dict({ "account": self.cash_bank_account, "against": self.customer, - "debit": self.paid_amount, - "remarks": self.remarks, - }) + "debit": self.base_paid_amount, + "debit_in_account_currency": self.base_paid_amount \ + if bank_account_currency==self.company_currency else self.paid_amount + }, bank_account_currency) ) def make_write_off_gl_entry(self, gl_entries): # write off entries, applicable if only pos if self.write_off_account and self.write_off_amount: + write_off_account_currency = frappe.db.get_value("Account", self.write_off_account, "account_currency") + gl_entries.append( self.get_gl_dict({ "account": self.debit_to, "party_type": "Customer", "party": self.customer, "against": self.write_off_account, - "credit": self.write_off_amount, - "remarks": self.remarks, + "credit": self.base_write_off_amount, + "credit_in_account_currency": self.base_write_off_amount \ + if self.party_account_currency==self.company_currency else self.write_off_amount, "against_voucher": self.return_against if cint(self.is_return) else self.name, - "against_voucher_type": self.doctype, - }) + "against_voucher_type": self.doctype + }, self.party_account_currency) ) gl_entries.append( self.get_gl_dict({ "account": self.write_off_account, "against": self.customer, - "debit": self.write_off_amount, - "remarks": self.remarks, + "debit": self.base_write_off_amount, + "debit_in_account_currency": self.base_write_off_amount \ + if write_off_account_currency==self.company_currency else self.write_off_amount, "cost_center": self.write_off_cost_center - }) + }, write_off_account_currency) ) def get_list_context(context=None): diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py index c7a992c489c..449f98d8f2d 100644 --- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py @@ -7,6 +7,8 @@ import unittest, copy from frappe.utils import nowdate, add_days, flt from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry, get_qty_after_transaction from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import set_perpetual_inventory +from erpnext.controllers.accounts_controller import InvalidCurrency +from erpnext.accounts.doctype.gl_entry.gl_entry import InvalidAccountCurrency class TestSalesInvoice(unittest.TestCase): def make(self): @@ -401,7 +403,7 @@ class TestSalesInvoice(unittest.TestCase): jv.cancel() self.assertEquals(frappe.db.get_value("Sales Invoice", w.name, "outstanding_amount"), 561.8) - def test_sales_invoice_gl_entry_without_aii(self): + def test_sales_invoice_gl_entry_without_perpetual_inventory(self): set_perpetual_inventory(0) si = frappe.copy_doc(test_records[1]) si.insert() @@ -433,7 +435,7 @@ class TestSalesInvoice(unittest.TestCase): self.assertFalse(gle) - def test_pos_gl_entry_with_aii(self): + def test_pos_gl_entry_with_perpetual_inventory(self): set_perpetual_inventory() self.make_pos_profile() @@ -442,8 +444,7 @@ class TestSalesInvoice(unittest.TestCase): pos = copy.deepcopy(test_records[1]) pos["is_pos"] = 1 pos["update_stock"] = 1 - # pos["posting_time"] = "12:05" - pos["cash_bank_account"] = "_Test Account Bank Account - _TC" + pos["cash_bank_account"] = "_Test Bank - _TC" pos["paid_amount"] = 600.0 si = frappe.copy_doc(pos) @@ -474,7 +475,7 @@ class TestSalesInvoice(unittest.TestCase): [stock_in_hand, 0.0, abs(sle.stock_value_difference)], [pos["items"][0]["expense_account"], abs(sle.stock_value_difference), 0.0], [si.debit_to, 0.0, 600.0], - ["_Test Account Bank Account - _TC", 600.0, 0.0] + ["_Test Bank - _TC", 600.0, 0.0] ]) for i, gle in enumerate(sorted(gl_entries, key=lambda gle: gle.account)): @@ -494,7 +495,7 @@ class TestSalesInvoice(unittest.TestCase): def make_pos_profile(self): pos_profile = frappe.get_doc({ - "cash_bank_account": "_Test Account Bank Account - _TC", + "cash_bank_account": "_Test Bank - _TC", "company": "_Test Company", "cost_center": "_Test Cost Center - _TC", "currency": "INR", @@ -513,7 +514,7 @@ class TestSalesInvoice(unittest.TestCase): if not frappe.db.exists("POS Profile", "_Test POS Profile"): pos_profile.insert() - def test_si_gl_entry_with_aii_and_update_stock_with_warehouse_but_no_account(self): + def test_si_gl_entry_with_perpetual_inventory_and_update_stock_with_warehouse_but_no_account(self): set_perpetual_inventory() frappe.delete_doc("Account", "_Test Warehouse No Account - _TC") @@ -567,7 +568,7 @@ class TestSalesInvoice(unittest.TestCase): self.assertFalse(gle) set_perpetual_inventory(0) - def test_sales_invoice_gl_entry_with_aii_no_item_code(self): + def test_sales_invoice_gl_entry_with_perpetual_inventory_no_item_code(self): set_perpetual_inventory() si = frappe.get_doc(test_records[1]) @@ -593,7 +594,7 @@ class TestSalesInvoice(unittest.TestCase): set_perpetual_inventory(0) - def test_sales_invoice_gl_entry_with_aii_non_stock_item(self): + def test_sales_invoice_gl_entry_with_perpetual_inventory_non_stock_item(self): set_perpetual_inventory() si = frappe.get_doc(test_records[1]) si.get("items")[0].item_code = "_Test Non Stock Item" @@ -660,7 +661,7 @@ class TestSalesInvoice(unittest.TestCase): where reference_name=%s""", si.name)) self.assertTrue(frappe.db.sql("""select name from `tabJournal Entry Account` - where reference_name=%s and credit=300""", si.name)) + where reference_name=%s and credit_in_account_currency=300""", si.name)) self.assertEqual(si.outstanding_amount, 261.8) @@ -841,7 +842,80 @@ class TestSalesInvoice(unittest.TestCase): self.assertEquals(si.total_taxes_and_charges, 234.44) self.assertEquals(si.base_grand_total, 859.44) self.assertEquals(si.grand_total, 859.44) + + def test_multi_currency_gle(self): + set_perpetual_inventory(0) + si = create_sales_invoice(customer="_Test Customer USD", debit_to="_Test Receivable USD - _TC", + currency="USD", conversion_rate=50) + gl_entries = frappe.db.sql("""select account, account_currency, debit, credit, + debit_in_account_currency, credit_in_account_currency + from `tabGL Entry` where voucher_type='Sales Invoice' and voucher_no=%s + order by account asc""", si.name, as_dict=1) + + self.assertTrue(gl_entries) + + expected_values = { + "_Test Receivable USD - _TC": { + "account_currency": "USD", + "debit": 5000, + "debit_in_account_currency": 100, + "credit": 0, + "credit_in_account_currency": 0 + }, + "Sales - _TC": { + "account_currency": "INR", + "debit": 0, + "debit_in_account_currency": 0, + "credit": 5000, + "credit_in_account_currency": 5000 + } + } + + for field in ("account_currency", "debit", "debit_in_account_currency", "credit", "credit_in_account_currency"): + for i, gle in enumerate(gl_entries): + self.assertEquals(expected_values[gle.account][field], gle[field]) + + # cancel + si.cancel() + + gle = frappe.db.sql("""select name from `tabGL Entry` + where voucher_type='Sales Invoice' and voucher_no=%s""", si.name) + + self.assertFalse(gle) + + def test_invalid_currency(self): + # Customer currency = USD + + # Transaction currency cannot be INR + si1 = create_sales_invoice(customer="_Test Customer USD", debit_to="_Test Receivable USD - _TC", + do_not_save=True) + + self.assertRaises(InvalidCurrency, si1.save) + + # Transaction currency cannot be EUR + si2 = create_sales_invoice(customer="_Test Customer USD", debit_to="_Test Receivable USD - _TC", + currency="EUR", conversion_rate=80, do_not_save=True) + + self.assertRaises(InvalidCurrency, si2.save) + + # Transaction currency only allowed in USD + si3 = create_sales_invoice(customer="_Test Customer USD", debit_to="_Test Receivable USD - _TC", + currency="USD", conversion_rate=50) + + # Party Account currency must be in USD, as there is existing GLE with USD + si4 = create_sales_invoice(customer="_Test Customer USD", debit_to="_Test Receivable - _TC", + currency="USD", conversion_rate=50, do_not_submit=True) + + self.assertRaises(InvalidAccountCurrency, si4.submit) + + # Party Account currency must be in USD, force customer currency as there is no GLE + + si3.cancel() + si5 = create_sales_invoice(customer="_Test Customer USD", debit_to="_Test Receivable - _TC", + currency="USD", conversion_rate=50, do_not_submit=True) + + self.assertRaises(InvalidAccountCurrency, si5.submit) def create_sales_invoice(**args): si = frappe.new_doc("Sales Invoice") @@ -856,14 +930,15 @@ def create_sales_invoice(**args): si.is_pos = args.is_pos si.is_return = args.is_return si.return_against = args.return_against - si.currency="INR" - si.conversion_rate = 1 + si.currency=args.currency or "INR" + si.conversion_rate = args.conversion_rate or 1 si.append("items", { "item_code": args.item or args.item_code or "_Test Item", "warehouse": args.warehouse or "_Test Warehouse - _TC", "qty": args.qty or 1, "rate": args.rate or 100, + "income_account": "Sales - _TC", "expense_account": "Cost of Goods Sold - _TC", "cost_center": "_Test Cost Center - _TC", "serial_no": args.serial_no diff --git a/erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.json b/erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.json index e4c039c6359..363e3237a79 100644 --- a/erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.json +++ b/erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.json @@ -117,7 +117,7 @@ "no_copy": 1, "oldfieldname": "advance_amount", "oldfieldtype": "Currency", - "options": "Company:company:default_currency", + "options": "party_account_currency", "permlevel": 0, "print_hide": 0, "print_width": "120px", @@ -143,7 +143,7 @@ "no_copy": 1, "oldfieldname": "allocated_amount", "oldfieldtype": "Currency", - "options": "Company:company:default_currency", + "options": "party_account_currency", "permlevel": 0, "print_hide": 0, "print_width": "120px", @@ -164,7 +164,7 @@ "is_submittable": 0, "issingle": 0, "istable": 1, - "modified": "2014-12-25 16:30:19.446500", + "modified": "2015-08-21 16:22:28.866049", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice Advance", diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.json b/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.json index bbba7d39bfe..9a3a4580f53 100644 --- a/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.json +++ b/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.json @@ -8,7 +8,7 @@ "description": "Standard tax template that can be applied to all Sales Transactions. This template can contain list of tax heads and also other expense / income heads like \"Shipping\", \"Insurance\", \"Handling\" etc.\n\n#### Note\n\nThe tax rate you define here will be the standard tax rate for all **Items**. If there are **Items** that have different rates, they must be added in the **Item Tax** table in the **Item** master.\n\n#### Description of Columns\n\n1. Calculation Type: \n - This can be on **Net Total** (that is the sum of basic amount).\n - **On Previous Row Total / Amount** (for cumulative taxes or charges). If you select this option, the tax will be applied as a percentage of the previous row (in the tax table) amount or total.\n - **Actual** (as mentioned).\n2. Account Head: The Account ledger under which this tax will be booked\n3. Cost Center: If the tax / charge is an income (like shipping) or expense it needs to be booked against a Cost Center.\n4. Description: Description of the tax (that will be printed in invoices / quotes).\n5. Rate: Tax rate.\n6. Amount: Tax amount.\n7. Total: Cumulative total to this point.\n8. Enter Row: If based on \"Previous Row Total\" you can select the row number which will be taken as a base for this calculation (default is the previous row).\n9. Is this Tax included in Basic Rate?: If you check this, it means that this tax will not be shown below the item table, but will be included in the Basic Rate in your main item table. This is useful where you want give a flat price (inclusive of all taxes) price to customers.", "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -21,7 +21,7 @@ "in_filter": 1, "in_list_view": 0, "label": "Title", - "no_copy": 0, + "no_copy": 1, "oldfieldname": "title", "oldfieldtype": "Data", "permlevel": 0, @@ -198,7 +198,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-11 12:19:46.488710", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Taxes and Charges Template", diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py index 7edd69f70a1..ed2a0494b2b 100644 --- a/erpnext/accounts/general_ledger.py +++ b/erpnext/accounts/general_ledger.py @@ -27,14 +27,25 @@ def process_gl_map(gl_map, merge_entries=True): gl_map = merge_similar_entries(gl_map) for entry in gl_map: - # toggle debit, credit if negative entry + # toggle debit, credit if negative entry if flt(entry.debit) < 0: entry.credit = flt(entry.credit) - flt(entry.debit) entry.debit = 0.0 + + if flt(entry.debit_in_account_currency) < 0: + entry.credit_in_account_currency = \ + flt(entry.credit_in_account_currency) - flt(entry.debit_in_account_currency) + entry.debit_in_account_currency = 0.0 + if flt(entry.credit) < 0: entry.debit = flt(entry.debit) - flt(entry.credit) entry.credit = 0.0 - + + if flt(entry.credit_in_account_currency) < 0: + entry.debit_in_account_currency = \ + flt(entry.debit_in_account_currency) - flt(entry.credit_in_account_currency) + entry.credit_in_account_currency = 0.0 + return gl_map def merge_similar_entries(gl_map): @@ -45,7 +56,11 @@ def merge_similar_entries(gl_map): same_head = check_if_in_list(entry, merged_gl_map) if same_head: same_head.debit = flt(same_head.debit) + flt(entry.debit) + same_head.debit_in_account_currency = \ + flt(same_head.debit_in_account_currency) + flt(entry.debit_in_account_currency) same_head.credit = flt(same_head.credit) + flt(entry.credit) + same_head.credit_in_account_currency = \ + flt(same_head.credit_in_account_currency) + flt(entry.credit_in_account_currency) else: merged_gl_map.append(entry) diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.js b/erpnext/accounts/page/accounts_browser/accounts_browser.js index 157a924e12f..abd7612ce05 100644 --- a/erpnext/accounts/page/accounts_browser/accounts_browser.js +++ b/erpnext/accounts/page/accounts_browser/accounts_browser.js @@ -166,7 +166,7 @@ erpnext.AccountsChart = Class.extend({ var dr_or_cr = node.data.balance < 0 ? "Cr" : "Dr"; if (me.ctype == 'Account' && node.data && node.data.balance!==undefined) { $('' - + format_currency(Math.abs(node.data.balance), node.data.currency) + + format_currency(Math.abs(node.data.balance), node.data.account_currency) + " " + dr_or_cr + '').insertBefore(node.$ul); } @@ -214,7 +214,8 @@ erpnext.AccountsChart = Class.extend({ 'Income Account', 'Tax', 'Chargeable', 'Temporary'].join('\n'), description: __("Optional. This setting will be used to filter in various transactions.") }, {fieldtype:'Float', fieldname:'tax_rate', label:__('Tax Rate')}, - {fieldtype:'Link', fieldname:'warehouse', label:__('Warehouse'), options:"Warehouse"} + {fieldtype:'Link', fieldname:'warehouse', label:__('Warehouse'), options:"Warehouse"}, + {fieldtype:'Link', fieldname:'account_currency', label:__('Currency'), options:"Currency"} ] }) diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.py b/erpnext/accounts/page/accounts_browser/accounts_browser.py index 593794a5cb5..80101ce0c53 100644 --- a/erpnext/accounts/page/accounts_browser/accounts_browser.py +++ b/erpnext/accounts/page/accounts_browser/accounts_browser.py @@ -21,8 +21,7 @@ def get_children(): # root if args['parent'] in ("Accounts", "Cost Centers"): - select_cond = ", root_type, report_type" if args["parent"]=="Accounts" else "" - + select_cond = ", root_type, report_type, account_currency" if ctype=="Account" else "" acc = frappe.db.sql(""" select name as value, is_group as expandable %s from `tab%s` @@ -35,19 +34,17 @@ def get_children(): sort_root_accounts(acc) else: # other + select_cond = ", account_currency" if ctype=="Account" else "" acc = frappe.db.sql("""select - name as value, is_group as expandable + name as value, is_group as expandable %s from `tab%s` where ifnull(parent_%s,'') = %s and docstatus<2 - order by name""" % (ctype, ctype.lower().replace(' ','_'), '%s'), + order by name""" % (select_cond, ctype, ctype.lower().replace(' ','_'), '%s'), args['parent'], as_dict=1) if ctype == 'Account': - currency = frappe.db.sql("select default_currency from `tabCompany` where name = %s", company)[0][0] for each in acc: - bal = get_balance_on(each.get("value")) - each["currency"] = currency - each["balance"] = flt(bal) + each["balance"] = flt(get_balance_on(each.get("value"))) return acc diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py index 250286c4367..4f49bc07fd6 100644 --- a/erpnext/accounts/party.py +++ b/erpnext/accounts/party.py @@ -7,10 +7,13 @@ import frappe import datetime from frappe import _, msgprint, scrub from frappe.defaults import get_user_permissions -from frappe.utils import add_days, getdate, formatdate, flt, get_first_day, date_diff, nowdate +from frappe.utils import add_days, getdate, formatdate, get_first_day, date_diff from erpnext.utilities.doctype.address.address import get_address_display from erpnext.utilities.doctype.contact.contact import get_contact_details +class InvalidCurrency(frappe.ValidationError): pass +class InvalidAccountCurrency(frappe.ValidationError): pass + @frappe.whitelist() def get_party_details(party=None, account=None, party_type="Customer", company=None, posting_date=None, price_list=None, currency=None, doctype=None): @@ -141,7 +144,61 @@ def set_account_and_due_date(party, account, party_type, company, posting_date, "due_date": get_due_date(posting_date, party_type, party, company) } return out - + +def validate_accounting_currency(party): + company_currency = get_company_currency() + + # set party account currency + if not party.party_account_currency: + if party.default_currency: + party.party_account_currency = party.default_currency + elif len(set(company_currency.values())) == 1: + party.party_account_currency = company_currency.values()[0] + + party_account_currency_in_db = frappe.db.get_value(party.doctype, party.name, "party_account_currency") + if party_account_currency_in_db != party.party_account_currency: + existing_gle = frappe.db.get_value("GL Entry", {"party_type": party.doctype, + "party": party.name}, ["name", "account_currency"], as_dict=1) + if existing_gle: + if party_account_currency_in_db: + frappe.throw(_("Accounting Currency cannot be changed, as GL Entry exists for this {0}") + .format(party.doctype), InvalidCurrency) + else: + party.party_account_currency = existing_gle.account_currency + + +def validate_party_account(party): + company_currency = get_company_currency() + if party.party_account_currency: + companies_with_different_currency = [] + for company, currency in company_currency.items(): + if currency != party.party_account_currency: + companies_with_different_currency.append(company) + + for d in party.get("accounts"): + if d.company in companies_with_different_currency: + companies_with_different_currency.remove(d.company) + + selected_account_currency = frappe.db.get_value("Account", d.account, "account_currency") + if selected_account_currency != party.party_account_currency: + frappe.throw(_("Account {0} is invalid, account currency must be {1}") + .format(d.account, selected_account_currency), InvalidAccountCurrency) + + if companies_with_different_currency: + frappe.msgprint(_("Please mention Default {0} Account for the following companies, as accounting currency is different from company's default currency: {1}") + .format( + "Receivable" if party.doctype=="Customer" else "Payable", + "\n" + "\n".join(companies_with_different_currency) + ) + ) + +def get_company_currency(): + company_currency = frappe._dict() + for d in frappe.get_all("Company", fields=["name", "default_currency"]): + company_currency.setdefault(d.name, d.default_currency) + + return company_currency + @frappe.whitelist() def get_party_account(company, party, party_type): """Returns the account for the given `party`. diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py index 19703be8ebc..21bd570e7e6 100644 --- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py +++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py @@ -30,19 +30,40 @@ class ReceivablePayableReport(object): if args.get("party_type") == "Supplier": columns += [_("Bill No") + "::80", _("Bill Date") + ":Date:80"] - columns += [_("Invoiced Amount") + ":Currency:100", _("Paid Amount") + ":Currency:100", - _("Outstanding Amount") + ":Currency:100", _("Age") + ":Int:50", - "0-" + str(self.filters.range1) + ":Currency:100", - str(self.filters.range1) + "-" + str(self.filters.range2) + ":Currency:100", - str(self.filters.range2) + "-" + str(self.filters.range3) + ":Currency:100", - str(self.filters.range3) + _("-Above") + ":Currency:100" - ] + for label in ("Invoiced Amount", "Paid Amount", "Outstanding Amount"): + columns.append({ + "label": label, + "fieldtype": "Currency", + "options": "currency", + "width": 120 + }) + + columns += [_("Age (Days)") + "::80"] + + for label in ("0-{range1}".format(**self.filters), + "{range1}-{range2}".format(**self.filters), + "{range2}-{range3}".format(**self.filters), + "{range3}-{above}".format(range3=self.filters.range3, above=_("Above"))): + columns.append({ + "label": label, + "fieldtype": "Currency", + "options": "currency", + "width": 120 + }) if args.get("party_type") == "Customer": columns += [_("Territory") + ":Link/Territory:80"] if args.get("party_type") == "Supplier": columns += [_("Supplier Type") + ":Link/Supplier Type:80"] - columns += [_("Remarks") + "::200"] + columns += [ + { + "fieldname": "currency", + "label": _("Currency"), + "fieldtype": "Data", + "width": 100, + }, + _("Remarks") + "::200" + ] return columns @@ -54,7 +75,9 @@ class ReceivablePayableReport(object): voucher_details = self.get_voucher_details(args.get("party_type")) future_vouchers = self.get_entries_after(self.filters.report_date, args.get("party_type")) - + + company_currency = frappe.db.get_value("Company", self.filters.get("company"), "default_currency") + data = [] for gle in self.get_entries_till(self.filters.report_date, args.get("party_type")): if self.is_receivable_or_payable(gle, dr_or_cr, future_vouchers): @@ -91,10 +114,16 @@ class ReceivablePayableReport(object): # customer territory / supplier type if args.get("party_type") == "Customer": - row += [self.get_territory(gle.party), gle.remarks] + row += [self.get_territory(gle.party)] if args.get("party_type") == "Supplier": - row += [self.get_supplier_type(gle.party), gle.remarks] + row += [self.get_supplier_type(gle.party)] + + if self.filters.get(scrub(args.get("party_type"))): + row.append(gle.account_currency) + else: + row.append(company_currency) + row.append(gle.remarks) data.append(row) return data @@ -155,7 +184,7 @@ class ReceivablePayableReport(object): def get_voucher_details(self, party_type): voucher_details = frappe._dict() - + if party_type == "Customer": for si in frappe.db.sql("""select name, due_date from `tabSales Invoice` where docstatus=1""", as_dict=1): @@ -171,17 +200,24 @@ class ReceivablePayableReport(object): def get_gl_entries(self, party_type): if not hasattr(self, "gl_entries"): conditions, values = self.prepare_conditions(party_type) - self.gl_entries = frappe.db.sql("""select name, posting_date, account, party_type, party, debit, credit, - voucher_type, voucher_no, against_voucher_type, against_voucher from `tabGL Entry` - where docstatus < 2 and party_type=%s {0} order by posting_date, party""" - .format(conditions), values, as_dict=True) + + if self.filters.get(scrub(party_type)): + select_fields = "debit_in_account_currency as debit, credit_in_account_currency as credit" + else: + select_fields = "debit, credit" + + self.gl_entries = frappe.db.sql("""select name, posting_date, account, party_type, party, + voucher_type, voucher_no, against_voucher_type, against_voucher, account_currency, remarks, {0} + from `tabGL Entry` + where docstatus < 2 and party_type=%s {1} order by posting_date, party""" + .format(select_fields, conditions), values, as_dict=True) return self.gl_entries def prepare_conditions(self, party_type): conditions = [""] values = [party_type] - + party_type_field = scrub(party_type) if self.filters.company: @@ -190,7 +226,7 @@ class ReceivablePayableReport(object): if self.filters.get(party_type_field): conditions.append("party=%s") - values.append(self.filters.get(party_type_field)) + values.append(self.filters.get(party_type_field)) return " and ".join(conditions), values diff --git a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py index e592f69700d..7016c4690b3 100644 --- a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py +++ b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py @@ -23,7 +23,8 @@ def execute(filters=None): total_debit += flt(d[2]) total_credit += flt(d[3]) - amounts_not_reflected_in_system = frappe.db.sql("""select sum(ifnull(jvd.debit, 0) - ifnull(jvd.credit, 0)) + amounts_not_reflected_in_system = frappe.db.sql(""" + select sum(ifnull(jvd.debit_in_account_currency, 0) - ifnull(jvd.credit_in_account_currency, 0)) from `tabJournal Entry Account` jvd, `tabJournal Entry` jv where jvd.parent = jv.name and jv.docstatus=1 and jvd.account=%s and jv.posting_date > %s and jv.clearance_date <= %s and ifnull(jv.is_opening, 'No') = 'No' @@ -38,7 +39,7 @@ def execute(filters=None): data += [ get_balance_row(_("System Balance"), balance_as_per_system), [""]*len(columns), - ["", '"' + _("Amounts not reflected in bank") + '"', total_debit, total_credit, "", "", "", ""], + ["", '"' + _("Amounts not reflected in bank") + '"', total_debit, total_credit, "", "", "", "", ""], get_balance_row(_("Amounts not reflected in system"), amounts_not_reflected_in_system), [""]*len(columns), get_balance_row(_("Expected balance as per bank"), bank_bal) @@ -49,13 +50,14 @@ def execute(filters=None): def get_columns(): return [_("Posting Date") + ":Date:100", _("Journal Entry") + ":Link/Journal Entry:220", _("Debit") + ":Currency:120", _("Credit") + ":Currency:120", - _("Against Account") + ":Link/Account:200", _("Reference") + "::100", _("Ref Date") + ":Date:110", _("Clearance Date") + ":Date:110" + _("Against Account") + ":Link/Account:200", _("Reference") + "::100", + _("Ref Date") + ":Date:110", _("Clearance Date") + ":Date:110", _("Currency") + ":Link/Currency:70" ] def get_entries(filters): entries = frappe.db.sql("""select - jv.posting_date, jv.name, jvd.debit, jvd.credit, - jvd.against_account, jv.cheque_no, jv.cheque_date, jv.clearance_date + jv.posting_date, jv.name, jvd.debit_in_account_currency, jvd.credit_in_account_currency, + jvd.against_account, jv.cheque_no, jv.cheque_date, jv.clearance_date, jvd.account_currency from `tabJournal Entry Account` jvd, `tabJournal Entry` jv where jvd.parent = jv.name and jv.docstatus=1 @@ -68,6 +70,6 @@ def get_entries(filters): def get_balance_row(label, amount): if amount > 0: - return ["", '"' + label + '"', amount, 0, "", "", "", ""] + return ["", '"' + label + '"', amount, 0, "", "", "", "", ""] else: - return ["", '"' + label + '"', 0, abs(amount), "", "", "", ""] + return ["", '"' + label + '"', 0, abs(amount), "", "", "", "", ""] diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py index 1cc9f4fc35e..fd91929a76a 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.py +++ b/erpnext/accounts/report/general_ledger/general_ledger.py @@ -12,9 +12,12 @@ def execute(filters=None): account_details.setdefault(acc.name, acc) validate_filters(filters, account_details) + validate_party(filters) + + filters = set_account_currency(filters) - columns = get_columns() + columns = get_columns(filters) res = get_result(filters, account_details) @@ -43,36 +46,77 @@ def validate_party(filters): frappe.throw(_("To filter based on Party, select Party Type first")) elif not frappe.db.exists(party_type, party): frappe.throw(_("Invalid {0}: {1}").format(party_type, party)) - -def get_columns(): - return [_("Posting Date") + ":Date:90", _("Account") + ":Link/Account:200", - _("Debit") + ":Float:100", _("Credit") + ":Float:100", + +def set_account_currency(filters): + if not (filters.get("account") or filters.get("party")): + return filters + else: + filters["company_currency"] = frappe.db.get_value("Company", filters.company, "default_currency") + account_currency = None + + if filters.get("account"): + account_currency = frappe.db.get_value("Account", filters.account, "account_currency") + elif filters.get("party"): + gle_currency = frappe.db.get_value("GL Entry", {"party_type": filters.party_type, + "party": filters.party, "company": filters.company}, "account_currency") + if gle_currency: + account_currency = gle_currency + else: + account_currency = frappe.db.get_value(filters.party_type, filters.party, "default_currency") + + filters["account_currency"] = account_currency or filters.company_currency + + if filters.account_currency != filters.company_currency: + filters["show_in_account_currency"] = 1 + + return filters + +def get_columns(filters): + columns = [ + _("Posting Date") + ":Date:90", _("Account") + ":Link/Account:200", + _("Debit") + ":Float:100", _("Credit") + ":Float:100" + ] + + if filters.get("show_in_account_currency"): + columns += [ + _("Debit") + " (" + filters.account_currency + ")" + ":Float:100", + _("Credit") + " (" + filters.account_currency + ")" + ":Float:100" + ] + + columns += [ _("Voucher Type") + "::120", _("Voucher No") + ":Dynamic Link/Voucher Type:160", _("Against Account") + "::120", _("Party Type") + "::80", _("Party") + "::150", - _("Cost Center") + ":Link/Cost Center:100", _("Remarks") + "::400"] + _("Cost Center") + ":Link/Cost Center:100", _("Remarks") + "::400" + ] + + return columns def get_result(filters, account_details): gl_entries = get_gl_entries(filters) data = get_data_with_opening_closing(filters, account_details, gl_entries) - result = get_result_as_list(data) + result = get_result_as_list(data, filters) return result def get_gl_entries(filters): + select_fields = """, sum(ifnull(debit_in_account_currency, 0)) as debit_in_account_currency, + sum(ifnull(credit_in_account_currency, 0)) as credit_in_account_currency""" \ + if filters.get("show_in_account_currency") else "" + group_by_condition = "group by voucher_type, voucher_no, account, cost_center" \ if filters.get("group_by_voucher") else "group by name" gl_entries = frappe.db.sql("""select posting_date, account, party_type, party, - sum(ifnull(debit, 0)) as debit, sum(ifnull(credit, 0)) as credit, - voucher_type, voucher_no, cost_center, remarks, against, is_opening + sum(ifnull(debit, 0)) as debit, sum(ifnull(credit, 0)) as credit, + voucher_type, voucher_no, cost_center, remarks, against, is_opening {select_fields} from `tabGL Entry` where company=%(company)s {conditions} {group_by_condition} order by posting_date, account"""\ - .format(conditions=get_conditions(filters), group_by_condition=group_by_condition), - filters, as_dict=1) + .format(select_fields=select_fields, conditions=get_conditions(filters), + group_by_condition=group_by_condition), filters, as_dict=1) return gl_entries @@ -105,35 +149,51 @@ def get_data_with_opening_closing(filters, account_details, gl_entries): data = [] gle_map = initialize_gle_map(gl_entries) - opening, total_debit, total_credit, gle_map = get_accountwise_gle(filters, gl_entries, gle_map) + opening, total_debit, total_credit, opening_in_account_currency, total_debit_in_account_currency, \ + total_credit_in_account_currency, gle_map = get_accountwise_gle(filters, gl_entries, gle_map) # Opening for filtered account if filters.get("account") or filters.get("party"): - data += [get_balance_row(_("Opening"), opening), {}] + data += [get_balance_row(_("Opening"), opening, opening_in_account_currency), {}] for acc, acc_dict in gle_map.items(): if acc_dict.entries: # Opening for individual ledger, if grouped by account if filters.get("group_by_account"): - data.append(get_balance_row(_("Opening"), acc_dict.opening)) + data.append(get_balance_row(_("Opening"), acc_dict.opening, + acc_dict.opening_in_account_currency)) data += acc_dict.entries # Totals and closing for individual ledger, if grouped by account if filters.get("group_by_account"): + account_closing = acc_dict.opening + acc_dict.total_debit - acc_dict.total_credit + account_closing_in_account_currency = acc_dict.opening_in_account_currency \ + + acc_dict.total_debit_in_account_currency - acc_dict.total_credit_in_account_currency + data += [{"account": "'" + _("Totals") + "'", "debit": acc_dict.total_debit, "credit": acc_dict.total_credit}, get_balance_row(_("Closing (Opening + Totals)"), - (acc_dict.opening + acc_dict.total_debit - acc_dict.total_credit)), {}] + account_closing, account_closing_in_account_currency), {}] # Total debit and credit between from and to date if total_debit or total_credit: - data.append({"account": "'" + _("Totals") + "'", "debit": total_debit, "credit": total_credit}) + data.append({ + "account": "'" + _("Totals") + "'", + "debit": total_debit, + "credit": total_credit, + "debit_in_account_currency": total_debit_in_account_currency, + "credit_in_account_currency": total_credit_in_account_currency + }) # Closing for filtered account if filters.get("account") or filters.get("party"): + closing = opening + total_debit - total_credit + closing_in_account_currency = opening_in_account_currency + \ + total_debit_in_account_currency - total_credit_in_account_currency + data.append(get_balance_row(_("Closing (Opening + Totals)"), - (opening + total_debit - total_credit))) + closing, closing_in_account_currency)) return data @@ -142,46 +202,83 @@ def initialize_gle_map(gl_entries): for gle in gl_entries: gle_map.setdefault(gle.account, frappe._dict({ "opening": 0, + "opening_in_account_currency": 0, "entries": [], "total_debit": 0, + "total_debit_in_account_currency": 0, "total_credit": 0, - "closing": 0 + "total_credit_in_account_currency": 0, + "closing": 0, + "closing_in_account_currency": 0 })) return gle_map def get_accountwise_gle(filters, gl_entries, gle_map): opening, total_debit, total_credit = 0, 0, 0 + opening_in_account_currency, total_debit_in_account_currency, total_credit_in_account_currency = 0, 0, 0 + from_date, to_date = getdate(filters.from_date), getdate(filters.to_date) for gle in gl_entries: amount = flt(gle.debit, 3) - flt(gle.credit, 3) + amount_in_account_currency = flt(gle.debit_in_account_currency, 3) - flt(gle.credit_in_account_currency, 3) + if (filters.get("account") or filters.get("party") or filters.get("group_by_account")) \ and (gle.posting_date < from_date or cstr(gle.is_opening) == "Yes"): + gle_map[gle.account].opening += amount + if filters.get("show_in_account_currency"): + gle_map[gle.account].opening_in_account_currency += amount_in_account_currency + if filters.get("account") or filters.get("party"): opening += amount + if filters.get("show_in_account_currency"): + opening_in_account_currency += amount_in_account_currency + elif gle.posting_date <= to_date: gle_map[gle.account].entries.append(gle) gle_map[gle.account].total_debit += flt(gle.debit, 3) gle_map[gle.account].total_credit += flt(gle.credit, 3) - + total_debit += flt(gle.debit, 3) total_credit += flt(gle.credit, 3) + + if filters.get("show_in_account_currency"): + gle_map[gle.account].total_debit_in_account_currency += flt(gle.debit_in_account_currency, 3) + gle_map[gle.account].total_credit_in_account_currency += flt(gle.credit_in_account_currency, 3) + + total_debit_in_account_currency += flt(gle.debit_in_account_currency, 3) + total_credit_in_account_currency += flt(gle.credit_in_account_currency, 3) - return opening, total_debit, total_credit, gle_map + return opening, total_debit, total_credit, opening_in_account_currency, \ + total_debit_in_account_currency, total_credit_in_account_currency, gle_map -def get_balance_row(label, balance): - return { +def get_balance_row(label, balance, balance_in_account_currency=None): + balance_row = { "account": "'" + label + "'", "debit": balance if balance > 0 else 0, - "credit": -1*balance if balance < 0 else 0, + "credit": -1*balance if balance < 0 else 0 } + + if balance_in_account_currency != None: + balance_row.update({ + "debit_in_account_currency": balance_in_account_currency if balance_in_account_currency > 0 else 0, + "credit_in_account_currency": -1*balance_in_account_currency if balance_in_account_currency < 0 else 0 + }) + + return balance_row -def get_result_as_list(data): +def get_result_as_list(data, filters): result = [] for d in data: - result.append([d.get("posting_date"), d.get("account"), d.get("debit"), - d.get("credit"), d.get("voucher_type"), d.get("voucher_no"), - d.get("against"), d.get("party_type"), d.get("party"), - d.get("cost_center"), d.get("remarks")]) + row = [d.get("posting_date"), d.get("account"), d.get("debit"), d.get("credit")] + + if filters.get("show_in_account_currency"): + row += [d.get("debit_in_account_currency"), d.get("credit_in_account_currency")] + + row += [d.get("voucher_type"), d.get("voucher_no"), d.get("against"), + d.get("party_type"), d.get("party"), d.get("cost_center"), d.get("remarks") + ] + + result.append(row) return result diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py index 51c79160c7a..04084ed0e83 100644 --- a/erpnext/accounts/utils.py +++ b/erpnext/accounts/utils.py @@ -50,7 +50,7 @@ def validate_fiscal_year(date, fiscal_year, label=_("Date"), doc=None): throw(_("{0} '{1}' not in Fiscal Year {2}").format(label, formatdate(date), fiscal_year)) @frappe.whitelist() -def get_balance_on(account=None, date=None, party_type=None, party=None): +def get_balance_on(account=None, date=None, party_type=None, party=None, in_account_currency=True): if not account and frappe.form_dict.get("account"): account = frappe.form_dict.get("account") if not date and frappe.form_dict.get("date"): @@ -94,18 +94,27 @@ def get_balance_on(account=None, date=None, party_type=None, party=None): select name from `tabAccount` ac where ac.name = gle.account and ac.lft >= %s and ac.rgt <= %s )""" % (acc.lft, acc.rgt)) + + # If group and currency same as company, + # always return balance based on debit and credit in company currency + if acc.account_currency == frappe.db.get_value("Company", acc.company, "default_currency"): + in_account_currency = False else: cond.append("""gle.account = "%s" """ % (account.replace('"', '\\"'), )) if party_type and party: cond.append("""gle.party_type = "%s" and gle.party = "%s" """ % (party_type.replace('"', '\\"'), party.replace('"', '\\"'))) - + if account or (party_type and party): + if in_account_currency: + select_field = "sum(ifnull(debit_in_account_currency, 0)) - sum(ifnull(credit_in_account_currency, 0))" + else: + select_field = "sum(ifnull(debit, 0)) - sum(ifnull(credit, 0))" bal = frappe.db.sql(""" - SELECT sum(ifnull(debit, 0)) - sum(ifnull(credit, 0)) + SELECT {0} FROM `tabGL Entry` gle - WHERE %s""" % " and ".join(cond))[0][0] + WHERE {1}""".format(select_field, " and ".join(cond)))[0][0] # if bal is None, return 0 return flt(bal) @@ -194,21 +203,26 @@ def update_against_doc(d, jv_obj): jv_detail.set("reference_name", d["against_voucher"]) if d['allocated_amt'] < d['unadjusted_amt']: - jvd = frappe.db.sql("""select cost_center, balance, against_account, is_advance - from `tabJournal Entry Account` where name = %s""", d['voucher_detail_no']) + jvd = frappe.db.sql(""" + select cost_center, balance, against_account, is_advance, account_type, exchange_rate + from `tabJournal Entry Account` where name = %s + """, d['voucher_detail_no'], as_dict=True) + # new entry with balance amount ch = jv_obj.append("accounts") ch.account = d['account'] + ch.account_type = jvd[0]['account_type'] + ch.exchange_rate = jvd[0]['exchange_rate'] ch.party_type = d["party_type"] ch.party = d["party"] - ch.cost_center = cstr(jvd[0][0]) - ch.balance = flt(jvd[0][1]) + ch.cost_center = cstr(jvd[0]["cost_center"]) + ch.balance = flt(jvd[0]["balance"]) ch.set(d['dr_or_cr'], flt(d['unadjusted_amt']) - flt(d['allocated_amt'])) ch.set(d['dr_or_cr']== 'debit' and 'credit' or 'debit', 0) - ch.against_account = cstr(jvd[0][2]) + ch.against_account = cstr(jvd[0]["against_account"]) ch.reference_type = original_reference_type ch.reference_name = original_reference_name - ch.is_advance = cstr(jvd[0][3]) + ch.is_advance = cstr(jvd[0]["is_advance"]) ch.docstatus = 1 # will work as update after submit @@ -273,7 +287,7 @@ def get_stock_and_account_difference(account_list=None, posting_date=None): and name in (%s)""" % ', '.join(['%s']*len(account_list)), account_list)) for account, warehouse in account_warehouse.items(): - account_balance = get_balance_on(account, posting_date) + account_balance = get_balance_on(account, posting_date, in_account_currency=False) stock_value = get_stock_value_on(warehouse, posting_date) if abs(flt(stock_value) - flt(account_balance)) > 0.005: difference.setdefault(account, flt(stock_value) - flt(account_balance)) @@ -378,12 +392,12 @@ def get_stock_rbnb_difference(posting_date, company): # Balance as per system stock_rbnb_account = "Stock Received But Not Billed - " + frappe.db.get_value("Company", company, "abbr") - sys_bal = get_balance_on(stock_rbnb_account, posting_date) + sys_bal = get_balance_on(stock_rbnb_account, posting_date, in_account_currency=False) # Amount should be credited return flt(stock_rbnb) + flt(sys_bal) -def get_outstanding_invoices(amount_query, account, party_type, party): +def get_outstanding_invoices(amount_query, account, party_type, party, with_journal_entry=True): all_outstanding_vouchers = [] outstanding_voucher_list = frappe.db.sql(""" select @@ -411,6 +425,9 @@ def get_outstanding_invoices(amount_query, account, party_type, party): payment_amount = -1*payment_amount[0][0] if payment_amount else 0 precision = frappe.get_precision("Sales Invoice", "outstanding_amount") + if not with_journal_entry and d.voucher_type=="Journal Entry": + continue + if d.invoice_amount > payment_amount: all_outstanding_vouchers.append({ diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.js b/erpnext/buying/doctype/purchase_common/purchase_common.js index 7693e080946..f372cd84d8d 100644 --- a/erpnext/buying/doctype/purchase_common/purchase_common.js +++ b/erpnext/buying/doctype/purchase_common/purchase_common.js @@ -157,20 +157,9 @@ erpnext.buying.BuyingController = erpnext.TransactionController.extend({ }, add_deduct_tax: function(doc, cdt, cdn) { this.calculate_taxes_and_totals(); - }, - - calculate_outstanding_amount: function() { - if(this.frm.doc.doctype == "Purchase Invoice" && this.frm.doc.docstatus < 2) { - frappe.model.round_floats_in(this.frm.doc, ["base_grand_total", "total_advance", "write_off_amount"]); - this.frm.doc.total_amount_to_pay = flt(this.frm.doc.base_grand_total - this.frm.doc.write_off_amount, - precision("total_amount_to_pay")); - if (!this.frm.doc.is_return) { - this.frm.doc.outstanding_amount = flt(this.frm.doc.total_amount_to_pay - this.frm.doc.total_advance, - precision("outstanding_amount")); - } - } } }); + cur_frm.add_fetch('project_name', 'cost_center', 'cost_center'); erpnext.buying.get_default_bom = function(frm) { diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json index 4b646c609db..b092037b714 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.json +++ b/erpnext/buying/doctype/purchase_order/purchase_order.json @@ -43,7 +43,7 @@ "in_filter": 0, "in_list_view": 0, "label": "Title", - "no_copy": 0, + "no_copy": 1, "permlevel": 0, "precision": "", "print_hide": 0, @@ -2032,7 +2032,7 @@ "is_submittable": 1, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-11 12:19:55.502661", "modified_by": "Administrator", "module": "Buying", "name": "Purchase Order", diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py index 07644404082..e8c79d8e7a7 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/purchase_order.py @@ -166,7 +166,7 @@ class PurchaseOrder(BuyingController): self.update_ordered_qty() msgprint(_("Status of {0} {1} is now {2}").format(self.doctype, self.name, status)) - self.notify_modified() + self.notify_update() clear_doctype_notifications(self) def on_submit(self): diff --git a/erpnext/buying/doctype/supplier/supplier.js b/erpnext/buying/doctype/supplier/supplier.js index b6b6ce58120..7a4ea90df2f 100644 --- a/erpnext/buying/doctype/supplier/supplier.js +++ b/erpnext/buying/doctype/supplier/supplier.js @@ -39,16 +39,12 @@ cur_frm.cscript.make_dashboard = function(doc) { }, callback: function(r) { if (in_list(user_roles, "Accounts User") || in_list(user_roles, "Accounts Manager")) { - if(r.message["company_currency"].length == 1) { - cur_frm.dashboard.set_headline( - __("Total Billing This Year: ") + "" - + format_currency(r.message.billing_this_year, r.message.company_currency[0]) - + ' / ' + __("Total Unpaid") + ": " - + format_currency(r.message.total_unpaid, r.message.company_currency[0]) - + ''); - } else { - cur_frm.dashboard.set_headline(""); - } + cur_frm.dashboard.set_headline( + __("Total Billing This Year: ") + "" + + format_currency(r.message.billing_this_year, cur_frm.doc.party_account_currency) + + ' / ' + __("Total Unpaid") + ": " + + format_currency(r.message.total_unpaid, cur_frm.doc.party_account_currency) + + ''); } cur_frm.dashboard.set_badge_count(r.message); } diff --git a/erpnext/buying/doctype/supplier/supplier.json b/erpnext/buying/doctype/supplier/supplier.json index 14214036596..2c337a8fa8b 100644 --- a/erpnext/buying/doctype/supplier/supplier.json +++ b/erpnext/buying/doctype/supplier/supplier.json @@ -1,665 +1,688 @@ { - "allow_copy": 0, - "allow_import": 1, - "allow_rename": 1, - "autoname": "naming_series:", - "creation": "2013-01-10 16:34:11", - "custom": 0, - "description": "Supplier of Goods or Services.", - "docstatus": 0, - "doctype": "DocType", - "document_type": "Setup", + "allow_copy": 0, + "allow_import": 1, + "allow_rename": 1, + "autoname": "naming_series:", + "creation": "2013-01-10 16:34:11", + "custom": 0, + "description": "Supplier of Goods or Services.", + "docstatus": 0, + "doctype": "DocType", + "document_type": "Setup", "fields": [ { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "basic_info", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "icon-user", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "basic_info", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "icon-user", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "naming_series", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Series", - "no_copy": 1, - "oldfieldname": "naming_series", - "oldfieldtype": "Select", - "options": "SUPP-", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "naming_series", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Series", + "no_copy": 1, + "oldfieldname": "naming_series", + "oldfieldtype": "Select", + "options": "SUPP-", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "supplier_name", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Supplier Name", - "no_copy": 1, - "oldfieldname": "supplier_name", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "supplier_name", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Supplier Name", + "no_copy": 1, + "oldfieldname": "supplier_name", + "oldfieldtype": "Data", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break0", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break0", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "supplier_type", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Supplier Type", - "no_copy": 0, - "oldfieldname": "supplier_type", - "oldfieldtype": "Link", - "options": "Supplier Type", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "supplier_type", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 1, + "label": "Supplier Type", + "no_copy": 0, + "oldfieldname": "supplier_type", + "oldfieldtype": "Link", + "options": "Supplier Type", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "is_frozen", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Is Frozen", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "is_frozen", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Is Frozen", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "section_break_7", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "section_break_7", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "default_currency", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 1, - "in_filter": 0, - "in_list_view": 0, - "label": "Default Currency", - "no_copy": 1, - "options": "Currency", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "default_currency", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 1, + "in_filter": 0, + "in_list_view": 0, + "label": "Billing Currency", + "no_copy": 1, + "options": "Currency", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "default_price_list", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 1, - "in_filter": 0, - "in_list_view": 0, - "label": "Price List", - "no_copy": 0, - "options": "Price List", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "default_price_list", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 1, + "in_filter": 0, + "in_list_view": 0, + "label": "Price List", + "no_copy": 0, + "options": "Price List", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_10", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_10", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "default_taxes_and_charges", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 1, - "in_filter": 0, - "in_list_view": 0, - "label": "Taxes and Charges", - "no_copy": 0, - "options": "Purchase Taxes and Charges Template", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "default_taxes_and_charges", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 1, + "in_filter": 0, + "in_list_view": 0, + "label": "Taxes and Charges", + "no_copy": 0, + "options": "Purchase Taxes and Charges Template", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "credit_days", - "fieldtype": "Int", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Credit Days", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "credit_days", + "fieldtype": "Int", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Credit Days", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:!doc.__islocal", - "fieldname": "address_contacts", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Address and Contacts", - "no_copy": 0, - "oldfieldtype": "Column Break", - "options": "icon-map-marker", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:!doc.__islocal", + "fieldname": "address_contacts", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Address and Contacts", + "no_copy": 0, + "oldfieldtype": "Column Break", + "options": "icon-map-marker", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "address_html", - "fieldtype": "HTML", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Address HTML", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "address_html", + "fieldtype": "HTML", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Address HTML", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break1", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break1", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "contact_html", - "fieldtype": "HTML", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Contact HTML", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "contact_html", + "fieldtype": "HTML", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Contact HTML", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "accounts", - "fieldname": "default_payable_accounts", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Default Payable Accounts", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "accounts", + "fieldname": "default_payable_accounts", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Default Payable Accounts", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:!doc.__islocal", - "description": "Mention if non-standard receivable account applicable", - "fieldname": "accounts", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Accounts", - "no_copy": 0, - "options": "Party Account", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "party_account_currency", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Accounting Currency", + "no_copy": 0, + "options": "Currency", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "supplier_details", - "fieldname": "column_break2", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Supplier Details", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "", + "description": "Mention if non-standard receivable account", + "fieldname": "accounts", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Accounts", + "no_copy": 0, + "options": "Party Account", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "supplier_details", + "fieldname": "column_break2", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Supplier Details", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "website", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Website", - "no_copy": 0, - "oldfieldname": "website", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "website", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Website", + "no_copy": 0, + "oldfieldname": "website", + "oldfieldtype": "Data", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "Statutory info and other general information about your Supplier", - "fieldname": "supplier_details", - "fieldtype": "Text", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Supplier Details", - "no_copy": 0, - "oldfieldname": "supplier_details", - "oldfieldtype": "Code", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "Statutory info and other general information about your Supplier", + "fieldname": "supplier_details", + "fieldtype": "Text", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Supplier Details", + "no_copy": 0, + "oldfieldname": "supplier_details", + "oldfieldtype": "Code", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "communications", - "fieldtype": "Table", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Communications", - "no_copy": 0, - "options": "Communication", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "communications", + "fieldtype": "Table", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Communications", + "no_copy": 0, + "options": "Communication", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 } - ], - "hide_heading": 0, - "hide_toolbar": 0, - "icon": "icon-user", - "idx": 1, - "in_create": 0, - "in_dialog": 0, - "is_submittable": 0, - "issingle": 0, - "istable": 0, - "modified": "2015-09-07 15:51:26", - "modified_by": "Administrator", - "module": "Buying", - "name": "Supplier", - "owner": "Administrator", + ], + "hide_heading": 0, + "hide_toolbar": 0, + "icon": "icon-user", + "idx": 1, + "in_create": 0, + "in_dialog": 0, + "is_submittable": 0, + "issingle": 0, + "istable": 0, + "modified": "2015-09-17 14:05:24.793609", + "modified_by": "Administrator", + "module": "Buying", + "name": "Supplier", + "owner": "Administrator", "permissions": [ { - "amend": 0, - "apply_user_permissions": 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, + "amend": 0, + "apply_user_permissions": 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 - }, + }, { - "amend": 0, - "apply_user_permissions": 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, + "amend": 0, + "apply_user_permissions": 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 - }, + }, { - "amend": 0, - "apply_user_permissions": 0, - "cancel": 0, - "create": 1, - "delete": 1, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Purchase Master Manager", - "set_user_permissions": 0, - "share": 1, - "submit": 0, + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Purchase Master Manager", + "set_user_permissions": 0, + "share": 1, + "submit": 0, "write": 1 - }, + }, { - "amend": 0, - "apply_user_permissions": 0, - "cancel": 0, - "create": 0, - "delete": 0, - "email": 0, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 0, - "read": 1, - "report": 0, - "role": "Stock User", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 0, + "delete": 0, + "email": 0, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 0, + "read": 1, + "report": 0, + "role": "Stock User", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 - }, + }, { - "amend": 0, - "apply_user_permissions": 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": "Stock Manager", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Stock Manager", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 - }, + }, { - "amend": 0, - "apply_user_permissions": 0, - "cancel": 0, - "create": 0, - "delete": 0, - "email": 0, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 0, - "read": 1, - "report": 0, - "role": "Accounts User", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 0, + "delete": 0, + "email": 0, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 0, + "read": 1, + "report": 0, + "role": "Accounts User", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 - }, + }, { - "amend": 0, - "apply_user_permissions": 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": "Accounts Manager", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Accounts Manager", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 } - ], - "read_only": 0, - "read_only_onload": 0, - "search_fields": "supplier_name, supplier_type", + ], + "read_only": 0, + "read_only_onload": 0, + "search_fields": "supplier_name, supplier_type", "title_field": "supplier_name" -} \ No newline at end of file +} diff --git a/erpnext/buying/doctype/supplier/supplier.py b/erpnext/buying/doctype/supplier/supplier.py index af7716be0ea..6d0a1a35592 100644 --- a/erpnext/buying/doctype/supplier/supplier.py +++ b/erpnext/buying/doctype/supplier/supplier.py @@ -8,6 +8,7 @@ from frappe import msgprint, _ from frappe.model.naming import make_autoname from erpnext.utilities.address_and_contact import load_address_and_contact from erpnext.utilities.transaction_base import TransactionBase +from erpnext.accounts.party import validate_accounting_currency, validate_party_account class Supplier(TransactionBase): def get_feed(self): @@ -44,6 +45,9 @@ class Supplier(TransactionBase): if frappe.defaults.get_global_default('supp_master_name') == 'Naming Series': if not self.naming_series: msgprint(_("Series is mandatory"), raise_exception=1) + + validate_accounting_currency(self) + validate_party_account(self) def get_contacts(self,nm): if nm: @@ -89,9 +93,11 @@ def get_dashboard_info(supplier): out[doctype] = frappe.db.get_value(doctype, {"supplier": supplier, "docstatus": ["!=", 2] }, "count(*)") - billing_this_year = frappe.db.sql("""select sum(base_grand_total) - from `tabPurchase Invoice` - where supplier=%s and docstatus = 1 and fiscal_year = %s""", + billing_this_year = frappe.db.sql(""" + select sum(ifnull(credit_in_account_currency, 0)) - sum(ifnull(debit_in_account_currency, 0)) + from `tabGL Entry` + where voucher_type='Purchase Invoice' and party_type = 'Supplier' + and party=%s and fiscal_year = %s""", (supplier, frappe.db.get_default("fiscal_year"))) total_unpaid = frappe.db.sql("""select sum(outstanding_amount) diff --git a/erpnext/buying/doctype/supplier/test_records.json b/erpnext/buying/doctype/supplier/test_records.json index dfa5d46f24a..6d01dffb614 100644 --- a/erpnext/buying/doctype/supplier/test_records.json +++ b/erpnext/buying/doctype/supplier/test_records.json @@ -1,14 +1,22 @@ [ { - "company": "_Test Company", "doctype": "Supplier", "supplier_name": "_Test Supplier", "supplier_type": "_Test Supplier Type" }, { - "company": "_Test Company", "doctype": "Supplier", "supplier_name": "_Test Supplier 1", "supplier_type": "_Test Supplier Type" + }, + { + "doctype": "Supplier", + "supplier_name": "_Test Supplier USD", + "supplier_type": "_Test Supplier Type", + "party_account_currency": "USD", + "accounts": [{ + "company": "_Test Company", + "account": "_Test Payable USD - _TC" + }] } -] +] \ No newline at end of file diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json index 7e35b2503cb..128146734a3 100644 --- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json +++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json @@ -43,7 +43,7 @@ "in_filter": 0, "in_list_view": 0, "label": "Title", - "no_copy": 0, + "no_copy": 1, "permlevel": 0, "precision": "", "print_hide": 0, @@ -1554,7 +1554,7 @@ "is_submittable": 1, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-11 12:20:10.684388", "modified_by": "Administrator", "module": "Buying", "name": "Supplier Quotation", diff --git a/erpnext/change_log/v6/v6_2_0.md b/erpnext/change_log/v6/v6_2_0.md new file mode 100644 index 00000000000..80788303aa7 --- /dev/null +++ b/erpnext/change_log/v6/v6_2_0.md @@ -0,0 +1 @@ +- **[Multi-currency Accounting](https://manual.erpnext.com/contents/accounts/multi-currency-accounting)**: You can now have an Account in a different currency than your Company's currency diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index c7600dfaeac..ceb993096ac 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -14,8 +14,19 @@ from erpnext.controllers.sales_and_purchase_return import validate_return force_item_fields = ("item_group", "barcode", "brand", "stock_uom") class CustomerFrozen(frappe.ValidationError): pass +class InvalidCurrency(frappe.ValidationError): pass class AccountsController(TransactionBase): + def __init__(self, arg1, arg2=None): + super(AccountsController, self).__init__(arg1, arg2) + + @property + def company_currency(self): + if not hasattr(self, "__company_currency"): + self.__company_currency = get_company_currency(self.company) + + return self.__company_currency + def validate(self): if self.get("_action") and self._action != "update_after_submit": self.set_missing_values(for_validate=True) @@ -39,6 +50,7 @@ class AccountsController(TransactionBase): self.validate_enabled_taxes_and_charges() self.validate_party() + self.validate_currency() def on_submit(self): if self.meta.get_field("is_recurring"): @@ -95,8 +107,6 @@ class AccountsController(TransactionBase): def set_price_list_currency(self, buying_or_selling): if self.meta.get_field("currency"): - company_currency = get_company_currency(self.company) - # price list part fieldname = "selling_price_list" if buying_or_selling.lower() == "selling" \ else "buying_price_list" @@ -104,22 +114,22 @@ class AccountsController(TransactionBase): self.price_list_currency = frappe.db.get_value("Price List", self.get(fieldname), "currency") - if self.price_list_currency == company_currency: + if self.price_list_currency == self.company_currency: self.plc_conversion_rate = 1.0 elif not self.plc_conversion_rate: self.plc_conversion_rate = get_exchange_rate( - self.price_list_currency, company_currency) + self.price_list_currency, self.company_currency) # currency if not self.currency: self.currency = self.price_list_currency self.conversion_rate = self.plc_conversion_rate - elif self.currency == company_currency: + elif self.currency == self.company_currency: self.conversion_rate = 1.0 elif not self.conversion_rate: self.conversion_rate = get_exchange_rate(self.currency, - company_currency) + self.company_currency) def set_missing_item_details(self): """set missing item values""" @@ -156,7 +166,7 @@ class AccountsController(TransactionBase): item.set("discount_percentage", ret.get("discount_percentage")) if ret.get("pricing_rule_for") == "Price": item.set("pricing_list_rate", ret.get("pricing_list_rate")) - + def set_taxes(self): if not self.meta.get_field("taxes"): @@ -187,7 +197,7 @@ class AccountsController(TransactionBase): if frappe.db.get_value(taxes_and_charges_doctype, self.taxes_and_charges, "disabled"): frappe.throw(_("{0} '{1}' is disabled").format(taxes_and_charges_doctype, self.taxes_and_charges)) - def get_gl_dict(self, args): + def get_gl_dict(self, args, account_currency=None): """this method populates the common properties of a gl entry record""" gl_dict = frappe._dict({ 'company': self.company, @@ -198,11 +208,51 @@ class AccountsController(TransactionBase): 'fiscal_year': self.fiscal_year, 'debit': 0, 'credit': 0, + 'debit_in_account_currency': 0, + 'credit_in_account_currency': 0, 'is_opening': self.get("is_opening") or "No", 'party_type': None, 'party': None }) gl_dict.update(args) + + if not account_currency: + account_currency = frappe.db.get_value("Account", gl_dict.account, "account_currency") + + self.validate_account_currency(gl_dict.account, account_currency) + gl_dict = self.set_balance_in_account_currency(gl_dict, account_currency) + + return gl_dict + + def validate_account_currency(self, account, account_currency=None): + if self.doctype == "Journal Entry": + return + valid_currency = [self.company_currency] + if self.get("currency") and self.currency != self.company_currency: + valid_currency.append(self.currency) + + if account_currency not in valid_currency: + frappe.throw(_("Account {0} is invalid. Account Currency must be {1}") + .format(account, _(" or ").join(valid_currency))) + + def set_balance_in_account_currency(self, gl_dict, account_currency=None): + if (not self.get("conversion_rate") and self.doctype!="Journal Entry" + and account_currency!=self.company_currency): + frappe.throw(_("Account: {0} with currency: {1} can not be selected") + .format(gl_dict.account, account_currency)) + + gl_dict["account_currency"] = self.company_currency if account_currency==self.company_currency \ + else account_currency + + # set debit/credit in account currency if not provided + if flt(gl_dict.debit) and not flt(gl_dict.debit_in_account_currency): + gl_dict.debit_in_account_currency = gl_dict.debit if account_currency==self.company_currency \ + else flt(gl_dict.debit / (self.get("conversion_rate")), 2) + + if flt(gl_dict.credit) and not flt(gl_dict.credit_in_account_currency): + gl_dict.credit_in_account_currency = gl_dict.credit if account_currency==self.company_currency \ + else flt(gl_dict.credit / (self.get("conversion_rate")), 2) + return gl_dict def clear_unallocated_advances(self, childtype, parentfield): @@ -217,13 +267,13 @@ class AccountsController(TransactionBase): # conver sales_order to "Sales Order" reference_type = against_order_field.replace("_", " ").title() - + condition = "" if order_list: in_placeholder = ', '.join(['%s'] * len(order_list)) condition = "or (t2.reference_type = '{0}' and ifnull(t2.reference_name, '') in ({1}))"\ .format(reference_type, in_placeholder) - + res = frappe.db.sql(""" select t1.name as jv_no, t1.remark, t2.{0} as amount, t2.name as jv_detail_no, @@ -321,9 +371,9 @@ class AccountsController(TransactionBase): def set_total_advance_paid(self): if self.doctype == "Sales Order": - dr_or_cr = "credit" + dr_or_cr = "credit_in_account_currency" else: - dr_or_cr = "debit" + dr_or_cr = "debit_in_account_currency" advance_paid = frappe.db.sql(""" select @@ -331,10 +381,9 @@ class AccountsController(TransactionBase): from `tabJournal Entry Account` where - reference_type = %s and - reference_name = %s and - docstatus = 1 and is_advance = "Yes" """.format(dr_or_cr=dr_or_cr), - (self.doctype, self.name)) + reference_type = %s and reference_name = %s + and docstatus = 1 and is_advance = "Yes" + """.format(dr_or_cr=dr_or_cr), (self.doctype, self.name)) if advance_paid: advance_paid = flt(advance_paid[0][0], self.precision("advance_paid")) @@ -357,6 +406,13 @@ class AccountsController(TransactionBase): if frozen_accounts_modifier in frappe.get_roles(): return + party_type, party = self.get_party() + + if party_type: + if frappe.db.get_value(party_type, party, "is_frozen"): + frappe.throw("{0} {1} is frozen".format(party_type, party), CustomerFrozen) + + def get_party(self): party_type = None if self.meta.get_field("customer"): party_type = 'Customer' @@ -364,10 +420,20 @@ class AccountsController(TransactionBase): elif self.meta.get_field("supplier"): party_type = 'Supplier' - if party_type: - party = self.get(party_type.lower()) - if frappe.db.get_value(party_type, party, "is_frozen"): - frappe.throw("{0} {1} is frozen".format(party_type, party), CustomerFrozen) + party = self.get(party_type.lower()) if party_type else None + + return party_type, party + + def validate_currency(self): + if self.get("currency"): + party_type, party = self.get_party() + if party_type and party: + party_account_currency = frappe.db.get_value(party_type, party, "party_account_currency") \ + or self.company_currency + + if party_account_currency != self.company_currency and self.currency != party_account_currency: + frappe.throw(_("Accounting Entry for {0}: {1} can only be made in currency: {2}") + .format(party_type, party, party_account_currency), InvalidCurrency) @frappe.whitelist() def get_tax_rate(account_head): diff --git a/erpnext/controllers/item_variant.py b/erpnext/controllers/item_variant.py index 4edf52b6454..38536cff32a 100644 --- a/erpnext/controllers/item_variant.py +++ b/erpnext/controllers/item_variant.py @@ -60,8 +60,8 @@ def validate_item_variant_attributes(item, args): if not (is_in_range and is_incremental): frappe.throw(_("Value for Attribute {0} must be within the range of {1} to {2} in the increments of {3}")\ .format(attribute, from_range, to_range, increment), InvalidItemAttributeValueError) - - elif value not in attribute_values[attribute]: + + elif value not in attribute_values.get(attribute, []): frappe.throw(_("Value {0} for Attribute {1} does not exist in the list of valid Item Attribute Values").format( value, attribute)) diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py index 6c982028262..a6bfa53e685 100644 --- a/erpnext/controllers/queries.py +++ b/erpnext/controllers/queries.py @@ -9,6 +9,7 @@ from frappe.utils import nowdate def get_filters_cond(doctype, filters, conditions): if filters: + flt = filters if isinstance(filters, dict): filters = filters.items() flt = [] diff --git a/erpnext/controllers/recurring_document.py b/erpnext/controllers/recurring_document.py index f9ab50965c5..9edac2e8034 100644 --- a/erpnext/controllers/recurring_document.py +++ b/erpnext/controllers/recurring_document.py @@ -4,7 +4,7 @@ import frappe.utils import frappe.defaults from frappe.utils import add_days, cint, cstr, date_diff, flt, getdate, nowdate, \ - get_first_day, get_last_day, comma_and + get_first_day, get_last_day, comma_and, split_emails from frappe.model.naming import make_autoname from frappe import _, msgprint, throw @@ -33,7 +33,7 @@ def manage_recurring_documents(doctype, next_date=None, commit=True): next_date = next_date or nowdate() date_field = date_field_map[doctype] - + condition = " and ifnull(status, '') != 'Stopped'" if doctype in ("Sales Order", "Purchase Order") else "" recurring_documents = frappe.db.sql("""select name, recurring_id @@ -180,8 +180,7 @@ def convert_to_recurring(doc, posting_date): def validate_notification_email_id(doc): if doc.notification_email_address: - email_list = filter(None, [cstr(email).strip() for email in - doc.notification_email_address.replace("\n", "").split(",")]) + email_list = split_emails(doc.notification_email_address.replace("\n", "")) from frappe.utils import validate_email_add for email in email_list: diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py index 9c67e9a1b85..c43493cd55b 100644 --- a/erpnext/controllers/status_updater.py +++ b/erpnext/controllers/status_updater.py @@ -222,7 +222,7 @@ class StatusUpdater(Document): where name='%(name)s'""" % args) if args.get("set_modified"): - frappe.get_doc(args["target_parent_dt"], name).notify_modified() + frappe.get_doc(args["target_parent_dt"], name).notify_update() def update_billing_status_for_zero_amount_refdoc(self, ref_dt): ref_fieldname = ref_dt.lower().replace(" ", "_") diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index 19b5a9b403e..eccceb0ad3b 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -46,22 +46,22 @@ class StockController(AccountsController): # from warehouse account self.check_expense_account(detail) - + gl_list.append(self.get_gl_dict({ - "account": warehouse_account[sle.warehouse], + "account": warehouse_account[sle.warehouse]["name"], "against": detail.expense_account, "cost_center": detail.cost_center, "remarks": self.get("remarks") or "Accounting Entry for Stock", - "debit": flt(sle.stock_value_difference, 2) - })) + "debit": flt(sle.stock_value_difference, 2), + }, warehouse_account[sle.warehouse]["account_currency"])) - # to target warehouse / expense account + # to target warehouse / expense account gl_list.append(self.get_gl_dict({ "account": detail.expense_account, - "against": warehouse_account[sle.warehouse], + "against": warehouse_account[sle.warehouse]["name"], "cost_center": detail.cost_center, "remarks": self.get("remarks") or "Accounting Entry for Stock", - "credit": flt(sle.stock_value_difference, 2) + "credit": flt(sle.stock_value_difference, 2), })) elif sle.warehouse not in warehouse_with_no_account: warehouse_with_no_account.append(sle.warehouse) @@ -69,7 +69,7 @@ class StockController(AccountsController): if warehouse_with_no_account: msgprint(_("No accounting entries for the following warehouses") + ": \n" + "\n".join(warehouse_with_no_account)) - + return process_gl_map(gl_list) def get_voucher_details(self, default_expense_account, default_cost_center, sle_map): @@ -336,6 +336,9 @@ def get_voucherwise_gl_entries(future_stock_vouchers, posting_date): return gl_entries def get_warehouse_account(): - warehouse_account = dict(frappe.db.sql("""select warehouse, name from tabAccount - where account_type = 'Warehouse' and ifnull(warehouse, '') != ''""")) + warehouse_account = frappe._dict() + + for d in frappe.db.sql("""select warehouse, name, account_currency from tabAccount + where account_type = 'Warehouse' and ifnull(warehouse, '') != ''""", as_dict=1): + warehouse_account.setdefault(d.warehouse, d) return warehouse_account diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py index d526f66baf3..0fbe22d7af5 100644 --- a/erpnext/controllers/taxes_and_totals.py +++ b/erpnext/controllers/taxes_and_totals.py @@ -394,17 +394,21 @@ class calculate_taxes_and_totals(object): # NOTE: # write_off_amount is only for POS Invoice # total_advance is only for non POS Invoice - + if self.doc.is_return: + return + + self.doc.round_floats_in(self.doc, ["grand_total", "total_advance", "write_off_amount"]) + total_amount_to_pay = flt(self.doc.grand_total - self.doc.total_advance - self.doc.write_off_amount, + self.doc.precision("grand_total")) + if self.doc.doctype == "Sales Invoice": - if not self.doc.is_return: - self.doc.round_floats_in(self.doc, ["base_grand_total", "total_advance", "write_off_amount", "paid_amount"]) - total_amount_to_pay = self.doc.base_grand_total - self.doc.write_off_amount - self.doc.outstanding_amount = flt(total_amount_to_pay - self.doc.total_advance - self.doc.paid_amount, - self.doc.precision("outstanding_amount")) + self.doc.round_floats_in(self.doc, ["paid_amount"]) + outstanding_amount = flt(total_amount_to_pay - self.doc.paid_amount, self.doc.precision("outstanding_amount")) + elif self.doc.doctype == "Purchase Invoice": + outstanding_amount = flt(total_amount_to_pay, self.doc.precision("outstanding_amount")) + + if self.doc.party_account_currency == self.doc.currency: + self.doc.outstanding_amount = outstanding_amount else: - self.doc.round_floats_in(self.doc, ["total_advance", "write_off_amount"]) - self.doc.total_amount_to_pay = flt(self.doc.base_grand_total - self.doc.write_off_amount, - self.doc.precision("total_amount_to_pay")) - if not self.doc.is_return: - self.doc.outstanding_amount = flt(self.doc.total_amount_to_pay - self.doc.total_advance, - self.doc.precision("outstanding_amount")) + self.doc.outstanding_amount = flt(outstanding_amount * self.doc.conversion_rate, + self.doc.precision("outstanding_amount")) \ No newline at end of file diff --git a/erpnext/crm/doctype/lead/lead.json b/erpnext/crm/doctype/lead/lead.json index 9e4d562f667..6c61476b266 100644 --- a/erpnext/crm/doctype/lead/lead.json +++ b/erpnext/crm/doctype/lead/lead.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Setup", + "document_type": "Document", "fields": [ { "allow_on_submit": 0, @@ -808,7 +808,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-08-27 03:26:48.324207", + "modified": "2015-09-14 02:57:27.841011", "modified_by": "Administrator", "module": "CRM", "name": "Lead", diff --git a/erpnext/crm/doctype/newsletter/newsletter.py b/erpnext/crm/doctype/newsletter/newsletter.py index 83d3caf37ae..800a5abef9c 100644 --- a/erpnext/crm/doctype/newsletter/newsletter.py +++ b/erpnext/crm/doctype/newsletter/newsletter.py @@ -20,7 +20,7 @@ class Newsletter(Document): group by status""", (self.doctype, self.name))) or None def test_send(self, doctype="Lead"): - self.recipients = self.test_email_id.split(",") + self.recipients = frappe.utils.split_emails(self.test_email_id) self.send_bulk() frappe.msgprint(_("Scheduled to send to {0}").format(self.test_email_id)) diff --git a/erpnext/crm/doctype/newsletter_list/newsletter_list.json b/erpnext/crm/doctype/newsletter_list/newsletter_list.json index 7537c03bad9..01f1b758333 100644 --- a/erpnext/crm/doctype/newsletter_list/newsletter_list.json +++ b/erpnext/crm/doctype/newsletter_list/newsletter_list.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -20,7 +20,7 @@ "in_filter": 0, "in_list_view": 0, "label": "Title", - "no_copy": 0, + "no_copy": 1, "permlevel": 0, "precision": "", "print_hide": 0, @@ -62,7 +62,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-07-15 07:18:30.094155", + "modified": "2015-09-11 12:20:05.237636", "modified_by": "Administrator", "module": "CRM", "name": "Newsletter List", diff --git a/erpnext/crm/doctype/newsletter_list_subscriber/newsletter_list_subscriber.json b/erpnext/crm/doctype/newsletter_list_subscriber/newsletter_list_subscriber.json index 101c6a03999..935ade0b1e2 100644 --- a/erpnext/crm/doctype/newsletter_list_subscriber/newsletter_list_subscriber.json +++ b/erpnext/crm/doctype/newsletter_list_subscriber/newsletter_list_subscriber.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Transaction", + "document_type": "Document", "fields": [ { "allow_on_submit": 0, @@ -84,7 +84,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-03-23 04:47:36.505462", + "modified": "2015-09-14 02:55:58.113810", "modified_by": "Administrator", "module": "CRM", "name": "Newsletter List Subscriber", diff --git a/erpnext/crm/doctype/opportunity/opportunity.json b/erpnext/crm/doctype/opportunity/opportunity.json index 63453453686..856f81308d3 100644 --- a/erpnext/crm/doctype/opportunity/opportunity.json +++ b/erpnext/crm/doctype/opportunity/opportunity.json @@ -185,7 +185,7 @@ "in_filter": 0, "in_list_view": 0, "label": "Title", - "no_copy": 0, + "no_copy": 1, "permlevel": 0, "precision": "", "print_hide": 0, @@ -889,7 +889,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-11 12:19:38.052900", "modified_by": "Administrator", "module": "CRM", "name": "Opportunity", diff --git a/erpnext/crm/doctype/opportunity/opportunity.py b/erpnext/crm/doctype/opportunity/opportunity.py index 78729a3bcbb..5cf96e99044 100644 --- a/erpnext/crm/doctype/opportunity/opportunity.py +++ b/erpnext/crm/doctype/opportunity/opportunity.py @@ -6,6 +6,7 @@ import frappe, json from frappe.utils import cstr, cint from frappe import msgprint, _ from frappe.model.mapper import get_mapped_doc +from erpnext.setup.utils import get_exchange_rate from erpnext.utilities.transaction_base import TransactionBase @@ -179,7 +180,17 @@ def get_item_details(item_code): def make_quotation(source_name, target_doc=None): def set_missing_values(source, target): quotation = frappe.get_doc(target) - quotation.currency = None # set it as default from customer + + company_currency = frappe.db.get_value("Company", quotation.company, "default_currency") + party_account_currency = frappe.db.get_value("Customer", quotation.customer, "party_account_currency") + if company_currency == party_account_currency: + exchange_rate = 1 + else: + exchange_rate = get_exchange_rate(party_account_currency, company_currency) + + quotation.currency = party_account_currency or company_currency + quotation.conversion_rate = exchange_rate + quotation.run_method("set_missing_values") quotation.run_method("calculate_taxes_and_totals") diff --git a/erpnext/hooks.py b/erpnext/hooks.py index 56bda40d156..54f81b89d52 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -27,7 +27,7 @@ blogs. """ app_icon = "icon-th" app_color = "#e74c3c" -app_version = "6.1.1" +app_version = "6.2.0" github_link = "https://github.com/frappe/erpnext" error_report_email = "support@erpnext.com" @@ -120,7 +120,7 @@ scheduler_events = { ] } -default_mail_footer = """
+default_mail_footer = """
Sent via ERPNext diff --git a/erpnext/hr/doctype/appraisal_template/appraisal_template.json b/erpnext/hr/doctype/appraisal_template/appraisal_template.json index 2643d717a98..9d1b3472387 100644 --- a/erpnext/hr/doctype/appraisal_template/appraisal_template.json +++ b/erpnext/hr/doctype/appraisal_template/appraisal_template.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -91,7 +91,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:53.800359", "modified_by": "Administrator", "module": "HR", "name": "Appraisal Template", diff --git a/erpnext/hr/doctype/attendance/attendance.json b/erpnext/hr/doctype/attendance/attendance.json index b1958f2ea93..b25a3c8bc38 100644 --- a/erpnext/hr/doctype/attendance/attendance.json +++ b/erpnext/hr/doctype/attendance/attendance.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -277,7 +277,7 @@ "is_submittable": 1, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:53.875571", "modified_by": "Administrator", "module": "HR", "name": "Attendance", diff --git a/erpnext/hr/doctype/branch/branch.json b/erpnext/hr/doctype/branch/branch.json index d50de1d38aa..bab26f69fe0 100644 --- a/erpnext/hr/doctype/branch/branch.json +++ b/erpnext/hr/doctype/branch/branch.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -42,7 +42,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:54.431393", "modified_by": "Administrator", "module": "HR", "name": "Branch", diff --git a/erpnext/hr/doctype/deduction_type/deduction_type.json b/erpnext/hr/doctype/deduction_type/deduction_type.json index 649011f7be6..c62ef67b22e 100644 --- a/erpnext/hr/doctype/deduction_type/deduction_type.json +++ b/erpnext/hr/doctype/deduction_type/deduction_type.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -66,7 +66,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:55.387298", "modified_by": "Administrator", "module": "HR", "name": "Deduction Type", diff --git a/erpnext/hr/doctype/department/department.json b/erpnext/hr/doctype/department/department.json index e8aa1438b5e..a50ea6e072d 100644 --- a/erpnext/hr/doctype/department/department.json +++ b/erpnext/hr/doctype/department/department.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -65,7 +65,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:55.449257", "modified_by": "Administrator", "module": "HR", "name": "Department", diff --git a/erpnext/hr/doctype/designation/designation.json b/erpnext/hr/doctype/designation/designation.json index 137a5b1f615..55999e378fe 100644 --- a/erpnext/hr/doctype/designation/designation.json +++ b/erpnext/hr/doctype/designation/designation.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -42,7 +42,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:55.508901", "modified_by": "Administrator", "module": "HR", "name": "Designation", diff --git a/erpnext/hr/doctype/earning_type/earning_type.json b/erpnext/hr/doctype/earning_type/earning_type.json index a91a95e5461..61dd5d0246f 100644 --- a/erpnext/hr/doctype/earning_type/earning_type.json +++ b/erpnext/hr/doctype/earning_type/earning_type.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -66,7 +66,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:55.558890", "modified_by": "Administrator", "module": "HR", "name": "Earning Type", diff --git a/erpnext/hr/doctype/employee/employee.json b/erpnext/hr/doctype/employee/employee.json index 5deb4d7a8b0..565c4eefb63 100644 --- a/erpnext/hr/doctype/employee/employee.json +++ b/erpnext/hr/doctype/employee/employee.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -1893,7 +1893,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:55.671692", "modified_by": "Administrator", "module": "HR", "name": "Employee", diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py index a2bb10cc69d..7b5c6c1b559 100644 --- a/erpnext/hr/doctype/employee/employee.py +++ b/erpnext/hr/doctype/employee/employee.py @@ -158,8 +158,13 @@ def get_retirement_date(date_of_birth=None): import datetime ret = {} if date_of_birth: - dt = getdate(date_of_birth) + datetime.timedelta(21915) - ret = {'date_of_retirement': dt.strftime('%Y-%m-%d')} + try: + dt = getdate(date_of_birth) + datetime.timedelta(21915) + ret = {'date_of_retirement': dt.strftime('%Y-%m-%d')} + except ValueError: + # invalid date + ret = {} + return ret @frappe.whitelist() diff --git a/erpnext/hr/doctype/employment_type/employment_type.json b/erpnext/hr/doctype/employment_type/employment_type.json index ab73a139c66..191c56a36ab 100644 --- a/erpnext/hr/doctype/employment_type/employment_type.json +++ b/erpnext/hr/doctype/employment_type/employment_type.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -42,7 +42,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:56.145539", "modified_by": "Administrator", "module": "HR", "name": "Employment Type", diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.json b/erpnext/hr/doctype/expense_claim/expense_claim.json index c5ef312d89b..5d3b5979804 100644 --- a/erpnext/hr/doctype/expense_claim/expense_claim.json +++ b/erpnext/hr/doctype/expense_claim/expense_claim.json @@ -1,634 +1,634 @@ { - "allow_copy": 0, - "allow_import": 0, - "allow_rename": 0, - "autoname": "naming_series:", - "creation": "2013-01-10 16:34:14", - "custom": 0, - "docstatus": 0, - "doctype": "DocType", + "allow_copy": 0, + "allow_import": 0, + "allow_rename": 0, + "autoname": "naming_series:", + "creation": "2013-01-10 16:34:14", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", "fields": [ { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": "EXP", - "fieldname": "naming_series", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Series", - "no_copy": 1, - "options": "EXP", - "permlevel": 0, - "precision": "", - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "EXP", + "fieldname": "naming_series", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Series", + "no_copy": 1, + "options": "EXP", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": "Draft", - "depends_on": "eval:!doc.__islocal", - "fieldname": "approval_status", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Approval Status", - "no_copy": 1, - "oldfieldname": "approval_status", - "oldfieldtype": "Select", - "options": "Draft\nApproved\nRejected", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "Draft", + "depends_on": "eval:!doc.__islocal", + "fieldname": "approval_status", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Approval Status", + "no_copy": 1, + "oldfieldname": "approval_status", + "oldfieldtype": "Select", + "options": "Draft\nApproved\nRejected", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "A user with \"Expense Approver\" role", - "fieldname": "exp_approver", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Approver", - "no_copy": 0, - "oldfieldname": "exp_approver", - "oldfieldtype": "Select", - "options": "User", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "A user with \"Expense Approver\" role", + "fieldname": "exp_approver", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Approver", + "no_copy": 0, + "oldfieldname": "exp_approver", + "oldfieldtype": "Select", + "options": "User", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "160px" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break0", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "oldfieldtype": "Column Break", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break0", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "oldfieldtype": "Column Break", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "total_claimed_amount", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Total Claimed Amount", - "no_copy": 1, - "oldfieldname": "total_claimed_amount", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "total_claimed_amount", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 1, + "label": "Total Claimed Amount", + "no_copy": 1, + "oldfieldname": "total_claimed_amount", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "160px" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "total_sanctioned_amount", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Total Sanctioned Amount", - "no_copy": 1, - "oldfieldname": "total_sanctioned_amount", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "total_sanctioned_amount", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Total Sanctioned Amount", + "no_copy": 1, + "oldfieldname": "total_sanctioned_amount", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "160px" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "expense_details", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "", - "no_copy": 0, - "oldfieldtype": "Section Break", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "expense_details", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "", + "no_copy": 0, + "oldfieldtype": "Section Break", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "expenses", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Expenses", - "no_copy": 0, - "oldfieldname": "expense_voucher_details", - "oldfieldtype": "Table", - "options": "Expense Claim Detail", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "expenses", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Expenses", + "no_copy": 0, + "oldfieldname": "expense_voucher_details", + "oldfieldtype": "Table", + "options": "Expense Claim Detail", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "sb1", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "options": "Simple", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "sb1", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "options": "Simple", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": "Today", - "fieldname": "posting_date", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Posting Date", - "no_copy": 0, - "oldfieldname": "posting_date", - "oldfieldtype": "Date", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "Today", + "fieldname": "posting_date", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Posting Date", + "no_copy": 0, + "oldfieldname": "posting_date", + "oldfieldtype": "Date", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "employee", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "From Employee", - "no_copy": 0, - "oldfieldname": "employee", - "oldfieldtype": "Link", - "options": "Employee", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "employee", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "From Employee", + "no_copy": 0, + "oldfieldname": "employee", + "oldfieldtype": "Link", + "options": "Employee", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "employee_name", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Employee Name", - "no_copy": 0, - "oldfieldname": "employee_name", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "employee_name", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Employee Name", + "no_copy": 0, + "oldfieldname": "employee_name", + "oldfieldtype": "Data", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "150px" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "company", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Company", - "no_copy": 0, - "oldfieldname": "company", - "oldfieldtype": "Link", - "options": "Company", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "company", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Company", + "no_copy": 0, + "oldfieldname": "company", + "oldfieldtype": "Link", + "options": "Company", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "fiscal_year", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Fiscal Year", - "no_copy": 0, - "oldfieldname": "fiscal_year", - "oldfieldtype": "Select", - "options": "Fiscal Year", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "fiscal_year", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Fiscal Year", + "no_copy": 0, + "oldfieldname": "fiscal_year", + "oldfieldtype": "Select", + "options": "Fiscal Year", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "cb1", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "cb1", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "total_amount_reimbursed", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Total Amount Reimbursed", - "no_copy": 1, - "options": "Company:company:default_currency", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "total_amount_reimbursed", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Total Amount Reimbursed", + "no_copy": 1, + "options": "Company:company:default_currency", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "remark", - "fieldtype": "Small Text", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Remark", - "no_copy": 1, - "oldfieldname": "remark", - "oldfieldtype": "Small Text", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "remark", + "fieldtype": "Small Text", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Remark", + "no_copy": 1, + "oldfieldname": "remark", + "oldfieldtype": "Small Text", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "project", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Project", - "no_copy": 0, - "options": "Project", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "project", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Project", + "no_copy": 0, + "options": "Project", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "task", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Task", - "no_copy": 0, - "options": "Task", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "task", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Task", + "no_copy": 0, + "options": "Task", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "default": "{employee_name}", - "fieldname": "title", - "fieldtype": "Data", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Title", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "default": "{employee_name}", + "fieldname": "title", + "fieldtype": "Data", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Title", + "no_copy": 1, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "email_id", - "fieldtype": "Data", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Employees Email Id", - "no_copy": 0, - "oldfieldname": "email_id", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "email_id", + "fieldtype": "Data", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Employees Email Id", + "no_copy": 0, + "oldfieldname": "email_id", + "oldfieldtype": "Data", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "amended_from", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 1, - "in_filter": 0, - "in_list_view": 0, - "label": "Amended From", - "no_copy": 1, - "oldfieldname": "amended_from", - "oldfieldtype": "Data", - "options": "Expense Claim", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 1, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 1, + "in_filter": 0, + "in_list_view": 0, + "label": "Amended From", + "no_copy": 1, + "oldfieldname": "amended_from", + "oldfieldtype": "Data", + "options": "Expense Claim", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 1, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "160px" } - ], - "hide_heading": 0, - "hide_toolbar": 0, - "icon": "icon-money", - "idx": 1, - "in_create": 0, - "in_dialog": 0, - "is_submittable": 1, - "issingle": 0, - "istable": 0, - "modified": "2015-09-07 15:51:26", - "modified_by": "Administrator", - "module": "HR", - "name": "Expense Claim", - "owner": "harshada@webnotestech.com", + ], + "hide_heading": 0, + "hide_toolbar": 0, + "icon": "icon-money", + "idx": 1, + "in_create": 0, + "in_dialog": 0, + "is_submittable": 1, + "issingle": 0, + "istable": 0, + "modified": "2015-09-11 12:20:16.578324", + "modified_by": "Administrator", + "module": "HR", + "name": "Expense Claim", + "owner": "harshada@webnotestech.com", "permissions": [ { - "amend": 1, - "apply_user_permissions": 0, - "cancel": 1, - "create": 1, - "delete": 1, - "email": 1, - "export": 1, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "HR Manager", - "set_user_permissions": 0, - "share": 1, - "submit": 1, + "amend": 1, + "apply_user_permissions": 0, + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "HR Manager", + "set_user_permissions": 0, + "share": 1, + "submit": 1, "write": 1 - }, + }, { - "amend": 0, - "apply_user_permissions": 0, - "cancel": 0, - "create": 1, - "delete": 0, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Employee", - "set_user_permissions": 0, - "share": 1, - "submit": 0, + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 1, + "delete": 0, + "email": 1, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Employee", + "set_user_permissions": 0, + "share": 1, + "submit": 0, "write": 1 - }, + }, { - "amend": 1, - "apply_user_permissions": 0, - "cancel": 1, - "create": 1, - "delete": 1, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Expense Approver", - "set_user_permissions": 0, - "share": 1, - "submit": 1, - "user_permission_doctypes": "[\"Company\",\"Expense Claim\",\"Fiscal Year\",\"Project\",\"Task\",\"User\"]", + "amend": 1, + "apply_user_permissions": 0, + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Expense Approver", + "set_user_permissions": 0, + "share": 1, + "submit": 1, + "user_permission_doctypes": "[\"Company\",\"Expense Claim\",\"Fiscal Year\",\"Project\",\"Task\",\"User\"]", "write": 1 - }, + }, { - "amend": 1, - "apply_user_permissions": 0, - "cancel": 1, - "create": 1, - "delete": 1, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "HR User", - "set_user_permissions": 0, - "share": 1, - "submit": 1, - "user_permission_doctypes": "[\"Company\",\"Expense Claim\",\"Fiscal Year\",\"Project\",\"Task\",\"User\"]", + "amend": 1, + "apply_user_permissions": 0, + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "HR User", + "set_user_permissions": 0, + "share": 1, + "submit": 1, + "user_permission_doctypes": "[\"Company\",\"Expense Claim\",\"Fiscal Year\",\"Project\",\"Task\",\"User\"]", "write": 1 } - ], - "read_only": 0, - "read_only_onload": 0, - "search_fields": "approval_status,employee,employee_name", - "sort_field": "modified", - "sort_order": "DESC", + ], + "read_only": 0, + "read_only_onload": 0, + "search_fields": "approval_status,employee,employee_name", + "sort_field": "modified", + "sort_order": "DESC", "title_field": "title" -} +} \ No newline at end of file diff --git a/erpnext/hr/doctype/expense_claim_type/expense_claim_type.json b/erpnext/hr/doctype/expense_claim_type/expense_claim_type.json index 5413256ee26..be9c4122274 100644 --- a/erpnext/hr/doctype/expense_claim_type/expense_claim_type.json +++ b/erpnext/hr/doctype/expense_claim_type/expense_claim_type.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -89,7 +89,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-07-15 08:57:23.069980", + "modified": "2015-09-14 02:55:56.204289", "modified_by": "Administrator", "module": "HR", "name": "Expense Claim Type", diff --git a/erpnext/hr/doctype/holiday_list/holiday_list.json b/erpnext/hr/doctype/holiday_list/holiday_list.json index 513bb1853ef..4d0efbcd723 100644 --- a/erpnext/hr/doctype/holiday_list/holiday_list.json +++ b/erpnext/hr/doctype/holiday_list/holiday_list.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -177,7 +177,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-02-05 05:11:39.099428", + "modified": "2015-09-14 02:55:56.430032", "modified_by": "Administrator", "module": "HR", "name": "Holiday List", diff --git a/erpnext/hr/doctype/job_applicant/job_applicant.json b/erpnext/hr/doctype/job_applicant/job_applicant.json index 1669f7ca4c8..0c699d4d01a 100644 --- a/erpnext/hr/doctype/job_applicant/job_applicant.json +++ b/erpnext/hr/doctype/job_applicant/job_applicant.json @@ -8,7 +8,7 @@ "description": "Applicant for a Job", "docstatus": 0, "doctype": "DocType", - "document_type": "Transaction", + "document_type": "Document", "fields": [ { "allow_on_submit": 0, @@ -191,7 +191,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:57.100488", "modified_by": "Administrator", "module": "HR", "name": "Job Applicant", diff --git a/erpnext/hr/doctype/job_opening/job_opening.json b/erpnext/hr/doctype/job_opening/job_opening.json index b13d0d69587..1832c09f5e0 100644 --- a/erpnext/hr/doctype/job_opening/job_opening.json +++ b/erpnext/hr/doctype/job_opening/job_opening.json @@ -8,7 +8,7 @@ "description": "Description of a Job Opening", "docstatus": 0, "doctype": "DocType", - "document_type": "Transaction", + "document_type": "Document", "fields": [ { "allow_on_submit": 0, @@ -85,7 +85,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:57.210679", "modified_by": "Administrator", "module": "HR", "name": "Job Opening", diff --git a/erpnext/hr/doctype/job_opening/test_job_opening.py b/erpnext/hr/doctype/job_opening/test_job_opening.py new file mode 100644 index 00000000000..815ce5bdb8c --- /dev/null +++ b/erpnext/hr/doctype/job_opening/test_job_opening.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals + +import frappe +import unittest + +# test_records = frappe.get_test_records('Job Opening') + +class TestJobOpening(unittest.TestCase): + pass diff --git a/erpnext/hr/doctype/leave_application/leave_application.json b/erpnext/hr/doctype/leave_application/leave_application.json index 36a845befb0..be1b06c5f73 100644 --- a/erpnext/hr/doctype/leave_application/leave_application.json +++ b/erpnext/hr/doctype/leave_application/leave_application.json @@ -8,7 +8,7 @@ "description": "Apply / Approve Leaves", "docstatus": 0, "doctype": "DocType", - "document_type": "Transaction", + "document_type": "Document", "fields": [ { "allow_on_submit": 0, @@ -559,7 +559,7 @@ "issingle": 0, "istable": 0, "max_attachments": 3, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:57.427750", "modified_by": "Administrator", "module": "HR", "name": "Leave Application", diff --git a/erpnext/hr/doctype/leave_block_list/leave_block_list.json b/erpnext/hr/doctype/leave_block_list/leave_block_list.json index eff0f69b057..ca4b2f42dea 100644 --- a/erpnext/hr/doctype/leave_block_list/leave_block_list.json +++ b/erpnext/hr/doctype/leave_block_list/leave_block_list.json @@ -8,7 +8,7 @@ "description": "Block Holidays on important days.", "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -195,7 +195,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:57.796873", "modified_by": "Administrator", "module": "HR", "name": "Leave Block List", diff --git a/erpnext/hr/doctype/leave_type/leave_type.json b/erpnext/hr/doctype/leave_type/leave_type.json index ce3133a3362..f02c636086f 100644 --- a/erpnext/hr/doctype/leave_type/leave_type.json +++ b/erpnext/hr/doctype/leave_type/leave_type.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -174,7 +174,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:57.897034", "modified_by": "Administrator", "module": "HR", "name": "Leave Type", diff --git a/erpnext/hr/doctype/offer_letter/offer_letter.json b/erpnext/hr/doctype/offer_letter/offer_letter.json index f7c3691ddbf..03fe1dd4675 100644 --- a/erpnext/hr/doctype/offer_letter/offer_letter.json +++ b/erpnext/hr/doctype/offer_letter/offer_letter.json @@ -8,7 +8,7 @@ "default_print_format": "Offer Letter", "docstatus": 0, "doctype": "DocType", - "document_type": "Transaction", + "document_type": "Document", "fields": [ { "allow_on_submit": 0, @@ -310,7 +310,7 @@ "is_submittable": 1, "issingle": 0, "istable": 0, - "modified": "2015-07-29 05:51:39.841591", + "modified": "2015-09-14 02:55:58.358852", "modified_by": "Administrator", "module": "HR", "name": "Offer Letter", diff --git a/erpnext/hr/doctype/offer_term/offer_term.json b/erpnext/hr/doctype/offer_term/offer_term.json index 417d897403e..89917fb01b5 100644 --- a/erpnext/hr/doctype/offer_term/offer_term.json +++ b/erpnext/hr/doctype/offer_term/offer_term.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -39,7 +39,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-03-10 18:19:23.032194", + "modified": "2015-09-14 02:55:58.508655", "modified_by": "Administrator", "module": "HR", "name": "Offer Term", diff --git a/erpnext/manufacturing/doctype/bom/bom.js b/erpnext/manufacturing/doctype/bom/bom.js index f0eebb1a2a2..3bad2f081ef 100644 --- a/erpnext/manufacturing/doctype/bom/bom.js +++ b/erpnext/manufacturing/doctype/bom/bom.js @@ -147,9 +147,7 @@ cur_frm.fields_dict['project_name'].get_query = function(doc, dt, dn) { cur_frm.fields_dict['items'].grid.get_field('item_code').get_query = function(doc) { return{ query: "erpnext.controllers.queries.item_query", - filters: { - "name": "!" + cstr(doc.item) - } + filters: [["Item", "name", "!=", doc.item]] } } diff --git a/erpnext/manufacturing/doctype/bom/bom.json b/erpnext/manufacturing/doctype/bom/bom.json index c59c8e7f551..de97a709105 100644 --- a/erpnext/manufacturing/doctype/bom/bom.json +++ b/erpnext/manufacturing/doctype/bom/bom.json @@ -6,7 +6,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -713,7 +713,7 @@ "is_submittable": 1, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:54.208705", "modified_by": "Administrator", "module": "Manufacturing", "name": "BOM", diff --git a/erpnext/manufacturing/doctype/operation/operation.json b/erpnext/manufacturing/doctype/operation/operation.json index 4f8e2f21dea..45b2b6b7793 100644 --- a/erpnext/manufacturing/doctype/operation/operation.json +++ b/erpnext/manufacturing/doctype/operation/operation.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -127,7 +127,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-02-22 10:24:26.834166", + "modified": "2015-09-14 02:55:58.575636", "modified_by": "Administrator", "module": "Manufacturing", "name": "Operation", diff --git a/erpnext/manufacturing/doctype/production_order/production_order.py b/erpnext/manufacturing/doctype/production_order/production_order.py index 3e380a54eb8..e5e0a964bc2 100644 --- a/erpnext/manufacturing/doctype/production_order/production_order.py +++ b/erpnext/manufacturing/doctype/production_order/production_order.py @@ -109,7 +109,7 @@ class ProductionOrder(Document): self.update_status(status) self.update_planned_qty() frappe.msgprint(_("Production Order status is {0}").format(status)) - self.notify_modified() + self.notify_update() def update_status(self, status=None): diff --git a/erpnext/manufacturing/doctype/workstation/workstation.json b/erpnext/manufacturing/doctype/workstation/workstation.json index e86cccee78c..2f6c886bbb8 100644 --- a/erpnext/manufacturing/doctype/workstation/workstation.json +++ b/erpnext/manufacturing/doctype/workstation/workstation.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -341,7 +341,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:56:01.492085", "modified_by": "Administrator", "module": "Manufacturing", "name": "Workstation", diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 2b4a0171389..ffb7a21b5f9 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -205,4 +205,5 @@ erpnext.patches.v6_0.default_activity_rate execute:frappe.db.set_value("Stock Settings", None, "automatically_set_serial_nos_based_on_fifo", 1) execute:frappe.db.sql("""update `tabProject` set percent_complete=round(percent_complete, 2) where percent_complete is not null""") erpnext.patches.v6_0.fix_outstanding_amount -erpnext.patches.v6_0.fix_planned_qty \ No newline at end of file +erpnext.patches.v6_0.fix_planned_qty +erpnext.patches.v6_0.multi_currency \ No newline at end of file diff --git a/erpnext/patches/v5_0/update_projects.py b/erpnext/patches/v5_0/update_projects.py index e234246623c..6214927654f 100644 --- a/erpnext/patches/v5_0/update_projects.py +++ b/erpnext/patches/v5_0/update_projects.py @@ -6,6 +6,7 @@ def execute(): frappe.reload_doc("projects", "doctype", "project_task") frappe.reload_doctype("Task") frappe.reload_doc("projects", "doctype", "task_depends_on") + frappe.reload_doc("projects", "doctype", "time_log") for m in frappe.get_all("Project Milestone", "*"): if (m.milestone and m.milestone_date diff --git a/erpnext/patches/v5_7/item_template_attributes.py b/erpnext/patches/v5_7/item_template_attributes.py index 9536f1628ca..9f141b5b08b 100644 --- a/erpnext/patches/v5_7/item_template_attributes.py +++ b/erpnext/patches/v5_7/item_template_attributes.py @@ -72,8 +72,6 @@ def migrate_item_variants(): for attribute, value in item_attributes: attribute_value_options.setdefault(attribute, []).append(value) - save_attributes_in_template(item, attribute_value_options) - possible_combinations = get_possible_combinations(attribute_value_options) for variant in all_variants: @@ -89,6 +87,8 @@ def migrate_item_variants(): save_attributes_in_variant(variant, combination) break + save_attributes_in_template(item, attribute_value_options) + frappe.delete_doc("DocType", "Item Variant") def save_attributes_in_template(item, attribute_value_options): diff --git a/erpnext/patches/v6_0/default_activity_rate.py b/erpnext/patches/v6_0/default_activity_rate.py index 90a7a8c338c..44fda3415c0 100644 --- a/erpnext/patches/v6_0/default_activity_rate.py +++ b/erpnext/patches/v6_0/default_activity_rate.py @@ -1,6 +1,8 @@ import frappe def execute(): + frappe.reload_doc("projects", "doctype", "activity_cost") + for cost in frappe.db.get_list("Activity Cost", filters = {"employee": ""}, fields = ("name", "activity_type", "costing_rate", "billing_rate")): activity_type = frappe.get_doc("Activity Type", cost.activity_type) diff --git a/erpnext/patches/v6_0/multi_currency.py b/erpnext/patches/v6_0/multi_currency.py new file mode 100644 index 00000000000..2b53134c050 --- /dev/null +++ b/erpnext/patches/v6_0/multi_currency.py @@ -0,0 +1,106 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import frappe + +def execute(): + # Reload doctype + for dt in ("Account", "GL Entry", "Journal Entry", + "Journal Entry Account", "Sales Invoice", "Purchase Invoice", "Customer", "Supplier"): + frappe.reload_doctype(dt) + + for company in frappe.get_all("Company", fields=["name", "default_currency", "default_receivable_account"]): + + # update currency in account and gl entry as per company currency + frappe.db.sql("""update `tabAccount` set account_currency = %s + where ifnull(account_currency, '') = '' and company=%s""", (company.default_currency, company.name)) + + # update newly introduced field's value in sales / purchase invoice + frappe.db.sql(""" + update + `tabSales Invoice` + set + base_paid_amount=paid_amount, + base_write_off_amount=write_off_amount, + party_account_currency=%s + where company=%s + """, (company.default_currency, company.name)) + + frappe.db.sql(""" + update + `tabPurchase Invoice` + set + base_write_off_amount=write_off_amount, + party_account_currency=%s + where company=%s + """, (company.default_currency, company.name)) + + # update exchange rate, debit/credit in account currency in Journal Entry + frappe.db.sql(""" + update `tabJournal Entry Account` jea + set exchange_rate=1, + debit_in_account_currency=debit, + credit_in_account_currency=credit, + account_type=(select account_type from `tabAccount` where name=jea.account) + """) + + frappe.db.sql(""" + update `tabJournal Entry Account` jea, `tabJournal Entry` je + set account_currency=%s + where jea.parent = je.name and je.company=%s + """, (company.default_currency, company.name)) + + # update debit/credit in account currency in GL Entry + frappe.db.sql(""" + update + `tabGL Entry` + set + debit_in_account_currency=debit, + credit_in_account_currency=credit, + account_currency=%s + where + company=%s + """, (company.default_currency, company.name)) + + # Set party account if default currency of party other than company's default currency + for dt in ("Customer", "Supplier"): + parties = frappe.get_all(dt) + for p in parties: + # Get party GL Entries + party_gle = frappe.db.get_value("GL Entry", {"party_type": dt, "party": p.name, + "company": company.name}, ["account", "account_currency"], as_dict=True) + + party = frappe.get_doc(dt, p.name) + + # set party account currency + if party_gle or not party.party_account_currency: + party.party_account_currency = company.default_currency + + # Add default receivable /payable account if not exists + # and currency is other than company currency + if party.party_account_currency and party.party_account_currency != company.default_currency: + party_account_exists = False + for d in party.get("accounts"): + if d.company == company.name: + party_account_exists = True + break + + if not party_account_exists: + party_account = None + if party_gle: + party_account = party_gle.account + else: + default_receivable_account_currency = frappe.db.get_value("Account", + company.default_receivable_account, "account_currency") + if default_receivable_account_currency != company.default_currency: + party_account = company.default_receivable_account + + if party_account: + party.append("accounts", { + "company": company.name, + "account": party_account + }) + + party.flags.ignore_mandatory = True + party.save() \ No newline at end of file diff --git a/erpnext/projects/doctype/activity_cost/activity_cost.json b/erpnext/projects/doctype/activity_cost/activity_cost.json index 88f91162ebc..584a4cb4107 100644 --- a/erpnext/projects/doctype/activity_cost/activity_cost.json +++ b/erpnext/projects/doctype/activity_cost/activity_cost.json @@ -219,7 +219,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-08-31 06:43:42.804365", + "modified": "2015-09-11 12:19:59.149156", "modified_by": "Administrator", "module": "Projects", "name": "Activity Cost", diff --git a/erpnext/projects/doctype/project/project.json b/erpnext/projects/doctype/project/project.json index 2c33e6f1ccf..04c65cdd948 100644 --- a/erpnext/projects/doctype/project/project.json +++ b/erpnext/projects/doctype/project/project.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -900,7 +900,7 @@ "issingle": 0, "istable": 0, "max_attachments": 4, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:59.157775", "modified_by": "Administrator", "module": "Projects", "name": "Project", diff --git a/erpnext/projects/doctype/project_task/project_task.json b/erpnext/projects/doctype/project_task/project_task.json index 14e8d786c45..a108ae6fe9a 100644 --- a/erpnext/projects/doctype/project_task/project_task.json +++ b/erpnext/projects/doctype/project_task/project_task.json @@ -19,7 +19,7 @@ "in_filter": 0, "in_list_view": 1, "label": "Title", - "no_copy": 0, + "no_copy": 1, "permlevel": 0, "precision": "", "print_hide": 0, @@ -217,7 +217,7 @@ "is_submittable": 0, "issingle": 0, "istable": 1, - "modified": "2015-08-19 12:45:54.093938", + "modified": "2015-09-11 12:19:41.832529", "modified_by": "Administrator", "module": "Projects", "name": "Project Task", diff --git a/erpnext/projects/doctype/task/task.json b/erpnext/projects/doctype/task/task.json index 9f51c7870e5..87aea43ec96 100644 --- a/erpnext/projects/doctype/task/task.json +++ b/erpnext/projects/doctype/task/task.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -682,7 +682,7 @@ "issingle": 0, "istable": 0, "max_attachments": 5, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:56:00.252976", "modified_by": "Administrator", "module": "Projects", "name": "Task", diff --git a/erpnext/projects/doctype/time_log/time_log.json b/erpnext/projects/doctype/time_log/time_log.json index 7e221b26802..cdcf64274a3 100644 --- a/erpnext/projects/doctype/time_log/time_log.json +++ b/erpnext/projects/doctype/time_log/time_log.json @@ -1,896 +1,896 @@ { - "allow_copy": 0, - "allow_import": 1, - "allow_rename": 0, - "autoname": "naming_series:", - "creation": "2013-04-03 16:38:41", - "custom": 0, - "description": "Log of Activities performed by users against Tasks that can be used for tracking time, billing.", - "docstatus": 0, - "doctype": "DocType", - "document_type": "Setup", + "allow_copy": 0, + "allow_import": 1, + "allow_rename": 0, + "autoname": "naming_series:", + "creation": "2013-04-03 16:38:41", + "custom": 0, + "description": "Log of Activities performed by users against Tasks that can be used for tracking time, billing.", + "docstatus": 0, + "doctype": "DocType", + "document_type": "Setup", "fields": [ { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "naming_series", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Series", - "no_copy": 0, - "options": "TL-", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "naming_series", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Series", + "no_copy": 0, + "options": "TL-", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_2", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_2", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "status", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Status", - "no_copy": 0, - "options": "Draft\nSubmitted\nBatched for Billing\nBilled\nCancelled", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "status", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Status", + "no_copy": 0, + "options": "Draft\nSubmitted\nBatched for Billing\nBilled\nCancelled", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "section_break_4", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "section_break_4", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "from_time", - "fieldtype": "Datetime", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "From Time", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "from_time", + "fieldtype": "Datetime", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "From Time", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": "0", - "fieldname": "hours", - "fieldtype": "Float", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Hours", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "0", + "fieldname": "hours", + "fieldtype": "Float", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 1, + "label": "Hours", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "to_time", - "fieldtype": "Datetime", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "To Time", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "to_time", + "fieldtype": "Datetime", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "To Time", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_8", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_8", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:!doc.for_manufacturing", - "fieldname": "activity_type", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Activity Type", - "no_copy": 0, - "options": "Activity Type", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:!doc.for_manufacturing", + "fieldname": "activity_type", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Activity Type", + "no_copy": 0, + "options": "Activity Type", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "", - "fieldname": "project", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Project", - "no_copy": 0, - "options": "Project", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "", + "fieldname": "project", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 1, + "label": "Project", + "no_copy": 0, + "options": "Project", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "", - "fieldname": "task", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Task", - "no_copy": 0, - "options": "Task", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "", + "fieldname": "task", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Task", + "no_copy": 0, + "options": "Task", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "section_break_12", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "section_break_12", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "user", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "User", - "no_copy": 0, - "options": "User", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "user", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "User", + "no_copy": 0, + "options": "User", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "employee", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Employee", - "no_copy": 0, - "options": "Employee", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "employee", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Employee", + "no_copy": 0, + "options": "Employee", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_3", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_3", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "for_manufacturing", - "fieldtype": "Check", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "For Manufacturing", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "for_manufacturing", + "fieldtype": "Check", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "For Manufacturing", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "billable", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Billable", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "billable", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Billable", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.for_manufacturing", - "fieldname": "section_break_11", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.for_manufacturing", + "fieldname": "section_break_11", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "", - "fieldname": "production_order", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Production Order", - "no_copy": 0, - "options": "Production Order", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "", + "fieldname": "production_order", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Production Order", + "no_copy": 0, + "options": "Production Order", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "", - "fieldname": "operation", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Operation", - "no_copy": 0, - "options": "Operation", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "", + "fieldname": "operation", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Operation", + "no_copy": 0, + "options": "Operation", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "", - "fieldname": "operation_id", - "fieldtype": "Data", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Operation ID", - "no_copy": 0, - "options": "", - "permlevel": 0, - "precision": "", - "print_hide": 1, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "", + "fieldname": "operation_id", + "fieldtype": "Data", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Operation ID", + "no_copy": 0, + "options": "", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_14", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_14", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "", - "fieldname": "workstation", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Workstation", - "no_copy": 0, - "options": "Workstation", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "", + "fieldname": "workstation", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Workstation", + "no_copy": 0, + "options": "Workstation", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "", - "description": "Operation completed for how many finished goods?", - "fieldname": "completed_qty", - "fieldtype": "Float", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Completed Qty", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "", + "description": "Operation completed for how many finished goods?", + "fieldname": "completed_qty", + "fieldtype": "Float", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Completed Qty", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "section_break_7", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "section_break_7", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "note", - "fieldtype": "Text Editor", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Note", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "note", + "fieldtype": "Text Editor", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Note", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "", - "fieldname": "section_break_24", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "", + "fieldname": "section_break_24", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": "0", - "description": "", - "fieldname": "costing_rate", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Costing Rate based on Activity Type (per hour)", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "0", + "description": "", + "fieldname": "costing_rate", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Costing Rate based on Activity Type (per hour)", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": "0", - "fieldname": "costing_amount", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Costing Amount", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "0", + "fieldname": "costing_amount", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Costing Amount", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_25", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_25", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": "0", - "description": "", - "fieldname": "billing_rate", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Billing Rate based on Activity Type (per hour)", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "0", + "description": "", + "fieldname": "billing_rate", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Billing Rate based on Activity Type (per hour)", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "default": "0", - "description": "Will be updated only if Time Log is 'Billable'", - "fieldname": "billing_amount", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Billing Amount", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "0", + "description": "Will be updated only if Time Log is 'Billable'", + "fieldname": "billing_amount", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Billing Amount", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "section_break_29", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "section_break_29", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "Will be updated when batched.", - "fieldname": "time_log_batch", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Time Log Batch", - "no_copy": 0, - "options": "Time Log Batch", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "Will be updated when batched.", + "fieldname": "time_log_batch", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Time Log Batch", + "no_copy": 0, + "options": "Time Log Batch", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "Will be updated when billed.", - "fieldname": "sales_invoice", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Sales Invoice", - "no_copy": 0, - "options": "Sales Invoice", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "Will be updated when billed.", + "fieldname": "sales_invoice", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Sales Invoice", + "no_copy": 0, + "options": "Sales Invoice", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "amended_from", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 1, - "in_filter": 0, - "in_list_view": 0, - "label": "Amended From", - "no_copy": 1, - "options": "Time Log", - "permlevel": 1, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 1, + "in_filter": 0, + "in_list_view": 0, + "label": "Amended From", + "no_copy": 1, + "options": "Time Log", + "permlevel": 1, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "fieldname": "title", - "fieldtype": "Data", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Title", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "fieldname": "title", + "fieldtype": "Data", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Title", + "no_copy": 1, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 } - ], - "hide_heading": 0, - "hide_toolbar": 0, - "icon": "icon-time", - "idx": 1, - "in_create": 0, - "in_dialog": 0, - "is_submittable": 1, - "issingle": 0, - "istable": 0, - "modified": "2015-09-07 15:51:26", - "modified_by": "Administrator", - "module": "Projects", - "name": "Time Log", - "owner": "Administrator", + ], + "hide_heading": 0, + "hide_toolbar": 0, + "icon": "icon-time", + "idx": 1, + "in_create": 0, + "in_dialog": 0, + "is_submittable": 1, + "issingle": 0, + "istable": 0, + "modified": "2015-09-11 12:19:48.187752", + "modified_by": "Administrator", + "module": "Projects", + "name": "Time Log", + "owner": "Administrator", "permissions": [ { - "amend": 1, - "apply_user_permissions": 0, - "cancel": 1, - "create": 1, - "delete": 1, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Projects User", - "set_user_permissions": 0, - "share": 1, - "submit": 1, + "amend": 1, + "apply_user_permissions": 0, + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Projects User", + "set_user_permissions": 0, + "share": 1, + "submit": 1, "write": 1 - }, + }, { - "amend": 1, - "apply_user_permissions": 0, - "cancel": 1, - "create": 0, - "delete": 1, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Projects Manager", - "set_user_permissions": 0, - "share": 1, - "submit": 1, + "amend": 1, + "apply_user_permissions": 0, + "cancel": 1, + "create": 0, + "delete": 1, + "email": 1, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Projects Manager", + "set_user_permissions": 0, + "share": 1, + "submit": 1, "write": 1 } - ], - "read_only": 0, - "read_only_onload": 0, + ], + "read_only": 0, + "read_only_onload": 0, "title_field": "title" -} +} \ No newline at end of file diff --git a/erpnext/projects/doctype/time_log_batch/time_log_batch.json b/erpnext/projects/doctype/time_log_batch/time_log_batch.json index f78a3599b90..8f5580f5d75 100644 --- a/erpnext/projects/doctype/time_log_batch/time_log_batch.json +++ b/erpnext/projects/doctype/time_log_batch/time_log_batch.json @@ -8,7 +8,7 @@ "description": "Batch Time Logs for Billing.", "docstatus": 0, "doctype": "DocType", - "document_type": "Transaction", + "document_type": "Document", "fields": [ { "allow_on_submit": 0, @@ -261,7 +261,7 @@ "is_submittable": 1, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:56:00.731472", "modified_by": "Administrator", "module": "Projects", "name": "Time Log Batch", diff --git a/erpnext/public/js/controllers/taxes_and_totals.js b/erpnext/public/js/controllers/taxes_and_totals.js index 0b3ca7f2a85..b1b24cf38ae 100644 --- a/erpnext/public/js/controllers/taxes_and_totals.js +++ b/erpnext/public/js/controllers/taxes_and_totals.js @@ -491,5 +491,45 @@ erpnext.taxes_and_totals = erpnext.stock.StockController.extend({ this.frm.doc.total_advance = flt(total_allocated_amount, precision("total_advance")); this.calculate_outstanding_amount(update_paid_amount); + }, + + calculate_outstanding_amount: function(update_paid_amount) { + // NOTE: + // paid_amount and write_off_amount is only for POS Invoice + // total_advance is only for non POS Invoice + if(this.frm.doc.is_return || this.frm.doc.docstatus > 0) return; + + frappe.model.round_floats_in(this.frm.doc, ["grand_total", "total_advance", "write_off_amount"]); + + var total_amount_to_pay = flt((this.frm.doc.grand_total - this.frm.doc.total_advance + - this.frm.doc.write_off_amount), precision("grand_total")); + + if(this.frm.doc.doctype == "Sales Invoice") { + frappe.model.round_floats_in(this.frm.doc, ["paid_amount"]); + + if(this.frm.doc.is_pos) { + if(!this.frm.doc.paid_amount || update_paid_amount===undefined || update_paid_amount) { + this.frm.doc.paid_amount = flt(total_amount_to_pay); + } + } else { + this.frm.doc.paid_amount = 0 + } + this.set_in_company_currency(this.frm.doc, ["paid_amount"]); + this.frm.refresh_field("paid_amount"); + this.frm.refresh_field("base_paid_amount"); + + var outstanding_amount = flt(total_amount_to_pay - this.frm.doc.paid_amount, + precision("outstanding_amount")); + + } else if(this.frm.doc.doctype == "Purchase Invoice") { + var outstanding_amount = flt(total_amount_to_pay, precision("outstanding_amount")); + } + + if(this.frm.doc.party_account_currency == this.frm.doc.currency) { + this.frm.set_value("outstanding_amount", outstanding_amount); + } else { + this.frm.set_value("outstanding_amount", + flt(outstanding_amount * this.frm.doc.conversion_rate, precision("outstanding_amount"))); + } } }) diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index c6b26bc48db..7f2cee760a9 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -423,11 +423,14 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ setup_field_label_map(["base_total", "base_net_total", "base_total_taxes_and_charges", "base_discount_amount", "base_grand_total", "base_rounded_total", "base_in_words", "base_taxes_and_charges_added", "base_taxes_and_charges_deducted", "total_amount_to_pay", - "outstanding_amount", "total_advance", "paid_amount", "write_off_amount"], company_currency); + "base_paid_amount", "base_write_off_amount" + ], company_currency); setup_field_label_map(["total", "net_total", "total_taxes_and_charges", "discount_amount", "grand_total", "taxes_and_charges_added", "taxes_and_charges_deducted", - "rounded_total", "in_words"], this.frm.doc.currency); + "rounded_total", "in_words", "paid_amount", "write_off_amount"], this.frm.doc.currency); + + setup_field_label_map(["outstanding_amount", "total_advance"], this.frm.doc.party_account_currency); cur_frm.set_df_property("conversion_rate", "description", "1 " + this.frm.doc.currency + " = [?] " + company_currency) @@ -440,7 +443,8 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ // toggle fields this.frm.toggle_display(["conversion_rate", "base_total", "base_net_total", "base_total_taxes_and_charges", "base_taxes_and_charges_added", "base_taxes_and_charges_deducted", - "base_grand_total", "base_rounded_total", "base_in_words", "base_discount_amount"], + "base_grand_total", "base_rounded_total", "base_in_words", "base_discount_amount", + "base_paid_amount", "base_write_off_amount"], this.frm.doc.currency != company_currency); this.frm.toggle_display(["plc_conversion_rate", "price_list_currency"], diff --git a/erpnext/public/js/pos/pos.js b/erpnext/public/js/pos/pos.js index 5f827964f6d..02eeab08379 100644 --- a/erpnext/public/js/pos/pos.js +++ b/erpnext/public/js/pos/pos.js @@ -473,13 +473,11 @@ erpnext.pos.PointOfSale = Class.extend({ } me.frm.set_value("mode_of_payment", values.mode_of_payment); - //me.frm.cscript.calculate_taxes_and_totals(); - - var paid_amount = flt((flt(values.paid_amount) - flt(values.change)) / me.frm.doc.conversion_rate, precision("paid_amount")); + var paid_amount = flt((flt(values.paid_amount) - flt(values.change)), precision("paid_amount")); me.frm.set_value("paid_amount", paid_amount); - + // specifying writeoff amount here itself, so as to avoid recursion issue - me.frm.set_value("write_off_amount", me.frm.doc.base_grand_total - paid_amount); + me.frm.set_value("write_off_amount", me.frm.doc.grand_total - paid_amount); me.frm.set_value("outstanding_amount", 0); me.frm.savesubmit(this); diff --git a/erpnext/selling/doctype/campaign/campaign.json b/erpnext/selling/doctype/campaign/campaign.json index 92c8ecf6adb..4ff55c4fd2a 100644 --- a/erpnext/selling/doctype/campaign/campaign.json +++ b/erpnext/selling/doctype/campaign/campaign.json @@ -8,7 +8,7 @@ "description": "Keep Track of Sales Campaigns. Keep track of Leads, Quotations, Sales Order etc from Campaigns to gauge Return on Investment. ", "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -111,7 +111,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:54.566102", "modified_by": "Administrator", "module": "Selling", "name": "Campaign", diff --git a/erpnext/selling/doctype/customer/customer.js b/erpnext/selling/doctype/customer/customer.js index ac0f6366cd5..e596ae41623 100644 --- a/erpnext/selling/doctype/customer/customer.js +++ b/erpnext/selling/doctype/customer/customer.js @@ -12,7 +12,15 @@ frappe.ui.form.on("Customer", "refresh", function(frm) { frm.toggle_display(['address_html','contact_html'], !frm.doc.__islocal); - if(!frm.doc.__islocal) erpnext.utils.render_address_and_contact(frm); + if(!frm.doc.__islocal) { + erpnext.utils.render_address_and_contact(frm); + } + + var grid = cur_frm.get_field("sales_team").grid; + grid.set_column_disp("allocated_percentage", false); + grid.set_column_disp("allocated_amount", false); + grid.set_column_disp("incentives", false); + }) cur_frm.cscript.onload = function(doc, dt, dn) { @@ -56,16 +64,12 @@ cur_frm.cscript.setup_dashboard = function(doc) { }, callback: function(r) { if (in_list(user_roles, "Accounts User") || in_list(user_roles, "Accounts Manager")) { - if(r.message["company_currency"].length == 1) { - cur_frm.dashboard.set_headline( - __("Total Billing This Year: ") + "" - + format_currency(r.message.billing_this_year, r.message["company_currency"][0]) - + ' / ' + __("Unpaid") + ": " - + format_currency(r.message.total_unpaid, r.message["company_currency"][0]) - + ''); - } else { - cur_frm.dashboard.set_headline(""); - } + cur_frm.dashboard.set_headline( + __("Total Billing This Year: ") + "" + + format_currency(r.message.billing_this_year, cur_frm.doc.party_account_currency) + + ' / ' + __("Unpaid") + ": " + + format_currency(r.message.total_unpaid, cur_frm.doc.party_account_currency) + + ''); } cur_frm.dashboard.set_badge_count(r.message); } @@ -92,11 +96,17 @@ cur_frm.fields_dict['default_price_list'].get_query = function(doc, cdt, cdn) { cur_frm.fields_dict['accounts'].grid.get_field('account').get_query = function(doc, cdt, cdn) { var d = locals[cdt][cdn]; + var filters = { + 'account_type': 'Receivable', + 'company': d.company, + "is_group": 0 + }; + + if(doc.party_account_currency) { + $.extend(filters, {"account_currency": doc.party_account_currency}); + } + return { - filters: { - 'account_type': 'Receivable', - 'company': d.company, - "is_group": 0 - } + filters: filters } } diff --git a/erpnext/selling/doctype/customer/customer.json b/erpnext/selling/doctype/customer/customer.json index 4a8baaf4d63..51ddc46bca3 100644 --- a/erpnext/selling/doctype/customer/customer.json +++ b/erpnext/selling/doctype/customer/customer.json @@ -1,990 +1,1013 @@ { - "allow_copy": 0, - "allow_import": 1, - "allow_rename": 1, - "autoname": "naming_series:", - "creation": "2013-06-11 14:26:44", - "custom": 0, - "description": "Buyer of Goods and Services.", - "docstatus": 0, - "doctype": "DocType", - "document_type": "Setup", + "allow_copy": 0, + "allow_import": 1, + "allow_rename": 1, + "autoname": "naming_series:", + "creation": "2013-06-11 14:26:44", + "custom": 0, + "description": "Buyer of Goods and Services.", + "docstatus": 0, + "doctype": "DocType", + "document_type": "Setup", "fields": [ { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "basic_info", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "icon-user", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "basic_info", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "icon-user", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "naming_series", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Series", - "no_copy": 1, - "options": "CUST-", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "naming_series", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Series", + "no_copy": 1, + "options": "CUST-", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "customer_name", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Full Name", - "no_copy": 1, - "oldfieldname": "customer_name", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "customer_name", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Full Name", + "no_copy": 1, + "oldfieldname": "customer_name", + "oldfieldtype": "Data", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "customer_type", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Type", - "no_copy": 0, - "oldfieldname": "customer_type", - "oldfieldtype": "Select", - "options": "\nCompany\nIndividual", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "customer_type", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Type", + "no_copy": 0, + "oldfieldname": "customer_type", + "oldfieldtype": "Select", + "options": "\nCompany\nIndividual", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "lead_name", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "From Lead", - "no_copy": 1, - "oldfieldname": "lead_name", - "oldfieldtype": "Link", - "options": "Lead", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 1, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "lead_name", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "From Lead", + "no_copy": 1, + "oldfieldname": "lead_name", + "oldfieldtype": "Link", + "options": "Lead", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 1, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break0", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break0", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "", - "fieldname": "customer_group", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 1, - "in_list_view": 1, - "label": "Customer Group", - "no_copy": 0, - "oldfieldname": "customer_group", - "oldfieldtype": "Link", - "options": "Customer Group", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 1, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "", + "fieldname": "customer_group", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 1, + "in_list_view": 1, + "label": "Customer Group", + "no_copy": 0, + "oldfieldname": "customer_group", + "oldfieldtype": "Link", + "options": "Customer Group", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 1, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "", - "fieldname": "territory", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Territory", - "no_copy": 0, - "oldfieldname": "territory", - "oldfieldtype": "Link", - "options": "Territory", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "", + "fieldname": "territory", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 1, + "label": "Territory", + "no_copy": 0, + "oldfieldname": "territory", + "oldfieldtype": "Link", + "options": "Territory", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "tax_id", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Tax ID", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "tax_id", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Tax ID", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "is_frozen", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Is Frozen", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "is_frozen", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Is Frozen", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "currency_and_price_list", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "currency_and_price_list", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "default_currency", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 1, - "in_filter": 0, - "in_list_view": 0, - "label": "Currency", - "no_copy": 1, - "options": "Currency", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "default_currency", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 1, + "in_filter": 0, + "in_list_view": 0, + "label": "Billing Currency", + "no_copy": 1, + "options": "Currency", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "default_price_list", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 1, - "in_filter": 0, - "in_list_view": 0, - "label": "Default Price List", - "no_copy": 0, - "options": "Price List", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "default_price_list", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 1, + "in_filter": 0, + "in_list_view": 0, + "label": "Default Price List", + "no_copy": 0, + "options": "Price List", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_14", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_14", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "default_taxes_and_charges", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 1, - "in_filter": 0, - "in_list_view": 0, - "label": "Default Taxes and Charges", - "no_copy": 0, - "options": "Sales Taxes and Charges Template", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "default_taxes_and_charges", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 1, + "in_filter": 0, + "in_list_view": 0, + "label": "Default Taxes and Charges", + "no_copy": 0, + "options": "Sales Taxes and Charges Template", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:!doc.__islocal", - "fieldname": "address_contacts", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Address and Contact", - "no_copy": 0, - "options": "icon-map-marker", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:!doc.__islocal", + "fieldname": "address_contacts", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Address and Contact", + "no_copy": 0, + "options": "icon-map-marker", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "address_html", - "fieldtype": "HTML", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Address HTML", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "address_html", + "fieldtype": "HTML", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Address HTML", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break1", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break1", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "contact_html", - "fieldtype": "HTML", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Contact HTML", - "no_copy": 0, - "oldfieldtype": "HTML", - "permlevel": 0, - "print_hide": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "contact_html", + "fieldtype": "HTML", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Contact HTML", + "no_copy": 0, + "oldfieldtype": "HTML", + "permlevel": 0, + "print_hide": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "accounts", - "fieldname": "default_receivable_accounts", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Default Receivable Accounts", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "accounts", + "fieldname": "default_receivable_accounts", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Default Receivable Accounts", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:!doc.__islocal", - "description": "Mention if non-standard receivable account applicable", - "fieldname": "accounts", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Accounts", - "no_copy": 0, - "options": "Party Account", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "party_account_currency", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Accounting Currency", + "no_copy": 0, + "options": "Currency", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "eval:doc.credit_days || doc.credit_limit", - "fieldname": "column_break2", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Credit Limit", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "", + "description": "Mention if non-standard receivable account", + "fieldname": "accounts", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Accounts", + "no_copy": 0, + "options": "Party Account", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "eval:doc.credit_days || doc.credit_limit", + "fieldname": "column_break2", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Credit Limit", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0, "width": "50%" - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "credit_days_based_on", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Credit Days Based On", - "no_copy": 0, - "options": "\nFixed Days\nLast Day of the Next Month", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "credit_days_based_on", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Credit Days Based On", + "no_copy": 0, + "options": "\nFixed Days\nLast Day of the Next Month", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "depends_on": "eval:doc.credit_days_based_on=='Fixed Days'", - "fieldname": "credit_days", - "fieldtype": "Int", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Credit Days", - "no_copy": 0, - "oldfieldname": "credit_days", - "oldfieldtype": "Int", - "permlevel": 1, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:doc.credit_days_based_on=='Fixed Days'", + "fieldname": "credit_days", + "fieldtype": "Int", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Credit Days", + "no_copy": 0, + "oldfieldname": "credit_days", + "oldfieldtype": "Int", + "permlevel": 1, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "credit_limit", - "fieldtype": "Currency", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Credit Limit", - "no_copy": 0, - "oldfieldname": "credit_limit", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 1, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "credit_limit", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Credit Limit", + "no_copy": 0, + "oldfieldname": "credit_limit", + "oldfieldtype": "Currency", + "options": "", + "permlevel": 1, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "customer_details", - "fieldname": "more_info", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Customer Details", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "icon-file-text", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "customer_details", + "fieldname": "more_info", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Customer Details", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "icon-file-text", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "description": "Additional information regarding the customer.", - "fieldname": "customer_details", - "fieldtype": "Text", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Customer Details", - "no_copy": 0, - "oldfieldname": "customer_details", - "oldfieldtype": "Code", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "description": "Additional information regarding the customer.", + "fieldname": "customer_details", + "fieldtype": "Text", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Customer Details", + "no_copy": 0, + "oldfieldname": "customer_details", + "oldfieldtype": "Code", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "website", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Website", - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "website", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Website", + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "default_sales_partner", - "fieldname": "sales_team_section_break", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Sales Partner and Commission", - "no_copy": 0, - "oldfieldtype": "Section Break", - "options": "icon-group", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "default_sales_partner", + "fieldname": "sales_team_section_break", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Sales Partner and Commission", + "no_copy": 0, + "oldfieldtype": "Section Break", + "options": "icon-group", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "default_sales_partner", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 1, - "in_filter": 0, - "in_list_view": 0, - "label": "Sales Partner", - "no_copy": 0, - "oldfieldname": "default_sales_partner", - "oldfieldtype": "Link", - "options": "Sales Partner", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "default_sales_partner", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 1, + "in_filter": 0, + "in_list_view": 0, + "label": "Sales Partner", + "no_copy": 0, + "oldfieldname": "default_sales_partner", + "oldfieldtype": "Link", + "options": "Sales Partner", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "default_commission_rate", - "fieldtype": "Float", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Commission Rate", - "no_copy": 0, - "oldfieldname": "default_commission_rate", - "oldfieldtype": "Currency", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "default_commission_rate", + "fieldtype": "Float", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Commission Rate", + "no_copy": 0, + "oldfieldname": "default_commission_rate", + "oldfieldtype": "Currency", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "sales_team", - "fieldname": "sales_team_section", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Sales Team", - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "sales_team", + "fieldname": "sales_team_section", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Sales Team", + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "sales_team", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Sales Team Details", - "no_copy": 0, - "oldfieldname": "sales_team", - "oldfieldtype": "Table", - "options": "Sales Team", - "permlevel": 0, - "print_hide": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "sales_team", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Sales Team Details", + "no_copy": 0, + "oldfieldname": "sales_team", + "oldfieldtype": "Table", + "options": "Sales Team", + "permlevel": 0, + "print_hide": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "communications", - "fieldtype": "Table", - "hidden": 1, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Communications", - "no_copy": 0, - "options": "Communication", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "communications", + "fieldtype": "Table", + "hidden": 1, + "ignore_user_permissions": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Communications", + "no_copy": 0, + "options": "Communication", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 } - ], - "hide_heading": 0, - "hide_toolbar": 0, - "icon": "icon-user", - "idx": 1, - "in_create": 0, - "in_dialog": 0, - "is_submittable": 0, - "issingle": 0, - "istable": 0, - "modified": "2015-09-07 15:51:26", - "modified_by": "Administrator", - "module": "Selling", - "name": "Customer", - "owner": "Administrator", + ], + "hide_heading": 0, + "hide_toolbar": 0, + "icon": "icon-user", + "idx": 1, + "in_create": 0, + "in_dialog": 0, + "is_submittable": 0, + "issingle": 0, + "istable": 0, + "modified": "2015-09-17 14:05:38.541266", + "modified_by": "Administrator", + "module": "Selling", + "name": "Customer", + "owner": "Administrator", "permissions": [ { - "amend": 0, - "apply_user_permissions": 0, - "cancel": 0, - "create": 1, - "delete": 0, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Sales User", - "set_user_permissions": 0, - "share": 1, - "submit": 0, + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 1, + "delete": 0, + "email": 1, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Sales User", + "set_user_permissions": 0, + "share": 1, + "submit": 0, "write": 1 - }, + }, { - "amend": 0, - "apply_user_permissions": 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": "Sales User", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Sales User", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 - }, + }, { - "amend": 0, - "apply_user_permissions": 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": "Sales Manager", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Sales Manager", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 - }, + }, { - "amend": 0, - "apply_user_permissions": 0, - "cancel": 0, - "create": 1, - "delete": 1, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Sales Master Manager", - "set_user_permissions": 1, - "share": 1, - "submit": 0, + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Sales Master Manager", + "set_user_permissions": 1, + "share": 1, + "submit": 0, "write": 1 - }, + }, { - "amend": 0, - "apply_user_permissions": 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": "Sales Master Manager", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Sales Master Manager", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 1 - }, + }, { - "amend": 0, - "apply_user_permissions": 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": "Stock User", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Stock User", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 - }, + }, { - "amend": 0, - "apply_user_permissions": 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": "Stock Manager", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Stock Manager", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 - }, + }, { - "amend": 0, - "apply_user_permissions": 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": "Accounts User", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Accounts User", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 - }, + }, { - "amend": 0, - "apply_user_permissions": 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": "Accounts Manager", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 0, + "apply_user_permissions": 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": "Accounts Manager", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 } - ], - "read_only": 0, - "read_only_onload": 0, - "search_fields": "customer_name,customer_group,territory", + ], + "read_only": 0, + "read_only_onload": 0, + "search_fields": "customer_name,customer_group,territory", "title_field": "customer_name" -} \ No newline at end of file +} diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py index 5cbf243fb0e..6b67c887028 100644 --- a/erpnext/selling/doctype/customer/customer.py +++ b/erpnext/selling/doctype/customer/customer.py @@ -10,6 +10,7 @@ from frappe.utils import flt from erpnext.utilities.transaction_base import TransactionBase from erpnext.utilities.address_and_contact import load_address_and_contact +from erpnext.accounts.party import validate_accounting_currency, validate_party_account from frappe.desk.reportview import build_match_conditions class Customer(TransactionBase): @@ -27,12 +28,14 @@ class Customer(TransactionBase): else: self.name = make_autoname(self.naming_series+'.#####') - def validate_values(self): + def validate_mandatory(self): if frappe.defaults.get_global_default('cust_master_name') == 'Naming Series' and not self.naming_series: frappe.throw(_("Series is mandatory"), frappe.MandatoryError) - + def validate(self): - self.validate_values() + self.validate_mandatory() + validate_accounting_currency(self) + validate_party_account(self) def update_lead_status(self): if self.lead_name: @@ -125,9 +128,11 @@ def get_dashboard_info(customer): out[doctype] = frappe.db.get_value(doctype, {"customer": customer, "docstatus": ["!=", 2] }, "count(*)") - billing_this_year = frappe.db.sql("""select sum(base_grand_total) - from `tabSales Invoice` - where customer=%s and docstatus = 1 and fiscal_year = %s""", + billing_this_year = frappe.db.sql(""" + select sum(ifnull(debit_in_account_currency, 0)) - sum(ifnull(credit_in_account_currency, 0)) + from `tabGL Entry` + where voucher_type='Sales Invoice' and party_type = 'Customer' + and party=%s and fiscal_year = %s""", (customer, frappe.db.get_default("fiscal_year"))) total_unpaid = frappe.db.sql("""select sum(outstanding_amount) @@ -136,7 +141,6 @@ def get_dashboard_info(customer): out["billing_this_year"] = billing_this_year[0][0] if billing_this_year else 0 out["total_unpaid"] = total_unpaid[0][0] if total_unpaid else 0 - out["company_currency"] = frappe.db.sql_list("select distinct default_currency from tabCompany") return out diff --git a/erpnext/selling/doctype/customer/test_customer.py b/erpnext/selling/doctype/customer/test_customer.py index dca4bb76fb8..a0a1501a467 100644 --- a/erpnext/selling/doctype/customer/test_customer.py +++ b/erpnext/selling/doctype/customer/test_customer.py @@ -8,6 +8,8 @@ import unittest from frappe.test_runner import make_test_records from erpnext.controllers.accounts_controller import CustomerFrozen +from erpnext.accounts.party import InvalidCurrency +from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice test_ignore = ["Price List"] @@ -77,4 +79,14 @@ class TestCustomer(unittest.TestCase): frappe.db.set_value("Customer", "_Test Customer", "is_frozen", 0) - so.save() \ No newline at end of file + so.save() + + def test_multi_currency(self): + customer = frappe.get_doc("Customer", "_Test Customer USD") + + create_sales_invoice(customer="_Test Customer USD", debit_to="_Test Receivable USD - _TC", + currency="USD", conversion_rate=50) + + customer.party_account_currency = "EUR" + self.assertRaises(InvalidCurrency, customer.save) + \ No newline at end of file diff --git a/erpnext/selling/doctype/customer/test_records.json b/erpnext/selling/doctype/customer/test_records.json index e076f7a8931..060633ec4f6 100644 --- a/erpnext/selling/doctype/customer/test_records.json +++ b/erpnext/selling/doctype/customer/test_records.json @@ -1,6 +1,5 @@ [ { - "company": "_Test Company", "customer_group": "_Test Customer Group", "customer_name": "_Test Customer", "customer_type": "Individual", @@ -8,7 +7,6 @@ "territory": "_Test Territory" }, { - "company": "_Test Company", "customer_group": "_Test Customer Group", "customer_name": "_Test Customer 1", "customer_type": "Individual", @@ -16,7 +14,6 @@ "territory": "_Test Territory" }, { - "company": "_Test Company", "customer_group": "_Test Customer Group", "customer_name": "_Test Customer 2", "customer_type": "Individual", @@ -24,11 +21,22 @@ "territory": "_Test Territory" }, { - "company": "_Test Company", "customer_group": "_Test Customer Group", "customer_name": "_Test Customer 3", "customer_type": "Individual", "doctype": "Customer", "territory": "_Test Territory" + }, + { + "customer_group": "_Test Customer Group", + "customer_name": "_Test Customer USD", + "customer_type": "Individual", + "doctype": "Customer", + "territory": "_Test Territory", + "party_account_currency": "USD", + "accounts": [{ + "company": "_Test Company", + "account": "_Test Receivable USD - _TC" + }] } ] diff --git a/erpnext/selling/doctype/industry_type/industry_type.json b/erpnext/selling/doctype/industry_type/industry_type.json index 9f4ae007593..4bfba38fd73 100644 --- a/erpnext/selling/doctype/industry_type/industry_type.json +++ b/erpnext/selling/doctype/industry_type/industry_type.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -42,7 +42,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:56.514136", "modified_by": "Administrator", "module": "Selling", "name": "Industry Type", diff --git a/erpnext/selling/doctype/product_bundle/product_bundle.js b/erpnext/selling/doctype/product_bundle/product_bundle.js index 2849be5bf33..7a04c6ab06d 100644 --- a/erpnext/selling/doctype/product_bundle/product_bundle.js +++ b/erpnext/selling/doctype/product_bundle/product_bundle.js @@ -12,9 +12,8 @@ cur_frm.fields_dict.new_item_code.get_query = function() { } cur_frm.fields_dict.new_item_code.query_description = __('Please select Item where "Is Stock Item" is "No" and "Is Sales Item" is "Yes" and there is no other Product Bundle'); -cur_frm.cscript.item_code = function(doc, dt, dn) { - var d = locals[dt][dn]; - if (d.item_code){ - return get_server_fields('get_item_details', d.item_code, 'items', doc ,dt, dn, 1); - } +cur_frm.cscript.onload = function() { + // set add fetch for item_code's item_name and description + cur_frm.add_fetch('item_code', 'stock_uom', 'uom'); + cur_frm.add_fetch('item_code', 'description', 'description'); } diff --git a/erpnext/selling/doctype/product_bundle/product_bundle.py b/erpnext/selling/doctype/product_bundle/product_bundle.py index 2949c5cddfe..363d334f22f 100644 --- a/erpnext/selling/doctype/product_bundle/product_bundle.py +++ b/erpnext/selling/doctype/product_bundle/product_bundle.py @@ -22,14 +22,6 @@ class ProductBundle(Document): if frappe.db.get_value("Item", self.new_item_code, "is_stock_item"): frappe.throw(_("Parent Item {0} must not be a Stock Item").format(self.new_item_code)) - def get_item_details(self, name): - det = frappe.db.sql("""select description, stock_uom from `tabItem` - where name = %s""", name) - return { - 'description' : det and det[0][0] or '', - 'uom': det and det[0][1] or '' - } - def get_new_item_code(doctype, txt, searchfield, start, page_len, filters): from erpnext.controllers.queries import get_match_cond diff --git a/erpnext/selling/doctype/quotation/quotation.json b/erpnext/selling/doctype/quotation/quotation.json index 97f32f216a6..3807e2de314 100644 --- a/erpnext/selling/doctype/quotation/quotation.json +++ b/erpnext/selling/doctype/quotation/quotation.json @@ -64,7 +64,7 @@ "in_filter": 0, "in_list_view": 0, "label": "Title", - "no_copy": 0, + "no_copy": 1, "permlevel": 0, "precision": "", "print_hide": 0, @@ -1843,7 +1843,7 @@ "issingle": 0, "istable": 0, "max_attachments": 1, - "modified": "2015-08-27 03:27:57.267110", + "modified": "2015-09-11 12:20:18.521489", "modified_by": "Administrator", "module": "Selling", "name": "Quotation", diff --git a/erpnext/selling/doctype/sales_order/sales_order.json b/erpnext/selling/doctype/sales_order/sales_order.json index 417250b35f7..2e85e26c74c 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.json +++ b/erpnext/selling/doctype/sales_order/sales_order.json @@ -65,7 +65,7 @@ "in_filter": 0, "in_list_view": 0, "label": "Title", - "no_copy": 0, + "no_copy": 1, "permlevel": 0, "precision": "", "print_hide": 0, @@ -2553,7 +2553,7 @@ "is_submittable": 1, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-11 12:19:42.436344", "modified_by": "Administrator", "module": "Selling", "name": "Sales Order", diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index 8fcff104771..3e689038a0c 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -226,7 +226,7 @@ class SalesOrder(SellingController): frappe.db.set(self, 'status', 'Stopped') self.update_reserved_qty() frappe.msgprint(_("{0} {1} status is Stopped").format(self.doctype, self.name)) - self.notify_modified() + self.notify_update() clear_doctype_notifications(self) def unstop_sales_order(self): diff --git a/erpnext/selling/doctype/sales_team/sales_team.json b/erpnext/selling/doctype/sales_team/sales_team.json index dfd0ff192b4..1747d2ed923 100644 --- a/erpnext/selling/doctype/sales_team/sales_team.json +++ b/erpnext/selling/doctype/sales_team/sales_team.json @@ -33,31 +33,6 @@ "unique": 0, "width": "200px" }, - { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "sales_designation", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Designation", - "no_copy": 0, - "oldfieldname": "sales_designation", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 0, - "print_width": "100px", - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0, - "width": "100px" - }, { "allow_on_submit": 0, "bold": 0, @@ -210,7 +185,7 @@ "is_submittable": 0, "issingle": 0, "istable": 1, - "modified": "2013-12-31 19:00:14", + "modified": "2015-08-13 16:30:24.146848", "modified_by": "Administrator", "module": "Selling", "name": "Sales Team", diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js index 5404947e1d9..6a8744a3854 100644 --- a/erpnext/selling/sales_common.js +++ b/erpnext/selling/sales_common.js @@ -206,30 +206,6 @@ erpnext.selling.SellingController = erpnext.TransactionController.extend({ } }, - calculate_outstanding_amount: function(update_paid_amount) { - // NOTE: - // paid_amount and write_off_amount is only for POS Invoice - // total_advance is only for non POS Invoice - if(this.frm.doc.doctype == "Sales Invoice" && this.frm.doc.docstatus==0 && !this.frm.doc.is_return) { - frappe.model.round_floats_in(this.frm.doc, ["base_grand_total", "total_advance", "write_off_amount", - "paid_amount"]); - var total_amount_to_pay = this.frm.doc.base_grand_total - this.frm.doc.write_off_amount - - this.frm.doc.total_advance; - if(this.frm.doc.is_pos) { - if(!this.frm.doc.paid_amount || update_paid_amount===undefined || update_paid_amount) { - this.frm.doc.paid_amount = flt(total_amount_to_pay); - this.frm.refresh_field("paid_amount"); - } - } else { - this.frm.doc.paid_amount = 0 - this.frm.refresh_field("paid_amount"); - } - - this.frm.set_value("outstanding_amount", flt(total_amount_to_pay - - this.frm.doc.paid_amount, precision("outstanding_amount"))); - } - }, - calculate_commission: function() { if(this.frm.fields_dict.commission_rate) { if(this.frm.doc.commission_rate > 100) { diff --git a/erpnext/setup/doctype/authorization_rule/authorization_rule.json b/erpnext/setup/doctype/authorization_rule/authorization_rule.json index 81b9586fdbe..a773fdfc989 100644 --- a/erpnext/setup/doctype/authorization_rule/authorization_rule.json +++ b/erpnext/setup/doctype/authorization_rule/authorization_rule.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -284,7 +284,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-02-05 05:11:34.624998", + "modified": "2015-09-14 02:55:53.995871", "modified_by": "Administrator", "module": "Setup", "name": "Authorization Rule", diff --git a/erpnext/setup/doctype/authorization_rule/test_authorization_rule.py b/erpnext/setup/doctype/authorization_rule/test_authorization_rule.py new file mode 100644 index 00000000000..332f1039921 --- /dev/null +++ b/erpnext/setup/doctype/authorization_rule/test_authorization_rule.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals + +import frappe +import unittest + +# test_records = frappe.get_test_records('Authorization Rule') + +class TestAuthorizationRule(unittest.TestCase): + pass diff --git a/erpnext/setup/doctype/backup_manager/backup_manager.py b/erpnext/setup/doctype/backup_manager/backup_manager.py index 4b16330868b..4ad64f64c3b 100644 --- a/erpnext/setup/doctype/backup_manager/backup_manager.py +++ b/erpnext/setup/doctype/backup_manager/backup_manager.py @@ -4,7 +4,7 @@ # For license information, please see license.txt from __future__ import unicode_literals -from frappe.utils import get_site_path, cint +from frappe.utils import get_site_path, cint, split_emails from frappe.utils.data import convert_utc_to_user_timezone import os import datetime @@ -98,5 +98,5 @@ def send_email(success, service_name, error_status=None): if not frappe.db: frappe.connect() - recipients = frappe.db.get_value("Backup Manager", None, "send_notifications_to").split(",") + recipients = split_emails(frappe.db.get_value("Backup Manager", None, "send_notifications_to")) frappe.sendmail(recipients=recipients, subject=subject, message=message) diff --git a/erpnext/setup/doctype/brand/brand.json b/erpnext/setup/doctype/brand/brand.json index 1dede421d39..f04568c9dea 100644 --- a/erpnext/setup/doctype/brand/brand.json +++ b/erpnext/setup/doctype/brand/brand.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -66,7 +66,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:54.490246", "modified_by": "Administrator", "module": "Setup", "name": "Brand", diff --git a/erpnext/setup/doctype/company/company.json b/erpnext/setup/doctype/company/company.json index ee279c961d2..12faa18ed57 100644 --- a/erpnext/setup/doctype/company/company.json +++ b/erpnext/setup/doctype/company/company.json @@ -8,7 +8,7 @@ "description": "Legal Entity / Subsidiary with a separate Chart of Accounts belonging to the Organization.", "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -1092,7 +1092,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:54.678003", "modified_by": "Administrator", "module": "Setup", "name": "Company", diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py index cf47de5f6f6..785e7aa6fa7 100644 --- a/erpnext/setup/doctype/company/company.py +++ b/erpnext/setup/doctype/company/company.py @@ -34,13 +34,8 @@ class Company(Document): if not self.abbr.strip(): frappe.throw(_("Abbreviation is mandatory")) - self.previous_default_currency = frappe.db.get_value("Company", self.name, "default_currency") - if self.default_currency and self.previous_default_currency and \ - self.default_currency != self.previous_default_currency and \ - self.check_if_transactions_exist(): - frappe.throw(_("Cannot change company's default currency, because there are existing transactions. Transactions must be cancelled to change the default currency.")) - self.validate_default_accounts() + self.validate_currency() def validate_default_accounts(self): for field in ["default_bank_account", "default_cash_account", "default_receivable_account", "default_payable_account", @@ -51,6 +46,13 @@ class Company(Document): if for_company != self.name: frappe.throw(_("Account {0} does not belong to company: {1}") .format(self.get(field), self.name)) + + def validate_currency(self): + self.previous_default_currency = frappe.db.get_value("Company", self.name, "default_currency") + if self.default_currency and self.previous_default_currency and \ + self.default_currency != self.previous_default_currency and \ + self.check_if_transactions_exist(): + frappe.throw(_("Cannot change company's default currency, because there are existing transactions. Transactions must be cancelled to change the default currency.")) def on_update(self): if not frappe.db.sql("""select name from tabAccount @@ -205,12 +207,14 @@ class Company(Document): frappe.defaults.clear_default("company", value=self.name) # clear default accounts, warehouses from item - for f in ["default_warehouse", "website_warehouse"]: - frappe.db.sql("""update tabItem set %s=NULL where %s in (%s)""" - % (f, f, ', '.join(['%s']*len(warehouses))), tuple(warehouses)) + if warehouses: + + for f in ["default_warehouse", "website_warehouse"]: + frappe.db.sql("""update tabItem set %s=NULL where %s in (%s)""" + % (f, f, ', '.join(['%s']*len(warehouses))), tuple(warehouses)) - frappe.db.sql("""delete from `tabItem Reorder` where warehouse in (%s)""" - % ', '.join(['%s']*len(warehouses)), tuple(warehouses)) + frappe.db.sql("""delete from `tabItem Reorder` where warehouse in (%s)""" + % ', '.join(['%s']*len(warehouses)), tuple(warehouses)) for f in ["income_account", "expense_account"]: frappe.db.sql("""update tabItem set %s=NULL where %s in (%s)""" diff --git a/erpnext/setup/doctype/company/test_records.json b/erpnext/setup/doctype/company/test_records.json index 13cb03e0816..b6918b3afaa 100644 --- a/erpnext/setup/doctype/company/test_records.json +++ b/erpnext/setup/doctype/company/test_records.json @@ -19,7 +19,7 @@ }, { "abbr": "_TC2", - "company_name": "_Test Company 3", + "company_name": "_Test Company 2", "default_currency": "EUR", "country": "Germany", "doctype": "Company", diff --git a/erpnext/setup/doctype/currency_exchange/currency_exchange.json b/erpnext/setup/doctype/currency_exchange/currency_exchange.json index 998f0ed4032..d53b2628185 100644 --- a/erpnext/setup/doctype/currency_exchange/currency_exchange.json +++ b/erpnext/setup/doctype/currency_exchange/currency_exchange.json @@ -7,7 +7,7 @@ "description": "Specify Exchange Rate to convert one currency into another", "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -85,7 +85,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:55.160748", "modified_by": "Administrator", "module": "Setup", "name": "Currency Exchange", diff --git a/erpnext/setup/doctype/customer_group/customer_group.json b/erpnext/setup/doctype/customer_group/customer_group.json index c322f7010e9..8367364cf3f 100644 --- a/erpnext/setup/doctype/customer_group/customer_group.json +++ b/erpnext/setup/doctype/customer_group/customer_group.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -316,7 +316,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:55.257703", "modified_by": "Administrator", "module": "Setup", "name": "Customer Group", diff --git a/erpnext/setup/doctype/item_group/item_group.json b/erpnext/setup/doctype/item_group/item_group.json index 00c51fc1869..fb46de11a0e 100644 --- a/erpnext/setup/doctype/item_group/item_group.json +++ b/erpnext/setup/doctype/item_group/item_group.json @@ -8,7 +8,7 @@ "description": "Item Classification", "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -430,7 +430,7 @@ "issingle": 0, "istable": 0, "max_attachments": 3, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:56.761965", "modified_by": "Administrator", "module": "Setup", "name": "Item Group", diff --git a/erpnext/setup/doctype/print_heading/print_heading.json b/erpnext/setup/doctype/print_heading/print_heading.json index ccc3aae0308..878b2bb532b 100644 --- a/erpnext/setup/doctype/print_heading/print_heading.json +++ b/erpnext/setup/doctype/print_heading/print_heading.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 1, @@ -66,7 +66,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:59.055950", "modified_by": "Administrator", "module": "Setup", "name": "Print Heading", diff --git a/erpnext/setup/doctype/quotation_lost_reason/quotation_lost_reason.json b/erpnext/setup/doctype/quotation_lost_reason/quotation_lost_reason.json index 65b3a14e6b5..4e0d042184e 100644 --- a/erpnext/setup/doctype/quotation_lost_reason/quotation_lost_reason.json +++ b/erpnext/setup/doctype/quotation_lost_reason/quotation_lost_reason.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -42,7 +42,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-02-05 05:11:44.681689", + "modified": "2015-09-14 02:55:59.573765", "modified_by": "Administrator", "module": "Setup", "name": "Quotation Lost Reason", diff --git a/erpnext/setup/doctype/sales_partner/sales_partner.json b/erpnext/setup/doctype/sales_partner/sales_partner.json index ff4280a5744..d4af1f0d644 100644 --- a/erpnext/setup/doctype/sales_partner/sales_partner.json +++ b/erpnext/setup/doctype/sales_partner/sales_partner.json @@ -8,7 +8,7 @@ "description": "A third party distributor / dealer / commission agent / affiliate / reseller who sells the companies products for a commission.", "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -568,7 +568,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:59.678007", "modified_by": "Administrator", "module": "Setup", "name": "Sales Partner", diff --git a/erpnext/setup/doctype/sales_person/sales_person.json b/erpnext/setup/doctype/sales_person/sales_person.json index 9cf90b0a2c9..3d31fb1adcd 100644 --- a/erpnext/setup/doctype/sales_person/sales_person.json +++ b/erpnext/setup/doctype/sales_person/sales_person.json @@ -8,7 +8,7 @@ "description": "All Sales Transactions can be tagged against multiple **Sales Persons** so that you can set and monitor targets.", "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -320,7 +320,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:59.945421", "modified_by": "Administrator", "module": "Setup", "name": "Sales Person", diff --git a/erpnext/setup/doctype/supplier_type/supplier_type.json b/erpnext/setup/doctype/supplier_type/supplier_type.json index 86f6f11ef8b..32ddfd24eb6 100644 --- a/erpnext/setup/doctype/supplier_type/supplier_type.json +++ b/erpnext/setup/doctype/supplier_type/supplier_type.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -108,7 +108,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:56:00.119145", "modified_by": "Administrator", "module": "Setup", "name": "Supplier Type", diff --git a/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.json b/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.json index cc11b8043b0..a8e59c931c1 100644 --- a/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.json +++ b/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.json @@ -8,7 +8,7 @@ "description": "Standard Terms and Conditions that can be added to Sales and Purchases.\n\nExamples:\n\n1. Validity of the offer.\n1. Payment Terms (In Advance, On Credit, part advance etc).\n1. What is extra (or payable by the Customer).\n1. Safety / usage warning.\n1. Warranty if any.\n1. Returns Policy.\n1. Terms of shipping, if applicable.\n1. Ways of addressing disputes, indemnity, liability, etc.\n1. Address and Contact of your Company.", "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -21,7 +21,7 @@ "in_filter": 1, "in_list_view": 0, "label": "Title", - "no_copy": 0, + "no_copy": 1, "oldfieldname": "title", "oldfieldtype": "Data", "permlevel": 0, @@ -66,7 +66,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-11 12:19:53.267342", "modified_by": "Administrator", "module": "Setup", "name": "Terms and Conditions", diff --git a/erpnext/setup/doctype/territory/territory.json b/erpnext/setup/doctype/territory/territory.json index 8a065709323..510d5a1927d 100644 --- a/erpnext/setup/doctype/territory/territory.json +++ b/erpnext/setup/doctype/territory/territory.json @@ -8,7 +8,7 @@ "description": "Classification of Customers by region", "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -281,7 +281,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:56:00.588311", "modified_by": "Administrator", "module": "Setup", "name": "Territory", diff --git a/erpnext/setup/doctype/uom/uom.json b/erpnext/setup/doctype/uom/uom.json index a5bb5a5e230..605368d11f1 100644 --- a/erpnext/setup/doctype/uom/uom.json +++ b/erpnext/setup/doctype/uom/uom.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -64,7 +64,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:56:00.850775", "modified_by": "Administrator", "module": "Setup", "name": "UOM", diff --git a/erpnext/setup/page/setup_wizard/install_fixtures.py b/erpnext/setup/page/setup_wizard/install_fixtures.py index 02fa27fb59d..ba48a298758 100644 --- a/erpnext/setup/page/setup_wizard/install_fixtures.py +++ b/erpnext/setup/page/setup_wizard/install_fixtures.py @@ -190,4 +190,14 @@ def install(country=None): parent_link_field = ("parent_" + scrub(doc.doctype)) if doc.meta.get_field(parent_link_field) and not doc.get(parent_link_field): doc.flags.ignore_mandatory = True - doc.insert(ignore_permissions=True) + + try: + doc.insert(ignore_permissions=True) + except frappe.DuplicateEntryError, e: + # pass DuplicateEntryError and continue + if e.args and e.args[0]==doc.doctype and e.args[1]==doc.name: + # make sure DuplicateEntryError is for the exact same doc and not a related doc + pass + else: + raise + diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py index e578f877669..77ad90a0b77 100644 --- a/erpnext/setup/page/setup_wizard/setup_wizard.py +++ b/erpnext/setup/page/setup_wizard/setup_wizard.py @@ -15,6 +15,7 @@ from .default_website import website_maker import install_fixtures from .sample_data import make_sample_data from erpnext.accounts.utils import FiscalYearError +from erpnext.accounts.doctype.account.account import RootNotEditable @frappe.whitelist() def setup_account(args=None): @@ -303,6 +304,7 @@ def get_fy_details(fy_start_date, fy_end_date): return fy def create_taxes(args): + for i in xrange(1,6): if args.get("tax_" + str(i)): # replace % in case someone also enters the % symbol @@ -320,6 +322,9 @@ def create_taxes(args): pass else: raise + except RootNotEditable, e: + pass + def make_tax_head(args, i, tax_group, tax_rate): return frappe.get_doc({ "doctype":"Account", diff --git a/erpnext/stock/doctype/batch/batch.json b/erpnext/stock/doctype/batch/batch.json index e7ee31bd18d..781f8643d23 100644 --- a/erpnext/stock/doctype/batch/batch.json +++ b/erpnext/stock/doctype/batch/batch.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -156,7 +156,7 @@ "issingle": 0, "istable": 0, "max_attachments": 5, - "modified": "2015-07-13 05:28:24.973774", + "modified": "2015-09-14 02:55:54.101825", "modified_by": "Administrator", "module": "Stock", "name": "Batch", diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js index e7ede652a3a..17194fdd4a7 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.js +++ b/erpnext/stock/doctype/delivery_note/delivery_note.js @@ -10,17 +10,6 @@ erpnext.stock.DeliveryNoteController = erpnext.selling.SellingController.extend( this._super(); if (!doc.is_return) { - if(doc.__onload && !doc.__onload.billing_complete && doc.docstatus==1) { - // show Make Invoice button only if Delivery Note is not created from Sales Invoice - var from_sales_invoice = false; - from_sales_invoice = cur_frm.doc.items.some(function(item) { - return item.against_sales_invoice ? true : false; - }); - - if(!from_sales_invoice) - cur_frm.add_custom_button(__('Invoice'), this.make_sales_invoice).addClass("btn-primary"); - } - if(flt(doc.per_installed, 2) < 100 && doc.docstatus==1) cur_frm.add_custom_button(__('Installation Note'), this.make_installation_note); @@ -59,7 +48,16 @@ erpnext.stock.DeliveryNoteController = erpnext.selling.SellingController.extend( } } + if(doc.__onload && !doc.__onload.billing_complete && doc.docstatus==1 && !doc.is_return) { + // show Make Invoice button only if Delivery Note is not created from Sales Invoice + var from_sales_invoice = false; + from_sales_invoice = cur_frm.doc.items.some(function(item) { + return item.against_sales_invoice ? true : false; + }); + if(!from_sales_invoice) + cur_frm.add_custom_button(__('Invoice'), this.make_sales_invoice).addClass("btn-primary"); + } erpnext.stock.delivery_note.set_print_hide(doc, dt, dn); diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.json b/erpnext/stock/doctype/delivery_note/delivery_note.json index 3366a58c13e..f65e74a83e3 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.json +++ b/erpnext/stock/doctype/delivery_note/delivery_note.json @@ -66,7 +66,7 @@ "in_filter": 0, "in_list_view": 0, "label": "Title", - "no_copy": 0, + "no_copy": 1, "permlevel": 0, "precision": "", "print_hide": 0, @@ -2438,7 +2438,7 @@ "is_submittable": 1, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-11 12:20:00.264753", "modified_by": "Administrator", "module": "Stock", "name": "Delivery Note", diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py index d8d21ff09fa..6eadb83779f 100644 --- a/erpnext/stock/doctype/item/item.py +++ b/erpnext/stock/doctype/item/item.py @@ -341,10 +341,10 @@ class Item(WebsiteGenerator): frappe.throw(_("Please specify Attribute Value for attribute {0}").format(d.attribute)) args[d.attribute] = d.attribute_value - if self.get("__islocal"): + if self.variant_of: # test this during insert because naming is based on item_code and we cannot use condition like self.name != variant variant = get_variant(self.variant_of, args) - if variant: + if variant and self.get("__islocal"): frappe.throw(_("Item variant {0} exists with same attributes").format(variant), ItemVariantExistsError) def validate_end_of_life(item_code, end_of_life=None, verbose=1): diff --git a/erpnext/stock/doctype/item_attribute/item_attribute.json b/erpnext/stock/doctype/item_attribute/item_attribute.json index f89a056bec2..1388533276b 100644 --- a/erpnext/stock/doctype/item_attribute/item_attribute.json +++ b/erpnext/stock/doctype/item_attribute/item_attribute.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -221,7 +221,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-08-11 08:43:10.240847", + "modified": "2015-09-14 02:55:56.599209", "modified_by": "Administrator", "module": "Stock", "name": "Item Attribute", diff --git a/erpnext/stock/doctype/item_attribute_value/item_attribute_value.json b/erpnext/stock/doctype/item_attribute_value/item_attribute_value.json index be0bb811687..c8a6ebb9c42 100644 --- a/erpnext/stock/doctype/item_attribute_value/item_attribute_value.json +++ b/erpnext/stock/doctype/item_attribute_value/item_attribute_value.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -63,7 +63,7 @@ "is_submittable": 0, "issingle": 0, "istable": 1, - "modified": "2014-09-26 06:17:47.136386", + "modified": "2015-09-14 02:55:56.693720", "modified_by": "Administrator", "module": "Stock", "name": "Item Attribute Value", diff --git a/erpnext/stock/doctype/item_price/item_price.json b/erpnext/stock/doctype/item_price/item_price.json index a6baa10932c..a46ca66838a 100644 --- a/erpnext/stock/doctype/item_price/item_price.json +++ b/erpnext/stock/doctype/item_price/item_price.json @@ -8,7 +8,7 @@ "description": "Multiple Item prices.", "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -303,7 +303,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-07-29 14:53:58.851413", + "modified": "2015-09-14 02:55:56.958679", "modified_by": "Administrator", "module": "Stock", "name": "Item Price", diff --git a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.json b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.json index b681843984f..5fadff926a4 100644 --- a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.json +++ b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Transaction", + "document_type": "Document", "fields": [ { "allow_on_submit": 0, @@ -281,7 +281,7 @@ "is_submittable": 1, "issingle": 0, "istable": 0, - "modified": "2015-07-13 05:28:22.039577", + "modified": "2015-09-14 02:55:57.283842", "modified_by": "Administrator", "module": "Stock", "name": "Landed Cost Voucher", diff --git a/erpnext/stock/doctype/material_request/material_request.json b/erpnext/stock/doctype/material_request/material_request.json index 0d36e9c0171..855b50b6d36 100644 --- a/erpnext/stock/doctype/material_request/material_request.json +++ b/erpnext/stock/doctype/material_request/material_request.json @@ -42,7 +42,7 @@ "in_filter": 0, "in_list_view": 0, "label": "Title", - "no_copy": 0, + "no_copy": 1, "permlevel": 0, "precision": "", "print_hide": 0, @@ -510,7 +510,7 @@ "is_submittable": 1, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-11 12:19:49.832338", "modified_by": "Administrator", "module": "Stock", "name": "Material Request", diff --git a/erpnext/stock/doctype/packing_slip/packing_slip.json b/erpnext/stock/doctype/packing_slip/packing_slip.json index d2bf35fede4..6e940217629 100644 --- a/erpnext/stock/doctype/packing_slip/packing_slip.json +++ b/erpnext/stock/doctype/packing_slip/packing_slip.json @@ -8,7 +8,7 @@ "description": "Generate packing slips for packages to be delivered. Used to notify package number, package contents and its weight.", "docstatus": 0, "doctype": "DocType", - "document_type": "Transaction", + "document_type": "Document", "fields": [ { "allow_on_submit": 0, @@ -513,7 +513,7 @@ "is_submittable": 1, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:58.713102", "modified_by": "Administrator", "module": "Stock", "name": "Packing Slip", diff --git a/erpnext/stock/doctype/packing_slip/test_packing_slip.py b/erpnext/stock/doctype/packing_slip/test_packing_slip.py new file mode 100644 index 00000000000..1f2af02e209 --- /dev/null +++ b/erpnext/stock/doctype/packing_slip/test_packing_slip.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals + +import frappe +import unittest + +# test_records = frappe.get_test_records('Packing Slip') + +class TestPackingSlip(unittest.TestCase): + pass diff --git a/erpnext/stock/doctype/price_list/price_list.json b/erpnext/stock/doctype/price_list/price_list.json index 4e2f9fa05a6..fcd204c18e0 100644 --- a/erpnext/stock/doctype/price_list/price_list.json +++ b/erpnext/stock/doctype/price_list/price_list.json @@ -8,7 +8,7 @@ "description": "Price List Master", "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -193,7 +193,7 @@ "issingle": 0, "istable": 0, "max_attachments": 1, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:58.919822", "modified_by": "Administrator", "module": "Stock", "name": "Price List", diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json index b9c5ba7158d..fc874bcd8c9 100755 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json @@ -66,7 +66,7 @@ "in_filter": 0, "in_list_view": 0, "label": "Title", - "no_copy": 0, + "no_copy": 1, "permlevel": 0, "precision": "", "print_hide": 1, @@ -2076,7 +2076,7 @@ "is_submittable": 1, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-11 12:20:13.894374", "modified_by": "Administrator", "module": "Stock", "name": "Purchase Receipt", diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py index 1ab866c7733..85610a49d21 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py @@ -307,23 +307,28 @@ class PurchaseReceipt(BuyingController): val_rate_db_precision = 6 if cint(d.precision("valuation_rate")) <= 6 else 9 # warehouse account + stock_value_diff = flt(flt(d.valuation_rate, val_rate_db_precision) * flt(d.qty) + * flt(d.conversion_factor), d.precision("base_net_amount")) + gl_entries.append(self.get_gl_dict({ - "account": warehouse_account[d.warehouse], + "account": warehouse_account[d.warehouse]["name"], "against": stock_rbnb, "cost_center": d.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), - "debit": flt(flt(d.valuation_rate, val_rate_db_precision) * flt(d.qty) * flt(d.conversion_factor), - self.precision("base_net_amount", d)) - })) + "debit": stock_value_diff + }, warehouse_account[d.warehouse]["account_currency"])) # stock received but not billed + stock_rbnb_currency = frappe.db.get_value("Account", stock_rbnb, "account_currency") gl_entries.append(self.get_gl_dict({ "account": stock_rbnb, - "against": warehouse_account[d.warehouse], + "against": warehouse_account[d.warehouse]["name"], "cost_center": d.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), - "credit": flt(d.base_net_amount, self.precision("base_net_amount", d)) - })) + "credit": flt(d.base_net_amount, d.precision("base_net_amount")), + "credit_in_account_currency": flt(d.base_net_amount, d.precision("base_net_amount")) \ + if stock_rbnb_currency==self.company_currency else flt(d.net_amount, d.precision("net_amount")) + }, stock_rbnb_currency)) negative_expense_to_be_booked += flt(d.item_tax_amount) @@ -331,7 +336,7 @@ class PurchaseReceipt(BuyingController): if flt(d.landed_cost_voucher_amount): gl_entries.append(self.get_gl_dict({ "account": expenses_included_in_valuation, - "against": warehouse_account[d.warehouse], + "against": warehouse_account[d.warehouse]["name"], "cost_center": d.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "credit": flt(d.landed_cost_voucher_amount) @@ -340,12 +345,12 @@ class PurchaseReceipt(BuyingController): # sub-contracting warehouse if flt(d.rm_supp_cost) and warehouse_account.get(self.supplier_warehouse): gl_entries.append(self.get_gl_dict({ - "account": warehouse_account[self.supplier_warehouse], - "against": warehouse_account[d.warehouse], + "account": warehouse_account[self.supplier_warehouse]["name"], + "against": warehouse_account[d.warehouse]["name"], "cost_center": d.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "credit": flt(d.rm_supp_cost) - })) + }, warehouse_account[self.supplier_warehouse]["account_currency"])) # divisional loss adjustment sle_valuation_amount = flt(flt(d.valuation_rate, val_rate_db_precision) * flt(d.qty) * flt(d.conversion_factor), @@ -358,11 +363,11 @@ class PurchaseReceipt(BuyingController): if divisional_loss: gl_entries.append(self.get_gl_dict({ "account": stock_rbnb, - "against": warehouse_account[d.warehouse], + "against": warehouse_account[d.warehouse]["name"], "cost_center": d.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "debit": divisional_loss - })) + }, stock_rbnb_currency)) elif d.warehouse not in warehouse_with_no_account or \ d.rejected_warehouse not in warehouse_with_no_account: diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.json b/erpnext/stock/doctype/stock_entry/stock_entry.json index 1fe3cb489b3..f55c12ca31f 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.json +++ b/erpnext/stock/doctype/stock_entry/stock_entry.json @@ -42,7 +42,7 @@ "in_filter": 0, "in_list_view": 0, "label": "Title", - "no_copy": 0, + "no_copy": 1, "permlevel": 0, "precision": "", "print_hide": 0, @@ -1291,7 +1291,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-11 12:20:21.220215", "modified_by": "Administrator", "module": "Stock", "name": "Stock Entry", diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py index e178f289805..a275de5b277 100644 --- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py @@ -171,7 +171,7 @@ class StockReconciliation(StockController): if row.qty and not row.valuation_rate: frappe.throw(_("Valuation Rate required for Item {0}").format(row.item_code)) - if ((previous_sle and row.qty == previous_sle.get("qty_after_transaction") + if ((previous_sle and row.qty == previous_sle.get("qty_after_transaction") and row.valuation_rate == previous_sle.get("valuation_rate")) or (not previous_sle and not row.qty)): continue @@ -243,7 +243,7 @@ class StockReconciliation(StockController): @frappe.whitelist() def get_items(warehouse, posting_date, posting_time): items = frappe.get_list("Item", fields=["name"], filters= - {"is_stock_item": 1, "has_serial_no": 0, "has_batch_no": 0}) + {"is_stock_item": 1, "has_serial_no": 0, "has_batch_no": 0, "has_variants": 0}) for item in items: item.item_code = item.name item.warehouse = warehouse diff --git a/erpnext/stock/doctype/warehouse/warehouse.json b/erpnext/stock/doctype/warehouse/warehouse.json index 461eee34660..15744cfc0b2 100644 --- a/erpnext/stock/doctype/warehouse/warehouse.json +++ b/erpnext/stock/doctype/warehouse/warehouse.json @@ -7,7 +7,7 @@ "description": "A logical Warehouse against which stock entries are made.", "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -362,7 +362,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:56:00.946305", "modified_by": "Administrator", "module": "Stock", "name": "Warehouse", diff --git a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.js b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.js index d84dc17f53d..023ef6c8fa6 100644 --- a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.js +++ b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.js @@ -80,11 +80,16 @@ erpnext.support.MaintenanceSchedule = frappe.ui.form.Controller.extend({ $.extend(cur_frm.cscript, new erpnext.support.MaintenanceSchedule({frm: cur_frm})); cur_frm.cscript.onload = function(doc, dt, dn) { - if(!doc.status) set_multiple(dt,dn,{status:'Draft'}); + if(!doc.status) set_multiple(dt,dn,{status:'Draft'}); + + if(doc.__islocal){ + set_multiple(dt,dn,{transaction_date:get_today()}); + } + + // set add fetch for item_code's item_name and description + cur_frm.add_fetch('item_code', 'item_name', 'item_name'); + cur_frm.add_fetch('item_code', 'description', 'description'); - if(doc.__islocal){ - set_multiple(dt,dn,{transaction_date:get_today()}); - } } cur_frm.fields_dict['customer_address'].get_query = function(doc, cdt, cdn) { @@ -106,14 +111,6 @@ cur_frm.fields_dict['items'].grid.get_field('item_code').get_query = function(do } } -cur_frm.cscript.item_code = function(doc, cdt, cdn) { - var d = locals[cdt][cdn]; - if (d.item_code) { - return get_server_fields('get_item_details', d.item_code, 'items', - doc, cdt, cdn, 1); - } -} - cur_frm.cscript.generate_schedule = function(doc, cdt, cdn) { if (!doc.__islocal) { return $c('runserverobj', args={'method':'generate_schedule', 'docs':doc}, diff --git a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py index 0ecc9c0c948..9ac113356f4 100644 --- a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py +++ b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py @@ -11,16 +11,6 @@ from erpnext.utilities.transaction_base import TransactionBase, delete_events from erpnext.stock.utils import get_valid_serial_nos class MaintenanceSchedule(TransactionBase): - - def get_item_details(self, item_code): - item = frappe.db.sql("""select item_name, description from `tabItem` - where name=%s""", (item_code), as_dict=1) - ret = { - 'item_name': item and item[0]['item_name'] or '', - 'description' : item and item[0]['description'] or '' - } - return ret - def generate_schedule(self): self.set('schedules', []) frappe.db.sql("""delete from `tabMaintenance Schedule Detail` diff --git a/erpnext/support/doctype/maintenance_visit/maintenance_visit.js b/erpnext/support/doctype/maintenance_visit/maintenance_visit.js index c917918e1d5..7a803fb6654 100644 --- a/erpnext/support/doctype/maintenance_visit/maintenance_visit.js +++ b/erpnext/support/doctype/maintenance_visit/maintenance_visit.js @@ -61,6 +61,10 @@ $.extend(cur_frm.cscript, new erpnext.support.MaintenanceVisit({frm: cur_frm})); cur_frm.cscript.onload = function(doc, dt, dn) { if(!doc.status) set_multiple(dt,dn,{status:'Draft'}); if(doc.__islocal) set_multiple(dt,dn,{mntc_date:get_today()}); + + // set add fetch for item_code's item_name and description + cur_frm.add_fetch('item_code', 'item_name', 'item_name'); + cur_frm.add_fetch('item_code', 'description', 'description'); } cur_frm.fields_dict['customer_address'].get_query = function(doc, cdt, cdn) { @@ -81,14 +85,6 @@ cur_frm.fields_dict['purposes'].grid.get_field('item_code').get_query = function } } -cur_frm.cscript.item_code = function(doc, cdt, cdn) { - var d = locals[cdt][cdn]; - if (d.item_code) { - return get_server_fields('get_item_details',d.item_code, 'purposes',doc,cdt,cdn,1); - } -} - - cur_frm.fields_dict.customer.get_query = function(doc,cdt,cdn) { return {query: "erpnext.controllers.queries.customer_query" } } diff --git a/erpnext/support/doctype/maintenance_visit/maintenance_visit.py b/erpnext/support/doctype/maintenance_visit/maintenance_visit.py index b17685f57b0..6d082bd2005 100644 --- a/erpnext/support/doctype/maintenance_visit/maintenance_visit.py +++ b/erpnext/support/doctype/maintenance_visit/maintenance_visit.py @@ -11,9 +11,6 @@ class MaintenanceVisit(TransactionBase): def get_feed(self): return _("To {0}").format(self.customer_name) - def get_item_details(self, item_code): - return frappe.db.get_value("Item", item_code, ["item_name", "description"], as_dict=1) - def validate_serial_no(self): for d in self.get('purposes'): if d.serial_no and not frappe.db.exists("Serial No", d.serial_no): diff --git a/erpnext/translations/de.csv b/erpnext/translations/de.csv index a4a1a084898..f89181100b6 100644 --- a/erpnext/translations/de.csv +++ b/erpnext/translations/de.csv @@ -29,7 +29,7 @@ apps/erpnext/erpnext/selling/page/sales_browser/sales_browser.js +37,{0} Tree,{0 DocType: Job Applicant,Job Applicant,Bewerber apps/erpnext/erpnext/hub_node/page/hub/hub_body.html +18,No more results.,Keine weiteren Resultate apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +78,Legal,Juristisch -apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js +114,Actual type tax cannot be included in Item rate in row {0},TatsÀchliche Steuerart kann nicht in Zeile {0} TARIFART beinhaltet sein +apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js +114,Actual type tax cannot be included in Item rate in row {0},TatsÀchliche Steuerart kann nicht in Zeile {0} Tarifart beinhaltet sein DocType: C-Form,Customer,Kunde DocType: Purchase Receipt Item,Required By,Erforderlich nach DocType: Delivery Note,Return Against Delivery Note,RÃŒckspiel gegen Lieferschein @@ -37,14 +37,14 @@ DocType: Department,Department,Abteilung DocType: Purchase Order,% Billed,% verrechnet apps/erpnext/erpnext/controllers/sales_and_purchase_return.py +44,Exchange Rate must be same as {0} {1} ({2}),Wechselkurs muss dieselbe wie {0} {1} ({2}) DocType: Sales Invoice,Customer Name,Kundenname -DocType: Features Setup,"All export related fields like currency, conversion rate, export total, export grand total etc are available in Delivery Note, POS, Quotation, Sales Invoice, Sales Order etc.","Alle Export verwandten Bereiche (z.B. WÀhrung, Wechselkurs, Summenexport, Gesamtsummenexport usw.) sind in Lieferschein, POS, Angebot, Ausgangsrechnung, Kundenauftrag usw. verfÃŒgbar" +DocType: Features Setup,"All export related fields like currency, conversion rate, export total, export grand total etc are available in Delivery Note, POS, Quotation, Sales Invoice, Sales Order etc.","Alle mit dem Export verknÃŒpften Felder (wie z. B. WÀhrung, Wechselkurs, Summe Export, Gesamtsumme Export usw.) sind in Lieferschein, POS, Angebot, Ausgangsrechnung, Kundenauftrag usw. verfÃŒgbar" DocType: Account,Heads (or groups) against which Accounting Entries are made and balances are maintained.,"Vorgesetzte (oder Gruppen), fÃŒr die BuchungseintrÀge vorgenommen und Salden gefÃŒhrt werden." apps/erpnext/erpnext/accounts/doctype/gl_entry/gl_entry.py +154,Outstanding for {0} cannot be less than zero ({1}),Herausragende fÃŒr {0} kann nicht kleiner als Null sein ({1}) DocType: Manufacturing Settings,Default 10 mins,Standard 10 Minuten DocType: Leave Type,Leave Type Name,Urlaubstyp Name apps/erpnext/erpnext/setup/doctype/naming_series/naming_series.py +146,Series Updated Successfully,Serie erfolgreich aktualisiert apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +149,Stitching,Stitching -DocType: Pricing Rule,Apply On,Bewerben auf +DocType: Pricing Rule,Apply On,Anwenden auf DocType: Item Price,Multiple Item prices.,Mehrere Artikelpreise. ,Purchase Order Items To Be Received,Eingehende Lieferatenauftrags-Artikel DocType: SMS Center,All Supplier Contact,Alle Lieferantenkontakte @@ -54,7 +54,7 @@ apps/erpnext/erpnext/projects/doctype/project/project.py +43,Expected End Date c apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.js +236,Do really want to unstop production order:,"Sie wirklich wollen, um Fertigungsauftrag aufmachen:" apps/erpnext/erpnext/utilities/transaction_base.py +104,Row #{0}: Rate must be same as {1}: {2} ({3} / {4}) ,"Row # {0}: Rate muss dieselbe sein, wie {1}: {2} ({3} / {4})" apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +190,New Leave Application,Neuer Urlaubsantrag -apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +134,Bank Draft,Bank Entwurf +apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +134,Bank Draft,Bankwechsel DocType: Features Setup,1. To maintain the customer wise item code and to make them searchable based on their code use this option,"1. Um die kundenspezifische Artikel-Nr zu erhalten und sie auffindbar zu machen, verwenden Sie diese Option" DocType: Mode of Payment Account,Mode of Payment Account,Zahlungsweise Konto apps/erpnext/erpnext/stock/doctype/item/item.js +30,Show Variants,Varianten anzeigen @@ -66,7 +66,7 @@ DocType: Production Plan Item,Production Plan Item,Produktionsplan Artikel apps/erpnext/erpnext/hr/doctype/employee/employee.py +141,User {0} is already assigned to Employee {1},Benutzer {0} ist bereits Mitarbeiter {1} zugewiesen apps/erpnext/erpnext/accounts/page/pos/pos_page.html +13,Make new POS Profile,Neue POS Profil apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +30,Health Care,Health Care -DocType: Purchase Invoice,Monthly,Monatlich +DocType: Purchase Invoice,Monthly,monatlich apps/erpnext/erpnext/accounts/report/purchase_register/purchase_register.py +65,Invoice,In Rechnung Stellen DocType: Maintenance Schedule Item,Periodicity,PeriodizitÀt apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +357,Email Address,E-Mail-Addresse @@ -98,7 +98,7 @@ DocType: Shopping Cart Settings,Shipping Rules,Liefer- und Versandbedingungen DocType: BOM,Operations,VorgÀnge apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +38,Cannot set authorization on basis of Discount for {0},Kann Genehmigung nicht auf der Basis des Rabattes fÃŒr {0} festlegen DocType: Bin,Quantity Requested for Purchase,Erforderliche Bestellmenge -DocType: Rename Tool,"Attach .csv file with two columns, one for the old name and one for the new name","Bringen Sie CSV-Datei mit zwei Spalten, eine fÃŒr die alten Namen und eine fÃŒr den neuen Namen" +DocType: Rename Tool,"Attach .csv file with two columns, one for the old name and one for the new name",".csv-Datei mit zwei Zeilen, eine fÃŒr den alten und eine fÃŒr den neuen Namen, anhÀngen" DocType: Packed Item,Parent Detail docname,Übergeordnetes Detail Dokumentenname apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +626,Kg,kg apps/erpnext/erpnext/config/hr.py +48,Opening for a Job.,Stellenausschreibung @@ -108,7 +108,7 @@ apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +334,Stock DocType: Payment Reconciliation,Reconcile,Abstimmen apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +29,Grocery,LebensmittelgeschÀft DocType: Quality Inspection Reading,Reading 1,Ablesung 1 -apps/erpnext/erpnext/hr/doctype/expense_claim/expense_claim.js +97,Make Bank Entry,neuen Bank Eintrag erfassen +apps/erpnext/erpnext/hr/doctype/expense_claim/expense_claim.js +97,Make Bank Entry,Bankbuchung erstellen apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +39,Pension Funds,Pensionsfonds apps/erpnext/erpnext/accounts/doctype/account/account.py +116,Warehouse is mandatory if account type is Warehouse,"Warehouse ist obligatorisch, wenn Kontotyp Lager" DocType: SMS Center,All Sales Person,Alle Vertriebsmitarbeiter @@ -215,7 +215,7 @@ DocType: Production Planning Tool,Sales Orders,KundenauftrÀge DocType: Purchase Taxes and Charges,Valuation,Bewertung apps/erpnext/erpnext/accounts/doctype/fiscal_year/fiscal_year.js +17,Set as Default,Als Standard setzen ,Purchase Order Trends,Lieferatenauftrag Trends -apps/erpnext/erpnext/config/hr.py +78,Allocate leaves for the year.,Jahresurlaube zuordnen. +apps/erpnext/erpnext/config/hr.py +78,Allocate leaves for the year.,Urlaube fÃŒr ein Jahr zuordnen. DocType: Earning Type,Earning Type,Einkommensart DocType: Manufacturing Settings,Disable Capacity Planning and Time Tracking,Disable KapazitÀtsplanung und Zeiterfassung DocType: Email Digest,New Sales Orders,Neue KundenauftrÀge @@ -233,7 +233,7 @@ DocType: Supplier,Mention if non-standard receivable account applicable,"ErwÀhn apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +150,For Warehouse is required before Submit,"FÃŒr Warehouse erforderlich ist, bevor abschicken" DocType: Sales Partner,Reseller,WiederverkÀufer apps/erpnext/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py +41,Please enter Company,Bitte geben Sie Firmen -DocType: Delivery Note Item,Against Sales Invoice Item,Vor Sales Invoice Artikel +DocType: Delivery Note Item,Against Sales Invoice Item,Gegen Ausgangsrechnungs-Position ,Production Orders in Progress,FertigungsauftrÀge in Arbeit DocType: Journal Entry,Write Off Amount <=,"Abschreibung, Betrag <=" DocType: Lead,Address & Contact,Adresse & Kontakt @@ -337,13 +337,13 @@ apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date","Geben Sie die durch Kommas getrennte E-Mail-Adresse  ein, die Rechnung wird automatisch an einem bestimmten Rechnungsdatum abgeschickt" DocType: Employee,Company Email,Firma E-Mail DocType: Workflow State,Refresh,aktualisieren -DocType: Features Setup,"All import related fields like currency, conversion rate, import total, import grand total etc are available in Purchase Receipt, Supplier Quotation, Purchase Invoice, Purchase Order etc.","Alle Import verwandten Bereiche wie WÀhrung, Wechselkurs, Summenimport, Gesamtsummenimport etc sind in Eingangslieferschein, Angebot fÃŒr den Lieferant, Eingangsrechnung, Lieferatenauftrag usw. verfÃŒgbar" +DocType: Features Setup,"All import related fields like currency, conversion rate, import total, import grand total etc are available in Purchase Receipt, Supplier Quotation, Purchase Invoice, Purchase Order etc.","Alle mit dem Import verknÃŒpften Felder (wie z. B. WÀhrung, Wechselkurs, Summe Import, Gesamtsumme Import usw.) sind in Kaufbeleg, Lieferantenangebot, Eingangsrechnung, Auftrag usw. verfÃŒgbar" apps/erpnext/erpnext/stock/doctype/item/item.js +29,This Item is a Template and cannot be used in transactions. Item attributes will be copied over into the variants unless 'No Copy' is set,"Dieser Artikel ist eine Vorlage und kann nicht in Transaktionen verwendet werden. Artikel Attribute werden ÃŒber in die Varianten kopiert, wenn ""No Copy 'gesetzt werden" apps/erpnext/erpnext/selling/report/customers_not_buying_since_long_time/customers_not_buying_since_long_time.py +69,Total Order Considered,Gesamtbestell Considered apps/erpnext/erpnext/config/hr.py +110,"Employee designation (e.g. CEO, Director etc.).","Mitarbeiterbezeichnung (z.B. GeschÀftsfÃŒhrer, Direktor etc.)." apps/erpnext/erpnext/controllers/recurring_document.py +200,Please enter 'Repeat on Day of Month' field value,"Bitte geben Sie ""Wiederholung am Tag des Monats"" als Feldwert ein" DocType: Sales Invoice,Rate at which Customer Currency is converted to customer's base currency,"Kurs, zu dem die KundenwÀhrung in die BasiswÀhrung des Kunden umgerechnet wird" -DocType: Features Setup,"Available in BOM, Delivery Note, Purchase Invoice, Production Order, Purchase Order, Purchase Receipt, Sales Invoice, Sales Order, Stock Entry, Timesheet","VerfÃŒgbar in StÃŒckliste, Lieferschein, Eingangsrechnung, Fertigungsauftrag, Lieferatenauftrag, Eingangslieferschein, Ausgangsrechnung, Kundenauftrag, Lagerbeleg, Zeiterfassung" +DocType: Features Setup,"Available in BOM, Delivery Note, Purchase Invoice, Production Order, Purchase Order, Purchase Receipt, Sales Invoice, Sales Order, Stock Entry, Timesheet","VerfÃŒgbar in StÃŒckliste, Lieferschein, Eingangsrechnung, Fertigungsauftrag, Einkaufsauftrag, Eingangslieferschein, Ausgangsrechnung, Kundenauftrag, Lagerbeleg, Zeiterfassung" DocType: Item Tax,Tax Rate,Steuersatz apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +504,Select Item,WÀhlen Sie die Artikel- apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +208,{0} {1} status is Stopped,{0} {1} hat den Status angehalten @@ -354,7 +354,7 @@ apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +242,Pur apps/erpnext/erpnext/accounts/doctype/account/account.js +54,Convert to non-Group,Umwandlung in nicht-Gruppe apps/erpnext/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py +55,Purchase Receipt must be submitted,Eingangslieferscheine mÃŒssen eingereicht werden DocType: Stock UOM Replace Utility,Current Stock UOM,Aktuelle Lager-ME -apps/erpnext/erpnext/config/stock.py +53,Batch (lot) of an Item.,Stapel (Partie) eines Artikels. +apps/erpnext/erpnext/config/stock.py +53,Batch (lot) of an Item.,BÃŒndel (Los) eines Artikels. DocType: C-Form Invoice Detail,Invoice Date,Rechnungsdatum apps/erpnext/erpnext/templates/includes/footer/footer_extension.html +7,Your email address,Ihre E-Mail -Adresse DocType: Email Digest,Income booked for the digest period,Gebuchter Gewinn fÃŒr den Berichtszeitraum @@ -368,7 +368,7 @@ DocType: Quality Inspection,Inspected By,GeprÃŒft von DocType: Maintenance Visit,Maintenance Type,Wartungstyp apps/erpnext/erpnext/selling/doctype/installation_note/installation_note.py +69,Serial No {0} does not belong to Delivery Note {1},Seriennummer {0} gehört nicht zu Lieferschein {1} DocType: Item Quality Inspection Parameter,Item Quality Inspection Parameter,Parameter der Artikel-QualitÀtsprÃŒfung -DocType: Leave Application,Leave Approver Name,Lassen Genehmiger Namens +DocType: Leave Application,Leave Approver Name,Name des Urlaubsgenehmigers ,Schedule Date,Zeitplan Datum DocType: Packed Item,Packed Item,Verpackter Artikel apps/erpnext/erpnext/config/buying.py +54,Default settings for buying transactions.,Standardeinstellungen fÃŒr Einkaufstransaktionen. @@ -383,7 +383,7 @@ DocType: Workstation,Working Hours,Arbeitszeit DocType: Naming Series,Change the starting / current sequence number of an existing series.,Startnummer/aktuelle laufende Nummer einer bestehenden Serie Àndern. apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js +57,"If multiple Pricing Rules continue to prevail, users are asked to set Priority manually to resolve conflict.","Wenn mehrere Preisregeln weiterhin herrschen, werden die Benutzer aufgefordert, PrioritÀt manuell einstellen, um Konflikt zu lösen." ,Purchase Register,Einkaufsregister -DocType: Landed Cost Item,Applicable Charges,fÀllige GebÃŒhren +DocType: Landed Cost Item,Applicable Charges,anfallende GebÃŒhren DocType: Workstation,Consumable Cost,Verbrauchskosten apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +153,{0} ({1}) must have role 'Leave Approver',"{0} ({1}) muss Rolle ""Urlaub-Genehmiger"" haben" apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +39,Medical,Medizin- @@ -398,7 +398,7 @@ DocType: Account,Cost of Goods Sold,Herstellungskosten der verkauften DocType: Purchase Invoice,Yearly,JÀhrlich apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +223,Please enter Cost Center,Bitte geben Sie Kostenstelle DocType: Sales Invoice Item,Sales Order,Kundenauftrag -apps/erpnext/erpnext/accounts/report/gross_profit/gross_profit.py +63,Avg. Selling Rate,Rel. Verkaufspreis +apps/erpnext/erpnext/accounts/report/gross_profit/gross_profit.py +63,Avg. Selling Rate,Durchschnittlicher Verkaufspreis DocType: Purchase Order,Start date of current order's period,Startdatum der aktuellen Bestellperiode apps/erpnext/erpnext/utilities/transaction_base.py +128,Quantity cannot be a fraction in row {0},Menge kann nicht ein Bruchteil in Zeile {0} DocType: Purchase Invoice Item,Quantity and Rate,Menge und Preis @@ -530,7 +530,7 @@ DocType: Sales Order,Display all the individual items delivered with the main it apps/erpnext/erpnext/accounts/report/purchase_register/purchase_register.py +66,Payable Account,Zahlbar Konto apps/erpnext/erpnext/selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.py +58,Repeat Customers,"Wiederholen Sie die Kunden," DocType: Backup Manager,Sync with Google Drive,Mit Google Drive synchronisieren -DocType: Leave Control Panel,Allocate,Bereitstellen +DocType: Leave Control Panel,Allocate,Zuweisen apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard_page.html +16,Previous,zurÃŒck DocType: Item,Manage Variants,Varianten verwalten DocType: Production Planning Tool,Select Sales Orders from which you want to create Production Orders.,"KundenauftrÀge auswÀhlen, aus denen Sie FertigungsauftrÀge erstellen möchten." @@ -540,7 +540,7 @@ apps/erpnext/erpnext/config/crm.py +17,Customer database.,Kundendatenbank. DocType: Quotation,Quotation To,Angebot fÃŒr DocType: Lead,Middle Income,Mittleres Einkommen apps/erpnext/erpnext/accounts/page/financial_analytics/financial_analytics.js +58,Opening (Cr),Eröffnung (Cr) -apps/erpnext/erpnext/accounts/utils.py +186,Allocated amount can not be negative,GeschÀtzter Betrag kann nicht negativ sein +apps/erpnext/erpnext/accounts/utils.py +186,Allocated amount can not be negative,Zugewiesene Menge kann nicht negativ sein apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +122,Tumbling,Tumbling DocType: Purchase Order Item,Billed Amt,Rechnungsbetrag DocType: Warehouse,A logical Warehouse against which stock entries are made.,Eine logisches Warenlager fÃŒr das BestandseintrÀge gemacht werden. @@ -550,12 +550,12 @@ DocType: Sales Invoice,Customer's Vendor,KundenverkÀufer apps/erpnext/erpnext/projects/doctype/time_log/time_log.py +200,Production Order is Mandatory,Fertigungsauftrag ist obligatorisch apps/erpnext/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py +36,{0} {1} has a common territory {2},{0} {1} hat ein gemeinsames Gebiet {2} apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +139,Proposal Writing,Proposal Writing -apps/erpnext/erpnext/setup/doctype/sales_person/sales_person.py +35,Another Sales Person {0} exists with the same Employee id,Ein weiterer Sales Person {0} mit der gleichen Mitarbeiter id existiert +apps/erpnext/erpnext/setup/doctype/sales_person/sales_person.py +35,Another Sales Person {0} exists with the same Employee id,Ein weiterer Vertriebsmitarbeiter {0} existiert bereits mit der gleichen Mitarbeiter ID apps/erpnext/erpnext/stock/stock_ledger.py +337,Negative Stock Error ({6}) for Item {0} in Warehouse {1} on {2} {3} in {4} {5},Negative Auf Error ( {6}) fÃŒr Artikel {0} in {1} Warehouse auf {2} {3} {4} in {5} DocType: Fiscal Year Company,Fiscal Year Company,Das GeschÀftsjahr Gesellschaft DocType: Packing Slip Item,DN Detail,DN-Detail DocType: Time Log,Billed,Abgerechnet -DocType: Batch,Batch Description,Batch Beschreibung +DocType: Batch,Batch Description,BÃŒndelbeschreibung DocType: Delivery Note,Time at which items were delivered from warehouse,"Zeitpunkt, zu dem Artikel aus dem Lager geliefert wurden" DocType: Sales Invoice,Sales Taxes and Charges,Umsatzsteuern und GebÃŒhren DocType: Employee,Organization Profile,Firmenprofil @@ -635,8 +635,8 @@ DocType: BOM Explosion Item,Qty Consumed Per Unit,Verbrauchte Menge pro Einheit DocType: Serial No,Warranty Expiry Date,Garantieablaufdatum DocType: Material Request Item,Quantity and Warehouse,Menge und Lager DocType: Sales Invoice,Commission Rate (%),Provisionsrate (%) -apps/erpnext/erpnext/accounts/doctype/payment_tool/payment_tool.js +142,"Against Voucher Type must be one of Sales Order, Sales Invoice or Journal Entry","Vor Gutschein Typ muss einer der Sales Order, Verkaufsrechnung oder einen Journaleintrag sein" -apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +138,Biomachining,Biomachining +apps/erpnext/erpnext/accounts/doctype/payment_tool/payment_tool.js +142,"Against Voucher Type must be one of Sales Order, Sales Invoice or Journal Entry","Gegen Belegart muss entweder ein Kundenauftrag, eine Einkaufsrechnung oder ein Journaleintrag sein" +apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +138,Biomachining,Biologische Bearbeitung apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +6,Aerospace,Luft- und Raumfahrt apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +19,Welcome,Willkommen DocType: Journal Entry,Credit Card Entry,Kreditkarte Eintrag @@ -741,7 +741,7 @@ apps/erpnext/erpnext/accounts/report/general_ledger/general_ledger.py +43,"To fi apps/erpnext/erpnext/controllers/sales_and_purchase_return.py +49,'Update Stock' can not be checked because items are not delivered via {0},"»Update Auf 'kann nicht ÃŒberprÃŒft, da Elemente nicht ÃŒber geliefert werden {0}" apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +626,Nos,Stk DocType: Item,Items with higher weightage will be shown higher,Objekte mit höheren Gewichtung höher angezeigt werden -DocType: Bank Reconciliation Detail,Bank Reconciliation Detail,Kontenabstimmungsdetail +DocType: Bank Reconciliation Detail,Bank Reconciliation Detail,AusfÃŒhrlicher Kontenabgleich apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +580,My Invoices,Meine Rechnungen apps/erpnext/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py +39,No employee found,Kein Mitarbeiter gefunden DocType: Purchase Order,Stopped,Angehalten @@ -764,7 +764,7 @@ apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +292,{0} ag DocType: Comment,Reference Name,Referenzname DocType: Maintenance Visit,Completion Status,Fertigstellungsstatus DocType: Production Order,Target Warehouse,Zielwarenlager -DocType: Item,Allow over delivery or receipt upto this percent,Lassen Sie ÃŒber Lieferung oder Abnahme bis zu diesem Prozent +DocType: Item,Allow over delivery or receipt upto this percent,Überlieferung bis zu diesem Prozentsatz zulassen apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +23,Expected Delivery Date cannot be before Sales Order Date,Voraussichtlicher Liefertermin kann nicht vor Kundenauftragsdatum liegen DocType: Upload Attendance,Import Attendance,Importteilnahme apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +17,All Item Groups,Alle Artikelgruppen @@ -876,7 +876,7 @@ DocType: Selling Settings,Allow user to edit Price List Rate in transactions,"Be DocType: Pricing Rule,Max Qty,Max Menge apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +124,Row {0}: Payment against Sales/Purchase Order should always be marked as advance,Zeile {0}: Zahlung gegen Verkauf / Bestellung immer als vorher markiert werden apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +15,Chemical,Chemikalie -apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +605,All items have already been transferred for this Production Order.,Alle Artikel werden schon fÃŒr diesen Fertigungsauftrag ÃŒbernommen. +apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +605,All items have already been transferred for this Production Order.,Alle Artikel wurden schon fÃŒr diesen Fertigungsauftrag ÃŒbernommen. DocType: Process Payroll,Select Payroll Year and Month,WÀhlen Payroll Jahr und Monat apps/erpnext/erpnext/accounts/page/accounts_browser/accounts_browser.js +32,"Go to the appropriate group (usually Application of Funds > Current Assets > Bank Accounts and create a new Account (by clicking on Add Child) of type ""Bank""",Gehen Sie auf die entsprechende Gruppe (in der Regel Anwendung der Fonds> Umlaufvermögen> Bank Accounts und ein neues Konto erstellen (indem Sie auf HinzufÃŒgen Kind) vom Typ "Bank" DocType: Workstation,Electricity Cost,Stromkosten @@ -1061,12 +1061,12 @@ DocType: Communication,Sent,verschickt apps/erpnext/erpnext/accounts/doctype/account/account.js +57,View Ledger,Ansicht Sachkonto DocType: Cost Center,Lft,lft apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.py +41,Earliest,FrÃŒhestens -apps/erpnext/erpnext/stock/doctype/item/item.py +246,"An Item Group exists with same name, please change the item name or rename the item group","Mit dem gleichen Namen eine Artikelgruppe existiert, Àndern Sie bitte die Artikel -Namen oder die Artikelgruppe umbenennen" +apps/erpnext/erpnext/stock/doctype/item/item.py +246,"An Item Group exists with same name, please change the item name or rename the item group",Ein Artikel mit dem gleichen Namen existiert Artikelgruppe bereits. Ändern Sie bitte die Artikel -Namen oder die Artikelgruppe umbenennen DocType: Sales Order,Delivery Status,Lieferstatus DocType: Production Order,Manufacture against Sales Order,Herstellung laut Kundenauftrag apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.py +496,Rest Of The World,Rest der Welt apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +79,The Item {0} cannot have Batch,Der Artikel {0} kann nicht Batch -,Budget Variance Report,Budget Abweichungsbericht +,Budget Variance Report,Budget-Abweichungsbericht DocType: Salary Slip,Gross Pay,Bruttolohn apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +186,Dividends Paid,AusgeschÃŒttete Dividenden DocType: Stock Reconciliation,Difference Amount,Unterschiedsbetrag @@ -1087,7 +1087,7 @@ apps/erpnext/erpnext/accounts/doctype/gl_entry/gl_entry.py +111,Balance for Acco DocType: Supplier,More Info,Mehr Informationen DocType: Address,Address Type,Adresstyp DocType: Purchase Receipt,Rejected Warehouse,Abgelehntes Warenlager -DocType: GL Entry,Against Voucher,Gegen Gutschein +DocType: GL Entry,Against Voucher,Gegen Beleg DocType: Item,Default Buying Cost Center,Standard Buying Kostenstelle apps/erpnext/erpnext/selling/doctype/quotation/quotation.py +36,Item {0} must be Sales Item,Artikel {0} muss sein Verkaufsartikel DocType: Item,Lead Time in days,Lieferzeit in Tagen @@ -1146,12 +1146,12 @@ DocType: Sales Taxes and Charges Template,Valid For Territories,GÃŒltig fÃŒr Geb DocType: Item,Website Item Groups,Webseite-Artikelgruppen apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +175,Production order number is mandatory for stock entry purpose manufacture,Fertigungsauftragsnummer ist fÃŒr Einlagerung Zweck Herstellung DocType: Purchase Invoice,Total (Company Currency),Total (Gesellschaft WÀhrung) -DocType: Applicable Territory,Applicable Territory,Anwendbar Territory +DocType: Applicable Territory,Applicable Territory,Anwendbares Territorium apps/erpnext/erpnext/stock/utils.py +162,Serial number {0} entered more than once,Seriennummer {0} wurde bereits mehrfach erfasst DocType: Journal Entry,Journal Entry,Journaleintrag DocType: Workstation,Workstation Name,Name der Arbeitsstation apps/erpnext/erpnext/setup/doctype/email_digest/email_digest.js +19,Email Digest:,Mail Digest: -apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py +433,BOM {0} does not belong to Item {1},"StÃŒckliste {0} nicht zum Artikel gehören, {1}" +apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py +433,BOM {0} does not belong to Item {1},StÃŒckliste {0} gehört nicht zum Artikel {1} DocType: Sales Partner,Target Distribution,Zielverteilung sites/assets/js/desk.min.js +622,Comments,Kommentare DocType: Salary Slip,Bank Account No.,Bankkonto-Nr. @@ -1170,7 +1170,7 @@ apps/erpnext/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_ sites/assets/js/form.min.js +200,No Data,Keine Daten DocType: Appraisal Template Goal,Appraisal Template Goal,Bewertungsvorlage Ziel DocType: Salary Slip,Earning,Ertrag -,BOM Browser,BOM Browser +,BOM Browser,StÃŒcklisten-Browser DocType: Purchase Taxes and Charges,Add or Deduct,Addieren/Subtrahieren apps/erpnext/erpnext/accounts/doctype/shipping_rule/shipping_rule.py +75,Overlapping conditions found between:,ÃŒberlagernde Bedingungen gefunden zwischen: apps/erpnext/erpnext/accounts/doctype/gl_entry/gl_entry.py +145,Against Journal Entry {0} is already adjusted against some other voucher,Gegen Journaleintrag {0} ist bereits mit einem anderen Beleg abgeglichen @@ -1178,7 +1178,7 @@ DocType: Backup Manager,Files Folder ID,Dateien-Ordner-ID apps/erpnext/erpnext/selling/report/customers_not_buying_since_long_time/customers_not_buying_since_long_time.py +68,Total Order Value,Gesamtbestellwert apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +167,Item Variants {0} deleted,Artikelvarianten {0} gelöscht apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +38,Food,Lebensmittel -apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js +51,Ageing Range 3,Ageing Bereich 3 +apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js +51,Ageing Range 3,Alterung Bereich 3 apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +84,{0} {1} is entered more than once in Attributes table,{0} {1} ist mehr als einmal in Attribute-Tabelle eingetragen apps/erpnext/erpnext/projects/doctype/time_log/time_log.py +130,You can make a time log only against a submitted production order,Sie können ein Zeitprotokoll nur gegen einen Fertigungsauftrag eingereicht machen DocType: Maintenance Schedule Item,No of Visits,Anzahl der Besuche @@ -1206,7 +1206,7 @@ DocType: BOM Operation,Operation Description,Vorgangsbeschreibung DocType: Item,Will also apply to variants,Wird auch zu Varianten gelten apps/erpnext/erpnext/accounts/doctype/fiscal_year/fiscal_year.py +30,Cannot change Fiscal Year Start Date and Fiscal Year End Date once the Fiscal Year is saved.,"GeschÀftsjahr Startdatum und GeschÀftsjahresende Datum, wenn die GeschÀftsjahr wird gespeichert nicht Àndern kann." DocType: Quotation,Shopping Cart,Warenkorb -apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py +42,Avg Daily Outgoing,Avg TÀgliche Ausgeh +apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py +42,Avg Daily Outgoing,Durchschnittlicher tÀglicher Abgang DocType: Pricing Rule,Campaign,Kampagne apps/erpnext/erpnext/hr/doctype/expense_claim/expense_claim.py +29,Approval Status must be 'Approved' or 'Rejected',"Genehmigungsstatus muss ""genehmigt"" oder ""abgelehnt"" sein" DocType: Purchase Invoice,Contact Person,Kontaktperson @@ -1233,15 +1233,15 @@ DocType: Employee,Owned,Im Besitz DocType: Salary Slip Deduction,Depends on Leave Without Pay,"HÀngt davon ab, unbezahlten Urlaub" DocType: Pricing Rule,"Higher the number, higher the priority","Je höher die Zahl, desto höher die PrioritÀt" ,Purchase Invoice Trends,Eingangsrechnung Trends -DocType: Employee,Better Prospects,Bessere zukÃŒnftige Kunden +DocType: Employee,Better Prospects,Bessere Vorhersage DocType: Appraisal,Goals,Ziele DocType: Warranty Claim,Warranty / AMC Status,Garantie / AMC-Status ,Accounts Browser,Kontenbrowser DocType: GL Entry,GL Entry,HB-Eintrag DocType: HR Settings,Employee Settings,Mitarbeitereinstellungen -,Batch-Wise Balance History,Stapelweiser Kontostand +,Batch-Wise Balance History,Stapelweise Kontostands-Historie DocType: Email Digest,To Do List,Aufgabenliste -apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +63,Apprentice,Praktikant/in +apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +63,Apprentice,Auszubildende(r) apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +99,Negative Quantity is not allowed,Negative Menge ist nicht erlaubt DocType: Purchase Invoice Item,"Tax detail table fetched from item master as a string and stored in this field. Used for Taxes and Charges","Steuerndetailtabelle geholt vom Artikelstamm als String und in diesem Feld gespeichert. @@ -1312,7 +1312,7 @@ apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js +540,Err apps/erpnext/erpnext/accounts/doctype/account/account.js +8,Please create new account from Chart of Accounts.,Bitte neues Konto erstellen von KontenÃŒbersicht. DocType: Maintenance Visit,Maintenance Visit,Wartungsbesuch apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js +49,Customer > Customer Group > Territory,Kunden> Kundengruppe> Territory -DocType: Sales Invoice Item,Available Batch Qty at Warehouse,ErhÀltlich Batch Menge an Lager +DocType: Sales Invoice Item,Available Batch Qty at Warehouse,VerfÃŒgbare Losgröße im Lager DocType: Time Log Batch Detail,Time Log Batch Detail,Zeitprotokollstapel-Detail DocType: Workflow State,Tasks,Aufgaben DocType: Landed Cost Voucher,Landed Cost Help,Einstandpreis Hilfe @@ -1328,7 +1328,7 @@ DocType: Stock Reconciliation,This tool helps you to update or fix the quantity DocType: Delivery Note,In Words will be visible once you save the Delivery Note.,"In Worten wird sichtbar, sobald Sie den Lieferschein speichern." apps/erpnext/erpnext/config/stock.py +125,Brand master.,Marke Vorlage DocType: ToDo,Due Date,FÀlligkeitsdatum -DocType: Sales Invoice Item,Brand Name,Markenname +DocType: Sales Invoice Item,Brand Name,Marke Name apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +626,Box,Kiste apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +389,The Organization,Die Firma DocType: Monthly Distribution,Monthly Distribution,Monatliche Verteilung @@ -1341,7 +1341,7 @@ apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +44,Reserved war apps/erpnext/erpnext/config/learn.py +137,Material Request to Purchase Order,Material Antrag auf Auftrag kaufen apps/erpnext/erpnext/controllers/sales_and_purchase_return.py +69,Row # {0}: Returned Item {1} does not exists in {2} {3},Row # {0}: zurÃŒckgebrachtes Einzelteil {1} ​​nicht existiert in {2} {3} apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +16,Bank Accounts,Bankkonten -,Bank Reconciliation Statement,Kontenabstimmungsauszug +,Bank Reconciliation Statement,Kontoauszug zum Kontenabgleich DocType: Address,Lead Name,Interessent Name ,POS,POS apps/erpnext/erpnext/config/stock.py +273,Opening Stock Balance,Öffnungslizenzabgleich @@ -1403,7 +1403,7 @@ DocType: Party Account,Party Account,Gruppenzugang apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +74,Human Resources,Personalwesen DocType: Lead,Upper Income,Oberes Einkommen apps/erpnext/erpnext/support/doctype/issue/issue.py +58,My Issues,Meine Fragen -DocType: BOM Item,BOM Item,StÃŒcklistenartikel +DocType: BOM Item,BOM Item,StÃŒcklisten-Artikel DocType: Appraisal,For Employee,FÃŒr Mitarbeiter DocType: Company,Default Values,Standardwerte apps/erpnext/erpnext/accounts/doctype/payment_tool/payment_tool.js +189,Row {0}: Payment amount can not be negative,Zeile {0}: Zahlungsbetrag kann nicht negativ sein @@ -1425,11 +1425,11 @@ DocType: Manufacturing Settings,Capacity Planning For (Days),KapazitÀtsplanung apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +56,None of the items have any change in quantity or value.,Keiner der Einzelteile irgendein Änderung bei Mengen oder Kosten. DocType: Warranty Claim,Warranty Claim,Garantieantrag ,Lead Details,Interessent-Details -DocType: Authorization Rule,Approving User,Genehmigen Benutzer +DocType: Authorization Rule,Approving User,Genehmigender Benutzer apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +36,Forging,FÀlschung apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +125,Plating,Überzug DocType: Purchase Invoice,End date of current invoice's period,Ende der laufenden Rechnungsperiode -DocType: Pricing Rule,Applicable For,Anwendbar +DocType: Pricing Rule,Applicable For,Anwendbar fÃŒr apps/erpnext/erpnext/stock/doctype/item/item.py +342,Item Template cannot have stock or Open Sales/Purchase/Production Orders.,Artikel-Template kann nicht auf Lager oder Open Vertrieb / Einkauf / FertigungsauftrÀge. DocType: Bank Reconciliation,From Date,Von Datum DocType: Backup Manager,Validate,PrÃŒfen @@ -1456,7 +1456,7 @@ DocType: Stock Entry Detail,Material Request used to make this Stock Entry,Verwe DocType: Journal Entry,View Details,Details anschauen apps/erpnext/erpnext/config/support.py +43,Single unit of an Item.,Einzeleinheit eines Artikels. apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +164,Time Log Batch {0} must be 'Submitted',"Zeitprotokollstapel {0} muss ""eingereicht"" werden" -DocType: Accounts Settings,Make Accounting Entry For Every Stock Movement,Machen Accounting Eintrag fÃŒr jede Lagerbewegung +DocType: Accounts Settings,Make Accounting Entry For Every Stock Movement,Eine Buchung fÃŒr jede Lagerbewegung anlegen DocType: Leave Allocation,Total Leaves Allocated,Insgesamt zugewiesene Urlaubstage apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +329,Warehouse required at Row No {0},Warehouse bei Row Keine erforderlich {0} DocType: Employee,Date Of Retirement,Zeitpunkt der Pensionierung @@ -1524,8 +1524,8 @@ DocType: Packing Slip,The net weight of this package. (calculated automatically DocType: Stock Reconciliation Item,Leave blank if no change,"Leer lassen, wenn keine Änderung" apps/erpnext/erpnext/selling/doctype/sales_order/sales_order_list.js +17,To Deliver and Bill,Zu liefern und Bill apps/erpnext/erpnext/config/manufacturing.py +24,Time Logs for manufacturing.,Zeit Logs fÃŒr die Fertigung. -DocType: Item,Apply Warehouse-wise Reorder Level,Übernehmen Lagerweise Meldebestand -apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py +430,BOM {0} must be submitted,StÃŒckliste {0} einzureichen +DocType: Item,Apply Warehouse-wise Reorder Level,Anwenden des lagerartigen Meldebestands +apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py +430,BOM {0} must be submitted,StÃŒckliste {0} muss vorliegen DocType: Authorization Control,Authorization Control,Berechtigungskontrolle apps/erpnext/erpnext/config/projects.py +23,Time Log for tasks.,Zeitprotokoll fÃŒr Aufgaben. DocType: Production Order Operation,Actual Time and Cost,TatsÀchliche Laufzeit und Kosten @@ -1556,7 +1556,7 @@ DocType: Payment Tool,Make Payment Entry,Zahlung hinzufÃŒgen apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py +119,Quantity for Item {0} must be less than {1},Menge Artikel fÃŒr {0} muss kleiner sein als {1} DocType: Backup Manager,Never,Nie ,Sales Invoice Trends,Ausgangsrechnung Trends -DocType: Leave Application,Apply / Approve Leaves,Beurlaubungen anwenden/genehmigen +DocType: Leave Application,Apply / Approve Leaves,Urlaub eintragen/genehmigen apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js +90,Can refer row only if the charge type is 'On Previous Row Amount' or 'Previous Row Total',"Kann sich nur auf diese Zeile beziehen, wenn die Berechnungsart 'bei vorherigem Zeilenbetrag' oder 'bei nachfolgendem Zeilenbetrag' ist" DocType: Sales Order Item,Delivery Warehouse,Auslieferungslager DocType: Stock Settings,Allowance Percent,Zulassen Prozent @@ -1667,7 +1667,7 @@ apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +43,Embossin ,Quotation Trends,Angebot Trends apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +135,Item Group not mentioned in item master for item {0},Im Artikelstamm fÃŒr Artikel nicht erwÀhnt Artikelgruppe {0} apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +247,Debit To account must be a Receivable account,Debit Um Konto muss ein Debitorenkonto -apps/erpnext/erpnext/stock/doctype/item/item.py +162,"As Production Order can be made for this item, it must be a stock item.","Da einen Fertigungsauftrag fÃŒr diesen Artikel gemacht werden kann, muss dieser Artikel eine Lagerposition sein." +apps/erpnext/erpnext/stock/doctype/item/item.py +162,"As Production Order can be made for this item, it must be a stock item.","Da ein Fertigungsauftrag fÃŒr diesen Artikel gemacht werden kann, muss es sich um einen Lagerartikel handeln." DocType: Shipping Rule Condition,Shipping Amount,Versandbetrag apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +139,Joining,Beitritt DocType: Authorization Rule,Above Value,Wertgrenze wurde ÃŒberschritten @@ -1694,7 +1694,7 @@ DocType: Purchase Invoice,Additional Discount Amount,ZusÀtzlicher Rabatt apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +99,The day(s) on which you are applying for leave are holiday. You need not apply for leave.,"Tag(e), auf die Sie Urlaub beantragen, sind Feiertage. HierfÃŒr mÃŒssen Sie keinen Urlaub beantragen." sites/assets/js/desk.min.js +771,and,und DocType: Leave Block List Allow,Leave Block List Allow,Urlaubssperrenliste zulassen -apps/erpnext/erpnext/setup/doctype/company/company.py +35,Abbr can not be blank or space,Abbr kann nicht leer oder SPACE sein +apps/erpnext/erpnext/setup/doctype/company/company.py +35,Abbr can not be blank or space,Abbr kann nicht leer oder Space sein apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +49,Sports,Sport apps/erpnext/erpnext/accounts/report/budget_variance_report/budget_variance_report.py +61,Total Actual,Insgesamt Actual DocType: Stock Entry,"Get valuation rate and available stock at source/target warehouse on mentioned posting date-time. If serialized item, please press this button after entering serial nos.","Bewertungsrate und verfÃŒgbaren Lagerbestand an Ursprungs-/Zielwarenlager zum genannten Buchungsdatum/Uhrzeit abrufen. Bei Serienartikel, drÃŒcken Sie diese Taste nach der Eingabe der Seriennummern." @@ -1710,7 +1710,7 @@ apps/erpnext/erpnext/accounts/doctype/fiscal_year/fiscal_year.py +20,{0} is now apps/erpnext/erpnext/projects/doctype/project/project.js +47,Expense Claims,Spesenabrechnungen DocType: Email Digest,Support,Support DocType: Authorization Rule,Approving Role,Genehmigende Rolle -,BOM Search,StÃŒckliste Suche +,BOM Search,StÃŒcklisten-Suche apps/erpnext/erpnext/accounts/report/general_ledger/general_ledger.py +126,Closing (Opening + Totals),Schließen (Öffnungs + Totals) apps/erpnext/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py +85,Please specify currency in Company,Bitte geben Sie WÀhrung in Gesellschaft DocType: Workstation,Wages per hour,Lohn pro Stunde @@ -1732,13 +1732,13 @@ DocType: Salary Slip,Total Deduction,Gesamtabzug apps/erpnext/erpnext/templates/includes/cart.js +100,Hey! Go ahead and add an address,Hey! Gehen Sie voran und fÃŒgen Sie eine Adresse DocType: Quotation,Maintenance User,Mitarbeiter fÃŒr die Wartung apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py +144,Cost Updated,Kosten aktualisiert -apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.js +751,Are you sure you want to UNSTOP,"Sind Sie sicher, dass du nicht aufhören willst?" +apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.js +751,Are you sure you want to UNSTOP,"Sind Sie sicher, dass Sie WEITERMACHEN wollen?" DocType: Employee,Date of Birth,Geburtsdatum apps/erpnext/erpnext/controllers/sales_and_purchase_return.py +77,Item {0} has already been returned,Artikel {0} wurde bereits zurÃŒck DocType: Fiscal Year,**Fiscal Year** represents a Financial Year. All accounting entries and other major transactions are tracked against **Fiscal Year**.,**GeschÀftsjahr** steht fÃŒr ein GeschÀftsjahr. Alle Buchungen und anderen großen Transaktionen werden mit dem **GeschÀftsjahr** verglichen. DocType: Opportunity,Customer / Lead Address,Kunden / Interessenten-Adresse DocType: Production Order Operation,Actual Operation Time,TatsÀchliche Betriebszeit -DocType: Authorization Rule,Applicable To (User),Anwendbar auf (User) +DocType: Authorization Rule,Applicable To (User),Anwendbar auf (Benutzer) DocType: Purchase Taxes and Charges,Deduct,Abziehen apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +170,Job Description,TÀtigkeitsbeschreibung DocType: Purchase Order Item,Qty as per Stock UOM,Menge nach Lager-ME @@ -1816,7 +1816,7 @@ apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standar DocType: Purchase Invoice Item,Qty,Menge DocType: Fiscal Year,Companies,Unternehmen apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +23,Electronics,Elektronik -DocType: Email Digest,"Balances of Accounts of type ""Bank"" or ""Cash""","Guthaben von Konten vom Typ ""Bank"" oder ""Cash""" +DocType: Email Digest,"Balances of Accounts of type ""Bank"" or ""Cash""","KontostÀnde der Konten vom Typ ""Bank"" oder ""Kasse""" DocType: Shipping Rule,"Specify a list of Territories, for which, this Shipping Rule is valid","Geben Sie eine Liste der Regionen an, fÃŒr die diese Versandregel gilt" DocType: Stock Settings,Raise Material Request when stock reaches re-order level,"Materialanfrage erstellen, wenn der Lagerbestand unter einen Wert sinkt" apps/erpnext/erpnext/support/doctype/maintenance_visit/maintenance_visit.js +18,From Maintenance Schedule,Vom Wartungsplan @@ -1840,11 +1840,11 @@ apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.htm DocType: Time Log,To Time,Bis Uhrzeit apps/erpnext/erpnext/accounts/page/accounts_browser/accounts_browser.js +25,"To add child nodes, explore tree and click on the node under which you want to add more nodes.","Um Unterelemente hinzuzufÃŒgen, klicken Sie im Baum auf das Element, unter dem Sie weitere Elemente hinzufÃŒgen möchten." apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +96,Credit To account must be a Payable account,Kredit Um Konto muss ein Konto zahlbar sein -apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py +233,BOM recursion: {0} cannot be parent or child of {2},BOM Rekursion : {0} kann nicht Elternteil oder Kind von {2} sein +apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py +233,BOM recursion: {0} cannot be parent or child of {2},BOM-Rekursion: {0} kann nicht Elternteil oder Kind von {2} sein DocType: Production Order Operation,Completed Qty,Abgeschlossene Menge apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +134,"For {0}, only debit accounts can be linked against another credit entry",FÃŒr {0} kann nur Debitkonten gegen eine andere Gutschrift verknÃŒpft werden apps/erpnext/erpnext/stock/get_item_details.py +235,Price List {0} is disabled,Preisliste {0} ist deaktiviert -DocType: Manufacturing Settings,Allow Overtime,Lassen Sie nach VerlÀngerung +DocType: Manufacturing Settings,Allow Overtime,Überstunden zulassen apps/erpnext/erpnext/controllers/selling_controller.py +254,Sales Order {0} is stopped,Kundenauftrag {0} ist angehalten DocType: Email Digest,New Leads,Neue Interessenten DocType: Stock Reconciliation Item,Current Valuation Rate,Aktuelle Bewertung Rate @@ -1872,7 +1872,7 @@ apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +563,Your Customers apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +26,Compression molding,Formpressen DocType: Leave Block List Date,Block Date,Datum sperren DocType: Sales Order,Not Delivered,nicht geliefert -,Bank Clearance Summary,Zusammenfassung Bankgenehmigung +,Bank Clearance Summary,Zusammenfassung Bankabwicklungen apps/erpnext/erpnext/config/setup.py +105,"Create and manage daily, weekly and monthly email digests.","Erstellen und Verwalten von tÀglichen, wöchentlichen und monatlichen E-Mail Berichten." apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js +46,Item Code > Item Group > Brand,Artikel-Nr > Artikelgruppe > Marke DocType: Appraisal Goal,Appraisal Goal,Bewertungsziel @@ -1902,11 +1902,11 @@ apps/erpnext/erpnext/stock/get_item_details.py +103,No Item with Barcode {0},Kei apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.js +51,Case No. cannot be 0,Fall Nr. kann nicht 0 sein DocType: Features Setup,If you have Sales Team and Sale Partners (Channel Partners) they can be tagged and maintain their contribution in the sales activity,"Wenn Sie ein Verkaufsteam und Verkaufspartner (Vertriebskanalpartner) haben, können sie markiert werden und ihren Beitrag zur UmsatztÀtigkeit behalten" DocType: Item,Show a slideshow at the top of the page,Diaschau oben auf der Seite anzeigen -DocType: Item,"Allow in Sales Order of type ""Service""",Lassen Sie in Kundenauftrag vom Typ "Service" +DocType: Item,"Allow in Sales Order of type ""Service""","Kundenbestellungen des Typs ""Service"" zulassen" apps/erpnext/erpnext/setup/doctype/company/company.py +77,Stores,Shops DocType: Time Log,Projects Manager,Projekte Verantwortlicher DocType: Serial No,Delivery Time,Lieferzeit -apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js +27,Ageing Based On,Altern basiert auf +apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js +27,Ageing Based On,Alterung basiert auf DocType: Item,End of Life,Lebensdauer apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +41,Travel,Reise DocType: Leave Block List,Allow Users,Benutzer zulassen @@ -1919,7 +1919,7 @@ apps/erpnext/erpnext/stock/doctype/material_request/material_request.js +508,Tra DocType: BOM,"Specify the operations, operating cost and give a unique Operation no to your operations.","Geben Sie die VorgÀnge, Betriebskosten an und geben einen einzigartige Betriebs-Nr fÃŒr Ihren Betrieb an." DocType: Purchase Invoice,Price List Currency,PreislistenwÀhrung DocType: Naming Series,User must always select,Benutzer muss immer auswÀhlen -DocType: Stock Settings,Allow Negative Stock,Negatives Inventar zulassen +DocType: Stock Settings,Allow Negative Stock,Negativen Lagerbestand zulassen DocType: Installation Note,Installation Note,Installationshinweis apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +541,Add Taxes,Steuern hinzufÃŒgen ,Financial Analytics,Finanzielle Analyse @@ -1931,7 +1931,7 @@ apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standar DocType: System Settings,In Hours,In Stunden DocType: Process Payroll,Create Salary Slip,Gehaltsabrechnung erstellen apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py +44,Expected balance as per bank,erwartetet Kontostand laut Bank -apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +114,Buffing,Buffing +apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +114,Buffing,Polieren apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +158,Source of Funds (Liabilities),Mittelherkunft ( Passiva) apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +354,Quantity in row {0} ({1}) must be same as manufactured quantity {2},Menge in Zeile {0} ( {1}) muss die gleiche sein wie hergestellte Menge {2} DocType: Appraisal,Employee,Mitarbeiter @@ -1963,9 +1963,9 @@ DocType: Backup Manager,"Note: Backups and files are not deleted from Dropbox, y DocType: Maintenance Schedule Detail,Maintenance Schedule Detail,Wartungsplandetail DocType: Quality Inspection Reading,Reading 9,Ablesung 9 DocType: Supplier,Is Frozen,Ist Gefroren -DocType: Buying Settings,Buying Settings,Einkaufs Einstellungen +DocType: Buying Settings,Buying Settings,Einkaufs-Einstellungen apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +121,Mass finishing,Gleitschleifen -DocType: Stock Entry Detail,BOM No. for a Finished Good Item,StÃŒcklistennr. fÃŒr einen fertigen Artikel +DocType: Stock Entry Detail,BOM No. for a Finished Good Item,StÃŒcklisten-Nr. fÃŒr einen fertigen Artikel DocType: Upload Attendance,Attendance To Date,Teilnahme bis Datum apps/erpnext/erpnext/config/selling.py +158,Setup incoming server for sales email id. (e.g. sales@example.com),Posteingangsserver fÃŒr den Vertrieb E-Mail-Adresse einrichten. (z.B. sales@example.com) DocType: Warranty Claim,Raised By,Gemeldet von @@ -1984,7 +1984,7 @@ DocType: Shipping Rule,Shipping Rule Label,Versandbedingungsetikett apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py +209,Raw Materials cannot be blank.,Rohstoffe darf nicht leer sein. DocType: Newsletter,Test,Test apps/erpnext/erpnext/stock/doctype/item/item.py +216,"As there are existing stock transactions for this item, \ - you can not change the values of 'Has Serial No', 'Has Batch No', 'Is Stock Item' and 'Valuation Method'","Da es bestehenden AktiengeschÀfte ÃŒber diesen Artikel, \ können Sie die Werte von nicht Àndern "Hat Seriennummer", "Hat Batch No", "Ist Lizenz Artikel" und "Bewertungsmethode '" + you can not change the values of 'Has Serial No', 'Has Batch No', 'Is Stock Item' and 'Valuation Method'","Da es bestehende Lagerbewegungen fÃŒr diesen Artikel gibt, \ können Sie die Werte von ""Hat Seriennummer"", ""Hat Losnummer"", ""Ist Lagerartikel"" und ""Bewertungsmethode"" nicht Àndern" apps/erpnext/erpnext/manufacturing/doctype/bom/bom.js +92,You can not change rate if BOM mentioned agianst any item,Sie können den Tarif nicht Àndern solange die StÃŒckliste Artikel enthÀlt DocType: Employee,Previous Work Experience,Vorherige Berufserfahrung DocType: Stock Entry,For Quantity,FÃŒr Menge @@ -2023,7 +2023,7 @@ DocType: Authorization Rule,Applicable To (Role),Anwendbar auf (Rolle) DocType: Stock Entry,Purpose,Zweck DocType: Item,Will also apply for variants unless overrridden,"Wird auch auf Varianten angewendet, sofern nicht aufgehoben" DocType: Purchase Invoice,Advances,VorschÃŒsse -apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +32,Approving User cannot be same as user the rule is Applicable To,Genehmigen Benutzer kann nicht dieselbe sein wie Benutzer die Regel ist anwendbar auf +apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +32,Approving User cannot be same as user the rule is Applicable To,"Genehmigender Benutzer kann nicht derselbe sein wie der Benutzer, der die Regel anwendet" DocType: SMS Log,No of Requested SMS,Anzahl angeforderter SMS DocType: Campaign,Campaign-.####,Kampagne-.#### apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +480,Make Invoice,Rechnung erstellen @@ -2036,7 +2036,7 @@ apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +296,{0} ag DocType: SMS Settings,"Enter static url parameters here (Eg. sender=ERPNext, username=ERPNext, password=1234 etc.)","Geben Sie hier statische URL-Parameter ein (z. B. Absender=ERPNext, Benutzername=ERPNext, Passwort=1234 usw.)" apps/erpnext/erpnext/accounts/utils.py +39,{0} {1} not in any active Fiscal Year. For more details check {2}.,"{0} {1} ist in keinem aktiven GeschÀftsjahr. FÃŒr weitere Details, bitte {2} prÃŒfen." apps/erpnext/erpnext/setup/page/setup_wizard/default_website.py +26,This is an example website auto-generated from ERPNext,"Dies ist eine Beispiel-Website, von ERPNext automatisch generiert" -apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js +37,Ageing Range 1,Ageing Bereich 1 +apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js +37,Ageing Range 1,Alterung Bereich 1 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +109,Photochemical machining,Photochemische Bearbeitung DocType: Purchase Taxes and Charges Template,"Standard tax template that can be applied to all Purchase Transactions. This template can contain list of tax heads and also other expense heads like ""Shipping"", ""Insurance"", ""Handling"" etc. @@ -2216,7 +2216,7 @@ apps/erpnext/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.p DocType: Stock Settings,Default Valuation Method,Standard-Bewertungsmethode apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +126,Polishing,Polieren DocType: Production Order Operation,Planned Start Time,Geplante Startzeit -apps/erpnext/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py +51,Allocated,Zugeteilte +apps/erpnext/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py +51,Allocated,Zugewiesen apps/erpnext/erpnext/config/accounts.py +63,Close Balance Sheet and book Profit or Loss.,Bilanz schliessen und Gewinn und Verlust buchen. DocType: Currency Exchange,Specify Exchange Rate to convert one currency into another,Geben Sie den Wechselkurs zum Umrechnen einer WÀhrung in eine andere an apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +135,Quotation {0} is cancelled,Angebot {0} wird abgebrochen @@ -2267,12 +2267,12 @@ DocType: Attendance,Leave Type,Urlaubstyp apps/erpnext/erpnext/controllers/stock_controller.py +173,Expense / Difference account ({0}) must be a 'Profit or Loss' account,"Aufwand / Differenz-Konto ({0}) muss ein ""Gewinn oder Verlust""-Konto sein" DocType: Account,Accounts User,Rechnungswesen Benutzer DocType: Purchase Invoice,"Check if recurring invoice, uncheck to stop recurring or put proper End Date","Aktivieren, wenn dies eine wiederkehrende Rechnung ist, deaktivieren, damit es keine wiederkehrende Rechnung mehr ist oder ein gÃŒltiges Enddatum angeben." -apps/erpnext/erpnext/hr/doctype/attendance/attendance.py +18,Attendance for employee {0} is already marked,Die Teilnahme fÃŒr Mitarbeiter {0} ist bereits markiert +apps/erpnext/erpnext/hr/doctype/attendance/attendance.py +18,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 mehr als ein Paket von der gleichen Art (fÃŒr den Druck) apps/erpnext/erpnext/utilities/doctype/rename_tool/rename_tool.py +38,Maximum {0} rows allowed,Maximum {0} Zeilen erlaubt DocType: C-Form Invoice Detail,Net Total,Nettosumme DocType: Bin,FCFS Rate,FCFS-Rate -apps/erpnext/erpnext/accounts/page/pos/pos.js +15,Billing (Sales Invoice),Verkauf (Ausgangsrechnung) +apps/erpnext/erpnext/accounts/page/pos/pos.js +15,Billing (Sales Invoice),Abrechnung (Ausgangsrechnung) DocType: Payment Reconciliation Invoice,Outstanding Amount,Ausstehender Betrag DocType: Project Task,Working,Arbeit DocType: Stock Ledger Entry,Stock Queue (FIFO),Bestands-Warteschlange (FIFO) @@ -2283,7 +2283,7 @@ DocType: Account,Round Off,Abrunden DocType: BOM Item,Scrap %,Ausschuss % apps/erpnext/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.js +38,"Charges will be distributed proportionately based on item qty or amount, as per your selection","Die Kosten werden anteilig verteilt auf Teil StÃŒck oder Menge basieren, wie pro Ihre Wahl" DocType: Maintenance Visit,Purposes,Zweck -apps/erpnext/erpnext/controllers/sales_and_purchase_return.py +89,Atleast one item should be entered with negative quantity in return document,Atleast ein Einzelteil sollte mit negativer Menge in RÃŒck Dokument eingegeben werden +apps/erpnext/erpnext/controllers/sales_and_purchase_return.py +89,Atleast one item should be entered with negative quantity in return document,Mindestens ein Artikel sollte mit negativer Menge in das RÃŒckgabedokument eingegeben werden apps/erpnext/erpnext/manufacturing/doctype/workstation/workstation.py +67,"Operation {0} longer than any available working hours in workstation {1}, break down the operation into multiple operations","Operation {0} lÀnger als alle verfÃŒgbaren Arbeitszeiten in Workstation {1}, brechen den Vorgang in mehrere Operationen" apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +133,Electrochemical machining,Elektrochemische Bearbeitung ,Requested,Angeforderte @@ -2319,7 +2319,7 @@ apps/erpnext/erpnext/stock/doctype/item/item.py +267,Item {0} does not exist,Art DocType: Sales Invoice,Customer Address,Kundenadresse apps/frappe/frappe/desk/query_report.py +136,Total,Gesamt DocType: Backup Manager,System for managing Backups,System zur Verwaltung von Backups -DocType: Purchase Invoice,Apply Additional Discount On,Es gelten zusÀtzliche Discount On +DocType: Purchase Invoice,Apply Additional Discount On,ZusÀtzlichen Nachlass gewÀhren auf DocType: Account,Root Type,root- Typ apps/erpnext/erpnext/controllers/sales_and_purchase_return.py +79,Row # {0}: Cannot return more than {1} for Item {2},Row # {0}: Kann nicht mehr als {1} zurÃŒck zur Artikel {2} apps/erpnext/erpnext/accounts/page/financial_analytics/financial_analytics.js +52,Plot,GrundstÃŒck @@ -2378,7 +2378,7 @@ apps/erpnext/erpnext/accounts/doctype/account/account.py +108,Root Type is manda apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +292,Serial No {0} created,Seriennummer {0} erstellt apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +124,Vibratory finishing,Gleitschleifen DocType: Item Customer Detail,"For the convenience of customers, these codes can be used in print formats like Invoices and Delivery Notes","Um es den Kunden zu erleichtern, können diese Codes in Druckformaten wie Rechnungen und Lieferscheinen verwendet werden" -DocType: Journal Entry Account,Against Purchase Order,Vor Bestellung +DocType: Journal Entry Account,Against Purchase Order,Gegen Bestellung DocType: Employee,You can enter any date manually,Sie können jedes Datum manuell eingeben DocType: Sales Invoice,Advertisement,Anzeige apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +165,Probationary Period,Probezeit @@ -2454,7 +2454,7 @@ apps/erpnext/erpnext/accounts/party.py +217,Note: Due / Reference Date exceeds a apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +107,Abrasive jet machining,Schleifmittelstrahlbearbeitung DocType: Stock Settings,Freeze Stock Entries,LagerbestandseintrÀge einfrieren DocType: Website Settings,Website Settings,Website-Einstellungen -DocType: Activity Cost,Billing Rate,Billing Rate +DocType: Activity Cost,Billing Rate,Berechnungssatz ,Qty to Deliver,Menge zu liefern DocType: Monthly Distribution Percentage,Month,Monat ,Stock Analytics,Bestandsanalyse @@ -2490,7 +2490,7 @@ DocType: Production Planning Tool,Create Material Requests,Materialanfragen erst DocType: Employee Education,School/University,Schule/UniversitÀt DocType: Sales Invoice Item,Available Qty at Warehouse,VerfÃŒgbarer Lagerbestand ,Billed Amount,Rechnungsbetrag -DocType: Bank Reconciliation,Bank Reconciliation,Kontenabstimmung +DocType: Bank Reconciliation,Bank Reconciliation,Kontenabgleich apps/erpnext/erpnext/templates/includes/footer/footer_extension.html +9,Get Updates,Holen Sie sich Updates DocType: Purchase Invoice,Total Amount To Pay,FÀlliger Gesamtbetrag apps/erpnext/erpnext/stock/doctype/material_request/material_request.py +174,Material Request {0} is cancelled or stopped,Materialanforderung {0} wird abgebrochen oder gestoppt @@ -2501,7 +2501,7 @@ apps/erpnext/erpnext/accounts/report/general_ledger/general_ledger.js +81,Group DocType: Sales Order,Fully Delivered,Komplett geliefert DocType: Lead,Lower Income,Niedrigeres Einkommen DocType: Period Closing Voucher,"The account head under Liability, in which Profit/Loss will be booked","Das Hauptkonto unter Verbindlichkeit, in das Gewinn/Verlust verbucht werden" -DocType: Payment Tool,Against Vouchers,Gegen Gutscheine +DocType: Payment Tool,Against Vouchers,Gegen Belege apps/erpnext/erpnext/accounts/page/accounts_browser/accounts_browser.js +23,Quick Help,Schnellinfo apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +169,Source and target warehouse cannot be same for row {0},Quell- und Ziel-Lager kann nicht gleich sein fÃŒr die Zeile {0} DocType: Features Setup,Sales Extras,Verkauf Extras @@ -2531,11 +2531,11 @@ apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standar apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +164,Item Variants {0} renamed,Artikelvarianten {0} umbenannt apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +15,Make Salary Slip,Gehaltsabrechnung erstellen apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.js +85,Unstop,aufmachen -apps/erpnext/erpnext/manufacturing/doctype/bom/bom.js +18,Browse BOM,Durchsuchen BOM +apps/erpnext/erpnext/manufacturing/doctype/bom/bom.js +18,Browse BOM,StÃŒckliste durchsuchen apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +175,Secured Loans,Secured Loans apps/erpnext/erpnext/utilities/doctype/rename_tool/rename_tool.py +49,Ignored:,Ignoriert: apps/erpnext/erpnext/shopping_cart/__init__.py +68,{0} cannot be purchased using Shopping Cart,{0} kann nicht mit Warenkorb erworben werden -apps/erpnext/erpnext/setup/page/setup_wizard/data/sample_home_page.html +3,Awesome Products,besondere Produkte +apps/erpnext/erpnext/setup/page/setup_wizard/data/sample_home_page.html +3,Awesome Products,Eindrucksvolle Produkte apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +189,Opening Balance Equity,Eröffnungsbilanz Eigenkapital apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +80,Cannot approve leave as you are not authorized to approve leaves on Block Dates,"Diese Abwesenheit kann nicht genehmigt werden, da Sie nicht ÃŒber die Berechtigung zur Genehmigung von Block-Abwesenheiten verfÃŒgen." DocType: Appraisal,Appraisal,Bewertung @@ -2546,19 +2546,19 @@ apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +149,Leav DocType: Hub Settings,Seller Email,VerkÀufer per E-Mail DocType: Project,Total Purchase Cost (via Purchase Invoice),Gesamten Anschaffungskosten (via Einkaufsrechnung) DocType: Workstation Working Hour,Start Time,Startzeit -DocType: Item Price,Bulk Import Help,Bulk Import Help +DocType: Item Price,Bulk Import Help,Massen-Import Hilfe apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.js +185,Select Quantity,WÀhlen Sie Menge DocType: Sales Taxes and Charges Template,"Specify a list of Territories, for which, this Taxes Master is valid","Geben Sie eine Liste der Regionen an, fÃŒr die dieser Steuerstamm gilt" -apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +34,Approving Role cannot be same as role the rule is Applicable To,Genehmigen Rolle kann nicht dieselbe sein wie die Rolle der Regel ist anwendbar auf +apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +34,Approving Role cannot be same as role the rule is Applicable To,Genehmigende Rolle kann nicht dieselbe sein wie die Rolle Die Regel ist anwendbar auf apps/erpnext/erpnext/setup/doctype/email_digest/email_digest.js +41,Message Sent,Nachricht gesendet DocType: Production Plan Sales Order,SO Date,SO-Datum -apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +77,Attribute value {0} does not exist in Item Attribute Master.,Attribut Wert {0} nicht in Artikel vorhanden Attribut Meister. +apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +77,Attribute value {0} does not exist in Item Attribute Master.,Attributwert {0} existiert nicht in Attributevorlage des Artikels. DocType: Sales Invoice,Rate at which Price list currency is converted to customer's base currency,"Kurs, zu dem die PreislistenwÀhrung in die BasiswÀhrung des Kunden umgerechnet wird" DocType: Purchase Invoice Item,Net Amount (Company Currency),Nettobetrag (Gesellschaft WÀhrung) DocType: BOM Operation,Hour Rate,Stundensatz DocType: Stock Settings,Item Naming By,Artikelbenennung nach apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.js +637,From Quotation,von Angebot -apps/erpnext/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py +35,Another Period Closing Entry {0} has been made after {1},Eine weitere Periode Schluss Eintrag {0} wurde nach gemacht worden {1} +apps/erpnext/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py +35,Another Period Closing Entry {0} has been made after {1},Ein weiterer Perioden-Schlusseintrag {0} wurde nach {1} erstellt DocType: Production Order,Material Transferred for Manufacturing,Material zur Herstellung von Übertragene apps/erpnext/erpnext/accounts/report/general_ledger/general_ledger.py +25,Account {0} does not exists,Konto {0} existiert nicht DocType: Purchase Receipt Item,Purchase Order Item No,Lieferatenauftrag Artikel-Nr. @@ -2607,7 +2607,7 @@ DocType: Notification Control,Quotation Message,Angebotsnachricht DocType: Issue,Opening Date,Öffnungsdatum DocType: Journal Entry,Remark,Bemerkung DocType: Purchase Receipt Item,Rate and Amount,Kurs und Menge -apps/erpnext/erpnext/accounts/doctype/cost_center/cost_center.py +41,"Budget cannot be assigned against {0}, as it's not an Expense account","Budget kann nicht gegen {0} zugewiesen werden, da es nicht ein Aufwandskonto" +apps/erpnext/erpnext/accounts/doctype/cost_center/cost_center.py +41,"Budget cannot be assigned against {0}, as it's not an Expense account","Budget kann nicht gegen {0} zugewiesen werden, da es nicht ein Aufwandskonto ist" apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +94,Boring,Langweilig apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +667,From Sales Order,Aus Kundenauftrag DocType: Blog Category,Parent Website Route,Eltern- Webseite Routen @@ -2618,7 +2618,7 @@ apps/frappe/frappe/workflow/doctype/workflow/workflow_list.js +7,Not active,Nich apps/erpnext/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py +52,Against Invoice Posting Date,Gegen Rechnung mit Buchungsdatum DocType: Purchase Receipt Item,Landed Cost Voucher Amount,Einstandspreis Gutscheinbetrag DocType: Time Log,Batched for Billing,FÃŒr Abrechnung gebÃŒndelt -apps/erpnext/erpnext/config/accounts.py +23,Bills raised by Suppliers.,Rechnungen an Lieferanten +apps/erpnext/erpnext/config/accounts.py +23,Bills raised by Suppliers.,Rechnungen von Lieferanten DocType: POS Profile,Write Off Account,"Abschreibung, Konto" sites/assets/js/erpnext.min.js +24,Discount Amount,Rabattbetrag DocType: Purchase Invoice,Return Against Purchase Invoice,RÃŒckgabe Against Einkaufsrechnung @@ -2628,7 +2628,7 @@ apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +550,e.g. VAT,z.B. apps/erpnext/erpnext/stock/report/bom_search/bom_search.js +26,Item 4,Punkt 4 DocType: Journal Entry Account,Journal Entry Account,Journal Entry Konto DocType: Shopping Cart Settings,Quotation Series,Angebotsserie -apps/erpnext/erpnext/setup/doctype/item_group/item_group.py +51,"An item exists with same name ({0}), please change the item group name or rename the item","Ein Element mit dem gleichen Namen existiert ({0} ), Àndern Sie bitte das Einzelgruppennamen oder den Artikel umzubenennen" +apps/erpnext/erpnext/setup/doctype/item_group/item_group.py +51,"An item exists with same name ({0}), please change the item group name or rename the item",Ein Artikel mit dem gleichen Namen existiert bereits ({0} ). Ändern Sie bitte den Namen der Artikelgruppe oder benennen SIe den Artikel um apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +81,Hot metal gas forming,Roheisen Gas bilden DocType: Sales Order Item,Sales Order Date,Kundenauftrag Datum DocType: Sales Invoice Item,Delivered Qty,Gelieferte Menge @@ -2649,7 +2649,7 @@ DocType: Bank Reconciliation Detail,Clearance Date,Löschdatum DocType: Newsletter,Newsletter List,Newsletter-Liste DocType: Process Payroll,Check if you want to send salary slip in mail to each employee while submitting salary slip,"Aktivieren, wenn Sie die Gehaltsabrechnung per Post an jeden Mitarbeiter senden möchten." DocType: Lead,Address Desc,Adresszusatz -apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +33,Atleast one of the Selling or Buying must be selected,Mindestens eines aus Vertrieb oder Einkauf muss ausgewÀhlt werden +apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +33,Atleast one of the Selling or Buying must be selected,Mindestens ein Eintrag aus Vertrieb oder Einkauf muss ausgewÀhlt werden apps/erpnext/erpnext/stock/doctype/item/item.js +195,"Variants can not be created manually, add item attributes in the template item","Varianten können nicht manuell erstellt werden, fÃŒgen Sie Artikel Attribute in der Vorlage Artikel" apps/erpnext/erpnext/config/manufacturing.py +34,Where manufacturing operations are carried.,Wo Herstellungsoperationen durchgefÃŒhrt. DocType: Page,All,Alle @@ -2696,7 +2696,7 @@ DocType: Sales Invoice Item,Delivery Note Item,Lieferschein Artikel DocType: Expense Claim,Task,Aufgabe apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +56,Shaving,Rasieren DocType: Purchase Taxes and Charges,Reference Row #,Referenz Row # -apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +74,Batch number is mandatory for Item {0},Chargennummer ist fÃŒr Artikel {0} +apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +74,Batch number is mandatory for Item {0},BÃŒndelnummer ist zwingend fÃŒr Artikel {0} apps/erpnext/erpnext/setup/doctype/sales_person/sales_person.js +14,This is a root sales person and cannot be edited.,Dies ist ein Stamm-VerkÀufer und kann daher nicht editiert werden. ,Stock Ledger,Lagerbuch DocType: Salary Slip Deduction,Salary Slip Deduction,Gehaltsabrechnung Abzug @@ -2725,7 +2725,7 @@ apps/erpnext/erpnext/crm/doctype/opportunity/opportunity.js +81,Opportunity Lost DocType: Features Setup,"Discount Fields will be available in Purchase Order, Purchase Receipt, Purchase Invoice","Rabattfelder stehen in Lieferatenauftrag, Eingangslieferschein und in der Eingangsrechnung zur VerfÃŒgung" DocType: Report,Report Type,Berichtstyp apps/frappe/frappe/core/doctype/user/user.js +134,Loading,Ladevorgang lÀuft -DocType: BOM Replace Tool,BOM Replace Tool,StÃŒcklisten-Ersetzungstool +DocType: BOM Replace Tool,BOM Replace Tool,StÃŒcklisten-Austauschwerkzeug apps/erpnext/erpnext/config/setup.py +37,Country wise default Address Templates,landesspezifische Standardadressvorlagen apps/erpnext/erpnext/accounts/party.py +220,Due / Reference Date cannot be after {0},Aufgrund / Referenzdatum kann nicht nach {0} sein apps/erpnext/erpnext/config/setup.py +51,Data Import and Export,Daten Import und Export @@ -2756,7 +2756,7 @@ apps/erpnext/erpnext/accounts/page/accounts_browser/accounts_browser.js +31,To c DocType: Hub Settings,Publish Availability,Veröffentlichen VerfÃŒgbarkeit apps/erpnext/erpnext/hr/doctype/employee/employee.py +105,Date of Birth cannot be greater than today.,Geburtsdatum kann nicht größer sein als heute. ,Stock Ageing,Abschreibungen -DocType: Purchase Receipt,Automatically updated from BOM table,Automatisch von BOM Tabelle aktualisiert +DocType: Purchase Receipt,Automatically updated from BOM table,Automatisch aus der StÃŒckliste aktualisiert apps/erpnext/erpnext/controllers/accounts_controller.py +184,{0} '{1}' is disabled,{0} '{1}' ist deaktiviert apps/erpnext/erpnext/crm/doctype/opportunity/opportunity_list.js +13,Set as Open,Als öffnen DocType: Notification Control,Send automatic emails to Contacts on Submitting transactions.,Beim Einreichen von Transaktionen automatische E-Mails an Kontakte senden. @@ -2775,7 +2775,7 @@ apps/erpnext/erpnext/accounts/doctype/c_form/c_form.py +54,Please enter atleast apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +511,Add Users,Benutzer hinzufÃŒgen DocType: Pricing Rule,Item Group,Artikelgruppe DocType: Task,Actual Start Date (via Time Logs),TatsÀchliches Start-Datum (ÃŒber Zeitprotokoll) -DocType: Stock Reconciliation Item,Before reconciliation,Vor der Versöhnung +DocType: Stock Reconciliation Item,Before reconciliation,Vor Ausgleich apps/erpnext/erpnext/support/doctype/maintenance_visit/maintenance_visit.py +12,To {0},{0} DocType: Purchase Invoice,Taxes and Charges Added (Company Currency),Steuern und GebÃŒhren hinzugefÃŒgt (UnternehmenswÀhrung) apps/erpnext/erpnext/stock/doctype/item/item.py +192,Item Tax Row {0} must have account of type Tax or Income or Expense or Chargeable,Artikel Tax Row {0} muss wegen Art oder Steuerertrag oder-aufwand oder Kostenpflichtige haben @@ -2806,7 +2806,7 @@ apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +62,Intern,inte DocType: Manage Variants Item,Manage Variants Item,Verwalten Varianten Artikel DocType: Newsletter,A Lead with this email id should exist,Eine Verkaufschance mit dieser E-Mail muss existieren DocType: Stock Entry,From BOM,Von BOM -DocType: Time Log,Billing Rate (per hour),Billing Rate (pro Stunde) +DocType: Time Log,Billing Rate (per hour),Abrechnungssatz (pro Stunde) apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +34,Basic,Grundlagen apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +93,Stock transactions before {0} are frozen,AktiengeschÀfte vor {0} werden eingefroren apps/erpnext/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py +226,Please click on 'Generate Schedule',"Bitte klicken Sie auf ""Zeitplan generieren""" @@ -2879,8 +2879,8 @@ apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js +272, apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +542,"List your tax heads (e.g. VAT, Customs etc; they should have unique names) and their standard rates. This will create a standard template, which you can edit and add more later.","Listen Sie Ihre Steuerköpfe (zB VAT, Gewohnheits etc, sollten sie eindeutige Namen haben) und ihre Standard-Tarife. Dies wird eine Standardvorlage, die Sie bearbeiten und spÀter mehr erstellen können." apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +244,Serial Nos Required for Serialized Item {0},Seriennummern sind erforderlich fÃŒr den Artikel mit Seriennummer {0} DocType: Journal Entry,Bank Entry,Bankeintrag -DocType: Authorization Rule,Applicable To (Designation),Geltend fÃŒr (Bestimmung) -DocType: Blog Post,Blog Post,Blog-Post +DocType: Authorization Rule,Applicable To (Designation),Anwendbar auf (Bestimmung) +DocType: Blog Post,Blog Post,Blog-Eintrag apps/erpnext/erpnext/templates/generators/item.html +35,Add to Cart,In den Warenkorb apps/erpnext/erpnext/accounts/report/gross_profit/gross_profit.js +28,Group By,Gruppieren nach apps/erpnext/erpnext/config/accounts.py +138,Enable / disable currencies.,Aktivieren / Deaktivieren der WÀhrungen. @@ -2888,7 +2888,7 @@ apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standar apps/erpnext/erpnext/controllers/trends.py +19,Total(Amt),Gesamt (Amt) apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +25,Entertainment & Leisure,Unterhaltung & Freizeit DocType: Purchase Order,The date on which recurring order will be stop,Das Datum an dem die sich Wiederholende Bestellung endet -apps/erpnext/erpnext/stock/doctype/item_attribute/item_attribute.py +36,Attribute Value {0} cannot be removed from {1} as Item Variants exist with this Attribute.,"Attribut Wert {0} kann nicht entfernt werden, {1} als Einzelteil-Varianten gibt es mit diesem Attribut." +apps/erpnext/erpnext/stock/doctype/item_attribute/item_attribute.py +36,Attribute Value {0} cannot be removed from {1} as Item Variants exist with this Attribute.,"Attributwert {0} kann nicht von {1} entfernt werden, da es Artikelvarianten mit diesem Attribut gibt." DocType: Quality Inspection,Item Serial No,Artikel-Seriennummer apps/erpnext/erpnext/controllers/status_updater.py +116,{0} must be reduced by {1} or you should increase overflow tolerance,"{0} muss um {1} reduziert werden, oder Sie sollten die Überlauftoleranz erhöhen" apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +56,Total Present,Insgesamt prÀsentieren @@ -2900,7 +2900,7 @@ apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +476,Transf apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +30,New Serial No cannot have Warehouse. Warehouse must be set by Stock Entry or Purchase Receipt,Neue Seriennummer kann kann kein Lager haben. Lagerangaben mÃŒssen durch Lagerzugang oder Eingangslieferschein erstellt werden DocType: Lead,Lead Type,Lead-Typ apps/erpnext/erpnext/crm/doctype/opportunity/opportunity.js +77,Create Quotation,Angebot erstellen -apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.py +292,All these items have already been invoiced,Alle dieser Artikel sind bereits in Rechnung gestellt +apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.py +292,All these items have already been invoiced,Alle diese Artikel sind bereits in Rechnung gestellt apps/erpnext/erpnext/setup/doctype/authorization_control/authorization_control.py +37,Can be approved by {0},Kann von {0} genehmigt werden DocType: Shipping Rule,Shipping Rule Conditions,Versandbedingungen DocType: BOM Replace Tool,The new BOM after replacement,Die neue StÃŒckliste nach dem Austausch @@ -2933,7 +2933,7 @@ apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +38,Cold rol DocType: Customer Group,Customer Group Name,Kundengruppenname apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +353,Please remove this Invoice {0} from C-Form {1},Bitte löschen Sie das Rechnungs {0} von C-Form {1} DocType: Leave Control Panel,Please select Carry Forward if you also want to include previous fiscal year's balance leaves to this fiscal year,"Klicken Sie auf 'Übertragen', wenn Sie auch die Bilanz des vorangegangenen GeschÀftsjahrs in dieses GeschÀftsjahr einbeziehen möchten." -DocType: GL Entry,Against Voucher Type,Gegen Gutscheintyp +DocType: GL Entry,Against Voucher Type,Gegen Belegart DocType: Manage Variants Item,Attributes,Attribute DocType: Packing Slip,Get Items,Artikel aufrufen apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +178,Please enter Write Off Account,Bitte geben Sie Write Off Konto @@ -2956,7 +2956,7 @@ DocType: Project,Expected End Date,Voraussichtliches Enddatum DocType: Appraisal Template,Appraisal Template Title,Bewertungsvorlage Titel apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.py +419,Commercial,Handels- DocType: Cost Center,Distribution Id,Verteilungs-ID -apps/erpnext/erpnext/setup/page/setup_wizard/data/sample_home_page.html +14,Awesome Services,besondere Dienstleistungen +apps/erpnext/erpnext/setup/page/setup_wizard/data/sample_home_page.html +14,Awesome Services,Eindrucksvolle Dienstleistungen apps/erpnext/erpnext/config/manufacturing.py +29,All Products or Services.,Alle Produkte oder Dienstleistungen. DocType: Purchase Invoice,Supplier Address,Lieferantenadresse DocType: Contact Us Settings,Address Line 2,Adresszeile 2 @@ -2975,7 +2975,7 @@ apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +101,Sawing, apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +31,Laminating,Kaschieren DocType: Item Reorder,Transfer,Übertragung apps/erpnext/erpnext/stock/doctype/material_request/material_request.js +568,Fetch exploded BOM (including sub-assemblies),Abruch der StÃŒcklisteneintrÀge (einschließlich der Unterelemente) -DocType: Authorization Rule,Applicable To (Employee),Geltend fÃŒr (Mitarbeiter) +DocType: Authorization Rule,Applicable To (Employee),Anwendbar fÃŒr (Mitarbeiter) apps/erpnext/erpnext/controllers/accounts_controller.py +88,Due Date is mandatory,FÀlligkeitsdatum ist obligatorisch apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +142,Sintering,Sinter DocType: Journal Entry,Pay To / Recd From,Zahlen an/ZurÃŒcktreten von @@ -3023,7 +3023,7 @@ apps/erpnext/erpnext/accounts/report/purchase_register/purchase_register.py +16, apps/erpnext/erpnext/controllers/stock_controller.py +176,{0} {1}: Cost Center is mandatory for Item {2},{0} {1}: Kostenstelle ist obligatorisch fÃŒr Artikel {2} apps/erpnext/erpnext/accounts/doctype/gl_entry/gl_entry.py +76,Account {0} is inactive,Konto {0} ist inaktiv DocType: GL Entry,Is Advance,Ist Voraus -apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.js +21,Attendance From Date and Attendance To Date is mandatory,Die Teilnahme von Datum bis Datum und Teilnahme ist obligatorisch +apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.js +21,Attendance From Date and Attendance To Date is mandatory,Anwesenheit ab Datum und Anwesenheit bis Datum sind zwingend apps/erpnext/erpnext/controllers/buying_controller.py +131,Please enter 'Is Subcontracted' as Yes or No,"Bitte geben Sie Untervergabe"""" als Ja oder Nein ein""" DocType: Sales Team,Contact No.,Kontakt Nr. apps/erpnext/erpnext/accounts/doctype/gl_entry/gl_entry.py +64,'Profit and Loss' type account {0} not allowed in Opening Entry,"""Gewinn und Verlust"" Konto {0} kann nicht im Eröffnungseintrag sein" @@ -3142,7 +3142,7 @@ DocType: Purchase Order Item,Supplier Quotation,Lieferantenangebot DocType: Quotation,In Words will be visible once you save the Quotation.,"In Worten wird sichtbar, sobald Sie den Kostenvoranschlag speichern." apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +67,Ironing,BÃŒgeln apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +235,{0} {1} is stopped,{0} {1} ist beendet -apps/erpnext/erpnext/stock/doctype/item/item.py +204,Barcode {0} already used in Item {1},Barcode {0} wird bereits in Artikel {1} verwendet +apps/erpnext/erpnext/stock/doctype/item/item.py +204,Barcode {0} already used in Item {1},Barcode {0} wird bereits fÃŒr Artikel {1} verwendet DocType: Lead,Add to calendar on this date,An diesem Tag zum Kalender hinzufÃŒgen apps/erpnext/erpnext/config/selling.py +132,Rules for adding shipping costs.,Regeln fÃŒr das HinzufÃŒgen von Versandkosten. apps/erpnext/erpnext/support/doctype/warranty_claim/warranty_claim.py +20,Customer is required,"Kunde ist verpflichtet," @@ -3155,7 +3155,7 @@ DocType: Email Digest,Income / Expense,Einnahmen/Ausgaben DocType: Employee,Personal Email,Persönliche E-Mail apps/erpnext/erpnext/selling/report/territory_target_variance_item_group_wise/territory_target_variance_item_group_wise.py +58,Total Variance,Gesamtvarianz DocType: Accounts Settings,"If enabled, the system will post accounting entries for inventory automatically.","Wenn aktiviert, veröffentlicht das System BestandsbuchungseintrÀge automatisch." -apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +14,Brokerage,Provision +apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +14,Brokerage,Maklerprovision DocType: Production Order Operation,"in Minutes Updated via 'Time Log'","in Minuten ÃŒber 'Time Log' aktualisiert" @@ -3166,7 +3166,7 @@ apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +387,POS Pr DocType: Hub Settings,Name Token,Name Token apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +105,Planing,Hobeln apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.py +166,Standard Selling,Standard-Vertrieb -apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +138,Atleast one warehouse is mandatory,Mindestens ein Warenlager ist obligatorisch +apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +138,Atleast one warehouse is mandatory,Mindestens ein Warenlager ist zwingend DocType: Serial No,Out of Warranty,Außerhalb der Garantie DocType: BOM Replace Tool,Replace,Ersetzen apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +280,{0} against Sales Invoice {1},{0} gegen Sales Invoice {1} @@ -3180,7 +3180,7 @@ DocType: Stock Ledger Entry,Stock Value Difference,Wertdifferenz Bestand apps/erpnext/erpnext/config/learn.py +165,Human Resource,Personal DocType: Payment Reconciliation Payment,Payment Reconciliation Payment,Payment Zahlungs Versöhnung apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +36,Tax Assets,SteueransprÃŒche -DocType: BOM Item,BOM No,StÃŒcklistennr. +DocType: BOM Item,BOM No,StÃŒcklisten-Nr. DocType: Contact Us Settings,Pincode,Pincode apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +146,Journal Entry {0} does not have account {1} or already matched against other voucher,Journal Entry {0} nicht Konto {1} oder bereits gegen andere Gutschein abgestimmt DocType: Item,Moving Average,Gleitender Mittelwert @@ -3241,7 +3241,7 @@ DocType: Opportunity,Opportunity Date,Datum der Gelegenheit DocType: Purchase Receipt,Return Against Purchase Receipt,RÃŒckspiel gegen Kaufbeleg apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order_list.js +16,To Bill,Bill apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +61,Piecework,Akkordarbeit -apps/erpnext/erpnext/accounts/report/gross_profit/gross_profit.py +64,Avg. Buying Rate,Rel. Buying Rate +apps/erpnext/erpnext/accounts/report/gross_profit/gross_profit.py +64,Avg. Buying Rate,Durchschnittlicher Einkaufspreis DocType: Task,Actual Time (in Hours),TatsÀchliche Zeit (in Stunden) DocType: Employee,History In Company,Historie im Unternehmen DocType: Address,Shipping,Versand @@ -3301,7 +3301,7 @@ apps/erpnext/erpnext/utilities/doctype/address_template/address_template.py +15, apps/erpnext/erpnext/accounts/doctype/account/account.py +71,"Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'","Konto bereits im Soll, es ist nicht mehr möglich das Konto als Habenkonto festzulegen" apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +76,Quality Management,QualitÀtsmanagement DocType: Production Planning Tool,Filter based on customer,Filtern nach Kunden -DocType: Payment Tool Detail,Against Voucher No,Vor Gutschein Nein +DocType: Payment Tool Detail,Against Voucher No,Gegen Beleg Nr. apps/erpnext/erpnext/buying/doctype/purchase_common/purchase_common.py +45,Please enter quantity for Item {0},Bitte geben Sie Menge fÃŒr Artikel {0} apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +35,Warning: Sales Order {0} already exists against same Purchase Order number,Warnung: Kundenauftrag {0} existiert bereits fÃŒr die gleiche Lieferatenauftragsnummer DocType: Employee External Work History,Employee External Work History,Mitarbeiter externe Berufserfahrung @@ -3321,7 +3321,7 @@ DocType: Employee,Notice (days),Kenntnis (Tage) DocType: Page,Yes,Ja DocType: Employee,Encashment Date,Inkassodatum apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +73,Electroforming,Galvanotechnik -apps/erpnext/erpnext/accounts/doctype/payment_tool/payment_tool.js +148,"Against Voucher Type must be one of Purchase Order, Purchase Invoice or Journal Entry","Vor Gutschein Typ muss einer Bestellung, Einkaufsrechnung oder einen Journaleintrag sein" +apps/erpnext/erpnext/accounts/doctype/payment_tool/payment_tool.js +148,"Against Voucher Type must be one of Purchase Order, Purchase Invoice or Journal Entry","Gegen Belegart muss entweder eine Bestellung, eine Einkaufsrechnung oder ein Journaleintrag sein" DocType: Account,Stock Adjustment,Auf Einstellung apps/erpnext/erpnext/projects/doctype/activity_cost/activity_cost.py +34,Default Activity Cost exists for Activity Type - {0},Default Activity Cost besteht fÃŒr Leistungsart - {0} DocType: Production Order,Planned Operating Cost,Geplante Betriebskosten @@ -3335,7 +3335,7 @@ The package **Item** will have ""Is Stock Item"" as ""No"" and ""Is Sales Item"" For Example: If you are selling Laptops and Backpacks separately and have a special price if the customer buys both, then the Laptop + Backpack will be a new Product Bundle Item. -Note: BOM = Bill of Materials","Aggregate Gruppe von ** ** Objekte in einen anderen Artikel ** **. Dies ist nÃŒtzlich, wenn Sie eine gewisse BÃŒndelung ** ** Artikel in ein Paket und Sie Lager der verpackten GegenstÀnde ** ** und nicht den Gesamt ** Einzelteil zu erhalten **. Das Paket ** ** Artikel wird ", ist Stock Item" als "No" und "Ist Verkaufsartikel", wie "Ja". Zum Beispiel: Wenn Sie den Verkauf Laptops und RucksÀcke getrennt und haben einen Sonderpreis, wenn der Kunde kauft beide, dann der Laptop-Rucksack + wird eine neue Produkt Bundle Titel. Hinweis: BOM = Bill of Materials" +Note: BOM = Bill of Materials","Fassen Sie eine Gruppe von Artikeln zu einem neuen Artikel zusammen. Dies ist nÃŒtzlich, wenn Sie bestimmte Artikel zu einem Paket bÃŒndeln und einen Bestand an Artikel-BÃŒndeln erhalten und nicht einen Bestand der einzelnen Artikel. Das Artikel-BÃŒndel erhÀlt fÃŒr das Attribut ""Ist Lagerartikel"" den Wert ""Nein"" und fÃŒr das Attribut ""Ist Verkaufsartikel"" den Wert ""Ja"". Beispiel: Wenn Sie Laptops und Tragetaschen getrennt verkaufen und einen bestimmten Preis anbieten, wenn der Kunde beides zusammen kauft, dann wird der Laptop mit der Tasche zusammen ein neuer BÃŒndel-Artikel. Anmerkung: BOM = StÃŒckliste" apps/erpnext/erpnext/selling/doctype/installation_note/installation_note.py +44,Serial No is mandatory for Item {0},Seriennummer ist fÃŒr Artikel {0} obligatorisch. DocType: Variant Attribute,Attribute,Attribut sites/assets/js/desk.min.js +622,Created By,Erstellt von @@ -3384,7 +3384,7 @@ DocType: Employee,"Here you can maintain height, weight, allergies, medical conc DocType: Leave Block List,Applies to Company,Gilt fÃŒr Unternehmen apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +161,Cannot cancel because submitted Stock Entry {0} exists,"Kann nicht kÃŒndigen, weil eingereichten Lizenz Eintrag {0} existiert" DocType: Purchase Invoice,In Words,In Worten -apps/erpnext/erpnext/hr/doctype/employee/employee.py +208,Today is {0}'s birthday!,Heute ist {0} Geburtstag! +apps/erpnext/erpnext/hr/doctype/employee/employee.py +208,Today is {0}'s birthday!,Heute hat {0} Geburtstag! DocType: Production Planning Tool,Material Request For Warehouse,Materialanforderung fÃŒr Warenlager DocType: Sales Order Item,For Production,FÃŒr Produktion apps/erpnext/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py +99,Please enter sales order in the above table,Bitte geben Sie den Kundenauftrag in der obigen Tabelle an @@ -3398,7 +3398,7 @@ apps/erpnext/erpnext/accounts/doctype/fiscal_year/fiscal_year.js +19,"To set thi apps/erpnext/erpnext/config/support.py +54,Setup incoming server for support email id. (e.g. support@example.com),Posteingangsserver fÃŒr die Support E-Mail-Adresse einrichten. (z.B. support@example.com) apps/erpnext/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py +35,Shortage Qty,Mangel Menge DocType: Salary Slip,Salary Slip,Gehaltsabrechnung -apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +115,Burnishing,BrÃŒnieren +apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +115,Burnishing,Polieren DocType: Features Setup,To enable Point of Sale view,Um Point of Sale Ansicht aktivieren apps/erpnext/erpnext/stock/report/stock_balance/stock_balance.py +54,'To Date' is required,"""bis Datum"" ist erforderlich," DocType: Packing Slip,"Generate packing slips for packages to be delivered. Used to notify package number, package contents and its weight.","Packzettel fÃŒr zu liefernde Pakete generieren. Wird verwendet, um Paketnummer, Packungsinhalt und das Gewicht zu dokumentieren." @@ -3434,7 +3434,7 @@ DocType: Workflow State,Primary,PrimÀr DocType: Expense Claim Detail,Expense Date,Datum der Aufwendung DocType: Item,Max Discount (%),Maximaler Rabatt (%) apps/erpnext/erpnext/selling/report/customers_not_buying_since_long_time/customers_not_buying_since_long_time.py +70,Last Order Amount,Letzter Bestellbetrag -apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +160,Blasting,Sprengung +apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +160,Blasting,Abstrahlen DocType: Company,Warn,Warnen apps/erpnext/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py +82,Item valuation updated,Artikel- Bewertung aktualisiert DocType: Appraisal,"Any other remarks, noteworthy effort that should go in the records.","Sonstige Anmerkungen, bemerkenswert, Anstrengungen, die in den DatensÀtzen gehen sollten." @@ -3448,7 +3448,7 @@ apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +28,Expected Del DocType: Appraisal,Appraisal Template,Bewertungsvorlage DocType: Communication,Email,E-Mail DocType: Item Group,Item Classification,Artikelklassifizierung -apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +89,Business Development Manager,Business Development Manager +apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +89,Business Development Manager,Leiter der kaufmÀnnischen Abteilung DocType: Maintenance Visit Purpose,Maintenance Visit Purpose,Wartungsbesuch Zweck apps/erpnext/erpnext/accounts/report/budget_variance_report/budget_variance_report.js +15,Period,Zeit ,General Ledger,Hauptbuch @@ -3459,7 +3459,7 @@ apps/erpnext/erpnext/crm/doctype/lead/lead.py +65,"Email id must be unique, alre apps/erpnext/erpnext/accounts/doctype/payment_tool/payment_tool.js +217,Please select {0} first,Bitte wÀhlen Sie {0} zuerst DocType: Features Setup,To get Item Group in details table,So rufen sie eine Artikelgruppe in die Detailtabelle ab apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +66,Redrawing,Neuzeichnen -apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +111,Batch {0} of Item {1} has expired.,Batch {0} von {1} Artikel ist abgelaufen. +apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +111,Batch {0} of Item {1} has expired.,BÃŒndelung {0} von Artikel {1} ist abgelaufen. apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +119,Etching,Ätzen apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +60,Commission,Provision DocType: Address Template,"

Default Template

@@ -3499,7 +3499,7 @@ DocType: HR Settings,Payroll Settings,Payroll -Einstellungen apps/erpnext/erpnext/config/accounts.py +58,Match non-linked Invoices and Payments.,Zuordnung nicht verknÃŒpfter Rechnungen und Zahlungen. DocType: Email Digest,New Purchase Orders,Neue LieferatenauftrÀge apps/erpnext/erpnext/accounts/doctype/cost_center/cost_center.py +25,Root cannot have a parent cost center,Stamm darf keine ÃŒbergeordnete Kostenstelle haben -DocType: Sales Invoice,C-Form Applicable,C-Formular Anwendbar +DocType: Sales Invoice,C-Form Applicable,C-Formular geeignet DocType: UOM Conversion Detail,UOM Conversion Detail,ME-Umrechnung Detail apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +496,Keep it web friendly 900px (w) by 100px (h),halten Sie es Webfreundlich - 900px (breit) bei 100px (hoch) apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +329,Production Order cannot be raised against a Item Template,Fertigungsauftrag kann nicht gegen eine Artikel-Vorlage angehoben werden @@ -3508,14 +3508,14 @@ DocType: Payment Tool,Get Outstanding Vouchers,Get Hervorragende Gutscheine DocType: Warranty Claim,Resolved By,Gelöst von DocType: Appraisal,Start Date,Startdatum sites/assets/js/desk.min.js +598,Value,Wert -apps/erpnext/erpnext/config/hr.py +130,Allocate leaves for a period.,Jahresurlaube fÃŒr einen Zeitraum. +apps/erpnext/erpnext/config/hr.py +130,Allocate leaves for a period.,Urlaube fÃŒr einen Zeitraum zuordnen. apps/erpnext/erpnext/crm/doctype/newsletter/newsletter.py +138,Click here to verify,"Klicken Sie hier um zu ÃŒberprÃŒfen," apps/erpnext/erpnext/accounts/doctype/account/account.py +39,Account {0}: You can not assign itself as parent account,Konto {0}: Sie können dieses Konto sich selbst nicht als Eltern-Konto zuweisen DocType: Purchase Invoice Item,Price List Rate,Preislistenrate apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +166,Delivered Serial No {0} cannot be deleted,Geliefert Seriennummer {0} kann nicht gelöscht werden DocType: Item,"Show ""In Stock"" or ""Not in Stock"" based on stock available in this warehouse.","Details zu ""Auf Lager"" oder ""Nicht auf Lager"" entsprechend des in diesem Warenlager verfÃŒgbaren Bestands anzeigen." apps/erpnext/erpnext/config/manufacturing.py +13,Bill of Materials (BOM),StÃŒckliste (SL) -DocType: Item,Average time taken by the supplier to deliver,"Durchschnittliche Zeit von dem Lieferanten getroffen werden, um zu liefern" +DocType: Item,Average time taken by the supplier to deliver,Durchschnittliche Lieferzeit des Lieferanten DocType: Time Log,Hours,Stunden DocType: Project,Expected Start Date,Voraussichtliches Startdatum apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +37,Rolling,Rollend @@ -3523,7 +3523,7 @@ DocType: ToDo,Priority,PrioritÀt apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +168,"Cannot delete Serial No {0} in stock. First remove from stock, then delete.","Kann Seriennummer {0} in Lager nicht löschen. Zuerst aus dem Lager entfernen, dann löschen." apps/erpnext/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.js +41,Remove item if charges is not applicable to that item,"Artikel entfernen, wenn keine GebÃŒhren angerechtet werden können" DocType: Backup Manager,Dropbox Access Allowed,Dropbox-Zugang erlaubt -DocType: Backup Manager,Weekly,Wöchentlich +DocType: Backup Manager,Weekly,wöchentlich DocType: SMS Settings,Eg. smsgateway.com/api/send_sms.cgi,z. B. smsgateway.com/api/send_sms.cgi DocType: Maintenance Visit,Fully Completed,VollstÀndig abgeschlossen apps/erpnext/erpnext/projects/doctype/project/project_list.js +6,{0}% Complete,{0}% abgeschlossen @@ -3557,13 +3557,13 @@ apps/erpnext/erpnext/templates/includes/cart.js +265,Something went wrong!,Etwas apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +68,Warning: Leave application contains following block dates,Achtung: Die Urlaubsanwendung enthÀlt die folgenden gesperrten Daten apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.py +223,Sales Invoice {0} has already been submitted,Ausgangsrechnung {0} wurde bereits eingereicht apps/erpnext/erpnext/projects/report/project_wise_stock_tracking/project_wise_stock_tracking.py +30,Completion Date,Abschlussdatum -DocType: Purchase Invoice Item,Amount (Company Currency),Betrag (UnternehmenswÀhrung) +DocType: Purchase Invoice Item,Amount (Company Currency),Betrag (in UnternehmenswÀhrung) apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +9,Die casting,Druckguss DocType: Email Alert,Reference Date,Referenzdatum apps/erpnext/erpnext/config/hr.py +105,Organization unit (department) master.,Firmeneinheit (Abteilung) Vorlage. apps/erpnext/erpnext/setup/doctype/sms_settings/sms_settings.py +25,Please enter valid mobile nos,Bitte geben Sie eine gÃŒltige Mobil nos DocType: Email Digest,User Specific,Benutzerspezifisch -DocType: Budget Detail,Budget Detail,Budgetdetail +DocType: Budget Detail,Budget Detail,Budget-Detail apps/erpnext/erpnext/selling/doctype/sms_center/sms_center.py +75,Please enter message before sending,Bitte geben Sie eine Nachricht vor dem Versenden ein DocType: Communication,Status,Status apps/erpnext/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py +36,Stock UOM updated for Item {0},Auf ME zum Artikel aktualisiert {0} @@ -3603,13 +3603,13 @@ apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py +62,Item: {0} does not exi apps/erpnext/erpnext/accounts/doctype/account/account.py +63,You are not authorized to set Frozen value,Sie haben keine Berechtigung eingefrorene Werte zu setzen DocType: Payment Reconciliation,Get Unreconciled Entries,Holen Nicht abgestimmte EintrÀge DocType: Purchase Receipt,Date on which lorry started from supplier warehouse,Abfahrtdatum des LKW aus dem Lieferantenlager -DocType: Cost Center,Budgets,Haushalte +DocType: Cost Center,Budgets,Budgets apps/frappe/frappe/core/page/modules_setup/modules_setup.py +11,Updated,Aktualisiert DocType: Employee,Emergency Contact Details,Notfallkontaktdaten apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +396,What does it do?,Unternehmenszweck? DocType: Delivery Note,To Warehouse,An Warenlager apps/erpnext/erpnext/accounts/doctype/cost_center/cost_center.py +45,Account {0} has been entered more than once for fiscal year {1},Konto {0} wurde mehr als einmal fÃŒr das GeschÀftsjahr {1} erfasst -,Average Commission Rate,Durchschnittliche Kommission bewerten +,Average Commission Rate,Durchschnittlicher Provisionssatz apps/erpnext/erpnext/stock/doctype/item/item.py +165,'Has Serial No' can not be 'Yes' for non-stock item,"""hat Seriennummer"" kann nicht ""Ja"" sein bei Nicht-Lagerartikeln" apps/erpnext/erpnext/hr/doctype/attendance/attendance.py +34,Attendance can not be marked for future dates,Die Teilnahme kann nicht fÃŒr zukÃŒnftige Termine markiert werden DocType: Pricing Rule,Pricing Rule Help,Pricing Rule Hilfe @@ -3623,7 +3623,7 @@ apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +71,Peening, apps/erpnext/erpnext/support/doctype/maintenance_visit/maintenance_visit.js +30,From Warranty Claim,Von der Garantieantrags DocType: Stock Entry,Default Source Warehouse,Standard-Ursprungswarenlager DocType: Item,Customer Code,Kunden-Nr. -apps/erpnext/erpnext/hr/doctype/employee/employee.py +207,Birthday Reminder for {0},Birthday Reminder fÃŒr {0} +apps/erpnext/erpnext/hr/doctype/employee/employee.py +207,Birthday Reminder for {0},Geburtstagserinnerung fÃŒr {0} apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +162,Lapping,PlÀtschern apps/erpnext/erpnext/selling/report/customers_not_buying_since_long_time/customers_not_buying_since_long_time.js +8,Days Since Last Order,Tage seit dem letzten Auftrag DocType: Buying Settings,Naming Series,Benennungsreihenfolge @@ -3643,7 +3643,7 @@ DocType: Stock Settings,Stock Frozen Upto,Bestand eingefroren bis apps/erpnext/erpnext/config/projects.py +13,Project activity / task.,ProjektaktivitÀt/Aufgabe apps/erpnext/erpnext/config/hr.py +65,Generate Salary Slips,Gehaltsabrechnungen generieren apps/frappe/frappe/utils/__init__.py +87,{0} is not a valid email id,{0} ist keine gÃŒltige E-Mail -ID -apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +41,"Buying must be checked, if Applicable For is selected as {0}","Kaufen Sie muss ÃŒberprÃŒft werden, wenn Anwendbar ist als ausgewÀhlt {0}" +apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +41,"Buying must be checked, if Applicable For is selected as {0}","Einkauf muss ÃŒberprÃŒft werden, wenn Anwendbar auf auf {0} gesetzt wurde" apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +40,Discount must be less than 100,Discount muss kleiner als 100 sein DocType: ToDo,Low,Niedrig apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +70,Spinning,Spinnen @@ -3675,8 +3675,8 @@ DocType: Item,"Example: ABCD.##### If series is set and Serial No is not mentioned in transactions, then automatic serial number will be created based on this series. If you always want to explicitly mention Serial Nos for this item. leave this blank.","Beispiel:. ABCD ##### Wenn Serie eingestellt und Seriennummer wird nicht in GeschÀften erwÀhnt, dann automatische Seriennummer wird auf der Grundlage dieser Serie erstellt werden. Wenn Sie wollen immer ausdrÃŒcklich erwÀhnt, mit den Seriennummern zu diesem Artikel. lassen Sie dieses Feld leer." DocType: Upload Attendance,Upload Attendance,Teilnahme hochladen -apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +107,BOM and Manufacturing Quantity are required,StÃŒckliste und Fertigungsmenge benötigt werden -apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js +44,Ageing Range 2,Ageing Bereich 2 +apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.js +107,BOM and Manufacturing Quantity are required,StÃŒckliste und Fertigungsmenge werden benötigt +apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js +44,Ageing Range 2,Alterung Bereich 2 DocType: Journal Entry Account,Amount,Betrag apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +146,Riveting,Nieten apps/erpnext/erpnext/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py +21,BOM replaced,StÃŒckliste ersetzt @@ -3782,10 +3782,10 @@ DocType: Landed Cost Item,Landed Cost Item,Einstandspreis Artikel apps/erpnext/erpnext/accounts/report/trial_balance/trial_balance.js +56,Show zero values,Nullwerte anzeigen DocType: BOM,Quantity of item obtained after manufacturing / repacking from given quantities of raw materials,Menge eines Artikels nach der Herstellung / Menge durch Umpacken von bestimmten Mengen an Rohstoffen DocType: Payment Reconciliation,Receivable / Payable Account,Forderungen / Verbindlichkeiten Konto -DocType: Delivery Note Item,Against Sales Order Item,Vor Kundenauftragsposition +DocType: Delivery Note Item,Against Sales Order Item,Gegen Kundenauftrags-Position DocType: Item,Default Warehouse,Standardwarenlager DocType: Task,Actual End Date (via Time Logs),TatsÀchliches Enddatum (ÃŒber Zeitprotokoll) -apps/erpnext/erpnext/accounts/doctype/cost_center/cost_center.py +37,Budget cannot be assigned against Group Account {0},Budget kann nicht gegen Group Account zugeordnet werden {0} +apps/erpnext/erpnext/accounts/doctype/cost_center/cost_center.py +37,Budget cannot be assigned against Group Account {0},Budget kann nicht gegen das Gruppenkonto {0} zugeordnet werden apps/erpnext/erpnext/accounts/doctype/cost_center/cost_center.py +23,Please enter parent cost center,Bitte geben Sie Mutterkostenstelle DocType: Delivery Note,Print Without Amount,Drucken ohne Betrag apps/erpnext/erpnext/controllers/buying_controller.py +69,Tax Category can not be 'Valuation' or 'Valuation and Total' as all items are non-stock items,"Steuerkategorie kann nicht ""Verbindlichkeit"" oder ""Verbindlichkeit und Summe"", da alle Artikel keine Lagerartikel sind" @@ -3796,11 +3796,11 @@ DocType: Communication,Support Team,Support-Team DocType: Appraisal,Total Score (Out of 5),Gesamtwertung (von 5) DocType: Contact Us Settings,State,Land DocType: Batch,Batch,Stapel -apps/erpnext/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py +53,Balance,Balance +apps/erpnext/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py +53,Balance,Saldo DocType: Project,Total Expense Claim (via Expense Claims),Total Expense Anspruch (ÃŒber Spesenabrechnungen) DocType: User,Gender,Geschlecht DocType: Journal Entry,Debit Note,Lastschrift -DocType: Stock Entry,As per Stock UOM,Wie pro Lager-ME +DocType: Stock Entry,As per Stock UOM,GemÀß Lager-Maßeinheit apps/erpnext/erpnext/stock/doctype/batch/batch_list.js +7,Not Expired,", Nicht abgelaufen ist" DocType: Journal Entry,Total Debit,Gesamtschuld apps/erpnext/erpnext/accounts/report/gross_profit/gross_profit.py +70,Sales Person,VerkÀufer @@ -3859,7 +3859,7 @@ DocType: Expense Claim,Approved,Genehmigt DocType: Pricing Rule,Price,Preis apps/erpnext/erpnext/hr/doctype/salary_slip/salary_slip.py +79,Employee relieved on {0} must be set as 'Left',"freigestellter Angestellter {0} muss als ""entlassen"" eingestellt werden" DocType: Item,"Selecting ""Yes"" will give a unique identity to each entity of this item which can be viewed in the Serial No master.","Wenn Sie „Ja“ auswÀhlen, wird jeder Einheit dieses Artikels eine eindeutige IdentitÀt zugeteilt, die im Seriennummernstamm angezeigt werden kann." -apps/erpnext/erpnext/hr/doctype/appraisal/appraisal.py +39,Appraisal {0} created for Employee {1} in the given date range,Bewertung {0} fÃŒr Mitarbeiter erstellt {1} in der angegebenen Datumsbereich +apps/erpnext/erpnext/hr/doctype/appraisal/appraisal.py +39,Appraisal {0} created for Employee {1} in the given date range,Bewertung {0} fÃŒr Mitarbeiter {1} im angegebenen Datumsbereich erstellt DocType: Employee,Education,Bildung DocType: Selling Settings,Campaign Naming By,Kampagne benannt durch DocType: Employee,Current Address Is,Aktuelle Adresse @@ -3903,7 +3903,7 @@ DocType: BOM,With Operations,Mit VorgÀngen ,Monthly Salary Register,Monatsgehalt Register apps/frappe/frappe/website/template.py +120,Next,weiter DocType: Warranty Claim,If different than customer address,Wenn anders als Kundenadresse -DocType: BOM Operation,BOM Operation,StÃŒcklistenvorgang +DocType: BOM Operation,BOM Operation,StÃŒcklisten-Vorgang apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +117,Electropolishing,Elektropolieren DocType: Purchase Taxes and Charges,On Previous Row Amount,Auf vorherigen Zeilenbetrag DocType: Email Digest,New Delivery Notes,Neue Lieferscheine @@ -3945,8 +3945,8 @@ DocType: Customer,Commission Rate,Provisionssatz apps/erpnext/erpnext/config/hr.py +145,Block leave applications by department.,UrlaubsantrÀge pro Abteilung sperren. DocType: Production Order,Actual Operating Cost,Die tatsÀchlichen Betriebskosten apps/erpnext/erpnext/accounts/doctype/account/account.py +55,Root cannot be edited.,Haupt-Konto kann nicht bearbeitet werden. -apps/erpnext/erpnext/accounts/utils.py +188,Allocated amount can not greater than unadusted amount,GeschÀtzter Betrag kann nicht größer als unadusted Menge -DocType: Manufacturing Settings,Allow Production on Holidays,Arbeiten/Produktion auf Reisen zulassen +apps/erpnext/erpnext/accounts/utils.py +188,Allocated amount can not greater than unadusted amount,Zugewiesene Menge kann nicht größer sein als unbereinigte Menge +DocType: Manufacturing Settings,Allow Production on Holidays,Fertigung im Urlaub zulassen DocType: Sales Order,Customer's Purchase Order Date,Kundenauftrag apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +183,Capital Stock,Gezeichnetes Kapital DocType: Packing Slip,Package Weight Details,Details Paketgewicht @@ -3957,7 +3957,7 @@ apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +94,Designer,Ko apps/erpnext/erpnext/config/selling.py +121,Terms and Conditions Template,Allgemeine GeschÀftsbedingungen Vorlage DocType: Serial No,Delivery Details,Lieferdetails apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +363,Cost Center is required in row {0} in Taxes table for type {1},Kostenstelle wird in der Zeile erforderlich {0} in Tabelle Steuern fÃŒr Typ {1} -DocType: Item,Automatically create Material Request if quantity falls below this level,"Erstellen Sie automatisch Werkstoff anfordern, wenn QuantitÀt unter diesen Wert fÀllt" +DocType: Item,Automatically create Material Request if quantity falls below this level,"Automatisch Materialanforderung erstellen, wenn die Menge unter diesen Wert fÀllt" ,Item-wise Purchase Register,Artikelweises Einkaufsregister DocType: Batch,Expiry Date,Verfalldatum ,Supplier Addresses and Contacts,Lieferant Adressen und Kontakte diff --git a/erpnext/translations/fa.csv b/erpnext/translations/fa.csv index 73ba369ee89..c49b7e9a568 100644 --- a/erpnext/translations/fa.csv +++ b/erpnext/translations/fa.csv @@ -409,7 +409,7 @@ apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +61,Enter DocType: Accounts Settings,Check Supplier Invoice Number Uniqueness,ؚررسی تولید کننده فاکتور ؎ماره منحصر ØšÙ‡ فرد apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +30,Thermoforming,ترمو apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +65,Slitting,اتاق های ؚر؎ -apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.js +57,'To Case No.' cannot be less than 'From Case No.','ØšÙ‡ ٟرونده ؎ماره' نمی تواند کمتر از 'از ؎ماره مورد' +apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.js +57,'To Case No.' cannot be less than 'From Case No.','ØšÙ‡ ؎ماره ٟرونده' نمی تواند کمتر از 'از ؎ماره ٟرونده' ؚا؎د apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +104,Non Profit,غیر انتفاعی apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order_list.js +7,Not Started,؎روع ن؎ده DocType: Lead,Channel Partner,کانال ؎ریک @@ -2695,7 +2695,7 @@ DocType: Hub Settings,Publish Availability,در دسترس انت؎ار apps/erpnext/erpnext/hr/doctype/employee/employee.py +105,Date of Birth cannot be greater than today.,تاریخ تولد نمی تواند ؚی؎تر از امروز. ,Stock Ageing,سهام سالمندی DocType: Purchase Receipt,Automatically updated from BOM table,ØšÙ‡ صورت خودکار از جدول BOM ØšÙ‡ روز ؎ده -apps/erpnext/erpnext/controllers/accounts_controller.py +184,{0} '{1}' is disabled,{0} '{1}' غیر فعال است +apps/erpnext/erpnext/controllers/accounts_controller.py +184,{0} '{1}' is disabled,{0} '{1}' غیر فعال است apps/erpnext/erpnext/crm/doctype/opportunity/opportunity_list.js +13,Set as Open,تن؞یم ØšÙ‡ عنوان گستر؎ DocType: Notification Control,Send automatic emails to Contacts on Submitting transactions.,ارسال ایمیل خودکار ØšÙ‡ تماس در معاملات ارا؊ه. apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +270,"Row {0}: Qty not avalable in warehouse {1} on {2} {3}. @@ -2961,7 +2961,7 @@ DocType: GL Entry,Is Advance,آیا ٟی؎رفته apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.js +21,Attendance From Date and Attendance To Date is mandatory,حضور و غیاؚ حضور و غیاؚ از تاریخ و ØšÙ‡ روز الزامی است apps/erpnext/erpnext/controllers/buying_controller.py +131,Please enter 'Is Subcontracted' as Yes or No,لطفا وارد است واگذار ؎ده ØšÙ‡ عنوان ؚله یا نه DocType: Sales Team,Contact No.,تماس ؚا ؎ماره -apps/erpnext/erpnext/accounts/doctype/gl_entry/gl_entry.py +64,'Profit and Loss' type account {0} not allowed in Opening Entry,'سود و زیان "نوع حساؚ {0} در افتتاحیه ورودی مجاز نیست +apps/erpnext/erpnext/accounts/doctype/gl_entry/gl_entry.py +64,'Profit and Loss' type account {0} not allowed in Opening Entry,'سود و زیان' نوع حساؚ {0} در افتتاح ورودی مجاز نیست DocType: Workflow State,Time,زمان DocType: Features Setup,Sales Discounts,تخفیف فرو؎ DocType: Hub Settings,Seller Country,فرو؎نده ک؎ور @@ -3334,7 +3334,7 @@ apps/erpnext/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py +35 DocType: Salary Slip,Salary Slip,لغز؎ حقوق و دستمزد apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +115,Burnishing,Ú†Ú©ØŽ DocType: Features Setup,To enable Point of Sale view,ؚرای فعال کردن نقطه ن؞ر فرو؎ -apps/erpnext/erpnext/stock/report/stock_balance/stock_balance.py +54,'To Date' is required,'تا روز' مورد نیاز است +apps/erpnext/erpnext/stock/report/stock_balance/stock_balance.py +54,'To Date' is required,'تا تاریخ' مورد نیاز است DocType: Packing Slip,"Generate packing slips for packages to be delivered. Used to notify package number, package contents and its weight.",تولید ؚسته ؚندی ورقه ؚرای ؚسته تحویل داده می ؎ود. مورد استفاده ØšÙ‡ اطلاع تعداد ؚسته، محتویات ؚسته و وزن آن است. DocType: Sales Invoice Item,Sales Order Item,سفار؎ فرو؎ مورد DocType: Salary Slip,Payment Days,روز ٟرداخت @@ -3680,7 +3680,7 @@ DocType: DocPerm,Level,سطح DocType: Purchase Taxes and Charges,On Net Total,در مجموع خالص apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +161,Target warehouse in row {0} must be same as Production Order,انؚار هدف در ردیف {0} ؚاید ØšÙ‡ همان ترتیؚ تولید می ؎ود apps/erpnext/erpnext/accounts/doctype/payment_tool/payment_tool.py +61,No permission to use Payment Tool,ؚدون اجازه ØšÙ‡ استفاده از اؚزار ٟرداخت -apps/erpnext/erpnext/controllers/recurring_document.py +193,'Notification Email Addresses' not specified for recurring %s,'ه؎دار از طریق آدرس ایمیل ؚرای دوره ای در محدوده٪ s را م؎خص ن؎ده +apps/erpnext/erpnext/controllers/recurring_document.py +193,'Notification Email Addresses' not specified for recurring %s,'ه؎دار از طریق آدرس ایمیل' ؚرای دوره ی زمانی محدود %s م؎خص ن؎ده است apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +85,Milling,فرز DocType: Company,Round Off Account,دور کردن حساؚ apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +59,Nibbling,ٟر وعده diff --git a/erpnext/translations/fr.csv b/erpnext/translations/fr.csv index 979a90dcf1c..385e4347e3d 100644 --- a/erpnext/translations/fr.csv +++ b/erpnext/translations/fr.csv @@ -75,7 +75,7 @@ DocType: Company,Abbr,Abréviation DocType: Appraisal Goal,Score (0-5),Score (0-5) apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +204,Row {0}: {1} {2} does not match with {3},Rangée {0}: {1} {2} ne correspond pas à {3} apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +67,Row # {0}:,Row # {0}: -DocType: Delivery Note,Vehicle No,Aucun véhicule +DocType: Delivery Note,Vehicle No,No du véhicule sites/assets/js/erpnext.min.js +53,Please select Price List,S'il vous plaît sélectionnez Liste des Prix apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +161,Woodworking,Travail du bois DocType: Production Order Operation,Work In Progress,Work In Progress @@ -309,7 +309,7 @@ apps/erpnext/erpnext/selling/doctype/quotation/quotation.py +32,Item {0} must be apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +303,Completed Qty can not be greater than 'Qty to Manufacture',Terminé Quantité ne peut pas être supérieure à «Quantité de Fabrication ' DocType: DocType,Administrator,Administrateur apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +135,Laser drilling,perçage laser -DocType: Stock UOM Replace Utility,New Stock UOM,Bourse de New UDM +DocType: Stock UOM Replace Utility,New Stock UOM,Nouveau stock UDM DocType: Period Closing Voucher,Closing Account Head,Fermeture chef Compte DocType: Shopping Cart Settings,"Add / Edit"," Ajouter / Modifier < / a>" DocType: Employee,External Work History,Histoire de travail externe @@ -473,7 +473,7 @@ DocType: Backup Manager,Google Drive Access Allowed,Google Drive accÚs autoris ,Serial No Warranty Expiry,N ° de série expiration de garantie apps/erpnext/erpnext/stock/doctype/material_request/material_request.js +635,Do you really want to STOP this Material Request?,Voulez-vous vraiment arrêter cette Demande de Matériel ? apps/erpnext/erpnext/selling/doctype/sales_order/sales_order_list.js +22,To Deliver,A Livrer -DocType: Purchase Invoice Item,Item,article +DocType: Purchase Invoice Item,Item,Article DocType: Journal Entry,Difference (Dr - Cr),Différence (Dr - Cr ) DocType: Account,Profit and Loss,Pertes et profits apps/erpnext/erpnext/setup/doctype/email_digest/email_digest.py +310,Upcoming Calendar Events (max 10),Prochains événements de calendrier (max 10) @@ -960,7 +960,7 @@ DocType: Sales Person,Select company name first.,Sélectionnez le nom de la prem apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.js +87,Dr,Dr apps/erpnext/erpnext/config/buying.py +23,Quotations received from Suppliers.,Devis reçus des fournisseurs. DocType: Journal Entry Account,Against Purchase Invoice,Contre facture d'achat -apps/erpnext/erpnext/controllers/selling_controller.py +21,To {0} | {1} {2},{0} | {1} {2} +apps/erpnext/erpnext/controllers/selling_controller.py +21,To {0} | {1} {2},A {0} | {1} {2} DocType: Time Log Batch,updated via Time Logs,mise à jour via Time Logs apps/erpnext/erpnext/stock/report/stock_ageing/stock_ageing.py +40,Average Age,âge moyen apps/erpnext/erpnext/templates/includes/cart.js +60,Go ahead and add something to your cart.,Poursuiver et ajouter quelque chose à votre panier. @@ -1093,7 +1093,7 @@ DocType: Item,Lead Time in days,Délai en jours apps/erpnext/erpnext/accounts/doctype/gl_entry/gl_entry.py +170,Not authorized to edit frozen Account {0},Message totale (s ) DocType: Journal Entry,Get Outstanding Invoices,Obtenez Factures en souffrance apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +59,Sales Order {0} is not valid,Company ( pas client ou fournisseur ) maître . -DocType: Email Digest,New Stock Entries,Entrées Stock nouvelles +DocType: Email Digest,New Stock Entries,Nouvelle entrée du stock apps/erpnext/erpnext/setup/doctype/company/company.py +169,"Sorry, companies cannot be merged","Désolé , les entreprises ne peuvent pas être fusionnés" apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +145,Small,Petit DocType: Employee,Employee Number,Numéro d'employé @@ -1107,7 +1107,7 @@ DocType: Item,Auto re-order,Auto re-commande apps/erpnext/erpnext/selling/report/territory_target_variance_item_group_wise/territory_target_variance_item_group_wise.py +57,Total Achieved,Total obtenu DocType: Employee,Place of Issue,Lieu d'émission apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +59,Contract,contrat -DocType: Report,Disabled,Handicapé +DocType: Report,Disabled,Desactivé apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +472,UOM coversion factor required for UOM: {0} in Item: {1},Facteur de coversion Emballage requis pour Emballage: {0} dans l'article: {1} apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +83,Indirect Expenses,N ° de série {0} créé apps/erpnext/erpnext/controllers/selling_controller.py +170,Row {0}: Qty is mandatory,Ligne {0}: Quantité est obligatoire @@ -1427,7 +1427,7 @@ DocType: Authorization Rule,Approving User,Approuver l'utilisateur apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +36,Forging,Forger apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +125,Plating,Placage DocType: Purchase Invoice,End date of current invoice's period,Date de fin de la période de facturation en cours -DocType: Pricing Rule,Applicable For,Fixez Logo +DocType: Pricing Rule,Applicable For,Applicable pour apps/erpnext/erpnext/stock/doctype/item/item.py +342,Item Template cannot have stock or Open Sales/Purchase/Production Orders.,Un ModÚle d'Article ne peut pas avoir de stock ou de Commandes/Bons de Commande/Bons de Production ouverts. DocType: Bank Reconciliation,From Date,Partir de la date DocType: Backup Manager,Validate,Valider @@ -1853,7 +1853,7 @@ apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +238,"Advan DocType: Opportunity,Lost Reason,Raison perdu apps/erpnext/erpnext/config/accounts.py +68,Create Payment Entries against Orders or Invoices.,Créer des entrées de paiement contre commandes ou factures. apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +140,Welding,Soudage -apps/erpnext/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py +18,New Stock UOM is required,{0} {1} a déjà été soumis +apps/erpnext/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py +18,New Stock UOM is required,Nouveau stock UDM est requis DocType: Quality Inspection,Sample Size,Taille de l'échantillon apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +419,All items have already been invoiced,Tous les articles ont déjà été facturés apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py +47,Please specify a valid 'From Case No.',S'il vous plaît indiquer une valide »De Affaire n ' @@ -1902,7 +1902,7 @@ apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.js +51,Case No. can DocType: Features Setup,If you have Sales Team and Sale Partners (Channel Partners) they can be tagged and maintain their contribution in the sales activity,"Si vous avez équipe de vente et Partenaires Vente (Channel Partners), ils peuvent être marqués et maintenir leur contribution à l'activité commerciale" DocType: Item,Show a slideshow at the top of the page,Afficher un diaporama en haut de la page DocType: Item,"Allow in Sales Order of type ""Service""",Permettre à la commande client de type "service" -apps/erpnext/erpnext/setup/doctype/company/company.py +77,Stores,Livraison Remarque {0} ne doit pas être soumis +apps/erpnext/erpnext/setup/doctype/company/company.py +77,Stores,Magasins DocType: Time Log,Projects Manager,Gestionnaire de projets DocType: Serial No,Delivery Time,L'heure de la livraison apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js +27,Ageing Based On,Basé sur le vieillissement @@ -1926,7 +1926,7 @@ DocType: Quality Inspection,Verified By,Vérifié par DocType: Address,Subsidiary,Filiale apps/erpnext/erpnext/setup/doctype/company/company.py +41,"Cannot change company's default currency, because there are existing transactions. Transactions must be cancelled to change the default currency.",Voyage DocType: Quality Inspection,Purchase Receipt No,Achetez un accusé de réception -apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +30,Earnest Money,S'il vous plaît sélectionner le type de charge de premier +apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +30,Earnest Money,Arrhes DocType: System Settings,In Hours,Dans Heures DocType: Process Payroll,Create Salary Slip,Créer bulletin de salaire apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py +44,Expected balance as per bank,L'équilibre attendu que par banque @@ -2311,7 +2311,7 @@ apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js +18,Discount DocType: Purchase Invoice,Half-yearly,Semestriel apps/erpnext/erpnext/accounts/report/financial_statements.py +16,Fiscal Year {0} not found.,Exercice {0} introuvable. DocType: Bank Reconciliation,Get Relevant Entries,Obtenez les entrées pertinentes -apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +300,Accounting Entry for Stock,Entrée Accounting for Stock +apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +300,Accounting Entry for Stock,Entrées comptable pour Stock apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +63,Coining,Coining DocType: Sales Invoice,Sales Team1,Ventes Equipe1 apps/erpnext/erpnext/stock/doctype/item/item.py +267,Item {0} does not exist,Point {0} n'existe pas @@ -2443,7 +2443,7 @@ DocType: Customer,Credit Limit,Limite de crédit DocType: Features Setup,To enable Point of Sale features,Pour permettre Point de Vente fonctionnalités DocType: Purchase Receipt,LR Date,LR Date apps/erpnext/erpnext/accounts/page/pos/pos_page.html +4,Select type of transaction,Sélectionner le type de transaction -DocType: GL Entry,Voucher No,Bon Pas +DocType: GL Entry,Voucher No,No du bon DocType: Leave Allocation,Leave Allocation,Laisser Allocation apps/erpnext/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py +389,Material Requests {0} created,Devis {0} de type {1} apps/erpnext/erpnext/config/selling.py +122,Template of terms or contract.,ModÚle de termes ou d'un contrat. @@ -2675,7 +2675,7 @@ DocType: Territory,Territory Targets,Les objectifs du Territoire DocType: Delivery Note,Transporter Info,Infos Transporteur DocType: Purchase Order Item Supplied,Purchase Order Item Supplied,Point de commande fourni apps/erpnext/erpnext/config/setup.py +27,Letter Heads for print templates.,Journal Bon {0} n'a pas encore compte {1} . -apps/erpnext/erpnext/config/setup.py +32,Titles for print templates e.g. Proforma Invoice.,Solde négatif dans le lot {0} pour objet {1} à {2} EntrepÃŽt sur ​​{3} {4} +apps/erpnext/erpnext/config/setup.py +32,Titles for print templates e.g. Proforma Invoice.,Titres pour les modÚles d'impression par exemple Facture proforma. apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js +140,Valuation type charges can not marked as Inclusive,charges de type d'évaluation ne peuvent pas marqué comme Inclusive DocType: POS Profile,Update Stock,Mise à jour Stock apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +127,Superfinishing,Superfinition @@ -2694,7 +2694,7 @@ DocType: Expense Claim,Total Sanctioned Amount,Montant total sanctionné DocType: Sales Invoice Item,Delivery Note Item,Point de Livraison DocType: Expense Claim,Task,Tâche apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +56,Shaving,Rasage -DocType: Purchase Taxes and Charges,Reference Row #,"Ne peut directement fixer le montant . Pour le type de charge « réelle » , utilisez le champ de taux" +DocType: Purchase Taxes and Charges,Reference Row #,Ligne de référence # apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +74,Batch number is mandatory for Item {0},Le numéro de lot est obligatoire pour objet {0} apps/erpnext/erpnext/setup/doctype/sales_person/sales_person.js +14,This is a root sales person and cannot be edited.,Il s'agit d'une personne de ventes de racines et ne peut être modifié . ,Stock Ledger,Stock Ledger @@ -3184,7 +3184,7 @@ DocType: Contact Us Settings,Pincode,Code Postal apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +146,Journal Entry {0} does not have account {1} or already matched against other voucher,Journal entrée {0} n'a pas compte {1} ou déjà en correspondance avec une autre piÚce justificative DocType: Item,Moving Average,Moyenne mobile DocType: BOM Replace Tool,The BOM which will be replaced,La nomenclature qui sera remplacé -apps/erpnext/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py +21,New Stock UOM must be different from current stock UOM,S'il vous plaît entrer nos mobiles valides +apps/erpnext/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py +21,New Stock UOM must be different from current stock UOM,Nouveau stock UDM doit être different de l'actuel stock UDM DocType: Account,Debit,Débit apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py +29,Leaves must be allocated in multiples of 0.5,"Les feuilles doivent être alloués par multiples de 0,5" DocType: Production Order,Operation Cost,Coût de l'opération @@ -3238,7 +3238,7 @@ DocType: Sales Order,Delivery Date,Date de livraison DocType: DocField,Currency,Monnaie DocType: Opportunity,Opportunity Date,Date de possibilité DocType: Purchase Receipt,Return Against Purchase Receipt,Retour contre Reçu d'achat -apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order_list.js +16,To Bill,Pour le projet de loi +apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order_list.js +16,To Bill,A facturer apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +61,Piecework,travail à la piÚce apps/erpnext/erpnext/accounts/report/gross_profit/gross_profit.py +64,Avg. Buying Rate,Moy. Taux d'achat DocType: Task,Actual Time (in Hours),Temps réel (en heures) @@ -3771,7 +3771,7 @@ DocType: Appraisal Goal,Score Earned,Score gagné apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +393,"e.g. ""My Company LLC""","par exemple "" Mon Company LLC """ apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +173,Notice Period,Période De Préavis apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js +516,Make Purchase Return,Assurez Achat retour -DocType: Bank Reconciliation Detail,Voucher ID,ID Bon +DocType: Bank Reconciliation Detail,Voucher ID,ID du Bon apps/erpnext/erpnext/setup/doctype/territory/territory.js +14,This is a root territory and cannot be edited.,C'est un territoire de racine et ne peut être modifié . DocType: Packing Slip,Gross Weight UOM,Emballage Poids brut DocType: Email Digest,Receivables / Payables,Créances / dettes diff --git a/erpnext/translations/hr.csv b/erpnext/translations/hr.csv index ef920de80dd..40ac5515da6 100644 --- a/erpnext/translations/hr.csv +++ b/erpnext/translations/hr.csv @@ -993,7 +993,7 @@ DocType: Purchase Invoice,Start date of current invoice's period,Početak datum apps/erpnext/erpnext/projects/doctype/time_log_batch/time_log_batch.js +23,This Time Log Batch has been billed.,Ovo Batch Vrijeme Log je naplaćeno. apps/erpnext/erpnext/crm/doctype/lead/lead.js +32,Create Opportunity,Kreiraj priliku DocType: Salary Slip,Leave Without Pay,Neplaćeno odsustvo -DocType: Supplier,Communications,Communications +DocType: Supplier,Communications,Mailovi apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +281,Capacity Planning Error,Kapacitet GreÅ¡ka planiranje DocType: Lead,Consultant,Konzultant DocType: Salary Slip,Earnings,Zarada @@ -1194,7 +1194,7 @@ DocType: Address,Utilities,Komunalne usluge DocType: Purchase Invoice Item,Accounting,Knjigovodstvo DocType: Features Setup,Features Setup,Značajke postavki apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.js +13,View Offer Letter,Pogledaj Ponuda Pismo -DocType: Communication,Communication,Komunikacija +DocType: Communication,Communication,Mail DocType: Item,Is Service Item,Je usluga DocType: Activity Cost,Projects,Projekti apps/erpnext/erpnext/hr/doctype/holiday_list/holiday_list.py +30,Please select Fiscal Year,Odaberite Fiskalna godina @@ -1218,7 +1218,7 @@ apps/erpnext/erpnext/controllers/accounts_controller.py +424,Charge of type 'Act apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.js +167,Max: {0},Maksimalno: {0} apps/erpnext/erpnext/projects/report/daily_time_log_summary/daily_time_log_summary.py +16,From Datetime,Od datetime DocType: Email Digest,For Company,Za tvrtke -apps/erpnext/erpnext/config/support.py +38,Communication log.,Komunikacija dnevnik. +apps/erpnext/erpnext/config/support.py +38,Communication log.,Dnevnik mailova apps/erpnext/erpnext/accounts/report/gross_profit/gross_profit.py +66,Buying Amount,Iznos kupnje DocType: Sales Invoice,Shipping Address Name,Dostava Adresa Ime apps/erpnext/erpnext/accounts/doctype/account/account.js +50,Chart of Accounts,Kontnog @@ -1547,7 +1547,7 @@ DocType: DocType,System,Sustav DocType: Warranty Claim,Issue Date,Datum izdavanja DocType: Activity Cost,Activity Cost,Aktivnost troÅ¡kova DocType: Purchase Receipt Item Supplied,Consumed Qty,PotroÅ¡eno Kol -apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +51,Telecommunications,telekomunikacija +apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +51,Telecommunications,Telekomunikacije DocType: Packing Slip,Indicates that the package is a part of this delivery (Only Draft),Ukazuje da je paket je dio ove isporuke (samo nacrti) DocType: Payment Tool,Make Payment Entry,Napravi ulazno plaćanje apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py +119,Quantity for Item {0} must be less than {1},Količina za proizvod {0} mora biti manja od {1} @@ -1990,7 +1990,7 @@ apps/erpnext/erpnext/manufacturing/doctype/production_planning_tool/production_p apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +217,{0} {1} is not submitted,{0} {1} nije podnesen apps/erpnext/erpnext/config/stock.py +13,Requests for items.,Zahtjevi za stavke. DocType: Production Planning Tool,Separate production order will be created for each finished good item.,Poseban proizvodnja kako će biti izrađen za svakog gotovog dobrom stavke. -DocType: Email Digest,New Communications,Novi komunikacije +DocType: Email Digest,New Communications,Novi mailovi DocType: Purchase Invoice,Terms and Conditions1,Odredbe i Conditions1 apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard_page.html +18,Complete Setup,kompletan Setup DocType: Accounts Settings,"Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.","KnjiÅŸenje zamrznuta do tog datuma, nitko ne moÅŸe učiniti / mijenjati ulazak, osim uloge naveden u nastavku." @@ -2083,7 +2083,7 @@ DocType: Purchase Receipt Item,Recd Quantity,RecD Količina DocType: Email Account,Email Ids,IDS e-poÅ¡te apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +100,Cannot produce more Item {0} than Sales Order quantity {1},Ne moÅŸe proizvesti viÅ¡e predmeta {0} od prodajnog naloga količina {1} apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order_list.js +28,Set as Unstopped,Postavi kao Unstopped -apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +436,Stock Entry {0} is not submitted,Stock Stupanje {0} ne podnosi +apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +436,Stock Entry {0} is not submitted,MeđuskladiÅ¡nica {0} nije potvrđena DocType: Payment Reconciliation,Bank / Cash Account,Banka / Cash račun apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.js +43,This Leave Application is pending approval. Only the Leave Approver can update status.,Ova aplikacija Ostavite se čeka odobrenje. Samo Ostavite Odobritelj moÅŸe aÅŸurirati status. DocType: Global Defaults,Hide Currency Symbol,Sakrij simbol valute @@ -2169,7 +2169,7 @@ apps/erpnext/erpnext/controllers/accounts_controller.py +337,"Total advance ({0} od SVEUKUPNO ({2})" DocType: Employee,Relieving Date,Rasterećenje Datum apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js +12,"Pricing Rule is made to overwrite Price List / define discount percentage, based on some criteria.","Cijene Pravilo je napravljen prebrisati Cjenik / definirati postotak popusta, na temelju nekih kriterija." -DocType: Serial No,Warehouse can only be changed via Stock Entry / Delivery Note / Purchase Receipt,SkladiÅ¡te se moÅŸe mijenjati samo preko Stock Stupanje / Dostavnica / kupiti primitka +DocType: Serial No,Warehouse can only be changed via Stock Entry / Delivery Note / Purchase Receipt,SkladiÅ¡te se moÅŸe mijenjati samo preko MeđuskladiÅ¡nica / Otpremnica / Primka DocType: Employee Education,Class / Percentage,Klasa / Postotak apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +92,Head of Marketing and Sales,Voditelj marketinga i prodaje apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +31,Income Tax,Porez na dohodak @@ -2637,7 +2637,7 @@ apps/erpnext/erpnext/accounts/page/accounts_browser/accounts_browser.js +36,"Go apps/erpnext/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py +109,Missing Currency Exchange Rates for {0},Nedostaje Valuta za {0} apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +134,Laser cutting,Lasersko rezanje DocType: Event,Monday,Ponedjeljak -DocType: Journal Entry,Stock Entry,KataloÅ¡ki Stupanje +DocType: Journal Entry,Stock Entry,MeđuskladiÅ¡nica DocType: Account,Payable,Plativ DocType: Salary Slip,Arrear Amount,Iznos unatrag apps/erpnext/erpnext/selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.py +57,New Customers,Novi kupci @@ -3682,7 +3682,7 @@ apps/erpnext/erpnext/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py DocType: Manufacturing Settings,Manufacturing Settings,Postavke proizvodnje apps/erpnext/erpnext/config/setup.py +56,Setting up Email,Postavljanje e-poÅ¡tu apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +89,Please enter default currency in Company Master,Unesite zadanu valutu u tvrtki Master -DocType: Stock Entry Detail,Stock Entry Detail,KataloÅ¡ki Stupanje Detalj +DocType: Stock Entry Detail,Stock Entry Detail,Detalji međuskladiÅ¡nice apps/erpnext/erpnext/templates/includes/cart.js +287,You need to be logged in to view your cart.,Morate biti prijavljeni da biste vidjeli svoju koÅ¡aricu. apps/erpnext/erpnext/accounts/page/accounts_browser/accounts_browser.js +204,New Account Name,Naziv novog računa DocType: Purchase Invoice Item,Raw Materials Supplied Cost,Sirovine Isporuka TroÅ¡kovi diff --git a/erpnext/translations/ja.csv b/erpnext/translations/ja.csv index 60806c52b0c..6c15c57c14f 100644 --- a/erpnext/translations/ja.csv +++ b/erpnext/translations/ja.csv @@ -4,7 +4,7 @@ DocType: Employee,Divorced,離婚 apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +54,Warning: Same item has been entered multiple times.,泚意同じ項目が耇数回入力されおいたす apps/erpnext/erpnext/hub_node/doctype/hub_settings/hub_settings.py +96,Items already synced,すでに同期されたアむテム DocType: Purchase Order,"If you have created a standard template in Purchase Taxes and Charges Template, select one and click on the button below.",賌入皎および請求テンプレヌト内の暙準テンプレヌトを䜜成した堎合、いずれかを遞択しお、䞋のボタンをクリックしおください -apps/erpnext/erpnext/support/doctype/warranty_claim/warranty_claim.py +33,Cancel Material Visit {0} before cancelling this Warranty Claim,この保蚌請求をキャンセルする前に材料蚪問{0}をキャンセルしなくおはなりたせん +apps/erpnext/erpnext/support/doctype/warranty_claim/warranty_claim.py +33,Cancel Material Visit {0} before cancelling this Warranty Claim,この保蚌請求をキャンセルする前に資材蚪問{0}をキャンセルしなくおはなりたせん apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +18,Consumer Products,消費者補品 apps/erpnext/erpnext/accounts/report/general_ledger/general_ledger.js +68,Please select Party Type first,先に圓事者タむプを遞択しおください apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +89,Annealing,焌きなたし @@ -25,7 +25,7 @@ DocType: Product Bundle,"The Item that represents the Package. This Item must ha apps/erpnext/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py +95,Currency is required for Price List {0},䟡栌衚{0}には通貚が必芁です DocType: Sales Taxes and Charges Template,* Will be calculated in the transaction.,※取匕内で蚈算されたす。 apps/erpnext/erpnext/setup/doctype/backup_manager/backup_googledrive.py +120,Please set Google Drive access keys in {0},{0}にGoogleドラむブのアクセスキヌを蚭定しおください -apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +536,From Material Request,玠材芁求元 +apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +536,From Material Request,資材芁求元 apps/erpnext/erpnext/selling/page/sales_browser/sales_browser.js +37,{0} Tree,{0}ツリヌ DocType: Job Applicant,Job Applicant,求職者 apps/erpnext/erpnext/hub_node/page/hub/hub_body.html +18,No more results.,これ以䞊、結果はありたせん。 @@ -58,7 +58,7 @@ apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +190,New apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +134,Bank Draft,銀行為替手圢 DocType: Features Setup,1. To maintain the customer wise item code and to make them searchable based on their code use this option,1 . 顧客ごずのアむテムコヌドを維持し、コヌドで怜玢を可胜にするためには、このオプションを䜿甚したす。 DocType: Mode of Payment Account,Mode of Payment Account,支払口座のモヌド -apps/erpnext/erpnext/stock/doctype/item/item.js +30,Show Variants,掟生を衚瀺 +apps/erpnext/erpnext/stock/doctype/item/item.js +30,Show Variants,バリ゚ヌションを衚瀺 DocType: Sales Invoice Item,Quantity,数量 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +174,Loans (Liabilities),ロヌン負債 DocType: Employee Education,Year of Passing,経過幎 @@ -273,10 +273,10 @@ DocType: Pricing Rule,Supplier Type,サプラむダヌタむプ DocType: Item,Publish in Hub,ハブに公開 ,Terretory,地域 apps/erpnext/erpnext/stock/doctype/item/item.py +366,Item {0} is cancelled,アむテム{0}をキャンセルしたした -apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.js +612,Material Request,材料芁求 +apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.js +612,Material Request,資材芁求 DocType: Bank Reconciliation,Update Clearance Date,枅算日の曎新 DocType: Item,Purchase Details,仕入詳现 -apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +330,Item {0} not found in 'Raw Materials Supplied' table in Purchase Order {1},賌買発泚に「原材料䟛絊 'テヌブルに芋぀かりたせん項目{0} {1} +apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +330,Item {0} not found in 'Raw Materials Supplied' table in Purchase Order {1},仕入泚文 {1} の「原材料䟛絊」テヌブルにアむテム {0} が芋぀かりたせん apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +128,Wire brushing,ワむダヌブラッシング DocType: Employee,Relation,関連 apps/erpnext/erpnext/config/selling.py +23,Confirmed orders from Customers.,お客様からのご泚文確認。 @@ -305,7 +305,7 @@ DocType: Accounts Settings,Settings for Accounts,アカりント蚭定 apps/erpnext/erpnext/config/crm.py +85,Manage Sales Person Tree.,セヌルスパヌ゜ンツリヌを管理したす。 DocType: Item,Synced With Hub,ハブず同期 apps/erpnext/erpnext/setup/doctype/company/company.js +41,Wrong Password,間違ったパスワヌド -DocType: Item,Variant Of,掟生元 +DocType: Item,Variant Of,バリ゚ヌション元 apps/erpnext/erpnext/selling/doctype/quotation/quotation.py +32,Item {0} must be Service Item,アむテム{0}はサヌビスアむテムでなければなりたせん apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +303,Completed Qty can not be greater than 'Qty to Manufacture',完成した数量は「補造数量」より倧きくするこずはできたせん DocType: DocType,Administrator,管理者 @@ -322,7 +322,7 @@ DocType: Employee,Job Profile,職務内容 DocType: Newsletter,Newsletter,ニュヌスレタヌ apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +83,Hydroforming,ハむドロフォヌミング法 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +48,Necking,ネッキング -DocType: Stock Settings,Notify by Email on creation of automatic Material Request,自動的な材料芁求の䜜成時にメヌルで通知 +DocType: Stock Settings,Notify by Email on creation of automatic Material Request,自動的な資材芁求の䜜成時にメヌルで通知 apps/erpnext/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py +29,Item is updated,アむテムを曎新したした DocType: Comment,System Manager,システム管理者 DocType: Payment Reconciliation Invoice,Invoice Type,請求曞タむプ @@ -333,14 +333,14 @@ DocType: Communication,Support Manager,サポヌトマネヌゞャヌ apps/erpnext/erpnext/accounts/utils.py +182,Payment Entry has been modified after you pulled it. Please pull it again.,支払゚ントリが倉曎されおいたす。匕甚しなおしおください apps/erpnext/erpnext/stock/doctype/item/item.py +195,{0} entered twice in Item Tax,アむテムの皎金に{0}が2回入力されおいたす DocType: Workstation,Rent Cost,地代・賃料 -DocType: Manage Variants Item,Variant Attributes,バリアント属性 +DocType: Manage Variants Item,Variant Attributes,バリ゚ヌション属性 apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +73,Please select month and year,月ず幎を遞択しおください DocType: Purchase Invoice,"Enter email id separated by commas, invoice will be mailed automatically on particular date",カンマで区切られたメヌルアドレスを入力するず、請求が特定の日に自動的に送信されたす DocType: Employee,Company Email,䌚瀟の電子メヌル DocType: Workflow State,Refresh,再読蟌 DocType: Features Setup,"All import related fields like currency, conversion rate, import total, import grand total etc are available in Purchase Receipt, Supplier Quotation, Purchase Invoice, Purchase Order etc.",通貚、倉換レヌト、茞入総茞入総蚈などのような党おの茞入に関連するフィヌルドは、領収曞、サプラむダヌ芋積、請求曞、発泚曞などでご利甚いただけたす apps/erpnext/erpnext/stock/doctype/item/item.js +29,This Item is a Template and cannot be used in transactions. Item attributes will be copied over into the variants unless 'No Copy' is set,"この商品はテンプレヌトで、取匕内で䜿甚するこずはできたせん。 -「コピヌしない」が蚭定されおいない限り、アむテムの属性は、掟生にコピヌされたす" +「コピヌしない」が蚭定されおいない限り、アむテムの属性は、バリ゚ヌションにコピヌされたす" apps/erpnext/erpnext/selling/report/customers_not_buying_since_long_time/customers_not_buying_since_long_time.py +69,Total Order Considered,怜蚎された泚文合蚈 apps/erpnext/erpnext/config/hr.py +110,"Employee designation (e.g. CEO, Director etc.).",埓業員の肩曞䟋最高経営責任者CEO、取締圹など。 apps/erpnext/erpnext/controllers/recurring_document.py +200,Please enter 'Repeat on Day of Month' field value,フィヌルド倀「毎月繰り返し」を入力しおください @@ -462,7 +462,7 @@ DocType: Payment Tool,Received Or Paid,受領枈たたは支払枈 sites/assets/js/erpnext.min.js +54,Please select Company,䌚瀟を遞択しおください DocType: Stock Entry,Difference Account,差損益 apps/erpnext/erpnext/projects/doctype/task/task.py +44,Cannot close task as its dependant task {0} is not closed.,その䟝存タスク{0}は閉じられおいないずしおクロヌズ䜜業はできたせん。 -apps/erpnext/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py +298,Please enter Warehouse for which Material Request will be raised,玠材のリク゚ストが発生する倉庫を入力しおください +apps/erpnext/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py +298,Please enter Warehouse for which Material Request will be raised,資材芁求が発生する倉庫を入力しおください DocType: Production Order,Additional Operating Cost,远加の営業費甚 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +19,Cosmetics,化粧品 DocType: DocField,Type,タむプ @@ -473,7 +473,7 @@ DocType: Shipping Rule,Net Weight,正味重量 DocType: Employee,Emergency Phone,緊急電話 DocType: Backup Manager,Google Drive Access Allowed,Googleドラむブぞのアクセスが可胜 ,Serial No Warranty Expiry,シリアル番号保蚌期限 -apps/erpnext/erpnext/stock/doctype/material_request/material_request.js +635,Do you really want to STOP this Material Request?,この材料芁求を䞭止したすか +apps/erpnext/erpnext/stock/doctype/material_request/material_request.js +635,Do you really want to STOP this Material Request?,この資材芁求を䞭止したすか apps/erpnext/erpnext/selling/doctype/sales_order/sales_order_list.js +22,To Deliver,配信するには DocType: Purchase Invoice Item,Item,アむテム DocType: Journal Entry,Difference (Dr - Cr),差額借方 - 貞方 @@ -487,8 +487,8 @@ DocType: Selling Settings,Default Customer Group,デフォルトの顧客グル DocType: Global Defaults,"If disable, 'Rounded Total' field will not be visible in any transaction",無効にするず、「四捚五入された合蚈」欄は各取匕には衚瀺されなくなりたす DocType: BOM,Operating Cost,運甚費 ,Gross Profit,粗利益 -DocType: Production Planning Tool,Material Requirement,材料芁件 -DocType: Variant Attribute,Variant Attribute,バリアント属性 +DocType: Production Planning Tool,Material Requirement,資材所芁量 +DocType: Variant Attribute,Variant Attribute,バリ゚ヌション属性 DocType: Company,Delete Company Transactions,䌚瀟の取匕を削陀 apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +84,Item {0} is not Purchase Item,アむテム{0}は仕入アむテムではありたせん apps/erpnext/erpnext/controllers/recurring_document.py +189,"{0} is an invalid email address in 'Notification \ @@ -531,7 +531,7 @@ apps/erpnext/erpnext/selling/report/customer_acquisition_and_loyalty/customer_ac DocType: Backup Manager,Sync with Google Drive,Googleドラむブずの同期 DocType: Leave Control Panel,Allocate,割圓 apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard_page.html +16,Previous,前 -DocType: Item,Manage Variants,バリアントを管理したす +DocType: Item,Manage Variants,バリ゚ヌションを管理 DocType: Production Planning Tool,Select Sales Orders from which you want to create Production Orders.,䜜成した補造指瀺から受泚を遞択したす。 apps/erpnext/erpnext/config/hr.py +120,Salary components.,絊䞎コンポヌネント apps/erpnext/erpnext/config/crm.py +12,Database of potential customers.,朜圚顧客デヌタベヌス @@ -596,7 +596,7 @@ apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_re apps/erpnext/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py +187,{0}: {1} not found in Invoice Details table,{0}{1}は請求曞詳现テヌブルに存圚したせん DocType: Company,Round Off Cost Center,コストセンタヌを䞞めたす apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +189,Maintenance Visit {0} must be cancelled before cancelling this Sales Order,この受泚をキャンセルする前に、メンテナンス蚪問 {0} をキャンセルしなければなりたせん -DocType: Material Request,Material Transfer,材料移転 +DocType: Material Request,Material Transfer,資材移送 apps/erpnext/erpnext/accounts/page/financial_analytics/financial_analytics.js +56,Opening (Dr),開く借方 apps/erpnext/erpnext/controllers/sales_and_purchase_return.py +40,Posting timestamp must be after {0},投皿のタむムスタンプは、{0}の埌でなければなりたせん apps/frappe/frappe/config/setup.py +59,Settings,蚭定 @@ -626,7 +626,7 @@ DocType: Employee,Provide email id registered in company,䌚瀟に登録され DocType: Hub Settings,Seller City,販売者の垂区町村 DocType: Email Digest,Next email will be sent on:,次のメヌル送信先 DocType: Offer Letter Term,Offer Letter Term,雇甚契玄曞条件 -apps/erpnext/erpnext/stock/doctype/item/item.py +334,Item has variants.,アむテムは、バリアントを持っおいたす。 +apps/erpnext/erpnext/stock/doctype/item/item.py +334,Item has variants.,アむテムはバリ゚ヌションがありたす apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +63,Item {0} not found,アむテム{0}が芋぀かりたせん DocType: Bin,Stock Value,圚庫䟡倀 apps/erpnext/erpnext/buying/page/purchase_analytics/purchase_analytics.js +88,Tree Type,ツリヌ型 @@ -645,7 +645,7 @@ DocType: Communication,Open,オヌプン DocType: Lead,Campaign Name,キャンペヌン名 ,Reserved,予玄枈 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +644,Do you really want to UNSTOP,停止解陀したすか -DocType: Purchase Order,Supply Raw Materials,材料䟛絊 +DocType: Purchase Order,Supply Raw Materials,原材料䟛絊 DocType: Purchase Invoice,The date on which next invoice will be generated. It is generated on submit.,次の請求が生成される日提出するず生成されたす apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +10,Current Assets,流動資産 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +93,{0} is not a stock Item,{0}は圚庫アむテムではありたせん @@ -828,11 +828,11 @@ apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +113,Abrasiv DocType: Employee,Ms,女史 apps/erpnext/erpnext/config/accounts.py +143,Currency exchange rate master.,為替レヌトマスタヌ apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +248,Unable to find Time Slot in the next {0} days for Operation {1},操䜜{1}のための時間スロットは次の{0}日間に存圚したせん -DocType: Production Order,Plan material for sub-assemblies,郚分組立品材料蚈画 +DocType: Production Order,Plan material for sub-assemblies,郚分組立品資材蚈画 apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py +427,BOM {0} must be active,郚品衚{0}はアクティブでなければなりたせん apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.js +22,Set Status as Available,ステヌタスを「利甚可」に蚭定 apps/erpnext/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py +26,Please select the document type first,文曞タむプを遞択しおください -apps/erpnext/erpnext/support/doctype/maintenance_visit/maintenance_visit.py +68,Cancel Material Visits {0} before cancelling this Maintenance Visit,このメンテナンス蚪問をキャンセルする前に材料蚪問{0}をキャンセルしなくおはなりたせん +apps/erpnext/erpnext/support/doctype/maintenance_visit/maintenance_visit.py +68,Cancel Material Visits {0} before cancelling this Maintenance Visit,このメンテナンス蚪問をキャンセルする前に資材蚪問{0}をキャンセルしなくおはなりたせん DocType: Salary Slip,Leave Encashment Amount,䌑暇珟金化量 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +223,Serial No {0} does not belong to Item {1},アむテム {1} に関連付けが無いシリアル番号 {0} DocType: Purchase Receipt Item Supplied,Required Qty,必芁な数量 @@ -847,7 +847,7 @@ DocType: Purchase Receipt,Range,幅 DocType: Supplier,Default Payable Accounts,デフォルト買掛金勘定 apps/erpnext/erpnext/hr/doctype/attendance/attendance.py +40,Employee {0} is not active or does not exist,埓業員{0}はアクティブでないか、存圚したせん DocType: Features Setup,Item Barcode,アむテムのバヌコヌド -apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +161,Item Variants {0} updated,アむテム掟生{0}を曎新したした +apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +161,Item Variants {0} updated,アむテムバリ゚ヌション{0}を曎新したした DocType: Quality Inspection Reading,Reading 6,報告芁玠6 DocType: Purchase Invoice Advance,Purchase Invoice Advance,仕入請求前払 DocType: Address,Shop,店 @@ -902,7 +902,7 @@ DocType: Workflow State,Stop,停止 apps/erpnext/erpnext/setup/doctype/email_digest/email_digest.js +7,There was an error. One probable reason could be that you haven't saved the form. Please contact support@erpnext.com if the problem persists.,"゚ラヌが発生したした。 フォヌムを保存しおいないこずが原因だず考えられたす。 問題が解決しない堎合はsupport@erpnext.comにお問い合わせください。" -DocType: Purchase Order,% of materials billed against this Purchase Order.,この発泚に察しお請求される材料の +DocType: Purchase Order,% of materials billed against this Purchase Order.,の資材が請求枈この発泚を察象 apps/erpnext/erpnext/controllers/selling_controller.py +154,Order Type must be one of {0},泚文タむプは{0}のいずれかである必芁がありたす DocType: Lead,Next Contact Date,次回連絡日 apps/erpnext/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py +35,Opening Qty,数量を開く @@ -945,7 +945,7 @@ apps/erpnext/erpnext/projects/doctype/project/project.js +40,Time Logs,時間ロ apps/erpnext/erpnext/hr/doctype/expense_claim/expense_claim.js +109,You are the Expense Approver for this record. Please Update the 'Status' and Save,あなたはこのレコヌドの経費承認者です。「ステヌタス」を曎新し保存しおください。 DocType: Serial No,Creation Document No,䜜成ドキュメントNo DocType: Issue,Issue,課題 -apps/erpnext/erpnext/config/stock.py +141,"Attributes for Item Variants. e.g Size, Color etc.",アむテム掟生の属性。䟋サむズ、色など +apps/erpnext/erpnext/config/stock.py +141,"Attributes for Item Variants. e.g Size, Color etc.",アむテムバリ゚ヌションの属性。䟋サむズ、色など apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order_calendar.js +30,WIP Warehouse,䜜業䞭倉庫 apps/erpnext/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py +204,Serial No {0} is under maintenance contract upto {1},シリアル番号{0}は {1}たで保守契玄䞋にありたす DocType: BOM Operation,Operation,䜜業 @@ -1016,7 +1016,7 @@ apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +75,Management, apps/erpnext/erpnext/config/projects.py +33,Types of activities for Time Sheets,タむムシヌト甚掻動タむプ apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +13,Investment casting,むンベストメント鋳造 apps/erpnext/erpnext/accounts/doctype/gl_entry/gl_entry.py +48,Either debit or credit amount is required for {0},{0}には借方蚈・貞方蚈のどちらかが必芁です -DocType: Item Attribute Value,"This will be appended to the Item Code of the variant. For example, if your abbreviation is ""SM"", and the item code is ""T-SHIRT"", the item code of the variant will be ""T-SHIRT-SM""",これは掟生のアむテムコヌドに远加されたす。あなたの略称が「SM」であり、アむテムコヌドが「T-SHIRT」である堎合は、掟生のアむテムコヌドは、「T-SHIRT-SM」になりたす +DocType: Item Attribute Value,"This will be appended to the Item Code of the variant. For example, if your abbreviation is ""SM"", and the item code is ""T-SHIRT"", the item code of the variant will be ""T-SHIRT-SM""",これはバリ゚ヌションのアむテムコヌドに远加されたす。あなたの略称が「SM」であり、アむテムコヌドが「T-SHIRT」である堎合は、バリ゚ヌションのアむテムコヌドは、「T-SHIRT-SM」になりたす DocType: Salary Slip,Net Pay (in words) will be visible once you save the Salary Slip.,絊䞎䌝祚を保存するず絊䞎が衚瀺されたす。 apps/frappe/frappe/core/doctype/user/user_list.js +12,Active,アクティブ apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +154,Blue,青 @@ -1184,7 +1184,7 @@ apps/erpnext/erpnext/accounts/doctype/shipping_rule/shipping_rule.py +75,Overlap apps/erpnext/erpnext/accounts/doctype/gl_entry/gl_entry.py +145,Against Journal Entry {0} is already adjusted against some other voucher,察仕蚳{0}はすでにいく぀か他の䌝祚に察しお適応されおいたす DocType: Backup Manager,Files Folder ID,ファむルフォルダのID apps/erpnext/erpnext/selling/report/customers_not_buying_since_long_time/customers_not_buying_since_long_time.py +68,Total Order Value,泚文䟡倀合蚈 -apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +167,Item Variants {0} deleted,アむテム掟生{0}を削陀したした +apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +167,Item Variants {0} deleted,アむテムバリ゚ヌション{0}を削陀したした apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +38,Food,食べ物 apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js +51,Ageing Range 3,゚むゞングレンゞ apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +84,{0} {1} is entered more than once in Attributes table,{0} {1}の属性テヌブルで耇数回入力されたした @@ -1211,7 +1211,7 @@ DocType: Activity Cost,Projects,プロゞェクト apps/erpnext/erpnext/hr/doctype/holiday_list/holiday_list.py +30,Please select Fiscal Year,䌚蚈幎床を遞択しおください apps/erpnext/erpnext/controllers/buying_controller.py +23,From {0} | {1} {2},{0}から | {1} {2} DocType: BOM Operation,Operation Description,䜜業説明 -DocType: Item,Will also apply to variants,掟生にも適甚されたす +DocType: Item,Will also apply to variants,バリ゚ヌションにも適甚されたす apps/erpnext/erpnext/accounts/doctype/fiscal_year/fiscal_year.py +30,Cannot change Fiscal Year Start Date and Fiscal Year End Date once the Fiscal Year is saved.,幎床が保存されるず䌚蚈幎床の開始日ず䌚蚈幎床終了日を倉曎するこずはできたせん。 DocType: Quotation,Shopping Cart,カヌト apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py +42,Avg Daily Outgoing,平均支出 @@ -1291,7 +1291,7 @@ DocType: Sales Invoice,"The date on which next invoice will be generated. It is ",次の請求曞が生成される日付。これは提出時に生成されたす。 DocType: Item Attribute,Item Attribute,アむテム属性 apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +105,Government,政府 -DocType: Manage Variants,Item Variants,項目バリアント +DocType: Manage Variants,Item Variants,アむテムバリ゚ヌション DocType: Company,Services,サヌビス apps/erpnext/erpnext/accounts/report/financial_statements.py +147,Total ({0}),蚈{0} DocType: Cost Center,Parent Cost Center,芪コストセンタヌ @@ -1307,7 +1307,7 @@ apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standar DocType: Material Request Item,Sales Order No,受泚番号 DocType: Item Group,Item Group Name,アむテムグルヌプ名 apps/erpnext/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py +52,Taken,売䞊高 -apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.js +65,Transfer Materials for Manufacture,補造甚材料移転 +apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.js +65,Transfer Materials for Manufacture,補造甚資材配送 DocType: Pricing Rule,For Price List,䟡栌衚甚 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +26,Executive Search,゚グれクティブサヌチ apps/erpnext/erpnext/stock/stock_ledger.py +406,"Purchase rate for item: {0} not found, which is required to book accounting entry (expense). Please mention item price against a buying price list.","アむテム{0}の仕入額が芋぀かりたせん、䌚蚈゚ントリ費甚を蚘垳するために必芁ずされおいたす。 @@ -1348,7 +1348,7 @@ DocType: Sales Partner,Sales Partner Target,販売パヌトナヌ目暙 DocType: Pricing Rule,Pricing Rule,䟡栌蚭定ルヌル apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +57,Notching,ノッチ apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +44,Reserved warehouse required for stock item {0},圚庫アむテム{0}のために予玄倉庫が必芁です -apps/erpnext/erpnext/config/learn.py +137,Material Request to Purchase Order,泚文を賌入するための材料を芁求 +apps/erpnext/erpnext/config/learn.py +137,Material Request to Purchase Order,仕入泚文のための資材芁求 apps/erpnext/erpnext/controllers/sales_and_purchase_return.py +69,Row # {0}: Returned Item {1} does not exists in {2} {3},行{0}戻された項目は、{1} {2} {3}に存圚したせん apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +16,Bank Accounts,銀行口座 ,Bank Reconciliation Statement,銀行勘定調敎衚 @@ -1372,7 +1372,7 @@ apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standar DocType: Purchase Receipt,Supplier Warehouse,サプラむダヌ倉庫 DocType: Opportunity,Contact Mobile No,連絡先携垯番号 DocType: Production Planning Tool,Select Sales Orders,受泚を遞択 -,Material Requests for which Supplier Quotations are not created,サプラむダヌ芋積が䜜成されおいない材料芁求 +,Material Requests for which Supplier Quotations are not created,サプラむダヌ芋積が䜜成されおいない資材芁求 DocType: Features Setup,To track items using barcode. You will be able to enter items in Delivery Note and Sales Invoice by scanning barcode of item.,バヌコヌドを䜿甚しおアむテムを远跡したす。アむテムのバヌコヌドをスキャンするこずによっお、玍品曞や請求曞にアむテムを入力するこずができたす。 apps/erpnext/erpnext/crm/doctype/lead/lead.js +34,Make Quotation,芋積を䜜成 DocType: Dependent Task,Dependent Task,䟝存タスク @@ -1406,7 +1406,7 @@ apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +189, DocType: Company,Default Payable Account,デフォルト買掛金勘定 apps/erpnext/erpnext/config/website.py +13,"Settings for online shopping cart such as shipping rules, price list etc.",オンラむンショッピングカヌト蚭定出荷ルヌル・䟡栌衚など apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +660,Setup Complete,セットアップ完了 -DocType: Manage Variants,Item Variant Attributes,項目バリアントの属性 +DocType: Manage Variants,Item Variant Attributes,アむテムバリ゚ヌション属性 apps/erpnext/erpnext/controllers/website_list_for_contact.py +48,{0}% Billed,{0}支払枈 apps/erpnext/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py +33,Reserved Qty,予玄数量 DocType: Party Account,Party Account,圓事者アカりント @@ -1456,14 +1456,14 @@ apps/erpnext/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.p DocType: Salary Structure Deduction,Reduce Deduction for Leave Without Pay (LWP),無絊䌑暇LWPの控陀枛 DocType: Territory,Territory Manager,地域マネヌゞャ DocType: Selling Settings,Selling Settings,販売蚭定 -apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +68,Item cannot be a variant of a variant,アむテムは掟生のさらに掟生にはできたせん +apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +68,Item cannot be a variant of a variant,アむテムはバリ゚ヌションのさらに掟生にはできたせん apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +38,Online Auctions,オンラむンオヌクション apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +94,Please specify either Quantity or Valuation Rate or both,数量たたは評䟡レヌトのいずれか、たたは䞡方を指定しおください apps/erpnext/erpnext/hr/doctype/process_payroll/process_payroll.js +50,"Company, Month and Fiscal Year is mandatory",䌚瀟、月ず幎床は必須です apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +102,Marketing Expenses,マヌケティング費甚 ,Item Shortage Report,アむテム䞍足レポヌト apps/erpnext/erpnext/stock/doctype/item/item.js +188,"Weight is mentioned,\nPlease mention ""Weight UOM"" too",重量が蚘茉されおいたすので、あわせお「重量単䜍」を蚘茉しおください -DocType: Stock Entry Detail,Material Request used to make this Stock Entry,この圚庫゚ントリを䜜成するために䜿甚される材料芁求 +DocType: Stock Entry Detail,Material Request used to make this Stock Entry,この圚庫゚ントリを䜜成するために䜿甚される資材芁求 DocType: Journal Entry,View Details,詳现を衚瀺 apps/erpnext/erpnext/config/support.py +43,Single unit of an Item.,アむテムの単䜍 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +164,Time Log Batch {0} must be 'Submitted',時間ログバッチ{0}は「提出枈」でなければなりたせん @@ -1481,10 +1481,10 @@ apps/erpnext/erpnext/selling/doctype/customer/customer.py +79,A Customer Group e 顧客名か顧客グルヌプのどちらかの名前を倉曎しおください" DocType: Territory,Parent Territory,䞊䜍地域 DocType: Quality Inspection Reading,Reading 2,報告芁玠2 -DocType: Stock Entry,Material Receipt,材料領収曞 +DocType: Stock Entry,Material Receipt,資材領収曞 apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +622,Products,商品 apps/erpnext/erpnext/accounts/doctype/gl_entry/gl_entry.py +44,Party Type and Party is required for Receivable / Payable account {0},売掛金買掛金勘定{0}には圓事者タむプず圓事者が必芁です。 -DocType: Item,"If this item has variants, then it cannot be selected in sales orders etc.",この商品はバリアントを持っおいる堎合、それは受泚などで遞択するこずができたせん +DocType: Item,"If this item has variants, then it cannot be selected in sales orders etc.",このアむテムにバリ゚ヌションがある堎合、受泚などで遞択するこずができたせん DocType: Lead,Next Contact By,次回連絡 apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py +215,Quantity required for Item {0} in row {1},行{1}のアむテム{0}に必芁な数量 apps/erpnext/erpnext/stock/doctype/warehouse/warehouse.py +85,Warehouse {0} can not be deleted as quantity exists for Item {1},アむテム{1}が存圚するため倉庫{0}を削陀するこずができたせん @@ -1503,7 +1503,7 @@ apps/erpnext/erpnext/accounts/report/financial_statements.html +3,Too many colum DocType: Sales Invoice Item,Batch No,バッチ番号 apps/erpnext/erpnext/setup/doctype/company/company.py +149,Main,メむン DocType: DocPerm,Delete,削陀 -apps/erpnext/erpnext/stock/doctype/item/item_list.js +11,Variant,掟生 +apps/erpnext/erpnext/stock/doctype/item/item_list.js +11,Variant,バリ゚ヌション sites/assets/js/desk.min.js +931,New {0},新しい{0} DocType: Naming Series,Set prefix for numbering series on your transactions,取匕に連番の接頭蟞を蚭定 apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +154,Stopped order cannot be cancelled. Unstop to cancel.,停止された泚文はキャンセルできたせん。キャンセルするには停止解陀しおください @@ -1511,7 +1511,7 @@ apps/erpnext/erpnext/stock/doctype/item/item.py +175,Default BOM ({0}) must be a DocType: Employee,Leave Encashed?,珟金化された䌑暇 apps/erpnext/erpnext/crm/doctype/opportunity/opportunity.py +31,Opportunity From field is mandatory,機䌚元フィヌルドは必須です DocType: Sales Invoice,Considered as an Opening Balance,開始残高ずしお考慮 -DocType: Item,Variants,掟生 +DocType: Item,Variants,バリ゚ヌション apps/erpnext/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js +469,Make Purchase Order,発泚を䜜成 DocType: SMS Center,Send To,送信先 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +111,There is not enough leave balance for Leave Type {0},䌑暇タむプ{0}のための䌑暇残が足りたせん @@ -1541,11 +1541,11 @@ apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py +430,BOM {0} must be submi DocType: Authorization Control,Authorization Control,認蚌コントロヌル apps/erpnext/erpnext/config/projects.py +23,Time Log for tasks.,タスクの時間ログ DocType: Production Order Operation,Actual Time and Cost,実際の時間ずコスト -apps/erpnext/erpnext/stock/doctype/material_request/material_request.py +52,Material Request of maximum {0} can be made for Item {1} against Sales Order {2},材料芁求の最倧倀{0}は、泚{2}に察するアむテム{1}から䜜られたす +apps/erpnext/erpnext/stock/doctype/material_request/material_request.py +52,Material Request of maximum {0} can be made for Item {1} against Sales Order {2},資材芁求の最倧倀{0}は、泚{2}に察するアむテム{1}から䜜られたす DocType: Employee,Salutation,敬称䟋Mr. Ms. DocType: Quality Inspection Reading,Rejected,拒吊 DocType: Pricing Rule,Brand,ブランド -DocType: Item,Will also apply for variants,掟生に぀いおも適甚されたす +DocType: Item,Will also apply for variants,バリ゚ヌションに぀いおも適甚されたす apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.js +601,% Delivered,玍品枈 apps/erpnext/erpnext/config/selling.py +153,Bundle items at time of sale.,販売時に商品をたずめる DocType: Sales Order Item,Actual Qty,実際の数量 @@ -1581,7 +1581,7 @@ apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +37,"Selling DocType: Purchase Order Item,Supplier Quotation Item,サプラむダヌ芋積アむテム apps/erpnext/erpnext/hr/doctype/employee/employee.js +27,Make Salary Structure,絊䞎䜓系を䜜成 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +53,Shearing,シアリング -DocType: Item,Has Variants,掟生あり +DocType: Item,Has Variants,バリ゚ヌションあり apps/erpnext/erpnext/projects/doctype/time_log_batch/time_log_batch.js +22,Click on 'Make Sales Invoice' button to create a new Sales Invoice.,新しい売䞊請求曞を䜜成するために「請求曞を䜜成」ボタンをクリックしおください。 apps/erpnext/erpnext/controllers/recurring_document.py +166,Period From and Period To dates mandatory for recurring %s,繰り返し %s には期間の開始・終了日が必須です DocType: Journal Entry Account,Against Expense Claim,察経費請求 @@ -1627,7 +1627,7 @@ apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +274,Please apps/erpnext/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py +44,{0} payment entries can not be filtered by {1},{0}の支払い゚ントリは{1}によっおフィルタリングするこずができたせん DocType: Item Website Specification,Table for Item that will be shown in Web Site,Webサむトに衚瀺されたアむテムの衚 DocType: Purchase Order Item Supplied,Supplied Qty,サプラむ数量 -DocType: Material Request Item,Material Request Item,材料芁求アむテム +DocType: Material Request Item,Material Request Item,資材芁求アむテム apps/erpnext/erpnext/config/stock.py +108,Tree of Item Groups.,アむテムグルヌプのツリヌ apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js +100,Cannot refer row number greater than or equal to current row number for this Charge type,この請求タむプの行数以䞊の行番号を参照するこずはできたせん ,Item-wise Purchase History,アむテムごずの仕入履歎 @@ -1649,7 +1649,7 @@ DocType: Item Group,Show In Website,りェブサむトで衚瀺 apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +621,Group,グルヌプ DocType: Task,Expected Time (in hours),予定時間時 ,Qty to Order,泚文数 -DocType: Features Setup,"To track brand name in the following documents Delivery Note, Opportunity, Material Request, Item, Purchase Order, Purchase Voucher, Purchaser Receipt, Quotation, Sales Invoice, Product Bundle, Sales Order, Serial No",以䞋の曞類の玍品曞、機䌚、玠材䟝頌、アむテム、賌買発泚、賌買䌝祚、賌入者の領収曞、芋積、玍品曞、補品バンドル、受泚、シリアル番号にブランド名を远跡​​するために、 +DocType: Features Setup,"To track brand name in the following documents Delivery Note, Opportunity, Material Request, Item, Purchase Order, Purchase Voucher, Purchaser Receipt, Quotation, Sales Invoice, Product Bundle, Sales Order, Serial No",ブランド名を远跡​​するための次の文曞玍品曞、機䌚、資材芁求、アむテム、仕入発泚、賌入䌝祚、玍品曞、芋積、請求、補品付属品、受泚、シリアル番号 DocType: Sales Order,PO No,発泚番号 apps/erpnext/erpnext/config/projects.py +51,Gantt chart of all tasks.,すべおのタスクのガントチャヌト DocType: Appraisal,For Employee Name,埓業員名甚 @@ -1847,7 +1847,7 @@ apps/erpnext/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.p DocType: Delivery Note,Date on which lorry started from your warehouse,倉庫から茞送が開始された日 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +50,Technology,技術 DocType: Offer Letter,Offer Letter,雇甚契玄曞 -apps/erpnext/erpnext/config/manufacturing.py +51,Generate Material Requests (MRP) and Production Orders.,材料芁求MRPず補造指瀺を生成 +apps/erpnext/erpnext/config/manufacturing.py +51,Generate Material Requests (MRP) and Production Orders.,資材芁求MRPず補造指瀺を生成 apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +68,Total Invoiced Amt,請求額合蚈 DocType: Time Log,To Time,終了時間 apps/erpnext/erpnext/accounts/page/accounts_browser/accounts_browser.js +25,"To add child nodes, explore tree and click on the node under which you want to add more nodes.",子ノヌドを远加するには、ツリヌを展開し、増やしたいノヌドの䞋をクリックしおください @@ -1927,7 +1927,7 @@ DocType: Cost Center,Track separate Income and Expense for product verticals or DocType: Rename Tool,Rename Tool,ツヌル名称倉曎 apps/erpnext/erpnext/manufacturing/doctype/bom/bom.js +15,Update Cost,費甚曎新 DocType: Item Reorder,Item Reorder,アむテム再泚文 -apps/erpnext/erpnext/stock/doctype/material_request/material_request.js +508,Transfer Material,材料移転 +apps/erpnext/erpnext/stock/doctype/material_request/material_request.js +508,Transfer Material,資材配送 DocType: BOM,"Specify the operations, operating cost and give a unique Operation no to your operations.",「運甚」には「運甚コスト」「固有の運甚番号」を指定しおください。 DocType: Purchase Invoice,Price List Currency,䟡栌衚の通貚 DocType: Naming Series,User must always select,ナヌザヌは垞に遞択する必芁がありたす @@ -2016,7 +2016,7 @@ apps/erpnext/erpnext/config/crm.py +91,Newsletter Mailing List,ニュヌスレ DocType: Delivery Note,Transporter Name,茞送者名 DocType: Contact,Enter department to which this Contact belongs,この連絡先の所属郚眲を入力しおください apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +56,Total Absent,欠垭蚈 -apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +658,Item or Warehouse for row {0} does not match Material Request,行{0}のアむテムたたは倉庫が材料芁求ず䞀臎しおいたせん +apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +658,Item or Warehouse for row {0} does not match Material Request,行{0}のアむテムたたは倉庫が資材芁求ず䞀臎しおいたせん apps/erpnext/erpnext/config/stock.py +114,Unit of Measure,数量単䜍 DocType: Fiscal Year,Year End Date,幎終日 DocType: Task Depends On,Task Depends On,䟝存するタスク @@ -2028,13 +2028,13 @@ DocType: Email Digest,Inventory & Support,圚庫サポヌト DocType: Notification Control,Expense Claim Approved Message,経費請求を承認メッセヌゞ DocType: Email Digest,How frequently?,どのくらいの頻床 DocType: Purchase Receipt,Get Current Stock,圚庫状況を取埗 -apps/erpnext/erpnext/config/manufacturing.py +63,Tree of Bill of Materials,マテリアルのビルの朚 +apps/erpnext/erpnext/config/manufacturing.py +63,Tree of Bill of Materials,郚品衚ツリヌ apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.js +612,Make Installation Note,蚭眮祚を䜜成 apps/erpnext/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py +208,Maintenance start date can not be before delivery date for Serial No {0},メンテナンスの開始日は、シリアル番号{0}の玍品日より前にするこずはできたせん DocType: Production Order,Actual End Date,実際の終了日 DocType: Authorization Rule,Applicable To (Role),圹割に適甚 DocType: Stock Entry,Purpose,目的 -DocType: Item,Will also apply for variants unless overrridden,䞊曞きされない限り、掟生に぀いおも適甚されたす +DocType: Item,Will also apply for variants unless overrridden,䞊曞きされない限り、バリ゚ヌションに぀いおも適甚されたす DocType: Purchase Invoice,Advances,前払金 apps/erpnext/erpnext/setup/doctype/authorization_rule/authorization_rule.py +32,Approving User cannot be same as user the rule is Applicable To,承認ナヌザヌは、ルヌル適甚察象ナヌザヌず同じにするこずはできたせん DocType: SMS Log,No of Requested SMS,芁求されたSMSの数 @@ -2100,7 +2100,7 @@ The tax rate you define here will be the standard tax rate for all **Items**. If 10. 远加控陀 远加か控陀かを遞択したす" DocType: Note,Note,ノヌト -DocType: Email Digest,New Material Requests,新しい材料のリク゚スト +DocType: Email Digest,New Material Requests,新しい資材芁求 DocType: Purchase Receipt Item,Recd Quantity,受領数量 DocType: Email Account,Email Ids,メヌルアドレス apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +100,Cannot produce more Item {0} than Sales Order quantity {1},受泚数{1}より倚くのアむテム{0}を補造するこずはできたせん @@ -2132,7 +2132,7 @@ DocType: Lead,Fax,FAX DocType: Purchase Taxes and Charges,Parenttype,芪タむプ sites/assets/js/list.min.js +26,Submitted,提出枈 DocType: Salary Structure,Total Earning,収益合蚈 -DocType: Purchase Receipt,Time at which materials were received,材料受領時刻 +DocType: Purchase Receipt,Time at which materials were received,資材受領時刻 apps/erpnext/erpnext/utilities/doctype/address/address.py +110,My Addresses,私のアドレス DocType: Stock Ledger Entry,Outgoing Rate,発信レヌト apps/erpnext/erpnext/config/hr.py +100,Organization branch master.,組織支郚マスタヌ。 @@ -2178,9 +2178,9 @@ apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +68,Flatteni DocType: Account,Income Account,収益勘定 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +21,Molding,モヌルディング DocType: Stock Reconciliation Item,Current Qty,珟圚の数量 -DocType: BOM Item,"See ""Rate Of Materials Based On"" in Costing Section",原䟡蚈算セクションの「原料の占める割合」を参照しおください。 +DocType: BOM Item,"See ""Rate Of Materials Based On"" in Costing Section",原䟡蚈算セクションの「原材料の占める割合」を参照しおください。 DocType: Appraisal Goal,Key Responsibility Area,重芁責任分野 -DocType: Item Reorder,Material Request Type,材料芁求タむプ +DocType: Item Reorder,Material Request Type,資材芁求タむプ apps/frappe/frappe/desk/moduleview.py +61,Documents,文曞 apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +17,Ref,参照 DocType: Cost Center,Cost Center,コストセンタヌ @@ -2313,7 +2313,7 @@ DocType: Salary Slip,Gross Pay + Arrear Amount +Encashment Amount - Total Deduct DocType: Monthly Distribution,Distribution Name,配垃名 DocType: Features Setup,Sales and Purchase,販売ず仕入 DocType: Pricing Rule,Price / Discount,䟡栌割匕 -DocType: Purchase Order Item,Material Request No,材料芁求番号 +DocType: Purchase Order Item,Material Request No,資材芁求番号 apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +202,Quality Inspection required for Item {0},アむテム{0}に必芁な品質怜査 DocType: Quotation,Rate at which customer's currency is converted to company's base currency,顧客の通貚が䌚瀟の基本通貚に換算されるレヌト apps/erpnext/erpnext/crm/doctype/newsletter/newsletter.py +106,{0} has been successfully unsubscribed from this list.,このリストから{0}を正垞に解陀したした。 @@ -2326,7 +2326,7 @@ DocType: Sales Invoice Item,Time Log Batch,時間ログバッチ apps/erpnext/erpnext/controllers/taxes_and_totals.py +332,Please select Apply Discount On,「割匕を適甚」を遞択しおください DocType: Company,Default Receivable Account,デフォルト売掛金勘定 DocType: Process Payroll,Create Bank Entry for the total salary paid for the above selected criteria,䞊蚘遞択条件に支払われる総絊䞎のための銀行゚ントリを䜜成 -DocType: Stock Entry,Material Transfer for Manufacture,補造甚材料移送 +DocType: Stock Entry,Material Transfer for Manufacture,補造甚資材移送 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js +18,Discount Percentage can be applied either against a Price List or for all Price List.,割匕率は、䟡栌衚に察しお、たたはすべおの䟡栌リストのいずれかを適甚するこずができたす。 DocType: Purchase Invoice,Half-yearly,半幎ごず apps/erpnext/erpnext/accounts/report/financial_statements.py +16,Fiscal Year {0} not found.,䌚蚈幎床{0}が芋぀かりたせん @@ -2349,7 +2349,7 @@ apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +150,Target wareho DocType: Quality Inspection,Quality Inspection,品質怜査 apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +144,Extra Small,XS apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +19,Spray forming,溶射成圢 -apps/erpnext/erpnext/stock/doctype/material_request/material_request.js +469,Warning: Material Requested Qty is less than Minimum Order Qty,譊告材料の泚文数が泚文最小数を䞋回っおいたす。 +apps/erpnext/erpnext/stock/doctype/material_request/material_request.js +469,Warning: Material Requested Qty is less than Minimum Order Qty,譊告資材芁求数が泚文最小数を䞋回っおいたす。 apps/erpnext/erpnext/accounts/doctype/gl_entry/gl_entry.py +168,Account {0} is frozen,アカりント{0}は凍結されおいたす DocType: Company,Legal Entity / Subsidiary with a separate Chart of Accounts belonging to the Organization.,組織内で別々の勘定科目を持぀法人子䌚瀟 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +28,"Food, Beverage & Tobacco",食品、飲料タバコ @@ -2359,7 +2359,7 @@ apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_re DocType: Stock Entry,Subcontract,䞋請 DocType: Production Planning Tool,Get Items From Sales Orders,受泚からアむテムを取埗 DocType: Production Order Operation,Actual End Time,実際の終了時間 -DocType: Production Planning Tool,Download Materials Required,必芁なものをダりンロヌド +DocType: Production Planning Tool,Download Materials Required,所芁資材をダりンロヌド DocType: Item,Manufacturer Part Number,メヌカヌ品番 DocType: Production Order Operation,Estimated Time and Cost,掚定所芁時間ず費甚 DocType: Bin,Bin,保管堎所 @@ -2373,7 +2373,7 @@ DocType: Maintenance Visit,Scheduled,スケゞュヌル蚭定枈 apps/erpnext/erpnext/selling/doctype/product_bundle/product_bundle.js +13,"Please select Item where ""Is Stock Item"" is ""No"" and ""Is Sales Item"" is ""Yes"" and there is no other Product Bundle",「いいえ」ず「販売項目は「 "圚庫アむテムである"ここで "はい"であるアむテムを遞択し、他の補品バンドルがありたせんしおください。 DocType: Sales Partner,Select Monthly Distribution to unevenly distribute targets across months.,月をたたがっおタヌゲットを䞍均等に配分するには、「月次配分」を遞択しおください DocType: Purchase Invoice Item,Valuation Rate,評䟡額 -apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.js +38,Create Variants,バリアントを䜜成 +apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.js +38,Create Variants,バリ゚ヌションを䜜成 apps/erpnext/erpnext/stock/get_item_details.py +252,Price List Currency not selected,䟡栌衚の通貚が遞択されおいたせん apps/erpnext/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py +63,Item Row {0}: Purchase Receipt {1} does not exist in above 'Purchase Receipts' table,アむテムの行{0}領収曞{1}は䞊蚘の「領収曞」テヌブルに存圚したせん DocType: Pricing Rule,Applicability,適甚性 @@ -2452,7 +2452,7 @@ DocType: Expense Claim,"A user with ""Expense Approver"" role",「経費承認 DocType: Pricing Rule,Purchase Manager,仕入マネヌゞャヌ DocType: Payment Tool,Payment Tool,支払ツヌル DocType: Target Detail,Target Detail,タヌゲット詳现 -DocType: Sales Order,% of materials billed against this Sales Order,この受泚に察しお請求される材料の +DocType: Sales Order,% of materials billed against this Sales Order,の資材が請求枈この受泚を察象 apps/erpnext/erpnext/accounts/report/trial_balance/trial_balance.js +50,Period Closing Entry,決算゚ントリヌ apps/erpnext/erpnext/accounts/doctype/cost_center/cost_center.py +62,Cost Center with existing transactions can not be converted to group,既存の取匕があるコストセンタヌは、グルヌプに倉換するこずはできたせん apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +90,Depreciation,枛䟡償华 @@ -2465,7 +2465,7 @@ DocType: Purchase Receipt,LR Date,Lorry Receipt Date apps/erpnext/erpnext/accounts/page/pos/pos_page.html +4,Select type of transaction,取匕タむプを遞択 DocType: GL Entry,Voucher No,䌝祚番号 DocType: Leave Allocation,Leave Allocation,䌑暇割圓 -apps/erpnext/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py +389,Material Requests {0} created,材料芁求{0}は䜜成枈 +apps/erpnext/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py +389,Material Requests {0} created,資材芁求{0}は䜜成枈 apps/erpnext/erpnext/config/selling.py +122,Template of terms or contract.,芏玄・契玄甚テンプレヌト DocType: Customer,Last Day of the Next Month,次の月の最埌の日 DocType: Employee,Feedback,フィヌドバック @@ -2505,14 +2505,14 @@ DocType: Features Setup,"Check if you need automatic recurring invoices. After s DocType: Account,Accounts Manager,䌚蚈管理者 apps/erpnext/erpnext/projects/doctype/time_log_batch/time_log_batch.py +36,Time Log {0} must be 'Submitted',時間ログ{0}は「提出枈」でなければなりたせん DocType: Stock Settings,Default Stock UOM,デフォルト圚庫数量単䜍 -DocType: Production Planning Tool,Create Material Requests,玠材の芁求を䜜成 +DocType: Production Planning Tool,Create Material Requests,資材芁求を䜜成 DocType: Employee Education,School/University,å­Šæ ¡/倧孊 DocType: Sales Invoice Item,Available Qty at Warehouse,倉庫の利甚可胜数量 ,Billed Amount,請求金額 DocType: Bank Reconciliation,Bank Reconciliation,銀行勘定調敎 apps/erpnext/erpnext/templates/includes/footer/footer_extension.html +9,Get Updates,アップデヌトを入手 DocType: Purchase Invoice,Total Amount To Pay,支払合蚈 -apps/erpnext/erpnext/stock/doctype/material_request/material_request.py +174,Material Request {0} is cancelled or stopped,材料芁求{0}はキャンセルたたは停止されおいたす +apps/erpnext/erpnext/stock/doctype/material_request/material_request.py +174,Material Request {0} is cancelled or stopped,資材芁求{0}はキャンセルたたは停止されおいたす apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +641,Add a few sample records,いく぀かのサンプル·レコヌドを远加したす。 apps/erpnext/erpnext/config/learn.py +174,Leave Management,管理を残したす DocType: Event,Groups,グルヌプ @@ -2547,7 +2547,7 @@ apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +61,Quotation {0 DocType: Maintenance Schedule Item,Maintenance Schedule Item,メンテナンス予定アむテム DocType: Sales Order,% Delivered,玍品枈 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +177,Bank Overdraft Account,銀行圓座貞越口座 -apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +164,Item Variants {0} renamed,項目バリアント{0}は、名前を倉曎 +apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +164,Item Variants {0} renamed,アむテムバリ゚ヌション{0}名称倉曎枈 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.js +15,Make Salary Slip,絊䞎䌝祚を䜜成 apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.js +85,Unstop,停止解陀 apps/erpnext/erpnext/manufacturing/doctype/bom/bom.js +18,Browse BOM,ブラりズBOM @@ -2578,7 +2578,7 @@ DocType: BOM Operation,Hour Rate,時絊 DocType: Stock Settings,Item Naming By,アむテム呜名 apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.js +637,From Quotation,芋積から apps/erpnext/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py +35,Another Period Closing Entry {0} has been made after {1},別の期間の決算仕蚳 {0} が {1} の埌に䜜成されおいたす -DocType: Production Order,Material Transferred for Manufacturing,補造のために移蚭された材料 +DocType: Production Order,Material Transferred for Manufacturing,補造甚移蚭資材 apps/erpnext/erpnext/accounts/report/general_ledger/general_ledger.py +25,Account {0} does not exists,アカりント{0}が存圚したせん DocType: Purchase Receipt Item,Purchase Order Item No,発泚アむテム番号 DocType: System Settings,System Settings,システム蚭定 @@ -2669,7 +2669,7 @@ DocType: Newsletter,Newsletter List,ニュヌスレタヌリスト DocType: Process Payroll,Check if you want to send salary slip in mail to each employee while submitting salary slip,絊䞎明现を登録する時に、各埓業員ぞメヌルで絊䞎明现を送信したい堎合チェック DocType: Lead,Address Desc,䜏所皮別 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +33,Atleast one of the Selling or Buying must be selected,販売たたは賌入のいずれかを遞択する必芁がありたす -apps/erpnext/erpnext/stock/doctype/item/item.js +195,"Variants can not be created manually, add item attributes in the template item",「掟生」は手動で䜜成するこずができたせん。テンプレヌトアむテムにアむテム属性を远加しおください +apps/erpnext/erpnext/stock/doctype/item/item.js +195,"Variants can not be created manually, add item attributes in the template item",「バリ゚ヌション」は手動で䜜成するこずができたせん。テンプレヌトアむテムにアむテム属性を远加しおください apps/erpnext/erpnext/config/manufacturing.py +34,Where manufacturing operations are carried.,補造䜜業が行なわれる堎所 DocType: Page,All,すべお DocType: Stock Entry Detail,Source Warehouse,出庫元 @@ -2683,7 +2683,7 @@ DocType: Item,Warehouse-wise Reorder Levels,倉庫ごずの再泚文レベル DocType: Lead,Lead Owner,リヌド所有者 apps/erpnext/erpnext/accounts/page/accounts_browser/accounts_browser.js +245,Warehouse is required,倉庫が必芁です DocType: Employee,Marital Status,配偶者の有無 -DocType: Stock Settings,Auto Material Request,自動材料芁求 +DocType: Stock Settings,Auto Material Request,自動資材芁求 DocType: Time Log,Will be updated when billed.,蚘垳時に曎新されたす。 apps/erpnext/erpnext/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py +25,Current BOM and New BOM can not be same,「珟圚の郚品衚」ず「新しい郚品衚」は同じにするこずはできたせん apps/erpnext/erpnext/hr/doctype/employee/employee.py +111,Date Of Retirement must be greater than Date of Joining,退職日は入瀟日より埌でなければなりたせん @@ -2725,7 +2725,7 @@ DocType: Opportunity,From,から apps/erpnext/erpnext/accounts/page/accounts_browser/accounts_browser.js +196,Select a group node first.,はじめにグルヌプノヌドを遞択しおください apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +76,Purpose must be one of {0},目的は、{0}のいずれかである必芁がありたす apps/erpnext/erpnext/hr/doctype/expense_claim/expense_claim.js +105,Fill the form and save it,フォヌムに入力しお保存したす -DocType: Production Planning Tool,Download a report containing all raw materials with their latest inventory status,最新の圚庫状況ずのすべおの原料を含むレポヌトをダりンロヌド +DocType: Production Planning Tool,Download a report containing all raw materials with their latest inventory status,最新の圚庫状況ずのすべおの原材料を含むレポヌトをダりンロヌド apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +93,Facing,察向 DocType: Leave Application,Leave Balance Before Application,申請前䌑暇残数 DocType: SMS Center,Send SMS,SMSを送信 @@ -2753,7 +2753,7 @@ DocType: Sales Invoice,Rounded Total,合蚈四捚五入 DocType: Product Bundle,List items that form the package.,梱包を圢成するリストアむテム apps/erpnext/erpnext/accounts/doctype/monthly_distribution/monthly_distribution.py +26,Percentage Allocation should be equal to 100%,割合の割り圓おは100パヌセントに等しくなければなりたせん DocType: Serial No,Out of AMC,幎間保守契玄倖 -DocType: Purchase Order Item,Material Request Detail No,材料芁求の詳现番号 +DocType: Purchase Order Item,Material Request Detail No,資材芁求の詳现番号 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +96,Hard turning,ハヌドタヌニング apps/erpnext/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.js +33,Make Maintenance Visit,メンテナンス蚪問を䜜成 apps/erpnext/erpnext/selling/doctype/customer/customer.py +168,Please contact to the user who have Sales Master Manager {0} role,販売マスタヌマネヌゞャヌ{0}の圹割を持っおいるナヌザヌに連絡しおください @@ -2821,7 +2821,7 @@ apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +17,Sand cas apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +116,Electroplating,電気めっき DocType: Purchase Invoice Item,Rate,単䟡率 apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +62,Intern,むンタヌン -DocType: Manage Variants Item,Manage Variants Item,バリアント項目を管理したす +DocType: Manage Variants Item,Manage Variants Item,バリ゚ヌションアむテム管理 DocType: Newsletter,A Lead with this email id should exist,このメヌルアドレスを持぀リヌドが必芁です DocType: Stock Entry,From BOM,参照元郚品衚 DocType: Time Log,Billing Rate (per hour),請求料率毎時 @@ -2838,7 +2838,7 @@ apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +237,"Multipl 䟡栌ルヌル{0}" DocType: Account,Bank,銀行 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +8,Airline,航空䌚瀟 -apps/erpnext/erpnext/stock/doctype/material_request/material_request.js +512,Issue Material,課題材料 +apps/erpnext/erpnext/stock/doctype/material_request/material_request.js +512,Issue Material,資材課題 DocType: Material Request Item,For Warehouse,倉庫甚 DocType: Employee,Offer Date,雇甚契玄日 DocType: Hub Settings,Access Token,アクセストヌクン @@ -2864,7 +2864,7 @@ DocType: Shipping Rule,Calculate Based On,ベヌス䞊での蚈算 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +97,Drilling,蚓緎 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +27,Blow molding,ブロヌ成圢 DocType: Purchase Taxes and Charges,Valuation and Total,評䟡ず総合 -apps/erpnext/erpnext/stock/doctype/item/item.js +35,This Item is a Variant of {0} (Template). Attributes will be copied over from the template unless 'No Copy' is set,この商品は、{0}テンプレヌトのバリアントです。「コピヌしない」が蚭定されおいない限り、属性は、テンプレヌトからコピヌされたす +apps/erpnext/erpnext/stock/doctype/item/item.js +35,This Item is a Variant of {0} (Template). Attributes will be copied over from the template unless 'No Copy' is set,この商品は、{0}テンプレヌトのバリ゚ヌションです。「コピヌしない」が蚭定されおいない限り、属性は、テンプレヌトからコピヌされたす DocType: Account,Purchase User,仕入ナヌザヌ DocType: Sales Order,Customer's Purchase Order Number,顧客の発泚番号 DocType: Notification Control,Customize the Notification,通知をカスタマむズ @@ -2906,14 +2906,14 @@ apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standar apps/erpnext/erpnext/controllers/trends.py +19,Total(Amt),合蚈数 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +25,Entertainment & Leisure,゚ンタヌテむンメントレゞャヌ DocType: Purchase Order,The date on which recurring order will be stop,繰り返し泚文停止予定日 -apps/erpnext/erpnext/stock/doctype/item_attribute/item_attribute.py +36,Attribute Value {0} cannot be removed from {1} as Item Variants exist with this Attribute.,属性倀は{0} {1}項目バリアントがこの属性に存圚するようにから削陀するこずはできたせん。 +apps/erpnext/erpnext/stock/doctype/item_attribute/item_attribute.py +36,Attribute Value {0} cannot be removed from {1} as Item Variants exist with this Attribute.,この属性倀{0}にはアむテムバリ゚ヌションがあるため、属性倀を{1}から削陀するこずはできたせん DocType: Quality Inspection,Item Serial No,アむテムシリアル番号 apps/erpnext/erpnext/controllers/status_updater.py +116,{0} must be reduced by {1} or you should increase overflow tolerance,{0}は {1}より枛少させなければならないか、オヌバヌフロヌ蚱容倀を増やす必芁がありたす apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +56,Total Present,総珟圚䟡倀 apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +627,Hour,時 apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +138,"Serialized Item {0} cannot be updated \ using Stock Reconciliation",シリアル番号が付䞎されたアむテム{0}は「圚庫棚卞」を䜿甚しお曎新するこずはできたせん -apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +476,Transfer Material to Supplier,サプラむダヌに材料を配送 +apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +476,Transfer Material to Supplier,サプラむダヌに資材を配送 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +30,New Serial No cannot have Warehouse. Warehouse must be set by Stock Entry or Purchase Receipt,新しいシリアル番号には倉庫を指定するこずができたせん。倉庫は圚庫゚ントリヌか領収曞によっお蚭定する必芁がありたす DocType: Lead,Lead Type,リヌドタむプ apps/erpnext/erpnext/crm/doctype/opportunity/opportunity.js +77,Create Quotation,芋積を登録 @@ -2979,7 +2979,7 @@ DocType: Purchase Invoice,Supplier Address,サプラむダヌ䜏所 DocType: Contact Us Settings,Address Line 2,䜏所2行目 DocType: ToDo,Reference,リファレンス apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +58,Perforating,穿孔 -apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +65,Selected Item cannot have Variants.,遞択した項目は、バリアントを持぀こずはできたせん。 +apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +65,Selected Item cannot have Variants.,遞択した項目は、バリ゚ヌションを持぀こずはできたせん。 apps/erpnext/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py +36,Out Qty,出量 apps/erpnext/erpnext/config/accounts.py +123,Rules to calculate shipping amount for a sale,販売のために出荷量を蚈算するルヌル apps/erpnext/erpnext/selling/doctype/customer/customer.py +31,Series is mandatory,シリヌズは必須です @@ -3084,7 +3084,7 @@ apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +212,{0} Serial Number DocType: Naming Series,Check this if you want to force the user to select a series before saving. There will be no default if you check this.,あなたが保存する前に、䞀連の遞択をナヌザに匷制したい堎合は、これを確認しおください。これをチェックするずデフォルトはありたせん。 apps/erpnext/erpnext/stock/get_item_details.py +107,No Item with Serial No {0},シリアル番号{0}のアむテムはありたせん apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +68,Direct Expenses,盎接経費 -apps/erpnext/erpnext/stock/doctype/material_request/material_request.js +646,Do you really want to UNSTOP this Material Request?,この材料芁求の停止を解陀したすか +apps/erpnext/erpnext/stock/doctype/material_request/material_request.js +646,Do you really want to UNSTOP this Material Request?,この資材芁求の停止を解陀したすか apps/erpnext/erpnext/selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.py +60,New Customer Revenue,新芏顧客の収益 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +132,Travel Expenses,旅費亀通費 DocType: Maintenance Visit,Breakdown,故障 @@ -3109,7 +3109,7 @@ apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +629,We sell this I apps/erpnext/erpnext/accounts/report/purchase_register/purchase_register.py +65,Supplier Id,サプラむダヌID DocType: Journal Entry,Cash Entry,珟金゚ントリヌ DocType: Sales Partner,Contact Desc,連絡先説明 -apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +158,Item Variants {0} created,アむテム掟生{0}を䜜成したした +apps/erpnext/erpnext/stock/doctype/manage_variants/manage_variants.py +158,Item Variants {0} created,アむテムバリ゚ヌション{0}を䜜成したした apps/erpnext/erpnext/config/hr.py +135,"Type of leaves like casual, sick etc.",䌑暇の皮類欠勀・病欠など DocType: Email Digest,Send regular summary reports via Email.,メヌル経由で定期的な芁玄レポヌトを送信 DocType: Brand,Item Manager,項目マネヌゞャ @@ -3242,7 +3242,7 @@ apps/erpnext/erpnext/accounts/report/general_ledger/general_ledger.py +32,"Can n apps/erpnext/erpnext/stock/doctype/material_request/material_request.js +503,Make Supplier Quotation,サプラむダ芋積を䜜成 DocType: Quality Inspection,Incoming,収入 apps/erpnext/erpnext/stock/doctype/item/item.py +131,"Default Unit of Measure can not be changed directly because you have already made some transaction(s) with another UOM. To change default UOM, use 'UOM Replace Utility' tool under Stock module.",すでに別の単䜍で䞀郚の取匕を行っおいるため、デフォルトの単䜍を盎接倉曎するこずはできたせん。デフォルトの単䜍を倉曎するには、圚庫モゞュヌル䞋の「単䜍倉換ナヌティリティ」ツヌルを䜿甚したす。 -DocType: BOM,Materials Required (Exploded),材料が必芁です展開 +DocType: BOM,Materials Required (Exploded),資材が必芁です展開 DocType: Salary Structure Earning,Reduce Earning for Leave Without Pay (LWP),無絊䌑暇LWPの所埗枛 apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +512,"Add users to your organization, other than yourself",自分以倖の、組織にナヌザヌを远加したす apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +44,Casual Leave,臚時䌑暇 @@ -3291,19 +3291,19 @@ DocType: Purchase Invoice,Exchange Rate,為替レヌト apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +410,Sales Order {0} is not submitted,受泚{0}は提出されおいたせん apps/erpnext/erpnext/stock/doctype/warehouse/warehouse.py +74,Warehouse {0}: Parent account {1} does not bolong to the company {2},倉庫{0}芪口座{1}は䌚瀟{2}に属しおいたせん apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +123,Spindle finishing,スピンドル仕䞊げ -DocType: Material Request,% of materials ordered against this Material Request,この材料芁求に察しお受泚した材料の +DocType: Material Request,% of materials ordered against this Material Request,の資材が泚文枈この資材芁求を察象 DocType: BOM,Last Purchase Rate,最新の仕入料金 DocType: Account,Asset,資産 DocType: Project Task,Task ID,タスクID apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +395,"e.g. ""MC""",䟋「MC」 -apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +82,Stock cannot exist for Item {0} since has variants,掟生を有しおいるのでアむテム{0}の圚庫は存圚させるこずができたせん +apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +82,Stock cannot exist for Item {0} since has variants,バリ゚ヌションを有しおいるのでアむテム{0}の圚庫は存圚させるこずができたせん ,Sales Person-wise Transaction Summary,各営業担圓者の取匕抂芁 DocType: System Settings,Time Zone,時間垯 apps/erpnext/erpnext/stock/doctype/warehouse/warehouse.py +104,Warehouse {0} does not exist,倉庫{0}は存圚したせん apps/erpnext/erpnext/hub_node/page/hub/register_in_hub.html +2,Register For ERPNext Hub,ERPNext Hubに登録する DocType: Monthly Distribution,Monthly Distribution Percentages,月次配分割合 apps/erpnext/erpnext/stock/doctype/batch/batch.py +16,The selected item cannot have Batch,遞択した項目はバッチを持おたせん -DocType: Delivery Note,% of materials delivered against this Delivery Note,の材料が玍品枈この玍品曞を察象 +DocType: Delivery Note,% of materials delivered against this Delivery Note,の資材が玍品枈この玍品曞を察象 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +150,Stapling,ステヌプル DocType: Customer,Customer Details,顧客の詳现 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +104,Shaping,圢削り @@ -3313,7 +3313,7 @@ DocType: Sales Invoice,Paid Amount,支払金額 apps/erpnext/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py +25,Closing Account {0} must be of type 'Liability',決算{0}はタむプ「負債」でなければなりたせん ,Available Stock for Packing Items,梱包可胜な圚庫 apps/erpnext/erpnext/controllers/stock_controller.py +237,Reserved Warehouse is missing in Sales Order,受泚に予玄倉庫がありたせん -DocType: Item Variant,Item Variant,アむテムバリアント +DocType: Item Variant,Item Variant,アむテムバリ゚ヌション apps/erpnext/erpnext/utilities/doctype/address_template/address_template.py +15,Setting this Address Template as default as there is no other default,他にデフォルトがないので、このアドレステンプレヌトをデフォルトずしお蚭定したす apps/erpnext/erpnext/accounts/doctype/account/account.py +71,"Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'",口座残高がすでに借方に存圚しおおり、「残高仕蚳先」を「貞方」に蚭定するこずはできたせん apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +76,Quality Management,品質管理 @@ -3352,7 +3352,7 @@ The package **Item** will have ""Is Stock Item"" as ""No"" and ""Is Sales Item"" For Example: If you are selling Laptops and Backpacks separately and have a special price if the customer buys both, then the Laptop + Backpack will be a new Product Bundle Item. -Note: BOM = Bill of Materials",別の**項目に**アむテムの集合グルヌプ** **。あなたがパッケヌゞに**特定**アむテムをバンドルしおいお、**詰め**アむテム**はなく、集蚈の株匏**項目を維持する堎合に䟿利です。パッケヌゞ**アむテム**「いいえ」ずしお「圚庫項目である」ず「はい」ず「販売項目である」必芁がありたす。䟋あなたが個別にラップトップずバックパックを販売し、顧客は䞡方を賌入する堎合は、特別な䟡栌を持っおいる堎合は、ノヌトパ゜コン+バックパックは、新しい補品バンドルアむテムになりたす。泚材料のBOM =ビル +Note: BOM = Bill of Materials",「アむテム」をグルヌプ化しお別の「アむテム」に入れたす。これはたずえば、ある耇数の「アむテム」を梱包し、個別の「アむテム」ではなく梱包された「アむテム」の圚庫を管理するような堎合に䟿利です。梱包「アむテム」は「圚庫アむテム」が「いいえ」ずなり、「販売アむテム」が「はい」になりたす。䟋えばノヌトパ゜コンずリュックサックを別々に販売しおいるずしお、顧客が䞡方を賌入した堎合に特別䟡栌ずするような堎合、ノヌトパ゜コンリュックサック、ずいう新たな補品付属品アむテムずなりたす。泚BOM =郚品衚 apps/erpnext/erpnext/selling/doctype/installation_note/installation_note.py +44,Serial No is mandatory for Item {0},アむテム{0}にはシリアル番号が必須です DocType: Variant Attribute,Attribute,属性 sites/assets/js/desk.min.js +622,Created By,によっお䜜成された @@ -3377,8 +3377,8 @@ apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +70,Max disco DocType: Account,Receivable,売掛金 DocType: Accounts Settings,Role that is allowed to submit transactions that exceed credit limits set.,蚭定された䞎信限床額を超えた取匕を提出するこずが蚱可されおいる圹割 DocType: Sales Invoice,Supplier Reference,サプラむダヌリファレンス -DocType: Production Planning Tool,"If checked, BOM for sub-assembly items will be considered for getting raw materials. Otherwise, all sub-assembly items will be treated as a raw material.",チェックするず、郚分組立品アむテムの「郚品衚」が原材料を埗るように考慮されたす。そうでなければ、党おの郚分組立品アむテムが原料ずしお扱われたす。 -DocType: Material Request,Material Issue,材料課題 +DocType: Production Planning Tool,"If checked, BOM for sub-assembly items will be considered for getting raw materials. Otherwise, all sub-assembly items will be treated as a raw material.",チェックするず、郚分組立品アむテムの「郚品衚」に原材料が組み蟌たれたす。そうでなければ、党おの郚分組立品アむテムが原材料ずしお扱われたす。 +DocType: Material Request,Material Issue,資材課題 DocType: Hub Settings,Seller Description,販売者の説明 DocType: Shopping Cart Price List,Shopping Cart Price List,ショッピングカヌト䟡栌衚 DocType: Employee Education,Qualification,資栌 @@ -3402,7 +3402,7 @@ DocType: Leave Block List,Applies to Company,䌚瀟に適甚 apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +161,Cannot cancel because submitted Stock Entry {0} exists,登録枈みの圚庫゚ントリ{0}が存圚するため、キャンセルするこずができたせん DocType: Purchase Invoice,In Words,文字衚蚘 apps/erpnext/erpnext/hr/doctype/employee/employee.py +208,Today is {0}'s birthday!,今日は {0} の誕生日です -DocType: Production Planning Tool,Material Request For Warehouse,倉庫ぞの材料芁求 +DocType: Production Planning Tool,Material Request For Warehouse,倉庫ぞの資材芁求 DocType: Sales Order Item,For Production,生産甚 apps/erpnext/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py +99,Please enter sales order in the above table,䞊蚘の衚に受泚を入力しおください DocType: Project Task,View Task,タスク衚瀺 @@ -3595,7 +3595,7 @@ DocType: Maintenance Schedule Detail,Scheduled Date,スケゞュヌル日付 apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +69,Total Paid Amt,支出額合蚈 DocType: SMS Center,Messages greater than 160 characters will be split into multiple messages,160文字を超えるメッセヌゞは耇数のメッセヌゞに分割されたす DocType: Purchase Receipt Item,Received and Accepted,受領・承認枈 -DocType: Item Attribute,"Lower the number, higher the priority in the Item Code suffix that will be created for this Item Attribute for the Item Variant","アむテム掟生の堎合に、アむテムコヌド内の接尟蟞ずしお、このアむテム属性が生成される。 +DocType: Item Attribute,"Lower the number, higher the priority in the Item Code suffix that will be created for this Item Attribute for the Item Variant","アむテムバリ゚ヌションの堎合に、アむテムコヌド内の接尟蟞ずしお、このアむテム属性が生成される。 小さい数字が高い優先順䜍ずなる。" ,Serial No Service Contract Expiry,シリアル番号サヌビス契玄の有効期限 DocType: Item,Unit of Measure Conversion,メゞャヌ倉換の単䜍 @@ -3717,9 +3717,9 @@ apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +68, apps/erpnext/erpnext/config/accounts.py +107,Default settings for accounting transactions.,䌚蚈凊理のデフォルト蚭定。 apps/frappe/frappe/model/naming.py +40,{0} is required,{0}が必芁です apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +20,Vacuum molding,真空成圢 -apps/erpnext/erpnext/stock/doctype/material_request/material_request.py +57,Expected Date cannot be before Material Request Date,予定日は材料芁求日の前にするこずはできたせん +apps/erpnext/erpnext/stock/doctype/material_request/material_request.py +57,Expected Date cannot be before Material Request Date,予定日は資材芁求日の前にするこずはできたせん DocType: Contact Us Settings,City,郜垂 -apps/erpnext/erpnext/config/stock.py +89,Manage Item Variants.,項目バリアントを管理したす。 +apps/erpnext/erpnext/config/stock.py +89,Manage Item Variants.,アむテムバリ゚ヌションを管理 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +131,Ultrasonic machining,超音波加工 apps/frappe/frappe/templates/base.html +133,Error: Not a valid id?,゚ラヌない有効なID apps/erpnext/erpnext/stock/get_item_details.py +125,Item {0} must be a Sales Item,アむテム{0}は販売アむテムでなければなりたせん @@ -3732,7 +3732,7 @@ apps/erpnext/erpnext/stock/report/bom_search/bom_search.js +38,Search Sub Assemb apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +324,Item Code required at Row No {0},行番号{0}にアむテムコヌドが必芁です DocType: Sales Partner,Partner Type,パヌトナヌの皮類 DocType: Purchase Taxes and Charges,Actual,実際 -DocType: Purchase Order,% of materials received against this Purchase Order,この発泚曞に察しお受領した材料の +DocType: Purchase Order,% of materials received against this Purchase Order,の資材が受領枈この発泚曞を察象 DocType: Authorization Rule,Customerwise Discount,顧客ごず割匕 DocType: Purchase Invoice,Against Expense Account,察経費 DocType: Production Order,Production Order,補造指瀺 @@ -3764,7 +3764,7 @@ apps/erpnext/erpnext/config/stock.py +43,Where items are stored.,アむテムが apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +19,Invoiced Amount,請求された額 DocType: Attendance,Attendance,出勀 DocType: Page,No,いいえ -DocType: BOM,Materials,材料 +DocType: BOM,Materials,資材 DocType: Leave Block List,"If not checked, the list will have to be added to each Department where it has to be applied.",チェックされおいない堎合、リストを適甚先の各カテゎリヌに远加しなくおはなりたせん apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +647,Make Delivery,玍品を䜜成 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +249,Posting date and posting time is mandatory,転蚘日時は必須です @@ -3833,7 +3833,7 @@ DocType: Email Digest,Income Year to Date,幎床収入 apps/erpnext/erpnext/config/setup.py +88,Create rules to restrict transactions based on values.,倀に基づいお取匕を制限するルヌルを䜜成 DocType: HR Settings,"If checked, Total no. of Working Days will include holidays, and this will reduce the value of Salary Per Day",チェックした堎合、営業日数は党お祝日を含みたすが、これにより1日あたりの絊䞎の倀は小さくなりたす DocType: Purchase Invoice,Total Advance,前払金蚈 -apps/erpnext/erpnext/stock/doctype/material_request/material_request.js +544,Unstop Material Request,材料芁求停止解陀 +apps/erpnext/erpnext/stock/doctype/material_request/material_request.js +544,Unstop Material Request,資材芁求停止解陀 DocType: Workflow State,User,ナヌザヌ DocType: Opportunity Item,Basic Rate,基本料金 apps/erpnext/erpnext/crm/doctype/opportunity/opportunity.js +122,Set as Lost,倱泚ずしお蚭定 @@ -3891,7 +3891,7 @@ apps/erpnext/erpnext/accounts/page/accounts_browser/accounts_browser.js +35,To c apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +233,Please enter Expense Account,経費勘定を入力しおください DocType: Account,Stock,圚庫 DocType: Employee,Current Address,珟䜏所 -DocType: Item,"If item is a variant of another item then description, image, pricing, taxes etc will be set from the template unless explicitly specified",アむテムが別のアむテムの掟生である堎合には、明瀺的に指定しない限り、その埌の説明、画像、䟡栌、皎金などはテンプレヌトから蚭定されたす +DocType: Item,"If item is a variant of another item then description, image, pricing, taxes etc will be set from the template unless explicitly specified",アむテムが別のアむテムのバリ゚ヌションである堎合には、明瀺的に指定しない限り、その埌の説明、画像、䟡栌、皎金などはテンプレヌトから蚭定されたす DocType: Serial No,Purchase / Manufacture Details,仕入補造の詳现 DocType: Employee,Contract End Date,契玄終了日 DocType: Sales Order,Track this Sales Order against any Project,任意のプロゞェクトに察しお、この受泚を远跡したす @@ -3912,7 +3912,7 @@ DocType: Purchase Invoice,Net Total (Company Currency),差匕蚈䌚瀟通貚 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +81,Row {0}: Party Type and Party is only applicable against Receivable / Payable account,行{0}パヌティヌ皮類ず党は売掛金/買掛金勘定に察しおのみ適甚されたす DocType: Notification Control,Purchase Receipt Message,領収曞のメッセヌゞ DocType: Production Order,Actual Start Date,実際の開始日 -DocType: Sales Order,% of materials delivered against this Sales Order,の材料が玍品枈この受泚を察象 +DocType: Sales Order,% of materials delivered against this Sales Order,の資材が玍品枈この受泚を察象 apps/erpnext/erpnext/config/stock.py +18,Record item movement.,レコヌドアむテムの移動 DocType: Newsletter List Subscriber,Newsletter List Subscriber,ニュヌスレタヌリスト賌読者 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +163,Morticing,Morticing @@ -3933,7 +3933,7 @@ apps/erpnext/erpnext/config/accounts.py +148,"Seasonality for setting budgets, t apps/erpnext/erpnext/accounts/doctype/payment_tool/payment_tool.js +191,Row {0}: Payment Amount cannot be greater than Outstanding Amount,行{0}支払金額は残高を超えるこずはできたせん apps/erpnext/erpnext/buying/doctype/supplier/supplier.js +46,Total Unpaid,未払いの合蚈 apps/erpnext/erpnext/projects/doctype/time_log/time_log_list.js +21,Time Log is not billable,時間ログは請求できたせん -apps/erpnext/erpnext/stock/get_item_details.py +128,"Item {0} is a template, please select one of its variants",アむテム{0}はテンプレヌトです。掟生のいずれかを遞択しおください +apps/erpnext/erpnext/stock/get_item_details.py +128,"Item {0} is a template, please select one of its variants",アむテム{0}はテンプレヌトです。バリ゚ヌションのいずれかを遞択しおください apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +528,Purchaser,賌入者 apps/erpnext/erpnext/hr/doctype/salary_structure/salary_structure.py +81,Net pay cannot be negative,絊䞎をマむナスにするこずはできたせん apps/erpnext/erpnext/accounts/doctype/payment_tool/payment_tool.py +70,Please enter the Against Vouchers manually,䌝祚を入力しおください @@ -3977,7 +3977,7 @@ apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +94,Designer, apps/erpnext/erpnext/config/selling.py +121,Terms and Conditions Template,芏玄のテンプレヌト DocType: Serial No,Delivery Details,玍品詳现 apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +363,Cost Center is required in row {0} in Taxes table for type {1},タむプ{1}のための皎金テヌブルの行{0}にコストセンタヌが必芁です -DocType: Item,Automatically create Material Request if quantity falls below this level,量がこのレベルを䞋回った堎合、自動的に玠材のリク゚ストを䜜成したす +DocType: Item,Automatically create Material Request if quantity falls below this level,量がこのレベルを䞋回った堎合、自動的に資材芁求を䜜成したす ,Item-wise Purchase Register,アむテムごずの仕入登録 DocType: Batch,Expiry Date,有効期限 ,Supplier Addresses and Contacts,サプラむダヌ䜏所・連絡先 diff --git a/erpnext/translations/ko.csv b/erpnext/translations/ko.csv index e1f44bd3071..bde3a83d17a 100644 --- a/erpnext/translations/ko.csv +++ b/erpnext/translations/ko.csv @@ -1003,7 +1003,7 @@ apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +364,Finished Item apps/erpnext/erpnext/config/learn.py +77,Opening Accounting Balance,개시 잔고 DocType: Sales Invoice Advance,Sales Invoice Advance,선행 견적서 apps/erpnext/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py +391,Nothing to request,요청하지 마 -apps/erpnext/erpnext/projects/doctype/task/task.py +38,'Actual Start Date' can not be greater than 'Actual End Date','싀제 시작 날짜는'싀제 종료 날짜 '볎닀 큎 수 없습니닀 +apps/erpnext/erpnext/projects/doctype/task/task.py +38,'Actual Start Date' can not be greater than 'Actual End Date','시작 날짜가' '종료 날짜 '볎닀 큎 수 없습니닀 apps/erpnext/erpnext/setup/page/setup_wizard/install_fixtures.py +75,Management,ꎀ늬 apps/erpnext/erpnext/config/projects.py +33,Types of activities for Time Sheets,시간 시튞륌위한 활동의 종류 apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +13,Investment casting,투자 죌조 @@ -1766,7 +1766,7 @@ DocType: Global Defaults,Default Company,Ʞ볞 회사 apps/erpnext/erpnext/controllers/stock_controller.py +167,Expense or Difference account is mandatory for Item {0} as it impacts overall stock value,비용읎나 찚읎 계정은 필수 항목에 대한 {0}에 영향을 믞치Ʞ 전첎 재고 가치로 apps/erpnext/erpnext/controllers/accounts_controller.py +299,"Cannot overbill for Item {0} in row {1} more than {2}. To allow overbilling, please set in Stock Settings",행의 항목 {0}에 대한 청구 되요 수 없습니닀 {1}볎닀 {2}.곌닀 청구가 재고 섀정에서 섀정하시Ʞ 바랍니닀 허용하렀멎 DocType: Employee,Bank Name,은행 읎늄 -apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.py +38,-Above,-Above +apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.py +38,-Above,-위 apps/erpnext/erpnext/hr/doctype/employee/employee.py +135,User {0} is disabled,{0} 사용자가 비활성화되얎 있습니닀 DocType: Leave Application,Total Leave Days,쎝 허가 음 DocType: Email Digest,Note: Email will not be sent to disabled users,ì°žê³  : 전자 메음을 사용할 사용자에게 전송되지 않습니닀 @@ -2509,7 +2509,7 @@ apps/erpnext/erpnext/accounts/utils.py +311,{0} budget for Account {1} against C apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +236,"Difference Account must be a Asset/Liability type account, since this Stock Reconciliation is an Opening Entry","윘텐잠 화핮는 ì—Žêž° 항목읎Ʞ 때묞에 찚읎 계정, 자산 / 부채 형 계정읎얎알합니닀" apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +123,Purchase Order number required for Item {0},구맀 죌묞 번혞 항목에 필요한 {0} DocType: Leave Allocation,Carry Forwarded Leaves,전달 잎을 욎반 -apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py +18,'From Date' must be after 'To Date','시작음자'는 '마감음자'읎후 여알합니닀 +apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py +18,'From Date' must be after 'To Date','시작음자'는 '마감음자'읎후읎 여알합니닀 ,Stock Projected Qty,재고 수량을 예상 apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.py +132,Customer {0} does not belong to project {1},고객 {0} 프로젝튞에 속하지 않는 {1} DocType: Warranty Claim,From Company,회사에서 diff --git a/erpnext/translations/pt-BR.csv b/erpnext/translations/pt-BR.csv index b2998510548..714bca1b1ee 100644 --- a/erpnext/translations/pt-BR.csv +++ b/erpnext/translations/pt-BR.csv @@ -516,7 +516,7 @@ apps/erpnext/erpnext/config/accounts.py +84,Financial / accounting year.,Exercí apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +172,"Sorry, Serial Nos cannot be merged","Desculpe, os números de ordem não podem ser mescladas" DocType: Email Digest,New Supplier Quotations,Novas cotações de fornecedores apps/erpnext/erpnext/selling/doctype/quotation/quotation.js +608,Make Sales Order,Criar ordem de vendas -DocType: Project Task,Project Task,Projeto Tarefa +DocType: Project Task,Project Task,Tarefa do Projeto ,Lead Id,chumbo Id DocType: C-Form Invoice Detail,Grand Total,Total Geral DocType: About Us Settings,Website Manager,Administrador do site @@ -636,7 +636,7 @@ apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +138,Biomach apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/industry_type.py +6,Aerospace,Aeroespacial apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +19,Welcome,Bem vindo DocType: Journal Entry,Credit Card Entry,Registro de cartão de crédito -apps/erpnext/erpnext/projects/report/daily_time_log_summary/daily_time_log_summary.py +18,Task Subject,Tarefa Assunto +apps/erpnext/erpnext/projects/report/daily_time_log_summary/daily_time_log_summary.py +18,Task Subject,Assunto da Tarefa apps/erpnext/erpnext/config/stock.py +28,Goods received from Suppliers.,Mercadorias recebidas de fornecedores. DocType: Communication,Open,Abrir DocType: Lead,Campaign Name,Nome da Campanha @@ -1311,7 +1311,7 @@ DocType: Maintenance Visit,Maintenance Visit,Visita de manutenção apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js +49,Customer > Customer Group > Territory,Cliente> Grupo Cliente> Território DocType: Sales Invoice Item,Available Batch Qty at Warehouse,Lote disponível Qtde no Warehouse DocType: Time Log Batch Detail,Time Log Batch Detail,Tempo Log Detail Batch -DocType: Workflow State,Tasks,tarefas +DocType: Workflow State,Tasks,Tarefas DocType: Landed Cost Voucher,Landed Cost Help,Landed Cost Ajuda DocType: Event,Tuesday,Terça-feira DocType: Leave Block List,Block Holidays on important days.,Bloco Feriados em dias importantes. @@ -1354,7 +1354,7 @@ apps/erpnext/erpnext/config/hr.py +23,Claims for company expense.,Os pedidos de apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +7,Centrifugal casting,Fundição centrífuga apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +118,Magnetic field-assisted finishing,Magnetic acabamento assistida-campo DocType: Company,Default Holiday List,Lista Padrão de Feriados -apps/erpnext/erpnext/projects/doctype/time_log/time_log.py +229,Task is Mandatory if Time Log is against a project,Tarefa é obrigatória se o Time Log é contra um projeto +apps/erpnext/erpnext/projects/doctype/time_log/time_log.py +229,Task is Mandatory if Time Log is against a project,Tarefa é obrigatória se o registro de atividade é contra um projeto apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +165,Stock Liabilities,Passivo estoque DocType: Purchase Receipt,Supplier Warehouse,Almoxarifado do Fornecedor DocType: Opportunity,Contact Mobile No,Celular do Contato @@ -1388,7 +1388,7 @@ apps/frappe/frappe/core/page/permission_manager/permission_manager.js +379,Add,A apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +91,Conversion rate cannot be 0 or 1,A taxa de conversão não pode ser 0 ou 1 DocType: Accounts Settings,Credit Controller,Controlador de crédito DocType: Delivery Note,Vehicle Dispatch Date,Veículo Despacho Data -apps/erpnext/erpnext/hr/doctype/expense_claim/expense_claim.py +56,Task is mandatory if Expense Claim is against a Project,Tarefa é obrigatória se Despesa reivindicação é contra um projeto +apps/erpnext/erpnext/hr/doctype/expense_claim/expense_claim.py +56,Task is mandatory if Expense Claim is against a Project,Tarefa é obrigatória se a Reinvindicação de Despesa é contra um projeto apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +189,Purchase Receipt {0} is not submitted,Recibo de compra {0} não é submetido DocType: Company,Default Payable Account,Conta a Pagar Padrão apps/erpnext/erpnext/config/website.py +13,"Settings for online shopping cart such as shipping rules, price list etc.","Definições para carrinho de compras on-line, tais como regras de navegação, lista de preços etc." @@ -3275,7 +3275,7 @@ apps/erpnext/erpnext/setup/page/setup_wizard/fixtures/operations.py +123,Spindle DocType: Material Request,% of materials ordered against this Material Request,% do material encomendado contra esta Requisição de Material DocType: BOM,Last Purchase Rate,Valor da última compra DocType: Account,Asset,Ativo -DocType: Project Task,Task ID,Task ID +DocType: Project Task,Task ID,ID Tarefa apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +395,"e.g. ""MC""","por exemplo "" MC """ apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +82,Stock cannot exist for Item {0} since has variants,Stock não pode existir por item {0} já que tem variantes ,Sales Person-wise Transaction Summary,Resumo da transação Pessoa-wise vendas @@ -3386,7 +3386,7 @@ apps/erpnext/erpnext/hr/doctype/employee/employee.py +208,Today is {0}'s birthda DocType: Production Planning Tool,Material Request For Warehouse,Pedido de material para Armazém DocType: Sales Order Item,For Production,Para Produção apps/erpnext/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py +99,Please enter sales order in the above table,Por favor entre pedidos de vendas na tabela acima -DocType: Project Task,View Task,Ver Task +DocType: Project Task,View Task,Ver Tarefa apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +406,Your financial year begins on,O ano financeiro inicia em apps/erpnext/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py +46,Please enter Purchase Receipts,Digite recibos de compra DocType: Sales Invoice,Get Advances Received,Obter adiantamentos recebidos diff --git a/erpnext/translations/zh-tw.csv b/erpnext/translations/zh-tw.csv index 3628cb43587..c47f7c84bbc 100644 --- a/erpnext/translations/zh-tw.csv +++ b/erpnext/translations/zh-tw.csv @@ -260,7 +260,7 @@ DocType: Payment Tool,Reference No,參考線號 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +349,Leave Blocked,犁假的 apps/erpnext/erpnext/stock/doctype/item/item.py +349,Item {0} has reached its end of life on {1},項{0}已達到其壜呜結束斌{1} apps/erpnext/erpnext/accounts/utils.py +306,Annual,党幎 -DocType: Stock Reconciliation Item,Stock Reconciliation Item,股祚和解項目 +DocType: Stock Reconciliation Item,Stock Reconciliation Item,庫存調敎項目 DocType: Purchase Invoice,In Words will be visible once you save the Purchase Invoice.,賌買癌祚䞀被儲存就會顯瀺出䟆。 DocType: Stock Entry,Sales Invoice No,銷售癌祚號碌 DocType: Material Request Item,Min Order Qty,最小蚂貚量 @@ -349,7 +349,7 @@ apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +504,Select apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +208,{0} {1} status is Stopped,{0} {1}狀態為停止 apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +143,"Item: {0} managed batch-wise, can not be reconciled using \ Stock Reconciliation, instead use Stock Entry","項目{0}管理分批䞍胜䜿甚\ -股祚和解而是䜿甚股祚茞入䞍甘心" +庫存調敎而是䜿甚庫存分錄。" apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +242,Purchase Invoice {0} is already submitted,採賌癌祚{0}已經提亀 apps/erpnext/erpnext/accounts/doctype/account/account.js +54,Convert to non-Group,蜉換為非集團 apps/erpnext/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py +55,Purchase Receipt must be submitted,賌買收據必須提亀 @@ -1503,7 +1503,7 @@ DocType: SMS Center,Send To,癌送到 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +111,There is not enough leave balance for Leave Type {0},沒有足倠的逘額䌑假請假類型{0} DocType: Sales Team,Contribution to Net Total,貢獻合蚈淚 DocType: Sales Invoice Item,Customer's Item Code,客戶的產品線號 -DocType: Stock Reconciliation,Stock Reconciliation,存貚對垳 +DocType: Stock Reconciliation,Stock Reconciliation,庫存調敎 DocType: Territory,Territory Name,地區名皱 apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +148,Work-in-Progress Warehouse is required before Submit,工䜜圚進展倉庫提亀之前需芁 apps/erpnext/erpnext/config/hr.py +43,Applicant for a Job.,申請職䜍 @@ -2094,7 +2094,7 @@ apps/erpnext/erpnext/projects/doctype/time_log/time_log.py +207,Completed Qty ca DocType: Features Setup,Quality,品質 DocType: Contact Us Settings,Introduction,介玹 DocType: Warranty Claim,Service Address,服務地址 -apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +76,Max 100 rows for Stock Reconciliation.,最倧100行的股祚和解。 +apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +76,Max 100 rows for Stock Reconciliation.,庫存調敎最倚100行。 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +104,Note: Reference Date exceeds invoice due date by {0} days for {1} {2},泚參考日期超過癌祚到期日期{0}倩{1} {2} DocType: Stock Entry,Manufacture,補造 apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.js +13,Please Delivery Note first,請送貚單第䞀 @@ -2505,7 +2505,7 @@ apps/erpnext/erpnext/accounts/page/accounts_browser/accounts_browser.js +23,Quic apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +169,Source and target warehouse cannot be same for row {0},列{0}的䟆源和目暙倉庫䞍可盞同 DocType: Features Setup,Sales Extras,額倖銷售 apps/erpnext/erpnext/accounts/utils.py +311,{0} budget for Account {1} against Cost Center {2} will exceed by {3},{0}預算垳戶{1}對成本䞭心{2}將超過{3} -apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +236,"Difference Account must be a Asset/Liability type account, since this Stock Reconciliation is an Opening Entry",差異垳戶必須是資產/負債類型的垳戶因為歀股祚和解是䞀個進入開幕 +apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +236,"Difference Account must be a Asset/Liability type account, since this Stock Reconciliation is an Opening Entry",差異垳戶必須是資產/負債類型的垳戶因為歀庫存調敎是䞀個開始分錄 apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +123,Purchase Order number required for Item {0},所需物品{0}的採賌蚂單號 DocType: Leave Allocation,Carry Forwarded Leaves,進行蜉癌葉 apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py +18,'From Date' must be after 'To Date',“起始日期”必須經過'終止日期' @@ -2774,7 +2774,7 @@ apps/erpnext/erpnext/accounts/doctype/c_form/c_form.py +54,Please enter atleast apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +511,Add Users,添加甚戶 DocType: Pricing Rule,Item Group,項目矀組 DocType: Task,Actual Start Date (via Time Logs),寊際開始日期通過時間日誌 -DocType: Stock Reconciliation Item,Before reconciliation,對垳前 +DocType: Stock Reconciliation Item,Before reconciliation,調敎前 apps/erpnext/erpnext/support/doctype/maintenance_visit/maintenance_visit.py +12,To {0},{0} DocType: Purchase Invoice,Taxes and Charges Added (Company Currency),皅收和收費䞊架公叞貚幣 apps/erpnext/erpnext/stock/doctype/item/item.py +192,Item Tax Row {0} must have account of type Tax or Income or Expense or Chargeable,商品皅行{0}必須有垳戶類型皅或收入或支出或課皅的 @@ -2894,7 +2894,7 @@ apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet apps/erpnext/erpnext/setup/page/setup_wizard/setup_wizard.js +627,Hour,小時 apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +138,"Serialized Item {0} cannot be updated \ using Stock Reconciliation","系列化項目{0}䞍胜被曎新\ -䜿甚存貚對垳" +䜿甚庫存調敎" apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +476,Transfer Material to Supplier,蜉印材料䟛應商 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +30,New Serial No cannot have Warehouse. Warehouse must be set by Stock Entry or Purchase Receipt,新的序列號䞍胜有倉庫。倉庫必須由存貚分錄或採賌入庫單進行蚭定 DocType: Lead,Lead Type,匕線型 diff --git a/erpnext/utilities/doctype/address/address.json b/erpnext/utilities/doctype/address/address.json index 81a58da63d2..a83c66a7742 100644 --- a/erpnext/utilities/doctype/address/address.json +++ b/erpnext/utilities/doctype/address/address.json @@ -6,7 +6,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -536,7 +536,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-09-07 15:51:26", + "modified": "2015-09-14 02:55:53.462812", "modified_by": "Administrator", "module": "Utilities", "name": "Address", diff --git a/erpnext/utilities/doctype/address_template/address_template.json b/erpnext/utilities/doctype/address_template/address_template.json index 27b34e56e97..6dfd18439d5 100644 --- a/erpnext/utilities/doctype/address_template/address_template.json +++ b/erpnext/utilities/doctype/address_template/address_template.json @@ -7,7 +7,7 @@ "custom": 0, "docstatus": 0, "doctype": "DocType", - "document_type": "Master", + "document_type": "Setup", "fields": [ { "allow_on_submit": 0, @@ -85,7 +85,7 @@ "is_submittable": 0, "issingle": 0, "istable": 0, - "modified": "2015-02-05 05:11:34.356413", + "modified": "2015-09-14 02:55:53.732649", "modified_by": "Administrator", "module": "Utilities", "name": "Address Template", diff --git a/setup.py b/setup.py index 29073384bb6..4fdee0555a1 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ from setuptools import setup, find_packages -version = "6.1.1" +version = "6.2.0" with open("requirements.txt", "r") as f: install_requires = f.readlines()