Merge branch 'master' into latest
Conflicts:
index.html
version.num
diff --git a/erpnext/patches/jan_mar_2012/customer_address_contact_patch.py b/erpnext/patches/jan_mar_2012/customer_address_contact_patch.py
new file mode 100644
index 0000000..6a7d405
--- /dev/null
+++ b/erpnext/patches/jan_mar_2012/customer_address_contact_patch.py
@@ -0,0 +1,58 @@
+import webnotes
+
+def execute():
+ """
+ * Reload Search Criteria "Customer Address Contact"
+ * SET is_primary_contact=1, is_primary_address=1 WHERE not specified
+ """
+ reload_sc()
+ patch_primary_contact()
+ patch_primary_address()
+
+def reload_sc():
+ from webnotes.modules.module_manager import reload_doc
+ reload_doc('selling', 'search_criteria', 'customer_address_contact')
+ reload_doc('selling', 'Module Def', 'Selling')
+
+def patch_primary_contact():
+ res = webnotes.conn.sql("""
+ SELECT name FROM `tabContact`
+ WHERE customer IN (
+ SELECT customer FROM `tabContact`
+ WHERE IFNULL(customer, '')!=''
+ GROUP BY customer HAVING SUM(IFNULL(is_primary_contact, 0))=0
+ ) OR supplier IN (
+ SELECT supplier FROM `tabContact`
+ WHERE IFNULL(supplier, '')!=''
+ GROUP BY supplier HAVING SUM(IFNULL(is_primary_contact, 0))=0
+ ) OR sales_partner IN (
+ SELECT sales_partner FROM `tabContact`
+ WHERE IFNULL(sales_partner, '')!=''
+ GROUP BY sales_partner HAVING SUM(IFNULL(is_primary_contact, 0))=0
+ )
+ """, as_list=1)
+ names = ", ".join(["'" + str(r[0]) + "'" for r in res if r])
+ if names: webnotes.conn.sql("UPDATE `tabContact` SET is_primary_contact=1 WHERE name IN (%s)" % names)
+
+def patch_primary_address():
+ res = webnotes.conn.sql("""
+ SELECT name FROM `tabAddress`
+ WHERE customer IN (
+ SELECT customer FROM `tabAddress`
+ WHERE IFNULL(customer, '')!=''
+ GROUP BY customer HAVING SUM(IFNULL(is_primary_address, 0))=0
+ AND SUM(IFNULL(is_shipping_address, 0))=0
+ ) OR supplier IN (
+ SELECT supplier FROM `tabAddress`
+ WHERE IFNULL(supplier, '')!=''
+ GROUP BY supplier HAVING SUM(IFNULL(is_primary_address, 0))=0
+ AND SUM(IFNULL(is_shipping_address, 0))=0
+ ) OR sales_partner IN (
+ SELECT sales_partner FROM `tabAddress`
+ WHERE IFNULL(sales_partner, '')!=''
+ GROUP BY sales_partner HAVING SUM(IFNULL(is_primary_address, 0))=0
+ AND SUM(IFNULL(is_shipping_address, 0))=0
+ )
+ """, as_list=1)
+ names = ", ".join(["'" + str(r[0]) + "'" for r in res if r])
+ if names: webnotes.conn.sql("UPDATE `tabAddress` SET is_primary_address=1 WHERE name IN (%s)" % names)
diff --git a/erpnext/patches/patch_list.py b/erpnext/patches/patch_list.py
index fe4f09c..c0c7d1e 100644
--- a/erpnext/patches/patch_list.py
+++ b/erpnext/patches/patch_list.py
@@ -35,4 +35,9 @@
'patch_file': 'remove_get_tds_button',
'description': "Remove One Get TDS button, which is appearing twice in JV"
},
+ {
+ 'patch_module': 'patches.jan_mar_2012',
+ 'patch_file': 'customer_address_contact',
+ 'description': "Install Customer Address Contact report and run patches regarding primary address and contact"
+ },
]
diff --git a/erpnext/production/doctype/bill_of_materials/bill_of_materials.py b/erpnext/production/doctype/bill_of_materials/bill_of_materials.py
index 2a17817..6e99af9 100644
--- a/erpnext/production/doctype/bill_of_materials/bill_of_materials.py
+++ b/erpnext/production/doctype/bill_of_materials/bill_of_materials.py
@@ -135,7 +135,7 @@
""" Uncheck others if current one is selected as default, update default bom in item master"""
if self.doc.is_default and self.doc.is_active == 'Yes':
- sql("update `tabBill Of Materials` set is_default = 0 where name != %s", self.doc.name)
+ sql("update `tabBill Of Materials` set is_default = 0 where name != %s and item=%s", (self.doc.name, self.doc.item))
# update default bom in Item Master
sql("update `tabItem` set default_bom = %s where name = %s", (self.doc.name, self.doc.item))
diff --git a/erpnext/selling/Module Def/Selling/Selling.txt b/erpnext/selling/Module Def/Selling/Selling.txt
index 5500cb3..42c8449 100644
--- a/erpnext/selling/Module Def/Selling/Selling.txt
+++ b/erpnext/selling/Module Def/Selling/Selling.txt
@@ -1,673 +1,335 @@
+# Module Def, Selling
[
+
+ # These values are common in all dictionaries
{
- '_last_update': None,
- 'creation': '2011-06-30 15:45:03',
- 'disabled': 'No',
+ 'creation': '2011-07-01 17:39:08',
'docstatus': 0,
+ 'modified': '2012-01-23 18:25:58',
+ 'modified_by': 'Administrator',
+ 'owner': 'Administrator'
+ },
+
+ # These values are common for all Module Def Role
+ {
+ 'doctype': 'Module Def Role',
+ 'name': '__common__',
+ 'parent': 'Selling',
+ 'parentfield': 'roles',
+ 'parenttype': 'Module Def'
+ },
+
+ # These values are common for all Module Def Item
+ {
+ 'doctype': 'Module Def Item',
+ 'name': '__common__',
+ 'parent': 'Selling',
+ 'parentfield': 'items',
+ 'parenttype': 'Module Def'
+ },
+
+ # These values are common for all Module Def
+ {
+ 'disabled': 'No',
'doctype': u'Module Def',
'doctype_list': 'Print Format, Sales Order\nPrint Format, Quotation Format\nPrint Format, Delivery Note Format',
'file_list': 'crm.gif,FileData/00208',
- 'idx': None,
'is_hidden': 'No',
- 'last_updated_date': None,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
'module_desc': 'Manage you sales team, with your leads, customers, quotes, orders etc.',
'module_icon': 'Selling.gif',
'module_label': 'Selling',
'module_name': 'Selling',
- 'module_page': None,
'module_seq': 3,
- 'name': 'Selling',
- 'owner': 'Administrator',
- 'parent': None,
- 'parentfield': None,
- 'parenttype': None,
- 'trash_reason': None,
- 'widget_code': None
+ 'name': '__common__'
},
+
+ # Module Def, Selling
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
+ 'doctype': u'Module Def',
+ 'name': 'Selling'
+ },
+
+ # Module Def Item
+ {
'description': 'Database of potential customers you need to keep in touch with',
'display_name': 'Lead',
'doc_name': 'Lead',
'doc_type': 'Forms',
- 'docstatus': 0,
'doctype': 'Module Def Item',
- 'fields': 'status\nlead_owner\nlead_name\ncontact_no\ncontact_by\ncontact_date\nexpected_month',
- 'hide': None,
- 'icon': None,
- 'idx': 1,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01284',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'fields': 'status\nlead_owner\nlead_name\ncontact_no\ncontact_by\ncontact_date\nexpected_month'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
'description': 'Your Customer Database',
'display_name': 'Customer',
'doc_name': 'Customer',
'doc_type': 'Forms',
- 'docstatus': 0,
'doctype': 'Module Def Item',
- 'fields': 'customer_group\ncountry',
- 'hide': None,
- 'icon': None,
- 'idx': 2,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01285',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'fields': 'customer_group\ncountry'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
'description': 'Specific requirements from a Lead / Customer',
'display_name': 'Enquiry',
'doc_name': 'Enquiry',
'doc_type': 'Forms',
- 'docstatus': 0,
'doctype': 'Module Def Item',
- 'fields': 'status\ntransaction_date\ncustomer\ncontact_person\ncost_center\ncompany',
- 'hide': None,
- 'icon': None,
- 'idx': 3,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01286',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'fields': 'status\ntransaction_date\ncustomer\ncontact_person\ncost_center\ncompany'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
'description': 'Offers you have made to your customers',
'display_name': 'Quotation',
'doc_name': 'Quotation',
'doc_type': 'Forms',
- 'docstatus': 0,
'doctype': 'Module Def Item',
- 'fields': 'status\ntransaction_date\ncustomer\ncontact_person\ncost_center\ngrand_total\ncompany',
- 'hide': None,
- 'icon': None,
- 'idx': 4,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01287',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'fields': 'status\ntransaction_date\ncustomer\ncontact_person\ncost_center\ngrand_total\ncompany'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
'description': 'Database of confirmed Sale Orders from your Customers',
'display_name': 'Sales Order',
'doc_name': 'Sales Order',
'doc_type': 'Forms',
- 'docstatus': 0,
'doctype': 'Module Def Item',
- 'fields': 'status\ntransaction_date\ncustomer\ncost_center\ngrand_total\nper_delivered\nper_billed\ncompany',
- 'hide': None,
- 'icon': None,
- 'idx': 5,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01288',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'fields': 'status\ntransaction_date\ncustomer\ncost_center\ngrand_total\nper_delivered\nper_billed\ncompany'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
- 'description': None,
'display_name': 'Sales Dashboard',
'doc_name': 'Sales Dashboard',
'doc_type': 'Pages',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 6,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01289',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
- 'description': None,
- 'display_name': None,
'doc_name': 'Reports',
'doc_type': 'Separator',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 7,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01290',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
- 'description': None,
+ 'doc_name': 'Reports',
+ 'doc_type': 'Separator',
+ 'doctype': 'Module Def Item'
+ },
+
+ # Module Def Item
+ {
'display_name': 'Gross Profit',
'doc_name': 'Delivery Note Detail',
'doc_type': 'Reports',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 8,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01291',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
- 'description': None,
'display_name': 'Territory, Item Group wise GP',
'doc_name': 'Delivery Note',
'doc_type': 'Reports',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 9,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01292',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
- 'description': None,
'display_name': 'Itemwise Sales Details',
'doc_name': 'Sales Order Detail',
'doc_type': 'Reports',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 10,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01293',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
- 'description': None,
'display_name': 'Itemwise Delivery Details',
'doc_name': 'Delivery Note Detail',
'doc_type': 'Reports',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 11,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01294',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
- 'description': None,
'display_name': 'Sales Personwise Transaction Summary',
'doc_name': 'Sales Person',
'doc_type': 'Reports',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 12,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01295',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
- 'description': None,
'display_name': 'Total Target Variance Report',
'doc_name': 'Target Detail',
'doc_type': 'Reports',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 13,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01296',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
- 'description': None,
'display_name': 'Sales Persons Target Variance (Item Group wise)',
'doc_name': 'Target Detail',
'doc_type': 'Reports',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 14,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01297',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
- 'description': None,
'display_name': 'Territories Target Variance (Item Group wise)',
'doc_name': 'Target Detail',
'doc_type': 'Reports',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 15,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01298',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
- 'description': None,
'display_name': 'Sales Order Pending Items',
'doc_name': 'Sales Order Detail',
'doc_type': 'Reports',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 16,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01299',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
- 'description': None,
'display_name': 'Sales Orderwise Booking & Delivery Summary',
'doc_name': 'Sales Order Detail',
'doc_type': 'Reports',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 17,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01300',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
- 'description': None,
'display_name': 'Sales Orderwise Pending Qty To Deliver',
'doc_name': 'Sales Order Detail',
'doc_type': 'Reports',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 18,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01301',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
- 'description': None,
'display_name': 'Sales Orderwise Pending Amount To Bill',
'doc_name': 'Sales Order Detail',
'doc_type': 'Reports',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 19,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01302',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
- 'description': None,
'display_name': 'Delivered Items to be Install',
'doc_name': 'Delivery Note Detail',
'doc_type': 'Reports',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 20,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01303',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
- 'description': None,
'display_name': 'Itemwise Price List',
'doc_name': 'Ref Rate Detail',
'doc_type': 'Reports',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 21,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01304',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
- 'description': None,
'display_name': 'Follow-up Report',
'doc_name': 'Follow up',
'doc_type': 'Reports',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 22,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01305',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
'description': 'Ledger details of your debtors',
'display_name': "Debtor's Ledger",
'doc_name': 'GL Entry',
'doc_type': 'Reports',
- 'docstatus': 0,
- 'doctype': 'Module Def Item',
- 'fields': None,
- 'hide': None,
- 'icon': None,
- 'idx': 23,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01306',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'doctype': 'Module Def Item'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
+ 'description': 'Report displaying Customer, Primary Address Details & Primary Contact Details',
+ 'display_name': 'Customer Address Contact',
+ 'doc_name': 'Customer',
+ 'doc_type': 'Reports',
+ 'doctype': 'Module Def Item'
+ },
+
+ # Module Def Item
+ {
'description': 'Customer Category',
'display_name': 'Customer Group',
'doc_name': 'Customer Group',
'doc_type': 'Setup Forms',
- 'docstatus': 0,
'doctype': 'Module Def Item',
- 'fields': 'id\ndescription',
- 'hide': None,
- 'icon': None,
- 'idx': 24,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01307',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'fields': 'id\ndescription'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
'description': 'Sales person details',
'display_name': 'Sales Person',
'doc_name': 'Sales Person',
'doc_type': 'Setup Forms',
- 'docstatus': 0,
'doctype': 'Module Def Item',
- 'fields': 'id\nterritory\ndepartment\nmobile_no\nemail_id',
- 'hide': None,
- 'icon': None,
- 'idx': 25,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01308',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'fields': 'id\nterritory\ndepartment\nmobile_no\nemail_id'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
'description': 'Item master',
'display_name': 'Item',
'doc_name': 'Item',
'doc_type': 'Setup Forms',
- 'docstatus': 0,
'doctype': 'Module Def Item',
- 'fields': 'name\nitem_group\ndescription',
- 'hide': None,
- 'icon': None,
- 'idx': 26,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01309',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'fields': 'name\nitem_group\ndescription'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
'description': 'Sales partner details',
'display_name': 'Sales Partner',
'doc_name': 'Sales Partner',
'doc_type': 'Setup Forms',
- 'docstatus': 0,
'doctype': 'Module Def Item',
- 'fields': 'id\npartner_type\nmobile\nemail\nterritory',
- 'hide': None,
- 'icon': None,
- 'idx': 27,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01310',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'fields': 'id\npartner_type\nmobile\nemail\nterritory'
},
+
+ # Module Def Item
{
- 'click_function': None,
- 'creation': '2011-06-30 15:45:03',
'description': 'Business campaigns',
'display_name': 'Campaign',
'doc_name': 'Campaign',
'doc_type': 'Setup Forms',
- 'docstatus': 0,
'doctype': 'Module Def Item',
- 'fields': 'id\ncampaign_name\ndescription',
- 'hide': None,
- 'icon': None,
- 'idx': 28,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDI01311',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'items',
- 'parenttype': 'Module Def'
+ 'fields': 'id\ncampaign_name\ndescription'
},
+
+ # Module Def Role
{
- 'creation': '2011-06-30 15:45:03',
- 'docstatus': 0,
'doctype': 'Module Def Role',
- 'idx': 1,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDR00328',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'roles',
- 'parenttype': 'Module Def',
'role': 'Administrator'
},
+
+ # Module Def Role
{
- 'creation': '2011-06-30 15:45:03',
- 'docstatus': 0,
'doctype': 'Module Def Role',
- 'idx': 2,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDR00329',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'roles',
- 'parenttype': 'Module Def',
'role': 'Sales Manager'
},
+
+ # Module Def Role
{
- 'creation': '2011-06-30 15:45:03',
- 'docstatus': 0,
'doctype': 'Module Def Role',
- 'idx': 3,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDR00330',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'roles',
- 'parenttype': 'Module Def',
'role': 'Sales User'
},
+
+ # Module Def Role
{
- 'creation': '2011-06-30 15:45:03',
- 'docstatus': 0,
'doctype': 'Module Def Role',
- 'idx': 4,
- 'modified': '2011-06-30 15:45:03',
- 'modified_by': 'Administrator',
- 'name': 'MDR00331',
- 'owner': 'Administrator',
- 'parent': 'Selling',
- 'parentfield': 'roles',
- 'parenttype': 'Module Def',
'role': 'Sales Master Manager'
}
]
\ No newline at end of file
diff --git a/erpnext/selling/search_criteria/customer_address_contact/__init__.py b/erpnext/selling/search_criteria/customer_address_contact/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/selling/search_criteria/customer_address_contact/__init__.py
diff --git a/erpnext/selling/search_criteria/customer_address_contact/customer_address_contact.txt b/erpnext/selling/search_criteria/customer_address_contact/customer_address_contact.txt
new file mode 100644
index 0000000..9e0a715
--- /dev/null
+++ b/erpnext/selling/search_criteria/customer_address_contact/customer_address_contact.txt
@@ -0,0 +1,36 @@
+# Search Criteria, customer_address_contact
+[
+
+ # These values are common in all dictionaries
+ {
+ 'creation': '2012-01-23 18:28:40',
+ 'docstatus': 0,
+ 'modified': '2012-01-23 18:28:40',
+ 'modified_by': 'Administrator',
+ 'owner': 'Administrator'
+ },
+
+ # These values are common for all Search Criteria
+ {
+ 'add_col': "`tabAddress`.address_line1 AS 'Address Line 1'\n`tabAddress`.address_line2 AS 'Address Line 2'\n`tabAddress`.city AS 'City'\n`tabAddress`.state AS 'State'\n`tabAddress`.pincode AS 'Pincode'\n`tabAddress`.country AS 'Country'\n`tabContact`.first_name AS 'Contact First Name'\n`tabContact`.last_name AS 'Contact Last Name'\n`tabContact`.phone AS 'Contact Phone'\n`tabContact`.mobile_no AS 'Contact Mobile'\n`tabContact`.email_id AS 'Contact Email'",
+ 'add_cond': '`tabAddress`.customer=`tabCustomer`.name\nifnull(`tabAddress`.is_primary_address, 0)=1\n`tabContact`.customer=`tabCustomer`.name\nifnull(`tabContact`.is_primary_contact, 0)=1',
+ 'add_tab': '`tabAddress`\n`tabContact`',
+ 'columns': 'Customer\x01ID,Customer\x01Customer Name',
+ 'criteria_name': 'Customer Address Contact',
+ 'doc_type': 'Customer',
+ 'doctype': 'Search Criteria',
+ 'filters': "{'Customer\x01Saved':1,'Customer\x01Submitted':1}",
+ 'module': 'Selling',
+ 'name': '__common__',
+ 'page_len': 50,
+ 'sort_by': '`tabCustomer`.`customer_name`',
+ 'sort_order': 'ASC',
+ 'standard': 'Yes'
+ },
+
+ # Search Criteria, customer_address_contact
+ {
+ 'doctype': 'Search Criteria',
+ 'name': 'customer_address_contact'
+ }
+]
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/address/address.py b/erpnext/utilities/doctype/address/address.py
index eabf624..7602d1d 100644
--- a/erpnext/utilities/doctype/address/address.py
+++ b/erpnext/utilities/doctype/address/address.py
@@ -4,53 +4,64 @@
from webnotes.model.doc import Document
from webnotes import session, form, msgprint, errprint
-sql = webnotes.conn.sql
-
# -----------------------------------------------------------------------------------------
class DocType:
- def __init__(self, doc, doclist=[]):
- self.doc = doc
- self.doclist = doclist
+ def __init__(self, doc, doclist=[]):
+ self.doc = doc
+ self.doclist = doclist
- def autoname(self):
- if self.doc.customer:
- self.doc.name = self.doc.customer + '-' + self.doc.address_type
- elif self.doc.supplier:
- self.doc.name = self.doc.supplier + '-' + self.doc.address_type
- elif self.doc.sales_partner:
- self.doc.name = self.doc.sales_partner + '-' + self.doc.address_type
-
- # filter out bad characters in name
- #self.doc.name = self.doc.name.replace('&','and').replace('.','').replace("'",'').replace('"','').replace(',','').replace('`','')
+ def autoname(self):
+ if self.doc.customer:
+ self.doc.name = self.doc.customer + '-' + self.doc.address_type
+ elif self.doc.supplier:
+ self.doc.name = self.doc.supplier + '-' + self.doc.address_type
+ elif self.doc.sales_partner:
+ self.doc.name = self.doc.sales_partner + '-' + self.doc.address_type
+
+ # filter out bad characters in name
+ #self.doc.name = self.doc.name.replace('&','and').replace('.','').replace("'",'').replace('"','').replace(',','').replace('`','')
#----------------------
# Call to Validate
#----------------------
- def validate(self):
- self.validate_primary_address()
- self.validate_shipping_address()
+ def validate(self):
+ self.validate_primary_address()
+ self.validate_shipping_address()
#----------------------
# Validate that there can only be one primary address for particular customer, supplier
#----------------------
- def validate_primary_address(self):
- if self.doc.is_primary_address == 1:
- if self.doc.customer:
- sql("update tabAddress set is_primary_address=0 where customer = '%s'" % (self.doc.customer))
- elif self.doc.supplier:
- sql("update tabAddress set is_primary_address=0 where supplier = '%s'" % (self.doc.supplier))
- elif self.doc.sales_partner:
- sql("update tabAddress set is_primary_address=0 where sales_partner = '%s'" % (self.doc.sales_partner))
-
+ def validate_primary_address(self):
+ sql = webnotes.conn.sql
+ if self.doc.is_primary_address == 1:
+ if self.doc.customer:
+ sql("update tabAddress set is_primary_address=0 where customer = '%s'" % (self.doc.customer))
+ elif self.doc.supplier:
+ sql("update tabAddress set is_primary_address=0 where supplier = '%s'" % (self.doc.supplier))
+ elif self.doc.sales_partner:
+ sql("update tabAddress set is_primary_address=0 where sales_partner = '%s'" % (self.doc.sales_partner))
+ elif not self.doc.is_shipping_address:
+ if self.doc.customer:
+ if not sql("select name from tabAddress where is_primary_address=1 and customer = '%s'" % (self.doc.customer)):
+ self.doc.is_primary_address = 1
+ elif self.doc.supplier:
+ if not sql("select name from tabAddress where is_primary_address=1 and supplier = '%s'" % (self.doc.supplier)):
+ self.doc.is_primary_address = 1
+ elif self.doc.sales_partner:
+ if not sql("select name from tabAddress where is_primary_address=1 and sales_partner = '%s'" % (self.doc.sales_partner)):
+ self.doc.is_primary_address = 1
+
+
#----------------------
# Validate that there can only be one shipping address for particular customer, supplier
#----------------------
- def validate_shipping_address(self):
- if self.doc.is_shipping_address == 1:
- if self.doc.customer:
- sql("update tabAddress set is_shipping_address=0 where customer = '%s'" % (self.doc.customer))
- elif self.doc.supplier:
- sql("update tabAddress set is_shipping_address=0 where supplier = '%s'" % (self.doc.supplier))
- elif self.doc.sales_partner:
- sql("update tabAddress set is_shipping_address=0 where sales_partner = '%s'" % (self.doc.sales_partner))
+ def validate_shipping_address(self):
+ sql = webnotes.conn.sql
+ if self.doc.is_shipping_address == 1:
+ if self.doc.customer:
+ sql("update tabAddress set is_shipping_address=0 where customer = '%s'" % (self.doc.customer))
+ elif self.doc.supplier:
+ sql("update tabAddress set is_shipping_address=0 where supplier = '%s'" % (self.doc.supplier))
+ elif self.doc.sales_partner:
+ sql("update tabAddress set is_shipping_address=0 where sales_partner = '%s'" % (self.doc.sales_partner))
diff --git a/erpnext/utilities/doctype/contact/contact.js b/erpnext/utilities/doctype/contact/contact.js
index bca1615..d33750d 100644
--- a/erpnext/utilities/doctype/contact/contact.js
+++ b/erpnext/utilities/doctype/contact/contact.js
@@ -3,6 +3,7 @@
if(doc.customer) cur_frm.add_fetch('customer', 'customer_name', 'customer_name');
if(doc.supplier) cur_frm.add_fetch('supplier', 'supplier_name', 'supplier_name');
}
+
/*
//---------- on refresh ----------------------
cur_frm.cscript.refresh = function(doc,cdt,cdn){
diff --git a/erpnext/utilities/doctype/contact/contact.py b/erpnext/utilities/doctype/contact/contact.py
index 6d7c4c4..8cc9ba1 100644
--- a/erpnext/utilities/doctype/contact/contact.py
+++ b/erpnext/utilities/doctype/contact/contact.py
@@ -4,40 +4,49 @@
from webnotes.model.doc import Document
from webnotes import session, form, msgprint, errprint
-sql = webnotes.conn.sql
-
# -----------------------------------------------------------------------------------------
class DocType:
- def __init__(self, doc, doclist=[]):
- self.doc = doc
- self.doclist = doclist
+ def __init__(self, doc, doclist=[]):
+ self.doc = doc
+ self.doclist = doclist
- def autoname(self):
- if self.doc.customer:
- self.doc.name = self.doc.first_name + (self.doc.last_name and ' ' + self.doc.last_name or '') + '-' + self.doc.customer
- elif self.doc.supplier:
- self.doc.name = self.doc.first_name + (self.doc.last_name and ' ' + self.doc.last_name or '') + '-' + self.doc.supplier
- elif self.doc.sales_partner:
- self.doc.name = self.doc.first_name + (self.doc.last_name and ' ' + self.doc.last_name or '') + '-' + self.doc.sales_partner
-
- # filter out bad characters in name
- #self.doc.name = self.doc.name.replace('&','and').replace('.','').replace("'",'').replace('"','').replace(',','')
+ def autoname(self):
+ if self.doc.customer:
+ self.doc.name = self.doc.first_name + (self.doc.last_name and ' ' + self.doc.last_name or '') + '-' + self.doc.customer
+ elif self.doc.supplier:
+ self.doc.name = self.doc.first_name + (self.doc.last_name and ' ' + self.doc.last_name or '') + '-' + self.doc.supplier
+ elif self.doc.sales_partner:
+ self.doc.name = self.doc.first_name + (self.doc.last_name and ' ' + self.doc.last_name or '') + '-' + self.doc.sales_partner
+
+ # filter out bad characters in name
+ #self.doc.name = self.doc.name.replace('&','and').replace('.','').replace("'",'').replace('"','').replace(',','')
#----------------------
# Call to Validate
#----------------------
- def validate(self):
- self.validate_primary_contact()
+ def validate(self):
+ self.validate_primary_contact()
#----------------------
# Validate that there can only be one primary contact for particular customer, supplier
#----------------------
- def validate_primary_contact(self):
- if self.doc.is_primary_contact == 1:
- if self.doc.customer:
- sql("update tabContact set is_primary_contact=0 where customer = '%s'" % (self.doc.customer))
- elif self.doc.supplier:
- sql("update tabContact set is_primary_contact=0 where supplier = '%s'" % (self.doc.supplier))
- elif self.doc.sales_partner:
- sql("update tabContact set is_primary_contact=0 where sales_partner = '%s'" % (self.doc.sales_partner))
+ def validate_primary_contact(self):
+ sql = webnotes.conn.sql
+ if self.doc.is_primary_contact == 1:
+ if self.doc.customer:
+ sql("update tabContact set is_primary_contact=0 where customer = '%s'" % (self.doc.customer))
+ elif self.doc.supplier:
+ sql("update tabContact set is_primary_contact=0 where supplier = '%s'" % (self.doc.supplier))
+ elif self.doc.sales_partner:
+ sql("update tabContact set is_primary_contact=0 where sales_partner = '%s'" % (self.doc.sales_partner))
+ else:
+ if self.doc.customer:
+ if not sql("select name from tabContact where is_primary_contact=1 and customer = '%s'" % (self.doc.customer)):
+ self.doc.is_primary_contact = 1
+ elif self.doc.supplier:
+ if not sql("select name from tabContact where is_primary_contact=1 and supplier = '%s'" % (self.doc.supplier)):
+ self.doc.is_primary_contact = 1
+ elif self.doc.sales_partner:
+ if not sql("select name from tabContact where is_primary_contact=1 and sales_partner = '%s'" % (self.doc.sales_partner)):
+ self.doc.is_primary_contact = 1
diff --git a/erpnext/utilities/doctype/contact/contact.txt b/erpnext/utilities/doctype/contact/contact.txt
index e5a6757..9167ed4 100644
--- a/erpnext/utilities/doctype/contact/contact.txt
+++ b/erpnext/utilities/doctype/contact/contact.txt
@@ -5,14 +5,14 @@
{
'creation': '2010-08-08 17:08:55',
'docstatus': 0,
- 'modified': '2011-12-19 14:11:08',
+ 'modified': '2012-01-23 16:07:56',
'modified_by': 'Administrator',
'owner': 'Administrator'
},
# These values are common for all DocType
{
- '_last_update': '1316075905',
+ '_last_update': '1327314958',
'allow_trash': 1,
'colour': 'White:FFF',
'default_print_format': 'Standard',
@@ -26,7 +26,7 @@
'server_code_error': ' ',
'show_in_menu': 0,
'subject': '%(first_name)s %(last_name)s - Email: %(email_id)s | Contact: %(phone)s | Mobile: %(mobile_no)s',
- 'version': 243
+ 'version': 245
},
# These values are common for all DocField
@@ -225,7 +225,7 @@
{
'colour': 'White:FFF',
'default': '0',
- 'depends_on': 'eval:(cint(doc.is_customer) || cint(doc.is_supplier) || cint(doc.is_sales_partner))',
+ 'depends_on': 'eval:(doc.customer || doc.supplier || doc.sales_partner)',
'doctype': 'DocField',
'fieldname': 'is_primary_contact',
'fieldtype': 'Check',
diff --git a/index.html b/index.html
index 25f47d6..31dce3c 100644
--- a/index.html
+++ b/index.html
@@ -3,6 +3,7 @@
<meta charset="utf-8">
<title>ERPNext</title>
<meta name="author" content="">
+<<<<<<< HEAD
<script type="text/javascript">window._version_number="102";
/*
@@ -89,6 +90,9 @@
/*
* lib/js/wn/provide.js
*/
+=======
+ <script type="text/javascript">window._version_number="51"
+>>>>>>> master
wn={}
wn.provide=function(namespace){var nsl=namespace.split('.');var l=nsl.length;var parent=window;for(var i=0;i<l;i++){var n=nsl[i];if(!parent[n]){parent[n]={}}
diff --git a/version.num b/version.num
index 0aede4a..257e563 100644
--- a/version.num
+++ b/version.num
@@ -1 +1 @@
-102
\ No newline at end of file
+102