Merged with local

This commit is contained in:
Pranav Nachanekar 2019-09-18 10:39:11 +05:30
commit 3c8bea65ef
135 changed files with 14441 additions and 15040 deletions

View File

@ -5,7 +5,7 @@ import frappe
from erpnext.hooks import regional_overrides
from frappe.utils import getdate
__version__ = '12.1.2'
__version__ = '12.1.3'
def get_default_company(user=None):
'''Get default company for user'''

File diff suppressed because it is too large Load Diff

View File

@ -100,7 +100,10 @@ class Account(NestedSet):
if ancestors:
if frappe.get_value("Company", self.company, "allow_account_creation_against_child_company"):
return
frappe.throw(_("Please add the account to root level Company - %s" % ancestors[0]))
if not frappe.db.get_value("Account",
{'account_name': self.account_name, 'company': ancestors[0]}, 'name'):
frappe.throw(_("Please add the account to root level Company - %s" % ancestors[0]))
else:
descendants = get_descendants_of('Company', self.company)
if not descendants: return
@ -114,24 +117,7 @@ class Account(NestedSet):
if not parent_acc_name_map: return
for company in descendants:
if not parent_acc_name_map.get(company):
frappe.throw(_("While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA")
.format(company, parent_acc_name))
doc = frappe.copy_doc(self)
doc.flags.ignore_root_company_validation = True
doc.update({
"company": company,
# parent account's currency should be passed down to child account's curreny
# if it is None, it picks it up from default company currency, which might be unintended
"account_currency": self.account_currency,
"parent_account": parent_acc_name_map[company]
})
if not self.check_if_child_acc_exists(doc):
doc.save()
frappe.msgprint(_("Account {0} is added in the child company {1}")
.format(doc.name, company))
self.create_account_for_child_company(parent_acc_name_map, descendants)
def validate_group_or_ledger(self):
if self.get("__islocal"):
@ -173,23 +159,48 @@ class Account(NestedSet):
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 check_if_child_acc_exists(self, doc):
''' Checks if a account in parent company exists in the '''
info = frappe.db.get_value("Account", {
"account_name": doc.account_name,
"account_number": doc.account_number
}, ['company', 'account_currency', 'is_group', 'root_type', 'account_type', 'balance_must_be', 'account_name'], as_dict=1)
def create_account_for_child_company(self, parent_acc_name_map, descendants):
for company in descendants:
if not parent_acc_name_map.get(company):
frappe.throw(_("While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA")
.format(company, parent_acc_name))
if not info:
return
filters = {
"account_name": self.account_name,
"company": company
}
doc = vars(doc)
dict_diff = [k for k in info if k in doc and info[k] != doc[k] and k != "company"]
if dict_diff:
frappe.throw(_("Account {0} already exists in child company {1}. The following fields have different values, they should be same:<ul><li>{2}</li></ul>")
.format(info.account_name, info.company, '</li><li>'.join(dict_diff)))
else:
return True
if self.account_number:
filters["account_number"] = self.account_number
child_account = frappe.db.get_value("Account", filters, 'name')
if not child_account:
doc = frappe.copy_doc(self)
doc.flags.ignore_root_company_validation = True
doc.update({
"company": company,
# parent account's currency should be passed down to child account's curreny
# if it is None, it picks it up from default company currency, which might be unintended
"account_currency": self.account_currency,
"parent_account": parent_acc_name_map[company]
})
doc.save()
frappe.msgprint(_("Account {0} is added in the child company {1}")
.format(doc.name, company))
elif child_account:
# update the parent company's value in child companies
doc = frappe.get_doc("Account", child_account)
parent_value_changed = False
for field in ['account_type', 'account_currency',
'freeze_account', 'balance_must_be']:
if doc.get(field) != self.get(field):
parent_value_changed = True
doc.set(field, self.get(field))
if parent_value_changed:
doc.save()
def convert_group_to_ledger(self):
if self.check_if_child_exists():

View File

@ -5,9 +5,13 @@ frappe.ui.form.on('Accounting Dimension', {
refresh: function(frm) {
frm.set_query('document_type', () => {
let invalid_doctypes = frappe.model.core_doctypes_list;
invalid_doctypes.push('Accounting Dimension', 'Project',
'Cost Center', 'Accounting Dimension Detail');
return {
filters: {
name: ['not in', ['Accounting Dimension', 'Project', 'Cost Center', 'Accounting Dimension Detail']]
name: ['not in', invalid_doctypes]
}
};
});

View File

@ -11,10 +11,20 @@ from frappe.custom.doctype.custom_field.custom_field import create_custom_field
from frappe import scrub
from frappe.utils import cstr
from frappe.utils.background_jobs import enqueue
from frappe.model import core_doctypes_list
class AccountingDimension(Document):
def before_insert(self):
self.set_fieldname_and_label()
def validate(self):
if self.document_type in core_doctypes_list + ('Accounting Dimension', 'Project',
'Cost Center', 'Accounting Dimension Detail') :
msg = _("Not allowed to create accounting dimension for {0}").format(self.document_type)
frappe.throw(msg)
def after_insert(self):
if frappe.flags.in_test:
make_dimension_in_accounting_doctypes(doc=self)
else:
@ -164,7 +174,7 @@ def get_accounting_dimensions(as_list=True):
return accounting_dimensions
def get_checks_for_pl_and_bs_accounts():
dimensions = frappe.db.sql("""SELECT p.label, p.disabled, p.fieldname, c.company, c.mandatory_for_pl, c.mandatory_for_bs
dimensions = frappe.db.sql("""SELECT p.label, p.disabled, p.fieldname, c.default_dimension, c.company, c.mandatory_for_pl, c.mandatory_for_bs
FROM `tabAccounting Dimension`p ,`tabAccounting Dimension Detail` c
WHERE p.name = c.parent""", as_dict=1)

View File

@ -1,457 +1,170 @@
{
"allow_copy": 1,
"allow_guest_to_view": 0,
"allow_import": 1,
"allow_rename": 1,
"autoname": "field:cost_center_name",
"beta": 0,
"creation": "2013-01-23 19:57:17",
"custom": 0,
"description": "Track separate Income and Expense for product verticals or divisions.",
"docstatus": 0,
"doctype": "DocType",
"document_type": "Setup",
"editable_grid": 0,
"allow_copy": 1,
"allow_import": 1,
"allow_rename": 1,
"creation": "2013-01-23 19:57:17",
"description": "Track separate Income and Expense for product verticals or divisions.",
"doctype": "DocType",
"document_type": "Setup",
"engine": "InnoDB",
"field_order": [
"sb0",
"cost_center_name",
"cost_center_number",
"parent_cost_center",
"company",
"cb0",
"is_group",
"disabled",
"lft",
"rgt",
"old_parent"
],
"fields": [
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "sb0",
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "sb0",
"fieldtype": "Section Break"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "cost_center_name",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Cost Center Name",
"length": 0,
"no_copy": 1,
"oldfieldname": "cost_center_name",
"oldfieldtype": "Data",
"permlevel": 0,
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "cost_center_name",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Cost Center Name",
"no_copy": 1,
"oldfieldname": "cost_center_name",
"oldfieldtype": "Data",
"reqd": 1
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "cost_center_number",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Cost Center Number",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "cost_center_number",
"fieldtype": "Data",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Cost Center Number",
"read_only": 1
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "parent_cost_center",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 1,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Parent Cost Center",
"length": 0,
"no_copy": 0,
"oldfieldname": "parent_cost_center",
"oldfieldtype": "Link",
"options": "Cost Center",
"permlevel": 0,
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "parent_cost_center",
"fieldtype": "Link",
"ignore_user_permissions": 1,
"in_list_view": 1,
"label": "Parent Cost Center",
"oldfieldname": "parent_cost_center",
"oldfieldtype": "Link",
"options": "Cost Center",
"reqd": 1
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "company",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Company",
"length": 0,
"no_copy": 0,
"oldfieldname": "company_name",
"oldfieldtype": "Link",
"options": "Company",
"permlevel": 0,
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 1,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "company",
"fieldtype": "Link",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Company",
"oldfieldname": "company_name",
"oldfieldtype": "Link",
"options": "Company",
"remember_last_selected_value": 1,
"reqd": 1
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "cb0",
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0,
"fieldname": "cb0",
"fieldtype": "Column Break",
"width": "50%"
},
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"default": "0",
"fieldname": "is_group",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Is Group",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"default": "0",
"fieldname": "is_group",
"fieldtype": "Check",
"label": "Is Group"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "lft",
"fieldtype": "Int",
"hidden": 1,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "lft",
"length": 0,
"no_copy": 1,
"oldfieldname": "lft",
"oldfieldtype": "Int",
"permlevel": 0,
"print_hide": 1,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 1,
"reqd": 0,
"search_index": 1,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "lft",
"fieldtype": "Int",
"hidden": 1,
"label": "lft",
"no_copy": 1,
"oldfieldname": "lft",
"oldfieldtype": "Int",
"print_hide": 1,
"report_hide": 1,
"search_index": 1
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "rgt",
"fieldtype": "Int",
"hidden": 1,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "rgt",
"length": 0,
"no_copy": 1,
"oldfieldname": "rgt",
"oldfieldtype": "Int",
"permlevel": 0,
"print_hide": 1,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 1,
"reqd": 0,
"search_index": 1,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "rgt",
"fieldtype": "Int",
"hidden": 1,
"label": "rgt",
"no_copy": 1,
"oldfieldname": "rgt",
"oldfieldtype": "Int",
"print_hide": 1,
"report_hide": 1,
"search_index": 1
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "old_parent",
"fieldtype": "Link",
"hidden": 1,
"ignore_user_permissions": 1,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "old_parent",
"length": 0,
"no_copy": 1,
"oldfieldname": "old_parent",
"oldfieldtype": "Data",
"options": "Cost Center",
"permlevel": 0,
"print_hide": 1,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 1,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
"fieldname": "old_parent",
"fieldtype": "Link",
"hidden": 1,
"ignore_user_permissions": 1,
"label": "old_parent",
"no_copy": 1,
"oldfieldname": "old_parent",
"oldfieldtype": "Data",
"options": "Cost Center",
"print_hide": 1,
"report_hide": 1
},
{
"default": "0",
"fieldname": "disabled",
"fieldtype": "Check",
"label": "Disabled"
}
],
"has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"icon": "fa fa-money",
"idx": 1,
"image_view": 0,
"in_create": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"menu_index": 0,
"modified": "2018-04-26 15:26:25.325778",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Cost Center",
"owner": "Administrator",
],
"icon": "fa fa-money",
"idx": 1,
"modified": "2019-09-16 14:44:17.103548",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Cost Center",
"owner": "Administrator",
"permissions": [
{
"amend": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"export": 0,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "Accounts Manager",
"set_user_permissions": 0,
"share": 1,
"submit": 0,
"create": 1,
"delete": 1,
"email": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Accounts Manager",
"share": 1,
"write": 1
},
},
{
"amend": 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
},
"export": 1,
"read": 1,
"report": 1,
"role": "Auditor"
},
{
"amend": 0,
"cancel": 0,
"create": 0,
"delete": 0,
"email": 1,
"export": 0,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "Accounts User",
"set_user_permissions": 0,
"share": 0,
"submit": 0,
"write": 0
},
"email": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Accounts User"
},
{
"amend": 0,
"cancel": 0,
"create": 0,
"delete": 0,
"email": 0,
"export": 0,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 0,
"read": 1,
"report": 0,
"role": "Sales User",
"set_user_permissions": 0,
"share": 0,
"submit": 0,
"write": 0
},
"read": 1,
"role": "Sales User"
},
{
"amend": 0,
"cancel": 0,
"create": 0,
"delete": 0,
"email": 0,
"export": 0,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 0,
"read": 1,
"report": 0,
"role": "Purchase User",
"set_user_permissions": 0,
"share": 0,
"submit": 0,
"write": 0
"read": 1,
"role": "Purchase User"
}
],
"quick_entry": 1,
"read_only": 0,
"read_only_onload": 0,
"search_fields": "parent_cost_center, is_group",
"show_name_in_global_search": 1,
"sort_order": "ASC",
"track_changes": 0,
"track_seen": 0
],
"quick_entry": 1,
"search_fields": "parent_cost_center, is_group",
"show_name_in_global_search": 1,
"sort_field": "modified",
"sort_order": "ASC"
}

View File

@ -720,7 +720,7 @@ frappe.ui.form.on('Payment Entry', {
$.each(frm.doc.references || [], function(i, row) {
row.allocated_amount = 0 //If allocate payment amount checkbox is unchecked, set zero to allocate amount
if(frappe.flags.allocate_payment_amount){
if(frappe.flags.allocate_payment_amount != 0){
if(row.outstanding_amount > 0 && allocated_positive_outstanding > 0) {
if(row.outstanding_amount >= allocated_positive_outstanding) {
row.allocated_amount = allocated_positive_outstanding;

View File

@ -126,7 +126,7 @@ class PaymentEntry(AccountsController):
if not self.party:
frappe.throw(_("Party is mandatory"))
_party_name = "title" if self.party_type == "Student" else self.party_type.lower() + "_name"
_party_name = "title" if self.party_type in ("Student", "Shareholder") else self.party_type.lower() + "_name"
self.party_name = frappe.db.get_value(self.party_type, self.party, _party_name)
if self.party:

View File

@ -66,10 +66,10 @@ frappe.ui.form.on('Payment Order', {
get_query_filters: {
bank: frm.doc.bank,
docstatus: 1,
payment_type: ("!=", "Receive"),
payment_type: ["!=", "Receive"],
bank_account: frm.doc.company_bank_account,
paid_from: frm.doc.account,
payment_order_status: ["=", "Initiated"],
payment_order_status: ["=", "Initiated"]
}
});
},

View File

@ -20,7 +20,7 @@ class PaymentRequest(Document):
if self.get("__islocal"):
self.status = 'Draft'
self.validate_reference_document()
self.validate_payment_request()
self.validate_payment_request_amount()
self.validate_currency()
self.validate_subscription_details()
@ -28,10 +28,19 @@ class PaymentRequest(Document):
if not self.reference_doctype or not self.reference_name:
frappe.throw(_("To create a Payment Request reference document is required"))
def validate_payment_request(self):
if frappe.db.get_value("Payment Request", {"reference_name": self.reference_name,
"name": ("!=", self.name), "status": ("not in", ["Initiated", "Paid"]), "docstatus": 1}, "name"):
frappe.throw(_("Payment Request already exists {0}".format(self.reference_name)))
def validate_payment_request_amount(self):
existing_payment_request_amount = \
get_existing_payment_request_amount(self.reference_doctype, self.reference_name)
if existing_payment_request_amount:
ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
if (hasattr(ref_doc, "order_type") \
and getattr(ref_doc, "order_type") != "Shopping Cart"):
ref_amount = get_amount(ref_doc)
if existing_payment_request_amount + flt(self.grand_total)> ref_amount:
frappe.throw(_("Total Payment Request amount cannot be greater than {0} amount"
.format(self.reference_doctype)))
def validate_currency(self):
ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
@ -271,7 +280,7 @@ def make_payment_request(**args):
args = frappe._dict(args)
ref_doc = frappe.get_doc(args.dt, args.dn)
grand_total = get_amount(ref_doc, args.dt)
grand_total = get_amount(ref_doc)
if args.loyalty_points and args.dt == "Sales Order":
from erpnext.accounts.doctype.loyalty_program.loyalty_program import validate_loyalty_points
loyalty_amount = validate_loyalty_points(ref_doc, int(args.loyalty_points))
@ -281,17 +290,25 @@ def make_payment_request(**args):
gateway_account = get_gateway_details(args) or frappe._dict()
existing_payment_request = frappe.db.get_value("Payment Request",
{"reference_doctype": args.dt, "reference_name": args.dn, "docstatus": ["!=", 2]})
bank_account = (get_party_bank_account(args.get('party_type'), args.get('party'))
if args.get('party_type') else '')
existing_payment_request = None
if args.order_type == "Shopping Cart":
existing_payment_request = frappe.db.get_value("Payment Request",
{"reference_doctype": args.dt, "reference_name": args.dn, "docstatus": ("!=", 2)})
if existing_payment_request:
frappe.db.set_value("Payment Request", existing_payment_request, "grand_total", grand_total, update_modified=False)
pr = frappe.get_doc("Payment Request", existing_payment_request)
else:
if args.order_type != "Shopping Cart":
existing_payment_request_amount = \
get_existing_payment_request_amount(args.dt, args.dn)
if existing_payment_request_amount:
grand_total -= existing_payment_request_amount
pr = frappe.new_doc("Payment Request")
pr.update({
"payment_gateway_account": gateway_account.get("name"),
@ -327,8 +344,9 @@ def make_payment_request(**args):
return pr.as_dict()
def get_amount(ref_doc, dt):
def get_amount(ref_doc):
"""get amount based on doctype"""
dt = ref_doc.doctype
if dt in ["Sales Order", "Purchase Order"]:
grand_total = flt(ref_doc.grand_total) - flt(ref_doc.advance_paid)
@ -347,6 +365,17 @@ def get_amount(ref_doc, dt):
else:
frappe.throw(_("Payment Entry is already created"))
def get_existing_payment_request_amount(ref_dt, ref_dn):
existing_payment_request_amount = frappe.db.sql("""
select sum(grand_total)
from `tabPayment Request`
where
reference_doctype = %s
and reference_name = %s
and docstatus = 1
""", (ref_dt, ref_dn))
return flt(existing_payment_request_amount[0][0]) if existing_payment_request_amount else 0
def get_gateway_details(args):
"""return gateway and payment account of default payment gateway"""
if args.get("payment_gateway"):

View File

@ -37,12 +37,12 @@ class TestPaymentRequest(unittest.TestCase):
def setUp(self):
if not frappe.db.get_value("Payment Gateway", payment_gateway["gateway"], "name"):
frappe.get_doc(payment_gateway).insert(ignore_permissions=True)
for method in payment_method:
if not frappe.db.get_value("Payment Gateway Account", {"payment_gateway": method["payment_gateway"],
if not frappe.db.get_value("Payment Gateway Account", {"payment_gateway": method["payment_gateway"],
"currency": method["currency"]}, "name"):
frappe.get_doc(method).insert(ignore_permissions=True)
def test_payment_request_linkings(self):
so_inr = make_sales_order(currency="INR")
pr = make_payment_request(dt="Sales Order", dn=so_inr.name, recipient_id="saurabh@erpnext.com")
@ -100,3 +100,23 @@ class TestPaymentRequest(unittest.TestCase):
self.assertEqual(expected_gle[gle.account][1], gle.debit)
self.assertEqual(expected_gle[gle.account][2], gle.credit)
self.assertEqual(expected_gle[gle.account][3], gle.against_voucher)
def test_multiple_payment_entries_against_sales_order(self):
# Make Sales Order, grand_total = 1000
so = make_sales_order()
# Payment Request amount = 200
pr1 = make_payment_request(dt="Sales Order", dn=so.name,
recipient_id="nabin@erpnext.com", return_doc=1)
pr1.grand_total = 200
pr1.submit()
# Make a 2nd Payment Request
pr2 = make_payment_request(dt="Sales Order", dn=so.name,
recipient_id="nabin@erpnext.com", return_doc=1)
self.assertEqual(pr2.grand_total, 800)
# Try to make Payment Request more than SO amount, should give validation
pr2.grand_total = 900
self.assertRaises(frappe.ValidationError, pr2.save)

View File

@ -41,6 +41,8 @@ def get_pos_data():
items_list = get_items_list(pos_profile, doc.company)
customers = get_customers_list(pos_profile)
doc.plc_conversion_rate = update_plc_conversion_rate(doc, pos_profile)
return {
'doc': doc,
'default_customer': pos_profile.get('customer'),
@ -53,7 +55,7 @@ def get_pos_data():
'batch_no_data': get_batch_no_data(),
'barcode_data': get_barcode_data(items_list),
'tax_data': get_item_tax_data(),
'price_list_data': get_price_list_data(doc.selling_price_list),
'price_list_data': get_price_list_data(doc.selling_price_list, doc.plc_conversion_rate),
'customer_wise_price_list': get_customer_wise_price_list(),
'bin_data': get_bin_data(pos_profile),
'pricing_rules': get_pricing_rule_data(doc),
@ -62,6 +64,15 @@ def get_pos_data():
'meta': get_meta()
}
def update_plc_conversion_rate(doc, pos_profile):
conversion_rate = 1.0
price_list_currency = frappe.get_cached_value("Price List", doc.selling_price_list, "currency")
if pos_profile.get("currency") != price_list_currency:
conversion_rate = get_exchange_rate(price_list_currency,
pos_profile.get("currency"), nowdate(), args="for_selling") or 1.0
return conversion_rate
def get_meta():
doctype_meta = {
@ -317,14 +328,14 @@ def get_item_tax_data():
return itemwise_tax
def get_price_list_data(selling_price_list):
def get_price_list_data(selling_price_list, conversion_rate):
itemwise_price_list = {}
price_lists = frappe.db.sql("""Select ifnull(price_list_rate, 0) as price_list_rate,
item_code from `tabItem Price` ip where price_list = %(price_list)s""",
{'price_list': selling_price_list}, as_dict=1)
for item in price_lists:
itemwise_price_list[item.item_code] = item.price_list_rate
itemwise_price_list[item.item_code] = item.price_list_rate * conversion_rate
return itemwise_price_list

View File

@ -86,17 +86,23 @@ class ShareTransfer(Document):
frappe.throw(_('The field From Shareholder cannot be blank'))
if self.from_folio_no is None or self.from_folio_no is '':
self.to_folio_no = self.autoname_folio(self.to_shareholder)
if self.asset_account is None:
frappe.throw(_('The field Asset Account cannot be blank'))
elif (self.transfer_type == 'Issue'):
self.from_shareholder = ''
if self.to_shareholder is None or self.to_shareholder == '':
frappe.throw(_('The field To Shareholder cannot be blank'))
if self.to_folio_no is None or self.to_folio_no is '':
self.to_folio_no = self.autoname_folio(self.to_shareholder)
if self.asset_account is None:
frappe.throw(_('The field Asset Account cannot be blank'))
else:
if self.from_shareholder is None or self.to_shareholder is None:
frappe.throw(_('The fields From Shareholder and To Shareholder cannot be blank'))
if self.to_folio_no is None or self.to_folio_no is '':
self.to_folio_no = self.autoname_folio(self.to_shareholder)
if self.equity_or_liability_account is None:
frappe.throw(_('The field Equity/Liability Account cannot be blank'))
if self.from_shareholder == self.to_shareholder:
frappe.throw(_('The seller and the buyer cannot be the same'))
if self.no_of_shares != self.to_no - self.from_no + 1:

View File

@ -15,67 +15,74 @@ class TestShareTransfer(unittest.TestCase):
frappe.db.sql("delete from `tabShare Balance`")
share_transfers = [
{
"doctype" : "Share Transfer",
"transfer_type" : "Issue",
"date" : "2018-01-01",
"to_shareholder" : "SH-00001",
"share_type" : "Equity",
"from_no" : 1,
"to_no" : 500,
"no_of_shares" : 500,
"rate" : 10,
"company" : "_Test Company"
"doctype" : "Share Transfer",
"transfer_type" : "Issue",
"date" : "2018-01-01",
"to_shareholder" : "SH-00001",
"share_type" : "Equity",
"from_no" : 1,
"to_no" : 500,
"no_of_shares" : 500,
"rate" : 10,
"company" : "_Test Company",
"asset_account" : "Cash - _TC",
"equity_or_liability_account": "Creditors - _TC"
},
{
"doctype" : "Share Transfer",
"transfer_type" : "Transfer",
"date" : "2018-01-02",
"from_shareholder" : "SH-00001",
"to_shareholder" : "SH-00002",
"share_type" : "Equity",
"from_no" : 101,
"to_no" : 200,
"no_of_shares" : 100,
"rate" : 15,
"company" : "_Test Company"
"doctype" : "Share Transfer",
"transfer_type" : "Transfer",
"date" : "2018-01-02",
"from_shareholder" : "SH-00001",
"to_shareholder" : "SH-00002",
"share_type" : "Equity",
"from_no" : 101,
"to_no" : 200,
"no_of_shares" : 100,
"rate" : 15,
"company" : "_Test Company",
"equity_or_liability_account": "Creditors - _TC"
},
{
"doctype" : "Share Transfer",
"transfer_type" : "Transfer",
"date" : "2018-01-03",
"from_shareholder" : "SH-00001",
"to_shareholder" : "SH-00003",
"share_type" : "Equity",
"from_no" : 201,
"to_no" : 500,
"no_of_shares" : 300,
"rate" : 20,
"company" : "_Test Company"
"doctype" : "Share Transfer",
"transfer_type" : "Transfer",
"date" : "2018-01-03",
"from_shareholder" : "SH-00001",
"to_shareholder" : "SH-00003",
"share_type" : "Equity",
"from_no" : 201,
"to_no" : 500,
"no_of_shares" : 300,
"rate" : 20,
"company" : "_Test Company",
"equity_or_liability_account": "Creditors - _TC"
},
{
"doctype" : "Share Transfer",
"transfer_type" : "Transfer",
"date" : "2018-01-04",
"from_shareholder" : "SH-00003",
"to_shareholder" : "SH-00002",
"share_type" : "Equity",
"from_no" : 201,
"to_no" : 400,
"no_of_shares" : 200,
"rate" : 15,
"company" : "_Test Company"
"doctype" : "Share Transfer",
"transfer_type" : "Transfer",
"date" : "2018-01-04",
"from_shareholder" : "SH-00003",
"to_shareholder" : "SH-00002",
"share_type" : "Equity",
"from_no" : 201,
"to_no" : 400,
"no_of_shares" : 200,
"rate" : 15,
"company" : "_Test Company",
"equity_or_liability_account": "Creditors - _TC"
},
{
"doctype" : "Share Transfer",
"transfer_type" : "Purchase",
"date" : "2018-01-05",
"from_shareholder" : "SH-00003",
"share_type" : "Equity",
"from_no" : 401,
"to_no" : 500,
"no_of_shares" : 100,
"rate" : 25,
"company" : "_Test Company"
"doctype" : "Share Transfer",
"transfer_type" : "Purchase",
"date" : "2018-01-05",
"from_shareholder" : "SH-00003",
"share_type" : "Equity",
"from_no" : 401,
"to_no" : 500,
"no_of_shares" : 100,
"rate" : 25,
"company" : "_Test Company",
"asset_account" : "Cash - _TC",
"equity_or_liability_account": "Creditors - _TC"
}
]
for d in share_transfers:
@ -84,30 +91,33 @@ class TestShareTransfer(unittest.TestCase):
def test_invalid_share_transfer(self):
doc = frappe.get_doc({
"doctype" : "Share Transfer",
"transfer_type" : "Transfer",
"date" : "2018-01-05",
"from_shareholder" : "SH-00003",
"to_shareholder" : "SH-00002",
"share_type" : "Equity",
"from_no" : 1,
"to_no" : 100,
"no_of_shares" : 100,
"rate" : 15,
"company" : "_Test Company"
"doctype" : "Share Transfer",
"transfer_type" : "Transfer",
"date" : "2018-01-05",
"from_shareholder" : "SH-00003",
"to_shareholder" : "SH-00002",
"share_type" : "Equity",
"from_no" : 1,
"to_no" : 100,
"no_of_shares" : 100,
"rate" : 15,
"company" : "_Test Company",
"equity_or_liability_account": "Creditors - _TC"
})
self.assertRaises(ShareDontExists, doc.insert)
doc = frappe.get_doc({
"doctype" : "Share Transfer",
"transfer_type" : "Purchase",
"date" : "2018-01-02",
"from_shareholder" : "SH-00001",
"share_type" : "Equity",
"from_no" : 1,
"to_no" : 200,
"no_of_shares" : 200,
"rate" : 15,
"company" : "_Test Company"
"doctype" : "Share Transfer",
"transfer_type" : "Purchase",
"date" : "2018-01-02",
"from_shareholder" : "SH-00001",
"share_type" : "Equity",
"from_no" : 1,
"to_no" : 200,
"no_of_shares" : 200,
"rate" : 15,
"company" : "_Test Company",
"asset_account" : "Cash - _TC",
"equity_or_liability_account": "Creditors - _TC"
})
self.assertRaises(ShareDontExists, doc.insert)

View File

@ -1624,7 +1624,7 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
setTimeout(function () {
w.print();
w.close();
}, 1000)
}, 1000);
},
submit_invoice: function () {
@ -1681,6 +1681,12 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
$(this.wrapper).find('.pos-bill').css('pointer-events', pointer_events);
$(this.wrapper).find('.pos-items-section').css('pointer-events', pointer_events);
this.set_primary_action();
$(this.wrapper).find('#pos-item-disc').prop('disabled',
this.pos_profile_data.allow_user_to_edit_discount ? false : true);
$(this.wrapper).find('#pos-item-price').prop('disabled',
this.pos_profile_data.allow_user_to_edit_rate ? false : true);
},
create_invoice: function () {
@ -1691,20 +1697,13 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
if(this.si_docs) {
this.si_docs.forEach((row) => {
existing_pos_list.push(Object.keys(row));
existing_pos_list.push(Object.keys(row)[0]);
});
}
if (this.frm.doc.offline_pos_name
&& in_list(existing_pos_list, this.frm.doc.offline_pos_name)) {
&& in_list(existing_pos_list, cstr(this.frm.doc.offline_pos_name))) {
this.update_invoice()
//to retrieve and set the default payment
invoice_data[this.frm.doc.offline_pos_name] = this.frm.doc;
invoice_data[this.frm.doc.offline_pos_name].payments[0].amount = this.frm.doc.net_total
invoice_data[this.frm.doc.offline_pos_name].payments[0].base_amount = this.frm.doc.net_total
this.frm.doc.paid_amount = this.frm.doc.net_total
this.frm.doc.outstanding_amount = 0
} else if(!this.frm.doc.offline_pos_name) {
this.frm.doc.offline_pos_name = frappe.datetime.now_datetime();
this.frm.doc.posting_date = frappe.datetime.get_today();
@ -1898,7 +1897,7 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
serial_no = me.item_serial_no[key][0];
}
if (this.items[0].has_serial_no && serial_no == "") {
if (this.items && this.items[0].has_serial_no && serial_no == "") {
this.refresh();
frappe.throw(__(repl("Error: Serial no is mandatory for item %(item)s", {
'item': this.items[0].item_code

View File

@ -365,7 +365,7 @@ class ReceivablePayableReport(object):
on
(ref.parent = payment_entry.name)
where
payment_entry.docstatus = 1
payment_entry.docstatus < 2
and payment_entry.posting_date > %s
and payment_entry.party_type = %s
""", (self.filters.report_date, self.party_type), as_dict=1)
@ -390,7 +390,7 @@ class ReceivablePayableReport(object):
on
(jea.parent = je.name)
where
je.docstatus = 1
je.docstatus < 2
and je.posting_date > %s
and jea.party_type = %s
and jea.reference_name is not null and jea.reference_name != ''

View File

@ -286,14 +286,14 @@ class PartyLedgerSummaryReport(object):
if parties and accounts:
if len(parties) == 1:
party = parties.keys()[0]
party = list(parties.keys())[0]
for account, amount in iteritems(accounts):
self.party_adjustment_accounts.add(account)
self.party_adjustment_details.setdefault(party, {})
self.party_adjustment_details[party].setdefault(account, 0)
self.party_adjustment_details[party][account] += amount
elif len(accounts) == 1 and not has_irrelevant_entry:
account = accounts.keys()[0]
account = list(accounts.keys())[0]
self.party_adjustment_accounts.add(account)
for party, amount in iteritems(parties):
self.party_adjustment_details.setdefault(party, {})

View File

@ -345,6 +345,7 @@ class Asset(AccountsController):
if asset_movement:
doc = frappe.get_doc('Asset Movement', asset_movement)
doc.naming_series = 'ACC-ASM-.YYYY.-'
doc.submit()
def make_gl_entries(self):

View File

@ -6,6 +6,7 @@ from __future__ import unicode_literals
import frappe
from frappe import _
from frappe.utils import flt, today, getdate, cint
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_checks_for_pl_and_bs_accounts
def post_depreciation_entries(date=None):
# Return if automatic booking of asset depreciation is disabled
@ -41,6 +42,8 @@ def make_depreciation_entry(asset_name, date=None):
depreciation_cost_center = asset.cost_center or depreciation_cost_center
accounting_dimensions = get_checks_for_pl_and_bs_accounts()
for d in asset.get("schedules"):
if not d.journal_entry and getdate(d.schedule_date) <= getdate(date):
je = frappe.new_doc("Journal Entry")
@ -51,23 +54,40 @@ def make_depreciation_entry(asset_name, date=None):
je.finance_book = d.finance_book
je.remark = "Depreciation Entry against {0} worth {1}".format(asset_name, d.depreciation_amount)
je.append("accounts", {
credit_entry = {
"account": accumulated_depreciation_account,
"credit_in_account_currency": d.depreciation_amount,
"reference_type": "Asset",
"reference_name": asset.name
})
}
je.append("accounts", {
debit_entry = {
"account": depreciation_expense_account,
"debit_in_account_currency": d.depreciation_amount,
"reference_type": "Asset",
"reference_name": asset.name,
"cost_center": depreciation_cost_center
})
}
for dimension in accounting_dimensions:
if (asset.get(dimension['fieldname']) or dimension.get('mandatory_for_bs')):
credit_entry.update({
dimension['fieldname']: asset.get(dimension['fieldname']) or dimension.get('default_dimension')
})
if (asset.get(dimension['fieldname']) or dimension.get('mandatory_for_pl')):
debit_entry.update({
dimension['fieldname']: asset.get(dimension['fieldname']) or dimension.get('default_dimension')
})
je.append("accounts", credit_entry)
je.append("accounts", debit_entry)
je.flags.ignore_permissions = True
je.submit()
je.save()
if not je.meta.get_workflow():
je.submit()
d.db_set("journal_entry", je.name)

View File

@ -1,685 +1,211 @@
{
"allow_copy": 0,
"allow_guest_to_view": 0,
"allow_import": 1,
"allow_rename": 0,
"autoname": "ACC-ASM-.YYYY.-.#####",
"beta": 0,
"creation": "2016-04-25 18:00:23.559973",
"custom": 0,
"docstatus": 0,
"doctype": "DocType",
"document_type": "",
"editable_grid": 0,
"allow_import": 1,
"autoname": "naming_series:",
"creation": "2016-04-25 18:00:23.559973",
"doctype": "DocType",
"field_order": [
"naming_series",
"company",
"purpose",
"asset",
"transaction_date",
"column_break_4",
"quantity",
"select_serial_no",
"serial_no",
"section_break_7",
"source_location",
"target_location",
"column_break_10",
"from_employee",
"to_employee",
"reference",
"reference_doctype",
"reference_name",
"amended_from"
],
"fields": [
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "company",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Company",
"length": 0,
"no_copy": 0,
"options": "Company",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 1,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "company",
"fieldtype": "Link",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Company",
"options": "Company",
"remember_last_selected_value": 1,
"reqd": 1
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"default": "Transfer",
"fieldname": "purpose",
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Purpose",
"length": 0,
"no_copy": 0,
"options": "\nIssue\nReceipt\nTransfer",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"default": "Transfer",
"fieldname": "purpose",
"fieldtype": "Select",
"label": "Purpose",
"options": "\nIssue\nReceipt\nTransfer",
"reqd": 1
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "asset",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 1,
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Asset",
"length": 0,
"no_copy": 0,
"options": "Asset",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "asset",
"fieldtype": "Link",
"in_global_search": 1,
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Asset",
"options": "Asset",
"reqd": 1
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "transaction_date",
"fieldtype": "Datetime",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Transaction Date",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "transaction_date",
"fieldtype": "Datetime",
"in_list_view": 1,
"label": "Transaction Date",
"reqd": 1
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "column_break_4",
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "column_break_4",
"fieldtype": "Column Break"
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "quantity",
"fieldtype": "Float",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Quantity",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "quantity",
"fieldtype": "Float",
"label": "Quantity"
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "select_serial_no",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Select Serial No",
"length": 0,
"no_copy": 0,
"options": "Serial No",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "select_serial_no",
"fieldtype": "Link",
"label": "Select Serial No",
"options": "Serial No"
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "serial_no",
"fieldtype": "Small Text",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Serial No",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "serial_no",
"fieldtype": "Small Text",
"label": "Serial No"
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "section_break_7",
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "section_break_7",
"fieldtype": "Section Break"
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_from": "",
"fieldname": "source_location",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Source Location",
"length": 0,
"no_copy": 0,
"options": "Location",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "source_location",
"fieldtype": "Link",
"label": "Source Location",
"options": "Location"
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "target_location",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Target Location",
"length": 0,
"no_copy": 0,
"options": "Location",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "target_location",
"fieldtype": "Link",
"label": "Target Location",
"options": "Location"
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "column_break_10",
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "column_break_10",
"fieldtype": "Column Break"
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "from_employee",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 1,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "From Employee",
"length": 0,
"no_copy": 0,
"options": "Employee",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "from_employee",
"fieldtype": "Link",
"ignore_user_permissions": 1,
"label": "From Employee",
"options": "Employee"
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "to_employee",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 1,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "To Employee",
"length": 0,
"no_copy": 0,
"options": "Employee",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "to_employee",
"fieldtype": "Link",
"ignore_user_permissions": 1,
"label": "To Employee",
"options": "Employee"
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "reference",
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Reference",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "reference",
"fieldtype": "Section Break",
"label": "Reference"
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "reference_doctype",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Reference DocType",
"length": 0,
"no_copy": 1,
"options": "DocType",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "reference_doctype",
"fieldtype": "Link",
"label": "Reference DocType",
"no_copy": 1,
"options": "DocType",
"read_only": 1
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "reference_name",
"fieldtype": "Dynamic Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Reference Name",
"length": 0,
"no_copy": 1,
"options": "reference_doctype",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"fieldname": "reference_name",
"fieldtype": "Dynamic Link",
"label": "Reference Name",
"no_copy": 1,
"options": "reference_doctype",
"read_only": 1
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "amended_from",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Amended From",
"length": 0,
"no_copy": 1,
"options": "Asset Movement",
"permlevel": 0,
"print_hide": 1,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
"fieldname": "amended_from",
"fieldtype": "Link",
"label": "Amended From",
"no_copy": 1,
"options": "Asset Movement",
"print_hide": 1,
"read_only": 1
},
{
"default": "ACC-ASM-.YYYY.-",
"fieldname": "naming_series",
"fieldtype": "Select",
"label": "Series",
"options": "ACC-ASM-.YYYY.-",
"reqd": 1
}
],
"has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 0,
"image_view": 0,
"in_create": 0,
"is_submittable": 1,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2018-08-21 16:15:40.563655",
"modified_by": "Administrator",
"module": "Assets",
"name": "Asset Movement",
"name_case": "",
"owner": "Administrator",
],
"is_submittable": 1,
"modified": "2019-09-16 16:27:53.887634",
"modified_by": "Administrator",
"module": "Assets",
"name": "Asset Movement",
"owner": "Administrator",
"permissions": [
{
"amend": 1,
"cancel": 1,
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"set_user_permissions": 0,
"share": 1,
"submit": 1,
"amend": 1,
"cancel": 1,
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"submit": 1,
"write": 1
},
},
{
"amend": 1,
"cancel": 1,
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "Accounts Manager",
"set_user_permissions": 0,
"share": 1,
"submit": 1,
"amend": 1,
"cancel": 1,
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Accounts Manager",
"share": 1,
"submit": 1,
"write": 1
},
},
{
"amend": 1,
"cancel": 1,
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "Stock Manager",
"set_user_permissions": 0,
"share": 1,
"submit": 1,
"amend": 1,
"cancel": 1,
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Stock Manager",
"share": 1,
"submit": 1,
"write": 1
}
],
"quick_entry": 0,
"read_only": 0,
"read_only_onload": 0,
"show_name_in_global_search": 0,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 0,
"track_seen": 0,
"track_views": 0
],
"sort_field": "modified",
"sort_order": "DESC"
}

View File

@ -60,7 +60,7 @@ def get_employees_with_number(number):
employee_emails = [employee.user_id for employee in employees]
frappe.cache().hset('employees_with_number', number, employee_emails)
return employee
return employee_emails
def set_caller_information(doc, state):
'''Called from hooks on creation of Lead or Contact'''

View File

@ -40,6 +40,11 @@ def get_data():
"type": "doctype",
"name": "Plaid Settings",
"description": _("Connect your bank accounts to ERPNext"),
},
{
"type": "doctype",
"name": "Exotel Settings",
"description": _("Connect your Exotel Account to ERPNext and track call logs"),
}
]
}

View File

@ -440,17 +440,17 @@ def get_batch_numbers(doctype, txt, searchfield, start, page_len, filters):
@frappe.whitelist()
def item_manufacturer_query(doctype, txt, searchfield, start, page_len, filters):
search_txt = "{0}%".format(txt)
item_filters = [
['manufacturer', 'like', '%' + txt + '%'],
['item_code', '=', filters.get("item_code")]
]
item_filters = {
'manufacturer': ('like', search_txt),
'item_code': filters.get("item_code")
}
return frappe.get_all("Item Manufacturer",
fields = "manufacturer",
filters = item_filters,
item_manufacturers = frappe.get_all(
"Item Manufacturer",
fields=["manufacturer", "manufacturer_part_no"],
filters=item_filters,
limit_start=start,
limit_page_length=page_len,
as_list=1
)
return item_manufacturers

View File

@ -88,4 +88,4 @@ def _get_employee_from_user(user):
employee_docname = frappe.db.exists({'doctype':'Employee','user_id':user})
if employee_docname:
return frappe.get_doc('Employee',employee_docname[0][0]) # frappe.db.exists returns a tuple of a tuple
return None
return None

File diff suppressed because it is too large Load Diff

View File

@ -18,12 +18,14 @@ frappe.listview_settings['Opportunity'] = {
listview.call_for_selected_items(method, {"status": "Closed"});
});
listview.page.fields_dict.opportunity_from.get_query = function() {
return {
"filters": {
"name": ["in", ["Customer", "Lead"]],
}
if(listview.page.fields_dict.opportunity_from) {
listview.page.fields_dict.opportunity_from.get_query = function() {
return {
"filters": {
"name": ["in", ["Customer", "Lead"]],
}
};
};
};
}
}
};

View File

@ -30,7 +30,7 @@
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Enrollment",
"label": "Course Enrollment",
"length": 0,
"no_copy": 0,
"options": "Course Enrollment",
@ -298,4 +298,4 @@
"track_changes": 1,
"track_seen": 0,
"track_views": 0
}
}

View File

@ -5,6 +5,7 @@
"engine": "InnoDB",
"field_order": [
"course",
"course_name",
"required"
],
"fields": [
@ -16,6 +17,14 @@
"label": "Course",
"options": "Course",
"reqd": 1
},
{
"fieldname": "course_name",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Course Name",
"fetch_from": "course.course_name",
"read_only":1
},
{
"default": "0",
@ -36,4 +45,4 @@
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}
}

View File

@ -705,7 +705,6 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"default": "INDIAN",
"fieldname": "nationality",
"fieldtype": "Data",
"hidden": 0,
@ -1231,4 +1230,4 @@
"track_changes": 0,
"track_seen": 0,
"track_views": 0
}
}

View File

@ -55,7 +55,7 @@ def preview_report_card(doc):
"courses": courses,
"assessment_groups": assessment_groups,
"course_criteria": course_criteria,
"letterhead": letterhead.content,
"letterhead": letterhead and letterhead.get('content', None),
"add_letterhead": doc.add_letterhead if doc.add_letterhead else 0
})
final_template = frappe.render_template(base_template_path, {"body": html, "title": "Report Card"})
@ -89,4 +89,4 @@ def get_attendance_count(student, academic_year, academic_term=None):
attendance["Present"] = 0
return attendance
else:
frappe.throw(_("Provide the academic year and set the starting and ending date."))
frappe.throw(_("Provide the academic year and set the starting and ending date."))

View File

@ -89,8 +89,6 @@ def request_and_fetch_report_id(report_type, start_date=None, end_date=None, mar
end_date=end_date,
marketplaceids=marketplaceids)
#add time delay to wait for amazon to generate report
time.sleep(20)
report_request_id = report_response.parsed["ReportRequestInfo"]["ReportRequestId"]["value"]
generated_report_id = None
#poll to get generated report

View File

@ -10,6 +10,7 @@ import urllib
import hashlib
import hmac
import base64
import six
from erpnext.erpnext_integrations.doctype.amazon_mws_settings import xml_utils
import re
try:
@ -77,6 +78,7 @@ def remove_empty(d):
return d
def remove_namespace(xml):
xml = xml.decode('utf-8')
regex = re.compile(' xmlns(:ns2)?="[^"]+"|(ns2:)|(xml:)')
return regex.sub('', xml)
@ -172,9 +174,10 @@ class MWS(object):
'SignatureMethod': 'HmacSHA256',
}
params.update(extra_data)
request_description = '&'.join(['%s=%s' % (k, urllib.quote(params[k], safe='-_.~').encode('utf-8')) for k in sorted(params)])
quote = urllib.quote if six.PY2 else urllib.parse.quote
request_description = '&'.join(['%s=%s' % (k, quote(params[k], safe='-_.~')) for k in sorted(params)])
signature = self.calc_signature(method, request_description)
url = '%s%s?%s&Signature=%s' % (self.domain, self.uri, request_description, urllib.quote(signature))
url = '%s%s?%s&Signature=%s' % (self.domain, self.uri, request_description, quote(signature))
headers = {'User-Agent': 'python-amazon-mws/0.0.1 (Language=Python)'}
headers.update(kwargs.get('extra_headers', {}))
@ -218,7 +221,10 @@ class MWS(object):
"""Calculate MWS signature to interface with Amazon
"""
sig_data = method + '\n' + self.domain.replace('https://', '').lower() + '\n' + self.uri + '\n' + request_description
return base64.b64encode(hmac.new(str(self.secret_key), sig_data, hashlib.sha256).digest())
sig_data = sig_data.encode('utf-8')
secret_key = self.secret_key.encode('utf-8')
digest = hmac.new(secret_key, sig_data, hashlib.sha256).digest()
return base64.b64encode(digest).decode('utf-8')
def get_timestamp(self):
"""

View File

@ -3,30 +3,31 @@
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
from frappe import _
import requests
from frappe.utils.password import get_decrypted_password
from plaid import Client
from plaid.errors import APIError, ItemError
import frappe
import requests
class PlaidConnector():
def __init__(self, access_token=None):
if not(frappe.conf.get("plaid_client_id") and frappe.conf.get("plaid_secret") and frappe.conf.get("plaid_public_key")):
frappe.throw(_("Please complete your Plaid API configuration before synchronizing your account"))
plaid_settings = frappe.get_single("Plaid Settings")
self.config = {
"plaid_client_id": frappe.conf.get("plaid_client_id"),
"plaid_secret": frappe.conf.get("plaid_secret"),
"plaid_public_key": frappe.conf.get("plaid_public_key"),
"plaid_env": frappe.conf.get("plaid_env")
"plaid_client_id": plaid_settings.plaid_client_id,
"plaid_secret": get_decrypted_password("Plaid Settings", "Plaid Settings", 'plaid_secret'),
"plaid_public_key": plaid_settings.plaid_public_key,
"plaid_env": plaid_settings.plaid_env
}
self.client = Client(client_id=self.config["plaid_client_id"],
secret=self.config["plaid_secret"],
public_key=self.config["plaid_public_key"],
environment=self.config["plaid_env"]
)
self.client = Client(client_id=self.config.get("plaid_client_id"),
secret=self.config.get("plaid_secret"),
public_key=self.config.get("plaid_public_key"),
environment=self.config.get("plaid_env")
)
self.access_token = access_token
@ -78,4 +79,4 @@ class PlaidConnector():
transactions.extend(response['transactions'])
return transactions
except Exception:
frappe.log_error(frappe.get_traceback(), _("Plaid transactions sync error"))
frappe.log_error(frappe.get_traceback(), _("Plaid transactions sync error"))

View File

@ -4,8 +4,18 @@
frappe.provide("erpnext.integrations");
frappe.ui.form.on('Plaid Settings', {
link_new_account: function(frm) {
new erpnext.integrations.plaidLink(frm);
enabled: function(frm) {
frm.toggle_reqd('plaid_client_id', frm.doc.enabled);
frm.toggle_reqd('plaid_secret', frm.doc.enabled);
frm.toggle_reqd('plaid_public_key', frm.doc.enabled);
frm.toggle_reqd('plaid_env', frm.doc.enabled);
},
refresh: function(frm) {
if(frm.doc.enabled) {
frm.add_custom_button('Link a new bank account', () => {
new erpnext.integrations.plaidLink(frm);
});
}
}
});
@ -19,20 +29,10 @@ erpnext.integrations.plaidLink = class plaidLink {
init_config() {
const me = this;
frappe.xcall('erpnext.erpnext_integrations.doctype.plaid_settings.plaid_settings.plaid_configuration')
.then(result => {
if (result !== "disabled") {
if (result.plaid_env == undefined || result.plaid_public_key == undefined) {
frappe.throw(__("Please add valid Plaid api keys in site_config.json first"));
}
me.plaid_env = result.plaid_env;
me.plaid_public_key = result.plaid_public_key;
me.client_name = result.client_name;
me.init_plaid();
} else {
frappe.throw(__("Please save your document before adding a new account"));
}
});
me.plaid_env = me.frm.doc.plaid_env;
me.plaid_public_key = me.frm.doc.plaid_public_key;
me.client_name = frappe.boot.sitename;
me.init_plaid();
}
init_plaid() {
@ -104,4 +104,4 @@ erpnext.integrations.plaidLink = class plaidLink {
});
}, __("Select a company"), __("Continue"));
}
};
};

View File

@ -1,161 +1,96 @@
{
"allow_copy": 0,
"allow_events_in_timeline": 0,
"allow_guest_to_view": 0,
"allow_import": 0,
"allow_rename": 0,
"beta": 0,
"creation": "2018-10-25 10:02:48.656165",
"custom": 0,
"docstatus": 0,
"doctype": "DocType",
"document_type": "",
"editable_grid": 1,
"engine": "InnoDB",
"creation": "2018-10-25 10:02:48.656165",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"enabled",
"column_break_2",
"automatic_sync",
"section_break_4",
"plaid_client_id",
"plaid_secret",
"column_break_7",
"plaid_public_key",
"plaid_env"
],
"fields": [
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "enabled",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Enabled",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"default": "0",
"fieldname": "enabled",
"fieldtype": "Check",
"label": "Enabled"
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"depends_on": "eval:doc.enabled==1",
"fieldname": "automatic_sync",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Synchronize all accounts every hour",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
"default": "0",
"depends_on": "eval:doc.enabled==1",
"fieldname": "automatic_sync",
"fieldtype": "Check",
"label": "Synchronize all accounts every hour"
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"depends_on": "eval:(doc.enabled==1)&&(!doc.__islocal)",
"fieldname": "link_new_account",
"fieldtype": "Button",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Link a new bank account",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
"depends_on": "eval:doc.enabled==1",
"fieldname": "plaid_client_id",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Plaid Client ID",
"reqd": 1
},
{
"depends_on": "eval:doc.enabled==1",
"fieldname": "plaid_secret",
"fieldtype": "Password",
"in_list_view": 1,
"label": "Plaid Secret",
"reqd": 1
},
{
"depends_on": "eval:doc.enabled==1",
"fieldname": "plaid_public_key",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Plaid Public Key",
"reqd": 1
},
{
"depends_on": "eval:doc.enabled==1",
"fieldname": "plaid_env",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Plaid Environment",
"reqd": 1
},
{
"fieldname": "column_break_2",
"fieldtype": "Column Break"
},
{
"fieldname": "section_break_4",
"fieldtype": "Section Break"
},
{
"fieldname": "column_break_7",
"fieldtype": "Column Break"
}
],
"has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 0,
"image_view": 0,
"in_create": 0,
"is_submittable": 0,
"issingle": 1,
"istable": 0,
"max_attachments": 0,
"modified": "2018-12-14 12:51:12.331395",
"modified_by": "Administrator",
"module": "ERPNext Integrations",
"name": "Plaid Settings",
"name_case": "",
"owner": "Administrator",
],
"issingle": 1,
"modified": "2019-08-13 17:00:06.939422",
"modified_by": "Administrator",
"module": "ERPNext Integrations",
"name": "Plaid Settings",
"owner": "Administrator",
"permissions": [
{
"amend": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"export": 0,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 0,
"role": "System Manager",
"set_user_permissions": 0,
"share": 1,
"submit": 0,
"create": 1,
"delete": 1,
"email": 1,
"print": 1,
"read": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 0,
"read_only": 0,
"read_only_onload": 0,
"show_name_in_global_search": 0,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 0,
"track_seen": 0,
"track_views": 0
],
"sort_field": "modified",
"sort_order": "DESC"
}

View File

@ -16,8 +16,13 @@ class PlaidSettings(Document):
@frappe.whitelist()
def plaid_configuration():
if frappe.db.get_value("Plaid Settings", None, "enabled") == "1":
return {"plaid_public_key": frappe.conf.get("plaid_public_key") or None, "plaid_env": frappe.conf.get("plaid_env") or None, "client_name": frappe.local.site }
if frappe.db.get_single_value("Plaid Settings", "enabled"):
plaid_settings = frappe.get_single("Plaid Settings")
return {
"plaid_public_key": plaid_settings.plaid_public_key,
"plaid_env": plaid_settings.plaid_env,
"client_name": frappe.local.site
}
else:
return "disabled"

View File

@ -1,5 +1,6 @@
import frappe
import requests
from frappe import _
# api/method/erpnext.erpnext_integrations.exotel_integration.handle_incoming_call
# api/method/erpnext.erpnext_integrations.exotel_integration.handle_end_call
@ -7,19 +8,24 @@ import requests
@frappe.whitelist(allow_guest=True)
def handle_incoming_call(**kwargs):
exotel_settings = get_exotel_settings()
if not exotel_settings.enabled: return
try:
exotel_settings = get_exotel_settings()
if not exotel_settings.enabled: return
call_payload = kwargs
status = call_payload.get('Status')
if status == 'free':
return
call_payload = kwargs
status = call_payload.get('Status')
if status == 'free':
return
call_log = get_call_log(call_payload)
if not call_log:
create_call_log(call_payload)
else:
update_call_log(call_payload, call_log=call_log)
call_log = get_call_log(call_payload)
if not call_log:
create_call_log(call_payload)
else:
update_call_log(call_payload, call_log=call_log)
except Exception as e:
frappe.db.rollback()
frappe.log_error(title=_('Error in Exotel incoming call'))
frappe.db.commit()
@frappe.whitelist(allow_guest=True)
def handle_end_call(**kwargs):
@ -101,4 +107,4 @@ def get_exotel_endpoint(action):
api_token=settings.api_token,
sid=settings.account_sid,
action=action
)
)

View File

@ -171,6 +171,8 @@
"read_only": 1
},
{
"fetch_from": "user_id.user_image",
"fetch_if_empty": 1,
"fieldname": "image",
"fieldtype": "Attach Image",
"hidden": 1,
@ -780,7 +782,7 @@
"icon": "fa fa-user",
"idx": 24,
"image_field": "image",
"modified": "2019-09-06 15:54:36.735147",
"modified": "2019-09-12 14:21:12.711280",
"modified_by": "Administrator",
"module": "HR",
"name": "Employee",

View File

@ -439,7 +439,7 @@ def get_leave_details(employee, date):
return ret
@frappe.whitelist()
def get_leave_balance_on(employee, leave_type, date, to_date=nowdate(), consider_all_leaves_in_the_allocation_period=False):
def get_leave_balance_on(employee, leave_type, date, to_date=None, consider_all_leaves_in_the_allocation_period=False):
'''
Returns leave balance till date
:param employee: employee name
@ -449,6 +449,9 @@ def get_leave_balance_on(employee, leave_type, date, to_date=nowdate(), consider
:param consider_all_leaves_in_the_allocation_period: consider all leaves taken till the allocation end date
'''
if not to_date:
to_date = nowdate()
allocation_records = get_leave_allocation_records(employee, date, leave_type)
allocation = allocation_records.get(leave_type, frappe._dict())
@ -753,4 +756,4 @@ def get_leave_approver(employee):
leave_approver = frappe.db.get_value('Department Approver', {'parent': department,
'parentfield': 'leave_approvers', 'idx': 1}, 'approver')
return leave_approver
return leave_approver

View File

@ -8,6 +8,8 @@ from frappe.utils import flt
from erpnext.hr.doctype.leave_application.leave_application \
import get_leave_balance_on, get_leaves_for_period
from erpnext.hr.report.employee_leave_balance_summary.employee_leave_balance_summary \
import get_department_leave_approver_map
def execute(filters=None):
leave_types = frappe.db.sql_list("select name from `tabLeave Type` order by name asc")
@ -19,7 +21,7 @@ def execute(filters=None):
def get_columns(leave_types):
columns = [
_("Employee") + ":Link/Employee:150",
_("Employee") + ":Link.Employee:150",
_("Employee Name") + "::200",
_("Department") +"::150"
]
@ -52,11 +54,13 @@ def get_data(filters, leave_types):
active_employees = frappe.get_all("Employee",
filters=conditions,
fields=["name", "employee_name", "department", "user_id"])
fields=["name", "employee_name", "department", "user_id", "leave_approver"])
department_approver_map = get_department_leave_approver_map(filters.get('department'))
data = []
for employee in active_employees:
leave_approvers = get_approvers(employee.department)
leave_approvers = department_approver_map.get(employee.department_name, []).append(employee.leave_approver)
if (len(leave_approvers) and user in leave_approvers) or (user in ["Administrator", employee.user_id]) or ("HR Manager" in frappe.get_roles(user)):
row = [employee.name, employee.employee_name, employee.department]
@ -66,46 +70,13 @@ def get_data(filters, leave_types):
filters.from_date, filters.to_date) * -1
# opening balance
opening = get_total_allocated_leaves(employee.name, leave_type, filters.from_date, filters.to_date)
opening = get_leave_balance_on(employee.name, leave_type, filters.from_date)
# closing balance
closing = flt(opening) - flt(leaves_taken)
closing = get_leave_balance_on(employee.name, leave_type, filters.to_date)
row += [opening, leaves_taken, closing]
data.append(row)
return data
def get_approvers(department):
if not department:
return []
approvers = []
# get current department and all its child
department_details = frappe.db.get_value("Department", {"name": department}, ["lft", "rgt"], as_dict=True)
department_list = frappe.db.sql("""select name from `tabDepartment`
where lft >= %s and rgt <= %s order by lft desc
""", (department_details.lft, department_details.rgt), as_list = True)
# retrieve approvers list from current department and from its subsequent child departments
for d in department_list:
approvers.extend([l.leave_approver for l in frappe.db.sql("""select approver from `tabDepartment Approver` \
where parent = %s and parentfield = 'leave_approvers'""", (d), as_dict=True)])
return approvers
def get_total_allocated_leaves(employee, leave_type, from_date, to_date):
''' Returns leave allocation between from date and to date '''
leave_allocation_records = frappe.db.get_all('Leave Ledger Entry', filters={
'docstatus': 1,
'is_expired': 0,
'leave_type': leave_type,
'employee': employee,
'transaction_type': 'Leave Allocation'
}, or_filters={
'from_date': ['between', (from_date, to_date)],
'to_date': ['between', (from_date, to_date)]
}, fields=['SUM(leaves) as leaves'])
return flt(leave_allocation_records[0].get('leaves')) if leave_allocation_records else flt(0)
return data

View File

@ -4,6 +4,20 @@
frappe.query_reports['Employee Leave Balance Summary'] = {
filters: [
{
fieldname:'from_date',
label: __('From Date'),
fieldtype: 'Date',
reqd: 1,
default: frappe.defaults.get_default('year_start_date')
},
{
fieldname:'to_date',
label: __('To Date'),
fieldtype: 'Date',
reqd: 1,
default: frappe.defaults.get_default('year_end_date')
},
{
fieldname:'company',
label: __('Company'),
@ -19,18 +33,10 @@ frappe.query_reports['Employee Leave Balance Summary'] = {
options: 'Employee',
},
{
fieldname:'from_date',
label: __('From Date'),
fieldtype: 'Date',
reqd: 1,
default: frappe.defaults.get_default('year_start_date')
},
{
fieldname:'to_date',
label: __('To Date'),
fieldtype: 'Date',
reqd: 1,
default: frappe.defaults.get_default('year_end_date')
fieldname:'department',
label: __('Department'),
fieldtype: 'Link',
options: 'Department',
}
]
};

View File

@ -5,9 +5,7 @@ from __future__ import unicode_literals
import frappe
from frappe.utils import flt
from frappe import _
from erpnext.hr.doctype.leave_application.leave_application import get_leaves_for_period
from erpnext.hr.report.employee_leave_balance.employee_leave_balance import get_total_allocated_leaves
from erpnext.hr.doctype.leave_application.leave_application import get_leaves_for_period, get_leave_balance_on
def execute(filters=None):
if filters.to_date <= filters.from_date:
@ -58,16 +56,14 @@ def get_columns():
def get_data(filters):
leave_types = frappe.db.sql_list("SELECT `name` FROM `tabLeave Type` ORDER BY `name` ASC")
conditions = {
'status': 'Active',
}
conditions = get_conditions(filters)
if filters.get('employee'):
conditions['name'] = filters.get('employee')
user = frappe.session.user
department_approver_map = get_department_leave_approver_map(filters.get('department'))
active_employees = frappe.get_all('Employee',
active_employees = frappe.get_list('Employee',
filters=conditions,
fields=['name', 'employee_name', 'department', 'user_id'])
fields=['name', 'employee_name', 'department', 'user_id', 'leave_approver'])
data = []
@ -76,21 +72,59 @@ def get_data(filters):
'leave_type': leave_type
})
for employee in active_employees:
row = frappe._dict({
'employee': employee.name,
'employee_name': employee.employee_name
})
leave_approvers = department_approver_map.get(employee.department_name, []).append(employee.leave_approver)
leaves_taken = get_leaves_for_period(employee.name, leave_type,
filters.from_date, filters.to_date) * -1
if (len(leave_approvers) and user in leave_approvers) or (user in ["Administrator", employee.user_id]) \
or ("HR Manager" in frappe.get_roles(user)):
row = frappe._dict({
'employee': employee.name,
'employee_name': employee.employee_name
})
opening = get_total_allocated_leaves(employee.name, leave_type, filters.from_date, filters.to_date)
closing = flt(opening) - flt(leaves_taken)
leaves_taken = get_leaves_for_period(employee.name, leave_type,
filters.from_date, filters.to_date) * -1
row.opening_balance = opening
row.leaves_taken = leaves_taken
row.closing_balance = closing
row.indent = 1
data.append(row)
opening = get_leave_balance_on(employee.name, leave_type, filters.from_date)
closing = get_leave_balance_on(employee.name, leave_type, filters.to_date)
row.opening_balance = opening
row.leaves_taken = leaves_taken
row.closing_balance = closing
row.indent = 1
data.append(row)
return data
def get_conditions(filters):
conditions={
'status': 'Active',
}
if filters.get('employee'):
conditions['name'] = filters.get('employee')
if filters.get('employee'):
conditions['name'] = filters.get('employee')
return conditions
def get_department_leave_approver_map(department=None):
conditions=''
if department:
conditions='and department_name = %(department)s or parent_department = %(department)s'%{'department': department}
# get current department and all its child
department_list = frappe.db.sql_list(''' SELECT name FROM `tabDepartment` WHERE disabled=0 {0}'''.format(conditions)) #nosec
# retrieve approvers list from current department and from its subsequent child departments
approver_list = frappe.get_all('Department Approver', filters={
'parentfield': 'leave_approvers',
'parent': ('in', department_list)
}, fields=['parent', 'approver'], as_list=1)
approvers = {}
for k, v in approver_list:
approvers.setdefault(k, []).append(v)
return approvers

View File

@ -648,7 +648,7 @@ def get_bom_items_as_dict(bom, company, qty=1, fetch_exploded=1, fetch_scrap_ite
item_dict[item.item_code] = item
for item, item_details in item_dict.items():
for d in [["Account", "expense_account", "default_expense_account"],
for d in [["Account", "expense_account", "stock_adjustment_account"],
["Cost Center", "cost_center", "cost_center"], ["Warehouse", "default_warehouse", ""]]:
company_in_record = frappe.db.get_value(d[0], item_details.get(d[1]), "company")
if not item_details.get(d[1]) or (company_in_record and company != company_in_record):

View File

@ -272,11 +272,12 @@ frappe.ui.form.on("Production Plan Item", {
frappe.ui.form.on("Material Request Plan Item", {
warehouse: function(frm, cdt, cdn) {
const row = locals[cdt][cdn];
if (row.warehouse && row.item_code) {
if (row.warehouse && row.item_code && frm.doc.company) {
frappe.call({
method: "erpnext.manufacturing.doctype.production_plan.production_plan.get_bin_details",
args: {
row: row,
company: frm.doc.company,
for_warehouse: row.warehouse
},
callback: function(r) {

View File

@ -625,6 +625,7 @@ erpnext.patches.v12_0.add_default_buying_selling_terms_in_company
erpnext.patches.v12_0.update_ewaybill_field_position
erpnext.patches.v12_0.create_accounting_dimensions_in_missing_doctypes
erpnext.patches.v11_1.set_status_for_material_request_type_manufacture
erpnext.patches.v12_0.move_plaid_settings_to_doctype
execute:frappe.reload_doc('desk', 'doctype','dashboard_chart_link')
execute:frappe.reload_doc('desk', 'doctype','dashboard')
execute:frappe.reload_doc('desk', 'doctype','dashboard_chart_source')
@ -634,3 +635,4 @@ erpnext.patches.v12_0.remove_bank_remittance_custom_fields
erpnext.patches.v12_0.generate_leave_ledger_entries
erpnext.patches.v12_0.move_credit_limit_to_customer_credit_limit
erpnext.patches.v12_0.add_variant_of_in_item_attribute_table
erpnext.patches.v12_0.create_default_energy_point_rules

View File

@ -0,0 +1,6 @@
import frappe
from erpnext.setup.install import create_default_energy_point_rules
def execute():
frappe.reload_doc('social', 'doctype', 'energy_point_rule')
create_default_energy_point_rules()

View File

@ -0,0 +1,22 @@
# Copyright (c) 2017, Frappe and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import frappe
def execute():
frappe.reload_doc("erpnext_integrations", "doctype", "plaid_settings")
plaid_settings = frappe.get_single("Plaid Settings")
if plaid_settings.enabled:
if not (frappe.conf.plaid_client_id and frappe.conf.plaid_env \
and frappe.conf.plaid_public_key and frappe.conf.plaid_secret):
plaid_settings.enabled = 0
else:
plaid_settings.update({
"plaid_client_id": frappe.conf.plaid_client_id,
"plaid_public_key": frappe.conf.plaid_public_key,
"plaid_env": frappe.conf.plaid_env,
"plaid_secret": frappe.conf.plaid_secret
})
plaid_settings.flags.ignore_mandatory = True
plaid_settings.save()

View File

@ -1,381 +1,391 @@
{
"allow_import": 1,
"autoname": "TASK-.YYYY.-.#####",
"creation": "2013-01-29 19:25:50",
"doctype": "DocType",
"document_type": "Setup",
"field_order": [
"subject",
"project",
"issue",
"type",
"is_group",
"column_break0",
"status",
"priority",
"task_weight",
"color",
"parent_task",
"sb_timeline",
"exp_start_date",
"expected_time",
"column_break_11",
"exp_end_date",
"progress",
"is_milestone",
"sb_details",
"description",
"sb_depends_on",
"depends_on",
"depends_on_tasks",
"sb_actual",
"act_start_date",
"actual_time",
"column_break_15",
"act_end_date",
"sb_costing",
"total_costing_amount",
"total_expense_claim",
"column_break_20",
"total_billing_amount",
"sb_more_info",
"review_date",
"closing_date",
"column_break_22",
"department",
"company",
"lft",
"rgt",
"old_parent"
],
"fields": [
{
"fieldname": "subject",
"fieldtype": "Data",
"in_global_search": 1,
"label": "Subject",
"reqd": 1,
"search_index": 1,
"in_standard_filter": 1
},
{
"bold": 1,
"fieldname": "project",
"fieldtype": "Link",
"in_global_search": 1,
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Project",
"oldfieldname": "project",
"oldfieldtype": "Link",
"options": "Project",
"remember_last_selected_value": 1,
"search_index": 1
},
{
"fieldname": "issue",
"fieldtype": "Link",
"label": "Issue",
"options": "Issue"
},
{
"fieldname": "type",
"fieldtype": "Link",
"label": "Type",
"options": "Task Type"
},
{
"bold": 1,
"default": "0",
"fieldname": "is_group",
"fieldtype": "Check",
"in_list_view": 1,
"label": "Is Group"
},
{
"fieldname": "column_break0",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"print_width": "50%",
"width": "50%"
},
{
"bold": 1,
"fieldname": "status",
"fieldtype": "Select",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Status",
"no_copy": 1,
"oldfieldname": "status",
"oldfieldtype": "Select",
"options": "Open\nWorking\nPending Review\nOverdue\nCompleted\nCancelled"
},
{
"fieldname": "priority",
"fieldtype": "Select",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Priority",
"oldfieldname": "priority",
"oldfieldtype": "Select",
"options": "Low\nMedium\nHigh\nUrgent",
"search_index": 1
},
{
"fieldname": "color",
"fieldtype": "Color",
"label": "Color"
},
{
"bold": 1,
"fieldname": "parent_task",
"fieldtype": "Link",
"ignore_user_permissions": 1,
"label": "Parent Task",
"options": "Task",
"search_index": 1
},
{
"collapsible": 1,
"collapsible_depends_on": "eval:doc.__islocal",
"fieldname": "sb_timeline",
"fieldtype": "Section Break",
"label": "Timeline"
},
{
"fieldname": "exp_start_date",
"fieldtype": "Date",
"label": "Expected Start Date",
"oldfieldname": "exp_start_date",
"oldfieldtype": "Date"
},
{
"default": "0",
"fieldname": "expected_time",
"fieldtype": "Float",
"label": "Expected Time (in hours)",
"oldfieldname": "exp_total_hrs",
"oldfieldtype": "Data"
},
{
"fetch_from": "type.weight",
"fieldname": "task_weight",
"fieldtype": "Float",
"label": "Weight"
},
{
"fieldname": "column_break_11",
"fieldtype": "Column Break"
},
{
"bold": 1,
"fieldname": "exp_end_date",
"fieldtype": "Date",
"label": "Expected End Date",
"oldfieldname": "exp_end_date",
"oldfieldtype": "Date",
"search_index": 1
},
{
"fieldname": "progress",
"fieldtype": "Percent",
"label": "% Progress"
},
{
"fieldname": "is_milestone",
"fieldtype": "Check",
"in_list_view": 1,
"label": "Is Milestone"
},
{
"fieldname": "sb_details",
"fieldtype": "Section Break",
"label": "Details",
"oldfieldtype": "Section Break"
},
{
"fieldname": "description",
"fieldtype": "Text Editor",
"in_preview": 1,
"label": "Task Description",
"oldfieldname": "description",
"oldfieldtype": "Text Editor",
"print_width": "300px",
"width": "300px"
},
{
"fieldname": "sb_depends_on",
"fieldtype": "Section Break",
"label": "Dependencies",
"oldfieldtype": "Section Break"
},
{
"fieldname": "depends_on",
"fieldtype": "Table",
"label": "Dependent Tasks",
"options": "Task Depends On"
},
{
"fieldname": "depends_on_tasks",
"fieldtype": "Code",
"hidden": 1,
"label": "Depends on Tasks",
"read_only": 1
},
{
"fieldname": "sb_actual",
"fieldtype": "Section Break",
"oldfieldtype": "Column Break",
"print_width": "50%",
"width": "50%"
},
{
"fieldname": "act_start_date",
"fieldtype": "Date",
"label": "Actual Start Date (via Time Sheet)",
"oldfieldname": "act_start_date",
"oldfieldtype": "Date",
"read_only": 1
},
{
"fieldname": "actual_time",
"fieldtype": "Float",
"label": "Actual Time (in hours)",
"read_only": 1
},
{
"fieldname": "column_break_15",
"fieldtype": "Column Break"
},
{
"fieldname": "act_end_date",
"fieldtype": "Date",
"label": "Actual End Date (via Time Sheet)",
"oldfieldname": "act_end_date",
"oldfieldtype": "Date",
"read_only": 1
},
{
"collapsible": 1,
"fieldname": "sb_costing",
"fieldtype": "Section Break",
"label": "Costing"
},
{
"fieldname": "total_costing_amount",
"fieldtype": "Currency",
"label": "Total Costing Amount (via Time Sheet)",
"oldfieldname": "actual_budget",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"read_only": 1
},
{
"fieldname": "total_expense_claim",
"fieldtype": "Currency",
"label": "Total Expense Claim (via Expense Claim)",
"options": "Company:company:default_currency",
"read_only": 1
},
{
"fieldname": "column_break_20",
"fieldtype": "Column Break"
},
{
"fieldname": "total_billing_amount",
"fieldtype": "Currency",
"label": "Total Billing Amount (via Time Sheet)",
"read_only": 1
},
{
"collapsible": 1,
"fieldname": "sb_more_info",
"fieldtype": "Section Break",
"label": "More Info"
},
{
"depends_on": "eval:doc.status == \"Closed\" || doc.status == \"Pending Review\"",
"fieldname": "review_date",
"fieldtype": "Date",
"label": "Review Date",
"oldfieldname": "review_date",
"oldfieldtype": "Date"
},
{
"depends_on": "eval:doc.status == \"Closed\"",
"fieldname": "closing_date",
"fieldtype": "Date",
"label": "Closing Date",
"oldfieldname": "closing_date",
"oldfieldtype": "Date"
},
{
"fieldname": "column_break_22",
"fieldtype": "Column Break"
},
{
"fieldname": "department",
"fieldtype": "Link",
"label": "Department",
"options": "Department"
},
{
"fieldname": "company",
"fieldtype": "Link",
"label": "Company",
"options": "Company",
"remember_last_selected_value": 1
},
{
"fieldname": "lft",
"fieldtype": "Int",
"hidden": 1,
"label": "lft",
"read_only": 1
},
{
"fieldname": "rgt",
"fieldtype": "Int",
"hidden": 1,
"label": "rgt",
"read_only": 1
},
{
"fieldname": "old_parent",
"fieldtype": "Data",
"hidden": 1,
"ignore_user_permissions": 1,
"label": "Old Parent",
"read_only": 1
}
],
"icon": "fa fa-check",
"idx": 1,
"max_attachments": 5,
"modified": "2019-06-19 09:51:15.599416",
"modified_by": "Administrator",
"module": "Projects",
"name": "Task",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Projects User",
"share": 1,
"write": 1
}
],
"search_fields": "subject",
"show_name_in_global_search": 1,
"show_preview_popup": 1,
"sort_order": "DESC",
"timeline_field": "project",
"title_field": "subject",
"track_seen": 1
}
"allow_import": 1,
"autoname": "TASK-.YYYY.-.#####",
"creation": "2013-01-29 19:25:50",
"doctype": "DocType",
"document_type": "Setup",
"engine": "InnoDB",
"field_order": [
"subject",
"project",
"issue",
"type",
"is_group",
"column_break0",
"status",
"priority",
"task_weight",
"completed_by",
"color",
"parent_task",
"sb_timeline",
"exp_start_date",
"expected_time",
"column_break_11",
"exp_end_date",
"progress",
"is_milestone",
"sb_details",
"description",
"sb_depends_on",
"depends_on",
"depends_on_tasks",
"sb_actual",
"act_start_date",
"actual_time",
"column_break_15",
"act_end_date",
"sb_costing",
"total_costing_amount",
"total_expense_claim",
"column_break_20",
"total_billing_amount",
"sb_more_info",
"review_date",
"closing_date",
"column_break_22",
"department",
"company",
"lft",
"rgt",
"old_parent"
],
"fields": [
{
"fieldname": "subject",
"fieldtype": "Data",
"in_global_search": 1,
"in_standard_filter": 1,
"label": "Subject",
"reqd": 1,
"search_index": 1
},
{
"bold": 1,
"fieldname": "project",
"fieldtype": "Link",
"in_global_search": 1,
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Project",
"oldfieldname": "project",
"oldfieldtype": "Link",
"options": "Project",
"remember_last_selected_value": 1,
"search_index": 1
},
{
"fieldname": "issue",
"fieldtype": "Link",
"label": "Issue",
"options": "Issue"
},
{
"fieldname": "type",
"fieldtype": "Link",
"label": "Type",
"options": "Task Type"
},
{
"bold": 1,
"default": "0",
"fieldname": "is_group",
"fieldtype": "Check",
"in_list_view": 1,
"label": "Is Group"
},
{
"fieldname": "column_break0",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"print_width": "50%",
"width": "50%"
},
{
"bold": 1,
"fieldname": "status",
"fieldtype": "Select",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Status",
"no_copy": 1,
"oldfieldname": "status",
"oldfieldtype": "Select",
"options": "Open\nWorking\nPending Review\nOverdue\nCompleted\nCancelled"
},
{
"fieldname": "priority",
"fieldtype": "Select",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Priority",
"oldfieldname": "priority",
"oldfieldtype": "Select",
"options": "Low\nMedium\nHigh\nUrgent",
"search_index": 1
},
{
"fieldname": "color",
"fieldtype": "Color",
"label": "Color"
},
{
"bold": 1,
"fieldname": "parent_task",
"fieldtype": "Link",
"ignore_user_permissions": 1,
"label": "Parent Task",
"options": "Task",
"search_index": 1
},
{
"collapsible": 1,
"collapsible_depends_on": "eval:doc.__islocal",
"fieldname": "sb_timeline",
"fieldtype": "Section Break",
"label": "Timeline"
},
{
"fieldname": "exp_start_date",
"fieldtype": "Date",
"label": "Expected Start Date",
"oldfieldname": "exp_start_date",
"oldfieldtype": "Date"
},
{
"default": "0",
"fieldname": "expected_time",
"fieldtype": "Float",
"label": "Expected Time (in hours)",
"oldfieldname": "exp_total_hrs",
"oldfieldtype": "Data"
},
{
"fetch_from": "type.weight",
"fieldname": "task_weight",
"fieldtype": "Float",
"label": "Weight"
},
{
"fieldname": "column_break_11",
"fieldtype": "Column Break"
},
{
"bold": 1,
"fieldname": "exp_end_date",
"fieldtype": "Date",
"label": "Expected End Date",
"oldfieldname": "exp_end_date",
"oldfieldtype": "Date",
"search_index": 1
},
{
"fieldname": "progress",
"fieldtype": "Percent",
"label": "% Progress"
},
{
"default": "0",
"fieldname": "is_milestone",
"fieldtype": "Check",
"in_list_view": 1,
"label": "Is Milestone"
},
{
"fieldname": "sb_details",
"fieldtype": "Section Break",
"label": "Details",
"oldfieldtype": "Section Break"
},
{
"fieldname": "description",
"fieldtype": "Text Editor",
"in_preview": 1,
"label": "Task Description",
"oldfieldname": "description",
"oldfieldtype": "Text Editor",
"print_width": "300px",
"width": "300px"
},
{
"fieldname": "sb_depends_on",
"fieldtype": "Section Break",
"label": "Dependencies",
"oldfieldtype": "Section Break"
},
{
"fieldname": "depends_on",
"fieldtype": "Table",
"label": "Dependent Tasks",
"options": "Task Depends On"
},
{
"fieldname": "depends_on_tasks",
"fieldtype": "Code",
"hidden": 1,
"label": "Depends on Tasks",
"read_only": 1
},
{
"fieldname": "sb_actual",
"fieldtype": "Section Break",
"oldfieldtype": "Column Break",
"print_width": "50%",
"width": "50%"
},
{
"fieldname": "act_start_date",
"fieldtype": "Date",
"label": "Actual Start Date (via Time Sheet)",
"oldfieldname": "act_start_date",
"oldfieldtype": "Date",
"read_only": 1
},
{
"fieldname": "actual_time",
"fieldtype": "Float",
"label": "Actual Time (in hours)",
"read_only": 1
},
{
"fieldname": "column_break_15",
"fieldtype": "Column Break"
},
{
"fieldname": "act_end_date",
"fieldtype": "Date",
"label": "Actual End Date (via Time Sheet)",
"oldfieldname": "act_end_date",
"oldfieldtype": "Date",
"read_only": 1
},
{
"collapsible": 1,
"fieldname": "sb_costing",
"fieldtype": "Section Break",
"label": "Costing"
},
{
"fieldname": "total_costing_amount",
"fieldtype": "Currency",
"label": "Total Costing Amount (via Time Sheet)",
"oldfieldname": "actual_budget",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"read_only": 1
},
{
"fieldname": "total_expense_claim",
"fieldtype": "Currency",
"label": "Total Expense Claim (via Expense Claim)",
"options": "Company:company:default_currency",
"read_only": 1
},
{
"fieldname": "column_break_20",
"fieldtype": "Column Break"
},
{
"fieldname": "total_billing_amount",
"fieldtype": "Currency",
"label": "Total Billing Amount (via Time Sheet)",
"read_only": 1
},
{
"collapsible": 1,
"fieldname": "sb_more_info",
"fieldtype": "Section Break",
"label": "More Info"
},
{
"depends_on": "eval:doc.status == \"Closed\" || doc.status == \"Pending Review\"",
"fieldname": "review_date",
"fieldtype": "Date",
"label": "Review Date",
"oldfieldname": "review_date",
"oldfieldtype": "Date"
},
{
"depends_on": "eval:doc.status == \"Closed\"",
"fieldname": "closing_date",
"fieldtype": "Date",
"label": "Closing Date",
"oldfieldname": "closing_date",
"oldfieldtype": "Date"
},
{
"fieldname": "column_break_22",
"fieldtype": "Column Break"
},
{
"fieldname": "department",
"fieldtype": "Link",
"label": "Department",
"options": "Department"
},
{
"fieldname": "company",
"fieldtype": "Link",
"label": "Company",
"options": "Company",
"remember_last_selected_value": 1
},
{
"fieldname": "lft",
"fieldtype": "Int",
"hidden": 1,
"label": "lft",
"read_only": 1
},
{
"fieldname": "rgt",
"fieldtype": "Int",
"hidden": 1,
"label": "rgt",
"read_only": 1
},
{
"fieldname": "old_parent",
"fieldtype": "Data",
"hidden": 1,
"ignore_user_permissions": 1,
"label": "Old Parent",
"read_only": 1
},
{
"fieldname": "completed_by",
"fieldtype": "Link",
"label": "Completed By",
"options": "User"
}
],
"icon": "fa fa-check",
"idx": 1,
"max_attachments": 5,
"modified": "2019-09-10 13:46:24.631754",
"modified_by": "Administrator",
"module": "Projects",
"name": "Task",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Projects User",
"share": 1,
"write": 1
}
],
"search_fields": "subject",
"show_name_in_global_search": 1,
"show_preview_popup": 1,
"sort_field": "modified",
"sort_order": "DESC",
"timeline_field": "project",
"title_field": "subject",
"track_seen": 1
}

View File

@ -9,7 +9,7 @@ import frappe
from frappe import _, throw
from frappe.utils import add_days, cstr, date_diff, get_link_to_form, getdate
from frappe.utils.nestedset import NestedSet
from frappe.desk.form.assign_to import close_all_assignments, clear
class CircularReferenceError(frappe.ValidationError): pass
class EndDateCannotBeGreaterThanProjectEndDateError(frappe.ValidationError): pass
@ -45,8 +45,7 @@ class Task(NestedSet):
if frappe.db.get_value("Task", d.task, "status") != "Completed":
frappe.throw(_("Cannot close task {0} as its dependant task {1} is not closed.").format(frappe.bold(self.name), frappe.bold(d.task)))
from frappe.desk.form.assign_to import clear
clear(self.doctype, self.name)
close_all_assignments(self.doctype, self.name)
def validate_progress(self):
if (self.progress or 0) > 100:
@ -77,8 +76,9 @@ class Task(NestedSet):
self.populate_depends_on()
def unassign_todo(self):
if self.status in ("Completed", "Cancelled"):
from frappe.desk.form.assign_to import clear
if self.status == "Completed":
close_all_assignments(self.doctype, self.name)
if self.status == "Cancelled":
clear(self.doctype, self.name)
def update_total_expense_claim(self):

View File

@ -28,12 +28,12 @@ class CallPopup {
'depends_on': () => this.call_log.lead
}, {
'fieldtype': 'Button',
'label': __('Make New Contact'),
'label': __('Create New Contact'),
'click': () => frappe.new_doc('Contact', { 'mobile_no': this.caller_number }),
'depends_on': () => !this.get_caller_name()
}, {
'fieldtype': 'Button',
'label': __('Make New Lead'),
'label': __('Create New Lead'),
'click': () => frappe.new_doc('Lead', { 'mobile_no': this.caller_number }),
'depends_on': () => !this.get_caller_name()
}, {

View File

@ -293,7 +293,7 @@ erpnext.buying.BuyingController = erpnext.TransactionController.extend({
items: my_items
},
callback: function(r) {
if(!r.message) {
if(!r.message || r.message.length == 0) {
frappe.throw(__("No pending Material Requests found to link for the given items."))
}
else {

View File

@ -277,8 +277,30 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({
this.set_dynamic_labels();
this.setup_sms();
this.setup_quality_inspection();
this.frm.fields_dict["scan_barcode"] && this.frm.fields_dict["scan_barcode"].set_value("");
this.frm.fields_dict["scan_barcode"] && this.frm.fields_dict["scan_barcode"].set_new_description("");
let scan_barcode_field = this.frm.get_field('scan_barcode');
if (scan_barcode_field) {
scan_barcode_field.set_value("");
scan_barcode_field.set_new_description("");
if (frappe.is_mobile()) {
if (scan_barcode_field.$input_wrapper.find('.input-group').length) return;
let $input_group = $('<div class="input-group">');
scan_barcode_field.$input_wrapper.find('.control-input').append($input_group);
$input_group.append(scan_barcode_field.$input);
$(`<span class="input-group-btn" style="vertical-align: top">
<button class="btn btn-default border" type="button">
<i class="fa fa-camera text-muted"></i>
</button>
</span>`)
.on('click', '.btn', () => {
frappe.barcode.scan_barcode().then(barcode => {
scan_barcode_field.set_value(barcode);
});
})
.appendTo($input_group);
}
}
},
scan_barcode: function() {

View File

@ -1,5 +1,11 @@
{%- macro format_float(value, precision=2) -%}
{{ value|round(frappe.utils.cint(precision)) }}
{%- if frappe.utils.cint(precision) == 3 %}
{{ "%.3f" % value|abs }}
{%- elif frappe.utils.cint(precision) == 4 -%}
{{ "%.4f" % value|abs }}
{%- else -%}
{{ "%.2f" % value|abs }}
{%- endif %}
{%- endmacro -%}
{%- macro render_address(address) %}

View File

@ -722,7 +722,7 @@ def get_company_gstin_number(company):
if gstin:
return gstin[0]["gstin"]
else:
frappe.throw(_("No GST No. found for the Company."))
frappe.throw(_("Please set valid GSTIN No. in Company Address"))
def download_json_file(filename, report_type, data):
''' download json content in a file '''

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,58 @@
from __future__ import unicode_literals
from frappe import _
doctype_rule_map = {
'Item': {
'points': 5,
'for_doc_event': 'New'
},
'Customer': {
'points': 5,
'for_doc_event': 'New'
},
'Supplier': {
'points': 5,
'for_doc_event': 'New'
},
'Lead': {
'points': 2,
'for_doc_event': 'New'
},
'Opportunity': {
'points': 10,
'for_doc_event': 'Custom',
'condition': 'doc.status=="Converted"',
'rule_name': _('On Converting Opportunity'),
'user_field': 'converted_by'
},
'Sales Order': {
'points': 10,
'for_doc_event': 'Submit',
'rule_name': _('On Sales Order Submission'),
'user_field': 'modified_by'
},
'Purchase Order': {
'points': 10,
'for_doc_event': 'Submit',
'rule_name': _('On Purchase Order Submission'),
'user_field': 'modified_by'
},
'Task': {
'points': 5,
'condition': 'doc.status == "Completed"',
'rule_name': _('On Task Completion'),
'user_field': 'completed_by'
}
}
def get_default_energy_point_rules():
return [{
'doctype': 'Energy Point Rule',
'reference_doctype': doctype,
'for_doc_event': rule.get('for_doc_event') or 'Custom',
'condition': rule.get('condition'),
'rule_name': rule.get('rule_name') or _('On {0} Creation').format(doctype),
'points': rule.get('points'),
'user_field': rule.get('user_field') or 'owner'
} for doctype, rule in doctype_rule_map.items()]

View File

@ -2,26 +2,26 @@ from __future__ import unicode_literals
from frappe import _
doctype_list = [
'Purchase Receipt',
'Purchase Invoice',
'Quotation',
'Sales Order',
'Delivery Note',
'Sales Invoice'
'Purchase Receipt',
'Purchase Invoice',
'Quotation',
'Sales Order',
'Delivery Note',
'Sales Invoice'
]
def get_message(doctype):
return _("{0} has been submitted successfully".format(_(doctype)))
return _("{0} has been submitted successfully").format(_(doctype))
def get_first_success_message(doctype):
return _("{0} has been submitted successfully".format(_(doctype)))
return get_message(doctype)
def get_default_success_action():
return [{
'doctype': 'Success Action',
'ref_doctype': doctype,
'message': get_message(doctype),
'first_success_message': get_first_success_message(doctype),
'next_actions': 'new\nprint\nemail'
} for doctype in doctype_list]
return [{
'doctype': 'Success Action',
'ref_doctype': doctype,
'message': get_message(doctype),
'first_success_message': get_first_success_message(doctype),
'next_actions': 'new\nprint\nemail'
} for doctype in doctype_list]

View File

@ -151,7 +151,7 @@ class NamingSeries(Document):
def insert_series(self, series):
"""insert series if missing"""
if not frappe.db.get_value('Series', series, 'name', order_by="name"):
if frappe.db.get_value('Series', series, 'name', order_by="name") == None:
frappe.db.sql("insert into tabSeries (name, current) values (%s, 0)", (series))
def update_series_start(self):

View File

@ -9,6 +9,7 @@ from .default_success_action import get_default_success_action
from frappe import _
from frappe.desk.page.setup_wizard.setup_wizard import add_all_roles_to
from frappe.custom.doctype.custom_field.custom_field import create_custom_field
from erpnext.setup.default_energy_point_rules import get_default_energy_point_rules
default_mail_footer = """<div style="padding: 7px; text-align: right; color: #888"><small>Sent via
<a style="color: #888" href="http://erpnext.org">ERPNext</a></div>"""
@ -22,6 +23,7 @@ def after_install():
add_all_roles_to("Administrator")
create_default_cash_flow_mapper_templates()
create_default_success_action()
create_default_energy_point_rules()
add_company_to_session_defaults()
frappe.db.commit()
@ -86,6 +88,17 @@ def create_default_success_action():
doc = frappe.get_doc(success_action)
doc.insert(ignore_permissions=True)
def create_default_energy_point_rules():
for rule in get_default_energy_point_rules():
# check if any rule for ref. doctype exists
rule_exists = frappe.db.exists('Energy Point Rule', {
'reference_doctype': rule.get('reference_doctype')
})
if rule_exists: continue
doc = frappe.get_doc(rule)
doc.insert(ignore_permissions=True)
def add_company_to_session_defaults():
settings = frappe.get_single("Session Default Settings")
settings.append("session_defaults", {

View File

@ -125,6 +125,7 @@ class Item(WebsiteGenerator):
self.validate_auto_reorder_enabled_in_stock_settings()
self.cant_change()
self.update_show_in_website()
self.validate_manufacturer()
if not self.get("__islocal"):
self.old_item_group = frappe.db.get_value(self.doctype, self.name, "item_group")
@ -144,6 +145,13 @@ class Item(WebsiteGenerator):
if cint(frappe.db.get_single_value('Stock Settings', 'clean_description_html')):
self.description = clean_html(self.description)
def validate_manufacturer(self):
list_man = [(x.manufacturer, x.manufacturer_part_no) for x in self.get('manufacturers')]
set_man = set(list_man)
if len(list_man) != len(set_man):
frappe.throw(_("Duplicate entry in Manufacturers table"))
def validate_customer_provided_part(self):
if self.is_customer_provided_item:
if self.is_purchase_item:
@ -921,7 +929,6 @@ def validate_cancelled_item(item_code, docstatus=None, verbose=1):
msg = _("Item {0} is cancelled").format(item_code)
_msgprint(msg, verbose)
def _msgprint(msg, verbose):
if verbose:
msgprint(msg, raise_exception=True)

View File

@ -812,7 +812,7 @@ class StockEntry(StockController):
self.add_to_stock_entry_detail(item_dict)
if self.purpose != "Send to Subcontractor" and self.purpose == "Manufacture":
if self.purpose != "Send to Subcontractor" and self.purpose in ["Manufacture", "Repack"]:
scrap_item_dict = self.get_bom_scrap_material(self.fg_completed_qty)
for item in itervalues(scrap_item_dict):
if self.pro_doc and self.pro_doc.scrap_warehouse:
@ -1173,7 +1173,7 @@ class StockEntry(StockController):
frappe.db.sql("""UPDATE `tabPurchase Order Item Supplied` pos
SET pos.supplied_qty = (SELECT ifnull(sum(transfer_qty), 0) FROM `tabStock Entry Detail` sed
WHERE pos.name = sed.po_detail and sed.docstatus = 1)
WHERE pos.docstatus = 1""")
WHERE pos.docstatus = 1 and pos.parent = %s""", self.purchase_order)
#Update reserved sub contracted quantity in bin based on Supplied Item Details and
for d in self.get("items"):

View File

@ -131,19 +131,20 @@ def get_columns(filters):
return columns
def get_fifo_queue(filters):
def get_fifo_queue(filters, sle=None):
item_details = {}
transfered_item_details = {}
transferred_item_details = {}
serial_no_batch_purchase_details = {}
sle = get_stock_ledger_entries(filters)
if sle == None:
sle = get_stock_ledger_entries(filters)
for d in sle:
key = (d.name, d.warehouse) if filters.get('show_warehouse_wise_stock') else d.name
item_details.setdefault(key, {"details": d, "fifo_queue": []})
fifo_queue = item_details[key]["fifo_queue"]
transfered_item_details.setdefault((d.voucher_no, d.name), [])
transferred_item_details.setdefault((d.voucher_no, d.name), [])
if d.voucher_type == "Stock Reconciliation":
d.actual_qty = flt(d.qty_after_transaction) - flt(item_details[key].get("qty_after_transaction", 0))
@ -151,10 +152,10 @@ def get_fifo_queue(filters):
serial_no_list = get_serial_nos(d.serial_no) if d.serial_no else []
if d.actual_qty > 0:
if transfered_item_details.get((d.voucher_no, d.name)):
batch = transfered_item_details[(d.voucher_no, d.name)][0]
if transferred_item_details.get((d.voucher_no, d.name)):
batch = transferred_item_details[(d.voucher_no, d.name)][0]
fifo_queue.append(batch)
transfered_item_details[((d.voucher_no, d.name))].pop(0)
transferred_item_details[((d.voucher_no, d.name))].pop(0)
else:
if serial_no_list:
for serial_no in serial_no_list:
@ -178,11 +179,11 @@ def get_fifo_queue(filters):
# if batch qty > 0
# not enough or exactly same qty in current batch, clear batch
qty_to_pop -= batch[0]
transfered_item_details[(d.voucher_no, d.name)].append(fifo_queue.pop(0))
transferred_item_details[(d.voucher_no, d.name)].append(fifo_queue.pop(0))
else:
# all from current batch
batch[0] -= qty_to_pop
transfered_item_details[(d.voucher_no, d.name)].append([qty_to_pop, batch[1]])
transferred_item_details[(d.voucher_no, d.name)].append([qty_to_pop, batch[1]])
qty_to_pop = 0
item_details[key]["qty_after_transaction"] = d.qty_after_transaction

View File

@ -41,7 +41,7 @@ frappe.query_reports["Stock Balance"] = {
"get_query": function() {
return {
query: "erpnext.controllers.queries.item_query",
}
};
}
},
{
@ -57,7 +57,7 @@ frappe.query_reports["Stock Balance"] = {
filters: {
'warehouse_type': warehouse_type
}
}
};
}
}
},
@ -79,5 +79,10 @@ frappe.query_reports["Stock Balance"] = {
"label": __("Show Variant Attributes"),
"fieldtype": "Check"
},
{
"fieldname": 'show_stock_ageing_data',
"label": __('Show Stock Ageing Data'),
"fieldtype": 'Check'
},
]
}
};

View File

@ -4,10 +4,12 @@
from __future__ import unicode_literals
import frappe
from frappe import _
from frappe.utils import flt, cint, getdate, now
from erpnext.stock.utils import update_included_uom_in_report
from frappe.utils import flt, cint, getdate, now, date_diff
from erpnext.stock.utils import add_additional_uom_columns
from erpnext.stock.report.stock_ledger.stock_ledger import get_item_group_condition
from erpnext.stock.report.stock_ageing.stock_ageing import get_fifo_queue, get_average_age
from six import iteritems
def execute(filters=None):
@ -15,11 +17,18 @@ def execute(filters=None):
validate_filters(filters)
from_date = filters.get('from_date')
to_date = filters.get('to_date')
include_uom = filters.get("include_uom")
columns = get_columns()
columns = get_columns(filters)
items = get_items(filters)
sle = get_stock_ledger_entries(filters, items)
if filters.get('show_stock_ageing_data'):
filters['show_warehouse_wise_stock'] = True
item_wise_fifo_queue = get_fifo_queue(filters, sle)
# if no stock ledger entry found return
if not sle:
return columns, []
@ -29,7 +38,7 @@ def execute(filters=None):
item_reorder_detail_map = get_item_reorder_details(item_map.keys())
data = []
conversion_factors = []
conversion_factors = {}
for (company, item, warehouse) in sorted(iwb_map):
if item_map.get(item):
qty_dict = iwb_map[(company, item, warehouse)]
@ -39,36 +48,41 @@ def execute(filters=None):
item_reorder_level = item_reorder_detail_map[item + warehouse]["warehouse_reorder_level"]
item_reorder_qty = item_reorder_detail_map[item + warehouse]["warehouse_reorder_qty"]
report_data = [item, item_map[item]["item_name"],
item_map[item]["item_group"],
item_map[item]["brand"],
item_map[item]["description"], warehouse,
item_map[item]["stock_uom"], qty_dict.bal_qty,
qty_dict.bal_val, qty_dict.opening_qty,
qty_dict.opening_val, qty_dict.in_qty,
qty_dict.in_val, qty_dict.out_qty,
qty_dict.out_val, qty_dict.val_rate,
item_reorder_level,
item_reorder_qty,
company
]
if filters.get('show_variant_attributes', 0) == 1:
variants_attributes = get_variants_attributes()
report_data += [item_map[item].get(i) for i in variants_attributes]
report_data = {
'item_code': item,
'warehouse': warehouse,
'company': company,
'reorder_level': item_reorder_qty,
'reorder_qty': item_reorder_qty,
}
report_data.update(item_map[item])
report_data.update(qty_dict)
if include_uom:
conversion_factors.append(item_map[item].conversion_factor)
conversion_factors.setdefault(item, item_map[item].conversion_factor)
if filters.get('show_stock_ageing_data'):
fifo_queue = item_wise_fifo_queue[(item, warehouse)].get('fifo_queue')
stock_ageing_data = {
'average_age': 0,
'earliest_age': 0,
'latest_age': 0
}
if fifo_queue:
fifo_queue = sorted(fifo_queue, key=lambda fifo_data: fifo_data[1])
stock_ageing_data['average_age'] = get_average_age(fifo_queue, to_date)
stock_ageing_data['earliest_age'] = date_diff(to_date, fifo_queue[0][1])
stock_ageing_data['latest_age'] = date_diff(to_date, fifo_queue[-1][1])
report_data.update(stock_ageing_data)
data.append(report_data)
if filters.get('show_variant_attributes', 0) == 1:
columns += ["{}:Data:100".format(i) for i in get_variants_attributes()]
update_included_uom_in_report(columns, data, include_uom, conversion_factors)
add_additional_uom_columns(columns, data, include_uom, conversion_factors)
return columns, data
def get_columns():
def get_columns(filters):
"""return columns"""
columns = [
@ -93,6 +107,14 @@ def get_columns():
{"label": _("Company"), "fieldname": "company", "fieldtype": "Link", "options": "Company", "width": 100}
]
if filters.get('show_stock_ageing_data'):
columns += [{'label': _('Average Age'), 'fieldname': 'average_age', 'width': 100},
{'label': _('Earliest Age'), 'fieldname': 'earliest_age', 'width': 100},
{'label': _('Latest Age'), 'fieldname': 'latest_age', 'width': 100}]
if filters.get('show_variant_attributes'):
columns += [{'label': att_name, 'fieldname': att_name, 'width': 100} for att_name in get_variants_attributes()]
return columns
def get_conditions(filters):
@ -130,11 +152,12 @@ def get_stock_ledger_entries(filters, items):
return frappe.db.sql("""
select
sle.item_code, warehouse, sle.posting_date, sle.actual_qty, sle.valuation_rate,
sle.company, sle.voucher_type, sle.qty_after_transaction, sle.stock_value_difference
sle.company, sle.voucher_type, sle.qty_after_transaction, sle.stock_value_difference,
sle.item_code as name, sle.voucher_no
from
`tabStock Ledger Entry` sle force index (posting_sort_index)
where sle.docstatus < 2 %s %s
order by sle.posting_date, sle.posting_time, sle.creation""" %
order by sle.posting_date, sle.posting_time, sle.creation, sle.actual_qty""" % #nosec
(item_conditions_sql, conditions), as_dict=1)
def get_item_warehouse_map(filters, sle):
@ -226,7 +249,7 @@ def get_item_details(items, sle, filters):
cf_field = cf_join = ""
if filters.get("include_uom"):
cf_field = ", ucd.conversion_factor"
cf_join = "left join `tabUOM Conversion Detail` ucd on ucd.parent=item.name and ucd.uom='%s'" \
cf_join = "left join `tabUOM Conversion Detail` ucd on ucd.parent=item.name and ucd.uom=%s" \
% frappe.db.escape(filters.get("include_uom"))
res = frappe.db.sql("""

View File

@ -281,4 +281,36 @@ def update_included_uom_in_report(columns, result, include_uom, conversion_facto
def get_available_serial_nos(item_code, warehouse):
return frappe.get_all("Serial No", filters = {'item_code': item_code,
'warehouse': warehouse, 'delivery_document_no': ''}) or []
'warehouse': warehouse, 'delivery_document_no': ''}) or []
def add_additional_uom_columns(columns, result, include_uom, conversion_factors):
if not include_uom or not conversion_factors:
return
convertible_column_map = {}
for col_idx in list(reversed(range(0, len(columns)))):
col = columns[col_idx]
if isinstance(col, dict) and col.get('convertible') in ['rate', 'qty']:
next_col = col_idx + 1
columns.insert(next_col, col.copy())
columns[next_col]['fieldname'] += '_alt'
convertible_column_map[col.get('fieldname')] = frappe._dict({
'converted_col': columns[next_col]['fieldname'],
'for_type': col.get('convertible')
})
if col.get('convertible') == 'rate':
columns[next_col]['label'] += ' (per {})'.format(include_uom)
else:
columns[next_col]['label'] += ' ({})'.format(include_uom)
for row_idx, row in enumerate(result):
for convertible_col, data in convertible_column_map.items():
conversion_factor = conversion_factors[row.get('item_code')] or 1
for_type = data.for_type
value_before_conversion = row.get(convertible_col)
if for_type == 'rate':
row[data.converted_col] = flt(value_before_conversion) * conversion_factor
else:
row[data.converted_col] = flt(value_before_conversion) / conversion_factor
result[row_idx] = row

View File

@ -107,7 +107,7 @@ frappe.ui.form.on("Issue", {
}, () => {
reset_sla.enable_primary_action();
frm.refresh();
frappe.msgprint(__("Service Level Agreement Reset."));
frappe.msgprint(__("Service Level Agreement was reset."));
});
}
});

View File

@ -1,384 +1,392 @@
{
"allow_import": 1,
"allow_rename": 1,
"autoname": "naming_series:",
"creation": "2013-02-01 10:36:25",
"doctype": "DocType",
"document_type": "Setup",
"engine": "InnoDB",
"field_order": [
"subject_section",
"naming_series",
"subject",
"customer",
"raised_by",
"cb00",
"status",
"priority",
"issue_type",
"sb_details",
"description",
"service_level_section",
"service_level_agreement",
"response_by",
"response_by_variance",
"reset_service_level_agreement",
"cb",
"agreement_fulfilled",
"resolution_by",
"resolution_by_variance",
"service_level_agreement_creation",
"response",
"mins_to_first_response",
"first_responded_on",
"additional_info",
"lead",
"contact",
"email_account",
"column_break_16",
"customer_name",
"project",
"company",
"section_break_19",
"resolution_details",
"column_break1",
"opening_date",
"opening_time",
"resolution_date",
"content_type",
"attachment",
"via_customer_portal"
],
"fields": [
{
"fieldname": "subject_section",
"fieldtype": "Section Break",
"label": "Subject",
"options": "fa fa-flag"
},
{
"fieldname": "naming_series",
"fieldtype": "Select",
"label": "Series",
"no_copy": 1,
"options": "ISS-.YYYY.-",
"print_hide": 1,
"set_only_once": 1
},
{
"bold": 1,
"fieldname": "subject",
"fieldtype": "Data",
"in_global_search": 1,
"in_standard_filter": 1,
"label": "Subject",
"reqd": 1
},
{
"fieldname": "customer",
"fieldtype": "Link",
"in_global_search": 1,
"label": "Customer",
"oldfieldname": "customer",
"oldfieldtype": "Link",
"options": "Customer",
"print_hide": 1,
"search_index": 1
},
{
"bold": 1,
"depends_on": "eval:doc.__islocal",
"fieldname": "raised_by",
"fieldtype": "Data",
"in_global_search": 1,
"in_list_view": 1,
"label": "Raised By (Email)",
"oldfieldname": "raised_by",
"oldfieldtype": "Data",
"options": "Email"
},
{
"fieldname": "cb00",
"fieldtype": "Column Break"
},
{
"default": "Open",
"fieldname": "status",
"fieldtype": "Select",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Status",
"no_copy": 1,
"oldfieldname": "status",
"oldfieldtype": "Select",
"options": "Open\nReplied\nHold\nClosed",
"search_index": 1
},
{
"default": "Medium",
"fieldname": "priority",
"fieldtype": "Link",
"in_standard_filter": 1,
"label": "Priority",
"options": "Issue Priority"
},
{
"fieldname": "issue_type",
"fieldtype": "Link",
"label": "Issue Type",
"options": "Issue Type"
},
{
"collapsible": 1,
"collapsible_depends_on": "eval:doc.status!=\"Closed\"",
"fieldname": "sb_details",
"fieldtype": "Section Break",
"label": "Details"
},
{
"bold": 1,
"fieldname": "description",
"fieldtype": "Text Editor",
"in_global_search": 1,
"label": "Description",
"oldfieldname": "problem_description",
"oldfieldtype": "Text"
},
{
"collapsible": 1,
"fieldname": "service_level_section",
"fieldtype": "Section Break",
"label": "Service Level"
},
{
"fieldname": "service_level_agreement",
"fieldtype": "Link",
"label": "Service Level Agreement",
"options": "Service Level Agreement"
},
{
"fieldname": "response_by",
"fieldtype": "Datetime",
"label": "Response By",
"read_only": 1
},
{
"collapsible": 1,
"fieldname": "cb",
"fieldtype": "Column Break",
"options": "fa fa-pushpin",
"read_only": 1
},
{
"fieldname": "resolution_by",
"fieldtype": "Datetime",
"label": "Resolution By",
"read_only": 1
},
{
"collapsible": 1,
"fieldname": "response",
"fieldtype": "Section Break",
"label": "Response"
},
{
"bold": 1,
"fieldname": "mins_to_first_response",
"fieldtype": "Float",
"label": "Mins to First Response",
"read_only": 1
},
{
"fieldname": "first_responded_on",
"fieldtype": "Datetime",
"label": "First Responded On"
},
{
"collapsible": 1,
"fieldname": "additional_info",
"fieldtype": "Section Break",
"label": "Reference",
"options": "fa fa-pushpin",
"read_only": 1
},
{
"fieldname": "lead",
"fieldtype": "Link",
"label": "Lead",
"options": "Lead"
},
{
"fieldname": "contact",
"fieldtype": "Link",
"label": "Contact",
"options": "Contact"
},
{
"fieldname": "email_account",
"fieldtype": "Link",
"label": "Email Account",
"options": "Email Account"
},
{
"fieldname": "column_break_16",
"fieldtype": "Column Break"
},
{
"bold": 1,
"fieldname": "customer_name",
"fieldtype": "Data",
"label": "Customer Name",
"oldfieldname": "customer_name",
"oldfieldtype": "Data",
"read_only": 1
},
{
"fieldname": "project",
"fieldtype": "Link",
"label": "Project",
"options": "Project"
},
{
"fieldname": "company",
"fieldtype": "Link",
"label": "Company",
"options": "Company",
"print_hide": 1
},
{
"collapsible": 1,
"fieldname": "section_break_19",
"fieldtype": "Section Break",
"label": "Resolution"
},
{
"depends_on": "eval:!doc.__islocal",
"fieldname": "resolution_details",
"fieldtype": "Text Editor",
"label": "Resolution Details",
"no_copy": 1,
"oldfieldname": "resolution_details",
"oldfieldtype": "Text"
},
{
"depends_on": "eval:!doc.__islocal",
"fieldname": "column_break1",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"read_only": 1
},
{
"default": "Today",
"fieldname": "opening_date",
"fieldtype": "Date",
"label": "Opening Date",
"no_copy": 1,
"oldfieldname": "opening_date",
"oldfieldtype": "Date",
"read_only": 1
},
{
"fieldname": "opening_time",
"fieldtype": "Time",
"label": "Opening Time",
"no_copy": 1,
"oldfieldname": "opening_time",
"oldfieldtype": "Time",
"read_only": 1
},
{
"depends_on": "eval:!doc.__islocal",
"fieldname": "resolution_date",
"fieldtype": "Datetime",
"label": "Resolution Date",
"no_copy": 1,
"oldfieldname": "resolution_date",
"oldfieldtype": "Date",
"read_only": 1
},
{
"fieldname": "content_type",
"fieldtype": "Data",
"hidden": 1,
"label": "Content Type"
},
{
"fieldname": "attachment",
"fieldtype": "Attach",
"hidden": 1,
"label": "Attachment"
},
{
"default": "0",
"fieldname": "via_customer_portal",
"fieldtype": "Check",
"label": "Via Customer Portal"
},
{
"default": "Ongoing",
"depends_on": "eval: doc.service_level_agreement",
"fieldname": "agreement_fulfilled",
"fieldtype": "Select",
"label": "Service Level Agreement Fulfilled",
"options": "Ongoing\nFulfilled\nFailed",
"read_only": 1
},
{
"depends_on": "eval: doc.service_level_agreement",
"description": "in hours",
"fieldname": "response_by_variance",
"fieldtype": "Float",
"label": "Response By Variance",
"read_only": 1
},
{
"depends_on": "eval: doc.service_level_agreement",
"description": "in hours",
"fieldname": "resolution_by_variance",
"fieldtype": "Float",
"label": "Resolution By Variance",
"read_only": 1
},
{
"fieldname": "service_level_agreement_creation",
"fieldtype": "Datetime",
"hidden": 1,
"label": "Service Level Agreement Creation",
"read_only": 1
},
{
"depends_on": "eval: doc.service_level_agreement",
"fieldname": "reset_service_level_agreement",
"fieldtype": "Button",
"label": "Reset Service Level Agreement"
}
],
"icon": "fa fa-ticket",
"idx": 7,
"modified": "2019-07-11 23:57:22.015881",
"modified_by": "Administrator",
"module": "Support",
"name": "Issue",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Support Team",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"search_fields": "status,customer,subject,raised_by",
"sort_field": "modified",
"sort_order": "ASC",
"timeline_field": "customer",
"title_field": "subject",
"track_changes": 1,
"track_seen": 1
}
"allow_import": 1,
"allow_rename": 1,
"autoname": "naming_series:",
"creation": "2013-02-01 10:36:25",
"doctype": "DocType",
"document_type": "Setup",
"engine": "InnoDB",
"field_order": [
"subject_section",
"naming_series",
"subject",
"customer",
"raised_by",
"cb00",
"status",
"priority",
"issue_type",
"issue_split_from",
"sb_details",
"description",
"service_level_section",
"service_level_agreement",
"response_by",
"response_by_variance",
"reset_service_level_agreement",
"cb",
"agreement_fulfilled",
"resolution_by",
"resolution_by_variance",
"service_level_agreement_creation",
"response",
"mins_to_first_response",
"first_responded_on",
"additional_info",
"lead",
"contact",
"email_account",
"column_break_16",
"customer_name",
"project",
"company",
"section_break_19",
"resolution_details",
"column_break1",
"opening_date",
"opening_time",
"resolution_date",
"content_type",
"attachment",
"via_customer_portal"
],
"fields": [
{
"fieldname": "subject_section",
"fieldtype": "Section Break",
"label": "Subject",
"options": "fa fa-flag"
},
{
"fieldname": "naming_series",
"fieldtype": "Select",
"label": "Series",
"no_copy": 1,
"options": "ISS-.YYYY.-",
"print_hide": 1,
"set_only_once": 1
},
{
"bold": 1,
"fieldname": "subject",
"fieldtype": "Data",
"in_global_search": 1,
"in_standard_filter": 1,
"label": "Subject",
"reqd": 1
},
{
"fieldname": "customer",
"fieldtype": "Link",
"in_global_search": 1,
"label": "Customer",
"oldfieldname": "customer",
"oldfieldtype": "Link",
"options": "Customer",
"print_hide": 1,
"search_index": 1
},
{
"bold": 1,
"depends_on": "eval:doc.__islocal",
"fieldname": "raised_by",
"fieldtype": "Data",
"in_global_search": 1,
"in_list_view": 1,
"label": "Raised By (Email)",
"oldfieldname": "raised_by",
"oldfieldtype": "Data",
"options": "Email"
},
{
"fieldname": "cb00",
"fieldtype": "Column Break"
},
{
"default": "Open",
"fieldname": "status",
"fieldtype": "Select",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Status",
"no_copy": 1,
"oldfieldname": "status",
"oldfieldtype": "Select",
"options": "Open\nReplied\nHold\nClosed",
"search_index": 1
},
{
"default": "Medium",
"fieldname": "priority",
"fieldtype": "Link",
"in_standard_filter": 1,
"label": "Priority",
"options": "Issue Priority"
},
{
"fieldname": "issue_type",
"fieldtype": "Link",
"label": "Issue Type",
"options": "Issue Type"
},
{
"collapsible": 1,
"collapsible_depends_on": "eval:doc.status!=\"Closed\"",
"fieldname": "sb_details",
"fieldtype": "Section Break",
"label": "Details"
},
{
"bold": 1,
"fieldname": "description",
"fieldtype": "Text Editor",
"in_global_search": 1,
"label": "Description",
"oldfieldname": "problem_description",
"oldfieldtype": "Text"
},
{
"collapsible": 1,
"fieldname": "service_level_section",
"fieldtype": "Section Break",
"label": "Service Level"
},
{
"fieldname": "service_level_agreement",
"fieldtype": "Link",
"label": "Service Level Agreement",
"options": "Service Level Agreement"
},
{
"fieldname": "response_by",
"fieldtype": "Datetime",
"label": "Response By",
"read_only": 1
},
{
"collapsible": 1,
"fieldname": "cb",
"fieldtype": "Column Break",
"options": "fa fa-pushpin",
"read_only": 1
},
{
"fieldname": "resolution_by",
"fieldtype": "Datetime",
"label": "Resolution By",
"read_only": 1
},
{
"collapsible": 1,
"fieldname": "response",
"fieldtype": "Section Break",
"label": "Response"
},
{
"bold": 1,
"fieldname": "mins_to_first_response",
"fieldtype": "Float",
"label": "Mins to First Response",
"read_only": 1
},
{
"fieldname": "first_responded_on",
"fieldtype": "Datetime",
"label": "First Responded On"
},
{
"collapsible": 1,
"fieldname": "additional_info",
"fieldtype": "Section Break",
"label": "Reference",
"options": "fa fa-pushpin",
"read_only": 1
},
{
"fieldname": "lead",
"fieldtype": "Link",
"label": "Lead",
"options": "Lead"
},
{
"fieldname": "contact",
"fieldtype": "Link",
"label": "Contact",
"options": "Contact"
},
{
"fieldname": "email_account",
"fieldtype": "Link",
"label": "Email Account",
"options": "Email Account"
},
{
"fieldname": "column_break_16",
"fieldtype": "Column Break"
},
{
"bold": 1,
"fieldname": "customer_name",
"fieldtype": "Data",
"label": "Customer Name",
"oldfieldname": "customer_name",
"oldfieldtype": "Data",
"read_only": 1
},
{
"fieldname": "project",
"fieldtype": "Link",
"label": "Project",
"options": "Project"
},
{
"fieldname": "company",
"fieldtype": "Link",
"label": "Company",
"options": "Company",
"print_hide": 1
},
{
"collapsible": 1,
"fieldname": "section_break_19",
"fieldtype": "Section Break",
"label": "Resolution"
},
{
"depends_on": "eval:!doc.__islocal",
"fieldname": "resolution_details",
"fieldtype": "Text Editor",
"label": "Resolution Details",
"no_copy": 1,
"oldfieldname": "resolution_details",
"oldfieldtype": "Text"
},
{
"depends_on": "eval:!doc.__islocal",
"fieldname": "column_break1",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"read_only": 1
},
{
"default": "Today",
"fieldname": "opening_date",
"fieldtype": "Date",
"label": "Opening Date",
"no_copy": 1,
"oldfieldname": "opening_date",
"oldfieldtype": "Date",
"read_only": 1
},
{
"fieldname": "opening_time",
"fieldtype": "Time",
"label": "Opening Time",
"no_copy": 1,
"oldfieldname": "opening_time",
"oldfieldtype": "Time",
"read_only": 1
},
{
"depends_on": "eval:!doc.__islocal",
"fieldname": "resolution_date",
"fieldtype": "Datetime",
"label": "Resolution Date",
"no_copy": 1,
"oldfieldname": "resolution_date",
"oldfieldtype": "Date",
"read_only": 1
},
{
"fieldname": "content_type",
"fieldtype": "Data",
"hidden": 1,
"label": "Content Type"
},
{
"fieldname": "attachment",
"fieldtype": "Attach",
"hidden": 1,
"label": "Attachment"
},
{
"default": "0",
"fieldname": "via_customer_portal",
"fieldtype": "Check",
"label": "Via Customer Portal"
},
{
"default": "Ongoing",
"depends_on": "eval: doc.service_level_agreement",
"fieldname": "agreement_fulfilled",
"fieldtype": "Select",
"label": "Service Level Agreement Fulfilled",
"options": "Ongoing\nFulfilled\nFailed",
"read_only": 1
},
{
"depends_on": "eval: doc.service_level_agreement",
"description": "in hours",
"fieldname": "response_by_variance",
"fieldtype": "Float",
"label": "Response By Variance",
"read_only": 1
},
{
"depends_on": "eval: doc.service_level_agreement",
"description": "in hours",
"fieldname": "resolution_by_variance",
"fieldtype": "Float",
"label": "Resolution By Variance",
"read_only": 1
},
{
"fieldname": "service_level_agreement_creation",
"fieldtype": "Datetime",
"hidden": 1,
"label": "Service Level Agreement Creation",
"read_only": 1
},
{
"depends_on": "eval: doc.service_level_agreement",
"fieldname": "reset_service_level_agreement",
"fieldtype": "Button",
"label": "Reset Service Level Agreement"
},
{
"fieldname": "issue_split_from",
"fieldtype": "Link",
"label": "Issue Split From",
"options": "Issue",
"read_only": 1
}
],
"icon": "fa fa-ticket",
"idx": 7,
"modified": "2019-09-11 09:03:57.465623",
"modified_by": "himanshu@erpnext.com",
"module": "Support",
"name": "Issue",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Support Team",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"search_fields": "status,customer,subject,raised_by",
"sort_field": "modified",
"sort_order": "ASC",
"timeline_field": "customer",
"title_field": "subject",
"track_changes": 1,
"track_seen": 1
}

View File

@ -117,6 +117,9 @@ class Issue(Document):
replicated_issue = deepcopy(self)
replicated_issue.subject = subject
replicated_issue.issue_split_from = self.name
replicated_issue.mins_to_first_response = 0
replicated_issue.first_responded_on = None
replicated_issue.creation = now_datetime()
# Reset SLA
@ -144,6 +147,14 @@ class Issue(Document):
doc.reference_name = replicated_issue.name
doc.save(ignore_permissions=True)
frappe.get_doc({
"doctype": "Comment",
"comment_type": "Info",
"reference_doctype": "Issue",
"reference_name": replicated_issue.name,
"content": " - Split the Issue from <a href='#Form/Issue/{0}'>{1}</a>".format(self.name, frappe.bold(self.name)),
}).insert(ignore_permissions=True)
return replicated_issue.name
def before_insert(self):

View File

@ -27,6 +27,7 @@
{% endif %}
</div>
{% endif %}
{% if product_info.price and (cart_settings.allow_items_not_in_stock or product_info.in_stock) %}
<div class="mt-3">
<a href="/cart"
class="btn btn-light btn-view-in-cart {% if not product_info.qty %}hidden{% endif %}"
@ -41,6 +42,7 @@
{{ _("Add to Cart") }}
</button>
</div>
{% endif %}
</div>
</div>
@ -64,4 +66,4 @@
});
</script>
{% endif %}
{% endif %}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py,'Opening','Åbning'
DocType: Email Campaign,Lead,Bly
DocType: Call Log,Lead,Bly
apps/erpnext/erpnext/config/selling.py,Default settings for selling transactions.,Standardindstillinger for at sælge transaktioner.
DocType: Timesheet,% Amount Billed,% Beløb Billed
DocType: Purchase Order,% Billed,% Billed
@ -23,5 +23,5 @@ apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,'Update Stock' can
apps/erpnext/erpnext/patches/v4_0/create_price_list_if_missing.py,Standard Selling,Standard Selling
,Lead Details,Bly Detaljer
DocType: Selling Settings,Settings for Selling Module,Indstillinger for Selling modul
,Lead Name,Bly navn
DocType: Call Log,Lead Name,Bly navn
DocType: Rename Tool,"Attach .csv file with two columns, one for the old name and one for the new name","Vedhæfte .csv fil med to kolonner, en for det gamle navn og et til det nye navn"

1 apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py 'Opening' 'Åbning'
2 DocType: Email Campaign DocType: Call Log Lead Bly
3 apps/erpnext/erpnext/config/selling.py Default settings for selling transactions. Standardindstillinger for at sælge transaktioner.
4 DocType: Timesheet % Amount Billed % Beløb Billed
5 DocType: Purchase Order % Billed % Billed
23 apps/erpnext/erpnext/patches/v4_0/create_price_list_if_missing.py Standard Selling Standard Selling
24 Lead Details Bly Detaljer
25 DocType: Selling Settings Settings for Selling Module Indstillinger for Selling modul
26 DocType: Call Log Lead Name Bly navn
27 DocType: Rename Tool Attach .csv file with two columns, one for the old name and one for the new name Vedhæfte .csv fil med to kolonner, en for det gamle navn og et til det nye navn

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -57,7 +57,7 @@ DocType: Email Digest,New Sales Orders,Nueva Órden de Venta
DocType: Work Order Operation,Updated via 'Time Log',Actualizado a través de 'Hora de Registro'
DocType: Naming Series,Series List for this Transaction,Lista de series para esta transacción
DocType: Delivery Note Item,Against Sales Invoice Item,Contra la Factura de Venta de Artículos
DocType: Delivery Stop,Contact Name,Nombre del Contacto
DocType: Call Log,Contact Name,Nombre del Contacto
apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py,Row {0}: Please check 'Is Advance' against Account {1} if this is an advance entry.,"Fila {0}: Por favor, consulte ""¿Es Avance 'contra la Cuenta {1} si se trata de una entrada con antelación."
apps/erpnext/erpnext/stock/utils.py,Warehouse {0} does not belong to company {1},Almacén {0} no pertenece a la empresa {1}
DocType: Stock Reconciliation Item,Stock Reconciliation Item,Articulo de Reconciliación de Inventario
@ -70,7 +70,7 @@ DocType: Territory,Set Item Group-wise budgets on this Territory. You can also i
DocType: Maintenance Schedule,Generate Schedule,Generar Horario
apps/erpnext/erpnext/config/crm.py,Manage Sales Person Tree.,Vista en árbol para la administración de las categoría de vendedores
DocType: Item,Synced With Hub,Sincronizado con Hub
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,Completed Qty can not be greater than 'Qty to Manufacture',La cantidad completada no puede ser mayor que la cantidad a producir
apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.py,Completed Qty can not be greater than 'Qty to Manufacture',La cantidad completada no puede ser mayor que la cantidad a producir
DocType: Period Closing Voucher,Closing Account Head,Cuenta de cierre principal
DocType: Stock Settings,Notify by Email on creation of automatic Material Request,Notificarme por Email cuando se genere una nueva solicitud de materiales
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.js,Delivery Note,Notas de Entrega
@ -179,7 +179,7 @@ DocType: Purchase Taxes and Charges,On Previous Row Total,En la Anterior Fila To
apps/erpnext/erpnext/public/js/setup_wizard.js,The name of your company for which you are setting up this system.,El nombre de su empresa para la que va a configurar el sistema.
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,Purchase Receipt,Recibos de Compra
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py,Serial No {0} does not belong to Item {1},Número de orden {0} no pertenece al elemento {1}
DocType: Purchase Receipt Item Supplied,Required Qty,Cant. Necesaria
DocType: Purchase Order Item Supplied,Required Qty,Cant. Necesaria
DocType: Bank Reconciliation,Account Currency,Moneda de la Cuenta
apps/erpnext/erpnext/accounts/general_ledger.py,Please mention Round Off Account in Company,"Por favor, indique la cuenta que utilizará para el redondeo--"
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py,Employee {0} is not active or does not exist,Empleado {0} no está activo o no existe
@ -229,7 +229,7 @@ DocType: Salary Slip,Net Pay (in words) will be visible once you save the Salary
DocType: Tally Migration,UOMs,Unidades de Medida
apps/erpnext/erpnext/stock/utils.py,{0} valid serial nos for Item {1},{0} No. de serie válidos para el producto {1}
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.js,Cost Center For Item with Item Code ',Centro de Costos para artículo con Código del artículo '
DocType: Email Campaign,Lead,Iniciativas
DocType: Call Log,Lead,Iniciativas
apps/erpnext/erpnext/controllers/buying_controller.py,Row #{0}: Rejected Qty can not be entered in Purchase Return,Fila # {0}: Rechazado Cantidad no se puede introducir en la Compra de Retorno
,Purchase Order Items To Be Billed,Ordenes de Compra por Facturar
DocType: Purchase Invoice Item,Net Rate,Tasa neta
@ -366,7 +366,7 @@ DocType: Employee,Leave Encashed?,Vacaciones Descansadas?
apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py,There is not enough leave balance for Leave Type {0},No hay suficiente saldo para Tipo de Vacaciones {0}
DocType: Sales Invoice Item,Customer's Item Code,Código de artículo del Cliente
DocType: Stock Reconciliation,Stock Reconciliation,Reconciliación de Inventario
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,Work-in-Progress Warehouse is required before Submit,Se requiere un Almacen de Trabajo en Proceso antes de Enviar
apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.py,Work-in-Progress Warehouse is required before Submit,Se requiere un Almacen de Trabajo en Proceso antes de Enviar
DocType: Supplier,Statutory info and other general information about your Supplier,Información legal y otra información general acerca de su proveedor
apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py,Against Journal Entry {0} does not have any unmatched {1} entry,Contra la Entrada de Diario {0} no tiene ninguna {1} entrada que vincular
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py,Duplicate Serial No entered for Item {0},Duplicar Serie No existe para la partida {0}
@ -429,7 +429,6 @@ apps/erpnext/erpnext/hooks.py,Shipments,Los envíos
DocType: Purchase Invoice,In Words (Company Currency),En palabras (Moneda Local)
DocType: Bank Guarantee,Supplier,Proveedores
apps/erpnext/erpnext/controllers/stock_controller.py,Expense or Difference account is mandatory for Item {0} as it impacts overall stock value,"Cuenta de Gastos o Diferencia es obligatorio para el elemento {0} , ya que impacta el valor del stock"
apps/erpnext/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py,-Above,-Mayor
DocType: Leave Application,Total Leave Days,Total Vacaciones
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py,{0} is mandatory for Item {1},{0} es obligatorio para el producto {1}
apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.py,Sales Order required for Item {0},Orden de Venta requerida para el punto {0}
@ -445,8 +444,6 @@ DocType: Purchase Invoice Item,Weight UOM,Peso Unidad de Medida
DocType: Employee Leave Approver,Users who can approve a specific employee's leave applications,Los usuarios que pueden aprobar las solicitudes de licencia de un empleado específico
apps/erpnext/erpnext/setup/setup_wizard/data/industry_type.py,Electronics,Electrónica
DocType: Stock Settings,Raise Material Request when stock reaches re-order level,Enviar solicitud de materiales cuando se alcance un nivel bajo el stock
DocType: Employee,Contact Details,Datos del Contacto
apps/erpnext/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py,Total Invoiced Amt,Total Monto Facturado
DocType: Cashier Closing,To Time,Para Tiempo
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py,Credit To account must be a Payable account,Crédito a la cuenta debe ser una cuenta por pagar
DocType: Job Card Time Log,Completed Qty,Cant. Completada
@ -483,7 +480,6 @@ DocType: Maintenance Schedule Detail,Maintenance Schedule Detail,Detalle de Cale
DocType: Supplier,Is Frozen,Está Inactivo
DocType: Payment Gateway Account,Payment Account,Pago a cuenta
apps/erpnext/erpnext/setup/doctype/company/company.js,Please make sure you really want to delete all the transactions for this company. Your master data will remain as it is. This action cannot be undone.,"Por favor, asegúrese que realmente desea borrar todas las transacciones de esta compañía. Sus datos maestros permanecerán intactos. Esta acción no se puede deshacer."
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,{0} ({1}) cannot be greater than planned quanitity ({2}) in Production Order {3},{0} ({1}) no puede ser mayor que cantidad planificada ({2}) en la Orden de Producción {3}
DocType: Shipping Rule,Shipping Rule Label,Regla Etiqueta de envío
apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py,Raw Materials cannot be blank.,Materias primas no pueden estar en blanco.
apps/erpnext/erpnext/manufacturing/doctype/bom/bom.js,You can not change rate if BOM mentioned agianst any item,No se puede cambiar la tasa si hay una Solicitud de Materiales contra cualquier artículo
@ -506,7 +502,6 @@ apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py,Stock Entry
apps/erpnext/erpnext/config/accounting.py,"e.g. Bank, Cash, Credit Card","por ejemplo Banco, Efectivo , Tarjeta de crédito"
DocType: Warranty Claim,Service Address,Dirección del Servicio
DocType: Purchase Invoice Item,Manufacture,Manufactura
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.js,Please Delivery Note first,Primero la nota de entrega
DocType: Purchase Invoice,Currency and Price List,Divisa y Lista de precios
apps/erpnext/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js,Row {0}:Start Date must be before End Date,Fila {0}: Fecha de inicio debe ser anterior Fecha de finalización
DocType: Purchase Receipt,Time at which materials were received,Momento en que se recibieron los materiales
@ -561,7 +556,7 @@ DocType: Quotation,Rate at which customer's currency is converted to company's b
DocType: Purchase Invoice Item,Net Rate (Company Currency),Tasa neta (Moneda Local)
apps/erpnext/erpnext/config/crm.py,Manage Territory Tree.,Vista en árbol para la administración de los territorios
DocType: Journal Entry Account,Party Balance,Saldo de socio
DocType: Stock Entry,Material Transfer for Manufacture,Trasferencia de Material para Manufactura
DocType: Pick List,Material Transfer for Manufacture,Trasferencia de Material para Manufactura
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py,Accounting Entry for Stock,Asiento contable de inventario
DocType: Sales Invoice,Sales Team1,Team1 Ventas
DocType: Account,Root Type,Tipo Root
@ -579,7 +574,6 @@ DocType: Account,Expense Account,Cuenta de gastos
apps/erpnext/erpnext/setup/setup_wizard/data/industry_type.py,Software,Software
DocType: Email Campaign,Scheduled,Programado
apps/erpnext/erpnext/config/selling.py,Manage Sales Partners.,Administrar Puntos de venta.
DocType: BOM,Exploded_items,Vista detallada
apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py,Name or Email is mandatory,Nombre o Email es obligatorio
apps/erpnext/erpnext/accounts/doctype/account/account.py,Root Type is mandatory,Tipo Root es obligatorio
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py,Serial No {0} created,Número de orden {0} creado
@ -613,6 +607,7 @@ apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.py,Material Re
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Lower Income,Ingreso Bajo
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py,Source and target warehouse cannot be same for row {0},Fuente y el almacén de destino no pueden ser la misma para la fila {0}
apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py,Purchase Order number required for Item {0},Número de la Orden de Compra se requiere para el elemento {0}
DocType: Leave Allocation,Carry Forwarded Leaves,Mover ausencias reenviadas
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,'From Date' must be after 'To Date','Desde fecha' debe ser después de 'Hasta Fecha'
,Stock Projected Qty,Cantidad de Inventario Proyectada
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py,Customer {0} does not belong to project {1},Cliente {0} no pertenece a proyectar {1}
@ -678,7 +673,6 @@ DocType: POS Item Group,Item Group,Grupo de artículos
DocType: Purchase Invoice,Taxes and Charges Added (Company Currency),Impuestos y Cargos Añadidos (Moneda Local)
apps/erpnext/erpnext/accounts/doctype/item_tax_template/item_tax_template.py,Item Tax Row {0} must have account of type Tax or Income or Expense or Chargeable,"Campo de impuesto del producto {0} debe tener un tipo de cuenta de impuestos, ingresos, cargos o gastos"
DocType: Item,Default BOM,Solicitud de Materiales por Defecto
apps/erpnext/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py,Total Outstanding Amt,Monto Total Soprepasado
apps/erpnext/erpnext/setup/setup_wizard/data/industry_type.py,Automotive,Automotor
DocType: Cashier Closing,From Time,Desde fecha
apps/erpnext/erpnext/setup/setup_wizard/data/industry_type.py,Investment Banking,Banca de Inversión
@ -803,7 +797,7 @@ apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Piecework
DocType: Task,Actual Time (in Hours),Tiempo actual (En horas)
DocType: Department,Leave Block List,Lista de Bloqueo de Vacaciones
DocType: Purchase Invoice,Return,Retorno
DocType: Accounting Dimension,Disable,Inhabilitar
DocType: Account,Disable,Inhabilitar
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py,Sales Order {0} is not submitted,Órden de Venta {0} no esta presentada
DocType: Purchase Order Item,Last Purchase Rate,Tasa de Cambio de la Última Compra
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Stock cannot exist for Item {0} since has variants,Inventario no puede existir para el punto {0} ya tiene variantes
@ -876,7 +870,6 @@ DocType: Purchase Invoice Item,Amount (Company Currency),Importe (Moneda Local)
apps/erpnext/erpnext/config/retail.py,Point-of-Sale Profile,Perfiles del Punto de Venta POS
DocType: Cost Center,Cost Center Name,Nombre Centro de Costo
DocType: Maintenance Schedule Detail,Scheduled Date,Fecha prevista
apps/erpnext/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py,Total Paid Amt,Total Pagado Amt
DocType: SMS Center,Messages greater than 160 characters will be split into multiple messages,Los mensajes de más de 160 caracteres se dividirá en varios mensajes
,Serial No Service Contract Expiry,Número de orden de servicio Contrato de caducidad
DocType: Naming Series,Help HTML,Ayuda HTML
@ -979,7 +972,7 @@ DocType: Manufacturing Settings,Allow Production on Holidays,Permitir Producció
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py,Capital Stock,Capital Social
DocType: Packing Slip,Package Weight Details,Peso Detallado del Paquete
apps/erpnext/erpnext/config/projects.py,Project master.,Proyecto maestro
DocType: Leave Type,Is Carry Forward,Es llevar adelante
DocType: Leave Ledger Entry,Is Carry Forward,Es llevar adelante
apps/erpnext/erpnext/stock/doctype/material_request/material_request.js,Get Items from BOM,Obtener elementos de la Solicitud de Materiales
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py,Lead Time Days,Tiempo de Entrega en Días
apps/erpnext/erpnext/stock/doctype/material_request/material_request.js,Bill of Materials,Lista de materiales (LdM)

1 DocType: Employee Salary Mode Modo de Salario
57 DocType: Work Order Operation Updated via 'Time Log' Actualizado a través de 'Hora de Registro'
58 DocType: Naming Series Series List for this Transaction Lista de series para esta transacción
59 DocType: Delivery Note Item Against Sales Invoice Item Contra la Factura de Venta de Artículos
60 DocType: Delivery Stop DocType: Call Log Contact Name Nombre del Contacto
61 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py Row {0}: Please check 'Is Advance' against Account {1} if this is an advance entry. Fila {0}: Por favor, consulte "¿Es Avance 'contra la Cuenta {1} si se trata de una entrada con antelación.
62 apps/erpnext/erpnext/stock/utils.py Warehouse {0} does not belong to company {1} Almacén {0} no pertenece a la empresa {1}
63 DocType: Stock Reconciliation Item Stock Reconciliation Item Articulo de Reconciliación de Inventario
70 DocType: Maintenance Schedule Generate Schedule Generar Horario
71 apps/erpnext/erpnext/config/crm.py Manage Sales Person Tree. Vista en árbol para la administración de las categoría de vendedores
72 DocType: Item Synced With Hub Sincronizado con Hub
73 apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.py Completed Qty can not be greater than 'Qty to Manufacture' La cantidad completada no puede ser mayor que la cantidad a producir
74 DocType: Period Closing Voucher Closing Account Head Cuenta de cierre principal
75 DocType: Stock Settings Notify by Email on creation of automatic Material Request Notificarme por Email cuando se genere una nueva solicitud de materiales
76 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.js Delivery Note Notas de Entrega
179 apps/erpnext/erpnext/public/js/setup_wizard.js The name of your company for which you are setting up this system. El nombre de su empresa para la que va a configurar el sistema.
180 apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js Purchase Receipt Recibos de Compra
181 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py Serial No {0} does not belong to Item {1} Número de orden {0} no pertenece al elemento {1}
182 DocType: Purchase Receipt Item Supplied DocType: Purchase Order Item Supplied Required Qty Cant. Necesaria
183 DocType: Bank Reconciliation Account Currency Moneda de la Cuenta
184 apps/erpnext/erpnext/accounts/general_ledger.py Please mention Round Off Account in Company Por favor, indique la cuenta que utilizará para el redondeo--
185 apps/erpnext/erpnext/hr/doctype/attendance/attendance.py Employee {0} is not active or does not exist Empleado {0} no está activo o no existe
229 DocType: Tally Migration UOMs Unidades de Medida
230 apps/erpnext/erpnext/stock/utils.py {0} valid serial nos for Item {1} {0} No. de serie válidos para el producto {1}
231 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.js Cost Center For Item with Item Code ' Centro de Costos para artículo con Código del artículo '
232 DocType: Email Campaign DocType: Call Log Lead Iniciativas
233 apps/erpnext/erpnext/controllers/buying_controller.py Row #{0}: Rejected Qty can not be entered in Purchase Return Fila # {0}: Rechazado Cantidad no se puede introducir en la Compra de Retorno
234 Purchase Order Items To Be Billed Ordenes de Compra por Facturar
235 DocType: Purchase Invoice Item Net Rate Tasa neta
366 DocType: Stock Reconciliation Stock Reconciliation Reconciliación de Inventario
367 apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.py Work-in-Progress Warehouse is required before Submit Se requiere un Almacen de Trabajo en Proceso antes de Enviar
368 DocType: Supplier Statutory info and other general information about your Supplier Información legal y otra información general acerca de su proveedor
369 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py Against Journal Entry {0} does not have any unmatched {1} entry Contra la Entrada de Diario {0} no tiene ninguna {1} entrada que vincular
370 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py Duplicate Serial No entered for Item {0} Duplicar Serie No existe para la partida {0}
371 DocType: Packing Slip The net weight of this package. (calculated automatically as sum of net weight of items) El peso neto de este paquete . ( calculados automáticamente como la suma del peso neto del material)
372 DocType: Sales Order To Deliver and Bill Para Entregar y Bill
429 DocType: Leave Application apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py Total Leave Days {0} is mandatory for Item {1} Total Vacaciones {0} es obligatorio para el producto {1}
430 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.py {0} is mandatory for Item {1} Sales Order required for Item {0} {0} es obligatorio para el producto {1} Orden de Venta requerida para el punto {0}
431 apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.py DocType: Purchase Invoice Item Sales Order required for Item {0} Rate (Company Currency) Orden de Venta requerida para el punto {0} Precio (Moneda Local)
DocType: Purchase Invoice Item Rate (Company Currency) Precio (Moneda Local)
432 DocType: Blanket Order Item Ordered Quantity Cantidad Pedida
433 apps/erpnext/erpnext/public/js/setup_wizard.js e.g. "Build tools for builders" por ejemplo " Herramientas para los Constructores "
434 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py {0} against Sales Order {1} {0} contra orden de venta {1}
444 apps/erpnext/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py Total Invoiced Amt Credit To account must be a Payable account Total Monto Facturado Crédito a la cuenta debe ser una cuenta por pagar
445 DocType: Cashier Closing DocType: Job Card Time Log To Time Completed Qty Para Tiempo Cant. Completada
446 apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py DocType: Manufacturing Settings Credit To account must be a Payable account Allow Overtime Crédito a la cuenta debe ser una cuenta por pagar Permitir horas extras
DocType: Job Card Time Log Completed Qty Cant. Completada
DocType: Manufacturing Settings Allow Overtime Permitir horas extras
447 DocType: Quality Inspection Sample Size Tamaño de la muestra
448 apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py Please specify a valid 'From Case No.' Por favor, especifique 'Desde el caso No.' válido
449 DocType: Branch Branch Rama
480 DocType: Shipping Rule apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py Shipping Rule Label Raw Materials cannot be blank. Regla Etiqueta de envío Materias primas no pueden estar en blanco.
481 apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py apps/erpnext/erpnext/manufacturing/doctype/bom/bom.js Raw Materials cannot be blank. You can not change rate if BOM mentioned agianst any item Materias primas no pueden estar en blanco. No se puede cambiar la tasa si hay una Solicitud de Materiales contra cualquier artículo
482 apps/erpnext/erpnext/manufacturing/doctype/bom/bom.js apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py You can not change rate if BOM mentioned agianst any item {0} {1} is not submitted No se puede cambiar la tasa si hay una Solicitud de Materiales contra cualquier artículo {0} {1} no esta presentado
apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py {0} {1} is not submitted {0} {1} no esta presentado
483 DocType: Purchase Invoice Terms and Conditions1 Términos y Condiciones 1
484 DocType: Accounts Settings Accounting entry frozen up to this date, nobody can do / modify entry except role specified below. Asiento contable congelado actualmente ; nadie puede modificar el asiento excepto el rol que se especifica a continuación .
485 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py Item or Warehouse for row {0} does not match Material Request Artículo o Bodega para la fila {0} no coincide Solicitud de material
502 DocType: Purchase Invoice apps/erpnext/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js Currency and Price List Row {0}:Start Date must be before End Date Divisa y Lista de precios Fila {0}: Fecha de inicio debe ser anterior Fecha de finalización
503 apps/erpnext/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js DocType: Purchase Receipt Row {0}:Start Date must be before End Date Time at which materials were received Fila {0}: Fecha de inicio debe ser anterior Fecha de finalización Momento en que se recibieron los materiales
504 DocType: Purchase Receipt apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py Time at which materials were received Utility Expenses Momento en que se recibieron los materiales Los gastos de servicios públicos
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py Utility Expenses Los gastos de servicios públicos
505 apps/erpnext/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py 90-Above 90-Mayor
506 DocType: Buying Settings Default Buying Price List Lista de precios predeterminada
507 apps/erpnext/erpnext/config/settings.py Set Default Values like Company, Currency, Current Fiscal Year, etc. Establecer Valores Predeterminados , como Empresa , Moneda, Año Fiscal Actual, etc
556 apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py Accounting Entry for Stock Asiento contable de inventario
557 DocType: Sales Invoice Sales Team1 Team1 Ventas
558 DocType: Account Root Type Tipo Root
559 apps/erpnext/erpnext/controllers/sales_and_purchase_return.py Row # {0}: Cannot return more than {1} for Item {2} Fila # {0}: No se puede devolver más de {1} para el artículo {2}
560 DocType: BOM Item UOM Unidad de Medida del Artículo
561 DocType: Sales Taxes and Charges Tax Amount After Discount Amount (Company Currency) Monto de impuestos Después Cantidad de Descuento (Compañía moneda)
562 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py Target warehouse is mandatory for row {0} Almacenes de destino es obligatorio para la fila {0}
574 apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py apps/erpnext/erpnext/accounts/doctype/account/account.py Name or Email is mandatory Root Type is mandatory Nombre o Email es obligatorio Tipo Root es obligatorio
575 apps/erpnext/erpnext/accounts/doctype/account/account.py apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py Root Type is mandatory Serial No {0} created Tipo Root es obligatorio Número de orden {0} creado
576 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py DocType: Customer Group Serial No {0} created Only leaf nodes are allowed in transaction Número de orden {0} creado Sólo las Cuentas de Detalle se permiten en una transacción
DocType: Customer Group Only leaf nodes are allowed in transaction Sólo las Cuentas de Detalle se permiten en una transacción
577 DocType: Purchase Receipt Item Supplied Purchase Receipt Item Supplied Recibo de Compra del Artículo Adquirido
578 apps/erpnext/erpnext/hr/doctype/employee/employee.py Please enter relieving date. Por favor, introduzca la fecha de recepción.
579 DocType: Opportunity Enter name of campaign if source of enquiry is campaign Introduzca el nombre de la campaña si el origen de la encuesta es una campaña
607 apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py Stock Projected Qty 'From Date' must be after 'To Date' Cantidad de Inventario Proyectada 'Desde fecha' debe ser después de 'Hasta Fecha'
608 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py Customer {0} does not belong to project {1} Stock Projected Qty Cliente {0} no pertenece a proyectar {1} Cantidad de Inventario Proyectada
609 DocType: Purchase Invoice apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py Purchase Taxes and Charges Customer {0} does not belong to project {1} Impuestos de Compra y Cargos Cliente {0} no pertenece a proyectar {1}
610 DocType: Purchase Invoice Purchase Taxes and Charges Impuestos de Compra y Cargos
611 DocType: Leave Block List Leave Block List Allowed Lista de Bloqueo de Vacaciones Permitida
612 apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py Quotation {0} not of type {1} Cotización {0} no es de tipo {1}
613 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py Bank Overdraft Account Cuenta de sobregiros
673 apps/erpnext/erpnext/setup/setup_wizard/data/industry_type.py DocType: Cashier Closing Automotive From Time Automotor Desde fecha
674 DocType: Cashier Closing apps/erpnext/erpnext/setup/setup_wizard/data/industry_type.py From Time Investment Banking Desde fecha Banca de Inversión
675 apps/erpnext/erpnext/setup/setup_wizard/data/industry_type.py apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py Investment Banking Stock transactions before {0} are frozen Banca de Inversión Operaciones de Inventario antes de {0} se congelan
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py Stock transactions before {0} are frozen Operaciones de Inventario antes de {0} se congelan
676 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py Reference No is mandatory if you entered Reference Date Referencia No es obligatorio si introdujo Fecha de Referencia
677 apps/erpnext/erpnext/hr/doctype/employee/employee.py Date of Joining must be greater than Date of Birth Fecha de acceso debe ser mayor que Fecha de Nacimiento
678 DocType: Production Plan For Warehouse Por almacén
797 DocType: Purchase Order Item Last Purchase Rate Tasa de Cambio de la Última Compra
798 apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py Stock cannot exist for Item {0} since has variants Inventario no puede existir para el punto {0} ya tiene variantes
799 Sales Person-wise Transaction Summary Resumen de Transacción por Vendedor
800 apps/erpnext/erpnext/stock/doctype/warehouse/warehouse.py Warehouse {0} does not exist Almacén {0} no existe
801 DocType: Monthly Distribution Monthly Distribution Percentages Los porcentajes de distribución mensuales
802 apps/erpnext/erpnext/stock/doctype/batch/batch.py The selected item cannot have Batch El elemento seleccionado no puede tener lotes
803 DocType: Project Customer Details Datos del Cliente
870 DocType: Naming Series Serial No Service Contract Expiry Help HTML Número de orden de servicio Contrato de caducidad Ayuda HTML
871 DocType: Naming Series DocType: Item Help HTML Has Serial No Ayuda HTML Tiene No de Serie
872 DocType: Item DocType: Employee Has Serial No Date of Issue Tiene No de Serie Fecha de emisión
DocType: Employee Date of Issue Fecha de emisión
873 apps/erpnext/erpnext/accounts/doctype/account/account.py You are not authorized to set Frozen value Usted no está autorizado para fijar el valor congelado
874 apps/erpnext/erpnext/public/js/setup_wizard.js What does it do? ¿Qué hace?
875 apps/erpnext/erpnext/stock/doctype/item/item.py 'Has Serial No' can not be 'Yes' for non-stock item 'Tiene Número de Serie' no puede ser "Sí" para elementos que son de inventario
972 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py Row {0}: Party Type and Party is required for Receivable / Payable account {1} Fila {0}: el tipo de entidad se requiere para las cuentas por cobrar/pagar {1}
973 apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py Ref Date Fecha Ref
974 DocType: Expense Claim Detail Sanctioned Amount importe sancionado
975 DocType: GL Entry Is Opening Es apertura
976 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py Row {0}: Debit entry can not be linked with a {1} Fila {0}: Débito no puede vincularse con {1}
977 DocType: Employee Short biography for website and other publications. Breve biografía de la página web y otras publicaciones.
978

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -55,7 +55,7 @@ apps/erpnext/erpnext/accounts/report/accounts_payable/accounts_payable.js,Ageing
apps/erpnext/erpnext/config/crm.py,Logs for maintaining sms delivery status,יומנים לשמירה על סטטוס משלוח SMS
DocType: Batch,Batch ID,זיהוי אצווה
apps/erpnext/erpnext/accounts/report/gross_profit/gross_profit.py,Avg. Selling Rate,ממוצע. שיעור מכירה
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,Completed Qty can not be greater than 'Qty to Manufacture',"כמות שהושלמה לא יכולה להיות גדולה מ 'כמות לייצור """
apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.py,Completed Qty can not be greater than 'Qty to Manufacture',"כמות שהושלמה לא יכולה להיות גדולה מ 'כמות לייצור """
apps/erpnext/erpnext/accounts/doctype/account/account.py,Account {0}: Parent account {1} does not exist,חשבון {0}: הורה חשבון {1} לא קיימת
DocType: Asset,Double Declining Balance,יתרה זוגית ירידה
apps/erpnext/erpnext/stock/doctype/item_attribute/item_attribute.py,Please specify from/to range,נא לציין מ / אל נעים
@ -103,7 +103,6 @@ apps/erpnext/erpnext/accounts/utils.py,Payment Entries {0} are un-linked,פוס
DocType: Rename Tool,File to Rename,קובץ לשינוי השם
DocType: Item Default,Default Supplier,ספק ברירת מחדל
DocType: Item,FIFO,FIFO
DocType: Purchase Invoice,Contact Email,"דוא""ל ליצירת קשר"
apps/erpnext/erpnext/projects/doctype/timesheet/timesheet.py,Row {0}: From Time and To Time is mandatory.,שורת {0}: מעת לעת ו היא חובה.
DocType: Work Order,Item To Manufacture,פריט לייצור
apps/erpnext/erpnext/stock/report/stock_balance/stock_balance.py,Please set filter based on Item or Warehouse,אנא להגדיר מסנן מבוסס על פריט או מחסן
@ -289,8 +288,7 @@ DocType: Employee Education,Employee Education,חינוך לעובדים
apps/erpnext/erpnext/accounts/report/budget_variance_report/budget_variance_report.py,Total Actual,"סה""כ בפועל"
DocType: Shopping Cart Settings,Enable Shopping Cart,אפשר סל קניות
DocType: Payment Request,Mute Email,דוא&quot;ל השתקה
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,Cannot produce more Item {0} than Sales Order quantity {1},לא יכול לייצר יותר פריט {0} מאשר כמות להזמין מכירות {1}
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,Timesheet created:,גיליון נוצר:
apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.py,Cannot produce more Item {0} than Sales Order quantity {1},לא יכול לייצר יותר פריט {0} מאשר כמות להזמין מכירות {1}
DocType: Journal Entry,Excise Entry,בלו כניסה
DocType: Warranty Claim,Resolved By,נפתר על ידי
DocType: Production Plan,Get Sales Orders,קבל הזמנות ומכירות
@ -527,7 +525,7 @@ DocType: Item Attribute Value,"This will be appended to the Item Code of the var
apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js,Please specify a valid Row ID for row {0} in table {1},נא לציין מספר שורה תקפה לשורה {0} בטבלת {1}
apps/erpnext/erpnext/selling/doctype/installation_note/installation_note.py,Serial No {0} does not belong to Delivery Note {1},מספר סידורי {0} אינו שייך לתעודת משלוח {1}
DocType: Asset Category Account,Fixed Asset Account,חשבון רכוש קבוע
DocType: Sales Invoice,Debit To,חיוב ל
DocType: Discounted Invoice,Debit To,חיוב ל
DocType: Leave Type,Allow Negative Balance,לאפשר מאזן שלילי
DocType: Timesheet,Employee Detail,פרט לעובדים
DocType: Maintenance Visit Purpose,Against Document No,נגד מסמך לא
@ -565,7 +563,7 @@ DocType: Healthcare Practitioner,Default Currency,מטבע ברירת מחדל
apps/erpnext/erpnext/public/js/templates/address_list.html,New Address,כתובת חדשה
apps/erpnext/erpnext/setup/doctype/company/company.py,Abbreviation is mandatory,הקיצור הוא חובה
apps/erpnext/erpnext/config/help.py,Customizing Forms,טפסי התאמה אישית
DocType: Accounting Dimension,Disable,בטל
DocType: Account,Disable,בטל
DocType: Customer Group,Mention if non-standard receivable account applicable,להזכיר אם ישים חשבון חייבים שאינם סטנדרטי
apps/erpnext/erpnext/accounts/page/pos/pos.js,Enter value must be positive,זן הערך חייב להיות חיובי
DocType: Warehouse,PIN,פִּין
@ -583,7 +581,7 @@ apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Exchange Rate must
apps/erpnext/erpnext/assets/doctype/asset/depreciation.py,Please set Depreciation related Accounts in Asset Category {0} or Company {1},אנא להגדיר חשבונות הקשורים פחת קטגוריה Asset {0} או החברה {1}
apps/erpnext/erpnext/utilities/bot.py,[{0}](#Form/Item/{0}) is out of stock,[{0}] (טופס # / כתבה / {0}) אזל מהמלאי
DocType: Warranty Claim,Warranty / AMC Status,אחריות / מעמד AMC
apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.py,Note: Item {0} entered multiple times,הערה: פריט {0} נכנסה מספר פעמים
apps/erpnext/erpnext/controllers/selling_controller.py,Note: Item {0} entered multiple times,הערה: פריט {0} נכנסה מספר פעמים
apps/erpnext/erpnext/accounts/doctype/tax_rule/tax_rule.py,"Enabling 'Use for Shopping Cart', as Shopping Cart is enabled and there should be at least one Tax Rule for Shopping Cart","&#39;השתמש עבור סל קניות&#39; האפשור, כמו סל הקניות מופעל ולא צריך להיות לפחות כלל מס אחד עבור סל קניות"
apps/erpnext/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py,Closing Account {0} must be of type Liability / Equity,סגירת חשבון {0} חייבת להיות אחריות / הון עצמי סוג
DocType: Attendance,Leave Type,סוג החופשה
@ -615,7 +613,7 @@ apps/erpnext/erpnext/controllers/selling_controller.py,Row {0}: Qty is mandatory
,Available Stock for Packing Items,מלאי זמין לפריטי אריזה
apps/erpnext/erpnext/stock/report/stock_balance/stock_balance.py,Balance Value,ערך איזון
DocType: Lead,Interested,מעוניין
DocType: Leave Type,Is Leave Without Pay,האם חופשה ללא תשלום
DocType: Leave Ledger Entry,Is Leave Without Pay,האם חופשה ללא תשלום
apps/erpnext/erpnext/education/utils.py,Student {0} - {1} appears Multiple times in row {2} & {3},סטודנט {0} - {1} מופיע מספר פעמים ברציפות {2} ו {3}
DocType: Email Campaign,Scheduled,מתוכנן
DocType: Tally Migration,UOMs,UOMs
@ -648,13 +646,11 @@ apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Part-time
apps/erpnext/erpnext/controllers/status_updater.py,Limit Crossed,הגבל Crossed
DocType: Email Digest,How frequently?,באיזו תדירות?
DocType: Upload Attendance,Get Template,קבל תבנית
apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py,Total allocated leaves {0} cannot be less than already approved leaves {1} for the period,עלים כולל שהוקצו {0} לא יכולים להיות פחות מעלים שכבר אושרו {1} לתקופה
apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py,Journal Entry {0} does not have account {1} or already matched against other voucher,היומן {0} אין חשבון {1} או שכבר מתאים נגד שובר אחר
apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py,Removed items with no change in quantity or value.,פריטים הוסרו ללא שינוי בכמות או ערך.
DocType: Work Order,Use Multi-Level BOM,השתמש Multi-Level BOM
DocType: Sales Invoice,Shipping Address Name,שם כתובת למשלוח
DocType: Customer Group,Parent Customer Group,קבוצת לקוחות הורה
,Company Name,שם חברה
DocType: GL Entry,GL Entry,GL כניסה
DocType: Asset,Asset Name,שם נכס
apps/erpnext/erpnext/setup/doctype/company/company.py,Main,ראשי
@ -667,7 +663,6 @@ DocType: Accounts Settings,Check Supplier Invoice Number Uniqueness,ספק בד
DocType: Share Balance,Issued,הפיק
,Sales Partners Commission,ועדת שותפי מכירות
DocType: Purchase Receipt,Range,טווח
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,Already completed,הושלם כבר
apps/erpnext/erpnext/utilities/user_progress.py,Kg,קילוגרם
DocType: Bank Reconciliation,Include Reconciled Entries,כוללים ערכים מפוייס
apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py,Please select a csv file,אנא בחר קובץ CSV
@ -677,7 +672,7 @@ apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py,{0
apps/erpnext/erpnext/accounts/doctype/payment_request/payment_request.py,Payment Entry is already created,כניסת תשלום כבר נוצר
DocType: Sales Invoice Item,References,אזכור
DocType: Item,Synced With Hub,סונכרן עם רכזת
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,Sales Order {0} is not valid,להזמין מכירות {0} אינו חוקי
apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.py,Sales Order {0} is not valid,להזמין מכירות {0} אינו חוקי
apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py,Warehouse not found in the system,מחסן לא נמצא במערכת
apps/erpnext/erpnext/accounts/report/purchase_register/purchase_register.py,Total Tax,"מס סה""כ"
apps/erpnext/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py,{0} payment entries can not be filtered by {1},לא יכולים להיות מסוננים {0} ערכי תשלום על ידי {1}
@ -693,7 +688,6 @@ DocType: Bin,Moving Average Rate,נע תעריף ממוצע
apps/erpnext/erpnext/setup/doctype/sales_person/sales_person_tree.js,Please enter Employee Id of this sales person,נא להזין את עובדי זיהוי של איש מכירות זה
DocType: Purchase Taxes and Charges,Consider Tax or Charge for,שקול מס או תשלום עבור
DocType: Maintenance Visit,Maintenance Visit,תחזוקה בקר
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,"Stopped Production Order cannot be cancelled, Unstop it first to cancel","הזמנת ייצור הפסיק אינה ניתנת לביטול, מגופתו הראשונה לביטול"
apps/erpnext/erpnext/config/selling.py,Quotes to Leads or Customers.,ציטוטים להובלות או לקוחות.
DocType: Lead,Do Not Contact,אל תצור קשר
DocType: BOM,Manage cost of operations,ניהול עלות של פעולות
@ -722,7 +716,7 @@ apps/erpnext/erpnext/controllers/website_list_for_contact.py,{0}% Billed,{0}% ש
DocType: Delivery Note Item,Against Sales Order,נגד להזמין מכירות
DocType: Email Digest,Open Notifications,הודעות פתוחות
apps/erpnext/erpnext/selling/doctype/installation_note/installation_note.js,From Delivery Note,מתעודת משלוח
apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html,Invoiced Amount,סכום חשבונית
apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.py,Invoiced Amount,סכום חשבונית
DocType: Program Enrollment Fee,Program Enrollment Fee,הרשמה לתכנית דמים
apps/erpnext/erpnext/setup/page/welcome_to_erpnext/welcome_to_erpnext.html,"To get the best out of ERPNext, we recommend that you take some time and watch these help videos.","כדי לקבל את הטוב ביותר של ERPNext, אנו ממליצים שתיקחו קצת זמן ולצפות בקטעי וידאו עזרה אלה."
DocType: Student Group Creation Tool,Student Group Creation Tool,כלי יצירת סטודנט קבוצה
@ -751,7 +745,6 @@ DocType: POS Profile,Sales Invoice Payment,תשלום חשבוניות מכיר
DocType: Fee Schedule,Fee Schedule,בתוספת דמי
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Research,מחקר
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Consumable,מתכלה
apps/erpnext/erpnext/assets/doctype/asset/asset.py,Please cancel Purchase Invoice {0} first,אנא בטל חשבונית רכישת {0} ראשון
DocType: Account,Profit and Loss,רווח והפסד
DocType: Purchase Invoice Item,Rate,שיעור
apps/erpnext/erpnext/utilities/user_progress.py,Meter,מטר
@ -888,7 +881,6 @@ apps/erpnext/erpnext/setup/doctype/email_digest/email_digest.py,This Week's Summ
DocType: Packed Item,To Warehouse (Optional),למחסן (אופציונאלי)
DocType: Cheque Print Template,Scanned Cheque,המחאה סרוקה
apps/erpnext/erpnext/setup/doctype/customer_group/customer_group.js,This is a root customer group and cannot be edited.,מדובר בקבוצת לקוחות שורש ולא ניתן לערוך.
apps/erpnext/erpnext/accounts/doctype/payment_request/payment_request.py,Payment Request already exists {0},בקשת תשלום כבר קיימת {0}
DocType: Payment Term,Credit Days,ימי אשראי
apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.py,Party is mandatory,המפלגה היא חובה
apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js,Re-open,Re-פתוח
@ -918,7 +910,7 @@ apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py,Item
apps/erpnext/erpnext/crm/doctype/opportunity/opportunity_list.js,Set as Closed,קבע כסגור
DocType: Stock Settings,Raise Material Request when stock reaches re-order level,להעלות בקשת חומר כאשר המלאי מגיע לרמה מחדש כדי
DocType: Asset,Journal Entry for Scrap,תנועת יומן עבור גרוטאות
DocType: Delivery Stop,Contact Name,שם איש קשר
DocType: Call Log,Contact Name,שם איש קשר
apps/erpnext/erpnext/education/doctype/student_group_creation_tool/student_group_creation_tool.py,No Student Groups created.,אין קבוצות סטודנטים נוצרו.
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Posting timestamp must be after {0},חותמת זמן פרסום חייבת להיות אחרי {0}
apps/erpnext/erpnext/accounts/report/trial_balance/trial_balance.py,Fiscal Year {0} does not exist,שנת הכספים {0} לא קיים
@ -938,7 +930,7 @@ DocType: Employee,Confirmation Date,תאריך אישור
DocType: Global Defaults,"If disable, 'In Words' field will not be visible in any transaction","אם להשבית, &#39;במילים&#39; שדה לא יהיה גלוי בכל עסקה"
DocType: Supplier,Is Frozen,האם קפוא
,Reqd By Date,Reqd לפי תאריך
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,Work-in-Progress Warehouse is required before Submit,עבודה ב-התקדמות המחסן נדרש לפני הגשה
apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.py,Work-in-Progress Warehouse is required before Submit,עבודה ב-התקדמות המחסן נדרש לפני הגשה
apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py,Please select correct account,אנא בחר חשבון נכון
DocType: Share Transfer,Transfer,העברה
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py,Item {0} has already been returned,פריט {0} הוחזר כבר
@ -1002,7 +994,6 @@ DocType: Asset Category Account,Depreciation Expense Account,חשבון הוצא
DocType: POS Profile,Campaign,קמפיין
apps/erpnext/erpnext/config/manufacturing.py,Bill of Materials (BOM),הצעת החוק של חומרים (BOM)
DocType: Shipping Rule Country,Shipping Rule Country,מדינה כלל משלוח
DocType: Setup Progress Action,Domains,תחומים
DocType: Leave Block List Date,Block Date,תאריך בלוק
apps/erpnext/erpnext/utilities/user_progress.py,Litre,לִיטר
DocType: Payment Reconciliation Payment,Allocated amount,סכום שהוקצה
@ -1113,7 +1104,6 @@ DocType: Item Default,Default Selling Cost Center,מרכז עלות מכירת
apps/erpnext/erpnext/accounts/doctype/gl_entry/gl_entry.py,Against Journal Entry {0} is already adjusted against some other voucher,נגד תנועת היומן {0} כבר תואם כמה שובר אחר
DocType: Leave Block List,Leave Block List Allowed,השאר בלוק רשימת מחמד
DocType: Loyalty Point Entry,Purchase Amount,סכום הרכישה
apps/erpnext/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py,Total Outstanding Amt,"סה""כ מצטיין Amt"
apps/erpnext/erpnext/setup/doctype/sales_person/sales_person.js,This is a root sales person and cannot be edited.,זה איש מכירות שורש ולא ניתן לערוך.
apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.py,Currency for {0} must be {1},מטבע עבור {0} חייב להיות {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,אנא בחר לשאת קדימה אם אתה גם רוצה לכלול האיזון של שנת כספים הקודמת משאיר לשנה הפיסקלית
@ -1293,7 +1283,7 @@ DocType: Bin,Requested Quantity,כמות מבוקשת
DocType: Payment Entry,Cheque/Reference No,המחאה / אסמכתא
apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py,Please enter Expense Account,נא להזין את חשבון הוצאות
DocType: Purchase Order,Get Items from Open Material Requests,קבל פריטים מבקשות להרחיב חומר
DocType: Stock Entry,Material Transfer for Manufacture,העברת חומר לייצור
DocType: Pick List,Material Transfer for Manufacture,העברת חומר לייצור
apps/erpnext/erpnext/accounts/doctype/fiscal_year/fiscal_year.py,Fiscal Year Start Date and Fiscal Year End Date are already set in Fiscal Year {0},שנת כספי תאריך ההתחלה ותאריך סיום שנת כספים כבר נקבעו בשנת הכספים {0}
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Probationary Period,תקופת ניסיון
DocType: Purchase Invoice Item,Item Tax Rate,שיעור מס פריט
@ -1528,7 +1518,6 @@ DocType: Examination Result,Examination Result,תוצאת בחינה
DocType: Asset,Fully Depreciated,לגמרי מופחת
apps/erpnext/erpnext/config/stock.py,Stock Transactions,והתאמות מלאות
DocType: SMS Log,Sent To,נשלח ל
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,Production Order cannot be raised against a Item Template,להזמין ייצור לא יכול להיות שהועלה נגד תבנית פריט
DocType: GL Entry,Is Opening,האם פתיחה
DocType: Purchase Invoice,Price List Currency,מטבע מחירון
DocType: Quotation Item,Planning,תכנון
@ -1721,7 +1710,7 @@ apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standar
DocType: Supplier,Statutory info and other general information about your Supplier,מידע סטטוטורי ומידע כללי אחר על הספק שלך
DocType: Item,Supplier Items,פריטים ספק
DocType: Warranty Claim,If different than customer address,אם שונה מכתובת הלקוח
DocType: Leave Type,Is Carry Forward,האם להמשיך קדימה
DocType: Leave Ledger Entry,Is Carry Forward,האם להמשיך קדימה
DocType: Cashier Closing,To Time,לעת
DocType: Payment Reconciliation,Unreconciled Payment Details,פרטי תשלום לא מותאמים
DocType: Tax Rule,Billing Country,ארץ חיוב
@ -1820,7 +1809,6 @@ apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py,Warning: Sales O
apps/erpnext/erpnext/controllers/buying_controller.py,Row #{0}: Rejected Qty can not be entered in Purchase Return,# השורה {0}: נדחו לא ניתן להזין כמות ברכישת חזרה
apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py,Cost Updated,עלות עדכון
DocType: Sales Invoice,Customer Name,שם לקוח
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,{0} ({1}) cannot be greater than planned quanitity ({2}) in Production Order {3},{0} ({1}) לא יכול להיות גדול יותר מquanitity המתוכנן ({2}) בהפקה להזמין {3}
DocType: Website Item Group,Cross Listing of Item in multiple groups,רישום צלב של פריט בקבוצות מרובות
apps/erpnext/erpnext/selling/doctype/product_bundle/product_bundle.js,"Please select Item where ""Is Stock Item"" is ""No"" and ""Is Sales Item"" is ""Yes"" and there is no other Product Bundle",אנא בחר פריט שבו &quot;האם פריט במלאי&quot; הוא &quot;לא&quot; ו- &quot;האם פריט מכירות&quot; הוא &quot;כן&quot; ואין Bundle מוצרים אחר
apps/erpnext/erpnext/accounts/report/cash_flow/cash_flow.py,Net Change in Accounts Payable,שינוי נטו בחשבונות זכאים
@ -1886,7 +1874,7 @@ DocType: BOM,Show In Website,הצג באתר
DocType: Delivery Note,Delivery To,משלוח ל
apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js,Hold,החזק
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Small,קטן
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,Operation Time must be greater than 0 for Operation {0},מבצע זמן חייב להיות גדול מ 0 למבצע {0}
apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.py,Operation Time must be greater than 0 for Operation {0},מבצע זמן חייב להיות גדול מ 0 למבצע {0}
apps/erpnext/erpnext/accounts/report/profitability_analysis/profitability_analysis.js,Show zero values,הצג אפס ערכים
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js,Please select Category first,אנא בחר תחילה קטגוריה
DocType: Employee,Applicable Holiday List,רשימת Holiday ישימה
@ -1900,7 +1888,6 @@ DocType: Department,Leave Approvers,השאר מאשרים
DocType: Landed Cost Purchase Receipt,Landed Cost Purchase Receipt,קבלת רכישת עלות נחתה
DocType: Salary Slip,Bank Account No.,מס 'חשבון הבנק
DocType: Manufacturer,Limited to 12 characters,מוגבל ל -12 תווים
apps/erpnext/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py,Total Paid Amt,"Amt שילם סה""כ"
DocType: Purchase Taxes and Charges,Tax Amount After Discount Amount,סכום מס לאחר סכום הנחה
apps/erpnext/erpnext/accounts/doctype/item_tax_template/item_tax_template.py,{0} entered twice in Item Tax,{0} נכנס פעמיים במס פריט
DocType: Leave Allocation,Unused leaves,עלים שאינם בשימוש
@ -2064,7 +2051,6 @@ DocType: Company,Legal Entity / Subsidiary with a separate Chart of Accounts bel
apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js,Cannot {0} {1} {2} without any negative outstanding invoice,אין אפשרות {0} {1} {2} ללא כל חשבונית מצטיינים שלילית
DocType: BOM,Item Image (if not slideshow),תמונת פריט (אם לא מצגת)
DocType: Purchase Taxes and Charges,Item Wise Tax Detail,פריט Detail המס וייז
DocType: Employee,Contact Details,פרטי
DocType: Expense Claim Detail,Expense Date,תאריך הוצאה
apps/erpnext/erpnext/controllers/item_variant.py,Invalid attribute {0} {1},מאפיין לא חוקי {0} {1}
apps/erpnext/erpnext/stock/doctype/material_request/material_request.js,Get Items from BOM,קבל פריטים מBOM
@ -2131,7 +2117,6 @@ apps/erpnext/erpnext/controllers/selling_controller.py,To {0} | {1} {2},כדי {
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.js,Set as Lost,קבע כאבוד
DocType: Student Applicant,Approved,אושר
DocType: BOM,Raw Material Cost,עלות חומרי גלם
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.js,Please Delivery Note first,אנא משלוח הערה ראשון
DocType: Announcement,Posted By,פורסם על ידי
DocType: BOM,Operating Cost,עלות הפעלה
apps/erpnext/erpnext/setup/setup_wizard/data/industry_type.py,Department Stores,חנויות כלבו
@ -2255,7 +2240,7 @@ DocType: Leave Control Panel,Allocate,להקצות
apps/erpnext/erpnext/controllers/accounts_controller.py,"Row #{0}: Qty must be 1, as item is a fixed asset. Please use separate row for multiple qty.","# השורה {0}: כמות חייבת להיות 1, כפריט הוא נכס קבוע. השתמש בשורה נפרדת עבור כמות מרובה."
apps/erpnext/erpnext/assets/doctype/asset/depreciation.py,Asset scrapped via Journal Entry {0},נכסים לגרוטאות באמצעות תנועת יומן {0}
DocType: Sales Invoice,Customer's Purchase Order,הלקוח הזמנת הרכש
DocType: Stock Reconciliation Item,Serial No and Batch,אין ו אצווה סידורי
DocType: Pick List Item,Serial No and Batch,אין ו אצווה סידורי
DocType: Maintenance Visit,Fully Completed,הושלם במלואו
apps/erpnext/erpnext/utilities/user_progress.py,Example: Basic Mathematics,דוגמה: מתמטיקה בסיסית
DocType: Budget,Budget,תקציב
@ -2269,7 +2254,7 @@ DocType: Payment Request,payment_url,payment_url
apps/erpnext/erpnext/stock/doctype/material_request/material_request.py,Productions Orders cannot be raised for:,הזמנות הפקות לא ניתן להעלות על:
DocType: Manufacturing Settings,Default Finished Goods Warehouse,מחסן מוצרים מוגמר ברירת מחדל
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Proposal Writing,כתיבת הצעה
DocType: Email Campaign,Lead,לידים
DocType: Call Log,Lead,לידים
apps/erpnext/erpnext/accounts/doctype/item_tax_template/item_tax_template.py,Item Tax Row {0} must have account of type Tax or Income or Expense or Chargeable,שורת מס פריט {0} חייבת להיות חשבון של מס סוג או הכנסה או הוצאה או לחיוב
apps/erpnext/erpnext/selling/report/inactive_customers/inactive_customers.py,Last Order Amount,סכום ההזמנה האחרונה
DocType: Buying Settings,Subcontract,בקבלנות משנה
@ -2324,7 +2309,7 @@ DocType: Expense Claim,Total Sanctioned Amount,"הסכום אושר סה""כ"
apps/erpnext/erpnext/education/doctype/student/student_dashboard.py,This is based on the attendance of this Student,זה מבוסס על הנוכחות של תלמיד זה
apps/erpnext/erpnext/setup/doctype/company/company.py,Abbr can not be blank or space,Abbr לא יכול להיות ריק או חלל
DocType: Manufacturing Settings,Backflush Raw Materials Based On,Backflush חומרי גלם המבוסס על
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,Cannot cancel because submitted Stock Entry {0} exists,לא ניתן לבטל עקב נתון מלאי {0}
apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.py,Cannot cancel because submitted Stock Entry {0} exists,לא ניתן לבטל עקב נתון מלאי {0}
DocType: Payment Entry,Receive,קבל
DocType: Quality Inspection,Inspection Type,סוג הפיקוח
DocType: Patient,Divorced,גרוש
@ -2369,7 +2354,7 @@ DocType: Purchase Order Item,To be delivered to customer,שיימסר ללקוח
DocType: Department,Leave Approver,השאר מאשר
DocType: Item Supplier,Item Supplier,ספק פריט
DocType: Employee,History In Company,ההיסטוריה בחברה
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,For Warehouse is required before Submit,למחסן נדרש לפני הגשה
apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.py,For Warehouse is required before Submit,למחסן נדרש לפני הגשה
DocType: Employee Attendance Tool,Employees HTML,עובד HTML
DocType: Sales Order,Delivery Date,תאריך משלוח
apps/erpnext/erpnext/stock/doctype/item/item.js,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,"פריט זה הוא תבנית ולא ניתן להשתמש בם בעסקות. תכונות פריט תועתק על לגרסות אלא אם כן ""לא העתק 'מוגדרת"
@ -2490,7 +2475,7 @@ DocType: Bank Reconciliation Detail,Cheque Number,מספר המחאה
DocType: Payment Entry,Cheque/Reference Date,תאריך המחאה / הפניה
DocType: Payment Entry,Payment Deductions or Loss,ניכויי תשלום או פסד
apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.js,Max: {0},מקס: {0}
DocType: Warehouse,Parent Warehouse,מחסן הורה
DocType: Pick List,Parent Warehouse,מחסן הורה
apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.py,"Payment Type must be one of Receive, Pay and Internal Transfer",סוג התשלום חייב להיות אחד וקבל שכר וטובות העברה פנימית
DocType: Sales Invoice Item,Drop Ship,זרוק משלוח
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py,Supplier Invoice Date cannot be greater than Posting Date,תאריך חשבונית ספק לא יכול להיות גדול מ תאריך פרסום
@ -2524,7 +2509,6 @@ apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standar
DocType: Job Applicant,Applicant for a Job,מועמד לעבודה
apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.py,Reference No and Reference Date is mandatory for Bank transaction,אסמכתא ותאריך ההפניה הוא חובה עבור עסקת הבנק
DocType: Cheque Print Template,Signatory Position,תפקיד החותם
DocType: BOM,Exploded_items,Exploded_items
,Item-wise Sales Register,פריט חכם מכירות הרשמה
DocType: Bank Reconciliation,Select account head of the bank where cheque was deposited.,ראש בחר חשבון של הבנק שבו הופקד שיק.
DocType: Pricing Rule,Margin,Margin
@ -2646,7 +2630,7 @@ DocType: Tax Rule,Billing State,מדינת חיוב
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Full-time,משרה מלאה
apps/erpnext/erpnext/accounts/report/cash_flow/cash_flow.py,Net Change in Inventory,שינוי נטו במלאי
,Qty to Order,כמות להזמנה
DocType: Purchase Receipt Item Supplied,Required Qty,חובה כמות
DocType: Purchase Order Item Supplied,Required Qty,חובה כמות
apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.py,Received From,התקבל מ
apps/erpnext/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py,Total Present,"הווה סה""כ"
apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.js,Quantity must not be more than {0},כמות לא חייבת להיות יותר מ {0}
@ -2680,7 +2664,7 @@ apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py,Accounts ta
apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py,Operations cannot be left blank,תפעול לא ניתן להשאיר ריק
DocType: Buying Settings,Settings for Buying Module,הגדרות עבור רכישת מודול
DocType: Company,Round Off Cost Center,לעגל את מרכז עלות
apps/erpnext/erpnext/templates/pages/home.html,Explore,לַחקוֹר
apps/erpnext/erpnext/public/js/hub/pages/Home.vue,Explore,לַחקוֹר
apps/erpnext/erpnext/accounts/doctype/fiscal_year/fiscal_year.js,"To set this Fiscal Year as Default, click on 'Set as Default'","כדי להגדיר שנת כספים זו כברירת מחדל, לחץ על 'קבע כברירת מחדל'"
apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.js,Finish,סִיוּם
DocType: Sales Taxes and Charges Template,* Will be calculated in the transaction.,* יחושב בעסקה.
@ -2918,7 +2902,6 @@ DocType: Shipping Rule Condition,To Value,לערך
apps/erpnext/erpnext/regional/italy/utils.py,Nos,מס
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Engineer,מהנדס
DocType: Sales Order Item,For Production,להפקה
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,Capacity Planning Error,שגיאת תכנון קיבולת
DocType: Journal Entry,Make Difference Entry,הפוך כניסת הבדל
DocType: Quality Inspection Reading,Reading 1,קריאת 1
apps/erpnext/erpnext/hr/doctype/employee_tax_exemption_declaration/employee_tax_exemption_declaration.js,Please select {0},אנא בחר {0}
@ -2929,7 +2912,6 @@ DocType: Sales Invoice,Sales Taxes and Charges Template,מסים מכירות ו
DocType: Selling Settings,Allow multiple Sales Orders against a Customer's Purchase Order,לאפשר הזמנות ומכירות מרובות נגד הלקוח הזמנת הרכש
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py,Bank Overdraft Account,בנק משייך יתר חשבון
DocType: Leave Application,Leave Approver Name,השאר שם מאשר
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,Unable to find Time Slot in the next {0} days for Operation {1},לא ניתן למצוא משבצת הזמן בעולם הבא {0} ימים למבצע {1}
DocType: Purchase Invoice,Supplier Name,שם ספק
DocType: Employee,Owned,בבעלות
apps/erpnext/erpnext/accounts/report/cash_flow/cash_flow.py,Net Change in Fixed Asset,שינוי נטו בנכסים קבועים
@ -3020,7 +3002,6 @@ apps/erpnext/erpnext/stock/doctype/item/item_dashboard.py,This is based on stock
DocType: Sales Order Item,Supplier delivers to Customer,ספק מספק ללקוח
DocType: Payment Entry,Payment References,הפניות תשלום
DocType: Student,AB+,AB +
apps/erpnext/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py,Total Invoiced Amt,"סה""כ חשבונית Amt"
,Trial Balance for Party,מאזן בוחן למפלגה
DocType: Salary Structure,Salary breakup based on Earning and Deduction.,פרידה שכר על בסיס צבירה וניכוי.
DocType: SMS Center,Messages greater than 160 characters will be split into multiple messages,הודעות יותר מ -160 תווים יפוצלו למספר הודעות
@ -3252,6 +3233,7 @@ DocType: Tax Rule,Billing County,מחוז חיוב
,Ordered Items To Be Delivered,פריטים הורה שיימסרו
apps/erpnext/erpnext/utilities/bot.py,Did not find any item called {0},לא מצא שום פריט בשם {0}
apps/erpnext/erpnext/accounts/party.py,Accounting entries have already been made in currency {0} for company {1}. Please select a receivable or payable account with currency {0}.,רישומים חשבונאיים כבר נעשו במטבע {0} לחברת {1}. אנא בחר חשבון לקבל או לשלם במטבע {0}.
DocType: Leave Allocation,Carry Forwarded Leaves,לשאת עלים שהועברו
DocType: Naming Series,Change the starting / current sequence number of an existing series.,לשנות את מתחיל / מספר הרצף הנוכחי של סדרות קיימות.
apps/erpnext/erpnext/accounts/report/cash_flow/cash_flow.py,Net Cash from Operations,מזומנים נטו שנבעו מפעולות
DocType: Quotation Item,Stock Balance,יתרת מלאי
@ -3349,12 +3331,11 @@ DocType: Material Request Item,Min Order Qty,להזמין כמות מינימו
DocType: Task,Actual Time (in Hours),זמן בפועל (בשעות)
apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py,Colour,צבע
DocType: Appraisal,For Employee Name,לשם עובדים
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py,Quantity to Manufacture must be greater than 0.,כמות לייצור חייבת להיות גדולה מ 0.
apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.py,Quantity to Manufacture must be greater than 0.,כמות לייצור חייבת להיות גדולה מ 0.
apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.py,{0} {1} does not exist,{0} {1} לא קיים
DocType: Asset,Maintenance,תחזוקה
DocType: Asset Repair,Manufacturing Manager,ייצור מנהל
apps/erpnext/erpnext/projects/report/project_wise_stock_tracking/project_wise_stock_tracking.py,Project Start Date,תאריך התחלת פרויקט
apps/erpnext/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py,-Above,-מעל
DocType: Account,Chargeable,נִטעָן
DocType: Bank Statement Transaction Invoice Item,Transaction Date,תאריך עסקה
apps/erpnext/erpnext/patches/v4_0/create_price_list_if_missing.py,Standard Buying,קנייה סטנדרטית
@ -3362,7 +3343,7 @@ apps/erpnext/erpnext/projects/doctype/project/project.js,Gantt Chart,תרשים
apps/erpnext/erpnext/selling/page/sales_funnel/sales_funnel.js,Sales Pipeline,צינור מכירות
,Average Commission Rate,שערי העמלה הממוצעת
apps/erpnext/erpnext/hr/report/employee_advance_summary/employee_advance_summary.py,No record found,לא נמצא רשומה
,Lead Name,שם ליד
DocType: Call Log,Lead Name,שם ליד
,Customer Credit Balance,יתרת אשראי ללקוחות
apps/erpnext/erpnext/config/assets.py,Transfer an asset from one warehouse to another,להעביר נכס ממחסן אחד למשנהו
apps/erpnext/erpnext/stock/doctype/item/item.py,Default Unit of Measure for Variant '{0}' must be same as in Template '{1}',ברירת מחדל של יחידת מדידה ולריאנט &#39;{0}&#39; חייבת להיות זהה בתבנית &#39;{1}&#39;

1 DocType: Purchase Taxes and Charges Is this Tax included in Basic Rate? האם מס זה כלול ביסוד שיעור?
55 apps/erpnext/erpnext/config/crm.py Logs for maintaining sms delivery status יומנים לשמירה על סטטוס משלוח SMS
56 DocType: Batch Batch ID זיהוי אצווה
57 apps/erpnext/erpnext/accounts/report/gross_profit/gross_profit.py Avg. Selling Rate ממוצע. שיעור מכירה
58 apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.py Completed Qty can not be greater than 'Qty to Manufacture' כמות שהושלמה לא יכולה להיות גדולה מ 'כמות לייצור "
59 apps/erpnext/erpnext/accounts/doctype/account/account.py Account {0}: Parent account {1} does not exist חשבון {0}: הורה חשבון {1} לא קיימת
60 DocType: Asset Double Declining Balance יתרה זוגית ירידה
61 apps/erpnext/erpnext/stock/doctype/item_attribute/item_attribute.py Please specify from/to range נא לציין מ / אל נעים
103 DocType: Rename Tool File to Rename קובץ לשינוי השם
104 DocType: Item Default Default Supplier ספק ברירת מחדל
105 DocType: Item FIFO FIFO
DocType: Purchase Invoice Contact Email דוא"ל ליצירת קשר
106 apps/erpnext/erpnext/projects/doctype/timesheet/timesheet.py Row {0}: From Time and To Time is mandatory. שורת {0}: מעת לעת ו היא חובה.
107 DocType: Work Order Item To Manufacture פריט לייצור
108 apps/erpnext/erpnext/stock/report/stock_balance/stock_balance.py Please set filter based on Item or Warehouse אנא להגדיר מסנן מבוסס על פריט או מחסן
288 apps/erpnext/erpnext/accounts/report/budget_variance_report/budget_variance_report.py Total Actual סה"כ בפועל
289 DocType: Shopping Cart Settings Enable Shopping Cart אפשר סל קניות
290 DocType: Payment Request Mute Email דוא&quot;ל השתקה
291 apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.py Cannot produce more Item {0} than Sales Order quantity {1} לא יכול לייצר יותר פריט {0} מאשר כמות להזמין מכירות {1}
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py Timesheet created: גיליון נוצר:
292 DocType: Journal Entry Excise Entry בלו כניסה
293 DocType: Warranty Claim Resolved By נפתר על ידי
294 DocType: Production Plan Get Sales Orders קבל הזמנות ומכירות
525 apps/erpnext/erpnext/selling/doctype/installation_note/installation_note.py Serial No {0} does not belong to Delivery Note {1} מספר סידורי {0} אינו שייך לתעודת משלוח {1}
526 DocType: Asset Category Account Fixed Asset Account חשבון רכוש קבוע
527 DocType: Sales Invoice DocType: Discounted Invoice Debit To חיוב ל
528 DocType: Leave Type Allow Negative Balance לאפשר מאזן שלילי
529 DocType: Timesheet Employee Detail פרט לעובדים
530 DocType: Maintenance Visit Purpose Against Document No נגד מסמך לא
531 apps/erpnext/erpnext/config/buying.py Default settings for buying transactions. הגדרות ברירת מחדל בעסקות קנייה.
563 apps/erpnext/erpnext/setup/doctype/company/company.py Abbreviation is mandatory הקיצור הוא חובה
564 apps/erpnext/erpnext/config/help.py Customizing Forms טפסי התאמה אישית
565 DocType: Accounting Dimension DocType: Account Disable בטל
566 DocType: Customer Group Mention if non-standard receivable account applicable להזכיר אם ישים חשבון חייבים שאינם סטנדרטי
567 apps/erpnext/erpnext/accounts/page/pos/pos.js Enter value must be positive זן הערך חייב להיות חיובי
568 DocType: Warehouse PIN פִּין
569 DocType: Rename Tool Type of document to rename. סוג של מסמך כדי לשנות את השם.
581 apps/erpnext/erpnext/utilities/bot.py [{0}](#Form/Item/{0}) is out of stock [{0}] (טופס # / כתבה / {0}) אזל מהמלאי
582 DocType: Warranty Claim Warranty / AMC Status אחריות / מעמד AMC
583 apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.py apps/erpnext/erpnext/controllers/selling_controller.py Note: Item {0} entered multiple times הערה: פריט {0} נכנסה מספר פעמים
584 apps/erpnext/erpnext/accounts/doctype/tax_rule/tax_rule.py Enabling 'Use for Shopping Cart', as Shopping Cart is enabled and there should be at least one Tax Rule for Shopping Cart &#39;השתמש עבור סל קניות&#39; האפשור, כמו סל הקניות מופעל ולא צריך להיות לפחות כלל מס אחד עבור סל קניות
585 apps/erpnext/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py Closing Account {0} must be of type Liability / Equity סגירת חשבון {0} חייבת להיות אחריות / הון עצמי סוג
586 DocType: Attendance Leave Type סוג החופשה
587 DocType: Purchase Receipt Item Rate and Amount שיעור והסכום
613 apps/erpnext/erpnext/stock/report/stock_balance/stock_balance.py Balance Value ערך איזון
614 DocType: Lead Interested מעוניין
615 DocType: Leave Type DocType: Leave Ledger Entry Is Leave Without Pay האם חופשה ללא תשלום
616 apps/erpnext/erpnext/education/utils.py Student {0} - {1} appears Multiple times in row {2} & {3} סטודנט {0} - {1} מופיע מספר פעמים ברציפות {2} ו {3}
617 DocType: Email Campaign Scheduled מתוכנן
618 DocType: Tally Migration UOMs UOMs
619 DocType: Production Plan For Warehouse למחסן
646 DocType: Email Digest How frequently? באיזו תדירות?
647 DocType: Upload Attendance Get Template קבל תבנית
648 apps/erpnext/erpnext/hr/doctype/leave_allocation/leave_allocation.py apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py Total allocated leaves {0} cannot be less than already approved leaves {1} for the period Journal Entry {0} does not have account {1} or already matched against other voucher עלים כולל שהוקצו {0} לא יכולים להיות פחות מעלים שכבר אושרו {1} לתקופה היומן {0} אין חשבון {1} או שכבר מתאים נגד שובר אחר
apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py Journal Entry {0} does not have account {1} or already matched against other voucher היומן {0} אין חשבון {1} או שכבר מתאים נגד שובר אחר
649 apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py Removed items with no change in quantity or value. פריטים הוסרו ללא שינוי בכמות או ערך.
650 DocType: Work Order Use Multi-Level BOM השתמש Multi-Level BOM
651 DocType: Sales Invoice Shipping Address Name שם כתובת למשלוח
652 DocType: Customer Group Parent Customer Group קבוצת לקוחות הורה
653 DocType: GL Entry Company Name GL Entry שם חברה GL כניסה
DocType: GL Entry GL Entry GL כניסה
654 DocType: Asset Asset Name שם נכס
655 apps/erpnext/erpnext/setup/doctype/company/company.py Main ראשי
656 DocType: Sales Invoice In Words will be visible once you save the Sales Invoice. במילים יהיו גלוי ברגע שאתה לשמור את חשבונית המכירות.
663 Sales Partners Commission ועדת שותפי מכירות
664 DocType: Purchase Receipt Range טווח
665 apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py apps/erpnext/erpnext/utilities/user_progress.py Already completed Kg הושלם כבר קילוגרם
apps/erpnext/erpnext/utilities/user_progress.py Kg קילוגרם
666 DocType: Bank Reconciliation Include Reconciled Entries כוללים ערכים מפוייס
667 apps/erpnext/erpnext/hr/doctype/upload_attendance/upload_attendance.py Please select a csv file אנא בחר קובץ CSV
668 apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.py Please enter Planned Qty for Item {0} at row {1} נא להזין מתוכננת כמות לפריט {0} בשורת {1}
672 DocType: Sales Invoice Item References אזכור
673 DocType: Item Synced With Hub סונכרן עם רכזת
674 apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.py Sales Order {0} is not valid להזמין מכירות {0} אינו חוקי
675 apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py Warehouse not found in the system מחסן לא נמצא במערכת
676 apps/erpnext/erpnext/accounts/report/purchase_register/purchase_register.py Total Tax מס סה"כ
677 apps/erpnext/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py {0} payment entries can not be filtered by {1} לא יכולים להיות מסוננים {0} ערכי תשלום על ידי {1}
678 DocType: Period Closing Voucher Closing Account Head סגירת חשבון ראש
688 DocType: Purchase Taxes and Charges Consider Tax or Charge for שקול מס או תשלום עבור
689 DocType: Maintenance Visit Maintenance Visit תחזוקה בקר
690 apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py apps/erpnext/erpnext/config/selling.py Stopped Production Order cannot be cancelled, Unstop it first to cancel Quotes to Leads or Customers. הזמנת ייצור הפסיק אינה ניתנת לביטול, מגופתו הראשונה לביטול ציטוטים להובלות או לקוחות.
apps/erpnext/erpnext/config/selling.py Quotes to Leads or Customers. ציטוטים להובלות או לקוחות.
691 DocType: Lead Do Not Contact אל תצור קשר
692 DocType: BOM Manage cost of operations ניהול עלות של פעולות
693 DocType: BOM Explosion Item Qty Consumed Per Unit כמות נצרכת ליחידה
716 DocType: Email Digest Open Notifications הודעות פתוחות
717 apps/erpnext/erpnext/selling/doctype/installation_note/installation_note.js From Delivery Note מתעודת משלוח
718 apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.py Invoiced Amount סכום חשבונית
719 DocType: Program Enrollment Fee Program Enrollment Fee הרשמה לתכנית דמים
720 apps/erpnext/erpnext/setup/page/welcome_to_erpnext/welcome_to_erpnext.html To get the best out of ERPNext, we recommend that you take some time and watch these help videos. כדי לקבל את הטוב ביותר של ERPNext, אנו ממליצים שתיקחו קצת זמן ולצפות בקטעי וידאו עזרה אלה.
721 DocType: Student Group Creation Tool Student Group Creation Tool כלי יצירת סטודנט קבוצה
722 DocType: HR Settings Payroll Settings הגדרות שכר
745 apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py Research מחקר
746 apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py Consumable מתכלה
747 apps/erpnext/erpnext/assets/doctype/asset/asset.py DocType: Account Please cancel Purchase Invoice {0} first Profit and Loss אנא בטל חשבונית רכישת {0} ראשון רווח והפסד
DocType: Account Profit and Loss רווח והפסד
748 DocType: Purchase Invoice Item Rate שיעור
749 apps/erpnext/erpnext/utilities/user_progress.py Meter מטר
750 apps/erpnext/erpnext/manufacturing/doctype/workstation/workstation.py Workstation is closed on the following dates as per Holiday List: {0} תחנת עבודה סגורה בתאריכים הבאים בהתאם לרשימת Holiday: {0}
881 DocType: Cheque Print Template Scanned Cheque המחאה סרוקה
882 apps/erpnext/erpnext/setup/doctype/customer_group/customer_group.js This is a root customer group and cannot be edited. מדובר בקבוצת לקוחות שורש ולא ניתן לערוך.
883 apps/erpnext/erpnext/accounts/doctype/payment_request/payment_request.py DocType: Payment Term Payment Request already exists {0} Credit Days בקשת תשלום כבר קיימת {0} ימי אשראי
DocType: Payment Term Credit Days ימי אשראי
884 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.py Party is mandatory המפלגה היא חובה
885 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js Re-open Re-פתוח
886 apps/erpnext/erpnext/accounts/page/pos/pos.js Select or add new customer בחר או הוסף לקוח חדש
910 DocType: Stock Settings Raise Material Request when stock reaches re-order level להעלות בקשת חומר כאשר המלאי מגיע לרמה מחדש כדי
911 DocType: Asset Journal Entry for Scrap תנועת יומן עבור גרוטאות
912 DocType: Delivery Stop DocType: Call Log Contact Name שם איש קשר
913 apps/erpnext/erpnext/education/doctype/student_group_creation_tool/student_group_creation_tool.py No Student Groups created. אין קבוצות סטודנטים נוצרו.
914 apps/erpnext/erpnext/controllers/sales_and_purchase_return.py Posting timestamp must be after {0} חותמת זמן פרסום חייבת להיות אחרי {0}
915 apps/erpnext/erpnext/accounts/report/trial_balance/trial_balance.py Fiscal Year {0} does not exist שנת הכספים {0} לא קיים
916 DocType: Landed Cost Item Receipt Document Type סוג מסמך קבלה
930 DocType: Supplier Is Frozen האם קפוא
931 Reqd By Date Reqd לפי תאריך
932 apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py apps/erpnext/erpnext/manufacturing/doctype/work_order/work_order.py Work-in-Progress Warehouse is required before Submit עבודה ב-התקדמות המחסן נדרש לפני הגשה
933 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py Please select correct account אנא בחר חשבון נכון
934 DocType: Share Transfer Transfer העברה
935 apps/erpnext/erpnext/controllers/sales_and_purchase_return.py Item {0} has already been returned פריט {0} הוחזר כבר
936 DocType: Journal Entry Account Credit in Company Currency אשראי במטבע החברה
994 apps/erpnext/erpnext/config/manufacturing.py Bill of Materials (BOM) הצעת החוק של חומרים (BOM)
995 DocType: Shipping Rule Country Shipping Rule Country מדינה כלל משלוח
996 DocType: Setup Progress Action DocType: Leave Block List Date Domains Block Date תחומים תאריך בלוק
DocType: Leave Block List Date Block Date תאריך בלוק
997 apps/erpnext/erpnext/utilities/user_progress.py Litre לִיטר
998 DocType: Payment Reconciliation Payment Allocated amount סכום שהוקצה
999 DocType: Material Request Plan Item Material Issue נושא מהותי
1104 DocType: Loyalty Point Entry Purchase Amount סכום הרכישה
1105 apps/erpnext/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py apps/erpnext/erpnext/setup/doctype/sales_person/sales_person.js Total Outstanding Amt This is a root sales person and cannot be edited. סה"כ מצטיין Amt זה איש מכירות שורש ולא ניתן לערוך.
1106 apps/erpnext/erpnext/setup/doctype/sales_person/sales_person.js apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.py This is a root sales person and cannot be edited. Currency for {0} must be {1} זה איש מכירות שורש ולא ניתן לערוך. מטבע עבור {0} חייב להיות {1}
apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.py Currency for {0} must be {1} מטבע עבור {0} חייב להיות {1}
1107 DocType: Leave Control Panel Please select Carry Forward if you also want to include previous fiscal year's balance leaves to this fiscal year אנא בחר לשאת קדימה אם אתה גם רוצה לכלול האיזון של שנת כספים הקודמת משאיר לשנה הפיסקלית
1108 DocType: Item Website Specification Table for Item that will be shown in Web Site שולחן לפריט שיוצג באתר אינטרנט
1109 DocType: Student Guardian Others אחרים
1283 DocType: Sales Order Fully Billed שחויב במלואו
1284 DocType: Production Plan Item material_request_item material_request_item
1285 DocType: Purchase Invoice Unpaid שלא שולם
1286 apps/erpnext/erpnext/config/accounting.py Define budget for a financial year. גדר תקציב עבור שנת כספים.
1287 DocType: Stock Reconciliation Item Stock Reconciliation Item פריט במלאי פיוס
1288 DocType: Item Attribute Attribute Name שם תכונה
1289 apps/erpnext/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js Please select Company and Party Type first אנא בחר סוג החברה והמפלגה ראשון
1518 apps/erpnext/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py apps/erpnext/erpnext/stock/get_item_details.py From Date must be before To Date Item Price updated for {0} in Price List {1} מתאריך חייב להיות לפני תאריך כדי מחיר הפריט עודכן עבור {0} ב מחירון {1}
1519 apps/erpnext/erpnext/stock/get_item_details.py DocType: Salary Component Item Price updated for {0} in Price List {1} Deduction מחיר הפריט עודכן עבור {0} ב מחירון {1} ניכוי
1520 DocType: Salary Component apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.js Deduction Item Name ניכוי שם פריט
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.js Item Name שם פריט
1521 apps/erpnext/erpnext/setup/setup_wizard/data/industry_type.py Securities & Commodity Exchanges ניירות ערך ובורסות סחורות
1522 DocType: Sales Taxes and Charges Template 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. #### Note The 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. #### Description of Columns 1. Calculation Type: - This can be on **Net Total** (that is the sum of basic amount). - **On Previous Row Total / Amount** (for cumulative taxes or charges). If you select this option, the tax will be applied as a percentage of the previous row (in the tax table) amount or total. - **Actual** (as mentioned). 2. Account Head: The Account ledger under which this tax will be booked 3. Cost Center: If the tax / charge is an income (like shipping) or expense it needs to be booked against a Cost Center. 4. Description: Description of the tax (that will be printed in invoices / quotes). 5. Rate: Tax rate. 6. Amount: Tax amount. 7. Total: Cumulative total to this point. 8. Enter Row: If based on "Previous Row Total" you can select the row number which will be taken as a base for this calculation (default is the previous row). 9. Is this Tax included in Basic Rate?: If you check this, it means that this tax will not be shown below the item table, but will be included in the Basic Rate in your main item table. This is useful where you want give a flat price (inclusive of all taxes) price to customers. תבנית מס סטנדרטית שיכול להיות מיושמת על כל עסקות המכירה. תבנית זו יכולה להכיל רשימה של ראשי מס וגם ראשי חשבון / הכנסות אחרות כמו "משלוח", "ביטוח", "טיפול ב" וכו '#### הערה שיעור המס שאתה מגדיר כאן יהיה שיעור המס האחיד לכל ** פריטים **. אם יש פריטים ** ** שיש לי שיעורים שונים, הם חייבים להיות הוסיפו במס הפריט ** ** שולחן ב** ** הפריט השני. #### תיאור של עמודות סוג חישוב 1.: - זה יכול להיות בסך הכל ** ** נטו (כלומר הסכום של סכום בסיסי). - ** בסך הכל / סכום השורה הקודמת ** (למסים או חיובים מצטברים). אם תבחר באפשרות זו, המס יחול כאחוז מהשורה הקודמת (בטבלת המס) הסכום כולל או. - ** ** בפועל (כאמור). 2. ראש חשבון: פנקס החשבון שתחתיו מס זה יהיה להזמין מרכז עלות 3.: אם המס / תשלום הוא הכנסה (כמו משלוח) או הוצאה שיש להזמין נגד מרכז עלות. 4. תיאור: תיאור של המס (שיודפס בחשבוניות / ציטוטים). 5. שיעור: שיעור מס. 6. סכום: סכום מס. 7. סך הכל: סך הכל מצטבר לנקודה זו. 8. הזן Row: אם המבוסס על "שורה הקודמת סה"כ" אתה יכול לבחור את מספר השורה שיילקח כבסיס לחישוב זה (ברירת מחדל היא השורה הקודמת). 9. האם מס זה כלול ביסוד ערי ?: אם תקיש זה, זה אומר שזה מס לא יוצג מתחת לטבלת הפריט, אבל יהיה כלול במחיר בסיסי בשולחן הפריט העיקרי שלך. זה שימושי שבו אתה רוצה לתת מחיר דירה (כולל כל המסים) מחיר ללקוחות.
1523 Lead Id זיהוי ליד
1710 DocType: Stock Ledger Entry Stock Ledger Entry מניית דג'ר כניסה
1711 DocType: Payment Entry Paid Amount סכום ששולם
1712 apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py Please specify a valid 'From Case No.' נא לציין חוקי 'מתיק מס' '
1713 apps/erpnext/erpnext/hr/doctype/job_opening/job_opening.py Jobs מקומות תעסוקה
1714 apps/erpnext/erpnext/controllers/accounts_controller.py Row #{0}: Asset {1} cannot be submitted, it is already {2} # שורה {0}: Asset {1} לא ניתן להגיש, זה כבר {2}
1715 apps/erpnext/erpnext/setup/doctype/email_digest/templates/default.html Pending Activities פעילויות ממתינות ל
1716 Sales Browser דפדפן מכירות
1809 apps/erpnext/erpnext/stock/report/bom_search/bom_search.js DocType: Work Order Item 5 Manufactured Qty פריט 5 כמות שיוצרה
1810 DocType: Work Order apps/erpnext/erpnext/accounts/general_ledger.py Manufactured Qty Incorrect number of General Ledger Entries found. You might have selected a wrong Account in the transaction. כמות שיוצרה מספר שגוי של כלליים לדג'ר ערכים מצא. ייתכן שנבחרת חשבון הלא נכון בעסקה.
1811 apps/erpnext/erpnext/accounts/general_ledger.py DocType: Request for Quotation Incorrect number of General Ledger Entries found. You might have selected a wrong Account in the transaction. For individual supplier מספר שגוי של כלליים לדג'ר ערכים מצא. ייתכן שנבחרת חשבון הלא נכון בעסקה. עבור ספק פרט
DocType: Request for Quotation For individual supplier עבור ספק פרט
1812 DocType: Work Order Operation Updated via 'Time Log' עדכון באמצעות 'יומן זמן "
1813 DocType: Journal Entry Account Purchase Order הזמנת רכש
1814 apps/erpnext/erpnext/assets/doctype/asset/asset.py Number of Depreciations Booked cannot be greater than Total Number of Depreciations מספר הפחת הוזמן לא יכול להיות גדול ממספרם הכולל של פחת
1874 DocType: Work Order Operation DocType: Item Variant Attribute Work In Progress Item Variant Attribute עבודה בתהליך תכונה Variant פריט
1875 DocType: Item Variant Attribute DocType: Stock Settings Item Variant Attribute Automatically Set Serial Nos based on FIFO תכונה Variant פריט הגדר סידורי מס באופן אוטומטי על בסיס FIFO
1876 DocType: Stock Settings apps/erpnext/erpnext/controllers/trends.py Automatically Set Serial Nos based on FIFO Total(Qty) הגדר סידורי מס באופן אוטומטי על בסיס FIFO סה"כ (כמות)
1877 apps/erpnext/erpnext/controllers/trends.py apps/erpnext/erpnext/selling/doctype/campaign/campaign.js Total(Qty) View Leads סה"כ (כמות) צפייה בלידים
1878 apps/erpnext/erpnext/selling/doctype/campaign/campaign.js apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.js View Leads Ordered Qty: Quantity ordered for purchase, but not received. צפייה בלידים כמות הורה: כמות הורה לרכישה, אך לא קיבלה.
1879 apps/erpnext/erpnext/manufacturing/doctype/production_plan/production_plan.js DocType: Student Attendance Tool Ordered Qty: Quantity ordered for purchase, but not received. Students HTML כמות הורה: כמות הורה לרכישה, אך לא קיבלה. HTML סטודנטים
1880 DocType: Student Attendance Tool apps/erpnext/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py Students HTML Please select Incharge Person's name HTML סטודנטים אנא בחר את שמו של אדם Incharge
1888 apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py From Currency and To Currency cannot be same Cash In Hand ממטבע למטבע ואינו יכול להיות זהה מזומן ביד
1889 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py Cash In Hand UOM coversion factor required for UOM: {0} in Item: {1} מזומן ביד גורם coversion של אוני 'מישגן נדרש לאונים' מישגן: {0} בפריט: {1}
1890 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js UOM coversion factor required for UOM: {0} in Item: {1} Accounts Receivable Summary גורם coversion של אוני 'מישגן נדרש לאונים' מישגן: {0} בפריט: {1} חשבונות חייבים סיכום
apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.js Accounts Receivable Summary חשבונות חייבים סיכום
1891 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py {0} is not a stock Item {0} הוא לא פריט מלאי
1892 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.py Party Type is mandatory סוג המפלגה הוא חובה
1893 DocType: Purchase Invoice Party Account Currency מפלגת חשבון מטבע
2051 DocType: Warehouse DocType: Blanket Order Warehouse Detail Order Type פרט מחסן סוג להזמין
2052 DocType: Blanket Order apps/erpnext/erpnext/accounts/report/trial_balance/trial_balance.py Order Type Fiscal Year {0} is required סוג להזמין שנת כספים {0} נדרש
2053 apps/erpnext/erpnext/accounts/report/trial_balance/trial_balance.py DocType: Pricing Rule Fiscal Year {0} is required Pricing Rule שנת כספים {0} נדרש כלל תמחור
DocType: Pricing Rule Pricing Rule כלל תמחור
2054 apps/erpnext/erpnext/controllers/selling_controller.py To {0} | {1} {2} כדי {0} | {1} {2}
2055 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.js Set as Lost קבע כאבוד
2056 DocType: Student Applicant Approved אושר
2117 apps/erpnext/erpnext/setup/setup_wizard/operations/install_fixtures.py DocType: BOM Researcher Website Specifications חוקר מפרט אתר
2118 DocType: BOM DocType: Delivery Note Website Specifications Is Return מפרט אתר האם חזרה
2119 DocType: Delivery Note apps/erpnext/erpnext/config/buying.py Is Return Items and Pricing האם חזרה פריטים ותמחור
apps/erpnext/erpnext/config/buying.py Items and Pricing פריטים ותמחור
2120 apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py Lead Time Days להוביל ימי זמן
2121 apps/erpnext/erpnext/buying/report/procurement_tracker/procurement_tracker.py Material Request No בקשת חומר לא
2122 apps/erpnext/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py Reserved Qty שמורות כמות
2240 DocType: Stock Ledger Entry Outgoing Rate דרג יוצא
2241 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 אם פריט הנו נגזר של פריט נוסף לאחר מכן תיאור, תמונה, תמחור, וכו 'ייקבעו מסים מהתבנית אלא אם צוין במפורש
2242 DocType: Delivery Note Installation Status מצב התקנה
2243 DocType: Account Debit חיוב
2244 DocType: Purchase Invoice Print Language שפת דפס
2245 DocType: Student Group Set 0 for no limit גדר 0 עבור שום מגבלה
2246 DocType: Expense Claim Total Sanctioned Amount הסכום אושר סה"כ
2254 DocType: Supplier Supplier Type סוג ספק
2255 DocType: Bank Reconciliation Detail Bank Reconciliation Detail פרט בנק פיוס
2256 DocType: Purchase Receipt Add / Edit Taxes and Charges להוסיף מסים / עריכה וחיובים
2257 apps/erpnext/erpnext/utilities/user_progress.py Pair זוג
2258 DocType: Student B- B-
2259 apps/erpnext/erpnext/setup/setup_wizard/data/industry_type.py Venture Capital הון סיכון
2260 apps/erpnext/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py Row {0}: Allocated amount {1} must be less than or equals to Payment Entry amount {2} שורת {0}: סכום שהוקצה {1} חייב להיות קטן או שווה לסכום קליט הוצאות {2}
2309 DocType: Stock Entry Total Additional Costs עלויות נוספות סה&quot;כ
2310 DocType: Sales Person Select company name first. שם חברה בחר ראשון.
2311 apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py Accounting Entry for Stock כניסה לחשבונאות במלאי
2312 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py You are not authorized to approve leaves on Block Dates אתה לא מורשה לאשר עלים בתאריכי הבלוק
2313 apps/erpnext/erpnext/accounts/report/inactive_sales_items/inactive_sales_items.js Days Since Last Order ימים מאז הזמנה אחרונה
2314 DocType: Work Order Total Operating Cost עלות הפעלה סה"כ
2315 DocType: Journal Entry Credit Note כְּתַב זְכוּיוֹת
2354 apps/erpnext/erpnext/education/doctype/student_group_creation_tool/student_group_creation_tool.js Create Student Groups יצירת קבוצות סטודנטים
2355 apps/erpnext/erpnext/accounts/doctype/pos_profile/pos_profile.py {0} does not belong to Company {1} {0} אינו שייך לחברת {1}
2356 DocType: Task Working עבודה
2357 apps/erpnext/erpnext/controllers/accounts_controller.py Row #{0}: Asset {1} does not linked to Item {2} # שורה {0}: Asset {1} אינו קשור פריט {2}
2358 apps/erpnext/erpnext/accounts/report/general_ledger/general_ledger.html Statement of Account הצהרה של חשבון
2359 DocType: Delivery Note In Words will be visible once you save the Delivery Note. במילים יהיו גלוי לאחר שתשמרו את תעודת המשלוח.
2360 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.js Make הפוך
2475 DocType: Maintenance Schedule Detail DocType: Selling Settings Actual Date Selling Settings תאריך בפועל מכירת הגדרות
2476 DocType: Selling Settings apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py Selling Settings No Items to pack מכירת הגדרות אין פריטים לארוז
2477 apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py DocType: Item No Items to pack Total Projected Qty אין פריטים לארוז כללית המתוכננת כמות
2478 DocType: Item apps/erpnext/erpnext/education/utils.py Total Projected Qty This {0} conflicts with {1} for {2} {3} כללית המתוכננת כמות {0} זו מתנגשת עם {1} עבור {2} {3}
2479 apps/erpnext/erpnext/education/utils.py DocType: Account This {0} conflicts with {1} for {2} {3} Expenses Included In Valuation {0} זו מתנגשת עם {1} עבור {2} {3} הוצאות שנכללו בהערכת שווי
2480 DocType: Account Expenses Included In Valuation Liability הוצאות שנכללו בהערכת שווי אחריות
2481 DocType: Account DocType: Purchase Taxes and Charges Liability Valuation and Total אחריות הערכת שווי וסה"כ
2509 DocType: Sales Invoice apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py Rate at which Customer Currency is converted to customer's base currency Difference Account must be a Asset/Liability type account, since this Stock Reconciliation is an Opening Entry קצב שבו מטבע לקוחות מומר למטבע הבסיס של הלקוח חשבון הבדל חייב להיות חשבון סוג הנכס / התחייבות, מאז מניית הפיוס הזה הוא כניסת פתיחה
2510 apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py DocType: Item Difference Account must be a Asset/Liability type account, since this Stock Reconciliation is an Opening Entry Publish in Hub חשבון הבדל חייב להיות חשבון סוג הנכס / התחייבות, מאז מניית הפיוס הזה הוא כניסת פתיחה פרסם בHub
2511 DocType: Item DocType: Room Publish in Hub Room Name פרסם בHub שם חדר
DocType: Room Room Name שם חדר
2512 DocType: Workstation Electricity Cost עלות חשמל
2513 DocType: Sales Partner Sales Partner Name שם שותף מכירות
2514 apps/erpnext/erpnext/config/settings.py Letter Heads for print templates. ראשי מכתב לתבניות הדפסה.
2630 Payment Period Based On Invoice Date תקופת תשלום מבוסס בתאריך החשבונית
2631 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.js Debit Account חשבון חיוב
2632 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py Serial No {0} has already been received מספר סידורי {0} כבר קיבל
2633 To Produce כדי לייצר
2634 DocType: Item Price Multiple Item prices. מחירי פריט מרובים.
2635 apps/erpnext/erpnext/config/manufacturing.py Production הפקה
2636 DocType: Daily Work Summary Group Holiday List רשימת החג
2664 DocType: Customer Mention if non-standard receivable account להזכיר אם חשבון חייבים שאינם סטנדרטי
2665 DocType: Sales Person Parent Sales Person איש מכירות הורה
2666 apps/erpnext/erpnext/accounts/report/trial_balance/trial_balance.js Period Closing Entry כניסת סגירת תקופה
2667 DocType: Purchase Invoice Item Quality Inspection איכות פיקוח
2668 apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js Paid Amount cannot be greater than total negative outstanding amount {0} הסכום ששולם לא יכול להיות גדול מ מלוא יתרת חוב שלילי {0}
2669 DocType: Bank Transaction Reference Number מספר ההתייחסות
2670 DocType: Serial No Creation Date תאריך יצירה
2902 apps/erpnext/erpnext/stock/doctype/item/item.js DocType: Company Item Variant {0} already exists with same attributes For Reference Only. פריט Variant {0} כבר קיים עימן תכונות לעיון בלבד.
2903 DocType: Project DocType: Packing Slip Gross Margin % From Package No. % שיעור רווח גולמי ממס החבילה
2904 DocType: Company apps/erpnext/erpnext/templates/generators/item/item_configure.js For Reference Only. Add to Cart לעיון בלבד. הוסף לסל
DocType: Packing Slip From Package No. ממס החבילה
2905 apps/erpnext/erpnext/templates/generators/item/item_configure.js DocType: Company Add to Cart Asset Depreciation Cost Center הוסף לסל מרכז עלות פחת נכסים
2906 DocType: Company apps/erpnext/erpnext/setup/doctype/email_digest/email_digest.py Asset Depreciation Cost Center Pending activities for today מרכז עלות פחת נכסים פעילויות ממתינים להיום
2907 apps/erpnext/erpnext/setup/doctype/email_digest/email_digest.py DocType: Leave Application Pending activities for today Total Leave Days פעילויות ממתינים להיום ימי חופשה סה"כ
2912 DocType: Purchase Order Item DocType: Activity Cost Supplier Part Number Projects ספק מק"ט פרויקטים
2913 DocType: Activity Cost DocType: Item Group Projects Check this if you want to show in website פרויקטים לבדוק את זה אם אתה רוצה להראות באתר
2914 DocType: Item Group DocType: Attendance Check this if you want to show in website Working Hours לבדוק את זה אם אתה רוצה להראות באתר שעות עבודה
DocType: Attendance Working Hours שעות עבודה
2915 DocType: Sales Invoice Item Available Batch Qty at Warehouse אצווה זמין כמות במחסן
2916 DocType: Supplier Scorecard Scoring Standing Employee עובד
2917 apps/erpnext/erpnext/stock/utils.py Warehouse {0} does not belong to company {1} מחסן {0} אינו שייך לחברת {1}
3002 DocType: Bank Statement Transaction Payment Item apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js Invoices Material to Supplier חשבוניות חומר לספקים
3003 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js apps/erpnext/erpnext/config/help.py Material to Supplier Navigating חומר לספקים ניווט
3004 apps/erpnext/erpnext/config/help.py DocType: Maintenance Visit Navigating Maintenance Time ניווט תחזוקת זמן
DocType: Maintenance Visit Maintenance Time תחזוקת זמן
3005 apps/erpnext/erpnext/controllers/sales_and_purchase_return.py Row # {0}: Batch No must be same as {1} {2} # השורה {0}: אצווה לא חייב להיות זהה {1} {2}
3006 DocType: Purchase Invoice Additional Discount הנחה נוסף
3007 apps/erpnext/erpnext/accounts/doctype/cheque_print_template/cheque_print_template.js Update Print Format פורמט הדפסת עדכון
3233 DocType: Expense Claim DocType: Sales Invoice Approval Status Against Income Account סטטוס אישור נגד חשבון הכנסות
3234 DocType: Quality Inspection DocType: Expense Claim Readings Approval Status קריאות סטטוס אישור
3235 DocType: Lead DocType: Quality Inspection Channel Partner Readings Channel Partner קריאות
3236 DocType: Lead Channel Partner Channel Partner
3237 DocType: Item Attribute Value Item Attribute Value פריט תכונה ערך
3238 DocType: Employee Resignation Letter Date תאריך מכתב התפטרות
3239 apps/erpnext/erpnext/stock/doctype/item/item.py Unit of Measure {0} has been entered more than once in Conversion Factor Table יחידת מידת {0} כבר נכנסה יותר מפעם אחת בהמרת פקטור טבלה
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3343
3344
3345
3346
3347
3348
3349

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More