diff --git a/accounts/doctype/pos_setting/pos_setting.js b/accounts/doctype/pos_setting/pos_setting.js index 18f555b919..641b3ef1cf 100755 --- a/accounts/doctype/pos_setting/pos_setting.js +++ b/accounts/doctype/pos_setting/pos_setting.js @@ -70,5 +70,5 @@ cur_frm.fields_dict["expense_account"].get_query = function(doc) { } cur_frm.fields_dict.user.get_query = function(doc,cdt,cdn) { - return{ query:"controllers.queries.profile_query"} + return{ query:"core.doctype.profile.profile.profile_query"} } diff --git a/accounts/doctype/sales_invoice/sales_invoice.js b/accounts/doctype/sales_invoice/sales_invoice.js index 109d9f8a07..0c8fc3714c 100644 --- a/accounts/doctype/sales_invoice/sales_invoice.js +++ b/accounts/doctype/sales_invoice/sales_invoice.js @@ -80,7 +80,6 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte source_doctype: "Delivery Note", get_query: function() { var filters = { - docstatus: 1, company: cur_frm.doc.company }; if(cur_frm.doc.customer) filters["customer"] = cur_frm.doc.customer; diff --git a/buying/doctype/purchase_common/purchase_common.js b/buying/doctype/purchase_common/purchase_common.js index 67ba33c245..5785b1a9d5 100644 --- a/buying/doctype/purchase_common/purchase_common.js +++ b/buying/doctype/purchase_common/purchase_common.js @@ -333,10 +333,10 @@ erpnext.buying.BuyingController = erpnext.TransactionController.extend({ // other charges added/deducted if(tax_count) { this.frm.doc.other_charges_added = wn.utils.sum($.map(this.frm.tax_doclist, - function(tax) { return tax.add_deduct_tax == "Add" ? tax.tax_amount : 0.0; })); + function(tax) { return (tax.add_deduct_tax == "Add" && in_list(["Valuation and Total", "Total"], tax.category)) ? tax.tax_amount : 0.0; })); this.frm.doc.other_charges_deducted = wn.utils.sum($.map(this.frm.tax_doclist, - function(tax) { return tax.add_deduct_tax == "Deduct" ? tax.tax_amount : 0.0; })); + function(tax) { return (tax.add_deduct_tax == "Deduct" && in_list(["Valuation and Total", "Total"], tax.category)) ? tax.tax_amount : 0.0; })); wn.model.round_floats_in(this.frm.doc, ["other_charges_added", "other_charges_deducted"]); diff --git a/buying/doctype/supplier/supplier.py b/buying/doctype/supplier/supplier.py index c646fdbdb5..75b2e03762 100644 --- a/buying/doctype/supplier/supplier.py +++ b/buying/doctype/supplier/supplier.py @@ -18,9 +18,6 @@ class DocType(TransactionBase): self.doc = doc self.doclist = doclist - def onload(self): - self.add_communication_list() - def autoname(self): supp_master_name = webnotes.defaults.get_global_default('supp_master_name') diff --git a/buying/doctype/supplier/supplier.txt b/buying/doctype/supplier/supplier.txt index 8fa70679f9..50202dcae2 100644 --- a/buying/doctype/supplier/supplier.txt +++ b/buying/doctype/supplier/supplier.txt @@ -2,7 +2,7 @@ { "creation": "2013-01-10 16:34:11", "docstatus": 0, - "modified": "2013-08-08 14:22:08", + "modified": "2013-09-02 16:25:44", "modified_by": "Administrator", "owner": "Administrator" }, @@ -204,6 +204,14 @@ "oldfieldname": "website", "oldfieldtype": "Data" }, + { + "doctype": "DocField", + "fieldname": "communications", + "fieldtype": "Table", + "hidden": 1, + "label": "Communications", + "options": "Communication" + }, { "cancel": 0, "create": 0, diff --git a/controllers/queries.py b/controllers/queries.py index 0e23d5cd1e..02c992b729 100644 --- a/controllers/queries.py +++ b/controllers/queries.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals import webnotes +from webnotes.widgets.reportview import get_match_cond def get_filters_cond(doctype, filters, conditions): if filters: @@ -22,34 +23,6 @@ def get_filters_cond(doctype, filters, conditions): cond = '' return cond -def get_match_cond(doctype, searchfield = 'name'): - from webnotes.widgets.reportview import build_match_conditions - cond = build_match_conditions(doctype) - - if cond: - cond = ' and ' + cond - else: - cond = '' - return cond - - # searches for enabled profiles -def profile_query(doctype, txt, searchfield, start, page_len, filters): - return webnotes.conn.sql("""select name, concat_ws(' ', first_name, middle_name, last_name) - from `tabProfile` - where ifnull(enabled, 0)=1 - and docstatus < 2 - and name not in ('Administrator', 'Guest') - and (%(key)s like "%(txt)s" - or concat_ws(' ', first_name, middle_name, last_name) like "%(txt)s") - %(mcond)s - order by - case when name like "%(txt)s" then 0 else 1 end, - case when concat_ws(' ', first_name, middle_name, last_name) like "%(txt)s" - then 0 else 1 end, - name asc - limit %(start)s, %(page_len)s""" % {'key': searchfield, 'txt': "%%%s%%" % txt, - 'mcond':get_match_cond(doctype, searchfield), 'start': start, 'page_len': page_len}) - # searches for active employees def employee_query(doctype, txt, searchfield, start, page_len, filters): return webnotes.conn.sql("""select name, employee_name from `tabEmployee` @@ -196,10 +169,12 @@ def get_price_list_currency(doctype, txt, searchfield, start, page_len, filters) def get_delivery_notes_to_be_billed(doctype, txt, searchfield, start, page_len, filters): return webnotes.conn.sql("""select `tabDelivery Note`.name, `tabDelivery Note`.customer_name from `tabDelivery Note` - where `tabDelivery Note`.`%(key)s` like %(txt)s %(fcond)s and + where `tabDelivery Note`.`%(key)s` like %(txt)s and + `tabDelivery Note`.docstatus = 1 %(fcond)s and (ifnull((select sum(qty) from `tabDelivery Note Item` where `tabDelivery Note Item`.parent=`tabDelivery Note`.name), 0) > ifnull((select sum(qty) from `tabSales Invoice Item` where + `tabSales Invoice Item`.docstatus = 1 and `tabSales Invoice Item`.delivery_note=`tabDelivery Note`.name), 0)) %(mcond)s order by `tabDelivery Note`.`%(key)s` asc limit %(start)s, %(page_len)s""" % { diff --git a/controllers/selling_controller.py b/controllers/selling_controller.py index a13d747279..5605ccf3a2 100644 --- a/controllers/selling_controller.py +++ b/controllers/selling_controller.py @@ -99,6 +99,8 @@ class SellingController(StockController): for item in self.doclist.get({"parentfield": self.fname}): if item.item_code in self.stock_items or \ (item_sales_bom and item_sales_bom.get(item.item_code)): + + buying_amount = 0 if item.item_code in self.stock_items: buying_amount = get_buying_amount(self.doc.doctype, self.doc.name, item.name, stock_ledger_entries.get((item.item_code, @@ -108,9 +110,10 @@ class SellingController(StockController): self.doc.doctype, self.doc.name, item.name, stock_ledger_entries, item_sales_bom) - item.buying_amount = buying_amount >= 0.01 and buying_amount or 0 - webnotes.conn.set_value(item.doctype, item.name, "buying_amount", - item.buying_amount) + # buying_amount >= 0.01 so that gl entry doesn't get created for such small amounts + item.buying_amount = buying_amount >= 0.01 and buying_amount or 0 + webnotes.conn.set_value(item.doctype, item.name, "buying_amount", + item.buying_amount) def check_expense_account(self, item): if item.buying_amount and not item.expense_account: diff --git a/docs/docs.dev.api.md b/docs/dev/docs.dev.api.md similarity index 100% rename from docs/docs.dev.api.md rename to docs/dev/docs.dev.api.md diff --git a/docs/dev/docs.dev.client_script.md b/docs/dev/docs.dev.client_script.md new file mode 100644 index 0000000000..fc82f9d5ff --- /dev/null +++ b/docs/dev/docs.dev.client_script.md @@ -0,0 +1,10 @@ +--- +{ + "_label": "Client Scripts: Custoimzing ERPNext" + +} +--- + + + + diff --git a/docs/docs.dev.docs.md b/docs/dev/docs.dev.docs.md similarity index 100% rename from docs/docs.dev.docs.md rename to docs/dev/docs.dev.docs.md diff --git a/docs/docs.dev.install.md b/docs/dev/docs.dev.install.md similarity index 100% rename from docs/docs.dev.install.md rename to docs/dev/docs.dev.install.md diff --git a/docs/docs.dev.install.restore_from_backup.md b/docs/dev/docs.dev.install.restore_from_backup.md similarity index 100% rename from docs/docs.dev.install.restore_from_backup.md rename to docs/dev/docs.dev.install.restore_from_backup.md diff --git a/docs/docs.dev.md b/docs/dev/docs.dev.md similarity index 96% rename from docs/docs.dev.md rename to docs/dev/docs.dev.md index 3f645d84fe..285f1767c7 100644 --- a/docs/docs.dev.md +++ b/docs/dev/docs.dev.md @@ -5,8 +5,9 @@ "docs.dev.install", "docs.dev.quickstart", "docs.dev.framework", - "docs.dev.api", "docs.dev.modules", + "docs.dev.client_script", + "docs.dev.api", "docs.dev.translate", "docs.dev.docs" ] diff --git a/docs/docs.dev.modules.md b/docs/dev/docs.dev.modules.md similarity index 100% rename from docs/docs.dev.modules.md rename to docs/dev/docs.dev.modules.md diff --git a/docs/docs.dev.translate.md b/docs/dev/docs.dev.translate.md similarity index 100% rename from docs/docs.dev.translate.md rename to docs/dev/docs.dev.translate.md diff --git a/docs/templates/docs.html b/docs/templates/docs.html new file mode 100644 index 0000000000..ef3cf8e9f8 --- /dev/null +++ b/docs/templates/docs.html @@ -0,0 +1,51 @@ +{% extends "lib/core/doctype/documentation_tool/docs.html" %} + +{% block navbar %} + +{% endblock %} + +{% block footer %} +
+ +{% endblock %} \ No newline at end of file diff --git a/docs/docs.user.accounts.closing.md b/docs/user/accounts/docs.user.accounts.closing.md similarity index 100% rename from docs/docs.user.accounts.closing.md rename to docs/user/accounts/docs.user.accounts.closing.md diff --git a/docs/docs.user.accounts.journal_voucher.md b/docs/user/accounts/docs.user.accounts.journal_voucher.md similarity index 100% rename from docs/docs.user.accounts.journal_voucher.md rename to docs/user/accounts/docs.user.accounts.journal_voucher.md diff --git a/docs/docs.user.accounts.md b/docs/user/accounts/docs.user.accounts.md similarity index 100% rename from docs/docs.user.accounts.md rename to docs/user/accounts/docs.user.accounts.md diff --git a/docs/docs.user.accounts.payments.md b/docs/user/accounts/docs.user.accounts.payments.md similarity index 100% rename from docs/docs.user.accounts.payments.md rename to docs/user/accounts/docs.user.accounts.payments.md diff --git a/docs/docs.user.accounts.pos.md b/docs/user/accounts/docs.user.accounts.pos.md similarity index 100% rename from docs/docs.user.accounts.pos.md rename to docs/user/accounts/docs.user.accounts.pos.md diff --git a/docs/docs.user.accounts.purchase_invoice.md b/docs/user/accounts/docs.user.accounts.purchase_invoice.md similarity index 100% rename from docs/docs.user.accounts.purchase_invoice.md rename to docs/user/accounts/docs.user.accounts.purchase_invoice.md diff --git a/docs/docs.user.accounts.reports.md b/docs/user/accounts/docs.user.accounts.reports.md similarity index 100% rename from docs/docs.user.accounts.reports.md rename to docs/user/accounts/docs.user.accounts.reports.md diff --git a/docs/docs.user.accounts.returns.md b/docs/user/accounts/docs.user.accounts.returns.md similarity index 100% rename from docs/docs.user.accounts.returns.md rename to docs/user/accounts/docs.user.accounts.returns.md diff --git a/docs/docs.user.accounts.sales_invoice.md b/docs/user/accounts/docs.user.accounts.sales_invoice.md similarity index 100% rename from docs/docs.user.accounts.sales_invoice.md rename to docs/user/accounts/docs.user.accounts.sales_invoice.md diff --git a/docs/docs.user.buying.material_request.md b/docs/user/buying/docs.user.buying.material_request.md similarity index 100% rename from docs/docs.user.buying.material_request.md rename to docs/user/buying/docs.user.buying.material_request.md diff --git a/docs/docs.user.buying.md b/docs/user/buying/docs.user.buying.md similarity index 100% rename from docs/docs.user.buying.md rename to docs/user/buying/docs.user.buying.md diff --git a/docs/docs.user.buying.purchase_order.md b/docs/user/buying/docs.user.buying.purchase_order.md similarity index 100% rename from docs/docs.user.buying.purchase_order.md rename to docs/user/buying/docs.user.buying.purchase_order.md diff --git a/docs/docs.user.buying.supplier.md b/docs/user/buying/docs.user.buying.supplier.md similarity index 100% rename from docs/docs.user.buying.supplier.md rename to docs/user/buying/docs.user.buying.supplier.md diff --git a/docs/docs.user.buying.supplier_quotation.md b/docs/user/buying/docs.user.buying.supplier_quotation.md similarity index 100% rename from docs/docs.user.buying.supplier_quotation.md rename to docs/user/buying/docs.user.buying.supplier_quotation.md diff --git a/docs/docs.user.customize.custom_field.md b/docs/user/customize/docs.user.customize.custom_field.md similarity index 100% rename from docs/docs.user.customize.custom_field.md rename to docs/user/customize/docs.user.customize.custom_field.md diff --git a/docs/docs.user.customize.custom_form.md b/docs/user/customize/docs.user.customize.custom_form.md similarity index 100% rename from docs/docs.user.customize.custom_form.md rename to docs/user/customize/docs.user.customize.custom_form.md diff --git a/docs/docs.user.customize.md b/docs/user/customize/docs.user.customize.md similarity index 100% rename from docs/docs.user.customize.md rename to docs/user/customize/docs.user.customize.md diff --git a/docs/docs.user.customize.modules.md b/docs/user/customize/docs.user.customize.modules.md similarity index 100% rename from docs/docs.user.customize.modules.md rename to docs/user/customize/docs.user.customize.modules.md diff --git a/docs/docs.user.customize.print_format.md b/docs/user/customize/docs.user.customize.print_format.md similarity index 100% rename from docs/docs.user.customize.print_format.md rename to docs/user/customize/docs.user.customize.print_format.md diff --git a/docs/docs.user.help.md b/docs/user/docs.user.help.md similarity index 100% rename from docs/docs.user.help.md rename to docs/user/docs.user.help.md diff --git a/docs/docs.user.md b/docs/user/docs.user.md similarity index 100% rename from docs/docs.user.md rename to docs/user/docs.user.md diff --git a/docs/docs.user.projects.md b/docs/user/docs.user.projects.md similarity index 100% rename from docs/docs.user.projects.md rename to docs/user/docs.user.projects.md diff --git a/docs/docs.user.reports.builder.md b/docs/user/docs.user.reports.builder.md similarity index 100% rename from docs/docs.user.reports.builder.md rename to docs/user/docs.user.reports.builder.md diff --git a/docs/docs.user.reports.md b/docs/user/docs.user.reports.md similarity index 100% rename from docs/docs.user.reports.md rename to docs/user/docs.user.reports.md diff --git a/docs/docs.user.hr.appraisal.md b/docs/user/hr/docs.user.hr.appraisal.md similarity index 100% rename from docs/docs.user.hr.appraisal.md rename to docs/user/hr/docs.user.hr.appraisal.md diff --git a/docs/docs.user.hr.employee.md b/docs/user/hr/docs.user.hr.employee.md similarity index 100% rename from docs/docs.user.hr.employee.md rename to docs/user/hr/docs.user.hr.employee.md diff --git a/docs/docs.user.hr.expense_claim.md b/docs/user/hr/docs.user.hr.expense_claim.md similarity index 100% rename from docs/docs.user.hr.expense_claim.md rename to docs/user/hr/docs.user.hr.expense_claim.md diff --git a/docs/docs.user.hr.leave.md b/docs/user/hr/docs.user.hr.leave.md similarity index 100% rename from docs/docs.user.hr.leave.md rename to docs/user/hr/docs.user.hr.leave.md diff --git a/docs/docs.user.hr.md b/docs/user/hr/docs.user.hr.md similarity index 100% rename from docs/docs.user.hr.md rename to docs/user/hr/docs.user.hr.md diff --git a/docs/docs.user.hr.payroll.md b/docs/user/hr/docs.user.hr.payroll.md similarity index 100% rename from docs/docs.user.hr.payroll.md rename to docs/user/hr/docs.user.hr.payroll.md diff --git a/docs/docs.user.hr.setup.md b/docs/user/hr/docs.user.hr.setup.md similarity index 100% rename from docs/docs.user.hr.setup.md rename to docs/user/hr/docs.user.hr.setup.md diff --git a/docs/docs.user.implement.concepts.md b/docs/user/intro/docs.user.implement.concepts.md similarity index 100% rename from docs/docs.user.implement.concepts.md rename to docs/user/intro/docs.user.implement.concepts.md diff --git a/docs/docs.user.implement.md b/docs/user/intro/docs.user.implement.md similarity index 100% rename from docs/docs.user.implement.md rename to docs/user/intro/docs.user.implement.md diff --git a/docs/docs.user.implement.strategy.md b/docs/user/intro/docs.user.implement.strategy.md similarity index 100% rename from docs/docs.user.implement.strategy.md rename to docs/user/intro/docs.user.implement.strategy.md diff --git a/docs/docs.user.intro.md b/docs/user/intro/docs.user.intro.md similarity index 100% rename from docs/docs.user.intro.md rename to docs/user/intro/docs.user.intro.md diff --git a/docs/docs.user.intro.open_source.md b/docs/user/intro/docs.user.intro.open_source.md similarity index 100% rename from docs/docs.user.intro.open_source.md rename to docs/user/intro/docs.user.intro.open_source.md diff --git a/docs/docs.user.intro.try.md b/docs/user/intro/docs.user.intro.try.md similarity index 100% rename from docs/docs.user.intro.try.md rename to docs/user/intro/docs.user.intro.try.md diff --git a/docs/docs.user.mfg.bom.md b/docs/user/mfg/docs.user.mfg.bom.md similarity index 100% rename from docs/docs.user.mfg.bom.md rename to docs/user/mfg/docs.user.mfg.bom.md diff --git a/docs/docs.user.mfg.md b/docs/user/mfg/docs.user.mfg.md similarity index 100% rename from docs/docs.user.mfg.md rename to docs/user/mfg/docs.user.mfg.md diff --git a/docs/docs.user.mfg.planning.md b/docs/user/mfg/docs.user.mfg.planning.md similarity index 100% rename from docs/docs.user.mfg.planning.md rename to docs/user/mfg/docs.user.mfg.planning.md diff --git a/docs/docs.user.mfg.production_order.md b/docs/user/mfg/docs.user.mfg.production_order.md similarity index 100% rename from docs/docs.user.mfg.production_order.md rename to docs/user/mfg/docs.user.mfg.production_order.md diff --git a/docs/docs.user.selling.customer.md b/docs/user/selling/docs.user.selling.customer.md similarity index 100% rename from docs/docs.user.selling.customer.md rename to docs/user/selling/docs.user.selling.customer.md diff --git a/docs/docs.user.selling.lead.md b/docs/user/selling/docs.user.selling.lead.md similarity index 100% rename from docs/docs.user.selling.lead.md rename to docs/user/selling/docs.user.selling.lead.md diff --git a/docs/docs.user.selling.md b/docs/user/selling/docs.user.selling.md similarity index 100% rename from docs/docs.user.selling.md rename to docs/user/selling/docs.user.selling.md diff --git a/docs/docs.user.selling.opportunity.md b/docs/user/selling/docs.user.selling.opportunity.md similarity index 100% rename from docs/docs.user.selling.opportunity.md rename to docs/user/selling/docs.user.selling.opportunity.md diff --git a/docs/docs.user.selling.quotation.md b/docs/user/selling/docs.user.selling.quotation.md similarity index 100% rename from docs/docs.user.selling.quotation.md rename to docs/user/selling/docs.user.selling.quotation.md diff --git a/docs/docs.user.selling.sales_order.md b/docs/user/selling/docs.user.selling.sales_order.md similarity index 100% rename from docs/docs.user.selling.sales_order.md rename to docs/user/selling/docs.user.selling.sales_order.md diff --git a/docs/docs.user.setup.accounting.md b/docs/user/setup/docs.user.setup.accounting.md similarity index 100% rename from docs/docs.user.setup.accounting.md rename to docs/user/setup/docs.user.setup.accounting.md diff --git a/docs/docs.user.setup.codification.md b/docs/user/setup/docs.user.setup.codification.md similarity index 100% rename from docs/docs.user.setup.codification.md rename to docs/user/setup/docs.user.setup.codification.md diff --git a/docs/docs.user.setup.cost_centers.md b/docs/user/setup/docs.user.setup.cost_centers.md similarity index 100% rename from docs/docs.user.setup.cost_centers.md rename to docs/user/setup/docs.user.setup.cost_centers.md diff --git a/docs/docs.user.setup.data_import.md b/docs/user/setup/docs.user.setup.data_import.md similarity index 100% rename from docs/docs.user.setup.data_import.md rename to docs/user/setup/docs.user.setup.data_import.md diff --git a/docs/docs.user.setup.email.md b/docs/user/setup/docs.user.setup.email.md similarity index 100% rename from docs/docs.user.setup.email.md rename to docs/user/setup/docs.user.setup.email.md diff --git a/docs/docs.user.setup.first.md b/docs/user/setup/docs.user.setup.first.md similarity index 100% rename from docs/docs.user.setup.first.md rename to docs/user/setup/docs.user.setup.first.md diff --git a/docs/docs.user.setup.letter_head.md b/docs/user/setup/docs.user.setup.letter_head.md similarity index 100% rename from docs/docs.user.setup.letter_head.md rename to docs/user/setup/docs.user.setup.letter_head.md diff --git a/docs/docs.user.setup.masters.md b/docs/user/setup/docs.user.setup.masters.md similarity index 100% rename from docs/docs.user.setup.masters.md rename to docs/user/setup/docs.user.setup.masters.md diff --git a/docs/docs.user.setup.md b/docs/user/setup/docs.user.setup.md similarity index 100% rename from docs/docs.user.setup.md rename to docs/user/setup/docs.user.setup.md diff --git a/docs/docs.user.setup.opening.md b/docs/user/setup/docs.user.setup.opening.md similarity index 100% rename from docs/docs.user.setup.opening.md rename to docs/user/setup/docs.user.setup.opening.md diff --git a/docs/docs.user.setup.permissions.md b/docs/user/setup/docs.user.setup.permissions.md similarity index 100% rename from docs/docs.user.setup.permissions.md rename to docs/user/setup/docs.user.setup.permissions.md diff --git a/docs/docs.user.setup.price_list.md b/docs/user/setup/docs.user.setup.price_list.md similarity index 100% rename from docs/docs.user.setup.price_list.md rename to docs/user/setup/docs.user.setup.price_list.md diff --git a/docs/docs.user.setup.series.md b/docs/user/setup/docs.user.setup.series.md similarity index 100% rename from docs/docs.user.setup.series.md rename to docs/user/setup/docs.user.setup.series.md diff --git a/docs/docs.user.setup.taxes.md b/docs/user/setup/docs.user.setup.taxes.md similarity index 100% rename from docs/docs.user.setup.taxes.md rename to docs/user/setup/docs.user.setup.taxes.md diff --git a/docs/docs.user.stock.delivery_note.md b/docs/user/stock/docs.user.stock.delivery_note.md similarity index 100% rename from docs/docs.user.stock.delivery_note.md rename to docs/user/stock/docs.user.stock.delivery_note.md diff --git a/docs/docs.user.stock.item.md b/docs/user/stock/docs.user.stock.item.md similarity index 100% rename from docs/docs.user.stock.item.md rename to docs/user/stock/docs.user.stock.item.md diff --git a/docs/docs.user.stock.md b/docs/user/stock/docs.user.stock.md similarity index 100% rename from docs/docs.user.stock.md rename to docs/user/stock/docs.user.stock.md diff --git a/docs/docs.user.stock.purchase_receipt.md b/docs/user/stock/docs.user.stock.purchase_receipt.md similarity index 100% rename from docs/docs.user.stock.purchase_receipt.md rename to docs/user/stock/docs.user.stock.purchase_receipt.md diff --git a/docs/docs.user.stock.serialized.md b/docs/user/stock/docs.user.stock.serialized.md similarity index 100% rename from docs/docs.user.stock.serialized.md rename to docs/user/stock/docs.user.stock.serialized.md diff --git a/docs/docs.user.stock.stock_entry.md b/docs/user/stock/docs.user.stock.stock_entry.md similarity index 100% rename from docs/docs.user.stock.stock_entry.md rename to docs/user/stock/docs.user.stock.stock_entry.md diff --git a/docs/docs.user.stock.sub_contracting.md b/docs/user/stock/docs.user.stock.sub_contracting.md similarity index 100% rename from docs/docs.user.stock.sub_contracting.md rename to docs/user/stock/docs.user.stock.sub_contracting.md diff --git a/docs/docs.user.stock.valuation.md b/docs/user/stock/docs.user.stock.valuation.md similarity index 100% rename from docs/docs.user.stock.valuation.md rename to docs/user/stock/docs.user.stock.valuation.md diff --git a/docs/docs.user.support.customer_issue.md b/docs/user/support/docs.user.support.customer_issue.md similarity index 100% rename from docs/docs.user.support.customer_issue.md rename to docs/user/support/docs.user.support.customer_issue.md diff --git a/docs/docs.user.support.maintenance_schedule.md b/docs/user/support/docs.user.support.maintenance_schedule.md similarity index 100% rename from docs/docs.user.support.maintenance_schedule.md rename to docs/user/support/docs.user.support.maintenance_schedule.md diff --git a/docs/docs.user.support.maintenance_visit.md b/docs/user/support/docs.user.support.maintenance_visit.md similarity index 100% rename from docs/docs.user.support.maintenance_visit.md rename to docs/user/support/docs.user.support.maintenance_visit.md diff --git a/docs/docs.user.support.md b/docs/user/support/docs.user.support.md similarity index 100% rename from docs/docs.user.support.md rename to docs/user/support/docs.user.support.md diff --git a/docs/docs.user.support.support_ticket.md b/docs/user/support/docs.user.support.support_ticket.md similarity index 100% rename from docs/docs.user.support.support_ticket.md rename to docs/user/support/docs.user.support.support_ticket.md diff --git a/docs/docs.user.tools.calendar.md b/docs/user/tools/docs.user.tools.calendar.md similarity index 100% rename from docs/docs.user.tools.calendar.md rename to docs/user/tools/docs.user.tools.calendar.md diff --git a/docs/docs.user.tools.form_tools.md b/docs/user/tools/docs.user.tools.form_tools.md similarity index 100% rename from docs/docs.user.tools.form_tools.md rename to docs/user/tools/docs.user.tools.form_tools.md diff --git a/docs/docs.user.tools.md b/docs/user/tools/docs.user.tools.md similarity index 100% rename from docs/docs.user.tools.md rename to docs/user/tools/docs.user.tools.md diff --git a/docs/docs.user.tools.messages.md b/docs/user/tools/docs.user.tools.messages.md similarity index 100% rename from docs/docs.user.tools.messages.md rename to docs/user/tools/docs.user.tools.messages.md diff --git a/docs/docs.user.tools.notes.md b/docs/user/tools/docs.user.tools.notes.md similarity index 100% rename from docs/docs.user.tools.notes.md rename to docs/user/tools/docs.user.tools.notes.md diff --git a/docs/docs.user.tools.todo.md b/docs/user/tools/docs.user.tools.todo.md similarity index 100% rename from docs/docs.user.tools.todo.md rename to docs/user/tools/docs.user.tools.todo.md diff --git a/docs/docs.user.website.blog.md b/docs/user/website/docs.user.website.blog.md similarity index 100% rename from docs/docs.user.website.blog.md rename to docs/user/website/docs.user.website.blog.md diff --git a/docs/docs.user.website.md b/docs/user/website/docs.user.website.md similarity index 100% rename from docs/docs.user.website.md rename to docs/user/website/docs.user.website.md diff --git a/docs/docs.user.website.setup.md b/docs/user/website/docs.user.website.setup.md similarity index 100% rename from docs/docs.user.website.setup.md rename to docs/user/website/docs.user.website.setup.md diff --git a/docs/docs.user.website.style.md b/docs/user/website/docs.user.website.style.md similarity index 100% rename from docs/docs.user.website.style.md rename to docs/user/website/docs.user.website.style.md diff --git a/docs/docs.user.website.web_page.md b/docs/user/website/docs.user.website.web_page.md similarity index 100% rename from docs/docs.user.website.web_page.md rename to docs/user/website/docs.user.website.web_page.md diff --git a/hr/doctype/employee/employee.js b/hr/doctype/employee/employee.js index 9ee7c618e6..05aec3efa3 100644 --- a/hr/doctype/employee/employee.js +++ b/hr/doctype/employee/employee.js @@ -6,7 +6,7 @@ erpnext.hr.EmployeeController = wn.ui.form.Controller.extend({ setup: function() { this.setup_leave_approver_select(); this.frm.fields_dict.user_id.get_query = function(doc,cdt,cdn) { - return { query:"controllers.queries.profile_query"} } + return { query:"core.doctype.profile.profile.profile_query"} } this.frm.fields_dict.reports_to.get_query = function(doc,cdt,cdn) { return{ query:"controllers.queries.employee_query"} } }, diff --git a/hr/doctype/job_applicant/get_job_applications.py b/hr/doctype/job_applicant/get_job_applications.py index 9bec43e5e8..2e01328915 100644 --- a/hr/doctype/job_applicant/get_job_applications.py +++ b/hr/doctype/job_applicant/get_job_applications.py @@ -37,7 +37,7 @@ class JobsMailbox(POP3Mailbox): mail.save_attachments_in_doc(applicant.doc) make(content=mail.content, sender=mail.from_email, - doctype="Job Applicant", name=applicant.doc.name, set_lead=False) + doctype="Job Applicant", name=applicant.doc.name) def get_job_applications(): if cint(webnotes.conn.get_value('Jobs Email Settings', None, 'extract_emails')): diff --git a/hr/doctype/job_applicant/job_applicant.js b/hr/doctype/job_applicant/job_applicant.js index 9aff605764..f82da11f07 100644 --- a/hr/doctype/job_applicant/job_applicant.js +++ b/hr/doctype/job_applicant/job_applicant.js @@ -16,7 +16,7 @@ cur_frm.cscript = { }, make_listing: function(doc) { cur_frm.communication_view = new wn.views.CommunicationList({ - list: wn.model.get("Communication", {"job_applicant": doc.name}), + list: wn.model.get("Communication", {"parent": doc.name, "parenttype": "Job Applicant"}), parent: cur_frm.fields_dict['thread_html'].wrapper, doc: doc, recipients: doc.email_id diff --git a/hr/doctype/job_applicant/job_applicant.py b/hr/doctype/job_applicant/job_applicant.py index e9b12b0f78..04b6da9568 100644 --- a/hr/doctype/job_applicant/job_applicant.py +++ b/hr/doctype/job_applicant/job_applicant.py @@ -11,9 +11,6 @@ class DocType(TransactionBase): def __init__(self, d, dl): self.doc, self.doclist = d, dl - def onload(self): - self.add_communication_list() - def get_sender(self, comm): return webnotes.conn.get_value('Jobs Email Settings',None,'email_id') diff --git a/hr/doctype/job_applicant/job_applicant.txt b/hr/doctype/job_applicant/job_applicant.txt index ebf95f68bb..62b1d807bc 100644 --- a/hr/doctype/job_applicant/job_applicant.txt +++ b/hr/doctype/job_applicant/job_applicant.txt @@ -2,7 +2,7 @@ { "creation": "2013-01-29 19:25:37", "docstatus": 0, - "modified": "2013-07-05 14:43:11", + "modified": "2013-09-02 16:26:23", "modified_by": "Administrator", "owner": "Administrator" }, @@ -89,6 +89,14 @@ "fieldtype": "HTML", "label": "Thread HTML" }, + { + "doctype": "DocField", + "fieldname": "communications", + "fieldtype": "Table", + "hidden": 1, + "label": "Communications", + "options": "Communication" + }, { "doctype": "DocPerm" } diff --git a/patches/patch_list.py b/patches/patch_list.py index 1d382a56bd..320614a23d 100644 --- a/patches/patch_list.py +++ b/patches/patch_list.py @@ -257,4 +257,6 @@ patch_list = [ "execute:webnotes.reload_doc('accounts', 'Print Format', 'POS Invoice') # 2013-08-16", "patches.august_2013.p06_fix_sle_against_stock_entry", "execute:webnotes.bean('Style Settings').save() #2013-08-20", + "patches.september_2013.p01_fix_buying_amount_gl_entries", + "patches.september_2013.p01_update_communication", ] \ No newline at end of file diff --git a/patches/september_2013/__init__.py b/patches/september_2013/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/patches/september_2013/p01_fix_buying_amount_gl_entries.py b/patches/september_2013/p01_fix_buying_amount_gl_entries.py new file mode 100644 index 0000000000..369a2914f1 --- /dev/null +++ b/patches/september_2013/p01_fix_buying_amount_gl_entries.py @@ -0,0 +1,66 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import webnotes +import webnotes.defaults +from webnotes.utils import cint + +def execute(): + if not cint(webnotes.defaults.get_global_default("auto_inventory_accounting")): + return + + # fix delivery note + for dn in webnotes.conn.sql_list("""select name from `tabDelivery Note` where docstatus=1 + and posting_date >= "2013-08-06" order by posting_date"""): + recreate_gl_entries("Delivery Note", dn, "delivery_note_details") + + # fix sales invoice + for si in webnotes.conn.sql_list("""select name from `tabSales Invoice` where docstatus=1 + and update_stock=1 and posting_date >= "2013-08-06" order by posting_date"""): + recreate_gl_entries("Sales Invoice", si, "entries") + +def recreate_gl_entries(doctype, name, parentfield): + # calculate buying amount and make gl entries + bean = webnotes.bean(doctype, name) + bean.run_method("set_buying_amount") + + company_values = webnotes.conn.get_value("Company", bean.doc.company, ["default_expense_account", + "stock_adjustment_account", "cost_center", "stock_adjustment_cost_center"]) + + # update missing expense account and cost center + for item in bean.doclist.get({"parentfield": parentfield}): + if item.buying_amount and not validate_item_values(item, bean.doc.company): + res = webnotes.conn.sql("""select expense_account, cost_center + from `tab%s` child where docstatus=1 and item_code=%s and + ifnull(expense_account, '')!='' and ifnull(cost_center, '')!='' and + (select company from `tabAccount` ac where ac.name=child.expense_account)=%s and + (select company from `tabCost Center` cc where cc.name=child.cost_center)=%s + order by creation desc limit 1""" % (item.doctype, "%s", "%s", "%s"), + (item.item_code, bean.doc.company, bean.doc.company)) + if res: + item.expense_account = res[0][0] + item.cost_center = res[0][1] + elif company_values: + item.expense_account = company_values[0] or company_values[1] + item.cost_center = company_values[2] or company_values[3] + + webnotes.conn.set_value(item.doctype, item.name, "expense_account", item.expense_account) + webnotes.conn.set_value(item.doctype, item.name, "cost_center", item.cost_center) + + # remove gl entries + webnotes.conn.sql("""delete from `tabGL Entry` where voucher_type=%s + and voucher_no=%s""", (doctype, name)) + bean.run_method("make_gl_entries") + +def validate_item_values(item, company): + if item.expense_account and \ + webnotes.conn.get_value("Account", item.expense_account, "company")!=company: + return False + elif item.cost_center and \ + webnotes.conn.get_value("Cost Center", item.cost_center, "company")!=company: + return False + elif not (item.expense_account and item.cost_center): + return False + + return True \ No newline at end of file diff --git a/patches/september_2013/p01_update_communication.py b/patches/september_2013/p01_update_communication.py new file mode 100644 index 0000000000..d840c801f9 --- /dev/null +++ b/patches/september_2013/p01_update_communication.py @@ -0,0 +1,15 @@ +import webnotes + +def execute(): + for doctype in ("Contact", "Lead", "Job Applicant", "Supplier", "Customer", "Quotation", "Sales Person", "Support Ticket"): + fieldname = doctype.replace(" ", '_').lower() + webnotes.conn.sql("""update tabCommunication + set parenttype=%s, parentfield='communications', + parent=`%s` + where ifnull(`%s`, '')!=''""" % ("%s", fieldname, fieldname), doctype) + + webnotes.reload_doc("core", "doctype", "communication") + + webnotes.conn.sql("""update tabCommunication set communication_date = creation where + ifnull(communication_date, '')='' """) + \ No newline at end of file diff --git a/public/js/queries.js b/public/js/queries.js index fbd294757f..d0346e0cbd 100644 --- a/public/js/queries.js +++ b/public/js/queries.js @@ -5,7 +5,7 @@ wn.provide("erpnext.queries"); $.extend(erpnext.queries, { profile: function() { - return { query: "controllers.queries.profile_query" }; + return { query: "core.doctype.profile.profile.profile_query" }; }, lead: function() { diff --git a/public/js/toolbar.js b/public/js/toolbar.js index d2ca512fa6..2566fcb6a3 100644 --- a/public/js/toolbar.js +++ b/public/js/toolbar.js @@ -20,20 +20,6 @@ erpnext.toolbar.setup = function() { '+wn._('Live Chat')+''); } - erpnext.toolbar.set_new_comments(); - $("#toolbar-tools").append('
  • \ Latest Updates
  • '); -} - -erpnext.toolbar.set_new_comments = function(new_comments) { - return; - var navbar_nc = $('.navbar-new-comments'); - if(cint(new_comments)) { - navbar_nc.addClass('navbar-new-comments-true') - navbar_nc.text(new_comments); - } else { - navbar_nc.removeClass('navbar-new-comments-true'); - navbar_nc.text(0); - } } \ No newline at end of file diff --git a/selling/doctype/customer/customer.py b/selling/doctype/customer/customer.py index 2eabf12dde..fb3c0062a7 100644 --- a/selling/doctype/customer/customer.py +++ b/selling/doctype/customer/customer.py @@ -17,10 +17,7 @@ class DocType(TransactionBase): def __init__(self, doc, doclist=[]): self.doc = doc self.doclist = doclist - - def onload(self): - self.add_communication_list() - + def autoname(self): cust_master_name = webnotes.defaults.get_global_default('cust_master_name') if cust_master_name == 'Customer Name': @@ -43,8 +40,7 @@ class DocType(TransactionBase): def validate_values(self): if webnotes.defaults.get_global_default('cust_master_name') == 'Naming Series' and not self.doc.naming_series: - msgprint("Series is Mandatory.") - raise Exception + webnotes.throw("Series is Mandatory.", webnotes.MandatoryError) def validate(self): self.validate_values() diff --git a/selling/doctype/customer/customer.txt b/selling/doctype/customer/customer.txt index 7da29d2adb..94bd8fceb4 100644 --- a/selling/doctype/customer/customer.txt +++ b/selling/doctype/customer/customer.txt @@ -2,7 +2,7 @@ { "creation": "2013-06-11 14:26:44", "docstatus": 0, - "modified": "2013-08-08 14:22:13", + "modified": "2013-09-02 16:25:13", "modified_by": "Administrator", "owner": "Administrator" }, @@ -348,6 +348,15 @@ "options": "Customer Discount", "permlevel": 0 }, + { + "doctype": "DocField", + "fieldname": "communications", + "fieldtype": "Table", + "hidden": 1, + "label": "Communications", + "options": "Communication", + "permlevel": 0 + }, { "amend": 0, "cancel": 0, diff --git a/selling/doctype/lead/get_leads.py b/selling/doctype/lead/get_leads.py index c63468e2f0..3305a3b9f6 100644 --- a/selling/doctype/lead/get_leads.py +++ b/selling/doctype/lead/get_leads.py @@ -25,12 +25,15 @@ def add_sales_communication(subject, content, sender, real_name, mail=None, lead.insert() lead_name = lead.doc.name + parent_doctype = "Contact" if contact_name else "Lead" + parent_name = contact_name or lead_name + message = make(content=content, sender=sender, subject=subject, - lead=lead_name, contact=contact_name, date=date) + doctype = parent_doctype, name = parent_name, date=date) if mail: # save attachments to parent if from mail - bean = webnotes.bean("Contact" if contact_name else "Lead", contact_name or lead_name) + bean = webnotes.bean(parent_doctype, parent_name) mail.save_attachments_in_doc(bean.doc) class SalesMailbox(POP3Mailbox): diff --git a/selling/doctype/lead/lead.js b/selling/doctype/lead/lead.js index 4088739388..a3ae783867 100644 --- a/selling/doctype/lead/lead.js +++ b/selling/doctype/lead/lead.js @@ -14,12 +14,12 @@ erpnext.LeadController = wn.ui.form.Controller.extend({ onload: function() { if(cur_frm.fields_dict.lead_owner.df.options.match(/^Profile/)) { cur_frm.fields_dict.lead_owner.get_query = function(doc,cdt,cdn) { - return { query:"controllers.queries.profile_query" } } + return { query:"core.doctype.profile.profile.profile_query" } } } if(cur_frm.fields_dict.contact_by.df.options.match(/^Profile/)) { cur_frm.fields_dict.contact_by.get_query = function(doc,cdt,cdn) { - return { query:"controllers.queries.profile_query" } } + return { query:"core.doctype.profile.profile.profile_query" } } } if(in_list(user_roles,'System Manager')) { @@ -51,7 +51,7 @@ erpnext.LeadController = wn.ui.form.Controller.extend({ } cur_frm.communication_view = new wn.views.CommunicationList({ - list: wn.model.get("Communication", {"lead": this.frm.doc.name}), + list: wn.model.get("Communication", {"parenttype": "Lead", "parent":this.frm.doc.name}), parent: this.frm.fields_dict.communication_html.wrapper, doc: this.frm.doc, recipients: this.frm.doc.email_id diff --git a/selling/doctype/lead/lead.py b/selling/doctype/lead/lead.py index 2bf1aa3845..063c5f0d09 100644 --- a/selling/doctype/lead/lead.py +++ b/selling/doctype/lead/lead.py @@ -24,7 +24,6 @@ class DocType(SellingController): }) def onload(self): - self.add_communication_list() customer = webnotes.conn.get_value("Customer", {"lead_name": self.doc.name}) if customer: self.doc.fields["__is_customer"] = customer diff --git a/selling/doctype/lead/lead.txt b/selling/doctype/lead/lead.txt index d66c6a0269..9402259ac7 100644 --- a/selling/doctype/lead/lead.txt +++ b/selling/doctype/lead/lead.txt @@ -2,7 +2,7 @@ { "creation": "2013-04-10 11:45:37", "docstatus": 0, - "modified": "2013-08-08 14:22:14", + "modified": "2013-09-02 17:25:59", "modified_by": "Administrator", "owner": "Administrator" }, @@ -410,6 +410,14 @@ "fieldtype": "Check", "label": "Blog Subscriber" }, + { + "doctype": "DocField", + "fieldname": "communications", + "fieldtype": "Table", + "hidden": 1, + "label": "Communications", + "options": "Communication" + }, { "cancel": 1, "doctype": "DocPerm", diff --git a/selling/doctype/opportunity/opportunity.py b/selling/doctype/opportunity/opportunity.py index 906e5470b0..a3ef1976d9 100644 --- a/selling/doctype/opportunity/opportunity.py +++ b/selling/doctype/opportunity/opportunity.py @@ -25,9 +25,6 @@ class DocType(TransactionBase): "contact_by": webnotes.conn.get_value("Opportunity", self.doc.name, "contact_by") if \ (not cint(self.doc.fields.get("__islocal"))) else None, }) - - def onload(self): - self.add_communication_list() def get_item_details(self, item_code): item = sql("""select item_name, stock_uom, description_html, description, item_group, brand diff --git a/selling/doctype/opportunity/opportunity.txt b/selling/doctype/opportunity/opportunity.txt index 5b1d93f962..4ca1564c7d 100644 --- a/selling/doctype/opportunity/opportunity.txt +++ b/selling/doctype/opportunity/opportunity.txt @@ -2,7 +2,7 @@ { "creation": "2013-03-07 18:50:30", "docstatus": 0, - "modified": "2013-08-08 14:22:15", + "modified": "2013-09-02 16:27:33", "modified_by": "Administrator", "owner": "Administrator" }, @@ -442,6 +442,14 @@ "read_only": 1, "width": "150px" }, + { + "doctype": "DocField", + "fieldname": "communications", + "fieldtype": "Table", + "hidden": 1, + "label": "Communications", + "options": "Communication" + }, { "doctype": "DocPerm", "role": "Sales User" diff --git a/selling/doctype/quotation/quotation.py b/selling/doctype/quotation/quotation.py index b6ff1d7fd9..588d8d6e1f 100644 --- a/selling/doctype/quotation/quotation.py +++ b/selling/doctype/quotation/quotation.py @@ -7,7 +7,7 @@ import webnotes from webnotes.utils import cstr, getdate from webnotes.model.bean import getlist from webnotes.model.code import get_obj -from webnotes import msgprint +from webnotes import _, msgprint sql = webnotes.conn.sql @@ -20,9 +20,6 @@ class DocType(SellingController): self.doclist = doclist self.tname = 'Quotation Item' self.fname = 'quotation_details' - - def onload(self): - self.add_communication_list() # Get contact person details based on customer selected # ------------------------------------------------------ @@ -281,3 +278,7 @@ def _make_customer(source_name, ignore_permissions=False): return customer else: raise e + except webnotes.MandatoryError: + from webnotes.utils import get_url_to_form + webnotes.throw(_("Before proceeding, please create Customer from Lead") + \ + (" - %s" % get_url_to_form("Lead", lead_name))) diff --git a/selling/doctype/quotation/quotation.txt b/selling/doctype/quotation/quotation.txt index c3b24347ff..9d47259d80 100644 --- a/selling/doctype/quotation/quotation.txt +++ b/selling/doctype/quotation/quotation.txt @@ -2,7 +2,7 @@ { "creation": "2013-05-24 19:29:08", "docstatus": 0, - "modified": "2013-08-09 14:46:11", + "modified": "2013-09-02 16:25:01", "modified_by": "Administrator", "owner": "Administrator" }, @@ -835,6 +835,14 @@ "read_only": 0, "width": "40px" }, + { + "doctype": "DocField", + "fieldname": "communications", + "fieldtype": "Table", + "hidden": 1, + "label": "Communications", + "options": "Communication" + }, { "amend": 1, "cancel": 1, diff --git a/selling/utils.py b/selling/utils.py index 53ebbeef34..ca995125d1 100644 --- a/selling/utils.py +++ b/selling/utils.py @@ -161,7 +161,7 @@ def _get_item_discount(item_group, customer): FROM `tabItem Group` AS node, `tabItem Group` AS parent WHERE parent.lft <= node.lft and parent.rgt >= node.rgt and node.name = %s GROUP BY parent.name - ORDER BY parent.lft desc""", item_group)] + ORDER BY parent.lft desc""", (item_group,))] discount = 0 for d in parent_item_groups: diff --git a/setup/doctype/authorization_rule/authorization_rule.js b/setup/doctype/authorization_rule/authorization_rule.js index 02747a0351..00f5260b38 100644 --- a/setup/doctype/authorization_rule/authorization_rule.js +++ b/setup/doctype/authorization_rule/authorization_rule.js @@ -69,10 +69,10 @@ cur_frm.cscript.transaction = function(doc,cdt,cdn){ cur_frm.fields_dict.system_user.get_query = function(doc,cdt,cdn) { - return{ query:"controllers.queries.profile_query" } } + return{ query:"core.doctype.profile.profile.profile_query" } } cur_frm.fields_dict.approving_user.get_query = function(doc,cdt,cdn) { - return{ query:"controllers.queries.profile_query" } } + return{ query:"core.doctype.profile.profile.profile_query" } } cur_frm.fields_dict['approving_role'].get_query = cur_frm.fields_dict['system_role'].get_query; diff --git a/setup/doctype/sales_person/sales_person.txt b/setup/doctype/sales_person/sales_person.txt index 77ba6afd4e..d78b5c8d27 100644 --- a/setup/doctype/sales_person/sales_person.txt +++ b/setup/doctype/sales_person/sales_person.txt @@ -2,7 +2,7 @@ { "creation": "2013-01-10 16:34:24", "docstatus": 0, - "modified": "2013-08-05 18:11:22", + "modified": "2013-09-02 16:26:54", "modified_by": "Administrator", "owner": "Administrator" }, @@ -160,6 +160,14 @@ "options": "Budget Distribution", "search_index": 0 }, + { + "doctype": "DocField", + "fieldname": "communications", + "fieldtype": "Table", + "hidden": 1, + "label": "Communications", + "options": "Communication" + }, { "cancel": 0, "create": 0, diff --git a/support/doctype/support_ticket/get_support_mails.py b/support/doctype/support_ticket/get_support_mails.py index 7e09846dda..fb26e570d7 100644 --- a/support/doctype/support_ticket/get_support_mails.py +++ b/support/doctype/support_ticket/get_support_mails.py @@ -46,7 +46,7 @@ class SupportMailbox(POP3Mailbox): make(content=mail.content, sender=mail.from_email, subject = ticket.doc.subject, doctype="Support Ticket", name=ticket.doc.name, - lead = ticket.doc.lead, contact=ticket.doc.contact, date=mail.date) + date=mail.date) if new_ticket and cint(self.email_settings.send_autoreply) and \ "mailer-daemon" not in mail.from_email.lower(): diff --git a/support/doctype/support_ticket/support_ticket.js b/support/doctype/support_ticket/support_ticket.js index 2c1f3322f3..0e61273439 100644 --- a/support/doctype/support_ticket/support_ticket.js +++ b/support/doctype/support_ticket/support_ticket.js @@ -46,16 +46,12 @@ $.extend(cur_frm.cscript, { make_listing: function(doc) { var wrapper = cur_frm.fields_dict['thread_html'].wrapper; - var comm_list = wn.model.get("Communication", {"support_ticket": doc.name}) - - var sortfn = function (a, b) { return (b.creation > a.creation) ? 1 : -1; } - comm_list = comm_list.sort(sortfn); + var comm_list = wn.model.get("Communication", {"parent": doc.name, "parenttype":"Support Ticket"}) - if(!comm_list.length || (comm_list[comm_list.length - 1].sender != doc.raised_by)) { + if(!comm_list.length) { comm_list.push({ "sender": doc.raised_by, "creation": doc.creation, - "modified": doc.creation, "content": doc.description}); } diff --git a/support/doctype/support_ticket/support_ticket.py b/support/doctype/support_ticket/support_ticket.py index 5e0ffd5534..061a459a27 100644 --- a/support/doctype/support_ticket/support_ticket.py +++ b/support/doctype/support_ticket/support_ticket.py @@ -11,9 +11,6 @@ class DocType(TransactionBase): def __init__(self, doc, doclist=[]): self.doc = doc self.doclist = doclist - - def onload(self): - self.add_communication_list() def get_sender(self, comm): return webnotes.conn.get_value('Email Settings',None,'support_email') @@ -53,7 +50,7 @@ class DocType(TransactionBase): if not self.doc.company: self.doc.company = webnotes.conn.get_value("Lead", self.doc.lead, "company") or \ webnotes.conn.get_default("company") - + def on_trash(self): webnotes.conn.sql("""update `tabCommunication` set support_ticket=NULL where support_ticket=%s""", (self.doc.name,)) diff --git a/support/doctype/support_ticket/support_ticket.txt b/support/doctype/support_ticket/support_ticket.txt index dcb45204fd..01d0e35388 100644 --- a/support/doctype/support_ticket/support_ticket.txt +++ b/support/doctype/support_ticket/support_ticket.txt @@ -2,7 +2,7 @@ { "creation": "2013-02-01 10:36:25", "docstatus": 0, - "modified": "2013-08-28 18:29:06", + "modified": "2013-09-02 16:24:24", "modified_by": "Administrator", "owner": "Administrator" }, @@ -261,6 +261,14 @@ "hidden": 1, "label": "Content Type" }, + { + "doctype": "DocField", + "fieldname": "communications", + "fieldtype": "Table", + "hidden": 1, + "label": "Communications", + "options": "Communication" + }, { "cancel": 0, "doctype": "DocPerm", diff --git a/utilities/demo/make_demo.py b/utilities/demo/make_demo.py index 6f18f76f9a..4383d32129 100644 --- a/utilities/demo/make_demo.py +++ b/utilities/demo/make_demo.py @@ -30,7 +30,6 @@ prob = { } def make(reset=False, simulate=True): - webnotes.connect() #webnotes.print_messages = True webnotes.mute_emails = True webnotes.rollback_on_exception = True @@ -38,7 +37,7 @@ def make(reset=False, simulate=True): if reset: setup() if simulate: - simulate() + _simulate() def setup(): install() @@ -50,7 +49,7 @@ def setup(): # make_opening_stock() # make_opening_accounts() -def simulate(): +def _simulate(): global runs_for current_date = webnotes.utils.getdate(start_date) @@ -411,7 +410,4 @@ def import_data(dt, submit=False): if submit: webnotes.form_dict["params"] = json.dumps({"_submit": 1}) webnotes.uploaded_file = os.path.join(os.path.dirname(__file__), "demo_docs", doctype+".csv") - upload() - -if __name__=="__main__": - make() \ No newline at end of file + upload() \ No newline at end of file diff --git a/utilities/demo/make_erpnext_demo.py b/utilities/demo/make_erpnext_demo.py index db1d25bd82..9e56839fb8 100644 --- a/utilities/demo/make_erpnext_demo.py +++ b/utilities/demo/make_erpnext_demo.py @@ -6,7 +6,14 @@ import webnotes, os import utilities.demo.make_demo def make_demo_app(): - + webnotes.mute_emails = 1 + webnotes.connect() + utilities.demo.make_demo.make(reset=True, simulate=False) + # setup demo user etc so that the site it up faster, while the data loads + make_demo_user() + make_demo_login_page() + make_demo_on_login_script() + utilities.demo.make_demo.make(reset=False, simulate=True) def make_demo_user(): roles = ["Accounts Manager", "Analytics", "Expense Approver", "Accounts User", @@ -111,11 +118,4 @@ def make_demo_on_login_script(): webnotes.conn.commit() if __name__=="__main__": - # webnotes.connect() - webnotes.mute_emails = 1 - utilities.demo.make_demo.make(reset=True, simulate=False) - # setup demo user etc so that the site it up faster, while the data loads - make_demo_user() - make_demo_login_page() - make_demo_on_login_script() - utilities.demo.make_demo.make(reset=False, simulate=True) \ No newline at end of file + make_demo_app() \ No newline at end of file diff --git a/utilities/doctype/contact/contact.py b/utilities/doctype/contact/contact.py index 961bb52153..9997cabea5 100644 --- a/utilities/doctype/contact/contact.py +++ b/utilities/doctype/contact/contact.py @@ -12,9 +12,6 @@ class DocType(TransactionBase): self.doc = doc self.doclist = doclist - def onload(self): - self.add_communication_list() - def on_communication_sent(self, comm): webnotes.conn.set(self.doc, 'status', 'Replied') diff --git a/utilities/doctype/contact/contact.txt b/utilities/doctype/contact/contact.txt index 63d02521db..d3c7d889fd 100644 --- a/utilities/doctype/contact/contact.txt +++ b/utilities/doctype/contact/contact.txt @@ -2,7 +2,7 @@ { "creation": "2013-01-10 16:34:32", "docstatus": 0, - "modified": "2013-07-05 14:32:19", + "modified": "2013-09-02 16:26:13", "modified_by": "Administrator", "owner": "Administrator" }, @@ -225,6 +225,14 @@ "oldfieldtype": "Small Text", "read_only": 1 }, + { + "doctype": "DocField", + "fieldname": "communications", + "fieldtype": "Table", + "hidden": 1, + "label": "Communications", + "options": "Communication" + }, { "cancel": 1, "doctype": "DocPerm", diff --git a/utilities/transaction_base.py b/utilities/transaction_base.py index aace0cb78e..ea807c248e 100644 --- a/utilities/transaction_base.py +++ b/utilities/transaction_base.py @@ -87,7 +87,7 @@ class TransactionBase(StatusUpdater): if self.meta.get_field(fieldname): self.doc.fields[fieldname] = val - if self.meta.get_field("sales_team"): + if self.meta.get_field("sales_team") and self.doc.customer: self.set_sales_team_for_customer() def set_sales_team_for_customer(self): @@ -229,20 +229,7 @@ class TransactionBase(StatusUpdater): if int(webnotes.conn.get_value("Notification Control", None, dt) or 0): self.doc.fields["__notification_message"] = \ webnotes.conn.get_value("Notification Control", None, dt + "_message") - - def add_communication_list(self): - # remove communications if present - self.doclist = webnotes.doclist(self.doclist).get({ - "doctype": ["!=", "Communcation"]}) - - comm_list = webnotes.conn.sql("""select * from tabCommunication - where %s=%s order by modified desc limit 20""" \ - % (self.doc.doctype.replace(" ", "_").lower(), "%s"), - self.doc.name, as_dict=1, update={"doctype":"Communication"}) - - self.doclist.extend(webnotes.doclist([webnotes.doc(fielddata=d) \ - for d in comm_list])) - + def validate_posting_time(self): if not self.doc.posting_time: self.doc.posting_time = now_datetime().strftime('%H:%M:%S')