Fixed merge conflict
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index 9845dd2..1525849 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -2,7 +2,7 @@
 from __future__ import unicode_literals
 import frappe
 
-__version__ = '7.1.8'
+__version__ = '7.1.9'
 
 def get_default_company(user=None):
 	'''Get default company for user'''
diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py
index fddabcb..5773813 100644
--- a/erpnext/accounts/doctype/gl_entry/gl_entry.py
+++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py
@@ -195,6 +195,7 @@
 	if against_voucher_type in ["Sales Invoice", "Purchase Invoice"]:
 		ref_doc = frappe.get_doc(against_voucher_type, against_voucher)
 		ref_doc.db_set('outstanding_amount', bal)
+		ref_doc.set_status(update=True)
 
 def validate_frozen_account(account, adv_adj=None):
 	frozen_account = frappe.db.get_value("Account", account, "freeze_account")
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
index 13456da..0c8d1ac 100755
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
@@ -2875,6 +2875,35 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "default": "Draft", 
+   "fieldname": "status", 
+   "fieldtype": "Select", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Status", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "\nDraft\nReturn\nDebit Note Issued\nSubmitted\nPaid\nUnpaid\nOverdue\nCancelled", 
+   "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, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "posting_time", 
    "fieldtype": "Time", 
    "hidden": 0, 
@@ -3380,7 +3409,7 @@
  "istable": 0, 
  "max_attachments": 0, 
  "menu_index": 0, 
- "modified": "2016-11-07 05:56:20.055208", 
+ "modified": "2016-11-09 14:18:47.094777", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Purchase Invoice", 
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 22de07f..5c2b62c 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -65,6 +65,7 @@
 		self.validate_fixed_asset()
 		self.validate_fixed_asset_account()
 		self.create_remarks()
+		self.set_status()
 
 	def validate_cash(self):
 		if not self.cash_bank_account and flt(self.paid_amount):
@@ -596,6 +597,7 @@
 		self.make_gl_entries_on_cancel()
 		self.update_project()
 		self.update_fixed_asset()
+		frappe.db.set(self, 'status', 'Cancelled')
 
 	def update_project(self):
 		project_list = []
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js
index afcd61f..8283acc 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js
@@ -14,7 +14,9 @@
 			} else {
 				return [__("Unpaid"), "orange", "outstanding_amount,>,0|due,>=,Today"];
 			}
-		} else if(flt(doc.outstanding_amount)==0 && doc.docstatus==1) {
+		} else if(flt(doc.outstanding_amount) < 0 && doc.docstatus == 1) {
+			return [__("Debit Note Issued"), "darkgrey", "outstanding_amount,<,0"]
+		}else if(flt(doc.outstanding_amount)==0 && doc.docstatus==1) {
 			return [__("Paid"), "green", "outstanding_amount,=,0"];
 		}
 	}
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
index 4dfe790..602eabc 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
@@ -3180,6 +3180,35 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "default": "Draft", 
+   "fieldname": "status", 
+   "fieldtype": "Select", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 1, 
+   "in_list_view": 0, 
+   "label": "Status", 
+   "length": 0, 
+   "no_copy": 1, 
+   "options": "\nDraft\nReturn\nCredit Note Issued\nSubmitted\nPaid\nUnpaid\nOverdue\nCancelled", 
+   "permlevel": 0, 
+   "precision": "", 
+   "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, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "source", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -4153,7 +4182,7 @@
  "istable": 0, 
  "max_attachments": 0, 
  "menu_index": 0, 
- "modified": "2016-11-07 05:38:56.281432", 
+ "modified": "2016-11-09 14:18:24.760263", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Sales Invoice", 
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 521b0eb..4e0a6b4 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -86,6 +86,7 @@
 		self.update_packing_list()
 		self.set_billing_hours_and_amount()
 		self.update_timesheet_billing_for_project()
+		self.set_status()
 
 	def before_save(self):
 		set_account_for_mode_of_payment(self)
@@ -158,6 +159,7 @@
 			self.update_stock_ledger()
 
 		self.make_gl_entries_on_cancel()
+		frappe.db.set(self, 'status', 'Cancelled')
 
 	def update_status_updater_args(self):
 		if cint(self.update_stock):
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js
index 55e8b21..3c9c4b4 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js
@@ -10,9 +10,11 @@
 			return [__("Return"), "darkgrey", "is_return,=,Yes"];
 		} else if(flt(doc.outstanding_amount)==0) {
 			return [__("Paid"), "green", "outstanding_amount,=,0"]
-		} else if (flt(doc.outstanding_amount) > 0 && doc.due_date > frappe.datetime.get_today()) {
+		} else if(flt(doc.outstanding_amount) < 0) {
+			return [__("Credit Note Issued"), "darkgrey", "outstanding_amount,<,0"]
+		}else if (flt(doc.outstanding_amount) > 0 && doc.due_date >= frappe.datetime.get_today()) {
 			return [__("Unpaid"), "orange", "outstanding_amount,>,0|due_date,>,Today"]
-		} else if (flt(doc.outstanding_amount) > 0 && doc.due_date <= frappe.datetime.get_today()) {
+		} else if (flt(doc.outstanding_amount) > 0 && doc.due_date < frappe.datetime.get_today()) {
 			return [__("Overdue"), "red", "outstanding_amount,>,0|due_date,<=,Today"]
 		}
 	},
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 3d2f16b..b436670 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -720,4 +720,13 @@
 					and docstatus = 1 and unallocated_amount > 0
 			""".format(party_account_field), (party_account, party_type, party, payment_type), as_dict=1)
 
-	return list(payment_entries_against_order) + list(unallocated_payment_entries)
\ No newline at end of file
+	return list(payment_entries_against_order) + list(unallocated_payment_entries)
+
+def update_invoice_status():
+	# Daily update the status of the invoices
+
+	frappe.db.sql(""" update `tabSales Invoice` set status = 'Overdue' 
+		where due_date < CURDATE() and docstatus = 1 and outstanding_amount > 0""")
+
+	frappe.db.sql(""" update `tabPurchase Invoice` set status = 'Overdue' 
+		where due_date < CURDATE() and docstatus = 1 and outstanding_amount > 0""")
\ No newline at end of file
diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py
index 157c385..fcddc8f 100644
--- a/erpnext/controllers/status_updater.py
+++ b/erpnext/controllers/status_updater.py
@@ -3,7 +3,7 @@
 
 from __future__ import unicode_literals
 import frappe
-from frappe.utils import flt, comma_or
+from frappe.utils import flt, comma_or, nowdate, getdate
 from frappe import _
 from frappe.model.document import Document
 from erpnext.accounts.party_status import notify_status
@@ -41,6 +41,26 @@
 		["Cancelled", "eval:self.docstatus==2"],
 		["Closed", "eval:self.status=='Closed'"],
 	],
+	"Sales Invoice": [
+		["Draft", None],
+		["Submitted", "eval:self.docstatus==1"],
+		["Return", "eval:self.is_return==1 and self.docstatus==1"],
+		["Credit Note Issued", "eval:self.outstanding_amount < 0 and self.docstatus==1"],
+		["Paid", "eval:self.outstanding_amount==0 and self.docstatus==1 and self.is_return==0"],
+		["Unpaid", "eval:self.outstanding_amount > 0 and getdate(self.due_date) >= getdate(nowdate()) and self.docstatus==1"],
+		["Overdue", "eval:self.outstanding_amount > 0 and getdate(self.due_date) < getdate(nowdate()) and self.docstatus==1"],
+		["Cancelled", "eval:self.docstatus==2"],
+	],
+	"Purchase Invoice": [
+		["Draft", None],
+		["Submitted", "eval:self.docstatus==1"],
+		["Return", "eval:self.is_return==1 and self.docstatus==1"],
+		["Debit Note Issued", "eval:self.outstanding_amount < 0 and self.docstatus==1"],
+		["Paid", "eval:self.outstanding_amount==0 and self.docstatus==1 and self.is_return==0"],
+		["Unpaid", "eval:self.outstanding_amount > 0 and getdate(self.due_date) >= getdate(nowdate()) and self.docstatus==1"],
+		["Overdue", "eval:self.outstanding_amount > 0 and getdate(self.due_date) < getdate(nowdate()) and self.docstatus==1"],
+		["Cancelled", "eval:self.docstatus==2"],
+	],
 	"Purchase Order": [
 		["Draft", None],
 		["To Receive and Bill", "eval:self.per_received < 100 and self.per_billed < 100 and self.docstatus == 1"],
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 7f402f7..4a98470 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -189,6 +189,7 @@
 		"erpnext.stock.reorder_item.reorder_item",
 		"erpnext.setup.doctype.email_digest.email_digest.send",
 		"erpnext.support.doctype.issue.issue.auto_close_tickets",
+		"erpnext.controllers.accounts_controller.update_invoice_status",
 		"erpnext.accounts.doctype.fiscal_year.fiscal_year.auto_create_fiscal_year",
 		"erpnext.hr.doctype.employee.employee.send_birthday_reminders",
 		"erpnext.projects.doctype.task.task.set_tasks_as_overdue",
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 04e5bfc..db5ccd1 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -346,3 +346,5 @@
 erpnext.patches.v7_1.save_stock_settings
 erpnext.patches.v7_0.repost_gle_for_pi_with_update_stock #2016-11-01
 erpnext.patches.v7_1.add_account_user_role_for_timesheet
+erpnext.patches.v7_0.set_base_amount_in_invoice_payment_table
+erpnext.patches.v7_1.update_invoice_status
diff --git a/erpnext/patches/v7_0/set_base_amount_in_invoice_payment_table.py b/erpnext/patches/v7_0/set_base_amount_in_invoice_payment_table.py
new file mode 100644
index 0000000..89ce43b
--- /dev/null
+++ b/erpnext/patches/v7_0/set_base_amount_in_invoice_payment_table.py
@@ -0,0 +1,23 @@
+from __future__ import unicode_literals
+import frappe
+from frappe.utils import flt
+
+def execute():
+	si_list = frappe.db.sql("""
+		select distinct parent
+		from `tabSales Invoice Payment`
+		where docstatus!=2 and amount != 0 and base_amount = 0
+	""")
+
+	count = 0
+	for d in si_list:
+		si = frappe.get_doc("Sales Invoice", d[0])
+		for p in si.get("payments"):
+			if p.amount and not p.base_amount:
+				base_amount = flt(p.amount*si.conversion_rate, si.precision("base_paid_amount"))
+				frappe.db.set_value("Sales Invoice Payment", p.name, "base_amount", base_amount, update_modified=False)
+
+		count +=1
+			
+		if count % 200 == 0:
+			frappe.db.commit()
\ No newline at end of file
diff --git a/erpnext/patches/v7_1/update_invoice_status.py b/erpnext/patches/v7_1/update_invoice_status.py
new file mode 100644
index 0000000..851af80
--- /dev/null
+++ b/erpnext/patches/v7_1/update_invoice_status.py
@@ -0,0 +1,34 @@
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+
+def execute():
+	frappe.reload_doc('accounts', 'doctype', 'sales_invoice')
+	frappe.reload_doc('accounts', 'doctype', 'purchase_invoice')
+
+	frappe.db.sql(""" 
+		update 
+			`tabPurchase Invoice` 
+		set 
+			status = (Case When outstanding_amount = 0 and docstatus = 1 and is_return = 0 then 'Paid'
+			when due_date < CURDATE() and outstanding_amount > 0 and docstatus =1 then 'Overdue'
+			when due_date >= CURDATE() and outstanding_amount > 0 and docstatus =1 then 'Unpaid'
+			when outstanding_amount < 0 and docstatus =1 then 'Debit Note Issued'
+			when is_return = 1 and docstatus =1 then 'Return'
+			when docstatus = 2 then 'Cancelled'
+			else 'Draft'
+		End)""")
+
+	frappe.db.sql(""" 
+		update 
+			`tabSales Invoice` 
+		set status = (Case When outstanding_amount = 0 and docstatus = 1 and is_return = 0 then 'Paid'
+			when due_date < CURDATE() and outstanding_amount > 0 and docstatus =1 then 'Overdue'
+			when due_date >= CURDATE() and outstanding_amount > 0 and docstatus =1 then 'Unpaid'
+			when outstanding_amount < 0 and docstatus =1 then 'Credit Note Issued'
+			when is_return = 1 and docstatus =1 then 'Return'
+			when docstatus = 2 then 'Cancelled'
+			else 'Draft'
+		End)""")
\ No newline at end of file