Merge branch 'master' of github.com:webnotes/erpnext
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..68dc8c7 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) {
+ doc.supplier ? unhide_field("contact_section") : hide_field("contact_section");
+}
\ 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 40b7281..d84d06e 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -86,7 +86,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:
@@ -99,6 +99,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 318ebda..d5e8df5 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'
},
@@ -464,9 +464,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
@@ -477,7 +503,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 f52e428..f5b9335 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -21,7 +21,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"""
@@ -66,7 +66,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
@@ -74,9 +75,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,