Merge pull request #6900 from rohitwaghchaure/account_receivable_summary_report_issue
[Report] Company not found in the filter for making auto email report
diff --git a/erpnext/crm/doctype/opportunity/opportunity.js b/erpnext/crm/doctype/opportunity/opportunity.js
index 2f1169d..b6346f8 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.js
+++ b/erpnext/crm/doctype/opportunity/opportunity.js
@@ -23,20 +23,19 @@
refresh: function(frm) {
var doc = frm.doc;
frm.events.enquiry_from(frm);
-
if(doc.status!=="Lost") {
if(doc.with_items){
frm.add_custom_button(__('Supplier Quotation'),
function() {
frm.trigger("make_supplier_quotation")
}, __("Make"));
-
- frm.add_custom_button(__('Quotation'),
- cur_frm.cscript.create_quotation, __("Make"));
-
- frm.page.set_inner_btn_group_as_primary(__("Make"));
}
+ frm.add_custom_button(__('Quotation'),
+ cur_frm.cscript.create_quotation, __("Make"));
+
+ frm.page.set_inner_btn_group_as_primary(__("Make"));
+
if(doc.status!=="Quotation") {
frm.add_custom_button(__('Lost'),
cur_frm.cscript['Declare Opportunity Lost']);
diff --git a/erpnext/crm/doctype/opportunity/opportunity.py b/erpnext/crm/doctype/opportunity/opportunity.py
index 8bd3a23..6be0768 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.py
+++ b/erpnext/crm/doctype/opportunity/opportunity.py
@@ -39,6 +39,9 @@
if not self.title:
self.title = self.customer_name
+
+ if not self.with_items:
+ self.items = []
def make_new_lead_if_required(self):
diff --git a/erpnext/hr/doctype/expense_claim_type/expense_claim_type.json b/erpnext/hr/doctype/expense_claim_type/expense_claim_type.json
index 3d2b251..4749800 100644
--- a/erpnext/hr/doctype/expense_claim_type/expense_claim_type.json
+++ b/erpnext/hr/doctype/expense_claim_type/expense_claim_type.json
@@ -1,7 +1,7 @@
{
"allow_copy": 0,
"allow_import": 1,
- "allow_rename": 0,
+ "allow_rename": 1,
"autoname": "field:expense_type",
"beta": 0,
"creation": "2012-03-27 14:35:55",
@@ -10,11 +10,13 @@
"doctype": "DocType",
"document_type": "Setup",
"editable_grid": 0,
+ "engine": "InnoDB",
"fields": [
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "expense_type",
"fieldtype": "Data",
"hidden": 0,
@@ -41,6 +43,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "description",
"fieldtype": "Small Text",
"hidden": 0,
@@ -68,6 +71,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "accounts",
"fieldtype": "Table",
"hidden": 0,
@@ -102,7 +106,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2016-07-18 12:36:10.096252",
+ "modified": "2016-11-07 11:54:10.936716",
"modified_by": "Administrator",
"module": "HR",
"name": "Expense Claim Type",
@@ -118,6 +122,7 @@
"export": 0,
"if_owner": 0,
"import": 0,
+ "is_custom": 0,
"permlevel": 0,
"print": 1,
"read": 1,
@@ -138,6 +143,7 @@
"export": 0,
"if_owner": 0,
"import": 0,
+ "is_custom": 0,
"permlevel": 0,
"print": 0,
"read": 1,
diff --git a/erpnext/patches/v7_1/set_prefered_contact_email.py b/erpnext/patches/v7_1/set_prefered_contact_email.py
index d662e0d..d083811 100644
--- a/erpnext/patches/v7_1/set_prefered_contact_email.py
+++ b/erpnext/patches/v7_1/set_prefered_contact_email.py
@@ -14,6 +14,4 @@
employee.prefered_contact_email = "User ID"
employee.prefered_email = employee.user_id
- employee.flags.ignore_mandatory = True
- employee.flags.ignore_validate = True
- employee.save()
\ No newline at end of file
+ employee.db_update()
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student/student_dashboard.py b/erpnext/schools/doctype/student/student_dashboard.py
index 6d95168..55faffb 100644
--- a/erpnext/schools/doctype/student/student_dashboard.py
+++ b/erpnext/schools/doctype/student/student_dashboard.py
@@ -10,7 +10,7 @@
'items': ['Student Log', 'Student Group', 'Student Attendance']
},
{
- 'items': ['Program Enrollment', 'Fees', 'Assessment', 'Guardian']
+ 'items': ['Program Enrollment', 'Fees', 'Assessment']
}
]
}
\ No newline at end of file
diff --git a/erpnext/setup/setup_wizard/setup_wizard.py b/erpnext/setup/setup_wizard/setup_wizard.py
index 66000cd..646aef1 100644
--- a/erpnext/setup/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/setup_wizard/setup_wizard.py
@@ -68,7 +68,7 @@
frappe.message_log.pop()
pass
-
+
def create_fiscal_year_and_company(args):
if (args.get('fy_start_date')):
curr_fiscal_year = get_fy_details(args.get('fy_start_date'), args.get('fy_end_date'))
@@ -244,12 +244,12 @@
else:
fy = cstr(start_year) + '-' + cstr(start_year + 1)
return fy
-
+
def create_sales_tax(args):
country_wise_tax = get_country_wise_tax(args.get("country"))
if country_wise_tax and len(country_wise_tax) > 0:
for sales_tax, tax_data in country_wise_tax.items():
- make_tax_account_and_template(args.get("company_name").strip(),
+ make_tax_account_and_template(args.get("company_name").strip(),
tax_data.get('account_name'), tax_data.get('tax_rate'), sales_tax)
def get_country_wise_tax(country):
@@ -267,7 +267,7 @@
account_name = args.get("tax_" + str(i))
make_tax_account_and_template(args.get("company_name").strip(), account_name, tax_rate)
-
+
def make_tax_account_and_template(company, account_name, tax_rate, template_name=None):
try:
account = make_tax_account(company, account_name, tax_rate)
@@ -280,14 +280,14 @@
raise
except RootNotEditable, e:
pass
-
+
def get_tax_account_group(company):
- tax_group = frappe.db.get_value("Account",
+ tax_group = frappe.db.get_value("Account",
{"account_name": "Duties and Taxes", "is_group": 1, "company": company})
if not tax_group:
- tax_group = frappe.db.get_value("Account", {"is_group": 1, "root_type": "Liability",
+ tax_group = frappe.db.get_value("Account", {"is_group": 1, "root_type": "Liability",
"account_type": "Tax", "company": company})
-
+
return tax_group
def make_tax_account(company, account_name, tax_rate):
@@ -308,7 +308,7 @@
def make_sales_and_purchase_tax_templates(account, template_name=None):
if not template_name:
template_name = account.name
-
+
sales_tax_template = {
"doctype": "Sales Taxes and Charges Template",
"title": template_name,
@@ -548,35 +548,50 @@
academic_term = frappe.new_doc("Academic Term")
academic_term.academic_year = y
academic_term.term_name = t
- academic_term.save()
+ try:
+ academic_term.save()
+ except frappe.DuplicateEntryError:
+ pass
def create_academic_year():
ac = ["2013-14", "2014-15", "2015-16", "2016-17", "2017-18"]
for d in ac:
academic_year = frappe.new_doc("Academic Year")
academic_year.academic_year_name = d
- academic_year.save()
+ try:
+ academic_year.save()
+ except frappe.DuplicateEntryError:
+ pass
def create_program(args):
for i in xrange(1,6):
if args.get("program_" + str(i)):
program = frappe.new_doc("Program")
program.program_name = args.get("program_" + str(i))
- program.save()
+ try:
+ program.save()
+ except frappe.DuplicateEntryError:
+ pass
def create_course(args):
for i in xrange(1,6):
if args.get("course_" + str(i)):
course = frappe.new_doc("Course")
course.course_name = args.get("course_" + str(i))
- course.save()
+ try:
+ course.save()
+ except frappe.DuplicateEntryError:
+ pass
def create_instructor(args):
for i in xrange(1,6):
if args.get("instructor_" + str(i)):
instructor = frappe.new_doc("Instructor")
instructor.instructor_name = args.get("instructor_" + str(i))
- instructor.save()
+ try:
+ instructor.save()
+ except frappe.DuplicateEntryError:
+ pass
def create_room(args):
for i in xrange(1,6):
@@ -584,6 +599,9 @@
room = frappe.new_doc("Room")
room.room_name = args.get("room_" + str(i))
room.seating_capacity = args.get("room_capacity_" + str(i))
- room.save()
+ try:
+ room.save()
+ except frappe.DuplicateEntryError:
+ pass
diff --git a/erpnext/utilities/doctype/contact/contact.py b/erpnext/utilities/doctype/contact/contact.py
index a687880..dd6aa10 100644
--- a/erpnext/utilities/doctype/contact/contact.py
+++ b/erpnext/utilities/doctype/contact/contact.py
@@ -103,4 +103,5 @@
for key in ("first_name", "last_name", "phone"):
if doc.get(key):
contact.set(key, doc.get(key))
+ contact.flags.ignore_mandatory = True
contact.save(ignore_permissions=True)