Fixed merge conflict
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/ae_uae_chart_template_standard.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ae_uae_chart_template_standard.json
index 4fa889d..d7f508f 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/ae_uae_chart_template_standard.json
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ae_uae_chart_template_standard.json
@@ -294,7 +294,7 @@
"Current Liabilities": {
"Accounts Payable": {
"Payables": {
- "Advance Paybale to Suppliers": {
+ "Advance Payable to Suppliers": {
"account_type": "Payable"
},
"Consigned Payable": {
diff --git a/erpnext/demo/setup/setup_data.py b/erpnext/demo/setup/setup_data.py
index f25bbc3..278c398 100644
--- a/erpnext/demo/setup/setup_data.py
+++ b/erpnext/demo/setup/setup_data.py
@@ -41,9 +41,9 @@
setup_complete({
"first_name": "Test",
"last_name": "User",
- "email": "test_demo@erpnext.com",
+ "email": "demo@erpnext.com",
"company_tagline": 'Awesome Products and Services',
- "password": "test",
+ "password": "demo",
"fy_start_date": "2015-01-01",
"fy_end_date": "2015-12-31",
"bank_account": "National Bank",
diff --git a/erpnext/demo/user/stock.py b/erpnext/demo/user/stock.py
index ac380f2..ea23853 100644
--- a/erpnext/demo/user/stock.py
+++ b/erpnext/demo/user/stock.py
@@ -85,9 +85,10 @@
def submit_draft_stock_entries():
from erpnext.stock.doctype.stock_entry.stock_entry import IncorrectValuationRateError, \
- DuplicateEntryForProductionOrderError, OperationsNotCompleteError
+ DuplicateEntryForProductionOrderError, OperationsNotCompleteError
# try posting older drafts (if exists)
+ frappe.db.commit()
for st in frappe.db.get_values("Stock Entry", {"docstatus":0}, "name"):
try:
ste = frappe.get_doc("Stock Entry", st[0])
diff --git a/erpnext/docs/assets/img/accounts/Screen Shot 2016-10-28 at 5.36.15 PM.png b/erpnext/docs/assets/img/accounts/Screen Shot 2016-10-28 at 5.36.15 PM.png
new file mode 100644
index 0000000..cdc4e1a
--- /dev/null
+++ b/erpnext/docs/assets/img/accounts/Screen Shot 2016-10-28 at 5.36.15 PM.png
Binary files differ
diff --git a/erpnext/docs/user/manual/en/accounts/sales-invoice.md b/erpnext/docs/user/manual/en/accounts/sales-invoice.md
index fb132e7..e68d2c7 100644
--- a/erpnext/docs/user/manual/en/accounts/sales-invoice.md
+++ b/erpnext/docs/user/manual/en/accounts/sales-invoice.md
@@ -64,6 +64,15 @@
<img class="screenshot" alt="POS Invoice" src="{{docs_base_url}}/assets/img/accounts/pos-sales-invoice.png">
+#### Billing Timesheet with Project
+
+If you want to bill employees working on Projects on hourly basis (contract based),
+they can fill out Timesheets which consists their billing rate. When you make a new
+Sales Invoice, select the Project for which the billing is to be made, and the
+corresponding Timesheet entries for that Project will be fetched.
+
+<img class="screenshot" alt="POS Invoice" src="{{docs_base_url}}/assets/img/accounts/billing-timesheet-sales-invoice.png">
+
* * *
#### "Pro Forma" Invoice
@@ -80,5 +89,4 @@
ERPNext) titled as “Pro Forma Invoice”. This way everyone is happy.
This is a fairly common practice. We follow this at Frappe too.
-
{next}
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index d694ef4..6659221 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -342,4 +342,5 @@
erpnext.patches.v7_1.set_prefered_contact_email
execute:frappe.db.sql("update `tabSingles` set value = 1 where field = 'unlink_payment_on_cancellation_of_invoice' and doctype = 'Accounts Settings'")
execute:frappe.db.sql("update `tabStock Entry` set total_amount = null where purpose in('Repack', 'Manufacture')")
-erpnext.patches.v7_1.repost_gle_for_pi_with_update_stock
\ No newline at end of file
+erpnext.patches.v7_1.save_stock_settings
+erpnext.patches.v7_1.repost_gle_for_pi_with_update_stock
diff --git a/erpnext/patches/v7_1/save_stock_settings.py b/erpnext/patches/v7_1/save_stock_settings.py
new file mode 100644
index 0000000..83c27dc
--- /dev/null
+++ b/erpnext/patches/v7_1/save_stock_settings.py
@@ -0,0 +1,7 @@
+from __future__ import unicode_literals
+import frappe
+
+def execute():
+ stock_settings = frappe.get_doc('Stock Settings')
+ stock_settings.flags.ignore_mandatory = True
+ stock_settings.save()
diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js
index 6c8898d..39e87f8 100644
--- a/erpnext/public/js/utils.js
+++ b/erpnext/public/js/utils.js
@@ -192,7 +192,7 @@
frappe.form.link_formatters['Item'] = function(value, doc) {
if(doc && doc.item_name && doc.item_name !== value) {
- return value + ': ' + doc.item_name;
+ return value? value + ': ' + doc.item_name: doc.item_name;
} else {
return value;
}
@@ -200,7 +200,7 @@
frappe.form.link_formatters['Employee'] = function(value, doc) {
if(doc && doc.employee_name && doc.employee_name !== value) {
- return value + ': ' + doc.employee_name;
+ return value? value + ': ' + doc.employee_name: doc.employee_name;
} else {
return value;
}
diff --git a/erpnext/schools/doctype/course_schedule/course_schedule.json b/erpnext/schools/doctype/course_schedule/course_schedule.json
index 308cf68..5395332 100644
--- a/erpnext/schools/doctype/course_schedule/course_schedule.json
+++ b/erpnext/schools/doctype/course_schedule/course_schedule.json
@@ -2,7 +2,7 @@
"allow_copy": 0,
"allow_import": 1,
"allow_rename": 0,
- "autoname": "SH.####",
+ "autoname": "naming_series",
"beta": 0,
"creation": "2015-09-09 16:34:04.960369",
"custom": 0,
@@ -10,11 +10,13 @@
"doctype": "DocType",
"document_type": "Document",
"editable_grid": 0,
+ "engine": "InnoDB",
"fields": [
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "student_group",
"fieldtype": "Link",
"hidden": 0,
@@ -41,6 +43,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "instructor",
"fieldtype": "Link",
"hidden": 0,
@@ -67,6 +70,35 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
+ "default": "SH",
+ "fieldname": "naming_series",
+ "fieldtype": "Select",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Naming Series",
+ "length": 0,
+ "no_copy": 0,
+ "options": "SH",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
"fieldname": "column_break_2",
"fieldtype": "Column Break",
"hidden": 0,
@@ -91,6 +123,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "course",
"fieldtype": "Read Only",
"hidden": 0,
@@ -117,6 +150,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "instructor_name",
"fieldtype": "Read Only",
"hidden": 0,
@@ -143,6 +177,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "section_break_6",
"fieldtype": "Section Break",
"hidden": 0,
@@ -167,6 +202,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"default": "Today",
"fieldname": "schedule_date",
"fieldtype": "Date",
@@ -193,6 +229,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "room",
"fieldtype": "Link",
"hidden": 0,
@@ -219,6 +256,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "column_break_9",
"fieldtype": "Column Break",
"hidden": 0,
@@ -243,6 +281,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "from_time",
"fieldtype": "Time",
"hidden": 0,
@@ -268,6 +307,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "to_time",
"fieldtype": "Time",
"hidden": 0,
@@ -293,6 +333,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 1,
+ "columns": 0,
"fieldname": "attendance",
"fieldtype": "Section Break",
"hidden": 0,
@@ -318,6 +359,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "students_html",
"fieldtype": "HTML",
"hidden": 0,
@@ -343,6 +385,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "title",
"fieldtype": "Data",
"hidden": 1,
@@ -376,7 +419,7 @@
"istable": 0,
"max_attachments": 0,
"menu_index": 0,
- "modified": "2016-07-25 01:25:04.593769",
+ "modified": "2016-10-27 15:36:45.163612",
"modified_by": "Administrator",
"module": "Schools",
"name": "Course Schedule",
@@ -393,6 +436,7 @@
"export": 1,
"if_owner": 0,
"import": 0,
+ "is_custom": 0,
"permlevel": 0,
"print": 1,
"read": 1,
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 6d6ae97..86fb88b 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -8,7 +8,7 @@
from frappe import throw, _
import frappe.defaults
-
+from frappe.utils import getdate
from erpnext.controllers.buying_controller import BuyingController
from erpnext.accounts.utils import get_account_currency
from frappe.desk.notifications import clear_doctype_notifications
@@ -59,7 +59,7 @@
pc_obj = frappe.get_doc('Purchase Common')
self.check_for_closed_status(pc_obj)
- if self.posting_date > nowdate():
+ if getdate(self.posting_date) > getdate(nowdate()):
throw(_("Posting Date cannot be future date"))
diff --git a/erpnext/stock/doctype/stock_settings/stock_settings.py b/erpnext/stock/doctype/stock_settings/stock_settings.py
index 7c67a65..68d64a2 100644
--- a/erpnext/stock/doctype/stock_settings/stock_settings.py
+++ b/erpnext/stock/doctype/stock_settings/stock_settings.py
@@ -10,7 +10,7 @@
class StockSettings(Document):
def validate(self):
- for key in ["item_naming_by", "item_group", "stock_uom", "allow_negative_stock"]:
+ for key in ["item_naming_by", "item_group", "stock_uom", "allow_negative_stock", "default_warehouse"]:
frappe.db.set_default(key, self.get(key, ""))
from erpnext.setup.doctype.naming_series.naming_series import set_by_naming_series
diff --git a/erpnext/stock/report/serial_no_status/serial_no_status.json b/erpnext/stock/report/serial_no_status/serial_no_status.json
index dfc7afc..e021a5d 100644
--- a/erpnext/stock/report/serial_no_status/serial_no_status.json
+++ b/erpnext/stock/report/serial_no_status/serial_no_status.json
@@ -7,8 +7,8 @@
"doctype": "Report",
"idx": 1,
"is_standard": "Yes",
- "json": "{\"filters\":[],\"columns\":[[\"name\",\"Serial No\"],[\"item_code\",\"Serial No\"],[\"warehouse\",\"Serial No\"],[\"item_name\",\"Serial No\"],[\"description\",\"Serial No\"],[\"item_group\",\"Serial No\"],[\"brand\",\"Serial No\"],[\"purchase_document_no\",\"Serial No\"],[\"purchase_date\",\"Serial No\"],[\"customer\",\"Serial No\"],[\"customer_name\",\"Serial No\"],[\"purchase_rate\",\"Serial No\"],[\"delivery_document_no\",\"Serial No\"],[\"delivery_date\",\"Serial No\"],[\"supplier\",\"Serial No\"],[\"supplier_name\",\"Serial No\"]],\"sort_by\":\"Serial No.name\",\"sort_order\":\"desc\",\"sort_by_next\":null,\"sort_order_next\":\"desc\"}",
- "modified": "2015-10-22 14:49:29.491790",
+ "json": "{\"filters\":[],\"columns\":[[\"name\",\"Serial No\"],[\"item_code\",\"Serial No\"],[\"warehouse\",\"Serial No\"],[\"item_name\",\"Serial No\"],[\"description\",\"Serial No\"],[\"item_group\",\"Serial No\"],[\"brand\",\"Serial No\"],[\"purchase_document_type\",\"Serial No\"],[\"purchase_document_no\",\"Serial No\"],[\"purchase_date\",\"Serial No\"],[\"customer\",\"Serial No\"],[\"customer_name\",\"Serial No\"],[\"purchase_rate\",\"Serial No\"],[\"delivery_document_no\",\"Serial No\"],[\"delivery_date\",\"Serial No\"],[\"supplier\",\"Serial No\"],[\"supplier_name\",\"Serial No\"]],\"sort_by\":\"Serial No.name\",\"sort_order\":\"desc\",\"sort_by_next\":null,\"sort_order_next\":\"desc\"}",
+ "modified": "2016-10-31 06:28:26.344862",
"modified_by": "Administrator",
"module": "Stock",
"name": "Serial No Status",