Merge pull request #2151 from ankitjavalkarwork/fix1999
Allow renaming for Sales Partner Doctype
diff --git a/erpnext/accounts/doctype/c_form/c_form.json b/erpnext/accounts/doctype/c_form/c_form.json
index ca0ac3a..0fa6635 100644
--- a/erpnext/accounts/doctype/c_form/c_form.json
+++ b/erpnext/accounts/doctype/c_form/c_form.json
@@ -1,181 +1,182 @@
{
- "autoname": "naming_series:",
- "creation": "2013-03-07 11:55:06",
- "docstatus": 0,
- "doctype": "DocType",
+ "allow_import": 1,
+ "autoname": "naming_series:",
+ "creation": "2013-03-07 11:55:06",
+ "docstatus": 0,
+ "doctype": "DocType",
"fields": [
{
- "fieldname": "column_break0",
- "fieldtype": "Column Break",
- "permlevel": 0,
- "print_width": "50%",
- "read_only": 0,
+ "fieldname": "column_break0",
+ "fieldtype": "Column Break",
+ "permlevel": 0,
+ "print_width": "50%",
+ "read_only": 0,
"width": "50%"
- },
+ },
{
- "fieldname": "naming_series",
- "fieldtype": "Select",
- "label": "Series",
- "options": "C-FORM-",
- "permlevel": 0,
- "read_only": 0,
+ "fieldname": "naming_series",
+ "fieldtype": "Select",
+ "label": "Series",
+ "options": "C-FORM-",
+ "permlevel": 0,
+ "read_only": 0,
"reqd": 1
- },
+ },
{
- "fieldname": "c_form_no",
- "fieldtype": "Data",
- "in_list_view": 1,
- "label": "C-Form No",
- "permlevel": 0,
- "read_only": 0,
+ "fieldname": "c_form_no",
+ "fieldtype": "Data",
+ "in_list_view": 1,
+ "label": "C-Form No",
+ "permlevel": 0,
+ "read_only": 0,
"reqd": 1
- },
+ },
{
- "fieldname": "received_date",
- "fieldtype": "Date",
- "in_list_view": 1,
- "label": "Received Date",
- "permlevel": 0,
- "read_only": 0,
+ "fieldname": "received_date",
+ "fieldtype": "Date",
+ "in_list_view": 1,
+ "label": "Received Date",
+ "permlevel": 0,
+ "read_only": 0,
"reqd": 1
- },
+ },
{
- "fieldname": "customer",
- "fieldtype": "Link",
- "in_list_view": 1,
- "label": "Customer",
- "options": "Customer",
- "permlevel": 0,
- "read_only": 0,
+ "fieldname": "customer",
+ "fieldtype": "Link",
+ "in_list_view": 1,
+ "label": "Customer",
+ "options": "Customer",
+ "permlevel": 0,
+ "read_only": 0,
"reqd": 1
- },
+ },
{
- "fieldname": "column_break1",
- "fieldtype": "Column Break",
- "permlevel": 0,
- "print_width": "50%",
- "read_only": 0,
+ "fieldname": "column_break1",
+ "fieldtype": "Column Break",
+ "permlevel": 0,
+ "print_width": "50%",
+ "read_only": 0,
"width": "50%"
- },
+ },
{
- "fieldname": "company",
- "fieldtype": "Link",
- "label": "Company",
- "options": "Company",
- "permlevel": 0,
+ "fieldname": "company",
+ "fieldtype": "Link",
+ "label": "Company",
+ "options": "Company",
+ "permlevel": 0,
"read_only": 0
- },
+ },
{
- "fieldname": "fiscal_year",
- "fieldtype": "Link",
- "label": "Fiscal Year",
- "options": "Fiscal Year",
- "permlevel": 0,
- "read_only": 0,
+ "fieldname": "fiscal_year",
+ "fieldtype": "Link",
+ "label": "Fiscal Year",
+ "options": "Fiscal Year",
+ "permlevel": 0,
+ "read_only": 0,
"reqd": 1
- },
+ },
{
- "fieldname": "quarter",
- "fieldtype": "Select",
- "label": "Quarter",
- "options": "\nI\nII\nIII\nIV",
- "permlevel": 0,
+ "fieldname": "quarter",
+ "fieldtype": "Select",
+ "label": "Quarter",
+ "options": "\nI\nII\nIII\nIV",
+ "permlevel": 0,
"read_only": 0
- },
+ },
{
- "fieldname": "total_amount",
- "fieldtype": "Currency",
- "label": "Total Amount",
- "options": "Company:company:default_currency",
- "permlevel": 0,
- "read_only": 0,
+ "fieldname": "total_amount",
+ "fieldtype": "Currency",
+ "label": "Total Amount",
+ "options": "Company:company:default_currency",
+ "permlevel": 0,
+ "read_only": 0,
"reqd": 1
- },
+ },
{
- "fieldname": "state",
- "fieldtype": "Data",
- "label": "State",
- "permlevel": 0,
- "read_only": 0,
+ "fieldname": "state",
+ "fieldtype": "Data",
+ "label": "State",
+ "permlevel": 0,
+ "read_only": 0,
"reqd": 1
- },
+ },
{
- "fieldname": "section_break0",
- "fieldtype": "Section Break",
- "permlevel": 0,
+ "fieldname": "section_break0",
+ "fieldtype": "Section Break",
+ "permlevel": 0,
"read_only": 0
- },
+ },
{
- "fieldname": "invoice_details",
- "fieldtype": "Table",
- "label": "Invoice Details",
- "options": "C-Form Invoice Detail",
- "permlevel": 0,
+ "fieldname": "invoice_details",
+ "fieldtype": "Table",
+ "label": "Invoice Details",
+ "options": "C-Form Invoice Detail",
+ "permlevel": 0,
"read_only": 0
- },
+ },
{
- "fieldname": "total_invoiced_amount",
- "fieldtype": "Currency",
- "label": "Total Invoiced Amount",
- "options": "Company:company:default_currency",
- "permlevel": 0,
- "print_hide": 0,
+ "fieldname": "total_invoiced_amount",
+ "fieldtype": "Currency",
+ "label": "Total Invoiced Amount",
+ "options": "Company:company:default_currency",
+ "permlevel": 0,
+ "print_hide": 0,
"read_only": 1
- },
+ },
{
- "fieldname": "amended_from",
- "fieldtype": "Link",
- "ignore_user_permissions": 1,
- "label": "Amended From",
- "no_copy": 1,
- "options": "C-Form",
- "permlevel": 0,
- "print_hide": 1,
+ "fieldname": "amended_from",
+ "fieldtype": "Link",
+ "ignore_user_permissions": 1,
+ "label": "Amended From",
+ "no_copy": 1,
+ "options": "C-Form",
+ "permlevel": 0,
+ "print_hide": 1,
"read_only": 1
}
- ],
- "icon": "icon-file-text",
- "idx": 1,
- "is_submittable": 1,
- "max_attachments": 3,
- "modified": "2014-05-27 03:49:08.272135",
- "modified_by": "Administrator",
- "module": "Accounts",
- "name": "C-Form",
- "owner": "Administrator",
+ ],
+ "icon": "icon-file-text",
+ "idx": 1,
+ "is_submittable": 1,
+ "max_attachments": 3,
+ "modified": "2014-09-05 12:58:43.333698",
+ "modified_by": "Administrator",
+ "module": "Accounts",
+ "name": "C-Form",
+ "owner": "Administrator",
"permissions": [
{
- "apply_user_permissions": 1,
- "create": 1,
- "email": 1,
- "permlevel": 0,
- "print": 1,
- "read": 1,
- "report": 1,
- "role": "Accounts User",
- "submit": 0,
+ "apply_user_permissions": 1,
+ "create": 1,
+ "email": 1,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Accounts User",
+ "submit": 0,
"write": 1
- },
+ },
{
- "create": 1,
- "email": 1,
- "permlevel": 0,
- "print": 1,
- "read": 1,
- "report": 1,
- "role": "Accounts Manager",
- "submit": 0,
+ "create": 1,
+ "email": 1,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Accounts Manager",
+ "submit": 0,
"write": 1
- },
+ },
{
- "amend": 0,
- "cancel": 0,
- "create": 0,
- "permlevel": 1,
- "read": 1,
- "report": 1,
- "role": "All",
+ "amend": 0,
+ "cancel": 0,
+ "create": 0,
+ "permlevel": 1,
+ "read": 1,
+ "report": 1,
+ "role": "All",
"submit": 0
}
]
-}
+}
\ No newline at end of file
diff --git a/erpnext/controllers/recurring_document.py b/erpnext/controllers/recurring_document.py
index 729c6f7..c7163ae 100644
--- a/erpnext/controllers/recurring_document.py
+++ b/erpnext/controllers/recurring_document.py
@@ -2,14 +2,9 @@
import frappe
import frappe.utils
import frappe.defaults
-
-from frappe.utils import add_days, cint, cstr, date_diff, flt, getdate, nowdate, \
- get_first_day, get_last_day, comma_and
+from frappe.utils import cint, cstr, getdate, nowdate, get_first_day, get_last_day
from frappe.model.naming import make_autoname
-
from frappe import _, msgprint, throw
-from erpnext.accounts.party import get_party_account, get_due_date, get_party_details
-from frappe.model.mapper import get_mapped_doc
month_map = {'Monthly': 1, 'Quarterly': 3, 'Half-yearly': 6, 'Yearly': 12}
@@ -51,7 +46,7 @@
frappe.db.begin()
frappe.db.sql("update `tab%s` \
- set is_recurring = 0 where name = %s" % (doctype, '%s'),
+ set is_recurring = 0 where name = %s" % (doctype, '%s'),
(ref_document))
notify_errors(ref_document, doctype, ref_wrapper.customer, ref_wrapper.owner)
frappe.db.commit()
@@ -93,12 +88,12 @@
if ref_wrapper.doctype == "Sales Order":
new_document.update({
- "delivery_date": get_next_date(ref_wrapper.delivery_date, mcount,
+ "delivery_date": get_next_date(ref_wrapper.delivery_date, mcount,
cint(ref_wrapper.repeat_on_day_of_month))
})
new_document.submit()
-
+
return new_document
def get_next_date(dt, mcount, day=None):
@@ -187,11 +182,11 @@
def set_next_date(doc, posting_date):
""" Set next date on which recurring document will be created"""
-
+
if not doc.repeat_on_day_of_month:
msgprint(_("Please enter 'Repeat on Day of Month' field value"), raise_exception=1)
- next_date = get_next_date(posting_date, month_map[doc.recurring_type],
+ next_date = get_next_date(posting_date, month_map[doc.recurring_type],
cint(doc.repeat_on_day_of_month))
frappe.db.set(doc, 'next_date', next_date)
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.js b/erpnext/hr/doctype/expense_claim/expense_claim.js
index 7098445..a4ba2eb 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.js
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.js
@@ -80,7 +80,7 @@
cur_frm.cscript.set_help(doc);
if(!doc.__islocal) {
- cur_frm.toggle_enable("exp_approver", (doc.owner==user && doc.approval_status=="Draft"));
+ cur_frm.toggle_enable("exp_approver", doc.approval_status=="Draft");
cur_frm.toggle_enable("approval_status", (doc.exp_approver==user && doc.docstatus==0));
if(!doc.__islocal && user!=doc.exp_approver)
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.py b/erpnext/hr/doctype/expense_claim/expense_claim.py
index fda3cf6..560ee02 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.py
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.py
@@ -4,13 +4,17 @@
from __future__ import unicode_literals
import frappe
from frappe import _
+from frappe.utils import get_fullname
from frappe.model.document import Document
from erpnext.hr.utils import set_employee_name
+class InvalidExpenseApproverError(frappe.ValidationError): pass
+
class ExpenseClaim(Document):
def validate(self):
self.validate_fiscal_year()
self.validate_exp_details()
+ self.validate_expense_approver()
set_employee_name(self)
def on_submit(self):
@@ -24,3 +28,8 @@
def validate_exp_details(self):
if not self.get('expense_voucher_details'):
frappe.throw(_("Please add expense voucher details"))
+
+ def validate_expense_approver(self):
+ if self.exp_approver and "Expense Approver" not in frappe.get_roles(self.exp_approver):
+ frappe.throw(_("{0} ({1}) must have role 'Expense Approver'")\
+ .format(get_fullname(self.exp_approver), self.exp_approver), InvalidExpenseApproverError)
diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py
index 32c4443..1751eb1 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.py
+++ b/erpnext/hr/doctype/leave_application/leave_application.py
@@ -162,8 +162,8 @@
elif self.leave_approver and not frappe.db.sql("""select name from `tabUserRole`
where parent=%s and role='Leave Approver'""", self.leave_approver):
- frappe.throw(_("{0} must have role 'Leave Approver'").format(get_fullname(self.leave_approver)),
- InvalidLeaveApproverError)
+ frappe.throw(_("{0} ({1}) must have role 'Leave Approver'")\
+ .format(get_fullname(self.leave_approver), self.leave_approver), InvalidLeaveApproverError)
elif self.docstatus==1 and len(leave_approvers) and self.leave_approver != frappe.session.user:
msgprint(_("Only the selected Leave Approver can submit this Leave Application"),
diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py
index 1151b1a..d3942e4 100644
--- a/erpnext/setup/page/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/page/setup_wizard/setup_wizard.py
@@ -171,19 +171,26 @@
global_defaults.save()
+ number_format = get_country_info(args.get("country")).get("number_format", "#,###.##")
+
+ # replace these as float number formats, as they have 0 precision
+ # and are currency number formats and not for floats
+ if number_format=="#.###":
+ number_format = "#.###,##"
+ elif number_format=="#,###":
+ number_format = "#,###.##"
+
system_settings = frappe.get_doc("System Settings", "System Settings")
system_settings.update({
"language": args.get("language"),
"time_zone": args.get("timezone"),
"float_precision": 3,
'date_format': frappe.db.get_value("Country", args.get("country"), "date_format"),
- 'number_format': get_country_info(args.get("country")).get("number_format", "#,###.##"),
+ 'number_format': number_format,
'enable_scheduler': 1
})
-
system_settings.save()
-
accounts_settings = frappe.get_doc("Accounts Settings")
accounts_settings.auto_accounting_for_stock = 1
accounts_settings.save()