Merge branch 'develop' of https://github.com/sbkolate/erpnext into sbkolate-develop
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
index 49ed12c..90f463a 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -233,6 +233,41 @@
 }
 
 
+
+cur_frm.cscript.is_recurring = function(doc, dt, dn) {
+	// set default values for recurring invoices
+	if(doc.is_recurring) {
+		var owner_email = doc.owner=="Administrator"
+			? frappe.user_info("Administrator").email
+			: doc.owner;
+
+		doc.notification_email_address = $.map([cstr(owner_email),
+			cstr(doc.contact_email)], function(v) { return v || null; }).join(", ");
+		doc.repeat_on_day_of_month = frappe.datetime.str_to_obj(doc.posting_date).getDate();
+	}
+
+	refresh_many(["notification_email_address", "repeat_on_day_of_month"]);
+}
+
+
+cur_frm.cscript.from_date = function(doc, dt, dn) {
+	// set to_date
+	if(doc.from_date) {
+		var recurring_type_map = {'Monthly': 1, 'Quarterly': 3, 'Half-yearly': 6,
+			'Yearly': 12};
+
+		var months = recurring_type_map[doc.recurring_type];
+		if(months) {
+			var to_date = frappe.datetime.add_months(doc.from_date,
+				months);
+			doc.to_date = frappe.datetime.add_days(to_date, -1);
+			refresh_field('to_date');
+		}
+	}
+}
+
+
+
 cur_frm.cscript.select_print_heading = function(doc,cdt,cdn){
 	if(doc.select_print_heading){
 		// print heading
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
index 9c70892..3a45136 100755
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
@@ -1,851 +1,980 @@
 {
- "allow_import": 1, 
- "autoname": "naming_series:", 
- "creation": "2013-05-21 16:16:39", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "fields": [
-  {
-   "fieldname": "supplier_section", 
-   "fieldtype": "Section Break", 
-   "label": "Supplier", 
-   "options": "icon-user", 
+"allow_import": 1,
+"autoname": "naming_series:",
+"creation": "2013-05-21 16:16:39",
+"docstatus": 0,
+"doctype": "DocType",
+"fields": [
+{
+"fieldname": "supplier_section",
+"fieldtype": "Section Break",
+"label": "Supplier",
+"options": "icon-user",
+"permlevel": 0
+},
+{
+"fieldname": "column_break0",
+"fieldtype": "Column Break",
+"oldfieldtype": "Column Break",
+"permlevel": 0,
+"read_only": 0,
+"width": "50%"
+},
+{
+"fieldname": "naming_series",
+"fieldtype": "Select",
+"label": "Series",
+"no_copy": 1,
+"oldfieldname": "naming_series",
+"oldfieldtype": "Select",
+"options": "PINV-",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0,
+"report_hide": 0,
+"reqd": 1
+},
+{
+"fieldname": "supplier",
+"fieldtype": "Link",
+"hidden": 0,
+"label": "Supplier",
+"oldfieldname": "supplier",
+"oldfieldtype": "Link",
+"options": "Supplier",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0
+},
+{
+"depends_on": "supplier",
+"fieldname": "supplier_name",
+"fieldtype": "Data",
+"hidden": 0,
+"in_list_view": 1,
+"label": "Name",
+"oldfieldname": "supplier_name",
+"oldfieldtype": "Data",
+"permlevel": 0,
+"read_only": 1
+},
+{
+"fieldname": "address_display",
+"fieldtype": "Small Text",
+"hidden": 1,
+"label": "Address",
+"permlevel": 0,
+"read_only": 1
+},
+{
+"fieldname": "contact_display",
+"fieldtype": "Small Text",
+"hidden": 1,
+"label": "Contact",
+"permlevel": 0,
+"read_only": 1
+},
+{
+"fieldname": "contact_mobile",
+"fieldtype": "Small Text",
+"hidden": 1,
+"label": "Mobile No",
+"permlevel": 0,
+"read_only": 1
+},
+{
+"fieldname": "contact_email",
+"fieldtype": "Small Text",
+"hidden": 1,
+"label": "Contact Email",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "column_break1",
+"fieldtype": "Column Break",
+"oldfieldtype": "Column Break",
+"permlevel": 0,
+"read_only": 0,
+"reqd": 0,
+"width": "50%"
+},
+{
+"default": "Today",
+"fieldname": "posting_date",
+"fieldtype": "Date",
+"in_filter": 1,
+"label": "Date",
+"no_copy": 0,
+"oldfieldname": "posting_date",
+"oldfieldtype": "Date",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0,
+"reqd": 1,
+"search_index": 1
+},
+{
+"description": "",
+"fieldname": "bill_no",
+"fieldtype": "Data",
+"in_filter": 1,
+"label": "Supplier Invoice No",
+"oldfieldname": "bill_no",
+"oldfieldtype": "Data",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0,
+"reqd": 0,
+"search_index": 1
+},
+{
+"fieldname": "bill_date",
+"fieldtype": "Date",
+"in_filter": 1,
+"label": "Supplier Invoice Date",
+"oldfieldname": "bill_date",
+"oldfieldtype": "Date",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0,
+"reqd": 0,
+"search_index": 1
+},
+{
+   "allow_on_submit": 1, 
+   "description": "Start date of current invoice's period", 
+   "fieldname": "from_date", 
+   "fieldtype": "Date", 
+   "label": "From", 
+   "no_copy": 1, 
    "permlevel": 0
   }, 
   {
-   "fieldname": "column_break0", 
-   "fieldtype": "Column Break", 
-   "oldfieldtype": "Column Break", 
-   "permlevel": 0, 
-   "read_only": 0, 
-   "width": "50%"
-  }, 
-  {
-   "fieldname": "naming_series", 
-   "fieldtype": "Select", 
-   "label": "Series", 
-   "no_copy": 1, 
-   "oldfieldname": "naming_series", 
-   "oldfieldtype": "Select", 
-   "options": "PINV-", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 1
-  }, 
-  {
-   "fieldname": "supplier", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "label": "Supplier", 
-   "oldfieldname": "supplier", 
-   "oldfieldtype": "Link", 
-   "options": "Supplier", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0
-  }, 
-  {
-   "depends_on": "supplier", 
-   "fieldname": "supplier_name", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "in_list_view": 1, 
-   "label": "Name", 
-   "oldfieldname": "supplier_name", 
-   "oldfieldtype": "Data", 
-   "permlevel": 0, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "address_display", 
-   "fieldtype": "Small Text", 
-   "hidden": 1, 
-   "label": "Address", 
-   "permlevel": 0, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "contact_display", 
-   "fieldtype": "Small Text", 
-   "hidden": 1, 
-   "label": "Contact", 
-   "permlevel": 0, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "contact_mobile", 
-   "fieldtype": "Small Text", 
-   "hidden": 1, 
-   "label": "Mobile No", 
-   "permlevel": 0, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "contact_email", 
-   "fieldtype": "Small Text", 
-   "hidden": 1, 
-   "label": "Contact Email", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "column_break1", 
-   "fieldtype": "Column Break", 
-   "oldfieldtype": "Column Break", 
-   "permlevel": 0, 
-   "read_only": 0, 
-   "reqd": 0, 
-   "width": "50%"
-  }, 
-  {
-   "default": "Today", 
-   "fieldname": "posting_date", 
+   "allow_on_submit": 1, 
+   "description": "End date of current invoice's period", 
+   "fieldname": "to_date", 
    "fieldtype": "Date", 
-   "in_filter": 1, 
-   "label": "Date", 
-   "no_copy": 0, 
-   "oldfieldname": "posting_date", 
-   "oldfieldtype": "Date", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "reqd": 1, 
-   "search_index": 1
-  }, 
-  {
-   "description": "", 
-   "fieldname": "bill_no", 
-   "fieldtype": "Data", 
-   "in_filter": 1, 
-   "label": "Supplier Invoice No", 
-   "oldfieldname": "bill_no", 
-   "oldfieldtype": "Data", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "reqd": 0, 
-   "search_index": 1
-  }, 
-  {
-   "fieldname": "bill_date", 
-   "fieldtype": "Date", 
-   "in_filter": 1, 
-   "label": "Supplier Invoice Date", 
-   "oldfieldname": "bill_date", 
-   "oldfieldtype": "Date", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "reqd": 0, 
-   "search_index": 1
-  }, 
-  {
-   "fieldname": "amended_from", 
-   "fieldtype": "Link", 
-   "ignore_user_permissions": 1, 
-   "label": "Amended From", 
+   "label": "To", 
    "no_copy": 1, 
-   "oldfieldname": "amended_from", 
-   "oldfieldtype": "Link", 
-   "options": "Purchase Invoice", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1
+   "permlevel": 0
   }, 
   {
-   "fieldname": "company", 
-   "fieldtype": "Link", 
-   "in_filter": 1, 
-   "label": "Company", 
-   "oldfieldname": "company", 
-   "oldfieldtype": "Link", 
-   "options": "Company", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "search_index": 1
+"fieldname": "amended_from",
+"fieldtype": "Link",
+"ignore_user_permissions": 1,
+"label": "Amended From",
+"no_copy": 1,
+"oldfieldname": "amended_from",
+"oldfieldtype": "Link",
+"options": "Purchase Invoice",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "company",
+"fieldtype": "Link",
+"in_filter": 1,
+"label": "Company",
+"oldfieldname": "company",
+"oldfieldtype": "Link",
+"options": "Company",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0,
+"search_index": 1
+},
+{
+"fieldname": "currency_price_list",
+"fieldtype": "Section Break",
+"label": "Currency and Price List",
+"options": "icon-tag",
+"permlevel": 0,
+"read_only": 0
+},
+{
+"fieldname": "currency",
+"fieldtype": "Link",
+"label": "Currency",
+"oldfieldname": "currency",
+"oldfieldtype": "Select",
+"options": "Currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0
+},
+{
+"description": "The rate at which Bill Currency is converted into company's base currency",
+"fieldname": "conversion_rate",
+"fieldtype": "Float",
+"label": "Exchange Rate",
+"oldfieldname": "conversion_rate",
+"oldfieldtype": "Currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0
+},
+{
+"fieldname": "column_break2",
+"fieldtype": "Column Break",
+"permlevel": 0,
+"read_only": 0
+},
+{
+"fieldname": "buying_price_list",
+"fieldtype": "Link",
+"label": "Price List",
+"options": "Price List",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0
+},
+{
+"fieldname": "price_list_currency",
+"fieldtype": "Link",
+"label": "Price List Currency",
+"options": "Currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "plc_conversion_rate",
+"fieldtype": "Float",
+"label": "Price List Exchange Rate",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0
+},
+{
+"fieldname": "ignore_pricing_rule",
+"fieldtype": "Check",
+"label": "Ignore Pricing Rule",
+"no_copy": 1,
+"permlevel": 1,
+"print_hide": 1
+},
+{
+"fieldname": "items",
+"fieldtype": "Section Break",
+"label": "Items",
+"oldfieldtype": "Section Break",
+"options": "icon-shopping-cart",
+"permlevel": 0,
+"read_only": 0
+},
+{
+"allow_on_submit": 1,
+"fieldname": "entries",
+"fieldtype": "Table",
+"label": "Entries",
+"oldfieldname": "entries",
+"oldfieldtype": "Table",
+"options": "Purchase Invoice Item",
+"permlevel": 0,
+"read_only": 0
+},
+{
+"fieldname": "section_break_26",
+"fieldtype": "Section Break",
+"permlevel": 0
+},
+{
+"description": "Will be calculated automatically when you enter the details",
+"fieldname": "net_total",
+"fieldtype": "Currency",
+"label": "Net Total (Company Currency)",
+"oldfieldname": "net_total",
+"oldfieldtype": "Currency",
+"options": "Company:company:default_currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "column_break_28",
+"fieldtype": "Column Break",
+"permlevel": 0
+},
+{
+"fieldname": "net_total_import",
+"fieldtype": "Currency",
+"label": "Net Total",
+"oldfieldname": "net_total_import",
+"oldfieldtype": "Currency",
+"options": "currency",
+"permlevel": 0,
+"print_hide": 0,
+"read_only": 1
+},
+{
+"fieldname": "taxes",
+"fieldtype": "Section Break",
+"label": "Taxes and Charges",
+"oldfieldtype": "Section Break",
+"options": "icon-money",
+"permlevel": 0,
+"read_only": 0
+},
+{
+"fieldname": "taxes_and_charges",
+"fieldtype": "Link",
+"label": "Taxes and Charges",
+"oldfieldname": "purchase_other_charges",
+"oldfieldtype": "Link",
+"options": "Purchase Taxes and Charges Master",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0
+},
+{
+"fieldname": "other_charges",
+"fieldtype": "Table",
+"label": "Purchase Taxes and Charges",
+"oldfieldname": "purchase_tax_details",
+"oldfieldtype": "Table",
+"options": "Purchase Taxes and Charges",
+"permlevel": 0,
+"read_only": 0
+},
+{
+"fieldname": "other_charges_calculation",
+"fieldtype": "HTML",
+"label": "Taxes and Charges Calculation",
+"oldfieldtype": "HTML",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0
+},
+{
+"fieldname": "totals",
+"fieldtype": "Section Break",
+"label": "Totals",
+"oldfieldtype": "Section Break",
+"options": "icon-money",
+"permlevel": 0,
+"read_only": 0
+},
+{
+"fieldname": "other_charges_added",
+"fieldtype": "Currency",
+"label": "Taxes and Charges Added (Company Currency)",
+"oldfieldname": "other_charges_added",
+"oldfieldtype": "Currency",
+"options": "Company:company:default_currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "other_charges_deducted",
+"fieldtype": "Currency",
+"label": "Taxes and Charges Deducted (Company Currency)",
+"oldfieldname": "other_charges_deducted",
+"oldfieldtype": "Currency",
+"options": "Company:company:default_currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "grand_total",
+"fieldtype": "Currency",
+"label": "Grand Total (Company Currency)",
+"oldfieldname": "grand_total",
+"oldfieldtype": "Currency",
+"options": "Company:company:default_currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"description": "In Words will be visible once you save the Purchase Invoice.",
+"fieldname": "in_words",
+"fieldtype": "Data",
+"label": "In Words (Company Currency)",
+"oldfieldname": "in_words",
+"oldfieldtype": "Data",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "column_break8",
+"fieldtype": "Column Break",
+"oldfieldtype": "Column Break",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0,
+"width": "50%"
+},
+{
+"fieldname": "other_charges_added_import",
+"fieldtype": "Currency",
+"label": "Taxes and Charges Added",
+"oldfieldname": "other_charges_added_import",
+"oldfieldtype": "Currency",
+"options": "currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "other_charges_deducted_import",
+"fieldtype": "Currency",
+"label": "Taxes and Charges Deducted",
+"oldfieldname": "other_charges_deducted_import",
+"oldfieldtype": "Currency",
+"options": "currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "grand_total_import",
+"fieldtype": "Currency",
+"in_list_view": 1,
+"label": "Grand Total",
+"oldfieldname": "grand_total_import",
+"oldfieldtype": "Currency",
+"options": "currency",
+"permlevel": 0,
+"print_hide": 0,
+"read_only": 1
+},
+{
+"fieldname": "in_words_import",
+"fieldtype": "Data",
+"label": "In Words",
+"oldfieldname": "in_words_import",
+"oldfieldtype": "Data",
+"permlevel": 0,
+"print_hide": 0,
+"read_only": 1
+},
+{
+"fieldname": "total_amount_to_pay",
+"fieldtype": "Currency",
+"hidden": 0,
+"label": "Total Amount To Pay",
+"no_copy": 1,
+"oldfieldname": "total_amount_to_pay",
+"oldfieldtype": "Currency",
+"options": "Company:company:default_currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "total_advance",
+"fieldtype": "Currency",
+"label": "Total Advance",
+"no_copy": 1,
+"oldfieldname": "total_advance",
+"oldfieldtype": "Currency",
+"options": "Company:company:default_currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "total_tax",
+"fieldtype": "Currency",
+"label": "Total Tax (Company Currency)",
+"oldfieldname": "total_tax",
+"oldfieldtype": "Currency",
+"options": "Company:company:default_currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "outstanding_amount",
+"fieldtype": "Currency",
+"in_filter": 1,
+"in_list_view": 1,
+"label": "Outstanding Amount",
+"no_copy": 1,
+"oldfieldname": "outstanding_amount",
+"oldfieldtype": "Currency",
+"options": "Company:company:default_currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1,
+"search_index": 1
+},
+{
+"fieldname": "write_off_amount",
+"fieldtype": "Currency",
+"label": "Write Off Amount",
+"no_copy": 1,
+"options": "Company:company:default_currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0
+},
+{
+"depends_on": "eval:flt(doc.write_off_amount)!=0",
+"fieldname": "write_off_account",
+"fieldtype": "Link",
+"label": "Write Off Account",
+"no_copy": 1,
+"options": "Account",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0
+},
+{
+"depends_on": "eval:flt(doc.write_off_amount)!=0",
+"fieldname": "write_off_cost_center",
+"fieldtype": "Link",
+"label": "Write Off Cost Center",
+"no_copy": 1,
+"options": "Cost Center",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0
+},
+{
+"fieldname": "against_expense_account",
+"fieldtype": "Small Text",
+"hidden": 1,
+"label": "Against Expense Account",
+"no_copy": 1,
+"oldfieldname": "against_expense_account",
+"oldfieldtype": "Small Text",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0,
+"report_hide": 0
+},
+{
+"fieldname": "fold",
+"fieldtype": "Fold",
+"permlevel": 0
+},
+{
+"fieldname": "advances",
+"fieldtype": "Section Break",
+"label": "Advances",
+"oldfieldtype": "Section Break",
+"options": "icon-money",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0
+},
+{
+"fieldname": "get_advances_paid",
+"fieldtype": "Button",
+"label": "Get Advances Paid",
+"oldfieldtype": "Button",
+"options": "get_advances",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0
+},
+{
+"fieldname": "advance_allocation_details",
+"fieldtype": "Table",
+"label": "Purchase Invoice Advances",
+"no_copy": 1,
+"oldfieldname": "advance_allocation_details",
+"oldfieldtype": "Table",
+"options": "Purchase Invoice Advance",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0
+},
+{
+"fieldname": "terms_section_break",
+"fieldtype": "Section Break",
+"label": "Terms and Conditions",
+"options": "icon-legal",
+"permlevel": 0
+},
+{
+"fieldname": "tc_name",
+"fieldtype": "Link",
+"label": "Terms",
+"options": "Terms and Conditions",
+"permlevel": 0,
+"print_hide": 1
+},
+{
+"fieldname": "terms",
+"fieldtype": "Text Editor",
+"label": "Terms and Conditions1",
+"permlevel": 0
+},
+{
+"depends_on": "supplier",
+"fieldname": "contact_section",
+"fieldtype": "Section Break",
+"label": "Contact Info",
+"options": "icon-bullhorn",
+"permlevel": 0,
+"read_only": 0
+},
+{
+"fieldname": "supplier_address",
+"fieldtype": "Link",
+"label": "Supplier Address",
+"options": "Address",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0
+},
+{
+"fieldname": "col_break23",
+"fieldtype": "Column Break",
+"permlevel": 0,
+"read_only": 0,
+"width": "50%"
+},
+{
+"fieldname": "contact_person",
+"fieldtype": "Link",
+"label": "Contact Person",
+"options": "Contact",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0
+},
+{
+"fieldname": "more_info",
+"fieldtype": "Section Break",
+"label": "More Info",
+"oldfieldtype": "Section Break",
+"options": "icon-file-text",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0
+},
+{
+"description": "Supplier (Payable) Account",
+"fieldname": "credit_to",
+"fieldtype": "Link",
+"in_filter": 1,
+"label": "Credit To",
+"oldfieldname": "credit_to",
+"oldfieldtype": "Link",
+"options": "Account",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0,
+"reqd": 1,
+"search_index": 1
+},
+{
+"default": "No",
+"description": "Considered as Opening Balance",
+"fieldname": "is_opening",
+"fieldtype": "Select",
+"in_filter": 1,
+"label": "Is Opening",
+"oldfieldname": "is_opening",
+"oldfieldtype": "Select",
+"options": "No\nYes",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0,
+"search_index": 1
+},
+{
+"description": "Actual Invoice Date",
+"fieldname": "aging_date",
+"fieldtype": "Date",
+"label": "Aging Date",
+"oldfieldname": "aging_date",
+"oldfieldtype": "Date",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0,
+"search_index": 0
+},
+{
+"allow_on_submit": 1,
+"fieldname": "select_print_heading",
+"fieldtype": "Link",
+"label": "Print Heading",
+"no_copy": 1,
+"oldfieldname": "select_print_heading",
+"oldfieldtype": "Link",
+"options": "Print Heading",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0,
+"report_hide": 1
+},
+{
+"fieldname": "due_date",
+"fieldtype": "Date",
+"in_filter": 1,
+"label": "Due Date",
+"no_copy": 0,
+"oldfieldname": "due_date",
+"oldfieldtype": "Date",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0,
+"search_index": 1
+},
+{
+"fieldname": "mode_of_payment",
+"fieldtype": "Link",
+"label": "Mode of Payment",
+"oldfieldname": "mode_of_payment",
+"oldfieldtype": "Select",
+"options": "Mode of Payment",
+"permlevel": 0,
+"read_only": 0
+},
+{
+"fieldname": "column_break_63",
+"fieldtype": "Column Break",
+"permlevel": 0,
+"read_only": 0
+},
+{
+"allow_on_submit": 1,
+"fieldname": "letter_head",
+"fieldtype": "Link",
+"label": "Letter Head",
+"options": "Letter Head",
+"permlevel": 0,
+"print_hide": 1
+},
+{
+"fieldname": "fiscal_year",
+"fieldtype": "Link",
+"in_filter": 1,
+"label": "Fiscal Year",
+"oldfieldname": "fiscal_year",
+"oldfieldtype": "Select",
+"options": "Fiscal Year",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0,
+"search_index": 1
+},
+{
+"fieldname": "remarks",
+"fieldtype": "Small Text",
+"label": "Remarks",
+"no_copy": 1,
+"oldfieldname": "remarks",
+"oldfieldtype": "Text",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 0,
+"reqd": 0
   }, 
   {
-   "fieldname": "currency_price_list", 
+   "depends_on": "eval:doc.docstatus<2", 
+   "fieldname": "recurring_invoice", 
    "fieldtype": "Section Break", 
-   "label": "Currency and Price List", 
-   "options": "icon-tag", 
+   "label": "Recurring Invoice", 
+   "options": "icon-time", 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": 1
   }, 
   {
-   "fieldname": "currency", 
-   "fieldtype": "Link", 
-   "label": "Currency", 
-   "oldfieldname": "currency", 
-   "oldfieldtype": "Select", 
-   "options": "Currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0
-  }, 
-  {
-   "description": "The rate at which Bill Currency is converted into company's base currency", 
-   "fieldname": "conversion_rate", 
-   "fieldtype": "Float", 
-   "label": "Exchange Rate", 
-   "oldfieldname": "conversion_rate", 
-   "oldfieldtype": "Currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0
-  }, 
-  {
-   "fieldname": "column_break2", 
+   "fieldname": "column_break_77", 
    "fieldtype": "Column Break", 
    "permlevel": 0, 
-   "read_only": 0
-  }, 
-  {
-   "fieldname": "buying_price_list", 
-   "fieldtype": "Link", 
-   "label": "Price List", 
-   "options": "Price List", 
-   "permlevel": 0, 
    "print_hide": 1, 
-   "read_only": 0
+   "width": "50%"
   }, 
   {
-   "fieldname": "price_list_currency", 
-   "fieldtype": "Link", 
-   "label": "Price List Currency", 
-   "options": "Currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "plc_conversion_rate", 
-   "fieldtype": "Float", 
-   "label": "Price List Exchange Rate", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0
-  }, 
-  {
-   "fieldname": "ignore_pricing_rule", 
+   "allow_on_submit": 1, 
+   "depends_on": "eval:doc.docstatus<2", 
+   "description": "Check if recurring invoice, uncheck to stop recurring or put proper End Date", 
+   "fieldname": "is_recurring", 
    "fieldtype": "Check", 
-   "label": "Ignore Pricing Rule", 
+   "label": "Is Recurring", 
    "no_copy": 1, 
-   "permlevel": 1, 
+   "permlevel": 0, 
    "print_hide": 1
   }, 
   {
-   "fieldname": "items", 
-   "fieldtype": "Section Break", 
-   "label": "Items", 
-   "oldfieldtype": "Section Break", 
-   "options": "icon-shopping-cart", 
+   "allow_on_submit": 1, 
+   "depends_on": "eval:doc.is_recurring==1", 
+   "description": "Select the period when the invoice will be generated automatically", 
+   "fieldname": "recurring_type", 
+   "fieldtype": "Select", 
+   "label": "Recurring Type", 
+   "no_copy": 1, 
+   "options": "Monthly\nQuarterly\nHalf-yearly\nYearly", 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": 1
   }, 
   {
    "allow_on_submit": 1, 
-   "fieldname": "entries", 
-   "fieldtype": "Table", 
-   "label": "Entries", 
-   "oldfieldname": "entries", 
-   "oldfieldtype": "Table", 
-   "options": "Purchase Invoice Item", 
+   "depends_on": "eval:doc.is_recurring==1", 
+   "description": "The day of the month on which auto invoice will be generated e.g. 05, 28 etc", 
+   "fieldname": "repeat_on_day_of_month", 
+   "fieldtype": "Int", 
+   "label": "Repeat on Day of Month", 
+   "no_copy": 1, 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": 1
   }, 
   {
-   "fieldname": "section_break_26", 
-   "fieldtype": "Section Break", 
-   "permlevel": 0
-  }, 
-  {
-   "description": "Will be calculated automatically when you enter the details", 
-   "fieldname": "net_total", 
-   "fieldtype": "Currency", 
-   "label": "Net Total (Company Currency)", 
-   "oldfieldname": "net_total", 
-   "oldfieldtype": "Currency", 
-   "options": "Company:company:default_currency", 
+   "depends_on": "eval:doc.is_recurring==1", 
+   "description": "The date on which next invoice will be generated. It is generated on submit.", 
+   "fieldname": "next_date", 
+   "fieldtype": "Date", 
+   "label": "Next Date", 
+   "no_copy": 1, 
    "permlevel": 0, 
    "print_hide": 1, 
    "read_only": 1
   }, 
   {
-   "fieldname": "column_break_28", 
+   "fieldname": "column_break_82", 
    "fieldtype": "Column Break", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "net_total_import", 
-   "fieldtype": "Currency", 
-   "label": "Net Total", 
-   "oldfieldname": "net_total_import", 
-   "oldfieldtype": "Currency", 
-   "options": "currency", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "taxes", 
-   "fieldtype": "Section Break", 
-   "label": "Taxes and Charges", 
-   "oldfieldtype": "Section Break", 
-   "options": "icon-money", 
-   "permlevel": 0, 
-   "read_only": 0
-  }, 
-  {
-   "fieldname": "taxes_and_charges", 
-   "fieldtype": "Link", 
-   "label": "Taxes and Charges", 
-   "oldfieldname": "purchase_other_charges", 
-   "oldfieldtype": "Link", 
-   "options": "Purchase Taxes and Charges Master", 
    "permlevel": 0, 
    "print_hide": 1, 
-   "read_only": 0
-  }, 
-  {
-   "fieldname": "other_charges", 
-   "fieldtype": "Table", 
-   "label": "Purchase Taxes and Charges", 
-   "oldfieldname": "purchase_tax_details", 
-   "oldfieldtype": "Table", 
-   "options": "Purchase Taxes and Charges", 
-   "permlevel": 0, 
-   "read_only": 0
-  }, 
-  {
-   "fieldname": "other_charges_calculation", 
-   "fieldtype": "HTML", 
-   "label": "Taxes and Charges Calculation", 
-   "oldfieldtype": "HTML", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0
-  }, 
-  {
-   "fieldname": "totals", 
-   "fieldtype": "Section Break", 
-   "label": "Totals", 
-   "oldfieldtype": "Section Break", 
-   "options": "icon-money", 
-   "permlevel": 0, 
-   "read_only": 0
-  }, 
-  {
-   "fieldname": "other_charges_added", 
-   "fieldtype": "Currency", 
-   "label": "Taxes and Charges Added (Company Currency)", 
-   "oldfieldname": "other_charges_added", 
-   "oldfieldtype": "Currency", 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "other_charges_deducted", 
-   "fieldtype": "Currency", 
-   "label": "Taxes and Charges Deducted (Company Currency)", 
-   "oldfieldname": "other_charges_deducted", 
-   "oldfieldtype": "Currency", 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "grand_total", 
-   "fieldtype": "Currency", 
-   "label": "Grand Total (Company Currency)", 
-   "oldfieldname": "grand_total", 
-   "oldfieldtype": "Currency", 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1
-  }, 
-  {
-   "description": "In Words will be visible once you save the Purchase Invoice.", 
-   "fieldname": "in_words", 
-   "fieldtype": "Data", 
-   "label": "In Words (Company Currency)", 
-   "oldfieldname": "in_words", 
-   "oldfieldtype": "Data", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "column_break8", 
-   "fieldtype": "Column Break", 
-   "oldfieldtype": "Column Break", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
    "width": "50%"
   }, 
   {
-   "fieldname": "other_charges_added_import", 
-   "fieldtype": "Currency", 
-   "label": "Taxes and Charges Added", 
-   "oldfieldname": "other_charges_added_import", 
-   "oldfieldtype": "Currency", 
-   "options": "currency", 
+   "allow_on_submit": 1, 
+   "depends_on": "eval:doc.is_recurring==1", 
+   "description": "The date on which recurring invoice will be stop", 
+   "fieldname": "end_date", 
+   "fieldtype": "Date", 
+   "label": "End Date", 
+   "no_copy": 1, 
    "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1
+   "print_hide": 1
   }, 
   {
-   "fieldname": "other_charges_deducted_import", 
-   "fieldtype": "Currency", 
-   "label": "Taxes and Charges Deducted", 
-   "oldfieldname": "other_charges_deducted_import", 
-   "oldfieldtype": "Currency", 
-   "options": "currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "grand_total_import", 
-   "fieldtype": "Currency", 
-   "in_list_view": 1, 
-   "label": "Grand Total", 
-   "oldfieldname": "grand_total_import", 
-   "oldfieldtype": "Currency", 
-   "options": "currency", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "in_words_import", 
+   "depends_on": "eval:doc.is_recurring==1", 
+   "description": "The unique id for tracking all recurring invoices. It is generated on submit.", 
+   "fieldname": "recurring_id", 
    "fieldtype": "Data", 
-   "label": "In Words", 
-   "oldfieldname": "in_words_import", 
-   "oldfieldtype": "Data", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "total_amount_to_pay", 
-   "fieldtype": "Currency", 
-   "hidden": 0, 
-   "label": "Total Amount To Pay", 
+   "label": "Recurring Id", 
    "no_copy": 1, 
-   "oldfieldname": "total_amount_to_pay", 
-   "oldfieldtype": "Currency", 
-   "options": "Company:company:default_currency", 
    "permlevel": 0, 
    "print_hide": 1, 
    "read_only": 1
   }, 
   {
-   "fieldname": "total_advance", 
-   "fieldtype": "Currency", 
-   "label": "Total Advance", 
+   "allow_on_submit": 1, 
+   "depends_on": "eval:doc.is_recurring==1", 
+   "description": "Enter email id separated by commas, invoice will be mailed automatically on particular date", 
+   "fieldname": "notification_email_address", 
+   "fieldtype": "Small Text", 
+   "label": "Notification Email Address", 
    "no_copy": 1, 
-   "oldfieldname": "total_advance", 
-   "oldfieldtype": "Currency", 
-   "options": "Company:company:default_currency", 
    "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1
+   "print_hide": 1
   }, 
   {
-   "fieldname": "total_tax", 
-   "fieldtype": "Currency", 
-   "label": "Total Tax (Company Currency)", 
-   "oldfieldname": "total_tax", 
-   "oldfieldtype": "Currency", 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "outstanding_amount", 
-   "fieldtype": "Currency", 
-   "in_filter": 1, 
-   "in_list_view": 1, 
-   "label": "Outstanding Amount", 
-   "no_copy": 1, 
-   "oldfieldname": "outstanding_amount", 
-   "oldfieldtype": "Currency", 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1, 
-   "search_index": 1
-  }, 
-  {
-   "fieldname": "write_off_amount", 
-   "fieldtype": "Currency", 
-   "label": "Write Off Amount", 
-   "no_copy": 1, 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0
-  }, 
-  {
-   "depends_on": "eval:flt(doc.write_off_amount)!=0", 
-   "fieldname": "write_off_account", 
-   "fieldtype": "Link", 
-   "label": "Write Off Account", 
-   "no_copy": 1, 
-   "options": "Account", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0
-  }, 
-  {
-   "depends_on": "eval:flt(doc.write_off_amount)!=0", 
-   "fieldname": "write_off_cost_center", 
-   "fieldtype": "Link", 
-   "label": "Write Off Cost Center", 
-   "no_copy": 1, 
-   "options": "Cost Center", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0
-  }, 
-  {
-   "fieldname": "against_expense_account", 
+   "fieldname": "against_income_account", 
    "fieldtype": "Small Text", 
    "hidden": 1, 
-   "label": "Against Expense Account", 
+   "label": "Against Income Account", 
    "no_copy": 1, 
-   "oldfieldname": "against_expense_account", 
-   "oldfieldtype": "Small Text", 
    "permlevel": 0, 
    "print_hide": 1, 
-   "read_only": 0, 
-   "report_hide": 0
-  }, 
-  {
-   "fieldname": "fold", 
-   "fieldtype": "Fold", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "advances", 
-   "fieldtype": "Section Break", 
-   "label": "Advances", 
-   "oldfieldtype": "Section Break", 
-   "options": "icon-money", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0
-  }, 
-  {
-   "fieldname": "get_advances_paid", 
-   "fieldtype": "Button", 
-   "label": "Get Advances Paid", 
-   "oldfieldtype": "Button", 
-   "options": "get_advances", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0
-  }, 
-  {
-   "fieldname": "advance_allocation_details", 
-   "fieldtype": "Table", 
-   "label": "Purchase Invoice Advances", 
-   "no_copy": 1, 
-   "oldfieldname": "advance_allocation_details", 
-   "oldfieldtype": "Table", 
-   "options": "Purchase Invoice Advance", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0
-  }, 
-  {
-   "fieldname": "terms_section_break", 
-   "fieldtype": "Section Break", 
-   "label": "Terms and Conditions", 
-   "options": "icon-legal", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "tc_name", 
-   "fieldtype": "Link", 
-   "label": "Terms", 
-   "options": "Terms and Conditions", 
-   "permlevel": 0, 
-   "print_hide": 1
-  }, 
-  {
-   "fieldname": "terms", 
-   "fieldtype": "Text Editor", 
-   "label": "Terms and Conditions1", 
-   "permlevel": 0
-  }, 
-  {
-   "depends_on": "supplier", 
-   "fieldname": "contact_section", 
-   "fieldtype": "Section Break", 
-   "label": "Contact Info", 
-   "options": "icon-bullhorn", 
-   "permlevel": 0, 
-   "read_only": 0
-  }, 
-  {
-   "fieldname": "supplier_address", 
-   "fieldtype": "Link", 
-   "label": "Supplier Address", 
-   "options": "Address", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0
-  }, 
-  {
-   "fieldname": "col_break23", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0, 
-   "read_only": 0, 
-   "width": "50%"
-  }, 
-  {
-   "fieldname": "contact_person", 
-   "fieldtype": "Link", 
-   "label": "Contact Person", 
-   "options": "Contact", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0
-  }, 
-  {
-   "fieldname": "more_info", 
-   "fieldtype": "Section Break", 
-   "label": "More Info", 
-   "oldfieldtype": "Section Break", 
-   "options": "icon-file-text", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0
-  }, 
-  {
-   "description": "Supplier (Payable) Account", 
-   "fieldname": "credit_to", 
-   "fieldtype": "Link", 
-   "in_filter": 1, 
-   "label": "Credit To", 
-   "oldfieldname": "credit_to", 
-   "oldfieldtype": "Link", 
-   "options": "Account", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "reqd": 1, 
-   "search_index": 1
-  }, 
-  {
-   "default": "No", 
-   "description": "Considered as Opening Balance", 
-   "fieldname": "is_opening", 
-   "fieldtype": "Select", 
-   "in_filter": 1, 
-   "label": "Is Opening", 
-   "oldfieldname": "is_opening", 
-   "oldfieldtype": "Select", 
-   "options": "No\nYes", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "search_index": 1
-  }, 
-  {
-   "description": "Actual Invoice Date", 
-   "fieldname": "aging_date", 
-   "fieldtype": "Date", 
-   "label": "Aging Date", 
-   "oldfieldname": "aging_date", 
-   "oldfieldtype": "Date", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "search_index": 0
-  }, 
-  {
-   "allow_on_submit": 1, 
-   "fieldname": "select_print_heading", 
-   "fieldtype": "Link", 
-   "label": "Print Heading", 
-   "no_copy": 1, 
-   "oldfieldname": "select_print_heading", 
-   "oldfieldtype": "Link", 
-   "options": "Print Heading", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
    "report_hide": 1
-  }, 
-  {
-   "fieldname": "due_date", 
-   "fieldtype": "Date", 
-   "in_filter": 1, 
-   "label": "Due Date", 
-   "no_copy": 0, 
-   "oldfieldname": "due_date", 
-   "oldfieldtype": "Date", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "search_index": 1
-  }, 
-  {
-   "fieldname": "mode_of_payment", 
-   "fieldtype": "Link", 
-   "label": "Mode of Payment", 
-   "oldfieldname": "mode_of_payment", 
-   "oldfieldtype": "Select", 
-   "options": "Mode of Payment", 
-   "permlevel": 0, 
-   "read_only": 0
-  }, 
-  {
-   "fieldname": "column_break_63", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0, 
-   "read_only": 0
-  }, 
-  {
-   "allow_on_submit": 1, 
-   "fieldname": "letter_head", 
-   "fieldtype": "Link", 
-   "label": "Letter Head", 
-   "options": "Letter Head", 
-   "permlevel": 0, 
-   "print_hide": 1
-  }, 
-  {
-   "fieldname": "fiscal_year", 
-   "fieldtype": "Link", 
-   "in_filter": 1, 
-   "label": "Fiscal Year", 
-   "oldfieldname": "fiscal_year", 
-   "oldfieldtype": "Select", 
-   "options": "Fiscal Year", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "search_index": 1
-  }, 
-  {
-   "fieldname": "remarks", 
-   "fieldtype": "Small Text", 
-   "label": "Remarks", 
-   "no_copy": 1, 
-   "oldfieldname": "remarks", 
-   "oldfieldtype": "Text", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "reqd": 0
-  }
- ], 
- "icon": "icon-file-text", 
- "idx": 1, 
- "is_submittable": 1, 
- "modified": "2014-09-09 05:35:32.156763", 
- "modified_by": "Administrator", 
- "module": "Accounts", 
- "name": "Purchase Invoice", 
- "owner": "Administrator", 
- "permissions": [
-  {
-   "amend": 1, 
-   "apply_user_permissions": 1, 
-   "cancel": 1, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Accounts User", 
-   "submit": 1, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 1, 
-   "cancel": 0, 
-   "create": 0, 
-   "delete": 0, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Purchase User", 
-   "submit": 0, 
-   "write": 0
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 1, 
-   "cancel": 0, 
-   "create": 0, 
-   "delete": 0, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Supplier", 
-   "submit": 0, 
-   "write": 0
-  }, 
-  {
-   "amend": 1, 
-   "cancel": 1, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Accounts Manager", 
-   "submit": 1, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 1, 
-   "cancel": 0, 
-   "create": 0, 
-   "delete": 0, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Auditor", 
-   "submit": 0, 
-   "write": 0
-  }, 
-  {
-   "permlevel": 1, 
-   "read": 1, 
-   "role": "Accounts Manager", 
-   "write": 1
-  }
- ], 
- "read_only_onload": 1, 
- "search_fields": "posting_date, credit_to, fiscal_year, bill_no, grand_total, outstanding_amount", 
- "sort_field": "modified", 
- "sort_order": "DESC"
-}
\ No newline at end of file
+}
+],
+"icon": "icon-file-text",
+"idx": 1,
+"is_submittable": 1,
+"modified": "2014-09-09 05:35:32.156763",
+"modified_by": "Administrator",
+"module": "Accounts",
+"name": "Purchase Invoice",
+"owner": "Administrator",
+"permissions": [
+{
+"amend": 1,
+"apply_user_permissions": 1,
+"cancel": 1,
+"create": 1,
+"delete": 0,
+"email": 1,
+"permlevel": 0,
+"print": 1,
+"read": 1,
+"report": 1,
+"role": "Accounts User",
+"submit": 1,
+"write": 1
+},
+{
+"amend": 0,
+"apply_user_permissions": 1,
+"cancel": 0,
+"create": 0,
+"delete": 0,
+"email": 1,
+"permlevel": 0,
+"print": 1,
+"read": 1,
+"report": 1,
+"role": "Purchase User",
+"submit": 0,
+"write": 0
+},
+{
+"amend": 0,
+"apply_user_permissions": 1,
+"cancel": 0,
+"create": 0,
+"delete": 0,
+"email": 1,
+"permlevel": 0,
+"print": 1,
+"read": 1,
+"report": 1,
+"role": "Supplier",
+"submit": 0,
+"write": 0
+},
+{
+"amend": 1,
+"cancel": 1,
+"create": 1,
+"delete": 1,
+"email": 1,
+"permlevel": 0,
+"print": 1,
+"read": 1,
+"report": 1,
+"role": "Accounts Manager",
+"submit": 1,
+"write": 1
+},
+{
+"amend": 0,
+"apply_user_permissions": 1,
+"cancel": 0,
+"create": 0,
+"delete": 0,
+"email": 1,
+"permlevel": 0,
+"print": 1,
+"read": 1,
+"report": 1,
+"role": "Auditor",
+"submit": 0,
+"write": 0
+},
+{
+"permlevel": 1,
+"read": 1,
+"role": "Accounts Manager",
+"write": 1
+}
+],
+"read_only_onload": 1,
+"search_fields": "posting_date, credit_to, fiscal_year, bill_no, grand_total, outstanding_amount",
+"sort_field": "modified",
+"sort_order": "DESC"
+}
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 956dacb..6a41bba 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -4,7 +4,10 @@
 from __future__ import unicode_literals
 import frappe
 
-from frappe.utils import cint, cstr, flt, formatdate
+
+from frappe.utils import add_days, cint, cstr, date_diff, formatdate, flt, getdate, nowdate, \
+	get_first_day, get_last_day
+from frappe.model.naming import make_autoname
 
 from frappe import msgprint, _, throw
 from erpnext.setup.utils import get_company_currency
@@ -14,6 +17,8 @@
 from erpnext.controllers.buying_controller import BuyingController
 from erpnext.accounts.party import get_party_account, get_due_date
 
+from erpnext.controllers.recurring_document import *
+
 form_grid_templates = {
 	"entries": "templates/form_grid/item_grid.html"
 }
@@ -61,6 +66,7 @@
 		self.validate_multiple_billing("Purchase Receipt", "pr_detail", "amount",
 			"purchase_receipt_details")
 		self.create_remarks()
+		validate_recurring_document(self)
 
 	def create_remarks(self):
 		if not self.remarks:
@@ -259,6 +265,11 @@
 		self.update_against_document_in_jv()
 		self.update_prevdoc_status()
 		self.update_billing_status_for_zero_amount_refdoc("Purchase Order")
+		convert_to_recurring(self, self.posting_date)
+
+	def on_update_after_submit(self):
+		validate_recurring_document(self)
+		convert_to_recurring(self, self.posting_date)
 
 	def make_gl_entries(self):
 		auto_accounting_for_stock = \
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 20d20d7..6c5f951 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -104,7 +104,7 @@
 			self.update_against_document_in_jv()
 
 		self.update_time_log_batch(self.name)
-		convert_to_recurring(self, "RECINV.#####", self.posting_date)
+		convert_to_recurring(self, self.posting_date)
 
 	def before_cancel(self):
 		self.update_time_log_batch(None)
@@ -147,7 +147,7 @@
 
 	def on_update_after_submit(self):
 		validate_recurring_document(self)
-		convert_to_recurring(self, "RECINV.#####", self.posting_date)
+		convert_to_recurring(self, self.posting_date)
 
 	def before_recurring(self):
 		self.aging_date = None
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js
index 9433ebe..5495845 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.js
@@ -206,6 +206,39 @@
 	}
 }
 
+
+cur_frm.cscript.is_recurring = function(doc, dt, dn) {
+	// set default values for recurring orders
+	if(doc.is_recurring) {
+		var owner_email = doc.owner=="Administrator"
+			? frappe.user_info("Administrator").email
+			: doc.owner;
+
+		doc.notification_email_address = $.map([cstr(owner_email),
+			cstr(doc.contact_email)], function(v) { return v || null; }).join(", ");
+		doc.repeat_on_day_of_month = frappe.datetime.str_to_obj(doc.posting_date).getDate();
+	}
+
+	refresh_many(["notification_email_address", "repeat_on_day_of_month"]);
+}
+
+cur_frm.cscript.from_date = function(doc, dt, dn) {
+	// set to_date
+	if(doc.from_date) {
+		var recurring_type_map = {'Monthly': 1, 'Quarterly': 3, 'Half-yearly': 6,
+			'Yearly': 12};
+
+		var months = recurring_type_map[doc.recurring_type];
+		if(months) {
+			var to_date = frappe.datetime.add_months(doc.from_date,
+				months);
+			doc.to_date = frappe.datetime.add_days(to_date, -1);
+			refresh_field('to_date');
+		}
+	}
+}
+
+
 cur_frm.cscript.send_sms = function() {
 	frappe.require("assets/erpnext/js/sms_manager.js");
 	var sms_man = new SMSManager(cur_frm.doc);
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json
index 2224db7..7843fb7 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.json
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.json
@@ -1,732 +1,856 @@
 {
- "allow_import": 1,
- "autoname": "naming_series:",
- "creation": "2013-05-21 16:16:39",
- "docstatus": 0,
- "doctype": "DocType",
- "document_type": "Transaction",
- "fields": [
-  {
-   "fieldname": "supplier_section",
-   "fieldtype": "Section Break",
-   "label": "Supplier",
-   "options": "icon-user",
+"allow_import": 1,
+"autoname": "naming_series:",
+"creation": "2013-05-21 16:16:39",
+"docstatus": 0,
+"doctype": "DocType",
+"document_type": "Transaction",
+"fields": [
+{
+"fieldname": "supplier_section",
+"fieldtype": "Section Break",
+"label": "Supplier",
+"options": "icon-user",
+"permlevel": 0
+},
+{
+"fieldname": "naming_series",
+"fieldtype": "Select",
+"label": "Series",
+"no_copy": 1,
+"oldfieldname": "naming_series",
+"oldfieldtype": "Select",
+"options": "PO-",
+"permlevel": 0,
+"print_hide": 1,
+"reqd": 1
+},
+{
+"description": "Supplier (vendor) name as entered in supplier master",
+"fieldname": "supplier",
+"fieldtype": "Link",
+"in_filter": 1,
+"label": "Supplier",
+"oldfieldname": "supplier",
+"oldfieldtype": "Link",
+"options": "Supplier",
+"permlevel": 0,
+"print_hide": 1,
+"reqd": 1,
+"search_index": 1
+},
+{
+"fieldname": "supplier_name",
+"fieldtype": "Data",
+"hidden": 0,
+"in_list_view": 1,
+"label": "Name",
+"permlevel": 0,
+"read_only": 1
+},
+{
+"fieldname": "address_display",
+"fieldtype": "Small Text",
+"hidden": 1,
+"label": "Address",
+"permlevel": 0,
+"read_only": 1
+},
+{
+"fieldname": "contact_display",
+"fieldtype": "Small Text",
+"hidden": 1,
+"label": "Contact",
+"permlevel": 0,
+"read_only": 1
+},
+{
+"fieldname": "contact_mobile",
+"fieldtype": "Small Text",
+"hidden": 1,
+"label": "Mobile No",
+"permlevel": 0,
+"read_only": 1
+},
+{
+"fieldname": "contact_email",
+"fieldtype": "Small Text",
+"hidden": 1,
+"label": "Contact Email",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "column_break1",
+"fieldtype": "Column Break",
+"oldfieldtype": "Column Break",
+"permlevel": 0,
+"print_hide": 0,
+"print_width": "50%",
+"width": "50%"
+},
+{
+"fieldname": "transaction_date",
+"fieldtype": "Date",
+"in_filter": 1,
+"label": "Date",
+"oldfieldname": "transaction_date",
+"oldfieldtype": "Date",
+"permlevel": 0,
+"reqd": 1,
+"search_index": 1
+},
+{
+"allow_on_submit": 1, 
+   "description": "Start date of current order's period", 
+   "fieldname": "from_date", 
+   "fieldtype": "Date", 
+   "label": "From", 
+   "no_copy": 1, 
    "permlevel": 0
-  },
+  }, 
   {
-   "fieldname": "naming_series",
-   "fieldtype": "Select",
-   "label": "Series",
-   "no_copy": 1,
-   "oldfieldname": "naming_series",
-   "oldfieldtype": "Select",
-   "options": "PO-",
-   "permlevel": 0,
-   "print_hide": 1,
-   "reqd": 1
-  },
-  {
-   "description": "Supplier (vendor) name as entered in supplier master",
-   "fieldname": "supplier",
-   "fieldtype": "Link",
-   "in_filter": 1,
-   "label": "Supplier",
-   "oldfieldname": "supplier",
-   "oldfieldtype": "Link",
-   "options": "Supplier",
-   "permlevel": 0,
-   "print_hide": 1,
-   "reqd": 1,
-   "search_index": 1
-  },
-  {
-   "fieldname": "supplier_name",
-   "fieldtype": "Data",
-   "hidden": 0,
-   "in_list_view": 1,
-   "label": "Name",
-   "permlevel": 0,
-   "read_only": 1
-  },
-  {
-   "fieldname": "address_display",
-   "fieldtype": "Small Text",
-   "hidden": 1,
-   "label": "Address",
-   "permlevel": 0,
-   "read_only": 1
-  },
-  {
-   "fieldname": "contact_display",
-   "fieldtype": "Small Text",
-   "hidden": 1,
-   "label": "Contact",
-   "permlevel": 0,
-   "read_only": 1
-  },
-  {
-   "fieldname": "contact_mobile",
-   "fieldtype": "Small Text",
-   "hidden": 1,
-   "label": "Mobile No",
-   "permlevel": 0,
-   "read_only": 1
-  },
-  {
-   "fieldname": "contact_email",
-   "fieldtype": "Small Text",
-   "hidden": 1,
-   "label": "Contact Email",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1
-  },
-  {
-   "fieldname": "column_break1",
-   "fieldtype": "Column Break",
-   "oldfieldtype": "Column Break",
-   "permlevel": 0,
-   "print_hide": 0,
-   "print_width": "50%",
-   "width": "50%"
-  },
-  {
-   "fieldname": "transaction_date",
-   "fieldtype": "Date",
-   "in_filter": 1,
-   "label": "Date",
-   "oldfieldname": "transaction_date",
-   "oldfieldtype": "Date",
-   "permlevel": 0,
-   "reqd": 1,
-   "search_index": 1
-  },
-  {
-   "fieldname": "amended_from",
-   "fieldtype": "Link",
-   "hidden": 0,
-   "ignore_user_permissions": 1,
-   "label": "Amended From",
-   "no_copy": 1,
-   "oldfieldname": "amended_from",
-   "oldfieldtype": "Data",
-   "options": "Purchase Order",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1,
-   "report_hide": 0
-  },
-  {
-   "description": "Select the relevant company name if you have multiple companies",
-   "fieldname": "company",
-   "fieldtype": "Link",
-   "in_filter": 1,
-   "label": "Company",
-   "no_copy": 0,
-   "oldfieldname": "company",
-   "oldfieldtype": "Link",
-   "options": "Company",
-   "permlevel": 0,
-   "print_hide": 1,
-   "reqd": 1,
-   "search_index": 1
-  },
-  {
-   "fieldname": "price_list_and_currency",
-   "fieldtype": "Section Break",
-   "label": "Currency and Price List",
-   "options": "icon-tag",
+   "allow_on_submit": 1, 
+   "description": "End date of current order's period", 
+   "fieldname": "to_date", 
+   "fieldtype": "Date", 
+   "label": "To", 
+   "no_copy": 1, 
    "permlevel": 0
-  },
+  }, 
   {
-   "fieldname": "cb_currency",
-   "fieldtype": "Column Break",
+"fieldname": "amended_from",
+"fieldtype": "Link",
+"hidden": 0,
+"ignore_user_permissions": 1,
+"label": "Amended From",
+"no_copy": 1,
+"oldfieldname": "amended_from",
+"oldfieldtype": "Data",
+"options": "Purchase Order",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1,
+"report_hide": 0
+},
+{
+"description": "Select the relevant company name if you have multiple companies",
+"fieldname": "company",
+"fieldtype": "Link",
+"in_filter": 1,
+"label": "Company",
+"no_copy": 0,
+"oldfieldname": "company",
+"oldfieldtype": "Link",
+"options": "Company",
+"permlevel": 0,
+"print_hide": 1,
+"reqd": 1,
+"search_index": 1
+},
+{
+"fieldname": "price_list_and_currency",
+"fieldtype": "Section Break",
+"label": "Currency and Price List",
+"options": "icon-tag",
+"permlevel": 0
+},
+{
+"fieldname": "cb_currency",
+"fieldtype": "Column Break",
+"permlevel": 0
+},
+{
+"fieldname": "currency",
+"fieldtype": "Link",
+"label": "Currency",
+"no_copy": 0,
+"oldfieldname": "currency",
+"oldfieldtype": "Select",
+"options": "Currency",
+"permlevel": 0,
+"print_hide": 1,
+"reqd": 1
+},
+{
+"description": "Rate at which supplier's currency is converted to company's base currency",
+"fieldname": "conversion_rate",
+"fieldtype": "Float",
+"hidden": 0,
+"label": "Exchange Rate",
+"no_copy": 0,
+"oldfieldname": "conversion_rate",
+"oldfieldtype": "Currency",
+"permlevel": 0,
+"print_hide": 1,
+"reqd": 1
+},
+{
+"fieldname": "cb_price_list",
+"fieldtype": "Column Break",
+"permlevel": 0
+},
+{
+"fieldname": "buying_price_list",
+"fieldtype": "Link",
+"label": "Price List",
+"options": "Price List",
+"permlevel": 0,
+"print_hide": 1
+},
+{
+"fieldname": "price_list_currency",
+"fieldtype": "Link",
+"label": "Price List Currency",
+"options": "Currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "plc_conversion_rate",
+"fieldtype": "Float",
+"label": "Price List Exchange Rate",
+"permlevel": 0,
+"print_hide": 1
+},
+{
+"fieldname": "ignore_pricing_rule",
+"fieldtype": "Check",
+"label": "Ignore Pricing Rule",
+"no_copy": 1,
+"permlevel": 1,
+"print_hide": 1
+},
+{
+"fieldname": "items",
+"fieldtype": "Section Break",
+"label": "Items",
+"oldfieldtype": "Section Break",
+"options": "icon-shopping-cart",
+"permlevel": 0
+},
+{
+"allow_on_submit": 1,
+"fieldname": "po_details",
+"fieldtype": "Table",
+"label": "Purchase Order Items",
+"no_copy": 0,
+"oldfieldname": "po_details",
+"oldfieldtype": "Table",
+"options": "Purchase Order Item",
+"permlevel": 0
+},
+{
+"fieldname": "sb_last_purchase",
+"fieldtype": "Section Break",
+"permlevel": 0
+},
+{
+"fieldname": "net_total",
+"fieldtype": "Currency",
+"label": "Net Total (Company Currency)",
+"no_copy": 1,
+"oldfieldname": "net_total",
+"oldfieldtype": "Currency",
+"options": "Company:company:default_currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1,
+"reqd": 0
+},
+{
+"fieldname": "column_break_26",
+"fieldtype": "Column Break",
+"permlevel": 0
+},
+{
+"fieldname": "net_total_import",
+"fieldtype": "Currency",
+"label": "Net Total",
+"no_copy": 0,
+"oldfieldname": "net_total_import",
+"oldfieldtype": "Currency",
+"options": "currency",
+"permlevel": 0,
+"print_hide": 0,
+"read_only": 1
+},
+{
+"fieldname": "get_last_purchase_rate",
+"fieldtype": "Button",
+"label": "Get Last Purchase Rate",
+"oldfieldtype": "Button",
+"permlevel": 0,
+"print_hide": 0
+},
+{
+"fieldname": "taxes",
+"fieldtype": "Section Break",
+"label": "Taxes and Charges",
+"oldfieldtype": "Section Break",
+"options": "icon-money",
+"permlevel": 0,
+"print_hide": 0
+},
+{
+"description": "If you have created a standard template in Purchase Taxes and Charges Master, select one and click on the button below.",
+"fieldname": "taxes_and_charges",
+"fieldtype": "Link",
+"label": "Taxes and Charges",
+"no_copy": 0,
+"oldfieldname": "purchase_other_charges",
+"oldfieldtype": "Link",
+"options": "Purchase Taxes and Charges Master",
+"permlevel": 0,
+"print_hide": 1
+},
+{
+"fieldname": "other_charges",
+"fieldtype": "Table",
+"label": "Purchase Taxes and Charges",
+"no_copy": 0,
+"oldfieldname": "purchase_tax_details",
+"oldfieldtype": "Table",
+"options": "Purchase Taxes and Charges",
+"permlevel": 0
+},
+{
+"fieldname": "other_charges_calculation",
+"fieldtype": "HTML",
+"label": "Taxes and Charges Calculation",
+"no_copy": 1,
+"oldfieldtype": "HTML",
+"permlevel": 0,
+"print_hide": 1
+},
+{
+"fieldname": "totals",
+"fieldtype": "Section Break",
+"label": "Totals",
+"oldfieldtype": "Section Break",
+"options": "icon-money",
+"permlevel": 0
+},
+{
+"fieldname": "other_charges_added",
+"fieldtype": "Currency",
+"label": "Taxes and Charges Added (Company Currency)",
+"no_copy": 0,
+"oldfieldname": "other_charges_added",
+"oldfieldtype": "Currency",
+"options": "Company:company:default_currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "other_charges_deducted",
+"fieldtype": "Currency",
+"label": "Taxes and Charges Deducted (Company Currency)",
+"no_copy": 0,
+"oldfieldname": "other_charges_deducted",
+"oldfieldtype": "Currency",
+"options": "Company:company:default_currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "total_tax",
+"fieldtype": "Currency",
+"label": "Total Tax (Company Currency)",
+"no_copy": 1,
+"oldfieldname": "total_tax",
+"oldfieldtype": "Currency",
+"options": "Company:company:default_currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "grand_total",
+"fieldtype": "Currency",
+"label": "Grand Total (Company Currency)",
+"no_copy": 1,
+"oldfieldname": "grand_total",
+"oldfieldtype": "Currency",
+"options": "Company:company:default_currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"description": "In Words will be visible once you save the Purchase Order.",
+"fieldname": "in_words",
+"fieldtype": "Data",
+"label": "In Words (Company Currency)",
+"oldfieldname": "in_words",
+"oldfieldtype": "Data",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "rounded_total",
+"fieldtype": "Currency",
+"label": "Rounded Total (Company Currency)",
+"oldfieldname": "rounded_total",
+"oldfieldtype": "Currency",
+"options": "Company:company:default_currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "advance_paid",
+"fieldtype": "Currency",
+"label": "Advance Paid",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"fieldname": "column_break4",
+"fieldtype": "Column Break",
+"oldfieldtype": "Column Break",
+"permlevel": 0,
+"print_hide": 0
+},
+{
+"fieldname": "other_charges_added_import",
+"fieldtype": "Currency",
+"label": "Taxes and Charges Added",
+"no_copy": 0,
+"oldfieldname": "other_charges_added_import",
+"oldfieldtype": "Currency",
+"options": "currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1,
+"report_hide": 0
+},
+{
+"fieldname": "other_charges_deducted_import",
+"fieldtype": "Currency",
+"label": "Taxes and Charges Deducted",
+"no_copy": 0,
+"oldfieldname": "other_charges_deducted_import",
+"oldfieldtype": "Currency",
+"options": "currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1,
+"report_hide": 0
+},
+{
+"fieldname": "grand_total_import",
+"fieldtype": "Currency",
+"in_list_view": 1,
+"label": "Grand Total",
+"no_copy": 0,
+"oldfieldname": "grand_total_import",
+"oldfieldtype": "Currency",
+"options": "currency",
+"permlevel": 0,
+"print_hide": 0,
+"read_only": 1,
+"report_hide": 0
+},
+{
+"fieldname": "in_words_import",
+"fieldtype": "Data",
+"label": "In Words",
+"oldfieldname": "in_words_import",
+"oldfieldtype": "Data",
+"permlevel": 0,
+"print_hide": 0,
+"read_only": 1
+},
+{
+"fieldname": "fold",
+"fieldtype": "Fold",
+"permlevel": 0
+},
+{
+"fieldname": "terms_section_break",
+"fieldtype": "Section Break",
+"label": "Terms and Conditions",
+"oldfieldtype": "Section Break",
+"options": "icon-legal",
+"permlevel": 0
+},
+{
+"fieldname": "tc_name",
+"fieldtype": "Link",
+"label": "Terms",
+"oldfieldname": "tc_name",
+"oldfieldtype": "Link",
+"options": "Terms and Conditions",
+"permlevel": 0,
+"print_hide": 1
+},
+{
+"fieldname": "terms",
+"fieldtype": "Text Editor",
+"label": "Terms and Conditions",
+"oldfieldname": "terms",
+"oldfieldtype": "Text Editor",
+"permlevel": 0
+},
+{
+"depends_on": "supplier",
+"fieldname": "contact_section",
+"fieldtype": "Section Break",
+"label": "Contact Info",
+"options": "icon-bullhorn",
+"permlevel": 0
+},
+{
+"fieldname": "supplier_address",
+"fieldtype": "Link",
+"in_filter": 1,
+"label": "Supplier Address",
+"options": "Address",
+"permlevel": 0,
+"print_hide": 1
+},
+{
+"fieldname": "cb_contact",
+"fieldtype": "Column Break",
+"permlevel": 0
+},
+{
+"fieldname": "contact_person",
+"fieldtype": "Link",
+"in_filter": 1,
+"label": "Contact Person",
+"options": "Contact",
+"permlevel": 0,
+"print_hide": 1
+},
+{
+"fieldname": "more_info",
+"fieldtype": "Section Break",
+"label": "More Info",
+"oldfieldtype": "Section Break",
+"permlevel": 0
+},
+{
+"fieldname": "status",
+"fieldtype": "Select",
+"in_filter": 1,
+"label": "Status",
+"no_copy": 1,
+"oldfieldname": "status",
+"oldfieldtype": "Select",
+"options": "\nDraft\nSubmitted\nStopped\nCancelled",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1,
+"reqd": 1,
+"search_index": 1
+},
+{
+"default": "No",
+"fieldname": "is_subcontracted",
+"fieldtype": "Select",
+"label": "Is Subcontracted",
+"options": "\nYes\nNo",
+"permlevel": 0,
+"print_hide": 1
+},
+{
+"fieldname": "ref_sq",
+"fieldtype": "Data",
+"hidden": 1,
+"label": "Ref SQ",
+"no_copy": 1,
+"oldfieldname": "ref_sq",
+"oldfieldtype": "Data",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"allow_on_submit": 1,
+"fieldname": "letter_head",
+"fieldtype": "Link",
+"label": "Letter Head",
+"oldfieldname": "letter_head",
+"oldfieldtype": "Select",
+"options": "Letter Head",
+"permlevel": 0,
+"print_hide": 1
+},
+{
+"fieldname": "fiscal_year",
+"fieldtype": "Link",
+"in_filter": 1,
+"label": "Fiscal Year",
+"no_copy": 0,
+"oldfieldname": "fiscal_year",
+"oldfieldtype": "Select",
+"options": "Fiscal Year",
+"permlevel": 0,
+"print_hide": 1,
+"reqd": 1,
+"search_index": 1
+},
+{
+"allow_on_submit": 1,
+"fieldname": "select_print_heading",
+"fieldtype": "Link",
+"label": "Print Heading",
+"no_copy": 1,
+"oldfieldname": "select_print_heading",
+"oldfieldtype": "Link",
+"options": "Print Heading",
+"permlevel": 0,
+"print_hide": 1,
+"report_hide": 1
+},
+{
+"fieldname": "column_break5",
+"fieldtype": "Column Break",
+"oldfieldtype": "Column Break",
+"permlevel": 0,
+"print_hide": 1,
+"print_width": "50%",
+"width": "50%"
+},
+{
+"depends_on": "eval:!doc.__islocal",
+"description": "% of materials received against this Purchase Order",
+"fieldname": "per_received",
+"fieldtype": "Percent",
+"in_list_view": 1,
+"label": "% Received",
+"no_copy": 1,
+"oldfieldname": "per_received",
+"oldfieldtype": "Currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"depends_on": "eval:!doc.__islocal",
+"description": "% of materials billed against this Purchase Order.",
+"fieldname": "per_billed",
+"fieldtype": "Percent",
+"in_list_view": 1,
+"label": "% Billed",
+"no_copy": 1,
+"oldfieldname": "per_billed",
+"oldfieldtype": "Currency",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+},
+{
+"description": "Required raw materials issued to the supplier for producing a sub - contracted item.",
+"fieldname": "raw_material_details",
+"fieldtype": "Section Break",
+"label": "Raw Materials Supplied",
+"oldfieldtype": "Section Break",
+"options": "icon-truck",
+"permlevel": 0,
+"print_hide": 1
+},
+{
+"allow_on_submit": 1,
+"fieldname": "po_raw_material_details",
+"fieldtype": "Table",
+"label": "Purchase Order Items Supplied",
+"no_copy": 0,
+"oldfieldname": "po_raw_material_details",
+"oldfieldtype": "Table",
+"options": "Purchase Order Item Supplied",
+"permlevel": 0,
+"print_hide": 1,
+"read_only": 1
+ }, 
+  {
+   "fieldname": "recurring_order", 
+   "fieldtype": "Section Break", 
+   "label": "Recurring Order", 
+   "options": "icon-time", 
    "permlevel": 0
-  },
+  }, 
   {
-   "fieldname": "currency",
-   "fieldtype": "Link",
-   "label": "Currency",
-   "no_copy": 0,
-   "oldfieldname": "currency",
-   "oldfieldtype": "Select",
-   "options": "Currency",
-   "permlevel": 0,
-   "print_hide": 1,
-   "reqd": 1
-  },
-  {
-   "description": "Rate at which supplier's currency is converted to company's base currency",
-   "fieldname": "conversion_rate",
-   "fieldtype": "Float",
-   "hidden": 0,
-   "label": "Exchange Rate",
-   "no_copy": 0,
-   "oldfieldname": "conversion_rate",
-   "oldfieldtype": "Currency",
-   "permlevel": 0,
-   "print_hide": 1,
-   "reqd": 1
-  },
-  {
-   "fieldname": "cb_price_list",
-   "fieldtype": "Column Break",
+   "fieldname": "column_break", 
+   "fieldtype": "Column Break", 
+   "label": "Column Break", 
    "permlevel": 0
-  },
+  }, 
   {
-   "fieldname": "buying_price_list",
-   "fieldtype": "Link",
-   "label": "Price List",
-   "options": "Price List",
-   "permlevel": 0,
+   "allow_on_submit": 1, 
+   "depends_on": "eval:doc.docstatus<2", 
+   "description": "Check if recurring order, uncheck to stop recurring or put proper End Date", 
+   "fieldname": "is_recurring", 
+   "fieldtype": "Check", 
+   "label": "Is Recurring", 
+   "no_copy": 1, 
+   "permlevel": 0, 
    "print_hide": 1
-  },
+  }, 
   {
-   "fieldname": "price_list_currency",
-   "fieldtype": "Link",
-   "label": "Price List Currency",
-   "options": "Currency",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1
-  },
+   "allow_on_submit": 1, 
+   "depends_on": "eval:doc.is_recurring==1", 
+   "fieldname": "recurring_type", 
+   "fieldtype": "Select", 
+   "label": "Recurring Type", 
+   "no_copy": 1, 
+   "options": "Monthly\nQuarterly\nHalf-yearly\nYearly", 
+   "permlevel": 0
+  }, 
   {
-   "fieldname": "plc_conversion_rate",
-   "fieldtype": "Float",
-   "label": "Price List Exchange Rate",
-   "permlevel": 0,
+   "allow_on_submit": 1, 
+   "depends_on": "eval:doc.is_recurring==1", 
+   "description": "The day of the month on which auto order will be generated e.g. 05, 28 etc", 
+   "fieldname": "repeat_on_day_of_month", 
+   "fieldtype": "Int", 
+   "label": "Repeat on Day of Month", 
+   "no_copy": 1, 
+   "permlevel": 0, 
    "print_hide": 1
-  },
+  }, 
   {
-   "fieldname": "ignore_pricing_rule",
-   "fieldtype": "Check",
-   "label": "Ignore Pricing Rule",
-   "no_copy": 1,
-   "permlevel": 1,
+   "depends_on": "eval:doc.is_recurring==1", 
+   "description": "The date on which next invoice will be generated. It is generated on submit.", 
+   "fieldname": "next_date", 
+   "fieldtype": "Date", 
+   "label": "Next Date", 
+   "no_copy": 1, 
+   "permlevel": 0, 
+   "print_hide": 1, 
+   "read_only": 1
+  }, 
+  {
+   "allow_on_submit": 1, 
+   "depends_on": "eval:doc.is_recurring==1", 
+   "description": "The date on which recurring order will be stop", 
+   "fieldname": "end_date", 
+   "fieldtype": "Date", 
+   "label": "End Date", 
+   "no_copy": 1, 
+   "permlevel": 0, 
    "print_hide": 1
-  },
+  }, 
   {
-   "fieldname": "items",
-   "fieldtype": "Section Break",
-   "label": "Items",
-   "oldfieldtype": "Section Break",
-   "options": "icon-shopping-cart",
-   "permlevel": 0
-  },
-  {
-   "allow_on_submit": 1,
-   "fieldname": "po_details",
-   "fieldtype": "Table",
-   "label": "Purchase Order Items",
-   "no_copy": 0,
-   "oldfieldname": "po_details",
-   "oldfieldtype": "Table",
-   "options": "Purchase Order Item",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "sb_last_purchase",
-   "fieldtype": "Section Break",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "net_total",
-   "fieldtype": "Currency",
-   "label": "Net Total (Company Currency)",
-   "no_copy": 1,
-   "oldfieldname": "net_total",
-   "oldfieldtype": "Currency",
-   "options": "Company:company:default_currency",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1,
-   "reqd": 0
-  },
-  {
-   "fieldname": "column_break_26",
-   "fieldtype": "Column Break",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "net_total_import",
-   "fieldtype": "Currency",
-   "label": "Net Total",
-   "no_copy": 0,
-   "oldfieldname": "net_total_import",
-   "oldfieldtype": "Currency",
-   "options": "currency",
-   "permlevel": 0,
-   "print_hide": 0,
-   "read_only": 1
-  },
-  {
-   "fieldname": "get_last_purchase_rate",
-   "fieldtype": "Button",
-   "label": "Get Last Purchase Rate",
-   "oldfieldtype": "Button",
-   "permlevel": 0,
-   "print_hide": 0
-  },
-  {
-   "fieldname": "taxes",
-   "fieldtype": "Section Break",
-   "label": "Taxes and Charges",
-   "oldfieldtype": "Section Break",
-   "options": "icon-money",
-   "permlevel": 0,
-   "print_hide": 0
-  },
-  {
-   "description": "If you have created a standard template in Purchase Taxes and Charges Master, select one and click on the button below.",
-   "fieldname": "taxes_and_charges",
-   "fieldtype": "Link",
-   "label": "Taxes and Charges",
-   "no_copy": 0,
-   "oldfieldname": "purchase_other_charges",
-   "oldfieldtype": "Link",
-   "options": "Purchase Taxes and Charges Master",
-   "permlevel": 0,
+   "fieldname": "column_break83", 
+   "fieldtype": "Column Break", 
+   "label": "Column Break", 
+   "permlevel": 0, 
    "print_hide": 1
-  },
+  }, 
   {
-   "fieldname": "other_charges",
-   "fieldtype": "Table",
-   "label": "Purchase Taxes and Charges",
-   "no_copy": 0,
-   "oldfieldname": "purchase_tax_details",
-   "oldfieldtype": "Table",
-   "options": "Purchase Taxes and Charges",
-   "permlevel": 0
-  },
+   "depends_on": "eval:doc.is_recurring==1", 
+   "fieldname": "recurring_id", 
+   "fieldtype": "Data", 
+   "label": "Recurring Id", 
+   "no_copy": 1, 
+   "permlevel": 0, 
+   "print_hide": 1, 
+   "read_only": 1
+  }, 
   {
-   "fieldname": "other_charges_calculation",
-   "fieldtype": "HTML",
-   "label": "Taxes and Charges Calculation",
-   "no_copy": 1,
-   "oldfieldtype": "HTML",
-   "permlevel": 0,
+   "allow_on_submit": 1, 
+   "depends_on": "eval:doc.is_recurring==1", 
+   "description": "Enter email id separated by commas, order will be mailed automatically on particular date", 
+   "fieldname": "notification_email_address", 
+   "fieldtype": "Small Text", 
+   "label": "Notification Email Address", 
+   "no_copy": 1, 
+   "permlevel": 0, 
    "print_hide": 1
-  },
+  }, 
   {
-   "fieldname": "totals",
-   "fieldtype": "Section Break",
-   "label": "Totals",
-   "oldfieldtype": "Section Break",
-   "options": "icon-money",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "other_charges_added",
-   "fieldtype": "Currency",
-   "label": "Taxes and Charges Added (Company Currency)",
-   "no_copy": 0,
-   "oldfieldname": "other_charges_added",
-   "oldfieldtype": "Currency",
-   "options": "Company:company:default_currency",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1
-  },
-  {
-   "fieldname": "other_charges_deducted",
-   "fieldtype": "Currency",
-   "label": "Taxes and Charges Deducted (Company Currency)",
-   "no_copy": 0,
-   "oldfieldname": "other_charges_deducted",
-   "oldfieldtype": "Currency",
-   "options": "Company:company:default_currency",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1
-  },
-  {
-   "fieldname": "total_tax",
-   "fieldtype": "Currency",
-   "label": "Total Tax (Company Currency)",
-   "no_copy": 1,
-   "oldfieldname": "total_tax",
-   "oldfieldtype": "Currency",
-   "options": "Company:company:default_currency",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1
-  },
-  {
-   "fieldname": "grand_total",
-   "fieldtype": "Currency",
-   "label": "Grand Total (Company Currency)",
-   "no_copy": 1,
-   "oldfieldname": "grand_total",
-   "oldfieldtype": "Currency",
-   "options": "Company:company:default_currency",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1
-  },
-  {
-   "description": "In Words will be visible once you save the Purchase Order.",
-   "fieldname": "in_words",
-   "fieldtype": "Data",
-   "label": "In Words (Company Currency)",
-   "oldfieldname": "in_words",
-   "oldfieldtype": "Data",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1
-  },
-  {
-   "fieldname": "rounded_total",
-   "fieldtype": "Currency",
-   "label": "Rounded Total (Company Currency)",
-   "oldfieldname": "rounded_total",
-   "oldfieldtype": "Currency",
-   "options": "Company:company:default_currency",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1
-  },
-  {
-   "fieldname": "advance_paid",
-   "fieldtype": "Currency",
-   "label": "Advance Paid",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1
-  },
-  {
-   "fieldname": "column_break4",
-   "fieldtype": "Column Break",
-   "oldfieldtype": "Column Break",
-   "permlevel": 0,
-   "print_hide": 0
-  },
-  {
-   "fieldname": "other_charges_added_import",
-   "fieldtype": "Currency",
-   "label": "Taxes and Charges Added",
-   "no_copy": 0,
-   "oldfieldname": "other_charges_added_import",
-   "oldfieldtype": "Currency",
-   "options": "currency",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1,
-   "report_hide": 0
-  },
-  {
-   "fieldname": "other_charges_deducted_import",
-   "fieldtype": "Currency",
-   "label": "Taxes and Charges Deducted",
-   "no_copy": 0,
-   "oldfieldname": "other_charges_deducted_import",
-   "oldfieldtype": "Currency",
-   "options": "currency",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1,
-   "report_hide": 0
-  },
-  {
-   "fieldname": "grand_total_import",
-   "fieldtype": "Currency",
-   "in_list_view": 1,
-   "label": "Grand Total",
-   "no_copy": 0,
-   "oldfieldname": "grand_total_import",
-   "oldfieldtype": "Currency",
-   "options": "currency",
-   "permlevel": 0,
-   "print_hide": 0,
-   "read_only": 1,
-   "report_hide": 0
-  },
-  {
-   "fieldname": "in_words_import",
-   "fieldtype": "Data",
-   "label": "In Words",
-   "oldfieldname": "in_words_import",
-   "oldfieldtype": "Data",
-   "permlevel": 0,
-   "print_hide": 0,
-   "read_only": 1
-  },
-  {
-   "fieldname": "fold",
-   "fieldtype": "Fold",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "terms_section_break",
-   "fieldtype": "Section Break",
-   "label": "Terms and Conditions",
-   "oldfieldtype": "Section Break",
-   "options": "icon-legal",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "tc_name",
-   "fieldtype": "Link",
-   "label": "Terms",
-   "oldfieldname": "tc_name",
-   "oldfieldtype": "Link",
-   "options": "Terms and Conditions",
-   "permlevel": 0,
-   "print_hide": 1
-  },
-  {
-   "fieldname": "terms",
-   "fieldtype": "Text Editor",
-   "label": "Terms and Conditions",
-   "oldfieldname": "terms",
-   "oldfieldtype": "Text Editor",
-   "permlevel": 0
-  },
-  {
-   "depends_on": "supplier",
-   "fieldname": "contact_section",
-   "fieldtype": "Section Break",
-   "label": "Contact Info",
-   "options": "icon-bullhorn",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "supplier_address",
-   "fieldtype": "Link",
-   "in_filter": 1,
-   "label": "Supplier Address",
-   "options": "Address",
-   "permlevel": 0,
-   "print_hide": 1
-  },
-  {
-   "fieldname": "cb_contact",
-   "fieldtype": "Column Break",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "contact_person",
-   "fieldtype": "Link",
-   "in_filter": 1,
-   "label": "Contact Person",
-   "options": "Contact",
-   "permlevel": 0,
-   "print_hide": 1
-  },
-  {
-   "fieldname": "more_info",
-   "fieldtype": "Section Break",
-   "label": "More Info",
-   "oldfieldtype": "Section Break",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "status",
-   "fieldtype": "Select",
-   "in_filter": 1,
-   "label": "Status",
-   "no_copy": 1,
-   "oldfieldname": "status",
-   "oldfieldtype": "Select",
-   "options": "\nDraft\nSubmitted\nStopped\nCancelled",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1,
-   "reqd": 1,
-   "search_index": 1
-  },
-  {
-   "default": "No",
-   "fieldname": "is_subcontracted",
-   "fieldtype": "Select",
-   "label": "Is Subcontracted",
-   "options": "\nYes\nNo",
-   "permlevel": 0,
-   "print_hide": 1
-  },
-  {
-   "fieldname": "ref_sq",
-   "fieldtype": "Data",
-   "hidden": 1,
-   "label": "Ref SQ",
-   "no_copy": 1,
-   "oldfieldname": "ref_sq",
-   "oldfieldtype": "Data",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1
-  },
-  {
-   "allow_on_submit": 1,
-   "fieldname": "letter_head",
-   "fieldtype": "Link",
-   "label": "Letter Head",
-   "oldfieldname": "letter_head",
-   "oldfieldtype": "Select",
-   "options": "Letter Head",
-   "permlevel": 0,
-   "print_hide": 1
-  },
-  {
-   "fieldname": "fiscal_year",
-   "fieldtype": "Link",
-   "in_filter": 1,
-   "label": "Fiscal Year",
-   "no_copy": 0,
-   "oldfieldname": "fiscal_year",
-   "oldfieldtype": "Select",
-   "options": "Fiscal Year",
-   "permlevel": 0,
-   "print_hide": 1,
-   "reqd": 1,
-   "search_index": 1
-  },
-  {
-   "allow_on_submit": 1,
-   "fieldname": "select_print_heading",
-   "fieldtype": "Link",
-   "label": "Print Heading",
-   "no_copy": 1,
-   "oldfieldname": "select_print_heading",
-   "oldfieldtype": "Link",
-   "options": "Print Heading",
-   "permlevel": 0,
-   "print_hide": 1,
+   "fieldname": "against_income_account", 
+   "fieldtype": "Small Text", 
+   "hidden": 1, 
+   "label": "Against Income Account", 
+   "no_copy": 1, 
+   "permlevel": 0, 
+   "print_hide": 1, 
    "report_hide": 1
-  },
-  {
-   "fieldname": "column_break5",
-   "fieldtype": "Column Break",
-   "oldfieldtype": "Column Break",
-   "permlevel": 0,
-   "print_hide": 1,
-   "print_width": "50%",
-   "width": "50%"
-  },
-  {
-   "depends_on": "eval:!doc.__islocal",
-   "description": "% of materials received against this Purchase Order",
-   "fieldname": "per_received",
-   "fieldtype": "Percent",
-   "in_list_view": 1,
-   "label": "% Received",
-   "no_copy": 1,
-   "oldfieldname": "per_received",
-   "oldfieldtype": "Currency",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1
-  },
-  {
-   "depends_on": "eval:!doc.__islocal",
-   "description": "% of materials billed against this Purchase Order.",
-   "fieldname": "per_billed",
-   "fieldtype": "Percent",
-   "in_list_view": 1,
-   "label": "% Billed",
-   "no_copy": 1,
-   "oldfieldname": "per_billed",
-   "oldfieldtype": "Currency",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1
-  },
-  {
-   "description": "Required raw materials issued to the supplier for producing a sub - contracted item.",
-   "fieldname": "raw_material_details",
-   "fieldtype": "Section Break",
-   "label": "Raw Materials Supplied",
-   "oldfieldtype": "Section Break",
-   "options": "icon-truck",
-   "permlevel": 0,
-   "print_hide": 1
-  },
-  {
-   "allow_on_submit": 1,
-   "fieldname": "po_raw_material_details",
-   "fieldtype": "Table",
-   "label": "Purchase Order Items Supplied",
-   "no_copy": 0,
-   "oldfieldname": "po_raw_material_details",
-   "oldfieldtype": "Table",
-   "options": "Purchase Order Item Supplied",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 1
-  }
- ],
- "icon": "icon-file-text",
- "idx": 1,
- "is_submittable": 1,
- "modified": "2014-09-10 05:35:32.583024",
- "modified_by": "Administrator",
- "module": "Buying",
- "name": "Purchase Order",
- "owner": "Administrator",
- "permissions": [
-  {
-   "amend": 0,
-   "apply_user_permissions": 1,
-   "cancel": 0,
-   "create": 0,
-   "delete": 0,
-   "email": 0,
-   "permlevel": 0,
-   "print": 0,
-   "read": 1,
-   "report": 1,
-   "role": "Material User",
-   "submit": 0,
-   "write": 0
-  },
-  {
-   "amend": 1,
-   "cancel": 1,
-   "create": 1,
-   "delete": 1,
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "Purchase Manager",
-   "submit": 1,
-   "write": 1
-  },
-  {
-   "amend": 1,
-   "apply_user_permissions": 1,
-   "cancel": 1,
-   "create": 1,
-   "delete": 1,
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "Purchase User",
-   "submit": 1,
-   "write": 1
-  },
-  {
-   "apply_user_permissions": 1,
-   "cancel": 0,
-   "delete": 0,
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "Supplier"
-  },
-  {
-   "permlevel": 1,
-   "read": 1,
-   "role": "Purchase Manager",
-   "write": 1
-  }
- ],
- "read_only_onload": 1,
- "search_fields": "status, transaction_date, supplier,grand_total",
- "sort_field": "modified",
- "sort_order": "DESC"
 }
+],
+"icon": "icon-file-text",
+"idx": 1,
+"is_submittable": 1,
+"modified": "2014-09-10 05:35:32.583024",
+"modified_by": "Administrator",
+"module": "Buying",
+"name": "Purchase Order",
+"owner": "Administrator",
+"permissions": [
+{
+"amend": 0,
+"apply_user_permissions": 1,
+"cancel": 0,
+"create": 0,
+"delete": 0,
+"email": 0,
+"permlevel": 0,
+"print": 0,
+"read": 1,
+"report": 1,
+"role": "Material User",
+"submit": 0,
+"write": 0
+},
+{
+"amend": 1,
+"cancel": 1,
+"create": 1,
+"delete": 1,
+"email": 1,
+"permlevel": 0,
+"print": 1,
+"read": 1,
+"report": 1,
+"role": "Purchase Manager",
+"submit": 1,
+"write": 1
+},
+{
+"amend": 1,
+"apply_user_permissions": 1,
+"cancel": 1,
+"create": 1,
+"delete": 1,
+"email": 1,
+"permlevel": 0,
+"print": 1,
+"read": 1,
+"report": 1,
+"role": "Purchase User",
+"submit": 1,
+"write": 1
+},
+{
+"apply_user_permissions": 1,
+"cancel": 0,
+"delete": 0,
+"email": 1,
+"permlevel": 0,
+"print": 1,
+"read": 1,
+"report": 1,
+"role": "Supplier"
+},
+{
+"permlevel": 1,
+"read": 1,
+"role": "Purchase Manager",
+"write": 1
+}
+],
+"read_only_onload": 1,
+"search_fields": "status, transaction_date, supplier,grand_total",
+"sort_field": "modified",
+"sort_order": "DESC"
+}
+
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index 4def1db..5ad8747 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -6,6 +6,9 @@
 from frappe.utils import cstr, flt
 from frappe import msgprint, _, throw
 from frappe.model.mapper import get_mapped_doc
+
+from erpnext.controllers.recurring_document import convert_to_recurring, validate_recurring_document
+
 from erpnext.controllers.buying_controller import BuyingController
 
 form_grid_templates = {
@@ -52,6 +55,8 @@
 		self.validate_for_subcontracting()
 		self.validate_minimum_order_qty()
 		self.create_raw_materials_supplied("po_raw_material_details")
+		
+		validate_recurring_document(self)
 
 	def validate_with_previous_doc(self):
 		super(PurchaseOrder, self).validate_with_previous_doc(self.tname, {
@@ -173,6 +178,8 @@
 		purchase_controller.update_last_purchase_rate(self, is_submit = 1)
 
 		frappe.db.set(self,'status','Submitted')
+		
+		convert_to_recurring(self, self.transaction_date)
 
 	def on_cancel(self):
 		pc_obj = frappe.get_doc('Purchase Common')
@@ -197,6 +204,10 @@
 	def on_update(self):
 		pass
 
+	def on_update_after_submit(self):
+		validate_recurring_document(self)
+		convert_to_recurring(self, self.transaction_date)
+
 def set_missing_values(source, target):
 	target.ignore_pricing_rule = 1
 	target.run_method("set_missing_values")
diff --git a/erpnext/buying/doctype/purchase_order/test_purchase_order.py b/erpnext/buying/doctype/purchase_order/test_purchase_order.py
index d1d183a..0c9f912 100644
--- a/erpnext/buying/doctype/purchase_order/test_purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/test_purchase_order.py
@@ -107,6 +107,11 @@
 		po.get("po_details")[0].qty = 3.4
 		self.assertRaises(UOMMustBeIntegerError, po.insert)
 
+	def test_recurring_order(self):
+		from erpnext.controllers.tests.test_recurring_document import test_recurring_document
+
+		test_recurring_document(self, test_records)
+
 
 test_dependencies = ["BOM"]
 
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index 5f418c4..a3f5908 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -4,7 +4,11 @@
 from __future__ import unicode_literals
 import frappe
 from frappe import _, msgprint
-from frappe.utils import flt, rounded
+
+from frappe.utils import add_days, cint, cstr, today, date_diff, flt, rounded, getdate, nowdate, \
+	get_first_day, get_last_day
+from frappe.model.naming import make_autoname
+
 from erpnext.setup.utils import get_company_currency
 from erpnext.accounts.party import get_party_details
 
diff --git a/erpnext/controllers/recurring_document.py b/erpnext/controllers/recurring_document.py
index bdf8b29..7c83214 100644
--- a/erpnext/controllers/recurring_document.py
+++ b/erpnext/controllers/recurring_document.py
@@ -2,15 +2,22 @@
 import frappe
 import frappe.utils
 import frappe.defaults
-from frappe.utils import cint, cstr, getdate, nowdate, get_first_day, get_last_day
+
+from frappe.utils import add_days, cint, cstr, date_diff, flt, getdate, nowdate, \
+	get_first_day, get_last_day, comma_and
 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}
 
 def create_recurring_documents():
 	manage_recurring_documents("Sales Order")
 	manage_recurring_documents("Sales Invoice")
+	manage_recurring_documents("Purchase Order")
+	manage_recurring_documents("Purchase Invoice")
 
 def manage_recurring_documents(doctype, next_date=None, commit=True):
 	"""
@@ -23,6 +30,10 @@
 		date_field = "transaction_date"
 	elif doctype == "Sales Invoice":
 		date_field = "posting_date"
+	elif doctype == "Purchase Order":
+		date_field = "transaction_date"
+	elif doctype == "Purchase Invoice":
+		date_field = "posting_date"
 
 	recurring_documents = frappe.db.sql("""select name, recurring_id
 		from `tab{}` where ifnull(is_recurring, 0)=1
@@ -49,7 +60,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()
@@ -155,18 +166,18 @@
 		elif not (doc.from_date and doc.to_date):
 			throw(_("Period From and Period To dates mandatory for recurring %s") % doc.doctype)
 
-def convert_to_recurring(doc, autoname, posting_date):
-	if doc.is_recurring:
-		if not doc.recurring_id:
-			frappe.db.set(doc, "recurring_id",
-				make_autoname(autoname))
+#
+def convert_to_recurring(doc, posting_date):
+    if doc.is_recurring:
+        if not doc.recurring_id:
+            frappe.db.set(doc, "recurring_id", doc.name)
 
-		set_next_date(doc, posting_date)
+        set_next_date(doc, posting_date)
 
-	elif doc.recurring_id:
-		frappe.db.sql("""update `tab%s`
-			set is_recurring = 0
-			where recurring_id = %s""" % (doc.doctype, '%s'), (doc.recurring_id))
+    elif doc.recurring_id:
+        frappe.db.sql("""update `tab%s` set is_recurring = 0
+            where recurring_id = %s""" % (doc.doctype, '%s'), (doc.recurring_id))
+#
 
 def validate_notification_email_id(doc):
 	if doc.notification_email_address:
diff --git a/erpnext/controllers/tests/test_recurring_document.py b/erpnext/controllers/tests/test_recurring_document.py
index 0e7cb1bc..1051082 100644
--- a/erpnext/controllers/tests/test_recurring_document.py
+++ b/erpnext/controllers/tests/test_recurring_document.py
@@ -41,6 +41,20 @@
 		date_field = "transaction_date"
 	elif base_doc.doctype == "Sales Invoice":
 		date_field = "posting_date"
+	#for Purchase order/purchase invoice
+	if base_doc.doctype == "Purchase Order":
+		base_doc.update({
+			"transaction_date": today
+		})
+	elif base_doc.doctype == "Purchase Invoice":
+		base_doc.update({
+			"posting_date": today
+		})
+
+	if base_doc.doctype == "Purchase Order":
+		date_field = "transaction_date"
+	elif base_doc.doctype == "Purchase Invoice":
+		date_field = "posting_date"
 
 	# monthly
 	doc1 = frappe.copy_doc(base_doc)
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index d2996e9..c14d06d 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -166,7 +166,7 @@
 		self.update_prevdoc_status('submit')
 		frappe.db.set(self, 'status', 'Submitted')
 		
-		convert_to_recurring(self, "SO/REC/.#####", self.transaction_date)
+		convert_to_recurring(self, self.transaction_date)
 
 	def on_cancel(self):
 		# Cannot cancel stopped SO
@@ -257,7 +257,7 @@
 
 	def on_update_after_submit(self):
 		validate_recurring_document(self)
-		convert_to_recurring(self, "SO/REC/.#####", self.transaction_date)
+		convert_to_recurring(self, self.transaction_date)
 
 
 @frappe.whitelist()