Merge pull request #4950 from nabinhait/fixed_asset_depreciation
Fixed asset depreciation
diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index 36a86ab..9ebc832 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1,2 +1,2 @@
from __future__ import unicode_literals
-__version__ = '6.27.3'
+__version__ = '6.27.5'
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
index 431675e..b4fe148 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
@@ -243,6 +243,8 @@
for p in pricing_rules:
if p.item_code and args.variant_of:
p.variant_of = args.variant_of
+ else:
+ p.variant_of = None
# find pricing rule with highest priority
if pricing_rules:
@@ -252,7 +254,7 @@
# apply internal priority
all_fields = ["item_code", "item_group", "brand", "customer", "customer_group", "territory",
- "supplier", "supplier_type", "campaign", "sales_partner"]
+ "supplier", "supplier_type", "campaign", "sales_partner", "variant_of"]
if len(pricing_rules) > 1:
for field_set in [["item_code", "variant_of", "item_group", "brand"],
diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.js b/erpnext/accounts/page/accounts_browser/accounts_browser.js
index 7e64ea3..222682e 100644
--- a/erpnext/accounts/page/accounts_browser/accounts_browser.js
+++ b/erpnext/accounts/page/accounts_browser/accounts_browser.js
@@ -60,6 +60,9 @@
chart_area.get(0), wrapper.page);
})
+ if(frappe.defaults.get_default('company')) {
+ wrapper.$company_select.val(frappe.defaults.get_default('company'));
+ }
wrapper.$company_select.change();
}
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index f4a0538..9e3319c 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -313,8 +313,8 @@
if party_type and party_name:
party = frappe.db.get_value(party_type, party_name, ["is_frozen", "disabled"], as_dict=True)
if party.disabled:
- frappe.throw(_("{0} {1} is disabled".format(party_type, party_name), PartyDisabled))
+ frappe.throw(_("{0} {1} is disabled").format(party_type, party_name), PartyDisabled)
elif party.is_frozen:
frozen_accounts_modifier = frappe.db.get_value( 'Accounts Settings', None,'frozen_accounts_modifier')
if not frozen_accounts_modifier in frappe.get_roles():
- frappe.throw(_("{0} {1} is frozen".format(party_type, party_name), PartyFrozen))
+ frappe.throw(_("{0} {1} is frozen").format(party_type, party_name), PartyFrozen)
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
index f41c6da..40e62f1 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
@@ -8,7 +8,7 @@
frappe.ui.form.on("Request for Quotation",{
setup: function(frm){
- frm.fields_dict["suppliers"].grid.get_field("contact_person").get_query = function(doc, cdt, cdn){
+ frm.fields_dict["suppliers"].grid.get_field("contact").get_query = function(doc, cdt, cdn){
var d =locals[cdt][cdn];
return {
filters: {'supplier': d.supplier}
@@ -18,11 +18,25 @@
onload: function(frm){
frm.add_fetch('standard_reply', 'response', 'response');
+
+ if(!frm.doc.message_for_supplier) {
+ frm.set_value("message_for_supplier", __("Please supply the specified items at the best possible rates"))
+ }
},
-
+
refresh: function(frm, cdt, cdn){
if (frm.doc.docstatus === 1) {
- frm.add_custom_button(__("Make Supplier Quotation"), function(){ frm.trigger("make_suppplier_quotation") });
+ frm.add_custom_button(__("Make Supplier Quotation"),
+ function(){ frm.trigger("make_suppplier_quotation") });
+
+ frm.add_custom_button(__("Send Supplier Emails"), function() {
+ frappe.call({
+ method: 'erpnext.buying.doctype.request_for_quotation.request_for_quotation.send_supplier_emails',
+ args: {
+ rfq_name: frm.doc.name
+ }
+ });
+ });
}
},
@@ -31,13 +45,16 @@
var dialog = new frappe.ui.Dialog({
title: __("For Supplier"),
fields: [
- {"fieldtype": "Select", "label": __("Supplier"), "fieldname": "supplier", "options":"Supplier",
- "options": $.map(doc.suppliers, function(d){ return d.supplier }), "reqd": 1 },
- {"fieldtype": "Button", "label": __("Make Supplier Quotation"), "fieldname": "make_supplier_quotation", "cssClass": "btn-primary"},
+ {"fieldtype": "Select", "label": __("Supplier"),
+ "fieldname": "supplier", "options":"Supplier",
+ "options": $.map(doc.suppliers,
+ function(d) { return d.supplier }), "reqd": 1 },
+ {"fieldtype": "Button", "label": __("Make Supplier Quotation"),
+ "fieldname": "make_supplier_quotation", "cssClass": "btn-primary"},
]
});
- dialog.fields_dict.make_supplier_quotation.$input.click(function(){
+ dialog.fields_dict.make_supplier_quotation.$input.click(function() {
args = dialog.get_values();
if(!args) return;
dialog.hide();
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json
index 88a91a0..7f1988a 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json
@@ -159,7 +159,7 @@
"label": "Supplier Detail",
"length": 0,
"no_copy": 0,
- "options": "RFQ Supplier",
+ "options": "Request for Quotation Supplier",
"permlevel": 0,
"precision": "",
"print_hide": 1,
@@ -281,7 +281,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
- "fieldname": "response",
+ "fieldname": "message_for_supplier",
"fieldtype": "Text Editor",
"hidden": 0,
"ignore_user_permissions": 0,
@@ -609,7 +609,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2016-03-25 01:14:01.194848",
+ "modified": "2016-03-29 06:18:26.398938",
"modified_by": "Administrator",
"module": "Buying",
"name": "Request for Quotation",
@@ -763,5 +763,6 @@
"sort_field": "modified",
"sort_order": "DESC",
"timeline_field": "",
- "title_field": ""
+ "title_field": "",
+ "track_seen": 0
}
\ No newline at end of file
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
index 92089e4..8c23f96 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
@@ -5,7 +5,7 @@
from __future__ import unicode_literals
import frappe, json
from frappe import _
-from frappe.utils import get_url, cint
+from frappe.utils import get_url, random_string
from frappe.utils.user import get_user_fullname
from frappe.model.mapper import get_mapped_doc
from erpnext.stock.doctype.material_request.material_request import set_missing_values
@@ -29,44 +29,55 @@
def on_submit(self):
frappe.db.set(self, 'status', 'Submitted')
- self.send_to_supplier()
def on_cancel(self):
frappe.db.set(self, 'status', 'Cancelled')
def send_to_supplier(self):
link = get_url("/rfq/" + self.name)
- for supplier_data in self.suppliers:
- if supplier_data.email_id and cint(supplier_data.sent_email_to_supplier)==1:
- update_password_link = self.create_supplier_user(supplier_data, link)
- self.supplier_rfq_mail(supplier_data, update_password_link, link)
+ for rfq_supplier in self.suppliers:
+ if rfq_supplier.email_id and rfq_supplier.send_email_to_supplier:
- def create_supplier_user(self, supplier_data, link):
- from frappe.utils import random_string, get_url
+ # make new user if required
+ update_password_link = self.create_supplier_user(rfq_supplier, link)
+ self.supplier_rfq_mail(rfq_supplier, update_password_link, link)
+
+ def create_supplier_user(self, rfq_supplier, link):
+ '''Create a new user for the supplier if not set in contact'''
update_password_link = ''
- if not supplier_data.user_id:
- user = self.create_user(supplier_data)
- key = random_string(32)
- user.reset_password_key = key
- user.redirect_url = link
- user.save(ignore_permissions=True)
- update_password_link = get_url("/update-password?key=" + key)
- frappe.get_doc('Contact', supplier_data.contact_person).save()
+ contact = frappe.get_doc("Contact", rfq_supplier.contact)
+ if not contact.user:
+ if frappe.db.exists("User", rfq_supplier.email_id):
+ user = frappe.get_doc("User", rfq_supplier.email_id)
+ else:
+ user, update_password_link = self.create_user(rfq_supplier, link)
+
+ # set user_id in contact
+ contact = frappe.get_doc('Contact', rfq_supplier.contact)
+ contact.user = user.name
+ contact.save()
return update_password_link
- def create_user(self, supplier_data):
+ def create_user(self, rfq_supplier, link):
user = frappe.get_doc({
'doctype': 'User',
'send_welcome_email': 0,
- 'email': supplier_data.email_id,
- 'first_name': supplier_data.supplier_name,
+ 'email': rfq_supplier.email_id,
+ 'first_name': rfq_supplier.supplier_name,
'user_type': 'Website User'
})
- return user
+ # reset password
+ key = random_string(32)
+ update_password_link = get_url("/update-password?key=" + key)
+ user.reset_password_key = key
+ user.redirect_url = link
+ user.save(ignore_permissions=True)
+
+ return user, update_password_link
def supplier_rfq_mail(self, data, update_password_link, rfq_link):
full_name = get_user_fullname(frappe.session['user'])
@@ -75,7 +86,7 @@
args = {
'update_password_link': update_password_link,
- 'message': frappe.render_template(self.response, data.as_dict()),
+ 'message': frappe.render_template(self.message_for_supplier, data.as_dict()),
'rfq_link': rfq_link,
'user_fullname': full_name
}
@@ -90,18 +101,18 @@
frappe.msgprint(_("Email sent to supplier {0}").format(data.supplier))
+@frappe.whitelist()
+def send_supplier_emails(rfq_name):
+ rfq = frappe.get_doc("Request for Quotation", rfq_name)
+ if rfq.docstatus==1:
+ rfq.send_to_supplier()
+
+
def get_list_context(context=None):
from erpnext.controllers.website_list_for_contact import get_list_context
list_context = get_list_context(context)
return list_context
-@frappe.whitelist()
-def get_supplier(doctype, txt, searchfield, start, page_len, filters):
- query = """Select supplier from `tabRFQ Supplier` where parent = %(parent)s and supplier like %(txt)s
- limit %(start)s, %(page_len)s """
-
- return frappe.db.sql(query, {'parent': filters.get('parent'),
- 'start': start, 'page_len': page_len, 'txt': "%%%s%%" % frappe.db.escape(txt)})
# This method is used to make supplier quotation from material request form.
@frappe.whitelist()
@@ -160,7 +171,7 @@
if data.get("qty") > 0:
if isinstance(data, dict):
data = frappe._dict(data)
-
+
create_rfq_items(sq_doc, supplier, data)
def create_rfq_items(sq_doc, supplier, data):
diff --git a/erpnext/buying/doctype/request_for_quotation_item/request_for_quotation_item.json b/erpnext/buying/doctype/request_for_quotation_item/request_for_quotation_item.json
index 305253c..2892e3b 100644
--- a/erpnext/buying/doctype/request_for_quotation_item/request_for_quotation_item.json
+++ b/erpnext/buying/doctype/request_for_quotation_item/request_for_quotation_item.json
@@ -299,6 +299,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "default": "Today",
"fieldname": "schedule_date",
"fieldtype": "Date",
"hidden": 0,
@@ -598,7 +599,7 @@
"issingle": 0,
"istable": 1,
"max_attachments": 0,
- "modified": "2016-03-25 01:14:38.490488",
+ "modified": "2016-03-29 05:28:39.203232",
"modified_by": "Administrator",
"module": "Buying",
"name": "Request for Quotation Item",
@@ -608,5 +609,6 @@
"read_only": 0,
"read_only_onload": 0,
"sort_field": "modified",
- "sort_order": "DESC"
+ "sort_order": "DESC",
+ "track_seen": 0
}
\ No newline at end of file
diff --git a/erpnext/buying/doctype/rfq_supplier/__init__.py b/erpnext/buying/doctype/request_for_quotation_supplier/__init__.py
similarity index 100%
rename from erpnext/buying/doctype/rfq_supplier/__init__.py
rename to erpnext/buying/doctype/request_for_quotation_supplier/__init__.py
diff --git a/erpnext/buying/doctype/rfq_supplier/rfq_supplier.json b/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json
similarity index 79%
rename from erpnext/buying/doctype/rfq_supplier/rfq_supplier.json
rename to erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json
index 02a6f0b..b51bc17 100644
--- a/erpnext/buying/doctype/rfq_supplier/rfq_supplier.json
+++ b/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json
@@ -2,7 +2,7 @@
"allow_copy": 0,
"allow_import": 0,
"allow_rename": 0,
- "creation": "2016-02-29 17:31:02.993221",
+ "creation": "2016-03-29 05:59:11.896885",
"custom": 0,
"docstatus": 0,
"doctype": "DocType",
@@ -38,14 +38,14 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
- "fieldname": "contact_person",
+ "fieldname": "contact",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
- "label": "Contact Person",
+ "label": "Contact",
"length": 0,
"no_copy": 1,
"options": "Contact",
@@ -65,15 +65,15 @@
"bold": 0,
"collapsible": 0,
"default": "1",
- "description": "Send Request for Quotation to Supplier",
- "fieldname": "sent_email_to_supplier",
+ "description": "",
+ "fieldname": "send_email_to_supplier",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
- "label": "Sent Email to Supplier",
+ "label": "Send Email to Supplier",
"length": 0,
"no_copy": 1,
"permlevel": 0,
@@ -151,7 +151,7 @@
"label": "Email Id",
"length": 0,
"no_copy": 1,
- "options": "contact_person.email_id",
+ "options": "contact.email_id",
"permlevel": 0,
"precision": "",
"print_hide": 0,
@@ -162,32 +162,6 @@
"search_index": 0,
"set_only_once": 0,
"unique": 0
- },
- {
- "allow_on_submit": 1,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "user_id",
- "fieldtype": "Read Only",
- "hidden": 1,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "User Id",
- "length": 0,
- "no_copy": 1,
- "options": "contact_person.user",
- "permlevel": 0,
- "precision": "",
- "print_hide": 1,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
}
],
"hide_heading": 0,
@@ -199,15 +173,16 @@
"issingle": 0,
"istable": 1,
"max_attachments": 0,
- "modified": "2016-03-25 13:18:11.017660",
+ "modified": "2016-03-29 06:03:50.811469",
"modified_by": "Administrator",
"module": "Buying",
- "name": "RFQ Supplier",
+ "name": "Request for Quotation Supplier",
"name_case": "",
"owner": "Administrator",
"permissions": [],
"read_only": 0,
"read_only_onload": 0,
"sort_field": "modified",
- "sort_order": "DESC"
+ "sort_order": "DESC",
+ "track_seen": 0
}
\ No newline at end of file
diff --git a/erpnext/buying/doctype/rfq_supplier/rfq_supplier.py b/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.py
similarity index 84%
rename from erpnext/buying/doctype/rfq_supplier/rfq_supplier.py
rename to erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.py
index a7ba65c..4b0bbbe 100644
--- a/erpnext/buying/doctype/rfq_supplier/rfq_supplier.py
+++ b/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.py
@@ -6,5 +6,5 @@
import frappe
from frappe.model.document import Document
-class RFQSupplier(Document):
+class RequestforQuotationSupplier(Document):
pass
diff --git a/erpnext/controllers/website_list_for_contact.py b/erpnext/controllers/website_list_for_contact.py
index 5882578..7b934e7 100644
--- a/erpnext/controllers/website_list_for_contact.py
+++ b/erpnext/controllers/website_list_for_contact.py
@@ -28,7 +28,7 @@
filters.append((doctype, "docstatus", "=", 1))
if user != "Guest" and is_website_user():
- parties_doctype = 'RFQ Supplier' if doctype == 'Request for Quotation' else doctype
+ parties_doctype = 'Request for Quotation Supplier' if doctype == 'Request for Quotation' else doctype
# find party for this contact
customers, suppliers = get_customers_suppliers(parties_doctype, user)
key, parties = get_party_details(customers, suppliers)
diff --git a/erpnext/docs/assets/old_images/erpnext/budgeting-1.png b/erpnext/docs/assets/old_images/erpnext/budgeting-1.png
deleted file mode 100644
index 29038a0..0000000
--- a/erpnext/docs/assets/old_images/erpnext/budgeting-1.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/old_images/erpnext/budgeting-2-1.png b/erpnext/docs/assets/old_images/erpnext/budgeting-2-1.png
deleted file mode 100644
index 7cd431e..0000000
--- a/erpnext/docs/assets/old_images/erpnext/budgeting-2-1.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/old_images/erpnext/budgeting-3.png b/erpnext/docs/assets/old_images/erpnext/budgeting-3.png
deleted file mode 100644
index 29037c7..0000000
--- a/erpnext/docs/assets/old_images/erpnext/budgeting-3.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/old_images/erpnext/budgeting-4-1.png b/erpnext/docs/assets/old_images/erpnext/budgeting-4-1.png
deleted file mode 100644
index 6348f1e..0000000
--- a/erpnext/docs/assets/old_images/erpnext/budgeting-4-1.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/user/manual/en/accounts/advance-payment-entry.md b/erpnext/docs/user/manual/en/accounts/advance-payment-entry.md
index 042e800..010d897 100644
--- a/erpnext/docs/user/manual/en/accounts/advance-payment-entry.md
+++ b/erpnext/docs/user/manual/en/accounts/advance-payment-entry.md
@@ -7,19 +7,17 @@
bed costing $10000 She is asked to give some advance before the furniture
house begins work on her order. She gives them $5000 in cash.
-
-Go to Accounts and open a new Journal Entry to make the advance entry.
+Once Sales Order or Purchase Order is submitted, you will find option to create Advance Payment entry against it.
+
+To directly create Advance Payment Entry, Go to:
> Accounts > Documents > Journal Entry > New Journal Entry
-Mention the voucher type as cash voucher. This differs for different
-customers. If somebody pays by cheque the voucher type will be Bank Voucher.
-Then select the customer account and make the respective debit and credit
-entries.
+Select a Voucher Type based on a mode in which advance payment is made.
Since the customer has given $5000 as cash advance,it will be recorded as a
-credit entry against the customer. To balance it with the debit entry [Double
-accounting Entry] enter $5000 as debit against the company's cash account. In
+credit entry against the customer. To balance it with the debit entry [as per the Double
+accounting system] enter $5000 as debit against the company's cash account. In
the row "Is Advance" click 'Yes'.
#### Figure 1 : Journal Entry -Advance Entry
@@ -43,7 +41,7 @@
<img class="screenshot" alt="Advace Payment" src="{{docs_base_url}}/assets/img/accounts/advance-payment-2.png">
-Save and submit the JV. If this document is not saved it will not be pulled in
+Save and submit the Journal Entry. If this document is not saved it will not be pulled in
other accounting documents.
When you make a new Sales Invoice for the same customer, mention the advance
diff --git a/erpnext/docs/user/manual/en/accounts/budgeting.md b/erpnext/docs/user/manual/en/accounts/budgeting.md
index a5f35d2..49a73ac 100644
--- a/erpnext/docs/user/manual/en/accounts/budgeting.md
+++ b/erpnext/docs/user/manual/en/accounts/budgeting.md
@@ -11,48 +11,35 @@
You can define it in the Cost Center. If you have seasonal sales you can also
define a budget distribution that the budget will follow.
-In order to allocate budget, go to Accounts > Setup > Chart of Cost Centers and click on Chart of Cost Center.
-Select a Cost Center and click on Open.
+In order to allocate budget, go to:
-#### Step 1: Click on Edit.
+> Accounts > Setup > Chart of Cost Centers
-
+and click on Chart of Cost Center. Select a Cost Center and click on Open.
-<img alt="Accounts Receivable" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/accounts-receivable.png">
+#### Step 1: Click on Edit.
-#### Step 2: Enter Monthly Distribution.
+<img alt="Cost Center" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/cost-center-1.gif">
-
+#### Step 3:Add New Row and select budget account.
+<img alt="Cost Center Account" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/cost-center-2.png">
+
+#### Step 3: Enter Monthly Distribution (optional)
+
+<img alt="Cost Center" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/cost-center-distribution.gif">
If you leave the** **distribution ID blank, ERPNext will calculate on a yearly
basis or in equal proportion for every month.
-#### Step 3:Add New Row and select budget account.
-
-
-
-
-
-
-
### To Create New Distribution ID
-ERPNext allows you to take a few budget actions. It signifies whether to stop
-, warn or Ignore if you exceed budgets.
-
-
-
-
+ERPNext allows you to take a few budget actions. It signifies whether to stop, warn or Ignore if you exceed budgets.
These can be defined from the Company record.
-
+<img alt="Cost Center" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/cost-center-company.gif">
-
-
-Even if you choose to “ignore” budget overruns, you will get a wealth of
-information from the “Budget vs Actual” variance report. This report shows
-month wise actual expenses as compared to the budgeted expenses.
+Even if you choose to “ignore” budget overruns, you will get a wealth of information from the “Budget vs Actual” variance report. This report shows month wise actual expenses as compared to the budgeted expenses.
{next}
diff --git a/erpnext/docs/user/manual/en/accounts/opening-accounts.md b/erpnext/docs/user/manual/en/accounts/opening-accounts.md
index 28ba0c2..fc86cdd 100644
--- a/erpnext/docs/user/manual/en/accounts/opening-accounts.md
+++ b/erpnext/docs/user/manual/en/accounts/opening-accounts.md
@@ -1,4 +1,4 @@
-Now that you have completed most of the setup, its time to start moving in!
+ Now that you have completed most of the setup, its time to start moving in!
There are two important sets of data you need to enter before you start your
operations.
@@ -29,11 +29,7 @@
#### Temporary Accounts
-A nice way to simplify opening is to use a temporary account
-just for opening. These accounts will become zero once all your old
-invoices and opening balances of bank, debt stock etc are entered.
-In the standard chart of accounts, a **Temporary Opening** account is created under
-assets
+A nice way to simplify opening is to use a temporary account just for opening. These accounts will become zero once all your old invoices and opening balances of bank, debt stock etc are entered. In the standard chart of accounts, a **Temporary Opening** account is created under assets
#### The Opening Entry
@@ -54,7 +50,6 @@

-

Temporary Asset and Liability account is used for balancing purpose. When you update opening balance in Liability Account, you can use Temporary Asset Account for balancing.
@@ -68,26 +63,19 @@
* In this method you can update opening balance of specific balancesheet accounts and not for all.
* Opening entry is only for balance sheet accounts and not for expense or Income accounts.
-After completing the accounting entries, the trial balance report will look
-like the one given below:
-
+After completing the accounting entries, the trial balance report will look like the one given below:

#### Outstanding Invoices
-After your Opening Journal Entrys are made, you will need to enter each
-Sales Invoice and Purchase Invoice that is yet to be paid.
+After your Opening Journal Entrys are made, you will need to enter each Sales Invoice and Purchase Invoice that is yet to be paid.
-Since you have already booked the income or expense on these invoices in the
-previous period, select the temp opening account **Temporary Opening** in the “Income” and
-“Expense” accounts.
+Since you have already booked the income or expense on these invoices in the previous period, select the temp opening account **Temporary Opening** in the “Income” and “Expense” accounts.
> Note: Make sure to set each invoice as “Is Opening”!
-If you don’t care what items are in that invoice, just make a dummy item entry
-in the Invoice. Item code in the Invoice is not necessary, so it should not be
-such a problem.
+If you don’t care what items are in that invoice, just make a dummy item entry in the Invoice. Item code in the Invoice is not necessary, so it should not be such a problem.
Once all your invoices are entered, your **Temporary Opening** account will have a balance of zero!
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/print-format.md b/erpnext/docs/user/manual/en/customize-erpnext/print-format.md
index 34ef16d..f0ca942 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/print-format.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/print-format.md
@@ -29,7 +29,7 @@
Print Formats are rendered on the server side using the [Jinja Templating Language](http://jinja.pocoo.org/docs/templates/). All forms have access to the doc object which contains information about the document that is being formatted. You can also access common utilities via the frappe module.
-For styling, the [Boostrap CSS Framework](http://getbootstrap.com/) is provided and you can enjoy the full range of classes.
+For styling, the [Bootstrap CSS Framework](http://getbootstrap.com/) is provided and you can enjoy the full range of classes.
> Note: Pre-printed stationary is usually not a good idea because your Prints
will look incomplete (inconsistent) when you send them by mail.
diff --git a/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/perpetual-inventory.md b/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/perpetual-inventory.md
index fbe880f..80970bf 100644
--- a/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/perpetual-inventory.md
+++ b/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/perpetual-inventory.md
@@ -143,11 +143,11 @@
<p><strong>Stock Ledger</strong>
</p>
-
+<img alt="Stock" class="screenshot" src="{{docs_base_url}}/assets/old_images/erpnext/accounting-for-stock-2.png">
**General Ledger**
-
+<img alt="Leger" class="screenshot" src="{{docs_base_url}}/assets/old_images/erpnext/accounting-for-stock-3.png">
As stock balance increases through Purchase Receipt, "Store" and "Fixed Asset
Warehouse" accounts are debited and a temporary account "Stock Receipt But Not
@@ -162,7 +162,7 @@
**General Ledger**
-
+<img alt="General" class="screenshot" src="{{docs_base_url}}/assets/old_images/erpnext/accounting-for-stock-4.png">
Here "Stock Received But Not Billed" account is debited and nullified the
effect of Purchase Receipt.
@@ -220,11 +220,11 @@
**Stock Ledger**
-
+<img alt="Stock" class="screenshot" src="{{docs_base_url}}/assets/old_images/erpnext/accounting-for-stock-5.png">
**General Ledger**
-
+<img alt="General" class="screenshot" src="{{docs_base_url}}/assets/old_images/erpnext/accounting-for-stock-6.png">
As item is delivered from "Stores" warehouse, "Stores" account is credited and
equal amount is debited to the expense account "Cost of Goods Sold". The
@@ -254,11 +254,11 @@
**Stock Ledger**
-
+<img alt="Stock" class="screenshot" src="{{docs_base_url}}/assets/old_images/erpnext/accounting-for-stock-7.png">
**General Ledger**
-
+<img alt="General" class="screenshot" src="{{docs_base_url}}/assets/old_images/erpnext/accounting-for-stock-8.png">
Here, apart from normal account entries for invoice, "Stores" and "Cost of
Goods Sold" accounts are also affected based on the valuation amount.
@@ -292,11 +292,11 @@
**Stock Ledger**
-
+<img alt="Stock" class="screenshot" src="{{docs_base_url}}/assets/old_images/erpnext/accounting-for-stock-9.png">
**General Ledger**
-
+<img alt="General" class="screenshot" src="{{docs_base_url}}/assets/old_images/erpnext/accounting-for-stock-10.png">
* * *
@@ -327,11 +327,11 @@
**Stock Ledger**
-
+<img alt="Stock" class="screenshot" src="{{docs_base_url}}/assets/old_images/erpnext/accounting-for-stock-11.png">
**General Ledger**
-
+<img alt="Stock" class="screenshot" src="{{docs_base_url}}/assets/old_images/erpnext/accounting-for-stock-12.png">
* * *
@@ -364,8 +364,10 @@
**Stock Ledger**
-
+<img alt="Stock" class="screenshot" src="{{docs_base_url}}/assets/old_images/erpnext/accounting-for-stock-13.png">
**General Ledger**
-
\ No newline at end of file
+<img alt="Stock" class="screenshot" src="{{docs_base_url}}/assets/old_images/erpnext/accounting-for-stock-14.png">
+
+{ next }
\ No newline at end of file
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 56c0d16..3799565 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -7,7 +7,7 @@
app_description = """ERP made simple"""
app_icon = "icon-th"
app_color = "#e74c3c"
-app_version = "6.27.3"
+app_version = "6.27.5"
app_email = "info@erpnext.com"
app_license = "GNU General Public License (v3)"
source_link = "https://github.com/frappe/erpnext"
diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py
index db580f4..9e6afff 100755
--- a/erpnext/hr/doctype/employee/employee.py
+++ b/erpnext/hr/doctype/employee/employee.py
@@ -229,14 +229,13 @@
and status = 'Active'""", {"date": today()}, as_dict=True)
def get_holiday_list_for_employee(employee, raise_exception=True):
- employee = frappe.db.get_value("Employee", employee, ["holiday_list", "company"], as_dict=True)
- holiday_list = employee.holiday_list
+ holiday_list, company = frappe.db.get_value("Employee", employee, ["holiday_list", "company"])
if not holiday_list:
- holiday_list = frappe.db.get_value("Company", employee.company, "default_holiday_list")
+ holiday_list = frappe.db.get_value("Company", company, "default_holiday_list")
if not holiday_list and raise_exception:
- frappe.throw(_("Please set a Holiday List for either the Employee or the Company"))
+ frappe.throw(_('Please set a default Holiday List for Employee {0} or Company {0}').format(employee, company))
return holiday_list
diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py
index 5bf7e9d..6882034 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.py
+++ b/erpnext/hr/doctype/leave_application/leave_application.py
@@ -335,16 +335,14 @@
def get_holidays(employee, from_date, to_date):
- tot_hol = frappe.db.sql("""select count(*) from `tabHoliday` h1, `tabHoliday List` h2, `tabEmployee` e1
- where e1.name = %s and h1.parent = h2.name and e1.holiday_list = h2.name
- and h1.holiday_date between %s and %s""", (employee, from_date, to_date))[0][0]
+ '''get holidays between two dates for the given employee'''
+ holiday_list = get_holiday_list_for_employee(employee)
- if not tot_hol:
- tot_hol = frappe.db.sql("""select count(distinct holiday_date) from `tabHoliday` h1, `tabHoliday List` h2
- where h1.parent = h2.name and h1.holiday_date between %s and %s
- and h2.is_default = 1""", (from_date, to_date))[0][0]
+ holidays = frappe.db.sql("""select count(distinct holiday_date) from `tabHoliday` h1, `tabHoliday List` h2
+ where h1.parent = h2.name and h1.holiday_date between %s and %s
+ and h2.name = %s""", (from_date, to_date, holiday_list))[0][0]
- return tot_hol
+ return holidays
def is_lwp(leave_type):
lwp = frappe.db.sql("select is_lwp from `tabLeave Type` where name = %s", leave_type)
diff --git a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
index 0469972..5fab1ac 100644
--- a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
+++ b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
@@ -94,7 +94,11 @@
validated = False
employee = frappe.db.get_value("Sales Person", sales_person, "employee")
- holiday_list = get_holiday_list_for_employee(employee)
+ if employee:
+ holiday_list = get_holiday_list_for_employee(employee)
+ else:
+ holiday_list = frappe.db.get_value("Company", self.company, "default_holiday_list")
+
holidays = frappe.db.sql_list('''select holiday_date from `tabHoliday` where parent=%s''', holiday_list)
if not validated and holidays:
diff --git a/erpnext/templates/emails/request_for_quotation.html b/erpnext/templates/emails/request_for_quotation.html
index 91bdd6b..aedd8e2 100644
--- a/erpnext/templates/emails/request_for_quotation.html
+++ b/erpnext/templates/emails/request_for_quotation.html
@@ -1,12 +1,11 @@
<h3>{{_("Request for Quotation")}}</h3>
-<br>
<p>{{ message }}</p>
{% if update_password_link %}
<p>{{_("Please click on the following link to set your new password")}}:</p>
<p><a href="{{ update_password_link }}">{{ update_password_link }}</a></p>
{% else %}
<p>{{_("Request for quotation can be access by clicking following link")}}:</p>
-<p><a href="{{ rfq_link }}">{{ rfq_link }}</a></p>
+<p><a href="{{ rfq_link }}">Submit your Quotation</a></p>
{% endif %}
<p>{{_("Thank you")}},<br>
{{ user_fullname }}</p>
\ No newline at end of file
diff --git a/erpnext/templates/includes/rfq/rfq_items.html b/erpnext/templates/includes/rfq/rfq_items.html
index de9a95f..f03fb8f 100644
--- a/erpnext/templates/includes/rfq/rfq_items.html
+++ b/erpnext/templates/includes/rfq/rfq_items.html
@@ -22,7 +22,7 @@
style="margin-top: 5px; max-width: 70px;display: inline-block" value="0.00"
data-idx="{{ d.idx }}">
</div>
- <div class="col-sm-2 col-xs-2 text-right">
+ <div class="col-sm-2 col-xs-2 text-right" style="padding-top: 9px;">
<span class="rfq-amount" data-idx="{{ d.idx }}">0.00</span>
</div>
</div>
diff --git a/erpnext/templates/pages/rfq.html b/erpnext/templates/pages/rfq.html
index 5556d26..8009819 100644
--- a/erpnext/templates/pages/rfq.html
+++ b/erpnext/templates/pages/rfq.html
@@ -69,11 +69,10 @@
</div>
{% endif %}
<div class="row terms">
- <div class="col-xs-5 text-left text-muted">{{ _("Terms and Conditions: ") }}</div>
- </div>
- <div class="row terms">
- <div class="col-xs-5 text-left text-muted">
- <textarea class="form-control terms-feedback" style="border:1px solid #cccccc; padding:4px"></textarea>
+ <div class="col-xs-6">
+ <br><br>
+ <p class="text-muted small">{{ _("Notes: ") }}</p>
+ <textarea class="form-control terms-feedback" style="height: 100px;"></textarea>
</div>
</div>
</div>
diff --git a/erpnext/templates/pages/rfq.py b/erpnext/templates/pages/rfq.py
index fbdd6db..aefa315 100644
--- a/erpnext/templates/pages/rfq.py
+++ b/erpnext/templates/pages/rfq.py
@@ -25,7 +25,7 @@
def check_supplier_has_docname_access(supplier):
status = True
- if frappe.form_dict.name not in frappe.db.sql_list("""select parent from `tabRFQ Supplier`
+ if frappe.form_dict.name not in frappe.db.sql_list("""select parent from `tabRequest for Quotation Supplier`
where supplier = '{supplier}'""".format(supplier=supplier)):
status = False
return status
diff --git a/erpnext/utilities/doctype/contact/contact.json b/erpnext/utilities/doctype/contact/contact.json
index 9fef425..3b4f24e 100644
--- a/erpnext/utilities/doctype/contact/contact.json
+++ b/erpnext/utilities/doctype/contact/contact.json
@@ -16,6 +16,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "",
@@ -24,6 +25,7 @@
"options": "icon-user",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -39,6 +41,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "First Name",
@@ -48,6 +51,7 @@
"oldfieldtype": "Data",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -57,12 +61,13 @@
},
{
"allow_on_submit": 0,
- "bold": 0,
+ "bold": 1,
"collapsible": 0,
"fieldname": "last_name",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Last Name",
@@ -72,6 +77,7 @@
"oldfieldtype": "Data",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -81,12 +87,13 @@
},
{
"allow_on_submit": 0,
- "bold": 0,
+ "bold": 1,
"collapsible": 0,
"fieldname": "email_id",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Email Id",
@@ -97,6 +104,7 @@
"options": "Email",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -112,12 +120,14 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -134,6 +144,7 @@
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Status",
@@ -142,6 +153,7 @@
"options": "Passive\nOpen\nReplied",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -151,12 +163,13 @@
},
{
"allow_on_submit": 0,
- "bold": 0,
+ "bold": 1,
"collapsible": 0,
"fieldname": "phone",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Phone",
@@ -166,6 +179,7 @@
"oldfieldtype": "Data",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -181,6 +195,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Reference",
@@ -189,6 +204,7 @@
"options": "icon-pushpin",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -204,6 +220,7 @@
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "User Id",
@@ -213,6 +230,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -222,13 +240,14 @@
},
{
"allow_on_submit": 0,
- "bold": 0,
+ "bold": 1,
"collapsible": 0,
"depends_on": "",
"fieldname": "customer",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Customer",
@@ -239,6 +258,7 @@
"options": "Customer",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -255,6 +275,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Customer Name",
@@ -262,6 +283,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 1,
"report_hide": 0,
"reqd": 0,
@@ -277,6 +299,7 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -284,6 +307,7 @@
"oldfieldtype": "Column Break",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -294,13 +318,14 @@
},
{
"allow_on_submit": 0,
- "bold": 0,
+ "bold": 1,
"collapsible": 0,
"depends_on": "",
"fieldname": "supplier",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Supplier",
@@ -309,6 +334,7 @@
"options": "Supplier",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -325,6 +351,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Supplier Name",
@@ -332,6 +359,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 1,
"report_hide": 0,
"reqd": 0,
@@ -348,6 +376,7 @@
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Sales Partner",
@@ -356,6 +385,7 @@
"options": "Sales Partner",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -373,6 +403,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Is Primary Contact",
@@ -382,6 +413,7 @@
"oldfieldtype": "Select",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -397,6 +429,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "More Information",
@@ -405,6 +438,7 @@
"options": "icon-file-text",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -420,6 +454,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Mobile No",
@@ -429,6 +464,7 @@
"oldfieldtype": "Data",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -445,6 +481,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Department",
@@ -452,6 +489,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -468,6 +506,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Designation",
@@ -475,6 +514,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -490,6 +530,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Unsubscribed",
@@ -497,6 +538,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -515,7 +557,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2015-11-16 06:29:43.760924",
+ "modified": "2016-03-29 06:13:33.493737",
"modified_by": "Administrator",
"module": "Utilities",
"name": "Contact",
@@ -764,5 +806,7 @@
}
],
"read_only": 0,
- "read_only_onload": 0
+ "read_only_onload": 0,
+ "sort_order": "ASC",
+ "track_seen": 0
}
\ No newline at end of file
diff --git a/setup.py b/setup.py
index bd41d1d..581e065 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
from setuptools import setup, find_packages
from pip.req import parse_requirements
-version = "6.27.3"
+version = "6.27.5"
requirements = parse_requirements("requirements.txt", session="")
setup(