[demo] New ERPNext Demo
diff --git a/utilities/demo/__init__.py b/utilities/demo/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/utilities/demo/__init__.py
diff --git a/utilities/demo/demo-login.css b/utilities/demo/demo-login.css
new file mode 100644
index 0000000..f3464a3
--- /dev/null
+++ b/utilities/demo/demo-login.css
@@ -0,0 +1,3 @@
+body, #container, .outer {
+	background-color: #888 !important;
+}
\ No newline at end of file
diff --git a/utilities/demo/demo-login.html b/utilities/demo/demo-login.html
new file mode 100644
index 0000000..ef24678
--- /dev/null
+++ b/utilities/demo/demo-login.html
@@ -0,0 +1,25 @@
+<div class="container">
+	<div class="row" style="margin-top: 100px;">
+		<div class="col-sm-offset-3 col-sm-6">
+			<div class="panel panel-default">
+				<div class="panel-heading">
+					Start ERPNext Demo
+				</div>
+				<div class="panel-body">
+					<p>
+					<input id="lead-email" type="email"
+						class="form-control" placeholder="Your Email Id">
+					</p>
+					<p>
+						<button type="submit" id="login_btn" 
+							class="btn btn-primary btn-large">Launch Demo</button>
+					</p>
+					<hr>
+					<p class="text-muted small">Some functionality is disabled for the demo app. The demo data will be cleared regulary. To start your own ERPNext Trial, <a href="https://erpnext.com/pricing-and-signup">click here</a></p>
+				</div>
+			</div>
+		</div>
+	</div>
+	<div class="row">
+	</div>
+</div>
diff --git a/utilities/demo/demo-login.js b/utilities/demo/demo-login.js
new file mode 100644
index 0000000..229d169
--- /dev/null
+++ b/utilities/demo/demo-login.js
@@ -0,0 +1,27 @@
+$(document).ready(function() {
+    $(".navbar, footer, .banner, #user-tools").toggle(false);
+    
+    $("#login_btn").click(function() {
+        var me = this;
+        $(this).html("Logging In...").attr("disabled", "disabled");
+        wn.call({
+            "method": "login",
+            args: {
+                usr: "demo@erpnext.com",
+                pwd: "demo",
+                lead_email: $("#lead-email").val(),
+            },
+            callback: function(r) {
+                $(me).attr("disabled", false);
+                if(r.exc) {
+                    alert("Error, please contact support@erpnext.com");
+                } else {
+                    console.log("Logged In");
+                    window.location.href = "app.html";
+                }
+            }
+        })
+        return false;
+    })
+    .attr("disabled", false);
+})
\ No newline at end of file
diff --git a/utilities/demo/demo_control_panel.py b/utilities/demo/demo_control_panel.py
new file mode 100644
index 0000000..c70913e
--- /dev/null
+++ b/utilities/demo/demo_control_panel.py
@@ -0,0 +1,13 @@
+
+  def on_login(self):
+    from webnotes.utils import validate_email_add
+	import conf
+	if hasattr(conf, "demo_notify_url"):
+      if webnotes.form_dict.lead_email and validate_email_add(webnotes.form_dict.lead_email):
+        import requests
+        response = requests.post(conf.demo_notify_url, data={
+          "cmd":"website.helpers.contact.send_message",
+          "subject":"Logged into Demo",
+          "sender": webnotes.form_dict.lead_email,
+          "message": "via demo.erpnext.com"
+        })
diff --git a/utilities/demo/demo_docs/Address.csv b/utilities/demo/demo_docs/Address.csv
new file mode 100644
index 0000000..51c34b5
--- /dev/null
+++ b/utilities/demo/demo_docs/Address.csv
@@ -0,0 +1,46 @@
+Data Import Template,,,,,,,,,,,,,,,,,,,,,

+Table:,Address,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,

+Notes:,,,,,,,,,,,,,,,,,,,,,

+Please do not change the template headings.,,,,,,,,,,,,,,,,,,,,,

+First data column must be blank.,,,,,,,,,,,,,,,,,,,,,

+Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,,,,,,,

+"For updating, you can update only selective columns.",,,,,,,,,,,,,,,,,,,,,

+"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,,,,,,,

+"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,,,,,,,

+You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,

+Column Labels,ID,Address Type,Address Title,Address Line1,City/Town,Country,Phone,Customer,Customer Name,Supplier,Supplier Name,Address Line2,Pincode,State,Email Id,Fax,Preferred Billing Address,Preferred Shipping Address,Sales Partner,Lead,Lead Name

+Column Name:,name,address_type,address_title,address_line1,city,country,phone,customer,customer_name,supplier,supplier_name,address_line2,pincode,state,email_id,fax,is_primary_address,is_shipping_address,sales_partner,lead,lead_name

+Mandatory:,Yes,Yes,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No,No,No,No,No

+Type:,Data (text),Select,Data,Data,Data,Select,Data,Link,Data,Link,Data,Data,Data,Data,Data,Data,Check,Check,Link,Link,Data

+Info:,,"One of: Billing, Shipping, Office, Personal, Plant, Postal, Shop, Subsidiary, Warehouse, Other",,,,Valid Country,,Valid Customer,,Valid Supplier,,,,,,,0 or 1,0 or 1,Valid Sales Partner,Valid Lead,

+Start entering data below this line,,,,,,,,,,,,,,,,,,,,,

+,,Office,,254 Theotokopoulou Str.,Larnaka,Cyprus,23566775757,Adaptas,Adaptas,,,,,,,,,,,,

+,,Office,,R Patrão Caramelho 116,Fajozes,Portugal,23566775757,Asian Fusion,Asian Fusion,,,,,,,,,,,,

+,,Office,,30 Fulford Road,PENTRE-PIOD,United Kingdom,23566775757,Asian Junction,Asian Junction,,,,,,,,,,,,

+,,Office,,Schoenebergerstrasse 13,Raschau,Germany,23566775757,Big D Supermarkets,Big D Supermarkets,,,,,,,,,,,,

+,,Office,,Hoheluftchaussee 43,Kieritzsch,Germany,23566775757,Buttrey Food & Drug,Buttrey Food & Drug,,,,,,,,,,,,

+,,Office,,R Cimo Vila 6,Rebordosa,Portugal,23566775757,Chi-Chis,Chi-Chis,,,,,,,,,,,,

+,,Office,,R 5 Outubro 9,Quinta Nova São Domingos,Portugal,23566775757,Choices,Choices,,,,,,,,,,,,

+,,Office,,Avenida Macambira 953,Goiânia,Brazil,23566775757,Consumers and Consumers Express,Consumers and Consumers Express,,,,,,,,,,,,

+,,Office,,2342 Goyeau Ave,Windsor,Canada,23566775757,Crafts Canada,Crafts Canada,,,,,,,,,,,,

+,,Office,,Laukaantie 82,KOKKOLA,Finland,23566775757,Endicott Shoes,Endicott Shoes,,,,,,,,,,,,

+,,Office,,9 Brown Street,PETERSHAM,Australia,23566775757,Fayva,Fayva,,,,,,,,,,,,

+,,Office,,Via Donnalbina 41,Cala Gonone,Italy,23566775757,Intelacard,Intelacard,,,,,,,,,,,,

+,,Office,,Liljerum Grenadjärtorpet 69,TOMTEBODA,Sweden,23566775757,Landskip Yard Care,Landskip Yard Care,,,,,,,,,,,,

+,,Office,,72 Bishopgate Street,SEAHAM,United Kingdom,23566775757,Life Plan Counselling,Life Plan Counselling,,,,,,,,,,,,

+,,Office,,Σκαφίδια 105,ΠΑΡΕΚΚΛΗΣΙΑ,Cyprus,23566775757,Mr Fables,Mr Fables,,,,,,,,,,,,

+,,Office,,Mellemvej 7,Aabybro,Denmark,23566775757,Nelson Brothers,Nelson Brothers,,,,,,,,,,,,

+,,Office,,Plouggårdsvej 98,Karby,Denmark,23566775757,Netobill,Netobill,,,,,,,,,,,,

+,,Office,,176 Michalakopoulou Street,Agio Georgoudi,Cyprus,23566775757,,,Helios Air,Helios Air,,,,,,,,,,

+,,Office,,Fibichova 1102,Kokorín,Czech Republic,23566775757,,,Ks Merchandise,Ks Merchandise,,,,,,,,,,

+,,Office,,Zahradní 888,Cechtín,Czech Republic,23566775757,,,HomeBase,HomeBase,,,,,,,,,,

+,,Office,,ul. Grochowska 94,Warszawa,Poland,23566775757,,,Scott Ties,Scott Ties,,,,,,,,,,

+,,Office,,Norra Esplanaden 87,HELSINKI,Finland,23566775757,,,Reliable Investments,Reliable Investments,,,,,,,,,,

+,,Office,,2038 Fallon Drive,Dresden,Canada,23566775757,,,Nan Duskin,Nan Duskin,,,,,,,,,,

+,,Office,,77 cours Franklin Roosevelt,MARSEILLE,France,23566775757,,,Rainbow Records,Rainbow Records,,,,,,,,,,

+,,Office,,ul. Tuwima Juliana 85,Łódź,Poland,23566775757,,,New World Realty,New World Realty,,,,,,,,,,

+,,Office,,Gl. Sygehusvej 41,Narsaq,Greenland,23566775757,,,Asiatic Solutions,Asiatic Solutions,,,,,,,,,,

+,,Office,,Gosposka ulica 50,Nova Gorica,Slovenia,23566775757,,,Eagle Hardware,Eagle Hardware,,,,,,,,,,
\ No newline at end of file
diff --git a/utilities/demo/demo_docs/BOM.csv b/utilities/demo/demo_docs/BOM.csv
new file mode 100644
index 0000000..446fc2e
--- /dev/null
+++ b/utilities/demo/demo_docs/BOM.csv
@@ -0,0 +1,47 @@
+Data Import Template,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Table:,BOM,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Notes:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Please do not change the template headings.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+First data column must be blank.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+"For updating, you can update only selective columns.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+DocType:,BOM,,,,,,,,,,,,,,,,-,BOM Operation,bom_operations,,,,,,-,BOM Item,bom_materials,,,,,,,,,-,BOM Explosion Item,flat_bom_details,,,,,,

+Column Labels:,ID,Last Updated On,Item,Quantity,Is Active,Is Default,With Operations,Rate Of Materials Based On,Price List,Total Cost,Total Raw Material Cost,Total Operating Cost,Item UOM,Project Name,Item Desription,Amended From,-,ID,Operation No,Operation Description,Workstation,Hour Rate,Operation Time (mins),Operating Cost,-,ID,Item Code,Qty,Stock UOM,Operation No,BOM No,Rate,Amount,Scrap %,Item Description,-,ID,Item Code,Description,Qty,Rate,Amount,Stock UOM,Qty Consumed Per Unit

+Column Name:,name,modified,item,quantity,is_active,is_default,with_operations,rm_cost_as_per,buying_price_list,total_cost,raw_material_cost,operating_cost,uom,project_name,description,amended_from,-,name,operation_no,opn_description,workstation,hour_rate,time_in_mins,operating_cost,-,name,item_code,qty,stock_uom,operation_no,bom_no,rate,amount,scrap,description,-,name,item_code,description,qty,rate,amount,stock_uom,qty_consumed_per_unit

+Mandatory:,Yes,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No,No,No,-,Yes,Yes,Yes,No,No,No,No,-,Yes,Yes,Yes,Yes,No,No,No,No,No,No,-,Yes,No,No,No,No,No,No,No

+Type:,Data (text),Data,Link,Float,Check,Check,Check,Select,Link,Float,Float,Float,Select,Link,Small Text,Link,-,Data,Data,Text,Link,Float,Float,Float,-,Data,Link,Float,Link,Select,Link,Float,Float,Float,Text,-,Data,Link,Text,Float,Float,Float,Link,Float

+Info:,,Don't change!,Valid Item,,0 or 1,0 or 1,0 or 1,"One of: Valuation Rate, Last Purchase Rate, Price List",Valid Price List,,,,Valid UOM,Valid Project,,Valid BOM,-,Leave blank for new records,,,Valid Workstation,,,,-,Leave blank for new records,Valid Item,,Valid UOM,,Valid BOM,,,,,-,Leave blank for new records,Valid Item,,,,,Valid UOM,

+Start entering data below this line,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,BOM/Bearing Assembly/001,"""2013-08-07 16:58:00""",Bearing Assembly,1.0,1,1,,Price List,Standard Buying,130.0,130.0,0.0,Nos,,Bearing Assembly,,,,,,,,,,,183,Base Bearing Plate,1.0,Nos,,,15.0,15.0,,1/4 in. x 6 in. x 6 in. Mild Steel Plate,,FBD/000039,Bearing Pipe,1.5 in. Diameter x 36 in. Mild Steel Tubing,1.0,15.0,15.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,184,Bearing Block,1.0,Nos,,,10.0,10.0,,"CAST IRON, MCMASTER PART NO. 3710T13",,FBD/000040,Bearing Collar,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,2.0,20.0,40.0,Nos,2.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,185,Bearing Collar,2.0,Nos,,,20.0,40.0,,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,,FBD/000041,Bearing Block,"CAST IRON, MCMASTER PART NO. 3710T13",1.0,10.0,10.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,186,Bearing Pipe,1.0,Nos,,,15.0,15.0,,1.5 in. Diameter x 36 in. Mild Steel Tubing,,FBD/000042,Upper Bearing Plate,3/16 in. x 6 in. x 6 in. Low Carbon Steel Plate,1.0,50.0,50.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,187,Upper Bearing Plate,1.0,Nos,,,50.0,50.0,,3/16 in. x 6 in. x 6 in. Low Carbon Steel Plate,,FBD/000043,Base Bearing Plate,1/4 in. x 6 in. x 6 in. Mild Steel Plate,1.0,15.0,15.0,Nos,1.0

+,BOM/Wind Mill A Series/001,"""2013-08-07 16:47:02""",Wind Mill A Series,1.0,1,1,,Price List,Standard Buying,223.0,223.0,0.0,Nos,,Wind Mill A Series for Home Use 9ft,,,,,,,,,,,163,Base Bearing Plate,1.0,Nos,,,15.0,15.0,,1/4 in. x 6 in. x 6 in. Mild Steel Plate,,FBD/000008,Shaft,1.25 in. Diameter x 6 ft. Mild Steel Tubing,1.0,30.0,30.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,164,Base Plate,1.0,Nos,,,20.0,20.0,,3/4 in. x 2 ft. x 4 ft. Pine Plywood,,FBD/000009,Base Bearing Plate,1/4 in. x 6 in. x 6 in. Mild Steel Plate,1.0,15.0,15.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,165,Bearing Block,1.0,Nos,,,10.0,10.0,,"CAST IRON, MCMASTER PART NO. 3710T13",,FBD/000010,External Disc,15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing,1.0,45.0,45.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,166,Bearing Pipe,1.0,Nos,,,15.0,15.0,,1.5 in. Diameter x 36 in. Mild Steel Tubing,,FBD/000011,Bearing Pipe,1.5 in. Diameter x 36 in. Mild Steel Tubing,1.0,15.0,15.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,167,External Disc,1.0,Nos,,,45.0,45.0,,15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing,,FBD/000012,Wing Sheet,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,4.0,22.0,88.0,Nos,4.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,168,Shaft,1.0,Nos,,,30.0,30.0,,1.25 in. Diameter x 6 ft. Mild Steel Tubing,,FBD/000013,Base Plate,3/4 in. x 2 ft. x 4 ft. Pine Plywood,1.0,20.0,20.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,169,Wing Sheet,4.0,Nos,,,22.0,88.0,,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,,FBD/000014,Bearing Block,"CAST IRON, MCMASTER PART NO. 3710T13",1.0,10.0,10.0,Nos,1.0

+,BOM/Wind MIll C Series/001,"""2013-08-07 16:58:51""",Wind MIll C Series,1.0,1,1,,Price List,Standard Buying,314.0,314.0,0.0,Nos,,Wind Mill C Series for Commercial Use 18ft,,,,,,,,,,,176,Base Plate,2.0,Nos,,,20.0,40.0,,3/4 in. x 2 ft. x 4 ft. Pine Plywood,,FBD/000061,Base Bearing Plate,1/4 in. x 6 in. x 6 in. Mild Steel Plate,1.0,15.0,15.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,178,Internal Disc,1.0,Nos,,,33.0,33.0,,For Bearing Collar,,FBD/000062,Bearing Collar,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,2.0,20.0,40.0,Nos,2.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,179,External Disc,1.0,Nos,,,45.0,45.0,,15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing,,FBD/000063,Base Plate,3/4 in. x 2 ft. x 4 ft. Pine Plywood,2.0,20.0,40.0,Nos,2.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,188,Bearing Assembly,1.0,Nos,,BOM/Bearing Assembly/001,130.0,130.0,,Bearing Assembly,,FBD/000064,Bearing Pipe,1.5 in. Diameter x 36 in. Mild Steel Tubing,1.0,15.0,15.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,189,Wing Sheet,3.0,Nos,,,22.0,66.0,,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,,FBD/000065,Internal Disc,For Bearing Collar,1.0,33.0,33.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,FBD/000066,Upper Bearing Plate,3/16 in. x 6 in. x 6 in. Low Carbon Steel Plate,1.0,50.0,50.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,FBD/000067,Wing Sheet,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,3.0,22.0,66.0,Nos,3.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,FBD/000068,External Disc,15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing,1.0,45.0,45.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,FBD/000069,Bearing Block,"CAST IRON, MCMASTER PART NO. 3710T13",1.0,10.0,10.0,Nos,1.0

+,BOM/Wind Turbine/001,"""2013-08-07 16:51:56""",Wind Turbine,1.0,1,1,,Price List,Standard Buying,139.0,139.0,0.0,Nos,,Small Wind Turbine for Home Use,,,,,,,,,,,170,Base Bearing Plate,1.0,Nos,,,15.0,15.0,,1/4 in. x 6 in. x 6 in. Mild Steel Plate,,FBD/000021,Shaft,1.25 in. Diameter x 6 ft. Mild Steel Tubing,1.0,30.0,30.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,171,Base Plate,1.0,Nos,,,20.0,20.0,,3/4 in. x 2 ft. x 4 ft. Pine Plywood,,FBD/000022,Bearing Collar,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,1.0,20.0,20.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,172,Bearing Collar,1.0,Nos,,,20.0,20.0,,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,,FBD/000023,Base Plate,3/4 in. x 2 ft. x 4 ft. Pine Plywood,1.0,20.0,20.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,173,Blade Rib,1.0,Nos,,,10.0,10.0,,1/2 in. x 2 ft. x 4 ft. Pine Plywood,,FBD/000024,Base Bearing Plate,1/4 in. x 6 in. x 6 in. Mild Steel Plate,1.0,15.0,15.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,174,Shaft,1.0,Nos,,,30.0,30.0,,1.25 in. Diameter x 6 ft. Mild Steel Tubing,,FBD/000025,Blade Rib,1/2 in. x 2 ft. x 4 ft. Pine Plywood,1.0,10.0,10.0,Nos,1.0

+,,,,,,,,,,,,,,,,,,,,,,,,,,175,Wing Sheet,2.0,Nos,,,22.0,44.0,,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,,FBD/000026,Wing Sheet,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,2.0,22.0,44.0,Nos,2.0
\ No newline at end of file
diff --git a/utilities/demo/demo_docs/Contact.csv b/utilities/demo/demo_docs/Contact.csv
new file mode 100644
index 0000000..be3dddc
--- /dev/null
+++ b/utilities/demo/demo_docs/Contact.csv
@@ -0,0 +1,46 @@
+Data Import Template,,,,,,,,,,,,,,,

+Table:,Contact,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,

+Notes:,,,,,,,,,,,,,,,

+Please do not change the template headings.,,,,,,,,,,,,,,,

+First data column must be blank.,,,,,,,,,,,,,,,

+Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,

+"For updating, you can update only selective columns.",,,,,,,,,,,,,,,

+"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,

+"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,

+You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,

+Column Labels,First Name,Email Id,Phone,Last Name,Status,Customer,Customer Name,Supplier,Supplier Name,Sales Partner,Is Primary Contact,Mobile No,Department,Designation,Unsubscribed

+Column Name:,first_name,email_id,phone,last_name,status,customer,customer_name,supplier,supplier_name,sales_partner,is_primary_contact,mobile_no,department,designation,unsubscribed

+Mandatory:,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No,No,No

+Type:,Data,Data,Data,Data,Select,Link,Data,Link,Data,Link,Check,Data,Data,Data,Check

+Info:,,,,,"One of: Open, Replied",Valid Customer,,Valid Supplier,,Valid Sales Partner,0 or 1,,,,0 or 1

+Start entering data below this line,,,,,,,,,,,,,,,

+,Jan,JanVaclavik@dayrep.com,456675757,Václavík,,Adaptas,Adaptas,,,,,,,,

+,Chidumaga,ChidumagaTobeolisa@armyspy.com,456675757,Tobeolisa,,Asian Fusion,Asian Fusion,,,,,,,,

+,Jana,JanaKubanova@superrito.com,456675757,Kubáňová,,Asian Junction,Asian Junction,,,,,,,,

+,紹萱,XuChaoXuan@gustr.com,456675757,于,,Big D Supermarkets,Big D Supermarkets,,,,,,,,

+,Özlem,OzlemVerwijmeren@dayrep.com,456675757,Verwijmeren,,Buttrey Food & Drug,Buttrey Food & Drug,,,,,,,,

+,Hans,HansRasmussen@superrito.com,456675757,Rasmussen,,Chi-Chis,Chi-Chis,,,,,,,,

+,Satomi,SatomiShigeki@superrito.com,456675757,Shigeki,,Choices,Choices,,,,,,,,

+,Simon,SimonVJessen@superrito.com,456675757,Jessen,,Consumers and Consumers Express,Consumers and Consumers Express,,,,,,,,

+,نگارین,NeguaranShahsaah@teleworm.us,456675757,شاه سیاه,,Crafts Canada,Crafts Canada,,,,,,,,

+,Lom-Ali,Lom-AliBataev@dayrep.com,456675757,Bataev,,Endicott Shoes,Endicott Shoes,,,,,,,,

+,Tiên,VanNgocTien@einrot.com,456675757,Văn,,Fayva,Fayva,,,,,,,,

+,Quimey,QuimeyOsorioRuelas@gustr.com,456675757,Osorio,,Intelacard,Intelacard,,,,,,,,

+,Edgarda,EdgardaSalcedoRaya@teleworm.us,456675757,Salcedo,,Landskip Yard Care,Landskip Yard Care,,,,,,,,

+,Hafsteinn,HafsteinnBjarnarsonar@armyspy.com,456675757,Bjarnarsonar,,Life Plan Counselling,Life Plan Counselling,,,,,,,,

+,Даниил,@superrito.com,456675757,Коновалов,,Mr Fables,Mr Fables,,,,,,,,

+,Selma,SelmaMAndersen@teleworm.us,456675757,Andersen,,Nelson Brothers,Nelson Brothers,,,,,,,,

+,Ladislav,LadislavKolaja@armyspy.com,456675757,Kolaja,,Netobill,Netobill,,,,,,,,

+,Tewolde,TewoldeAbaalom@teleworm.us,456675757,Abaalom,,,,Helios Air,Helios Air,,,,,,

+,Leila,LeilaFernandesRodrigues@gustr.com,456675757,Rodrigues,,,,Ks Merchandise,Ks Merchandise,,,,,,

+,Dmitry,DmitryBulgakov@gustr.com,456675757,Bulgakov,,,,HomeBase,HomeBase,,,,,,

+,Haiduc,HaiducWhitfoot@dayrep.com,456675757,Whitfoot,,,,Scott Ties,Scott Ties,,,,,,

+,Sesselja,SesseljaPetursdottir@cuvox.de,456675757,Pétursdóttir,,,,Reliable Investments,Reliable Investments,,,,,,

+,Hajdar,HajdarPignar@superrito.com,456675757,Pignar,,,,Nan Duskin,Nan Duskin,,,,,,

+,Gustava,GustavaLorenzo@teleworm.us,456675757,Lorenzo,,,,Rainbow Records,Rainbow Records,,,,,,

+,Bethany,BethanyWood@teleworm.us,456675757,Wood,,,,New World Realty,New World Realty,,,,,,

+,Gloriana,GlorianaBrownlock@cuvox.de,456675757,Brownlock,,,,Asiatic Solutions,Asiatic Solutions,,,,,,

+,Jenson,JensonFraser@gustr.com,456675757,Fraser,,,,Eagle Hardware,Eagle Hardware,,,,,,
\ No newline at end of file
diff --git a/utilities/demo/demo_docs/Customer.csv b/utilities/demo/demo_docs/Customer.csv
new file mode 100644
index 0000000..2ed0e1c
--- /dev/null
+++ b/utilities/demo/demo_docs/Customer.csv
@@ -0,0 +1,38 @@
+Data Import Template,,,,,,,,,,,,,,,,

+Table:,Customer,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,

+Notes:,,,,,,,,,,,,,,,,

+Please do not change the template headings.,,,,,,,,,,,,,,,,

+First data column must be blank.,,,,,,,,,,,,,,,,

+Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,,

+"For updating, you can update only selective columns.",,,,,,,,,,,,,,,,

+"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,,

+"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,,

+You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,

+Column Labels,ID,Customer Name,Customer Type,Customer Group,Territory,Company,Series,Lead Ref,Default Price List,Default Currency,Customer Details,Credit Days,Credit Limit,Website,Default Sales Partner,Default Commission Rate

+Column Name:,name,customer_name,customer_type,customer_group,territory,company,naming_series,lead_name,default_price_list,default_currency,customer_details,credit_days,credit_limit,website,default_sales_partner,default_commission_rate

+Mandatory:,Yes,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No

+Type:,Data (text),Data,Select,Link,Link,Link,Select,Link,Link,Link,Text,Int,Currency,Data,Link,Float

+Info:,,,"One of: Company, Individual",Valid Customer Group,Valid Territory,Valid Company,"One of: CUST, CUSTMUM",Valid Lead,Valid Price List,Valid Currency,,Integer,,,Valid Sales Partner,

+Start entering data below this line,,,,,,,,,,,,,,,,

+,,Asian Junction,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Life Plan Counselling,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Two Pesos,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Mr Fables,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Intelacard,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Big D Supermarkets,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Adaptas,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Nelson Brothers,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Landskip Yard Care,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Buttrey Food & Drug,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Fayva,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Asian Fusion,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Crafts Canada,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Consumers and Consumers Express,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Netobill,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Choices,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Chi-Chis,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Red Food,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,

+,,Endicott Shoes,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
\ No newline at end of file
diff --git a/utilities/demo/demo_docs/Employee.csv b/utilities/demo/demo_docs/Employee.csv
new file mode 100644
index 0000000..c9b340a
--- /dev/null
+++ b/utilities/demo/demo_docs/Employee.csv
@@ -0,0 +1,40 @@
+Data Import Template,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Table:,Employee,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Notes:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Please do not change the template headings.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+First data column must be blank.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+"For updating, you can update only selective columns.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+DocType:,Employee,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Column Labels:,ID,Full Name,Date of Joining,Date of Birth,Gender,Company,Status,Naming Series,Salutation,Image,User ID,Employee Number,Employment Type,Holiday List,Scheduled Confirmation Date,Final Confirmation Date,Contract End Date,Date Of Retirement,Branch,Department,Designation,Grade,Email (By company),Notice - Number of Days,Salary Mode,Bank Name,Bank A/C No.,ESIC CARD No,PF Number,Gratuity LIC ID,Reports to,Cell Number,Personal Email,Person To Be Contacted,Relation,Emergency Phone Number,Permanent Accommodation Type,Permanent Address,Current Accommodation Type,Current Address,Bio,PAN Number,Passport Number,Date of Issue,Valid Upto,Place of Issue,Marital Status,Blood Group,Family Background,Health Details,Resignation Letter Date,Relieving Date,Reason for Leaving,Leave Encashed?,Encashment Date,Held On,Reason for Resignation,New Workplace,Feedback

+Column Name:,name,employee_name,date_of_joining,date_of_birth,gender,company,status,naming_series,salutation,image,user_id,employee_number,employment_type,holiday_list,scheduled_confirmation_date,final_confirmation_date,contract_end_date,date_of_retirement,branch,department,designation,grade,company_email,notice_number_of_days,salary_mode,bank_name,bank_ac_no,esic_card_no,pf_number,gratuity_lic_id,reports_to,cell_number,personal_email,person_to_be_contacted,relation,emergency_phone_number,permanent_accommodation_type,permanent_address,current_accommodation_type,current_address,bio,pan_number,passport_number,date_of_issue,valid_upto,place_of_issue,marital_status,blood_group,family_background,health_details,resignation_letter_date,relieving_date,reason_for_leaving,leave_encashed,encashment_date,held_on,reason_for_resignation,new_workplace,feedback

+Mandatory:,Yes,Yes,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No

+Type:,Data (text),Data,Date,Date,Select,Select,Select,Select,Select,Select,Link,Data,Link,Link,Date,Date,Date,Date,Link,Link,Link,Link,Data,Int,Select,Data,Data,Data,Data,Data,Link,Data,Data,Data,Data,Data,Select,Small Text,Select,Small Text,Text Editor,Data,Data,Date,Date,Data,Select,Select,Small Text,Small Text,Date,Date,Data,Select,Date,Date,Select,Data,Small Text

+Info:,,,,,"One of: Male, Female",Valid Company,"One of: Active, Left",One of: EMP/,"One of: Mr, Ms",One of: attach_files:,Valid Profile,,Valid Employment Type,Valid Holiday List,,,,,Valid Branch,Valid Department,Valid Designation,Valid Grade,,Integer,"One of: Bank, Cash, Cheque",,,,,,Valid Employee,,,,,,"One of: Rented, Owned",,"One of: Rented, Owned",,,,,,,,"One of: Single, Married, Divorced, Widowed","One of: A+, A-, B+, B-, AB+, AB-, O+, O-",,,,,,"One of: Yes, No",,,"One of: Better Prospects, Health Concerns",,

+Start entering data below this line,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Dikman Shervashidze Shervashidze,10-10-2001,03-01-1982,Female,Wind Power LLC,Active,EMP/,,,DikmanShervashidze@armyspy.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Zukutakitoteka ,09-16-1976,03-02-1959,Female,Wind Power LLC,Active,EMP/,,,Zukutakitoteka@teleworm.us,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Hatsue Kashiwagi,06-16-2000,03-03-1982,Female,Wind Power LLC,Active,EMP/,,,HatsueKashiwagi@cuvox.de,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Nuran Verkleij,07-01-1969,04-04-1945,Female,Wind Power LLC,Active,EMP/,,,NuranVerkleij@einrot.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Дмитрий Пирогов,12-24-1999,03-05-1978,Male,Wind Power LLC,Active,EMP/,,,aromn@armyspy.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Tilde Lindqvist,08-05-1981,03-06-1964,Female,Wind Power LLC,Active,EMP/,,,TildeLindqvist@cuvox.de,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Michał Sobczak,06-10-2006,03-07-1982,Male,Wind Power LLC,Active,EMP/,,,MichalSobczak@teleworm.us,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Gabrielle Loftus,10-21-1993,03-08-1969,Female,Wind Power LLC,Active,EMP/,,,GabrielleLoftus@superrito.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Vakhita Ryzaev,09-06-2005,03-09-1982,Male,Wind Power LLC,Active,EMP/,,,VakhitaRyzaev@teleworm.us,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Charmaine Gaudreau,12-25-2007,03-10-1985,Female,Wind Power LLC,Active,EMP/,,,CharmaineGaudreau@cuvox.de,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Rafaëla Maartens,09-02-2002,03-11-1982,Female,Wind Power LLC,Active,EMP/,,,RafaelaMaartens@cuvox.de,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Nuguse Yohannes,08-24-1984,07-12-1966,Male,Wind Power LLC,Active,EMP/,,,NuguseYohannes@dayrep.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Раиса Белякова,12-04-2002,03-13-1982,Female,Wind Power LLC,Active,EMP/,,,panca@armyspy.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,胤隆 蔡,03-14-2011,06-14-1991,Male,Wind Power LLC,Active,EMP/,,,CaYinLong@gustr.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Freddie Scott,12-14-2004,03-15-1982,Male,Wind Power LLC,Active,EMP/,,,FreddieScott@armyspy.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Bergþóra Vigfúsdóttir,05-17-2004,03-16-1982,Female,Wind Power LLC,Active,EMP/,,,BergoraVigfusdottir@superrito.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Ward Kalb,05-13-1994,03-17-1973,Male,Wind Power LLC,Active,EMP/,,,WardNajmalDinKalb@cuvox.de,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Wan Mai,12-15-2003,09-18-1982,Female,Wind Power LLC,Active,EMP/,,,WanMai@teleworm.us,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Leon Abdulov,03-15-1999,03-19-1982,Male,Wind Power LLC,Active,EMP/,,,LeonAbdulov@superrito.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Sabina Novotná,01-25-1991,03-20-1974,Female,Wind Power LLC,Active,EMP/,,,SabinaNovotna@superrito.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
\ No newline at end of file
diff --git a/utilities/demo/demo_docs/Fiscal_Year.csv b/utilities/demo/demo_docs/Fiscal_Year.csv
new file mode 100644
index 0000000..09e8252
--- /dev/null
+++ b/utilities/demo/demo_docs/Fiscal_Year.csv
@@ -0,0 +1,23 @@
+Data Import Template,,,,

+Table:,Fiscal Year,,,

+,,,,

+,,,,

+Notes:,,,,

+Please do not change the template headings.,,,,

+First data column must be blank.,,,,

+"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,

+"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,

+Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,

+"For updating, you can update only selective columns.",,,,

+You can only upload upto 5000 records in one go. (may be less in some cases),,,,

+,,,,

+DocType:,Fiscal Year,,,

+Column Labels:,ID,Year Name,Year Start Date,Year Closed

+Column Name:,name,year,year_start_date,is_fiscal_year_closed

+Mandatory:,Yes,Yes,Yes,No

+Type:,Data (text),Data,Date,Select

+Info:,,,,"One of: No, Yes"

+Start entering data below this line,,,,

+,,2009,01-Jan-2009,No

+,,2010,01-Jan-2010,No

+,,2011,01-Jan-2011,No
\ No newline at end of file
diff --git a/utilities/demo/demo_docs/Item.csv b/utilities/demo/demo_docs/Item.csv
new file mode 100644
index 0000000..789e10c
--- /dev/null
+++ b/utilities/demo/demo_docs/Item.csv
@@ -0,0 +1,50 @@
+Data Import Template,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Table:,Item,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Notes:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Please do not change the template headings.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+First data column must be blank.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+"For updating, you can update only selective columns.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+DocType:,Item,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-,Item Reorder,item_reorder,,,,-,UOM Conversion Detail,uom_conversion_details,,-,Item Supplier,item_supplier_details,,-,Item Customer Detail,item_customer_details,,-,Item Tax,item_tax,,-,Item Price,ref_rate_details,,,,-,Item Quality Inspection Parameter,item_specification_details,,-,Website Item Group,website_item_groups,-,Item Website Specification,item_website_specifications,

+Column Labels:,ID,Last Updated On,Item Name,Item Group,Default Unit of Measure,Description,Is Stock Item,Is Asset Item,Has Batch No,Has Serial No,Is Purchase Item,Is Sales Item,Is Service Item,Allow Samples,Inspection Required,Allow Bill of Materials,Allow Production Order,Is Sub Contracted Item,Document Numbering Series,Item Code,Brand,Barcode,Image,Description HTML,Default Warehouse,Allowance Percent,Valuation Method,Minimum Order Qty,Serial Number Series,Warranty Period (in days),End of Life,Net Weight,Weight UOM,Re-Order Level,Re-Order Qty,Default Supplier,Lead Time Days,Default Expense Account,Default Cost Center,Last Purchase Rate,Standard Rate,Manufacturer,Manufacturer Part Number,Max Discount (%),Default Income Account,Cost Center,Default BOM,Show in Website,Page Name,Weightage,Slideshow,Image,Website Warehouse,Website Description,-,ID,Warehouse,Re-order Level,Material Request Type,Re-order Qty,-,ID,UOM,Conversion Factor,-,ID,Supplier,Supplier Part Number,-,ID,Customer Name,Ref Code,-,ID,Tax,Tax Rate,-,ID,Price List Name,Ref Rate,Valid for Buying or Selling?,Currency,-,ID,Parameter,Acceptance Criteria,-,ID,Item Group,-,ID,Label,Description

+Column Name:,name,modified,item_name,item_group,stock_uom,description,is_stock_item,is_asset_item,has_batch_no,has_serial_no,is_purchase_item,is_sales_item,is_service_item,is_sample_item,inspection_required,is_manufactured_item,is_pro_applicable,is_sub_contracted_item,naming_series,item_code,brand,barcode,image,description_html,default_warehouse,tolerance,valuation_method,min_order_qty,serial_no_series,warranty_period,end_of_life,net_weight,weight_uom,re_order_level,re_order_qty,default_supplier,lead_time_days,purchase_account,cost_center,last_purchase_rate,standard_rate,manufacturer,manufacturer_part_no,max_discount,default_income_account,default_sales_cost_center,default_bom,show_in_website,page_name,weightage,slideshow,website_image,website_warehouse,web_long_description,-,name,warehouse,warehouse_reorder_level,material_request_type,warehouse_reorder_qty,-,name,uom,conversion_factor,-,name,supplier,supplier_part_no,-,name,customer_name,ref_code,-,name,tax_type,tax_rate,-,name,price_list,ref_rate,buying_or_selling,ref_currency,-,name,specification,value,-,name,item_group,-,name,label,description

+Mandatory:,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,-,Yes,Yes,Yes,Yes,No,-,Yes,No,No,-,Yes,No,No,-,Yes,Yes,Yes,-,Yes,Yes,No,-,Yes,Yes,Yes,Yes,No,-,Yes,Yes,No,-,Yes,No,-,Yes,No,No

+Type:,Data (text),Data,Data,Link,Link,Small Text,Select,Select,Select,Select,Select,Select,Select,Select,Select,Select,Select,Select,Select,Data,Link,Data,Select,Small Text,Link,Float,Select,Float,Data,Data,Date,Float,Link,Float,Float,Link,Int,Link,Link,Float,Float,Data,Data,Float,Link,Link,Link,Check,Data,Int,Link,Select,Link,Text Editor,-,Data,Link,Float,Select,Float,-,Data,Link,Float,-,Data,Link,Data,-,Data,Link,Data,-,Data,Link,Float,-,Data,Link,Currency,Select,Link,-,Data,Data,Data,-,Data,Link,-,Data,Data,Text

+Info:,,Don't change!,,Valid Item Group,Valid UOM,,"One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No",One of: ITEM,,Valid Brand,,One of: attach_files:,,Valid Warehouse,,"One of: FIFO, Moving Average",,,,,,Valid UOM,,,Valid Supplier,Integer,Valid Account,Valid Cost Center,,,,,,Valid Account,Valid Cost Center,Valid BOM,0 or 1,,Integer,Valid Website Slideshow,One of: attach_files:,Valid Warehouse,,-,Leave blank for new records,Valid Warehouse,,"One of: Purchase, Transfer",,-,Leave blank for new records,Valid UOM,,-,Leave blank for new records,Valid Supplier,,-,Leave blank for new records,Valid Customer,,-,Leave blank for new records,Valid Account,,-,Leave blank for new records,Valid Price List,,"One of: Buying, Selling",Valid Currency,-,Leave blank for new records,,,-,Leave blank for new records,Valid Item Group,-,Leave blank for new records,,

+Start entering data below this line,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,Base Bearing Plate,"""2013-08-20 11:11:53""",Base Bearing Plate,Raw Material,Nos,1/4 in. x 6 in. x 6 in. Mild Steel Plate,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Base Bearing Plate,,,,,Stores - WP,0.0,,0.0,,,,0.0,,0.0,0.0,Eagle Hardware,0,,,15.0,0.0,,,0.0,,,,0,,0,,,,,,,,,,,,UCDD/00001,Nos,1.0,,,,,,,,,,,,,,RFD/00001,Standard Buying,15.0,Buying,USD,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,RFD/00017,Standard Selling,21.0,Selling,USD,,,,,,,,,,,

+,Base Plate,"""2013-08-20 11:11:53""",Base Plate,Raw Material,Nos,3/4 in. x 2 ft. x 4 ft. Pine Plywood,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Base Plate,,,,,Stores - WP,0.0,,0.0,,,,0.0,,0.0,0.0,HomeBase,0,,,20.0,0.0,,,0.0,,,,0,,0,,,,,,,,,,,,UCDD/00002,Nos,1.0,,,,,,,,,,,,,,RFD/00002,Standard Buying,20.0,Buying,USD,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,RFD/00018,Standard Selling,28.0,Selling,USD,,,,,,,,,,,

+,Bearing Assembly,"""2013-08-20 11:11:55""",Bearing Assembly,Sub Assemblies,Nos,Bearing Assembly,Yes,No,No,No,No,Yes,No,No,No,Yes,Yes,No,,Bearing Assembly,,,,,Stores - WP,0.0,,0.0,,,,0.0,,0.0,0.0,Asiatic Solutions,0,,,0.0,0.0,,,0.0,,,,0,,0,,,,,,,,,,,,UCDD/00003,Nos,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,Bearing Block,"""2013-08-20 11:11:54""",Bearing Block,Raw Material,Nos,"CAST IRON, MCMASTER PART NO. 3710T13",Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Bearing Block,,,,,Stores - WP,0.0,,0.0,,,,0.0,,0.0,0.0,Nan Duskin,0,,,10.0,0.0,,,0.0,,,,0,,0,,,,,,,,,,,,UCDD/00004,Nos,1.0,,,,,,,,,,,,,,RFD/00003,Standard Buying,10.0,Buying,USD,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,RFD/00019,Standard Selling,14.0,Selling,USD,,,,,,,,,,,

+,Bearing Collar,"""2013-08-20 11:11:54""",Bearing Collar,Raw Material,Nos,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Bearing Collar,,,,,Stores - WP,0.0,,0.0,,,,0.0,,0.0,0.0,Eagle Hardware,0,,,20.0,0.0,,,0.0,,,,0,,0,,,,,,,,,,,,UCDD/00005,Nos,1.0,,,,,,,,,,,,,,RFD/00004,Standard Buying,20.0,Buying,USD,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,RFD/00020,Standard Selling,28.0,Selling,USD,,,,,,,,,,,

+,Bearing Pipe,"""2013-08-20 11:11:54""",Bearing Pipe,Raw Material,Nos,1.5 in. Diameter x 36 in. Mild Steel Tubing,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Bearing Pipe,,,,,Stores - WP,0.0,,0.0,,,,0.0,,0.0,0.0,HomeBase,0,,,15.0,0.0,,,0.0,,,,0,,0,,,,,,,,,,,,UCDD/00006,Nos,1.0,,,,,,,,,,,,,,RFD/00005,Standard Buying,15.0,Buying,USD,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,RFD/00021,Standard Selling,21.0,Selling,USD,,,,,,,,,,,

+,Blade Rib,"""2013-08-20 11:11:54""",Blade Rib,Raw Material,Nos,1/2 in. x 2 ft. x 4 ft. Pine Plywood,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Blade Rib,,,,,Stores - WP,0.0,,0.0,,,,0.0,,0.0,0.0,Ks Merchandise,0,,,0.0,0.0,,,0.0,,,,0,,0,,,,,,,,,,,,UCDD/00007,Nos,1.0,,,,,,,,,,,,,,RFD/00006,Standard Buying,10.0,Buying,USD,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,RFD/00022,Standard Selling,14.0,Selling,USD,,,,,,,,,,,

+,Disc Collars,"""2013-08-20 11:11:54""",Disc Collars,Raw Material,Nos,For Upper Bearing,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Disc Collars,,,,,Stores - WP,0.0,,0.0,,,,0.0,,0.0,0.0,Asiatic Solutions,0,,,0.0,0.0,,,0.0,,,,0,,0,,,,,,,,,,,,UCDD/00008,Nos,1.0,,,,,,,,,,,,,,RFD/00007,Standard Buying,74.0,Buying,USD,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,RFD/00023,Standard Selling,103.6,Selling,USD,,,,,,,,,,,

+,External Disc,"""2013-08-20 11:11:54""",External Disc,Raw Material,Nos,15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,External Disc,,,,,Stores - WP,0.0,,0.0,,,,0.0,,0.0,0.0,HomeBase,0,,,45.0,0.0,,,0.0,,,,0,,0,,,,,,,,,,,,UCDD/00009,Nos,1.0,,,,,,,,,,,,,,RFD/00008,Standard Buying,45.0,Buying,USD,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,RFD/00024,Standard Selling,63.0,Selling,USD,,,,,,,,,,,

+,Internal Disc,"""2013-08-20 11:11:54""",Internal Disc,Raw Material,Nos,For Bearing Collar,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Internal Disc,,,,,Stores - WP,0.0,,0.0,,,,0.0,,0.0,0.0,HomeBase,0,,,33.0,0.0,,,0.0,,,,0,,0,,,,,,,,,,,,UCDD/00010,Nos,1.0,,,,,,,,,,,,,,RFD/00009,Standard Buying,33.0,Buying,USD,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,RFD/00025,Standard Selling,46.2,Selling,USD,,,,,,,,,,,

+,Shaft,"""2013-08-20 11:11:54""",Shaft,Raw Material,Nos,1.25 in. Diameter x 6 ft. Mild Steel Tubing,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Shaft,,,,,Stores - WP,0.0,,0.0,,,,0.0,,0.0,0.0,Eagle Hardware,0,,,30.0,0.0,,,0.0,,,,0,,0,,,,,,,,,,,,UCDD/00011,Nos,1.0,,,,,,,,,,,,,,RFD/00010,Standard Buying,30.0,Buying,USD,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,RFD/00026,Standard Selling,42.0,Selling,USD,,,,,,,,,,,

+,Stand,"""2013-08-20 11:11:54""",Stand,Raw Material,Nos,N/A,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Stand,,,,,Stores - WP,0.0,,0.0,,,,0.0,,0.0,0.0,Scott Ties,0,,,0.0,0.0,,,0.0,,,,0,,0,,,,,,,,,,,,UCDD/00012,Nos,1.0,,,,,,,,,,,,,,RFD/00011,Standard Buying,40.0,Buying,USD,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,RFD/00027,Standard Selling,56.0,Selling,USD,,,,,,,,,,,

+,Upper Bearing Plate,"""2013-08-20 11:11:54""",Upper Bearing Plate,Raw Material,Nos,3/16 in. x 6 in. x 6 in. Low Carbon Steel Plate,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Upper Bearing Plate,,,,,Stores - WP,0.0,,0.0,,,,0.0,,0.0,0.0,Eagle Hardware,0,,,50.0,0.0,,,0.0,,,,0,,0,,,,,,,,,,,,UCDD/00013,Nos,1.0,,,,,,,,,,,,,,RFD/00012,Standard Buying,50.0,Buying,USD,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,RFD/00028,Standard Selling,70.0,Selling,USD,,,,,,,,,,,

+,Wind Mill A Series,"""2013-08-20 11:27:46""",Wind Mill A Series,Products,Nos,Wind Mill A Series for Home Use 9ft,Yes,No,No,Yes,No,Yes,Yes,No,No,Yes,Yes,No,,Wind Mill A Series,,,,,Finished Goods - WP,0.0,,0.0,WMA,,,0.0,,0.0,0.0,,0,,,0.0,0.0,,,0.0,,,,0,,0,,,,,,,,,,,,UCDD/00014,Nos,1.0,,,,,,,,,,,,,,RFD/00015,Standard Selling,340.0,Selling,USD,,,,,,,,,,,

+,Wind MIll C Series,"""2013-08-20 11:27:27""",Wind MIll C Series,Products,Nos,Wind Mill C Series for Commercial Use 18ft,Yes,No,No,Yes,No,Yes,Yes,No,No,Yes,Yes,No,,Wind MIll C Series,,,,,Finished Goods - WP,0.0,,0.0,WMC,,,0.0,,0.0,0.0,,0,,,0.0,0.0,,,0.0,,,,0,,0,,,,,,,,,,,,UCDD/00015,Nos,1.0,,,,,,,,,,,,,,RFD/00016,Standard Selling,400.0,Selling,USD,,,,,,,,,,,

+,Wind Turbine,"""2013-08-20 11:29:26""",Wind Turbine,Products,Nos,Small Wind Turbine for Home Use,Yes,No,No,Yes,No,Yes,Yes,No,No,Yes,Yes,No,,Wind Turbine,,,,,Finished Goods - WP,0.0,,0.0,WTU,,,0.0,,0.0,0.0,,0,,,0.0,0.0,,,0.0,,,,0,,0,,,,,,,,,,,,UCDD/00016,Nos,1.0,,,,,,,,,,,,,,RFD/00014,Standard Selling,300.0,Selling,USD,,,,,,,,,,,

+,Wing Sheet,"""2013-08-20 11:11:55""",Wing Sheet,Raw Material,Nos,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Wing Sheet,,,,,Stores - WP,0.0,,0.0,,,,0.0,,0.0,0.0,New World Realty,0,,,22.0,0.0,,,0.0,,,,0,,0,,,,,,,,,,,,UCDD/00017,Nos,1.0,,,,,,,,,,,,,,RFD/00013,Standard Buying,22.0,Buying,USD,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,RFD/00029,Standard Selling,30.8,Selling,USD,,,,,,,,,,,
\ No newline at end of file
diff --git a/utilities/demo/demo_docs/Item_Price.csv b/utilities/demo/demo_docs/Item_Price.csv
new file mode 100644
index 0000000..c1bc7ad
--- /dev/null
+++ b/utilities/demo/demo_docs/Item_Price.csv
@@ -0,0 +1,50 @@
+Data Import Template,,,,,

+Table:,Item Price,,,,

+Parent Table:,Item,,,,

+,,,,,

+Notes:,,,,,

+Please do not change the template headings.,,,,,

+First data column must be blank.,,,,,

+Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,

+"For updating, you can update only selective columns.",,,,,

+"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,

+"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,

+You can only upload upto 5000 records in one go. (may be less in some cases),,,,,

+"""Parent"" signifies the parent table in which this row must be added",,,,,

+"If you are updating, please select ""Overwrite"" else existing rows will not be deleted.",,,,,

+,,,,,

+Column Labels,ID,Price List Name,Valid for Buying or Selling?,Ref Rate,Currency

+Column Name:,parent,price_list,buying_or_selling,ref_rate,ref_currency

+Mandatory:,Yes,Yes,Yes,No,No

+Type:,Data (text),Link,Select,Currency,Link

+Info:,,Valid Price List,"One of: Buying, Selling",,Valid Currency

+Start entering data below this line,,,,,

+,Base Bearing Plate,Standard Buying,Buying,15,USD

+,Base Plate,Standard Buying,Buying,20,USD

+,Bearing Block,Standard Buying,Buying,10,USD

+,Bearing Collar,Standard Buying,Buying,20,USD

+,Bearing Pipe,Standard Buying,Buying,15,USD

+,Blade Rib,Standard Buying,Buying,10,USD

+,Disc Collars,Standard Buying,Buying,74,USD

+,External Disc,Standard Buying,Buying,45,USD

+,Internal Disc,Standard Buying,Buying,33,USD

+,Shaft,Standard Buying,Buying,30,USD

+,Stand,Standard Buying,Buying,40,USD

+,Upper Bearing Plate,Standard Buying,Buying,50,USD

+,Wing Sheet,Standard Buying,Buying,22,USD

+,Wind Turbine,Standard Selling,Selling,300,USD

+,Wind Mill A Series,Standard Selling,Selling,340,USD

+,Wind MIll C Series,Standard Selling,Selling,400,USD

+,Base Bearing Plate,Standard Selling,Selling,21,USD

+,Base Plate,Standard Selling,Selling,28,USD

+,Bearing Block,Standard Selling,Selling,14,USD

+,Bearing Collar,Standard Selling,Selling,28,USD

+,Bearing Pipe,Standard Selling,Selling,21,USD

+,Blade Rib,Standard Selling,Selling,14,USD

+,Disc Collars,Standard Selling,Selling,103.6,USD

+,External Disc,Standard Selling,Selling,63,USD

+,Internal Disc,Standard Selling,Selling,46.2,USD

+,Shaft,Standard Selling,Selling,42,USD

+,Stand,Standard Selling,Selling,56,USD

+,Upper Bearing Plate,Standard Selling,Selling,70,USD

+,Wing Sheet,Standard Selling,Selling,30.8,USD
\ No newline at end of file
diff --git a/utilities/demo/demo_docs/Lead.csv b/utilities/demo/demo_docs/Lead.csv
new file mode 100644
index 0000000..c00ab44
--- /dev/null
+++ b/utilities/demo/demo_docs/Lead.csv
@@ -0,0 +1,68 @@
+Data Import Template,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Table:,Lead,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Notes:,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Please do not change the template headings.,,,,,,,,,,,,,,,,,,,,,,,,,,,

+First data column must be blank.,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,,,,,,,,,,,,,

+"For updating, you can update only selective columns.",,,,,,,,,,,,,,,,,,,,,,,,,,,

+"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,,,,,,,,,,,,,

+"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,,,,,,,,,,,,,

+You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,,,,,,,

+Column Labels,ID,Contact Name,Status,Naming Series,Company Name,Email Id,Source,From Customer,Campaign Name,Remark,Phone,Mobile No.,Fax,Website,Territory,Lead Type,Lead Owner,Market Segment,Industry,Request Type,Lost Reason,Next Contact By,Next Contact Date,Last Contact Date,Company,Unsubscribed,Blog Subscriber

+Column Name:,name,lead_name,status,naming_series,company_name,email_id,source,customer,campaign_name,remark,phone,mobile_no,fax,website,territory,type,lead_owner,market_segment,industry,request_type,order_lost_reason,contact_by,contact_date,last_contact_date,company,unsubscribed,blog_subscriber

+Mandatory:,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No

+Type:,Data (text),Data,Select,Select,Data,Data,Select,Link,Link,Small Text,Data,Data,Data,Data,Link,Select,Link,Select,Link,Select,Link,Link,Date,Date,Link,Check,Check

+Info:,,,"One of: Open, Replied, Attempted to Contact, Contact in Future, Contacted, Interested, Not interested, Lead Lost, Converted","One of: LEAD, LEAD/10-11/, LEAD/MUMBAI/",,,"One of: Advertisement, Blog Post, Campaign, Call, Customer, Exhibition, Supplier, Website, Email",Valid Customer,Valid Campaign,,,,,,Valid Territory,"One of: Client, Channel Partner, Consultant",Valid Profile,"One of: Lower Income, Middle Income, Upper Income",Valid Industry Type,"One of: Product Enquiry, Request for Information, Suggestions, Other",Valid Quotation Lost Reason,Valid Profile,,,Valid Company,0 or 1,0 or 1

+Start entering data below this line,,,,,,,,,,,,,,,,,,,,,,,,,,,

+,,Mart Lakeman,Passive,,Zany Brainy,MartLakeman@einrot.com,,,,,,,,,,,,,,,,,,,,,

+,,Saga Lundqvist,Passive,,Patterson-Fletcher,SagaLundqvist@dayrep.com,,,,,,,,,,,,,,,,,,,,,

+,,Adna Sjöberg,Passive,,Griff's Hamburgers,AdnaSjoberg@gustr.com,,,,,,,,,,,,,,,,,,,,,

+,,Ida Svendsen,Passive,,Rhodes Furniture,IdaDSvendsen@superrito.com,,,,,,,,,,,,,,,,,,,,,

+,,Emppu Hämeenniemi,Passive,,Burger Chef,EmppuHameenniemi@teleworm.us,,,,,,,,,,,,,,,,,,,,,

+,,Eugenio Pisano,Passive,,Stratabiz,EugenioPisano@cuvox.de,,,,,,,,,,,,,,,,,,,,,

+,,Semhar Hagos,Passive,,Home Quarters Warehouse,SemharHagos@einrot.com,,,,,,,,,,,,,,,,,,,,,

+,,Branimira Ivanković,Passive,,Enviro Architectural Designs,BranimiraIvankovic@einrot.com,,,,,,,,,,,,,,,,,,,,,

+,,Shelly Fields,Passive,,Ideal Garden Management,ShellyLFields@superrito.com,,,,,,,,,,,,,,,,,,,,,

+,,Leo Mikulić,Passive,,Listen Up,LeoMikulic@gustr.com,,,,,,,,,,,,,,,,,,,,,

+,,Denisa Jarošová,Passive,,I. Magnin,DenisaJarosova@teleworm.us,,,,,,,,,,,,,,,,,,,,,

+,,Janek Rutkowski,Passive,,First Rate Choice,JanekRutkowski@dayrep.com,,,,,,,,,,,,,,,,,,,,,

+,,美月 宇藤,Passive,,Multi Tech Development,mm@gustr.com,,,,,,,,,,,,,,,,,,,,,

+,,Даниил Афанасьев,Passive,,National Auto Parts,dd@einrot.com,,,,,,,,,,,,,,,,,,,,,

+,,Zorislav Petković,Passive,,Integra Investment Plan,ZorislavPetkovic@cuvox.de,,,,,,,,,,,,,,,,,,,,,

+,,Nanao Niwa,Passive,,The Lawn Guru,NanaoNiwa@superrito.com,,,,,,,,,,,,,,,,,,,,,

+,,Hreiðar Jörundsson,Passive,,Buena Vista Realty Service,HreiarJorundsson@armyspy.com,,,,,,,,,,,,,,,,,,,,,

+,,Lai Chu,Passive,,Bountiful Harvest Health Food Store,ChuThiBichLai@einrot.com,,,,,,,,,,,,,,,,,,,,,

+,,Victor Aksakov,Passive,,P. Samuels Men's Clothiers,VictorAksakov@dayrep.com,,,,,,,,,,,,,,,,,,,,,

+,,Saidalim Bisliev,Passive,,Vinyl Fever,SaidalimBisliev@cuvox.de,,,,,,,,,,,,,,,,,,,,,

+,,Totte Jakobsson,Passive,,Garden Master,TotteJakobsson@armyspy.com,,,,,,,,,,,,,,,,,,,,,

+,,Naná Armas,Passive,,Big Apple,NanaArmasRobles@cuvox.de,,,,,,,,,,,,,,,,,,,,,

+,,Walerian Duda,Passive,,Monk House Sales,WalerianDuda@dayrep.com,,,,,,,,,,,,,,,,,,,,,

+,,Moarimikashi ,Passive,,ManCharm,Moarimikashi@teleworm.us,,,,,,,,,,,,,,,,,,,,,

+,,Dobromił Dąbrowski ,Passive,,Custom Lawn Care,DobromilDabrowski@dayrep.com,,,,,,,,,,,,,,,,,,,,,

+,,Teigan Sinclair,Passive,,The Serendipity Dip,TeiganSinclair@gustr.com,,,,,,,,,,,,,,,,,,,,,

+,,Fahad Guirguis,Passive,,Cavages,FahadSaidGuirguis@gustr.com,,,,,,,,,,,,,,,,,,,,,

+,,Morten Olsen,Passive,,Gallenkamp,MortenJOlsen@armyspy.com,,,,,,,,,,,,,,,,,,,,,

+,,Christian Baecker,Passive,,Webcom Business Services,ChristianBaecker@armyspy.com,,,,,,,,,,,,,,,,,,,,,

+,,Sebastianus Dohmen,Passive,,Accord Investments,SebastianusDohmen@cuvox.de,,,,,,,,,,,,,,,,,,,,,

+,,Eero Koskinen,Passive,,American Appliance,EeroKoskinen@superrito.com,,,,,,,,,,,,,,,,,,,,,

+,,富奎 盧,Passive,,Bettendorf's,LuFuKui@teleworm.us,,,,,,,,,,,,,,,,,,,,,

+,,Milica Jelić,Passive,,House Of Denmark,MilicaJelic@dayrep.com,,,,,,,,,,,,,,,,,,,,,

+,,Barbora Holubová,Passive,,10000 Auto Parts,BarboraHolubova@cuvox.de,,,,,,,,,,,,,,,,,,,,,

+,,Marta Kos,Passive,,Mages,MartaKos@einrot.com,,,,,,,,,,,,,,,,,,,,,

+,,Simret Zula,Passive,,CSK Auto,SimretZula@cuvox.de,,,,,,,,,,,,,,,,,,,,,

+,,Kamil Chlubna,Passive,,Eagle Hardware & Garden,KamilChlubna@einrot.com,,,,,,,,,,,,,,,,,,,,,

+,,Aceline Bolduc,Passive,,Rustler Steak House,AcelineBolduc@armyspy.com,,,,,,,,,,,,,,,,,,,,,

+,,Lucie Stupková,Passive,,ABCO Foods,LucieStupkova@gustr.com,,,,,,,,,,,,,,,,,,,,,

+,,Roland Solvik,Passive,,Trak Auto,RolandSolvik@cuvox.de,,,,,,,,,,,,,,,,,,,,,

+,,Mekirinzukushitakufu ,Passive,,Choices,Mekirinzukushitakufu@teleworm.us,,,,,,,,,,,,,,,,,,,,,

+,,Mukharbek Sultanovich,Passive,,Megatronic,MukharbekSultanovich@cuvox.de,,,,,,,,,,,,,,,,,,,,,

+,,Osman Amanuel,Passive,,Handy Dan,OsmanAmanuel@dayrep.com,,,,,,,,,,,,,,,,,,,,,

+,,幸子 阪部,Passive,,Channel Home Centers,dd@armyspy.com,,,,,,,,,,,,,,,,,,,,,

+,,Masakazu Kamitani,Passive,,Honest Air Group,MasakazuKamitani@superrito.com,,,,,,,,,,,,,,,,,,,,,

+,,Omran Sabbagh,Passive,,Pleasures and Pasttimes,OmranNuhaidSabbagh@einrot.com,,,,,,,,,,,,,,,,,,,,,

+,,Rikako Matsumura,Passive,,Lazysize,RikakoMatsumura@einrot.com,,,,,,,,,,,,,,,,,,,,,

+,,Anayolisa Chukwukadibia,Passive,,Prestiga-Biz,AnayolisaChukwukadibia@einrot.com,,,,,,,,,,,,,,,,,,,,,

+,,Gudmunda Hinna,Passive,,Childs Restaurants,GudmundaHinna@armyspy.com,,,,,,,,,,,,,,,,,,,,,
\ No newline at end of file
diff --git a/utilities/demo/demo_docs/Profile.csv b/utilities/demo/demo_docs/Profile.csv
new file mode 100644
index 0000000..2e7a2ce
--- /dev/null
+++ b/utilities/demo/demo_docs/Profile.csv
@@ -0,0 +1,40 @@
+Data Import Template,,,,,,,,,,,,,,,,,,,,,

+Table:,Profile,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,

+Notes:,,,,,,,,,,,,,,,,,,,,,

+Please do not change the template headings.,,,,,,,,,,,,,,,,,,,,,

+First data column must be blank.,,,,,,,,,,,,,,,,,,,,,

+"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,,,,,,,

+"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,,,,,,,

+Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,,,,,,,

+"For updating, you can update only selective columns.",,,,,,,,,,,,,,,,,,,,,

+You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,,,,,,,

+,,,,,,,,,,,,,,,,,,,,,

+DocType:,Profile,,,,,,,,,,,,,,,,,,,,

+Column Labels:,ID,Email,First Name,User Type,Enabled,Middle Name (Optional),Last Name,Send Invite Email,Language,Birth Date,Gender,New Password,User Image,Background Image,Bio,Email Signature,Login After,Login Before,Restrict IP,Last Login,Last IP

+Column Name:,name,email,first_name,user_type,enabled,middle_name,last_name,send_invite_email,language,birth_date,gender,new_password,user_image,background_image,bio,email_signature,login_after,login_before,restrict_ip,last_login,last_ip

+Mandatory:,Yes,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No

+Type:,Data (text),Data,Data,Select,Check,Data,Data,Check,Select,Date,Select,Password,Select,Select,Small Text,Small Text,Int,Int,Data,Read Only,Read Only

+Info:,,,,"One of: System User, Website User",0 or 1,,,0 or 1,"One of: العربية, Deutsch, english, español, français, हिंदी, Hrvatski, nederlands, português, português brasileiro, српски, தமிழ், ไทย",,"One of: Male, Female, Other",,One of: attach_files:,One of: attach_files:,,,Integer,Integer,,,

+Start entering data below this line,,,,,,,,,,,,,,,,,,,,,

+,,DikmanShervashidze@armyspy.com,Dikman,System User,1,V,Shervashidze,0,,,,testpass,,,,,,,,,

+,,Zukutakitoteka@teleworm.us,Zukutakitoteka,System User,1,,,0,,,,testpass,,,,,,,,,

+,,HatsueKashiwagi@cuvox.de,Hatsue,System User,1,H,Kashiwagi,0,,,,testpass,,,,,,,,,

+,,NuranVerkleij@einrot.com,Nuran,System User,1,T,Verkleij,0,,,,testpass,,,,,,,,,

+,,aromn@armyspy.com,Дмитрий,System User,1,З,Пирогов,0,,,,testpass,,,,,,,,,

+,,TildeLindqvist@cuvox.de,Tilde,System User,1,T,Lindqvist,0,,,,testpass,,,,,,,,,

+,,MichalSobczak@teleworm.us,Michał,System User,1,S,Sobczak,0,,,,testpass,,,,,,,,,

+,,GabrielleLoftus@superrito.com,Gabrielle,System User,1,J,Loftus,0,,,,testpass,,,,,,,,,

+,,VakhitaRyzaev@teleworm.us,Vakhita,System User,1,A,Ryzaev,0,,,,testpass,,,,,,,,,

+,,CharmaineGaudreau@cuvox.de,Charmaine,System User,1,D,Gaudreau,0,,,,testpass,,,,,,,,,

+,,RafaelaMaartens@cuvox.de,Rafaëla,System User,1,Z,Maartens,0,,,,testpass,,,,,,,,,

+,,NuguseYohannes@dayrep.com,Nuguse,System User,0,S,Yohannes,0,,,,testpass,,,,,,,,,

+,,panca@armyspy.com,Раиса,System User,0,В,Белякова,0,,,,testpass,,,,,,,,,

+,,CaYinLong@gustr.com,胤隆,System User,1,婷,蔡,0,,,,testpass,,,,,,,,,

+,,FreddieScott@armyspy.com,Freddie,System User,1,A,Scott,0,,,,testpass,,,,,,,,,

+,,BergoraVigfusdottir@superrito.com,Bergþóra,System User,1,Ö,Vigfúsdóttir,0,,,,testpass,,,,,,,,,

+,,WardNajmalDinKalb@cuvox.de,Ward,System User,1,N,Kalb,0,,,,testpass,,,,,,,,,

+,,WanMai@teleworm.us,Wan,System User,1,A,Mai,0,,,,testpass,,,,,,,,,

+,,LeonAbdulov@superrito.com,Leon,System User,1,A,Abdulov,0,,,,testpass,,,,,,,,,

+,,SabinaNovotna@superrito.com,Sabina,System User,1,J,Novotná,0,,,,testpass,,,,,,,,,
\ No newline at end of file
diff --git a/utilities/demo/demo_docs/Salary_Structure.csv b/utilities/demo/demo_docs/Salary_Structure.csv
new file mode 100644
index 0000000..07d95be
--- /dev/null
+++ b/utilities/demo/demo_docs/Salary_Structure.csv
@@ -0,0 +1,25 @@
+"Data Import Template"

+"Table:","Salary Structure"

+""

+""

+"Notes:"

+"Please do not change the template headings."

+"First data column must be blank."

+"If you are uploading new records, leave the ""name"" (ID) column blank."

+"If you are uploading new records, ""Naming Series"" becomes mandatory, if present."

+"Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish."

+"For updating, you can update only selective columns."

+"You can only upload upto 5000 records in one go. (may be less in some cases)"

+""

+"DocType:","Salary Structure","","","","","","","","","","","","","","","-","Salary Structure Earning","earning_details","","","-","Salary Structure Deduction","deduction_details","",""

+"Column Labels:","ID","Last Updated On","Employee","Is Active","From Date","Company","Employee Name","Branch","Designation","Department","Grade","To Date","Total Earning","Total Deduction","Net Pay","-","ID","Type","Amount","Reduce Earning for Leave Without Pay (LWP)","-","ID","Type","Amount","Reduce Deduction for Leave Without Pay (LWP)"

+"Column Name:","name","modified","employee","is_active","from_date","company","employee_name","branch","designation","department","grade","to_date","total_earning","total_deduction","net_pay","-","name","e_type","modified_value","depend_on_lwp","-","name","d_type","d_modified_amt","depend_on_lwp"

+"Mandatory:","Yes","Yes","Yes","Yes","Yes","Yes","No","No","No","No","No","No","No","No","No","-","Yes","Yes","No","No","-","Yes","Yes","No","No"

+"Type:","Data (text)","Data","Link","Select","Date","Select","Data","Select","Select","Select","Select","Date","Currency","Currency","Currency","-","Data","Link","Currency","Check","-","Data","Link","Currency","Check"

+"Info:","","Don't change!","Valid Employee","One of: Yes, No","","Valid Company","","Valid Branch","Valid Designation","Valid Department","Valid Grade","","","","","-","Leave blank for new records","Valid Earning Type","","0 or 1","-","Leave blank for new records","Valid Deduction Type","","0 or 1"

+"Start entering data below this line"

+"","EMP/0001/SST/00001","""2013-08-06 17:07:22""","EMP/0001","Yes","2013-08-06","Wind Power LLC","Dikman Shervashidze Shervashidze","","","","","",5000.0,400.0,4600.0,"","000000154","Basic",5000.0,"","","000000155","Income Tax",400.0,""

+"","EMP/0002/SST/00001","""2013-08-06 17:07:43""","EMP/0002","Yes","2013-08-06","Wind Power LLC","Zukutakitoteka","","","","","",6700.0,400.0,6300.0,"","000000156","Basic",6700.0,"","","000000157","Income Tax",400.0,""

+"","EMP/0003/SST/00001","""2013-08-06 17:08:02""","EMP/0003","Yes","2013-08-06","Wind Power LLC","Hatsue Kashiwagi","","","","","",3400.0,400.0,3000.0,"","000000158","Basic",3400.0,"","","000000159","Income Tax",400.0,""

+"","EMP/0004/SST/00001","""2013-08-06 17:14:39""","EMP/0004","Yes","2013-08-06","Wind Power LLC","Nuran Verkleij","","","","","",6990.0,566.0,6424.0,"","000000160","Basic",6990.0,"","","000000161","Income Tax",566.0,""

+
diff --git a/utilities/demo/demo_docs/Stock Reconcilation Template.csv b/utilities/demo/demo_docs/Stock Reconcilation Template.csv
new file mode 100644
index 0000000..eddc2bc
--- /dev/null
+++ b/utilities/demo/demo_docs/Stock Reconcilation Template.csv
@@ -0,0 +1,25 @@
+Stock Reconciliation,,,,,,

+----,,,,,,

+"Stock Reconciliation can be used to update the stock on a particular date, usually as per physical inventory.",,,,,,

+"When submitted, the system creates difference entries to set the given stock and valuation on this date.",,,,,,

+It can also be used to create opening stock entries and to fix stock value.,,,,,,

+----,,,,,,

+Notes:,,,,,,

+Item Code and Warehouse should already exist.,,,,,,

+You can update either Quantity or Valuation Rate or both.,,,,,,

+"If no change in either Quantity or Valuation Rate, leave the cell blank.",,,,,,

+----,,,,,,

+Item Code,Warehouse,Quantity,Valuation Rate,,,

+Base Bearing Plate,Stores,4,750,,,

+Base Plate,Stores,4,1092,,,

+Bearing Block,Stores,2,355,,,

+Bearing Collar,Stores,4,980,,,

+Bearing Pipe,Stores,5,599,,,

+Blade Rib,Stores,3,430,,,

+Disc Collars,Stores,7,3000,,,

+External Disc,Stores,2,1200,,,

+Internal Disc,Stores,2,1000,,,

+Shaft,Stores,5,600,,,

+Stand,Stores,2,200,,,

+Upper Bearing Plate,Stores,10,400,,,

+Wing Sheet,Stores,20,300,,,
\ No newline at end of file
diff --git a/utilities/demo/demo_docs/Supplier.csv b/utilities/demo/demo_docs/Supplier.csv
new file mode 100644
index 0000000..6f91164
--- /dev/null
+++ b/utilities/demo/demo_docs/Supplier.csv
@@ -0,0 +1,29 @@
+Data Import Template,,,,,,,,,

+Table:,Supplier,,,,,,,,

+,,,,,,,,,

+,,,,,,,,,

+Notes:,,,,,,,,,

+Please do not change the template headings.,,,,,,,,,

+First data column must be blank.,,,,,,,,,

+Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,

+"For updating, you can update only selective columns.",,,,,,,,,

+"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,

+"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,

+You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,

+,,,,,,,,,

+Column Labels,ID,Supplier Name,Supplier Type,Company,Series,Default Currency,Supplier Details,Credit Days,Website

+Column Name:,name,supplier_name,supplier_type,company,naming_series,default_currency,supplier_details,credit_days,website

+Mandatory:,Yes,Yes,Yes,Yes,No,No,No,No,No

+Type:,Data (text),Data,Link,Link,Select,Link,Text,Int,Data

+Info:,,,Valid Supplier Type,Valid Company,"One of: SUPP, SUPP/10-11/",Valid Currency,,Integer,

+Start entering data below this line,,,,,,,,,

+,Helios Air,Helios Air,Raw Material,Wind Power LLC,,,,,

+,Ks Merchandise,Ks Merchandise,Electrical,Wind Power LLC,,,,,

+,HomeBase,HomeBase,Raw Material,Wind Power LLC,,,,,

+,Scott Ties,Scott Ties,Raw Material,Wind Power LLC,,,,,

+,Reliable Investments,Reliable Investments,Services,Wind Power LLC,,,,,

+,Nan Duskin,Nan Duskin,Services,Wind Power LLC,,,,,

+,Rainbow Records,Rainbow Records,Services,Wind Power LLC,,,,,

+,New World Realty,New World Realty,Services,Wind Power LLC,,,,,

+,Asiatic Solutions,Asiatic Solutions,Raw Material,Wind Power LLC,,,,,

+,Eagle Hardware,Eagle Hardware,Raw Material,Wind Power LLC,,,,,
\ No newline at end of file
diff --git a/utilities/demo/demo_docs/bearing-block.png b/utilities/demo/demo_docs/bearing-block.png
new file mode 100644
index 0000000..b60f2f4
--- /dev/null
+++ b/utilities/demo/demo_docs/bearing-block.png
Binary files differ
diff --git a/utilities/demo/demo_docs/wind-turbine.png b/utilities/demo/demo_docs/wind-turbine.png
new file mode 100644
index 0000000..81fcfc2
--- /dev/null
+++ b/utilities/demo/demo_docs/wind-turbine.png
Binary files differ
diff --git a/utilities/demo/make_demo.py b/utilities/demo/make_demo.py
new file mode 100644
index 0000000..fc07767
--- /dev/null
+++ b/utilities/demo/make_demo.py
@@ -0,0 +1,416 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
+# License: GNU General Public License v3. See license.txt
+
+import webnotes, os, datetime
+import webnotes.utils
+from webnotes.utils import random_string
+from webnotes.widgets import query_report
+import random
+import json
+
+webnotes.session = webnotes._dict({"user":"Administrator"})
+from core.page.data_import_tool.data_import_tool import upload
+
+# fix price list
+# fix fiscal year
+
+company = "Wind Power LLC"
+company_abbr = "WP"
+country = "United States"
+currency = "USD"
+time_zone = "America/New York"
+start_date = '2013-01-01'
+bank_name = "Citibank"
+runs_for = None
+prob = {
+	"default": { "make": 0.6, "qty": (1,5) },
+	"Sales Order": { "make": 0.4, "qty": (1,3) },
+	"Purchase Order": { "make": 0.7, "qty": (1,15) },
+	"Purchase Receipt": { "make": 0.7, "qty": (1,15) },
+}
+
+def make(reset=False):
+	webnotes.connect()
+	#webnotes.print_messages = True
+	webnotes.mute_emails = True
+	webnotes.rollback_on_exception = True
+	
+	if reset:
+		setup()
+	simulate()
+	
+def setup():
+	install()
+	complete_setup()
+	make_customers_suppliers_contacts()
+	make_items()
+	make_users_and_employees()
+	make_bank_account()
+	# make_opening_stock()
+	# make_opening_accounts()
+
+def simulate():
+	global runs_for
+	current_date = webnotes.utils.getdate(start_date)
+	
+	# continue?
+	last_posting = webnotes.conn.sql("""select max(posting_date) from `tabStock Ledger Entry`""")
+	if last_posting[0][0]:
+		current_date = webnotes.utils.add_days(last_posting[0][0], 1)
+
+	# run till today
+	if not runs_for:
+		runs_for = webnotes.utils.date_diff(webnotes.utils.nowdate(), current_date)
+	
+	for i in xrange(runs_for):		
+		print current_date.strftime("%Y-%m-%d")
+		webnotes.utils.current_date = current_date
+		
+		if current_date.weekday() in (5, 6):
+			current_date = webnotes.utils.add_days(current_date, 1)
+			continue
+
+		run_sales(current_date)
+		run_purchase(current_date)
+		run_manufacturing(current_date)
+		run_stock(current_date)
+		run_accounts(current_date)
+
+		current_date = webnotes.utils.add_days(current_date, 1)
+		
+def run_sales(current_date):
+	if can_make("Quotation"):
+		for i in xrange(how_many("Quotation")):
+			make_quotation(current_date)
+					
+	if can_make("Sales Order"):
+		for i in xrange(how_many("Sales Order")):
+			make_sales_order(current_date)
+
+def run_accounts(current_date):
+	if can_make("Sales Invoice"):
+		from selling.doctype.sales_order.sales_order import make_sales_invoice
+		report = "Ordered Items to be Billed"
+		for so in list(set([r[0] for r in query_report.run(report)["result"] if r[0]!="Total"]))[:how_many("Sales Invoice")]:
+			si = webnotes.bean(make_sales_invoice(so))
+			si.doc.posting_date = current_date
+			si.insert()
+			si.submit()
+			webnotes.conn.commit()
+
+	if can_make("Purchase Invoice"):
+		from stock.doctype.purchase_receipt.purchase_receipt import make_purchase_invoice
+		report = "Received Items to be Billed"
+		for pr in list(set([r[0] for r in query_report.run(report)["result"] if r[0]!="Total"]))[:how_many("Purchase Invoice")]:
+			pi = webnotes.bean(make_purchase_invoice(pr))
+			pi.doc.posting_date = current_date
+			pi.doc.bill_no = random_string(6)
+			pi.insert()
+			pi.submit()
+			webnotes.conn.commit()
+			
+	if can_make("Payment Received"):
+		from accounts.doctype.journal_voucher.journal_voucher import get_payment_entry_from_sales_invoice
+		report = "Accounts Receivable"
+		for si in list(set([r[4] for r in query_report.run(report, {"report_date": current_date })["result"] if r[3]=="Sales Invoice"]))[:how_many("Payment Received")]:
+			jv = webnotes.bean(get_payment_entry_from_sales_invoice(si))
+			jv.doc.posting_date = current_date
+			jv.doc.cheque_no = random_string(6)
+			jv.doc.cheque_date = current_date
+			jv.insert()
+			jv.submit()
+			webnotes.conn.commit()
+			
+	if can_make("Payment Made"):
+		from accounts.doctype.journal_voucher.journal_voucher import get_payment_entry_from_purchase_invoice
+		report = "Accounts Payable"
+		for pi in list(set([r[4] for r in query_report.run(report, {"report_date": current_date })["result"] if r[3]=="Purchase Invoice"]))[:how_many("Payment Made")]:
+			jv = webnotes.bean(get_payment_entry_from_purchase_invoice(pi))
+			jv.doc.posting_date = current_date
+			jv.doc.cheque_no = random_string(6)
+			jv.doc.cheque_date = current_date
+			jv.insert()
+			jv.submit()
+			webnotes.conn.commit()
+
+def run_stock(current_date):
+	# make purchase requests
+	if can_make("Purchase Receipt"):
+		from buying.doctype.purchase_order.purchase_order import make_purchase_receipt
+		report = "Purchase Order Items To Be Received"
+		for po in list(set([r[0] for r in query_report.run(report)["result"] if r[0]!="Total"]))[:how_many("Purchase Receipt")]:
+			pr = webnotes.bean(make_purchase_receipt(po))
+			pr.doc.posting_date = current_date
+			pr.doc.fiscal_year = "2013"
+			pr.insert()
+			pr.submit()
+			webnotes.conn.commit()
+	
+	# make delivery notes (if possible)
+	if can_make("Delivery Note"):
+		from selling.doctype.sales_order.sales_order import make_delivery_note
+		from stock.stock_ledger import NegativeStockError
+		from stock.doctype.stock_ledger_entry.stock_ledger_entry import SerialNoRequiredError, SerialNoQtyError
+		report = "Ordered Items To Be Delivered"
+		for so in list(set([r[0] for r in query_report.run(report)["result"] if r[0]!="Total"]))[:how_many("Delivery Note")]:
+			dn = webnotes.bean(make_delivery_note(so))
+			dn.doc.posting_date = current_date
+			dn.doc.fiscal_year = "2013"
+			dn.insert()
+			try:
+				dn.submit()
+				webnotes.conn.commit()
+			except NegativeStockError: pass
+			except SerialNoRequiredError: pass
+			except SerialNoQtyError: pass
+	
+	# try submitting existing
+	for dn in webnotes.conn.get_values("Delivery Note", {"docstatus": 0}, "name"):
+		b = webnotes.bean("Delivery Note", dn[0])
+		b.submit()
+		webnotes.conn.commit()
+	
+def run_purchase(current_date):
+	# make material requests for purchase items that have negative projected qtys
+	if can_make("Material Request"):
+		report = "Items To Be Requested"
+		for row in query_report.run(report)["result"][:how_many("Material Request")]:
+			mr = webnotes.new_bean("Material Request")
+			mr.doc.material_request_type = "Purchase"
+			mr.doc.transaction_date = current_date
+			mr.doc.fiscal_year = "2013"
+			mr.doclist.append({
+				"doctype": "Material Request Item",
+				"parentfield": "indent_details",
+				"schedule_date": webnotes.utils.add_days(current_date, 7),
+				"item_code": row[0],
+				"qty": -row[-1]
+			})
+			mr.insert()
+			mr.submit()
+	
+	# make supplier quotations
+	if can_make("Supplier Quotation"):
+		from stock.doctype.material_request.material_request import make_supplier_quotation
+		report = "Material Requests for which Supplier Quotations are not created"
+		for row in query_report.run(report)["result"][:how_many("Supplier Quotation")]:
+			if row[0] != "Total":
+				sq = webnotes.bean(make_supplier_quotation(row[0]))
+				sq.doc.transaction_date = current_date
+				sq.doc.fiscal_year = "2013"
+				sq.insert()
+				sq.submit()
+				webnotes.conn.commit()
+		
+	# make purchase orders
+	if can_make("Purchase Order"):
+		from stock.doctype.material_request.material_request import make_purchase_order
+		report = "Requested Items To Be Ordered"
+		for row in query_report.run(report)["result"][:how_many("Purchase Order")]:
+			if row[0] != "Total":
+				po = webnotes.bean(make_purchase_order(row[0]))
+				po.doc.transaction_date = current_date
+				po.doc.fiscal_year = "2013"
+				po.insert()
+				po.submit()
+				webnotes.conn.commit()
+			
+def run_manufacturing(current_date):
+	from stock.stock_ledger import NegativeStockError
+	from stock.doctype.stock_entry.stock_entry import IncorrectValuationRateError, DuplicateEntryForProductionOrderError
+
+	ppt = webnotes.bean("Production Planning Tool", "Production Planning Tool")
+	ppt.doc.company = company
+	ppt.doc.use_multi_level_bom = 1
+	ppt.doc.purchase_request_for_warehouse = "Stores - WP"
+	ppt.run_method("get_open_sales_orders")
+	ppt.run_method("get_items_from_so")
+	ppt.run_method("raise_production_order")
+	ppt.run_method("raise_purchase_request")
+	webnotes.conn.commit()
+	
+	# submit production orders
+	for pro in webnotes.conn.get_values("Production Order", {"docstatus": 0}, "name"):
+		b = webnotes.bean("Production Order", pro[0])
+		b.doc.wip_warehouse = "Work in Progress - WP"
+		b.submit()
+		webnotes.conn.commit()
+		
+	# submit material requests
+	for pro in webnotes.conn.get_values("Material Request", {"docstatus": 0}, "name"):
+		b = webnotes.bean("Material Request", pro[0])
+		b.submit()
+		webnotes.conn.commit()
+	
+	# stores -> wip
+	if can_make("Stock Entry for WIP"):		
+		for pro in query_report.run("Open Production Orders")["result"][:how_many("Stock Entry for WIP")]:
+			make_stock_entry_from_pro(pro[0], "Material Transfer", current_date)
+		
+	# wip -> fg
+	if can_make("Stock Entry for FG"):		
+		for pro in query_report.run("Production Orders in Progress")["result"][:how_many("Stock Entry for FG")]:
+			make_stock_entry_from_pro(pro[0], "Manufacture/Repack", current_date)
+
+	# try posting older drafts (if exists)
+	for st in webnotes.conn.get_values("Stock Entry", {"docstatus":0}, "name"):
+		try:
+			webnotes.bean("Stock Entry", st[0]).submit()
+			webnotes.conn.commit()
+		except NegativeStockError: pass
+		except IncorrectValuationRateError: pass
+		except DuplicateEntryForProductionOrderError: pass
+
+def make_stock_entry_from_pro(pro_id, purpose, current_date):
+	from manufacturing.doctype.production_order.production_order import make_stock_entry
+	from stock.stock_ledger import NegativeStockError
+	from stock.doctype.stock_entry.stock_entry import IncorrectValuationRateError, DuplicateEntryForProductionOrderError
+
+	st = webnotes.bean(make_stock_entry(pro_id, purpose))
+	st.doc.posting_date = current_date
+	st.doc.fiscal_year = "2013"
+	st.doc.expense_adjustment_account = "Stock in Hand - WP"
+	try:
+		st.insert()
+		webnotes.conn.commit()
+		st.submit()
+		webnotes.conn.commit()
+	except NegativeStockError: pass
+	except IncorrectValuationRateError: pass
+	except DuplicateEntryForProductionOrderError: pass
+
+def make_quotation(current_date):
+	b = webnotes.bean([{
+		"creation": current_date,
+		"doctype": "Quotation",
+		"quotation_to": "Customer",
+		"customer": get_random("Customer"),
+		"order_type": "Sales",
+		"transaction_date": current_date,
+		"fiscal_year": "2013"
+	}])
+	
+	add_random_children(b, {
+		"doctype": "Quotation Item", 
+		"parentfield": "quotation_details", 
+	}, rows=3, randomize = {
+		"qty": (1, 5),
+		"item_code": ("Item", {"is_sales_item": "Yes"})
+	}, unique="item_code")
+	
+	b.insert()
+	webnotes.conn.commit()
+	b.submit()
+	webnotes.conn.commit()
+	
+def make_sales_order(current_date):
+	q = get_random("Quotation", {"status": "Submitted"})
+	if q:
+		from selling.doctype.quotation.quotation import make_sales_order
+		so = webnotes.bean(make_sales_order(q))
+		so.doc.transaction_date = current_date
+		so.doc.delivery_date = webnotes.utils.add_days(current_date, 10)
+		so.insert()
+		webnotes.conn.commit()
+		so.submit()
+		webnotes.conn.commit()
+	
+def add_random_children(bean, template, rows, randomize, unique=None):
+	for i in xrange(random.randrange(1, rows)):
+		d = template.copy()
+		for key, val in randomize.items():
+			if isinstance(val[0], basestring):
+				d[key] = get_random(*val)
+			else:
+				d[key] = random.randrange(*val)
+		
+		if unique:
+			if not bean.doclist.get({"doctype": d["doctype"], unique:d[unique]}):
+				bean.doclist.append(d)
+		else:
+			bean.doclist.append(d)
+
+def get_random(doctype, filters=None):
+	condition = []
+	if filters:
+		for key, val in filters.items():
+			condition.append("%s='%s'" % (key, val))
+	if condition:
+		condition = " where " + " and ".join(condition)
+	else:
+		condition = ""
+		
+	out = webnotes.conn.sql("""select name from `tab%s` %s
+		order by RAND() limit 0,1""" % (doctype, condition))
+
+	return out and out[0][0] or None
+
+def can_make(doctype):
+	return random.random() < prob.get(doctype, prob["default"])["make"]
+
+def how_many(doctype):
+	return random.randrange(*prob.get(doctype, prob["default"])["qty"])
+
+def install():
+	print "Creating Fresh Database..."
+	from webnotes.install_lib.install import Installer
+	import conf
+	inst = Installer('root')
+	inst.import_from_db(conf.demo_db_name, verbose = 1)
+
+def complete_setup():
+	print "Complete Setup..."
+	webnotes.get_obj("Setup Control").setup_account({
+		"first_name": "Test",
+		"last_name": "User",
+		"fy_start": "1st Jan",
+		"industry": "Manufacturing",
+		"company_name": company,
+		"company_abbr": company_abbr,
+		"currency": currency,
+		"timezone": time_zone,
+		"country": country
+	})
+
+	import_data("Fiscal_Year")
+	
+def make_items():
+	import_data("Item")
+	import_data("BOM", submit=True)
+	
+def make_customers_suppliers_contacts():
+	import_data(["Customer", "Supplier", "Contact", "Address", "Lead"])
+
+def make_users_and_employees():
+	webnotes.conn.set_value("HR Settings", None, "emp_created_by", "Naming Series")
+	webnotes.conn.commit()
+	
+	import_data(["Profile", "Employee", "Salary_Structure"])
+
+def make_bank_account():
+	ba = webnotes.bean({
+		"doctype": "Account",
+		"account_name": bank_name,
+		"account_type": "Bank or Cash",
+		"group_or_ledger": "Ledger",
+		"parent_account": "Bank Accounts - " + company_abbr,
+		"company": company
+	}).insert()
+	
+	webnotes.set_value("Company", company, "default_bank_account", ba.doc.name)
+	webnotes.conn.commit()
+
+def import_data(dt, submit=False):
+	if not isinstance(dt, (tuple, list)):
+		dt = [dt]
+	
+	for doctype in dt:
+		print "Importing", doctype.replace("_", " "), "..."
+		webnotes.form_dict = {}
+		if submit:
+			webnotes.form_dict["params"] = json.dumps({"_submit": 1})
+		webnotes.uploaded_file = os.path.join(os.path.dirname(__file__), "demo_docs", doctype+".csv")
+		upload()
+
+if __name__=="__main__":
+	make()
\ No newline at end of file
diff --git a/utilities/demo/make_erpnext_demo.py b/utilities/demo/make_erpnext_demo.py
new file mode 100644
index 0000000..fde05f6
--- /dev/null
+++ b/utilities/demo/make_erpnext_demo.py
@@ -0,0 +1,77 @@
+import webnotes, os
+
+def make_demo_app():
+	import utilities.demo.make_demo
+	utilities.demo.make_demo.make(reset=True)
+
+def make_demo_user():
+	if webnotes.conn.exists("Profile", "demo@erpnext.com"):
+		webnotes.delete_doc("Profile", "demo@erpnext.com")
+
+	p = webnotes.new_bean("Profile")
+	p.doc.email = "demo@erpnext.com"
+	p.doc.first_name = "Demo"
+	p.doc.last_name = "User"
+	p.doc.enabled = 1
+	p.doc.user_type = "ERPNext Demo"
+	p.doc.send_invite_email = 0
+	p.doc.new_password = "demo"
+	p.insert()
+	
+	for role in ("Accounts Manager", "Analytics", "Expense Approver", "Accounts User", 
+		"Leave Approver", "Blogger", "Customer", "Sales Manager", "Employee", "Support Manager", 
+		"HR Manager", "HR User", "Maintenance Manager", "Maintenance User", "Material Manager", 
+		"Material Master Manager", "Material User", "Partner", "Manufacturing Manager", 
+		"Manufacturing User", "Projects User", "Purchase Manager", "Purchase Master Manager", 
+		"Purchase User", "Quality Manager", "Report Manager", "Sales Master Manager", "Sales User", 
+		"Supplier", "Support Team"):
+		p.doclist.append({
+			"doctype": "UserRole",
+			"parentfield": "user_roles",
+			"role": role
+		})
+
+	p.save()
+	webnotes.conn.commit()
+
+def make_demo_login_page():
+	webnotes.conn.set_value("Website Settings", None, "home_page", "")
+
+	webnotes.conn.sql("""delete from `tabWeb Page` where name='demo-login'""")
+	p = webnotes.new_bean("Web Page")
+	p.doc.title = "Demo Login"
+	p.doc.published = 1
+	p.doc.description = "ERPNext Demo Login"
+
+	with open(os.path.join(os.path.dirname(__file__), "demo-login.html"), "r") as dfile:
+		p.doc.main_section = dfile.read()
+
+	p.doc.insert_code = 1
+	with open(os.path.join(os.path.dirname(__file__), "demo-login.js"), "r") as dfile:
+		p.doc.javascript = dfile.read()
+
+	p.doc.insert_style = 1
+	with open(os.path.join(os.path.dirname(__file__), "demo-login.css"), "r") as dfile:
+		p.doc.css = dfile.read()
+		
+	p.insert()
+	
+	webnotes.conn.set_value("Website Settings", None, "home_page", "demo-login")
+	
+	webnotes.conn.commit()
+
+def make_demo_on_login_script():
+	webnotes.conn.sql("""delete from `tabCustom Script` where dt='Control Panel'""")
+	s = webnotes.new_bean("Custom Script")
+	s.doc.dt = "Control Panel"
+	s.doc.script_type = "Server"
+	with open(os.path.join(os.path.dirname(__file__), "demo_control_panel.py"), "r") as dfile:
+		s.doc.script = dfile.read()
+
+if __name__=="__main__":
+	webnotes.connect()
+	webnotes.mute_emails = 1
+	make_demo_app()
+	make_demo_user()
+	make_demo_login_page()
+	make_demo_on_login_script()
\ No newline at end of file