updated generators for wip-4.2
This commit is contained in:
@@ -1,331 +1,332 @@
|
|||||||
{
|
{
|
||||||
"allow_copy": 1,
|
"allow_copy": 1,
|
||||||
"allow_import": 1,
|
"allow_import": 1,
|
||||||
"allow_rename": 1,
|
"allow_rename": 1,
|
||||||
"creation": "2013-01-30 12:49:46",
|
"creation": "2013-01-30 12:49:46",
|
||||||
"description": "Heads (or groups) against which Accounting Entries are made and balances are maintained.",
|
"description": "Heads (or groups) against which Accounting Entries are made and balances are maintained.",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"doctype": "DocType",
|
"doctype": "DocType",
|
||||||
"document_type": "Master",
|
"document_type": "Master",
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"fieldname": "properties",
|
"fieldname": "properties",
|
||||||
"fieldtype": "Section Break",
|
"fieldtype": "Section Break",
|
||||||
"in_list_view": 0,
|
"in_list_view": 0,
|
||||||
"label": "Account Details",
|
"label": "Account Details",
|
||||||
"oldfieldtype": "Section Break",
|
"oldfieldtype": "Section Break",
|
||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "column_break0",
|
"fieldname": "column_break0",
|
||||||
"fieldtype": "Column Break",
|
"fieldtype": "Column Break",
|
||||||
"in_list_view": 0,
|
"in_list_view": 0,
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"width": "50%"
|
"width": "50%"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "account_name",
|
"fieldname": "account_name",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"in_filter": 1,
|
"in_filter": 1,
|
||||||
"in_list_view": 1,
|
"in_list_view": 1,
|
||||||
"label": "Account Name",
|
"label": "Account Name",
|
||||||
"no_copy": 1,
|
"no_copy": 1,
|
||||||
"oldfieldname": "account_name",
|
"oldfieldname": "account_name",
|
||||||
"oldfieldtype": "Data",
|
"oldfieldtype": "Data",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"read_only": 1,
|
"read_only": 1,
|
||||||
"reqd": 1,
|
"reqd": 1,
|
||||||
"search_index": 1
|
"search_index": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"default": "Ledger",
|
"default": "Ledger",
|
||||||
"fieldname": "group_or_ledger",
|
"fieldname": "group_or_ledger",
|
||||||
"fieldtype": "Select",
|
"fieldtype": "Select",
|
||||||
"in_filter": 1,
|
"in_filter": 1,
|
||||||
"in_list_view": 1,
|
"in_list_view": 1,
|
||||||
"label": "Group or Ledger",
|
"label": "Group or Ledger",
|
||||||
"oldfieldname": "group_or_ledger",
|
"oldfieldname": "group_or_ledger",
|
||||||
"oldfieldtype": "Select",
|
"oldfieldtype": "Select",
|
||||||
"options": "\nLedger\nGroup",
|
"options": "\nLedger\nGroup",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"read_only": 1,
|
"read_only": 1,
|
||||||
"reqd": 1,
|
"reqd": 1,
|
||||||
"search_index": 1
|
"search_index": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "company",
|
"fieldname": "company",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"in_filter": 1,
|
"in_filter": 1,
|
||||||
"label": "Company",
|
"label": "Company",
|
||||||
"oldfieldname": "company",
|
"oldfieldname": "company",
|
||||||
"oldfieldtype": "Link",
|
"oldfieldtype": "Link",
|
||||||
"options": "Company",
|
"options": "Company",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"read_only": 1,
|
"read_only": 1,
|
||||||
"reqd": 1,
|
"reqd": 1,
|
||||||
"search_index": 1
|
"search_index": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "column_break1",
|
"fieldname": "column_break1",
|
||||||
"fieldtype": "Column Break",
|
"fieldtype": "Column Break",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"width": "50%"
|
"width": "50%"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "parent_account",
|
"fieldname": "parent_account",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"ignore_user_permissions": 1,
|
"ignore_user_permissions": 1,
|
||||||
"label": "Parent Account",
|
"label": "Parent Account",
|
||||||
"oldfieldname": "parent_account",
|
"oldfieldname": "parent_account",
|
||||||
"oldfieldtype": "Link",
|
"oldfieldtype": "Link",
|
||||||
"options": "Account",
|
"options": "Account",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"reqd": 1,
|
"reqd": 1,
|
||||||
"search_index": 1
|
"search_index": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"description": "Setting Account Type helps in selecting this Account in transactions.",
|
"description": "Setting Account Type helps in selecting this Account in transactions.",
|
||||||
"fieldname": "account_type",
|
"fieldname": "account_type",
|
||||||
"fieldtype": "Select",
|
"fieldtype": "Select",
|
||||||
"in_filter": 1,
|
"in_filter": 1,
|
||||||
"label": "Account Type",
|
"label": "Account Type",
|
||||||
"oldfieldname": "account_type",
|
"oldfieldname": "account_type",
|
||||||
"oldfieldtype": "Select",
|
"oldfieldtype": "Select",
|
||||||
"options": "\nBank\nCash\nTax\nChargeable\nWarehouse\nReceivable\nPayable\nEquity\nFixed Asset\nCost of Goods Sold\nExpense Account\nIncome Account\nStock Received But Not Billed\nExpenses Included In Valuation\nStock Adjustment",
|
"options": "\nBank\nCash\nTax\nChargeable\nWarehouse\nReceivable\nPayable\nEquity\nFixed Asset\nCost of Goods Sold\nExpense Account\nIncome Account\nStock Received But Not Billed\nExpenses Included In Valuation\nStock Adjustment",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"search_index": 0
|
"search_index": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"description": "Rate at which this tax is applied",
|
"description": "Rate at which this tax is applied",
|
||||||
"fieldname": "tax_rate",
|
"fieldname": "tax_rate",
|
||||||
"fieldtype": "Float",
|
"fieldtype": "Float",
|
||||||
"hidden": 0,
|
"hidden": 0,
|
||||||
"label": "Rate",
|
"label": "Rate",
|
||||||
"oldfieldname": "tax_rate",
|
"oldfieldname": "tax_rate",
|
||||||
"oldfieldtype": "Currency",
|
"oldfieldtype": "Currency",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"reqd": 0
|
"reqd": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"description": "If the account is frozen, entries are allowed to restricted users.",
|
"description": "If the account is frozen, entries are allowed to restricted users.",
|
||||||
"fieldname": "freeze_account",
|
"fieldname": "freeze_account",
|
||||||
"fieldtype": "Select",
|
"fieldtype": "Select",
|
||||||
"label": "Frozen",
|
"label": "Frozen",
|
||||||
"oldfieldname": "freeze_account",
|
"oldfieldname": "freeze_account",
|
||||||
"oldfieldtype": "Select",
|
"oldfieldtype": "Select",
|
||||||
"options": "No\nYes",
|
"options": "No\nYes",
|
||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "credit_days",
|
"fieldname": "credit_days",
|
||||||
"fieldtype": "Int",
|
"fieldtype": "Int",
|
||||||
"hidden": 1,
|
"hidden": 1,
|
||||||
"label": "Credit Days",
|
"label": "Credit Days",
|
||||||
"oldfieldname": "credit_days",
|
"oldfieldname": "credit_days",
|
||||||
"oldfieldtype": "Int",
|
"oldfieldtype": "Int",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"print_hide": 1
|
"print_hide": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "credit_limit",
|
"fieldname": "credit_limit",
|
||||||
"fieldtype": "Currency",
|
"fieldtype": "Currency",
|
||||||
"hidden": 1,
|
"hidden": 1,
|
||||||
"label": "Credit Limit",
|
"label": "Credit Limit",
|
||||||
"oldfieldname": "credit_limit",
|
"oldfieldname": "credit_limit",
|
||||||
"oldfieldtype": "Currency",
|
"oldfieldtype": "Currency",
|
||||||
"options": "Company:company:default_currency",
|
"options": "Company:company:default_currency",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"print_hide": 1
|
"print_hide": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"description": "If this Account represents a Customer, Supplier or Employee, set it here.",
|
"description": "If this Account represents a Customer, Supplier or Employee, set it here.",
|
||||||
"fieldname": "master_type",
|
"fieldname": "master_type",
|
||||||
"fieldtype": "Select",
|
"fieldtype": "Select",
|
||||||
"label": "Master Type",
|
"label": "Master Type",
|
||||||
"oldfieldname": "master_type",
|
"oldfieldname": "master_type",
|
||||||
"oldfieldtype": "Select",
|
"oldfieldtype": "Select",
|
||||||
"options": "\nSupplier\nCustomer\nEmployee",
|
"options": "\nSupplier\nCustomer\nEmployee",
|
||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "master_name",
|
"fieldname": "master_name",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"label": "Master Name",
|
"label": "Master Name",
|
||||||
"oldfieldname": "master_name",
|
"oldfieldname": "master_name",
|
||||||
"oldfieldtype": "Link",
|
"oldfieldtype": "Link",
|
||||||
"options": "[Select]",
|
"options": "[Select]",
|
||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "balance_must_be",
|
"fieldname": "balance_must_be",
|
||||||
"fieldtype": "Select",
|
"fieldtype": "Select",
|
||||||
"label": "Balance must be",
|
"label": "Balance must be",
|
||||||
"options": "\nDebit\nCredit",
|
"options": "\nDebit\nCredit",
|
||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "root_type",
|
"fieldname": "root_type",
|
||||||
"fieldtype": "Select",
|
"fieldtype": "Select",
|
||||||
"label": "Root Type",
|
"label": "Root Type",
|
||||||
"options": "\nAsset\nLiability\nIncome\nExpense\nEquity",
|
"options": "\nAsset\nLiability\nIncome\nExpense\nEquity",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"read_only": 1
|
"read_only": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "report_type",
|
"fieldname": "report_type",
|
||||||
"fieldtype": "Select",
|
"fieldtype": "Select",
|
||||||
"label": "Report Type",
|
"label": "Report Type",
|
||||||
"options": "\nBalance Sheet\nProfit and Loss",
|
"options": "\nBalance Sheet\nProfit and Loss",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"read_only": 1
|
"read_only": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "lft",
|
"fieldname": "lft",
|
||||||
"fieldtype": "Int",
|
"fieldtype": "Int",
|
||||||
"hidden": 1,
|
"hidden": 1,
|
||||||
"label": "Lft",
|
"label": "Lft",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"print_hide": 1,
|
"print_hide": 1,
|
||||||
"read_only": 1
|
"read_only": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "rgt",
|
"fieldname": "rgt",
|
||||||
"fieldtype": "Int",
|
"fieldtype": "Int",
|
||||||
"hidden": 1,
|
"hidden": 1,
|
||||||
"label": "Rgt",
|
"label": "Rgt",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"print_hide": 1,
|
"print_hide": 1,
|
||||||
"read_only": 1
|
"read_only": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "old_parent",
|
"fieldname": "old_parent",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"hidden": 1,
|
"hidden": 1,
|
||||||
"label": "Old Parent",
|
"label": "Old Parent",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"print_hide": 1,
|
"print_hide": 1,
|
||||||
"read_only": 1
|
"read_only": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"icon": "icon-money",
|
"icon": "icon-money",
|
||||||
"idx": 1,
|
"idx": 1,
|
||||||
"in_create": 1,
|
"in_create": 1,
|
||||||
"modified": "2014-06-03 18:27:58.109303",
|
"modified": "2014-06-17 04:30:56.689314",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Accounts",
|
"module": "Accounts",
|
||||||
"name": "Account",
|
"name": "Account",
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
"permissions": [
|
"permissions": [
|
||||||
{
|
{
|
||||||
"amend": 0,
|
"amend": 0,
|
||||||
"apply_user_permissions": 1,
|
"apply_user_permissions": 1,
|
||||||
"create": 1,
|
"create": 1,
|
||||||
"delete": 1,
|
"delete": 1,
|
||||||
"email": 1,
|
"email": 1,
|
||||||
"export": 1,
|
"export": 1,
|
||||||
"import": 1,
|
"import": 1,
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"print": 1,
|
"print": 1,
|
||||||
"read": 1,
|
"read": 1,
|
||||||
"report": 1,
|
"report": 1,
|
||||||
"role": "Accounts User",
|
"role": "Accounts User",
|
||||||
"submit": 0,
|
"submit": 0,
|
||||||
"write": 1
|
"write": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amend": 0,
|
"amend": 0,
|
||||||
"apply_user_permissions": 1,
|
"apply_user_permissions": 1,
|
||||||
"create": 0,
|
"create": 0,
|
||||||
"delete": 0,
|
"delete": 0,
|
||||||
"email": 1,
|
"email": 1,
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"print": 1,
|
"print": 1,
|
||||||
"read": 1,
|
"read": 1,
|
||||||
"report": 1,
|
"report": 1,
|
||||||
"role": "Auditor",
|
"role": "Auditor",
|
||||||
"submit": 0,
|
"submit": 0,
|
||||||
"write": 0
|
"write": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amend": 0,
|
"amend": 0,
|
||||||
"apply_user_permissions": 1,
|
"apply_user_permissions": 1,
|
||||||
"create": 0,
|
"create": 0,
|
||||||
"delete": 0,
|
"delete": 0,
|
||||||
"email": 1,
|
"email": 1,
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"print": 1,
|
"print": 1,
|
||||||
"read": 1,
|
"read": 1,
|
||||||
"report": 1,
|
"report": 1,
|
||||||
"role": "Sales User",
|
"role": "Sales User",
|
||||||
"submit": 0,
|
"submit": 0,
|
||||||
"write": 0
|
"write": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amend": 0,
|
"amend": 0,
|
||||||
"apply_user_permissions": 1,
|
"apply_user_permissions": 1,
|
||||||
"create": 0,
|
"create": 0,
|
||||||
"delete": 0,
|
"delete": 0,
|
||||||
"email": 1,
|
"email": 1,
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"print": 1,
|
"print": 1,
|
||||||
"read": 1,
|
"read": 1,
|
||||||
"report": 1,
|
"report": 1,
|
||||||
"role": "Purchase User",
|
"role": "Purchase User",
|
||||||
"submit": 0,
|
"submit": 0,
|
||||||
"write": 0
|
"write": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amend": 0,
|
"amend": 0,
|
||||||
"cancel": 0,
|
"cancel": 0,
|
||||||
"create": 0,
|
"create": 0,
|
||||||
"delete": 0,
|
"delete": 0,
|
||||||
"permlevel": 2,
|
"permlevel": 2,
|
||||||
"read": 1,
|
"read": 1,
|
||||||
"report": 1,
|
"report": 1,
|
||||||
"role": "Auditor",
|
"role": "Auditor",
|
||||||
"submit": 0,
|
"submit": 0,
|
||||||
"write": 0
|
"write": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amend": 0,
|
"amend": 0,
|
||||||
"create": 1,
|
"apply_user_permissions": 0,
|
||||||
"delete": 1,
|
"create": 1,
|
||||||
"email": 1,
|
"delete": 1,
|
||||||
"export": 1,
|
"email": 1,
|
||||||
"import": 1,
|
"export": 1,
|
||||||
"permlevel": 0,
|
"import": 1,
|
||||||
"print": 1,
|
"permlevel": 0,
|
||||||
"read": 1,
|
"print": 1,
|
||||||
"report": 1,
|
"read": 1,
|
||||||
"role": "Accounts Manager",
|
"report": 1,
|
||||||
"set_user_permissions": 1,
|
"role": "Accounts Manager",
|
||||||
"submit": 0,
|
"set_user_permissions": 1,
|
||||||
|
"submit": 0,
|
||||||
"write": 1
|
"write": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amend": 0,
|
"amend": 0,
|
||||||
"cancel": 0,
|
"cancel": 0,
|
||||||
"create": 0,
|
"create": 0,
|
||||||
"delete": 0,
|
"delete": 0,
|
||||||
"permlevel": 2,
|
"permlevel": 2,
|
||||||
"read": 1,
|
"read": 1,
|
||||||
"report": 1,
|
"report": 1,
|
||||||
"role": "Accounts Manager",
|
"role": "Accounts Manager",
|
||||||
"submit": 0,
|
"submit": 0,
|
||||||
"write": 1
|
"write": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amend": 0,
|
"amend": 0,
|
||||||
"cancel": 0,
|
"cancel": 0,
|
||||||
"create": 0,
|
"create": 0,
|
||||||
"delete": 0,
|
"delete": 0,
|
||||||
"permlevel": 2,
|
"permlevel": 2,
|
||||||
"read": 1,
|
"read": 1,
|
||||||
"report": 1,
|
"report": 1,
|
||||||
"role": "Accounts User",
|
"role": "Accounts User",
|
||||||
"submit": 0,
|
"submit": 0,
|
||||||
"write": 0
|
"write": 0
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"search_fields": "group_or_ledger"
|
"search_fields": "group_or_ledger"
|
||||||
}
|
}
|
||||||
@@ -24,6 +24,8 @@ mail_footer = "erpnext.startup.mail_footer"
|
|||||||
on_session_creation = "erpnext.startup.event_handlers.on_session_creation"
|
on_session_creation = "erpnext.startup.event_handlers.on_session_creation"
|
||||||
before_tests = "erpnext.setup.utils.before_tests"
|
before_tests = "erpnext.setup.utils.before_tests"
|
||||||
|
|
||||||
|
website_generators = ["Item Group", "Item", "Sales Partner"]
|
||||||
|
|
||||||
standard_queries = "Customer:erpnext.selling.doctype.customer.customer.get_customer_list"
|
standard_queries = "Customer:erpnext.selling.doctype.customer.customer.get_customer_list"
|
||||||
|
|
||||||
permission_query_conditions = {
|
permission_query_conditions = {
|
||||||
|
|||||||
@@ -7,6 +7,9 @@ import frappe
|
|||||||
from frappe.utils.nestedset import NestedSet
|
from frappe.utils.nestedset import NestedSet
|
||||||
from frappe.website.website_generator import WebsiteGenerator
|
from frappe.website.website_generator import WebsiteGenerator
|
||||||
from frappe.website.render import clear_cache
|
from frappe.website.render import clear_cache
|
||||||
|
from frappe.website.doctype.website_slideshow.website_slideshow import get_slideshow
|
||||||
|
|
||||||
|
condition_field = "show_in_website"
|
||||||
|
|
||||||
class ItemGroup(NestedSet, WebsiteGenerator):
|
class ItemGroup(NestedSet, WebsiteGenerator):
|
||||||
nsm_parent_field = 'parent_item_group'
|
nsm_parent_field = 'parent_item_group'
|
||||||
@@ -39,6 +42,53 @@ class ItemGroup(NestedSet, WebsiteGenerator):
|
|||||||
if frappe.db.exists("Item", self.name):
|
if frappe.db.exists("Item", self.name):
|
||||||
frappe.throw(frappe._("An item exists with same name ({0}), please change the item group name or rename the item").format(self.name))
|
frappe.throw(frappe._("An item exists with same name ({0}), please change the item group name or rename the item").format(self.name))
|
||||||
|
|
||||||
|
def get_context(self, context):
|
||||||
|
context.update({
|
||||||
|
"items": get_product_list_for_group(product_group = self.name, limit=100),
|
||||||
|
"parent_groups": get_parent_item_groups(self.name),
|
||||||
|
"title": self.name
|
||||||
|
})
|
||||||
|
|
||||||
|
if self.slideshow:
|
||||||
|
context.update(get_slideshow(self))
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
|
def get_product_list_for_group(product_group=None, start=0, limit=10):
|
||||||
|
child_groups = ", ".join(['"' + i[0] + '"' for i in get_child_groups(product_group)])
|
||||||
|
|
||||||
|
# base query
|
||||||
|
query = """select t1.name, t1.item_name, t1.page_name, t1.website_image, t1.item_group,
|
||||||
|
t1.web_long_description as website_description, t2.name as route
|
||||||
|
from `tabItem` t1, `tabWebsite Route` t2
|
||||||
|
where t1.show_in_website = 1 and (item_group in (%s)
|
||||||
|
or t1.name in (select parent from `tabWebsite Item Group` where item_group in (%s)))
|
||||||
|
and t1.name = t2.docname and t2.ref_doctype='Item' """ % (child_groups, child_groups)
|
||||||
|
|
||||||
|
query += """order by t1.weightage desc, t1.modified desc limit %s, %s""" % (start, limit)
|
||||||
|
|
||||||
|
data = frappe.db.sql(query, {"product_group": product_group}, as_dict=1)
|
||||||
|
|
||||||
|
return [get_item_for_list_in_html(r) for r in data]
|
||||||
|
|
||||||
|
def get_child_groups(item_group_name):
|
||||||
|
item_group = frappe.get_doc("Item Group", item_group_name)
|
||||||
|
return frappe.db.sql("""select name
|
||||||
|
from `tabItem Group` where lft>=%(lft)s and rgt<=%(rgt)s
|
||||||
|
and show_in_website = 1""", {"lft": item_group.lft, "rgt": item_group.rgt})
|
||||||
|
|
||||||
|
def get_item_for_list_in_html(context):
|
||||||
|
return frappe.get_template("templates/includes/product_in_grid.html").render(context)
|
||||||
|
|
||||||
|
def get_group_item_count(item_group):
|
||||||
|
child_groups = ", ".join(['"' + i[0] + '"' for i in get_child_groups(item_group)])
|
||||||
|
return frappe.db.sql("""select count(*) from `tabItem`
|
||||||
|
where docstatus = 0 and show_in_website = 1
|
||||||
|
and (item_group in (%s)
|
||||||
|
or name in (select parent from `tabWebsite Item Group`
|
||||||
|
where item_group in (%s))) """ % (child_groups, child_groups))[0][0]
|
||||||
|
|
||||||
|
|
||||||
def get_parent_item_groups(item_group_name):
|
def get_parent_item_groups(item_group_name):
|
||||||
item_group = frappe.get_doc("Item Group", item_group_name)
|
item_group = frappe.get_doc("Item Group", item_group_name)
|
||||||
return frappe.db.sql("""select name, page_name from `tabItem Group`
|
return frappe.db.sql("""select name, page_name from `tabItem Group`
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe
|
import frappe
|
||||||
from frappe.utils import cint, cstr, filter_strip_join
|
from frappe.utils import cstr, filter_strip_join
|
||||||
from frappe.website.website_generator import WebsiteGenerator
|
from frappe.website.website_generator import WebsiteGenerator
|
||||||
|
|
||||||
class SalesPartner(WebsiteGenerator):
|
class SalesPartner(WebsiteGenerator):
|
||||||
@@ -25,3 +25,21 @@ class SalesPartner(WebsiteGenerator):
|
|||||||
|
|
||||||
def get_page_title(self):
|
def get_page_title(self):
|
||||||
return self.partner_name
|
return self.partner_name
|
||||||
|
|
||||||
|
def get_context(self, context):
|
||||||
|
address = frappe.db.get_value("Address",
|
||||||
|
{"sales_partner": self.name, "is_primary_address": 1},
|
||||||
|
"*", as_dict=True)
|
||||||
|
if address:
|
||||||
|
city_state = ", ".join(filter(None, [address.city, address.state]))
|
||||||
|
address_rows = [address.address_line1, address.address_line2,
|
||||||
|
city_state, address.pincode, address.country]
|
||||||
|
|
||||||
|
context.update({
|
||||||
|
"email": address.email_id,
|
||||||
|
"partner_address": filter_strip_join(address_rows, "\n<br>"),
|
||||||
|
"phone": filter_strip_join(cstr(address.phone).split(","), "\n<br>")
|
||||||
|
})
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
|
|||||||
@@ -6,11 +6,14 @@ import frappe
|
|||||||
from frappe import msgprint, _
|
from frappe import msgprint, _
|
||||||
from frappe.utils import cstr, flt, getdate, now_datetime, formatdate
|
from frappe.utils import cstr, flt, getdate, now_datetime, formatdate
|
||||||
from frappe.website.website_generator import WebsiteGenerator
|
from frappe.website.website_generator import WebsiteGenerator
|
||||||
from erpnext.setup.doctype.item_group.item_group import invalidate_cache_for
|
from erpnext.setup.doctype.item_group.item_group import invalidate_cache_for, get_parent_item_groups
|
||||||
from frappe.website.render import clear_cache
|
from frappe.website.render import clear_cache
|
||||||
|
from frappe.website.doctype.website_slideshow.website_slideshow import get_slideshow
|
||||||
|
|
||||||
class WarehouseNotSet(frappe.ValidationError): pass
|
class WarehouseNotSet(frappe.ValidationError): pass
|
||||||
|
|
||||||
|
condition_field = "show_in_website"
|
||||||
|
|
||||||
class Item(WebsiteGenerator):
|
class Item(WebsiteGenerator):
|
||||||
def onload(self):
|
def onload(self):
|
||||||
super(Item, self).onload()
|
super(Item, self).onload()
|
||||||
@@ -55,6 +58,14 @@ class Item(WebsiteGenerator):
|
|||||||
self.validate_name_with_item_group()
|
self.validate_name_with_item_group()
|
||||||
self.update_item_price()
|
self.update_item_price()
|
||||||
|
|
||||||
|
def get_context(self, context):
|
||||||
|
context["parent_groups"] = get_parent_item_groups(self.item_group) + \
|
||||||
|
[{"name": self.name}]
|
||||||
|
if self.slideshow:
|
||||||
|
context.update(get_slideshow(self))
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def check_warehouse_is_set_for_stock_item(self):
|
def check_warehouse_is_set_for_stock_item(self):
|
||||||
if self.is_stock_item=="Yes" and not self.default_warehouse:
|
if self.is_stock_item=="Yes" and not self.default_warehouse:
|
||||||
frappe.msgprint(_("Default Warehouse is mandatory for stock Item."),
|
frappe.msgprint(_("Default Warehouse is mandatory for stock Item."),
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
|
||||||
# License: GNU General Public License v3. See license.txt
|
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import frappe
|
|
||||||
from erpnext.setup.doctype.item_group.item_group import get_parent_item_groups
|
|
||||||
from frappe.website.doctype.website_slideshow.website_slideshow import get_slideshow
|
|
||||||
|
|
||||||
doctype = "Item"
|
|
||||||
condition_field = "show_in_website"
|
|
||||||
|
|
||||||
def get_context(context):
|
|
||||||
item_context = context.doc.as_dict()
|
|
||||||
item_context["parent_groups"] = get_parent_item_groups(context.doc.item_group) + \
|
|
||||||
[{"name":context.doc.name}]
|
|
||||||
if context.doc.slideshow:
|
|
||||||
item_context.update(get_slideshow(context.doc))
|
|
||||||
|
|
||||||
return item_context
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
|
||||||
# License: GNU General Public License v3. See license.txt
|
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import frappe
|
|
||||||
from frappe.website.doctype.website_slideshow.website_slideshow import get_slideshow
|
|
||||||
from erpnext.setup.doctype.item_group.item_group import get_parent_item_groups
|
|
||||||
|
|
||||||
doctype = "Item Group"
|
|
||||||
condition_field = "show_in_website"
|
|
||||||
|
|
||||||
def get_context(context):
|
|
||||||
item_group_context = context.doc.as_dict()
|
|
||||||
item_group_context.update({
|
|
||||||
"items": get_product_list_for_group(product_group = context.docname, limit=100),
|
|
||||||
"parent_groups": get_parent_item_groups(context.docname),
|
|
||||||
"title": context.docname
|
|
||||||
})
|
|
||||||
|
|
||||||
if context.doc.slideshow:
|
|
||||||
item_group_context.update(get_slideshow(context.doc))
|
|
||||||
|
|
||||||
return item_group_context
|
|
||||||
|
|
||||||
def get_product_list_for_group(product_group=None, start=0, limit=10):
|
|
||||||
child_groups = ", ".join(['"' + i[0] + '"' for i in get_child_groups(product_group)])
|
|
||||||
|
|
||||||
# base query
|
|
||||||
query = """select t1.name, t1.item_name, t1.page_name, t1.website_image, t1.item_group,
|
|
||||||
t1.web_long_description as website_description, t2.name as route
|
|
||||||
from `tabItem` t1, `tabWebsite Route` t2
|
|
||||||
where t1.show_in_website = 1 and (item_group in (%s)
|
|
||||||
or t1.name in (select parent from `tabWebsite Item Group` where item_group in (%s)))
|
|
||||||
and t1.name = t2.docname and t2.ref_doctype='Item' """ % (child_groups, child_groups)
|
|
||||||
|
|
||||||
query += """order by t1.weightage desc, t1.modified desc limit %s, %s""" % (start, limit)
|
|
||||||
|
|
||||||
data = frappe.db.sql(query, {"product_group": product_group}, as_dict=1)
|
|
||||||
|
|
||||||
return [get_item_for_list_in_html(r) for r in data]
|
|
||||||
|
|
||||||
def get_child_groups(item_group_name):
|
|
||||||
item_group = frappe.get_doc("Item Group", item_group_name)
|
|
||||||
return frappe.db.sql("""select name
|
|
||||||
from `tabItem Group` where lft>=%(lft)s and rgt<=%(rgt)s
|
|
||||||
and show_in_website = 1""", {"lft": item_group.lft, "rgt": item_group.rgt})
|
|
||||||
|
|
||||||
def get_item_for_list_in_html(context):
|
|
||||||
return frappe.get_template("templates/includes/product_in_grid.html").render(context)
|
|
||||||
|
|
||||||
def get_group_item_count(item_group):
|
|
||||||
child_groups = ", ".join(['"' + i[0] + '"' for i in get_child_groups(item_group)])
|
|
||||||
return frappe.db.sql("""select count(*) from `tabItem`
|
|
||||||
where docstatus = 0 and show_in_website = 1
|
|
||||||
and (item_group in (%s)
|
|
||||||
or name in (select parent from `tabWebsite Item Group`
|
|
||||||
where item_group in (%s))) """ % (child_groups, child_groups))[0][0]
|
|
||||||
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
|
||||||
# License: GNU General Public License v3. See license.txt
|
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
import frappe
|
|
||||||
from frappe.utils import filter_strip_join
|
|
||||||
|
|
||||||
doctype = "Sales Partner"
|
|
||||||
condition_field = "show_in_website"
|
|
||||||
|
|
||||||
def get_context(context):
|
|
||||||
partner_context = context.doc.as_dict()
|
|
||||||
|
|
||||||
address = frappe.db.get_value("Address",
|
|
||||||
{"sales_partner": context.doc.name, "is_primary_address": 1},
|
|
||||||
"*", as_dict=True)
|
|
||||||
if address:
|
|
||||||
city_state = ", ".join(filter(None, [address.city, address.state]))
|
|
||||||
address_rows = [address.address_line1, address.address_line2,
|
|
||||||
city_state, address.pincode, address.country]
|
|
||||||
|
|
||||||
partner_context.update({
|
|
||||||
"email": address.email_id,
|
|
||||||
"partner_address": filter_strip_join(address_rows, "\n<br>"),
|
|
||||||
"phone": filter_strip_join(cstr(address.phone).split(","), "\n<br>")
|
|
||||||
})
|
|
||||||
|
|
||||||
return partner_context
|
|
||||||
Reference in New Issue
Block a user