Merge branch 'master' of github.com:webnotes/erpnext into unicode

Conflicts:
	public/js/all-app.js
	public/js/fields.js
diff --git a/erpnext/buying/DocType Mapper/Purchase Request-Supplier Quotation/Purchase Request-Supplier Quotation.txt b/erpnext/buying/DocType Mapper/Purchase Request-Supplier Quotation/Purchase Request-Supplier Quotation.txt
index 95b13ba..7d1de75 100644
--- a/erpnext/buying/DocType Mapper/Purchase Request-Supplier Quotation/Purchase Request-Supplier Quotation.txt
+++ b/erpnext/buying/DocType Mapper/Purchase Request-Supplier Quotation/Purchase Request-Supplier Quotation.txt
@@ -5,7 +5,7 @@
 	{
 		'creation': '2012-08-02 18:36:26',
 		'docstatus': 0,
-		'modified': '2012-08-02 18:37:32',
+		'modified': '2012-08-03 12:34:09',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -83,15 +83,6 @@
 
 	# Field Mapper Detail
 	{
-		'doctype': u'Field Mapper Detail',
-		'from_field': u'uom',
-		'map': u'Yes',
-		'match_id': 1,
-		'to_field': u'stock_uom'
-	},
-
-	# Field Mapper Detail
-	{
 		'checking_operator': u'>=',
 		'doctype': u'Field Mapper Detail',
 		'from_field': u'transaction_date',
@@ -117,7 +108,7 @@
 		'from_table': u'Purchase Request Item',
 		'match_id': 1,
 		'reference_doctype_key': u'prevdoc_doctype',
-		'to_field': u'quotation_details',
+		'to_field': u'quotation_items',
 		'to_table': u'Supplier Quotation Item',
 		'validation_logic': u'docstatus =1'
 	}
diff --git a/erpnext/buying/DocType Mapper/Supplier Quotation-Purchase Order/Supplier Quotation-Purchase Order.txt b/erpnext/buying/DocType Mapper/Supplier Quotation-Purchase Order/Supplier Quotation-Purchase Order.txt
new file mode 100644
index 0000000..a616266
--- /dev/null
+++ b/erpnext/buying/DocType Mapper/Supplier Quotation-Purchase Order/Supplier Quotation-Purchase Order.txt
@@ -0,0 +1,169 @@
+# DocType Mapper, Supplier Quotation-Purchase Order
+[
+
+	# These values are common in all dictionaries
+	{
+		'creation': '2012-08-03 12:33:04',
+		'docstatus': 0,
+		'modified': '2012-08-06 16:45:56',
+		'modified_by': u'Administrator',
+		'owner': u'Administrator'
+	},
+
+	# These values are common for all Table Mapper Detail
+	{
+		'doctype': u'Table Mapper Detail',
+		'name': '__common__',
+		'parent': u'Supplier Quotation-Purchase Order',
+		'parentfield': u'table_mapper_details',
+		'parenttype': u'DocType Mapper',
+		'validation_logic': u'docstatus = 1'
+	},
+
+	# These values are common for all Field Mapper Detail
+	{
+		'doctype': u'Field Mapper Detail',
+		'name': '__common__',
+		'parent': u'Supplier Quotation-Purchase Order',
+		'parentfield': u'field_mapper_details',
+		'parenttype': u'DocType Mapper'
+	},
+
+	# These values are common for all DocType Mapper
+	{
+		'doctype': u'DocType Mapper',
+		'from_doctype': u'Supplier Quotation',
+		'module': u'Buying',
+		'name': '__common__',
+		'ref_doc_submitted': 1,
+		'to_doctype': u'Purchase Order'
+	},
+
+	# DocType Mapper, Supplier Quotation-Purchase Order
+	{
+		'doctype': u'DocType Mapper',
+		'name': u'Supplier Quotation-Purchase Order'
+	},
+
+	# Field Mapper Detail
+	{
+		'checking_operator': u'=',
+		'doctype': u'Field Mapper Detail',
+		'from_field': u'company',
+		'map': u'Yes',
+		'match_id': 0,
+		'to_field': u'company'
+	},
+
+	# Field Mapper Detail
+	{
+		'checking_operator': u'>=',
+		'doctype': u'Field Mapper Detail',
+		'from_field': u'transaction_date',
+		'map': u'No',
+		'match_id': 0,
+		'to_field': u'transaction_date'
+	},
+
+	# Field Mapper Detail
+	{
+		'doctype': u'Field Mapper Detail',
+		'from_field': u'conversion_rate',
+		'map': u'Yes',
+		'match_id': 0,
+		'to_field': u'conversion_rate'
+	},
+
+	# Field Mapper Detail
+	{
+		'doctype': u'Field Mapper Detail',
+		'from_field': u'net_total',
+		'map': u'Yes',
+		'match_id': 0,
+		'to_field': u'net_total'
+	},
+
+	# Field Mapper Detail
+	{
+		'doctype': u'Field Mapper Detail',
+		'from_field': u'total_tax',
+		'map': u'Yes',
+		'match_id': 0,
+		'to_field': u'total_tax'
+	},
+
+	# Field Mapper Detail
+	{
+		'doctype': u'Field Mapper Detail',
+		'from_field': u'grand_total',
+		'map': u'Yes',
+		'match_id': 0,
+		'to_field': u'grand_total'
+	},
+
+	# Field Mapper Detail
+	{
+		'doctype': u'Field Mapper Detail',
+		'from_field': u'parent',
+		'map': u'Yes',
+		'match_id': 1,
+		'to_field': u'supplier_quotation'
+	},
+
+	# Field Mapper Detail
+	{
+		'doctype': u'Field Mapper Detail',
+		'from_field': u'name',
+		'map': u'Yes',
+		'match_id': 1,
+		'to_field': u'supplier_quotation_item'
+	},
+
+	# Field Mapper Detail
+	{
+		'doctype': u'Field Mapper Detail',
+		'from_field': u'uom',
+		'map': u'Yes',
+		'match_id': 1,
+		'to_field': u'stock_uom'
+	},
+
+	# Field Mapper Detail
+	{
+		'doctype': u'Field Mapper Detail',
+		'from_field': u'eval:flt(1)',
+		'map': u'Yes',
+		'match_id': 1,
+		'to_field': u'conversion_factor'
+	},
+
+	# Table Mapper Detail
+	{
+		'doctype': u'Table Mapper Detail',
+		'from_table': u'Supplier Quotation',
+		'match_id': 0,
+		'reference_key': u'prevdoc_docname',
+		'to_table': u'Purchase Order'
+	},
+
+	# Table Mapper Detail
+	{
+		'doctype': u'Table Mapper Detail',
+		'from_field': u'quotation_details',
+		'from_table': u'Supplier Quotation Item',
+		'match_id': 1,
+		'reference_doctype_key': u'prevdoc_doctype',
+		'to_field': u'po_details',
+		'to_table': u'Purchase Order Item'
+	},
+
+	# Table Mapper Detail
+	{
+		'doctype': u'Table Mapper Detail',
+		'from_field': u'purchase_tax_details',
+		'from_table': u'Purchase Taxes and Charges',
+		'match_id': 2,
+		'to_field': u'purchase_tax_details',
+		'to_table': u'Purchase Taxes and Charges'
+	}
+]
\ No newline at end of file
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.js b/erpnext/buying/doctype/purchase_common/purchase_common.js
index 81d5fbf..dbac326 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.js
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.js
@@ -122,7 +122,6 @@
 
 cur_frm.cscript.dynamic_label = function(doc, cdt, cdn, callback1) {
 	var base_currency = wn.boot.company[doc.company].default_currency || sys_defaults['currency'];
-	
 	if (doc.currency === base_currency) {
 		set_multiple(cdt, cdn, {conversion_rate:1});
 		hide_field(['conversion_rate', 'net_total_import','grand_total_import',
@@ -634,3 +633,7 @@
 		 }
 	}
 }
+
+cur_frm.cscript.toggle_contact_section = function(doc) {
+	cur_frm.toggle_display("contact_section", doc.supplier);
+}
\ No newline at end of file
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js
index a27f6ff..a1983c3 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.js
@@ -24,15 +24,15 @@
 wn.require('erpnext/setup/doctype/notification_control/notification_control.js');
 
 cur_frm.cscript.onload = function(doc, cdt, cdn) {
-
-	if(!doc.fiscal_year && doc.__islocal){ //set_default_values(doc);
-		doc.fiscal_year = sys_defaults.fiscal_year;
-	}
-	if(!doc.conversion_rate) doc.conversion_rate = 1;
-	if(!doc.currency) doc.currency = sys_defaults.currency;
-	if(!doc.status) set_multiple(cdt,cdn,{status:'Draft'});
-	if(!doc.transaction_date) set_multiple(cdt,cdn,{transaction_date:get_today()});
-	if(!doc.is_subcontracted) set_multiple(cdt, cdn, {is_subcontracted:'No'});
+	// set missing values in parent doc
+	set_missing_values(doc, {
+		fiscal_year: sys_defaults.fiscal_year,
+		conversion_rate: 1,
+		currency: sys_defaults.currency,
+		status: "Draft",
+		transaction_date: get_today(),
+		is_subcontracted: "No"
+	});
 }
 
 cur_frm.cscript.onload_post_render = function(doc, dt, dn) {
@@ -55,8 +55,7 @@
 	if(doc.docstatus == 1 && doc.status == 'Stopped')
 		cur_frm.add_custom_button('Unstop Purchase Order', cur_frm.cscript['Unstop Purchase Order']);
 	
-	if(doc.supplier) $(cur_frm.fields_dict.contact_section.row.wrapper).toggle(true);
-	else $(cur_frm.fields_dict.contact_section.row.wrapper).toggle(false);
+	cur_frm.cscript.toggle_contact_section(doc);
 }
 
 cur_frm.cscript.supplier = function(doc,dt,dn) {
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index f4e0703..533e8ad 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -87,7 +87,7 @@
 		if self.doc.indent_no:
 			get_obj('DocType Mapper','Purchase Request-Purchase Order').dt_map('Purchase Request','Purchase Order',self.doc.indent_no, self.doc, self.doclist, "[['Purchase Request','Purchase Order'],['Purchase Request Item', 'Purchase Order Item']]")
 			pcomm = get_obj('Purchase Common')
-			for d in getlist(self.doclist, 'po_details'):			
+			for d in getlist(self.doclist, 'po_details'):
 				if d.item_code and not d.purchase_rate:
 					last_purchase_details, last_purchase_date = pcomm.get_last_purchase_details(d.item_code, self.doc.name)
 					if last_purchase_details:
@@ -100,6 +100,19 @@
 						d.import_rate = d.purchase_rate / conversion_rate						
 					else:
 						d.purchase_ref_rate = d.discount_rate = d.purchase_rate = d.import_ref_rate = d.import_rate = 0.0
+						
+	def get_supplier_quotation_items(self):
+		if self.doc.supplier_quotation:
+			get_obj("DocType Mapper", "Supplier Quotation-Purchase Order").dt_map("Supplier Quotation",
+				"Purchase Order", self.doc.supplier_quotation, self.doc, self.doclist,
+				"""[['Supplier Quotation', 'Purchase Order'],
+				['Supplier Quotation Item', 'Purchase Order Item'],
+				['Purchase Taxes and Charges', 'Purchase Taxes and Charges']]""")
+			self.get_default_schedule_date()
+			for d in getlist(self.doclist, 'po_details'):
+				if d.prevdoc_detail_docname and not d.schedule_date:
+					d.schedule_date = webnotes.conn.get_value("Purchase Request Item",
+							d.prevdoc_detail_docname, "schedule_date")
 	
 	def get_tc_details(self):
 		"""get terms & conditions"""
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.txt b/erpnext/buying/doctype/purchase_order/purchase_order.txt
index 9900adb..b1a70bb 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.txt
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.txt
@@ -5,7 +5,7 @@
 	{
 		'creation': '2012-07-02 14:44:19',
 		'docstatus': 0,
-		'modified': '2012-08-02 13:43:50',
+		'modified': '2012-08-06 17:14:19',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -356,9 +356,35 @@
 		'fieldtype': u'Button',
 		'hidden': 0,
 		'label': u'Get Items',
+		'no_copy': 0,
 		'oldfieldtype': u'Button',
 		'options': u'get_indent_details',
-		'permlevel': 0
+		'permlevel': 0,
+		'print_hide': 1
+	},
+
+	# DocField
+	{
+		'description': u'You can make a purchase order from multiple Supplier Quotations. Select Supplier Quotations one by one and click on the button below.',
+		'doctype': u'DocField',
+		'fieldname': u'supplier_quotation',
+		'fieldtype': u'Link',
+		'label': u'Select Supplier Quotation',
+		'no_copy': 1,
+		'options': u'Supplier Quotation',
+		'permlevel': 0,
+		'print_hide': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'get_supplier_quotation_items',
+		'fieldtype': u'Button',
+		'label': u'Get Items',
+		'options': u'get_supplier_quotation_items',
+		'permlevel': 0,
+		'print_hide': 1
 	},
 
 	# DocField
@@ -369,7 +395,8 @@
 		'fieldtype': u'Section Break',
 		'label': u'Taxes',
 		'oldfieldtype': u'Section Break',
-		'permlevel': 0
+		'permlevel': 0,
+		'print_hide': 0
 	},
 
 	# DocField
diff --git a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.txt b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.txt
index 73a6f01..cecf963 100755
--- a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.txt
+++ b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.txt
@@ -5,7 +5,7 @@
 	{
 		'creation': '2012-05-15 12:14:38',
 		'docstatus': 0,
-		'modified': '2012-06-29 13:05:33',
+		'modified': '2012-08-06 15:55:11',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -335,7 +335,7 @@
 		'fieldtype': u'Date',
 		'hidden': 1,
 		'in_filter': 1,
-		'label': u'Purchase Requisition Date',
+		'label': u'Purchase Request Date',
 		'oldfieldname': u'prevdoc_date',
 		'oldfieldtype': u'Date',
 		'permlevel': 1,
@@ -351,7 +351,7 @@
 		'fieldtype': u'Data',
 		'hidden': 1,
 		'in_filter': 1,
-		'label': u'Purchase Requisition Detail No',
+		'label': u'Purchase Request Detail No',
 		'no_copy': 0,
 		'oldfieldname': u'prevdoc_detail_docname',
 		'oldfieldtype': u'Data',
@@ -363,6 +363,30 @@
 	# DocField
 	{
 		'doctype': u'DocField',
+		'fieldname': u'supplier_quotation',
+		'fieldtype': u'Link',
+		'hidden': 1,
+		'in_filter': 0,
+		'label': u'Supplier Quotation',
+		'options': u'Supplier Quotation',
+		'permlevel': 1,
+		'search_index': 0
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'supplier_quotation_item',
+		'fieldtype': u'Link',
+		'hidden': 1,
+		'label': u'Supplier Quotation Item',
+		'options': u'Supplier Quotation Item',
+		'permlevel': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
 		'fieldname': u'brand',
 		'fieldtype': u'Link',
 		'hidden': 1,
diff --git a/erpnext/buying/doctype/purchase_request/purchase_request.js b/erpnext/buying/doctype/purchase_request/purchase_request.js
index c29434d..733da52 100644
--- a/erpnext/buying/doctype/purchase_request/purchase_request.js
+++ b/erpnext/buying/doctype/purchase_request/purchase_request.js
@@ -51,10 +51,11 @@
 
 	if(doc.docstatus == 1 && doc.status != 'Stopped'){
 		if(doc.per_ordered < 100) {
-			cur_frm.add_custom_button('Make Purchase Order', cur_frm.cscript['Make Purchase Order'])
-			cur_frm.add_custom_button('Stop Purchase Request', cur_frm.cscript['Stop Purchase Request'])
+			cur_frm.add_custom_button('Make Purchase Order', cur_frm.cscript['Make Purchase Order']);
+			cur_frm.add_custom_button('Stop Purchase Request', cur_frm.cscript['Stop Purchase Request']);
 		}
 		cur_frm.add_custom_button('Send SMS', cur_frm.cscript.send_sms);
+		cur_frm.add_custom_button("Make Supplier Quotation", cur_frm.cscript.make_supplier_quotation);
 	}
  
 	if(doc.docstatus == 1 && doc.status == 'Stopped')
@@ -124,3 +125,15 @@
 		});
 	}
 }
+
+cur_frm.cscript.make_supplier_quotation = function() {
+	var new_sq_name = createLocal("Supplier Quotation");
+	$c("dt_map", {
+		"docs": compress_doclist([locals['Supplier Quotation'][new_sq_name]]),
+		"from_doctype": cur_frm.doc.doctype,
+		"to_doctype": "Supplier Quotation",
+		"from_docname": cur_frm.doc.name,
+		"from_to_list": JSON.stringify([['Purchase Request', 'Supplier Quotation'],
+			['Purchase Request Item', 'Supplier Quotation Item']]),
+	}, function(r, rt) { loaddoc("Supplier Quotation", new_sq_name) });
+}
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
index 4d2673c..430d1ee 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
@@ -47,13 +47,17 @@
 	}
 }
 
-cur_frm.cscript.toggle_contact_section = function(doc) {
-	console.log(doc.supplier);
-	doc.supplier ? unhide_field("contact_section") : hide_field("contact_section");
-}
-
-cur_frm.cscript.make_purchase_order = function(doc, dt, dn) {
-	
+cur_frm.cscript.make_purchase_order = function() {
+	var new_po_name = createLocal("Purchase Order");
+	$c("dt_map", {
+		"docs": compress_doclist([locals['Purchase Order'][new_po_name]]),
+		"from_doctype": cur_frm.doc.doctype,
+		"to_doctype": "Purchase Order",
+		"from_docname": cur_frm.doc.name,
+		"from_to_list": JSON.stringify([['Supplier Quotation', 'Purchase Order'],
+			['Supplier Quotation Item', 'Purchase Order Item'],
+			['Purchase Taxes and Charges', 'Purchase Taxes and Charges']]),
+	}, function(r, rt) { loaddoc("Purchase Order", new_po_name) });
 }
 
 cur_frm.cscript.supplier = function(doc, dt, dn) {
@@ -65,6 +69,10 @@
 	}
 }
 
+cur_frm.cscript.uom = function(doc, cdt, cdn) {
+	// no need to trigger updation of stock uom, as this field doesn't exist in supplier quotation
+}
+
 cur_frm.fields_dict['quotation_items'].grid.get_field('project_name').get_query = 
 	function(doc, cdt, cdn) {
 		return "select `tabProject`.name from `tabProject` \
@@ -82,7 +90,6 @@
 		order by `tabPurchase Request`.`name` desc limit 50";
 }
 
-
 cur_frm.cscript.supplier_address = function(doc, dt, dn) {
 	if (doc.supplier) {
 		get_server_fields("get_supplier_address", JSON.stringify({supplier: doc.supplier,
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
index b90411c..1577eab 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -22,7 +22,7 @@
 class DocType(TransactionBase):
 	def __init__(self, doc, doclist=None):
 		self.doc, self.doclist = doc, doclist or []
-		self.tname, self.fname = "Supplier Quotation Item", "quotation_item"
+		self.tname, self.fname = "Supplier Quotation Item", "quotation_items"
 
 	def autoname(self):
 		"""autoname based on naming series value"""
@@ -67,7 +67,8 @@
 				self.doc, self.doclist, """[['Purchase Request', 'Supplier Quotation'],
 				['Purchase Request Item', 'Supplier Quotation Item']]""")
 			
-			for d in getlist(self.doclist, "quotation_details"):
+			from webnotes.model.doclist import getlist
+			for d in getlist(self.doclist, self.fname):
 				if d.item_code and not d.purchase_rate:
 					d.purchase_ref_rate = d.discount_rate = d.purchase_rate = 0.0
 					d.import_ref_rate = d.import_rate = 0.0
@@ -75,9 +76,6 @@
 	def get_purchase_tax_details(self):
 		self.doclist = get_obj('Purchase Common').get_purchase_tax_details(self)
 
-	def get_uom_details(self, args=None):
-		return get_obj('Purchase Common').get_uom_details(args)
-
 	def validate_fiscal_year(self):
 		get_obj(dt = 'Purchase Common').validate_fiscal_year( \
 			self.doc.fiscal_year, self.doc.transaction_date, 'Quotation Date')
diff --git a/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.txt b/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.txt
index 1ee10ae..895c8fc 100644
--- a/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.txt
+++ b/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.txt
@@ -5,7 +5,7 @@
 	{
 		'creation': '2012-08-01 20:07:22',
 		'docstatus': 0,
-		'modified': '2012-08-02 16:00:52',
+		'modified': '2012-08-03 12:34:33',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -245,38 +245,6 @@
 	{
 		'colour': u'White:FFF',
 		'doctype': u'DocField',
-		'fieldname': u'conversion_factor',
-		'fieldtype': u'Currency',
-		'hidden': 0,
-		'label': u'UOM Conversion Factor',
-		'oldfieldname': u'conversion_factor',
-		'oldfieldtype': u'Currency',
-		'permlevel': 0,
-		'print_hide': 1,
-		'reqd': 1,
-		'trigger': u'Client',
-		'width': u'100px'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'stock_uom',
-		'fieldtype': u'Data',
-		'hidden': 0,
-		'label': u'Stock UOM',
-		'oldfieldname': u'stock_uom',
-		'oldfieldtype': u'Data',
-		'permlevel': 1,
-		'print_hide': 1,
-		'reqd': 1,
-		'width': u'100px'
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
 		'fieldname': u'prevdoc_doctype',
 		'fieldtype': u'Data',
 		'hidden': 1,
diff --git a/erpnext/patches/july_2012/repost_stock_due_to_wrong_packing_list.py b/erpnext/patches/july_2012/repost_stock_due_to_wrong_packing_list.py
index 51976d0..b552021 100644
--- a/erpnext/patches/july_2012/repost_stock_due_to_wrong_packing_list.py
+++ b/erpnext/patches/july_2012/repost_stock_due_to_wrong_packing_list.py
@@ -41,7 +41,8 @@
 				and parenttype="Sales Order"
 				and exists (select * from `tabSales Order` so
 				where name = dnpi_in.parent and docstatus = 1 and status != 'Stopped')
-			) dnpi) tab""", (d[0], d[1]))
+			) dnpi) tab
+			where so_item_qty >= so_item_delivered_qty""", (d[0], d[1]))
 
 		if flt(d[3]) != flt(reserved_qty[0][0]):
 			print d[3], reserved_qty[0][0]
diff --git a/public/js/all-app.js b/public/js/all-app.js
index 6b796aa..1921530 100644
--- a/public/js/all-app.js
+++ b/public/js/all-app.js
@@ -480,7 +480,7 @@
 new_dt=new Date(dt.getFullYear(),dt.getMonth()+months,dt.getDate())
 if(new_dt.getDate()!=dt.getDate()){return dateutil.month_end(new Date(dt.getFullYear(),dt.getMonth()+months,1))}
 return dateutil.obj_to_str(new_dt);},month_start:function(){var d=new Date();return d.getFullYear()+'-'+int_to_str(d.getMonth()+1,2)+'-01';},month_end:function(d){if(!d)var d=new Date();var m=d.getMonth()+1;var y=d.getFullYear();last_date=month_last[m];if(m==2&&(y%4)==0&&((y%100)!=0||(y%400)==0))
-last_date=29;return y+'-'+int_to_str(m,2)+'-'+last_date;},get_user_fmt:function(){var t=wn.control_panel.date_format;if(!t)t='dd-mm-yyyy';return t;},str_to_user:function(val,no_time_str){var user_fmt=dateutil.get_user_fmt();var time_str='';if(val==null||val=='')return null;if(val.search(':')!=-1){var tmp=val.split(' ');if(tmp[1])
+last_date=29;return y+'-'+int_to_str(m,2)+'-'+last_date;},get_user_fmt:function(){var t=sys_defaults.date_format;if(!t)t='dd-mm-yyyy';return t;},str_to_user:function(val,no_time_str){var user_fmt=dateutil.get_user_fmt();var time_str='';if(val==null||val=='')return null;if(val.search(':')!=-1){var tmp=val.split(' ');if(tmp[1])
 time_str=' '+tmp[1];var d=tmp[0];}else{var d=val;}
 if(no_time_str)time_str='';d=d.split('-');if(d.length==3){if(user_fmt=='dd-mm-yyyy')
 val=d[2]+'-'+d[1]+'-'+d[0]+time_str;else if(user_fmt=='dd/mm/yyyy')
@@ -719,7 +719,7 @@
 HTMLField.prototype=new Field();HTMLField.prototype.with_label=0;HTMLField.prototype.set_disp=function(val){if(this.disp_area)this.disp_area.innerHTML=val;}
 HTMLField.prototype.set_input=function(val){if(val)this.set_disp(val);}
 HTMLField.prototype.onrefresh=function(){if(this.df.options)this.set_disp(this.df.options);}
-var datepicker_active=0;function DateField(){}DateField.prototype=new Field();DateField.prototype.make_input=function(){var me=this;this.user_fmt=wn.control_panel.date_format;if(!this.user_fmt)this.user_fmt='dd-mm-yy';this.input=$a(this.input_area,'input');$(this.input).datepicker({dateFormat:me.user_fmt.replace('yyyy','yy'),altFormat:'yy-mm-dd',changeYear:true,beforeShow:function(input,inst){datepicker_active=1},onClose:function(dateText,inst){datepicker_active=0;if(_f.cur_grid_cell)
+var datepicker_active=0;function DateField(){}DateField.prototype=new Field();DateField.prototype.make_input=function(){var me=this;this.user_fmt=sys_defaults.date_format;if(!this.user_fmt)this.user_fmt='dd-mm-yy';this.input=$a(this.input_area,'input');$(this.input).datepicker({dateFormat:me.user_fmt.replace('yyyy','yy'),altFormat:'yy-mm-dd',changeYear:true,beforeShow:function(input,inst){datepicker_active=1},onClose:function(dateText,inst){datepicker_active=0;if(_f.cur_grid_cell)
 _f.cur_grid_cell.grid.cell_deselect();}});var me=this;me.input.onchange=function(){if(this.value==null)this.value='';if(!this.not_in_form)
 me.set(dateutil.user_to_str(me.input.value));me.run_trigger();}
 me.input.set_input=function(val){if(val==null)val='';else val=dateutil.str_to_user(val);me.input.value=val;}
@@ -1552,7 +1552,7 @@
 HTMLField.prototype=new Field();HTMLField.prototype.with_label=0;HTMLField.prototype.set_disp=function(val){if(this.disp_area)this.disp_area.innerHTML=val;}
 HTMLField.prototype.set_input=function(val){if(val)this.set_disp(val);}
 HTMLField.prototype.onrefresh=function(){if(this.df.options)this.set_disp(this.df.options);}
-var datepicker_active=0;function DateField(){}DateField.prototype=new Field();DateField.prototype.make_input=function(){var me=this;this.user_fmt=wn.control_panel.date_format;if(!this.user_fmt)this.user_fmt='dd-mm-yy';this.input=$a(this.input_area,'input');$(this.input).datepicker({dateFormat:me.user_fmt.replace('yyyy','yy'),altFormat:'yy-mm-dd',changeYear:true,beforeShow:function(input,inst){datepicker_active=1},onClose:function(dateText,inst){datepicker_active=0;if(_f.cur_grid_cell)
+var datepicker_active=0;function DateField(){}DateField.prototype=new Field();DateField.prototype.make_input=function(){var me=this;this.user_fmt=sys_defaults.date_format;if(!this.user_fmt)this.user_fmt='dd-mm-yy';this.input=$a(this.input_area,'input');$(this.input).datepicker({dateFormat:me.user_fmt.replace('yyyy','yy'),altFormat:'yy-mm-dd',changeYear:true,beforeShow:function(input,inst){datepicker_active=1},onClose:function(dateText,inst){datepicker_active=0;if(_f.cur_grid_cell)
 _f.cur_grid_cell.grid.cell_deselect();}});var me=this;me.input.onchange=function(){if(this.value==null)this.value='';if(!this.not_in_form)
 me.set(dateutil.user_to_str(me.input.value));me.run_trigger();}
 me.input.set_input=function(val){if(val==null)val='';else val=dateutil.str_to_user(val);me.input.value=val;}
diff --git a/public/js/all-web.js b/public/js/all-web.js
index 0673e16..9f4d63b 100644
--- a/public/js/all-web.js
+++ b/public/js/all-web.js
@@ -367,7 +367,7 @@
 new_dt=new Date(dt.getFullYear(),dt.getMonth()+months,dt.getDate())
 if(new_dt.getDate()!=dt.getDate()){return dateutil.month_end(new Date(dt.getFullYear(),dt.getMonth()+months,1))}
 return dateutil.obj_to_str(new_dt);},month_start:function(){var d=new Date();return d.getFullYear()+'-'+int_to_str(d.getMonth()+1,2)+'-01';},month_end:function(d){if(!d)var d=new Date();var m=d.getMonth()+1;var y=d.getFullYear();last_date=month_last[m];if(m==2&&(y%4)==0&&((y%100)!=0||(y%400)==0))
-last_date=29;return y+'-'+int_to_str(m,2)+'-'+last_date;},get_user_fmt:function(){var t=wn.control_panel.date_format;if(!t)t='dd-mm-yyyy';return t;},str_to_user:function(val,no_time_str){var user_fmt=dateutil.get_user_fmt();var time_str='';if(val==null||val=='')return null;if(val.search(':')!=-1){var tmp=val.split(' ');if(tmp[1])
+last_date=29;return y+'-'+int_to_str(m,2)+'-'+last_date;},get_user_fmt:function(){var t=sys_defaults.date_format;if(!t)t='dd-mm-yyyy';return t;},str_to_user:function(val,no_time_str){var user_fmt=dateutil.get_user_fmt();var time_str='';if(val==null||val=='')return null;if(val.search(':')!=-1){var tmp=val.split(' ');if(tmp[1])
 time_str=' '+tmp[1];var d=tmp[0];}else{var d=val;}
 if(no_time_str)time_str='';d=d.split('-');if(d.length==3){if(user_fmt=='dd-mm-yyyy')
 val=d[2]+'-'+d[1]+'-'+d[0]+time_str;else if(user_fmt=='dd/mm/yyyy')
diff --git a/public/js/fields.js b/public/js/fields.js
index 77cc4fd..7325ea4 100644
--- a/public/js/fields.js
+++ b/public/js/fields.js
@@ -83,7 +83,7 @@
 HTMLField.prototype=new Field();HTMLField.prototype.with_label=0;HTMLField.prototype.set_disp=function(val){if(this.disp_area)this.disp_area.innerHTML=val;}
 HTMLField.prototype.set_input=function(val){if(val)this.set_disp(val);}
 HTMLField.prototype.onrefresh=function(){if(this.df.options)this.set_disp(this.df.options);}
-var datepicker_active=0;function DateField(){}DateField.prototype=new Field();DateField.prototype.make_input=function(){var me=this;this.user_fmt=wn.control_panel.date_format;if(!this.user_fmt)this.user_fmt='dd-mm-yy';this.input=$a(this.input_area,'input');$(this.input).datepicker({dateFormat:me.user_fmt.replace('yyyy','yy'),altFormat:'yy-mm-dd',changeYear:true,beforeShow:function(input,inst){datepicker_active=1},onClose:function(dateText,inst){datepicker_active=0;if(_f.cur_grid_cell)
+var datepicker_active=0;function DateField(){}DateField.prototype=new Field();DateField.prototype.make_input=function(){var me=this;this.user_fmt=sys_defaults.date_format;if(!this.user_fmt)this.user_fmt='dd-mm-yy';this.input=$a(this.input_area,'input');$(this.input).datepicker({dateFormat:me.user_fmt.replace('yyyy','yy'),altFormat:'yy-mm-dd',changeYear:true,beforeShow:function(input,inst){datepicker_active=1},onClose:function(dateText,inst){datepicker_active=0;if(_f.cur_grid_cell)
 _f.cur_grid_cell.grid.cell_deselect();}});var me=this;me.input.onchange=function(){if(this.value==null)this.value='';if(!this.not_in_form)
 me.set(dateutil.user_to_str(me.input.value));me.run_trigger();}
 me.input.set_input=function(val){if(val==null)val='';else val=dateutil.str_to_user(val);me.input.value=val;}