cleanup of notification control: now in boot
This commit is contained in:
parent
e1e4aafd9b
commit
35c017a78f
@ -25,7 +25,6 @@ cur_frm.pformat.print_heading = 'Invoice';
|
|||||||
wn.require('app/selling/doctype/sales_common/sales_common.js');
|
wn.require('app/selling/doctype/sales_common/sales_common.js');
|
||||||
wn.require('app/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
|
wn.require('app/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
|
||||||
wn.require('app/utilities/doctype/sms_control/sms_control.js');
|
wn.require('app/utilities/doctype/sms_control/sms_control.js');
|
||||||
wn.require('app/setup/doctype/notification_control/notification_control.js');
|
|
||||||
|
|
||||||
// On Load
|
// On Load
|
||||||
// -------
|
// -------
|
||||||
@ -506,11 +505,9 @@ cur_frm.cscript.convert_into_recurring_invoice = function(doc, dt, dn) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
|
cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
|
||||||
var args = {
|
if(cint(wn.boot.notification_settings.sales_invoice)) {
|
||||||
type: 'Sales Invoice',
|
cur_frm.email_doc(wn.boot.notification_settings.sales_invoice);
|
||||||
doctype: 'Sales Invoice'
|
|
||||||
}
|
}
|
||||||
cur_frm.cscript.notify(doc, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.cscript.invoice_period_from_date = function(doc, dt, dn) {
|
cur_frm.cscript.invoice_period_from_date = function(doc, dt, dn) {
|
||||||
|
@ -40,11 +40,9 @@ class DocType(TransactionBase):
|
|||||||
self.tname = 'Sales Invoice Item'
|
self.tname = 'Sales Invoice Item'
|
||||||
self.fname = 'entries'
|
self.fname = 'entries'
|
||||||
|
|
||||||
|
|
||||||
def autoname(self):
|
def autoname(self):
|
||||||
self.doc.name = make_autoname(self.doc.naming_series+ '.#####')
|
self.doc.name = make_autoname(self.doc.naming_series+ '.#####')
|
||||||
|
|
||||||
|
|
||||||
def set_pos_fields(self):
|
def set_pos_fields(self):
|
||||||
"""Set retail related fields from pos settings"""
|
"""Set retail related fields from pos settings"""
|
||||||
pos = webnotes.conn.sql("select * from `tabPOS Setting` where ifnull(user,'') = '%s' and company = '%s'" % (session['user'], self.doc.company), as_dict=1)
|
pos = webnotes.conn.sql("select * from `tabPOS Setting` where ifnull(user,'') = '%s' and company = '%s'" % (session['user'], self.doc.company), as_dict=1)
|
||||||
|
@ -21,7 +21,6 @@ cur_frm.cscript.other_fname = "purchase_tax_details";
|
|||||||
wn.require('app/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
|
wn.require('app/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
|
||||||
wn.require('app/buying/doctype/purchase_common/purchase_common.js');
|
wn.require('app/buying/doctype/purchase_common/purchase_common.js');
|
||||||
wn.require('app/utilities/doctype/sms_control/sms_control.js');
|
wn.require('app/utilities/doctype/sms_control/sms_control.js');
|
||||||
wn.require('app/setup/doctype/notification_control/notification_control.js');
|
|
||||||
|
|
||||||
cur_frm.cscript.onload = function(doc, cdt, cdn) {
|
cur_frm.cscript.onload = function(doc, cdt, cdn) {
|
||||||
// set missing values in parent doc
|
// set missing values in parent doc
|
||||||
@ -220,9 +219,7 @@ cur_frm.pformat.indent_no = function(doc, cdt, cdn){
|
|||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
|
cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
|
||||||
var args = {
|
if(cint(wn.boot.notification_settings.purchase_order)) {
|
||||||
type: 'Purchase Order',
|
cur_frm.email_doc(wn.boot.notification_settings.purchase_order);
|
||||||
doctype: 'Purchase Order'
|
|
||||||
}
|
}
|
||||||
cur_frm.cscript.notify(doc, args);
|
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
wn.require('app/setup/doctype/contact_control/contact_control.js');
|
wn.require('app/setup/doctype/contact_control/contact_control.js');
|
||||||
wn.require('app/support/doctype/communication/communication.js');
|
|
||||||
|
|
||||||
cur_frm.cscript.onload = function(doc,dt,dn){
|
cur_frm.cscript.onload = function(doc,dt,dn){
|
||||||
|
|
||||||
@ -29,7 +28,6 @@ cur_frm.cscript.onload = function(doc,dt,dn){
|
|||||||
// make contact, history list body
|
// make contact, history list body
|
||||||
//cur_frm.cscript.make_cl_body();
|
//cur_frm.cscript.make_cl_body();
|
||||||
cur_frm.cscript.make_hl_body();
|
cur_frm.cscript.make_hl_body();
|
||||||
cur_frm.cscript.make_communication_body();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.cscript.refresh = function(doc,dt,dn) {
|
cur_frm.cscript.refresh = function(doc,dt,dn) {
|
||||||
@ -46,8 +44,13 @@ cur_frm.cscript.refresh = function(doc,dt,dn) {
|
|||||||
// make lists
|
// make lists
|
||||||
cur_frm.cscript.make_address(doc,dt,dn);
|
cur_frm.cscript.make_address(doc,dt,dn);
|
||||||
cur_frm.cscript.make_contact(doc,dt,dn);
|
cur_frm.cscript.make_contact(doc,dt,dn);
|
||||||
cur_frm.cscript.render_communication_list(doc, cdt, cdn);
|
|
||||||
cur_frm.cscript.make_history(doc,dt,dn);
|
cur_frm.cscript.make_history(doc,dt,dn);
|
||||||
|
|
||||||
|
cur_frm.communication_view = new wn.views.CommunicationList({
|
||||||
|
list: wn.model.get("Communication", {"supplier": doc.name}),
|
||||||
|
parent: cur_frm.fields_dict.communication_html.wrapper,
|
||||||
|
doc: doc
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,26 +18,23 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import webnotes
|
import webnotes
|
||||||
|
|
||||||
from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
|
from webnotes.utils import cint, cstr, get_defaults
|
||||||
from webnotes.model import db_exists
|
from webnotes.model.code import get_obj
|
||||||
from webnotes.model.doc import Document, addchild, getchildren, make_autoname
|
from webnotes import form, msgprint
|
||||||
from webnotes.model.wrapper import getlist, copy_doclist
|
|
||||||
from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
|
|
||||||
from webnotes import session, form, msgprint, errprint
|
|
||||||
|
|
||||||
set = webnotes.conn.set
|
|
||||||
sql = webnotes.conn.sql
|
sql = webnotes.conn.sql
|
||||||
get_value = webnotes.conn.get_value
|
|
||||||
in_transaction = webnotes.conn.in_transaction
|
|
||||||
convert_to_lists = webnotes.conn.convert_to_lists
|
convert_to_lists = webnotes.conn.convert_to_lists
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------
|
from utilities.transaction_base import TransactionBase
|
||||||
|
|
||||||
class DocType:
|
class DocType(TransactionBase):
|
||||||
def __init__(self, doc, doclist=[]):
|
def __init__(self, doc, doclist=[]):
|
||||||
self.doc = doc
|
self.doc = doc
|
||||||
self.doclist = doclist
|
self.doclist = doclist
|
||||||
|
|
||||||
|
def onload(self):
|
||||||
|
self.add_communication_list()
|
||||||
|
|
||||||
def autoname(self):
|
def autoname(self):
|
||||||
#get default naming conventional from control panel
|
#get default naming conventional from control panel
|
||||||
supp_master_name = get_defaults()['supp_master_name']
|
supp_master_name = get_defaults()['supp_master_name']
|
||||||
@ -59,22 +56,17 @@ class DocType:
|
|||||||
else:
|
else:
|
||||||
self.doc.name = make_autoname(self.doc.naming_series+'.#####')
|
self.doc.name = make_autoname(self.doc.naming_series+'.#####')
|
||||||
|
|
||||||
# ----------------------------------------
|
|
||||||
# update credit days and limit in account
|
|
||||||
# ----------------------------------------
|
|
||||||
def update_credit_days_limit(self):
|
def update_credit_days_limit(self):
|
||||||
sql("update tabAccount set credit_days = '%s' where name = '%s'" % (self.doc.credit_days, self.doc.name + " - " + self.get_company_abbr()))
|
sql("update tabAccount set credit_days = '%s' where name = '%s'" % (self.doc.credit_days, self.doc.name + " - " + self.get_company_abbr()))
|
||||||
|
|
||||||
|
|
||||||
def on_update(self):
|
def on_update(self):
|
||||||
if not self.doc.naming_series:
|
if not self.doc.naming_series:
|
||||||
self.doc.naming_series = ''
|
self.doc.naming_series = ''
|
||||||
|
|
||||||
|
|
||||||
# create address
|
# create address
|
||||||
addr_flds = [self.doc.address_line1, self.doc.address_line2, self.doc.city, self.doc.state, self.doc.country, self.doc.pincode]
|
addr_flds = [self.doc.address_line1, self.doc.address_line2, self.doc.city, self.doc.state, self.doc.country, self.doc.pincode]
|
||||||
address_line = "\n".join(filter(lambda x : (x!='' and x!=None),addr_flds))
|
address_line = "\n".join(filter(lambda x : (x!='' and x!=None),addr_flds))
|
||||||
set(self.doc,'address', address_line)
|
webnotes.conn.set(self.doc,'address', address_line)
|
||||||
|
|
||||||
# create account head
|
# create account head
|
||||||
self.create_account_head()
|
self.create_account_head()
|
||||||
@ -82,12 +74,9 @@ class DocType:
|
|||||||
# update credit days and limit in account
|
# update credit days and limit in account
|
||||||
self.update_credit_days_limit()
|
self.update_credit_days_limit()
|
||||||
|
|
||||||
|
|
||||||
def check_state(self):
|
def check_state(self):
|
||||||
return "\n" + "\n".join([i[0] for i in sql("select state_name from `tabState` where `tabState`.country='%s' " % self.doc.country)])
|
return "\n" + "\n".join([i[0] for i in sql("select state_name from `tabState` where `tabState`.country='%s' " % self.doc.country)])
|
||||||
|
|
||||||
# ACCOUNTS
|
|
||||||
# -------------------------------------------
|
|
||||||
def get_payables_group(self):
|
def get_payables_group(self):
|
||||||
g = sql("select payables_group from tabCompany where name=%s", self.doc.company)
|
g = sql("select payables_group from tabCompany where name=%s", self.doc.company)
|
||||||
g = g and g[0][0] or ''
|
g = g and g[0][0] or ''
|
||||||
@ -116,7 +105,6 @@ class DocType:
|
|||||||
|
|
||||||
return self.doc.supplier_type + " - " + abbr
|
return self.doc.supplier_type + " - " + abbr
|
||||||
|
|
||||||
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
#validation for Naming Series mandatory field...
|
#validation for Naming Series mandatory field...
|
||||||
if get_defaults()['supp_master_name'] == 'Naming Series':
|
if get_defaults()['supp_master_name'] == 'Naming Series':
|
||||||
@ -124,9 +112,6 @@ class DocType:
|
|||||||
msgprint("Series is Mandatory.")
|
msgprint("Series is Mandatory.")
|
||||||
raise Exception
|
raise Exception
|
||||||
|
|
||||||
|
|
||||||
# create accont head - in tree under zone + territory
|
|
||||||
# -------------------------------------------------------
|
|
||||||
def create_account_head(self):
|
def create_account_head(self):
|
||||||
if self.doc.company :
|
if self.doc.company :
|
||||||
abbr = self.get_company_abbr()
|
abbr = self.get_company_abbr()
|
||||||
@ -142,7 +127,6 @@ class DocType:
|
|||||||
else :
|
else :
|
||||||
msgprint("Please select Company under which you want to create account head")
|
msgprint("Please select Company under which you want to create account head")
|
||||||
|
|
||||||
|
|
||||||
def get_contacts(self,nm):
|
def get_contacts(self,nm):
|
||||||
if nm:
|
if nm:
|
||||||
contact_details =convert_to_lists(sql("select name, CONCAT(IFNULL(first_name,''),' ',IFNULL(last_name,'')),contact_no,email_id from `tabContact` where supplier = '%s'"%nm))
|
contact_details =convert_to_lists(sql("select name, CONCAT(IFNULL(first_name,''),' ',IFNULL(last_name,'')),contact_no,email_id from `tabContact` where supplier = '%s'"%nm))
|
||||||
@ -172,16 +156,12 @@ class DocType:
|
|||||||
from webnotes.model import delete_doc
|
from webnotes.model import delete_doc
|
||||||
delete_doc('Account', acc[0][0])
|
delete_doc('Account', acc[0][0])
|
||||||
|
|
||||||
|
|
||||||
def on_trash(self):
|
def on_trash(self):
|
||||||
self.delete_supplier_address()
|
self.delete_supplier_address()
|
||||||
self.delete_supplier_contact()
|
self.delete_supplier_contact()
|
||||||
self.delete_supplier_communication()
|
self.delete_supplier_communication()
|
||||||
self.delete_supplier_account()
|
self.delete_supplier_account()
|
||||||
|
|
||||||
|
|
||||||
# on rename
|
|
||||||
# ---------
|
|
||||||
def on_rename(self,newdn,olddn):
|
def on_rename(self,newdn,olddn):
|
||||||
#update supplier_name if not naming series
|
#update supplier_name if not naming series
|
||||||
if get_defaults().get('supp_master_name') == 'Supplier Name':
|
if get_defaults().get('supp_master_name') == 'Supplier Name':
|
||||||
|
@ -2,11 +2,12 @@
|
|||||||
{
|
{
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"creation": "2012-07-18 20:34:42",
|
"creation": "2012-11-02 17:17:04",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"modified": "2012-07-18 17:41:49"
|
"modified": "2012-11-30 10:53:32"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"autoname": "naming_series:",
|
||||||
"name": "__common__",
|
"name": "__common__",
|
||||||
"search_fields": "supplier_name,supplier_type",
|
"search_fields": "supplier_name,supplier_type",
|
||||||
"module": "Buying",
|
"module": "Buying",
|
||||||
@ -32,6 +33,16 @@
|
|||||||
"name": "Supplier",
|
"name": "Supplier",
|
||||||
"doctype": "DocType"
|
"doctype": "DocType"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"description": "Note: You Can Manage Multiple Address or Contacts via Addresses & Contacts",
|
||||||
|
"oldfieldtype": "Section Break",
|
||||||
|
"colour": "White:FFF",
|
||||||
|
"doctype": "DocField",
|
||||||
|
"label": "Basic Info",
|
||||||
|
"fieldname": "basic_info",
|
||||||
|
"fieldtype": "Section Break",
|
||||||
|
"permlevel": 0
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"no_copy": 1,
|
"no_copy": 1,
|
||||||
"oldfieldtype": "Data",
|
"oldfieldtype": "Data",
|
||||||
@ -124,7 +135,6 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"doctype": "DocField",
|
"doctype": "DocField",
|
||||||
"label": "Communication History",
|
|
||||||
"fieldname": "communication_history",
|
"fieldname": "communication_history",
|
||||||
"fieldtype": "Section Break",
|
"fieldtype": "Section Break",
|
||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
@ -246,8 +256,7 @@
|
|||||||
"write": 1,
|
"write": 1,
|
||||||
"role": "Purchase Master Manager",
|
"role": "Purchase Master Manager",
|
||||||
"cancel": 1,
|
"cancel": 1,
|
||||||
"permlevel": 0,
|
"permlevel": 0
|
||||||
"match": ""
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amend": 0,
|
"amend": 0,
|
||||||
|
@ -100,8 +100,6 @@ cur_frm.cscript.sanctioned_amount = function(doc,cdt,cdn){
|
|||||||
cur_frm.cscript.calculate_total(doc,cdt,cdn);
|
cur_frm.cscript.calculate_total(doc,cdt,cdn);
|
||||||
}
|
}
|
||||||
|
|
||||||
wn.require('app/setup/doctype/notification_control/notification_control.js');
|
|
||||||
|
|
||||||
cur_frm.cscript.approve = function(doc,cdt,cdn){
|
cur_frm.cscript.approve = function(doc,cdt,cdn){
|
||||||
cur_frm.cscript.calculate_total(doc,cdt,cdn);
|
cur_frm.cscript.calculate_total(doc,cdt,cdn);
|
||||||
|
|
||||||
@ -248,12 +246,9 @@ cur_frm.cscript.update_voucher = function(doc){
|
|||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
|
cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
|
||||||
var args = {
|
if(cint(wn.boot.notification_settings.expense_claim)) {
|
||||||
type: 'Expense Claim',
|
cur_frm.email_doc(wn.boot.notification_settings.expense_claim);
|
||||||
doctype: 'Expense Claim',
|
|
||||||
send_to: doc.exp_approver
|
|
||||||
}
|
}
|
||||||
cur_frm.cscript.notify(doc, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.fields_dict.employee.get_query = erpnext.utils.employee_query;
|
cur_frm.fields_dict.employee.get_query = erpnext.utils.employee_query;
|
@ -15,9 +15,6 @@
|
|||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
wn.require('app/setup/doctype/contact_control/contact_control.js');
|
wn.require('app/setup/doctype/contact_control/contact_control.js');
|
||||||
wn.require('app/support/doctype/communication/communication.js');
|
|
||||||
|
|
||||||
/* ********************************* onload ********************************************* */
|
|
||||||
|
|
||||||
cur_frm.cscript.onload = function(doc,dt,dn){
|
cur_frm.cscript.onload = function(doc,dt,dn){
|
||||||
// history doctypes and scripts
|
// history doctypes and scripts
|
||||||
@ -32,8 +29,6 @@ cur_frm.cscript.onload = function(doc,dt,dn){
|
|||||||
//cur_frm.cscript.make_sl_body();
|
//cur_frm.cscript.make_sl_body();
|
||||||
|
|
||||||
cur_frm.cscript.load_defaults(doc, dt, dn);
|
cur_frm.cscript.load_defaults(doc, dt, dn);
|
||||||
|
|
||||||
cur_frm.cscript.make_communication_body();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.cscript.load_defaults = function(doc, dt, dn) {
|
cur_frm.cscript.load_defaults = function(doc, dt, dn) {
|
||||||
@ -47,8 +42,6 @@ cur_frm.cscript.load_defaults = function(doc, dt, dn) {
|
|||||||
cur_frm.add_fetch('lead_name', 'company_name', 'customer_name');
|
cur_frm.add_fetch('lead_name', 'company_name', 'customer_name');
|
||||||
cur_frm.add_fetch('default_sales_partner','commission_rate','default_commission_rate');
|
cur_frm.add_fetch('default_sales_partner','commission_rate','default_commission_rate');
|
||||||
|
|
||||||
/* ********************************* refresh ********************************************* */
|
|
||||||
|
|
||||||
cur_frm.cscript.refresh = function(doc,dt,dn) {
|
cur_frm.cscript.refresh = function(doc,dt,dn) {
|
||||||
if(sys_defaults.cust_master_name == 'Customer Name')
|
if(sys_defaults.cust_master_name == 'Customer Name')
|
||||||
hide_field('naming_series');
|
hide_field('naming_series');
|
||||||
@ -57,16 +50,18 @@ cur_frm.cscript.refresh = function(doc,dt,dn) {
|
|||||||
|
|
||||||
if(doc.__islocal){
|
if(doc.__islocal){
|
||||||
hide_field(['address_html','contact_html']);
|
hide_field(['address_html','contact_html']);
|
||||||
//cur_frm.cscript.set_hl_msg(doc);
|
|
||||||
//cur_frm.cscript.set_sl_msg(doc);
|
|
||||||
}else{
|
}else{
|
||||||
unhide_field(['address_html','contact_html']);
|
unhide_field(['address_html','contact_html']);
|
||||||
// make lists
|
// make lists
|
||||||
cur_frm.cscript.make_address(doc,dt,dn);
|
cur_frm.cscript.make_address(doc,dt,dn);
|
||||||
cur_frm.cscript.make_contact(doc,dt,dn);
|
cur_frm.cscript.make_contact(doc,dt,dn);
|
||||||
cur_frm.cscript.make_history(doc,dt,dn);
|
cur_frm.cscript.make_history(doc,dt,dn);
|
||||||
cur_frm.cscript.render_communication_list(doc, cdt, cdn);
|
|
||||||
//cur_frm.cscript.make_shipping_address(doc,dt,dn);
|
cur_frm.communication_view = new wn.views.CommunicationList({
|
||||||
|
list: wn.model.get("Communication", {"customer": doc.name}),
|
||||||
|
parent: cur_frm.fields_dict.communication_html.wrapper,
|
||||||
|
doc: doc
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,11 +112,6 @@ cur_frm.cscript.make_contact = function() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ********************************* client triggers ************************************** */
|
|
||||||
|
|
||||||
// ---------------
|
|
||||||
// customer group
|
|
||||||
// ---------------
|
|
||||||
cur_frm.fields_dict['customer_group'].get_query = function(doc,dt,dn) {
|
cur_frm.fields_dict['customer_group'].get_query = function(doc,dt,dn) {
|
||||||
return 'SELECT `tabCustomer Group`.`name`, `tabCustomer Group`.`parent_customer_group` FROM `tabCustomer Group` WHERE `tabCustomer Group`.`is_group` = "No" AND `tabCustomer Group`.`docstatus`!= 2 AND `tabCustomer Group`.%(key)s LIKE "%s" ORDER BY `tabCustomer Group`.`name` ASC LIMIT 50';
|
return 'SELECT `tabCustomer Group`.`name`, `tabCustomer Group`.`parent_customer_group` FROM `tabCustomer Group` WHERE `tabCustomer Group`.`is_group` = "No" AND `tabCustomer Group`.`docstatus`!= 2 AND `tabCustomer Group`.%(key)s LIKE "%s" ORDER BY `tabCustomer Group`.`name` ASC LIMIT 50';
|
||||||
}
|
}
|
||||||
@ -130,8 +120,6 @@ cur_frm.fields_dict['customer_group'].get_query = function(doc,dt,dn) {
|
|||||||
cur_frm.fields_dict.lead_name.get_query = erpnext.utils.lead_query;
|
cur_frm.fields_dict.lead_name.get_query = erpnext.utils.lead_query;
|
||||||
|
|
||||||
|
|
||||||
// Transaction History
|
|
||||||
// functions called by these functions are defined in communication.js
|
|
||||||
cur_frm.cscript.make_qtn_list = function(parent, doc) {
|
cur_frm.cscript.make_qtn_list = function(parent, doc) {
|
||||||
cur_frm.cscript.get_common_list_view(parent, doc, 'Quotation');
|
cur_frm.cscript.get_common_list_view(parent, doc, 'Quotation');
|
||||||
}
|
}
|
||||||
@ -173,7 +161,6 @@ cur_frm.cscript.get_common_list_view = function(parent, doc, doctype) {
|
|||||||
cur_frm.cscript.render_list(doc, doctype, parent, ListView);
|
cur_frm.cscript.render_list(doc, doctype, parent, ListView);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
cur_frm.cscript.make_si_list = function(parent, doc) {
|
cur_frm.cscript.make_si_list = function(parent, doc) {
|
||||||
var ListView = wn.views.ListView.extend({
|
var ListView = wn.views.ListView.extend({
|
||||||
init: function(doclistview) {
|
init: function(doclistview) {
|
||||||
|
@ -18,24 +18,24 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import webnotes
|
import webnotes
|
||||||
|
|
||||||
from webnotes.utils import cstr, date_diff, flt, formatdate, get_defaults, getdate, has_common, now, nowdate, replace_newlines, sendmail, set_default, user_format, validate_email_add
|
from webnotes.utils import cstr, get_defaults
|
||||||
from webnotes.model.doc import Document, make_autoname
|
from webnotes.model.doc import Document, make_autoname
|
||||||
from webnotes.model.code import get_obj
|
from webnotes.model.code import get_obj
|
||||||
from webnotes import msgprint, errprint
|
from webnotes import msgprint, errprint
|
||||||
|
|
||||||
set = webnotes.conn.set
|
|
||||||
sql = webnotes.conn.sql
|
sql = webnotes.conn.sql
|
||||||
get_value = webnotes.conn.get_value
|
get_value = webnotes.conn.get_value
|
||||||
convert_to_lists = webnotes.conn.convert_to_lists
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------
|
from utilities.transaction_base import TransactionBase
|
||||||
|
|
||||||
class DocType:
|
class DocType(TransactionBase):
|
||||||
def __init__(self, doc, doclist=[]):
|
def __init__(self, doc, doclist=[]):
|
||||||
self.doc = doc
|
self.doc = doc
|
||||||
self.doclist = doclist
|
self.doclist = doclist
|
||||||
|
|
||||||
# ******************************************************* autoname ***********************************************************
|
def onload(self):
|
||||||
|
self.add_communication_list()
|
||||||
|
|
||||||
def autoname(self):
|
def autoname(self):
|
||||||
cust_master_name = get_defaults().get('cust_master_name')
|
cust_master_name = get_defaults().get('cust_master_name')
|
||||||
if cust_master_name == 'Customer Name':
|
if cust_master_name == 'Customer Name':
|
||||||
@ -53,17 +53,9 @@ class DocType:
|
|||||||
else:
|
else:
|
||||||
self.doc.name = make_autoname(self.doc.naming_series+'.#####')
|
self.doc.name = make_autoname(self.doc.naming_series+'.#####')
|
||||||
|
|
||||||
|
|
||||||
# ******************************************************* triggers ***********************************************************
|
|
||||||
# ----------------
|
|
||||||
# get company abbr
|
|
||||||
# -----------------
|
|
||||||
def get_company_abbr(self):
|
def get_company_abbr(self):
|
||||||
return get_value('Company', self.doc.company, 'abbr')
|
return get_value('Company', self.doc.company, 'abbr')
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------------
|
|
||||||
# get parent account(i.e receivables group from company where default account head need to be created)
|
|
||||||
# -----------------------------------------------------------------------------------------------------
|
|
||||||
def get_receivables_group(self):
|
def get_receivables_group(self):
|
||||||
g = sql("select receivables_group from tabCompany where name=%s", self.doc.company)
|
g = sql("select receivables_group from tabCompany where name=%s", self.doc.company)
|
||||||
g = g and g[0][0] or ''
|
g = g and g[0][0] or ''
|
||||||
@ -72,26 +64,15 @@ class DocType:
|
|||||||
raise Exception
|
raise Exception
|
||||||
return g
|
return g
|
||||||
|
|
||||||
# ******************************************************* validate *********************************************************
|
|
||||||
# ----------------
|
|
||||||
# validate values
|
|
||||||
# ----------------
|
|
||||||
def validate_values(self):
|
def validate_values(self):
|
||||||
# Master name by naming series -> Series field mandatory
|
# Master name by naming series -> Series field mandatory
|
||||||
if get_defaults().get('cust_master_name') == 'Naming Series' and not self.doc.naming_series:
|
if get_defaults().get('cust_master_name') == 'Naming Series' and not self.doc.naming_series:
|
||||||
msgprint("Series is Mandatory.")
|
msgprint("Series is Mandatory.")
|
||||||
raise Exception
|
raise Exception
|
||||||
|
|
||||||
# ---------
|
|
||||||
# validate
|
|
||||||
# ---------
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
self.validate_values()
|
self.validate_values()
|
||||||
|
|
||||||
# ******************************************************* on update *********************************************************
|
|
||||||
# ------------------------
|
|
||||||
# create customer address
|
|
||||||
# ------------------------
|
|
||||||
def create_customer_address(self):
|
def create_customer_address(self):
|
||||||
addr_flds = [self.doc.address_line1, self.doc.address_line2, self.doc.city, self.doc.state, self.doc.country, self.doc.pincode]
|
addr_flds = [self.doc.address_line1, self.doc.address_line2, self.doc.city, self.doc.state, self.doc.country, self.doc.pincode]
|
||||||
address_line = "\n".join(filter(lambda x : (x!='' and x!=None),addr_flds))
|
address_line = "\n".join(filter(lambda x : (x!='' and x!=None),addr_flds))
|
||||||
@ -100,15 +81,11 @@ class DocType:
|
|||||||
address_line = address_line + "\n" + "Phone: " + cstr(self.doc.phone_1)
|
address_line = address_line + "\n" + "Phone: " + cstr(self.doc.phone_1)
|
||||||
if self.doc.email_id:
|
if self.doc.email_id:
|
||||||
address_line = address_line + "\n" + "E-mail: " + cstr(self.doc.email_id)
|
address_line = address_line + "\n" + "E-mail: " + cstr(self.doc.email_id)
|
||||||
set(self.doc,'address', address_line)
|
webnotes.conn.set(self.doc,'address', address_line)
|
||||||
|
|
||||||
telephone = "(O): " + cstr(self.doc.phone_1) +"\n"+ cstr(self.doc.phone_2) + "\n" + "(M): " + "\n" + "(fax): " + cstr(self.doc.fax_1)
|
telephone = "(O): " + cstr(self.doc.phone_1) +"\n"+ cstr(self.doc.phone_2) + "\n" + "(M): " + "\n" + "(fax): " + cstr(self.doc.fax_1)
|
||||||
set(self.doc,'telephone',telephone)
|
webnotes.conn.set(self.doc,'telephone',telephone)
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------
|
|
||||||
# create primary contact for customer
|
|
||||||
# ------------------------------------
|
|
||||||
def create_p_contact(self,nm,phn_no,email_id,mob_no,fax,cont_addr):
|
def create_p_contact(self,nm,phn_no,email_id,mob_no,fax,cont_addr):
|
||||||
c1 = Document('Contact')
|
c1 = Document('Contact')
|
||||||
c1.first_name = nm
|
c1.first_name = nm
|
||||||
@ -126,10 +103,6 @@ class DocType:
|
|||||||
c1.customer_group = self.doc.customer_group
|
c1.customer_group = self.doc.customer_group
|
||||||
c1.save(1)
|
c1.save(1)
|
||||||
|
|
||||||
|
|
||||||
# ------------------------
|
|
||||||
# create customer contact
|
|
||||||
# ------------------------
|
|
||||||
def create_customer_contact(self):
|
def create_customer_contact(self):
|
||||||
contact = sql("select distinct name from `tabContact` where customer_name=%s", (self.doc.customer_name))
|
contact = sql("select distinct name from `tabContact` where customer_name=%s", (self.doc.customer_name))
|
||||||
contact = contact and contact[0][0] or ''
|
contact = contact and contact[0][0] or ''
|
||||||
@ -143,18 +116,10 @@ class DocType:
|
|||||||
c_detail = sql("select lead_name, company_name, contact_no, mobile_no, email_id, fax, address from `tabLead` where name =%s", self.doc.lead_name, as_dict=1)
|
c_detail = sql("select lead_name, company_name, contact_no, mobile_no, email_id, fax, address from `tabLead` where name =%s", self.doc.lead_name, as_dict=1)
|
||||||
self.create_p_contact(c_detail and c_detail[0]['lead_name'] or '', c_detail and c_detail[0]['contact_no'] or '', c_detail and c_detail[0]['email_id'] or '', c_detail and c_detail[0]['mobile_no'] or '', c_detail and c_detail[0]['fax'] or '', c_detail and c_detail[0]['address'] or '')
|
self.create_p_contact(c_detail and c_detail[0]['lead_name'] or '', c_detail and c_detail[0]['contact_no'] or '', c_detail and c_detail[0]['email_id'] or '', c_detail and c_detail[0]['mobile_no'] or '', c_detail and c_detail[0]['fax'] or '', c_detail and c_detail[0]['address'] or '')
|
||||||
|
|
||||||
|
|
||||||
# -------------------
|
|
||||||
# update lead status
|
|
||||||
# -------------------
|
|
||||||
def update_lead_status(self):
|
def update_lead_status(self):
|
||||||
if self.doc.lead_name:
|
if self.doc.lead_name:
|
||||||
sql("update `tabLead` set status='Converted' where name = %s", self.doc.lead_name)
|
sql("update `tabLead` set status='Converted' where name = %s", self.doc.lead_name)
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
# create accont head - in tree under receivables_group of selected company
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
def create_account_head(self):
|
def create_account_head(self):
|
||||||
if self.doc.company :
|
if self.doc.company :
|
||||||
abbr = self.get_company_abbr()
|
abbr = self.get_company_abbr()
|
||||||
@ -167,15 +132,9 @@ class DocType:
|
|||||||
else :
|
else :
|
||||||
msgprint("Please Select Company under which you want to create account head")
|
msgprint("Please Select Company under which you want to create account head")
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------
|
|
||||||
# update credit days and limit in account
|
|
||||||
# ----------------------------------------
|
|
||||||
def update_credit_days_limit(self):
|
def update_credit_days_limit(self):
|
||||||
sql("update tabAccount set credit_days = '%s', credit_limit = '%s' where name = '%s'" % (self.doc.credit_days, self.doc.credit_limit, self.doc.name + " - " + self.get_company_abbr()))
|
sql("update tabAccount set credit_days = '%s', credit_limit = '%s' where name = '%s'" % (self.doc.credit_days, self.doc.credit_limit, self.doc.name + " - " + self.get_company_abbr()))
|
||||||
|
|
||||||
|
|
||||||
#create address and contact from lead
|
|
||||||
def create_lead_address_contact(self):
|
def create_lead_address_contact(self):
|
||||||
if self.doc.lead_name:
|
if self.doc.lead_name:
|
||||||
details = sql("select name, lead_name, address_line1, address_line2, city, country, state, pincode, phone, mobile_no, fax, email_id from `tabLead` where name = '%s'" %(self.doc.lead_name), as_dict = 1)
|
details = sql("select name, lead_name, address_line1, address_line2, city, country, state, pincode, phone, mobile_no, fax, email_id from `tabLead` where name = '%s'" %(self.doc.lead_name), as_dict = 1)
|
||||||
@ -211,9 +170,6 @@ class DocType:
|
|||||||
except NameError, e:
|
except NameError, e:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# ----------
|
|
||||||
# on update
|
|
||||||
# ----------
|
|
||||||
def on_update(self):
|
def on_update(self):
|
||||||
# create customer addr
|
# create customer addr
|
||||||
#self.create_customer_address()
|
#self.create_customer_address()
|
||||||
@ -257,8 +213,6 @@ class DocType:
|
|||||||
if self.doc.lead_name:
|
if self.doc.lead_name:
|
||||||
sql("update `tabLead` set status='Interested' where name=%s",self.doc.lead_name)
|
sql("update `tabLead` set status='Interested' where name=%s",self.doc.lead_name)
|
||||||
|
|
||||||
# on rename
|
|
||||||
# ---------
|
|
||||||
def on_rename(self,newdn,olddn):
|
def on_rename(self,newdn,olddn):
|
||||||
#update customer_name if not naming series
|
#update customer_name if not naming series
|
||||||
if get_defaults().get('cust_master_name') == 'Customer Name':
|
if get_defaults().get('cust_master_name') == 'Customer Name':
|
||||||
|
@ -2,11 +2,12 @@
|
|||||||
{
|
{
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"creation": "2012-10-02 11:27:30",
|
"creation": "2012-11-02 17:16:46",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"modified": "2012-09-28 12:31:42"
|
"modified": "2012-11-30 10:54:38"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"autoname": "naming_series:",
|
||||||
"name": "__common__",
|
"name": "__common__",
|
||||||
"default_print_format": "Standard",
|
"default_print_format": "Standard",
|
||||||
"allow_print": 0,
|
"allow_print": 0,
|
||||||
@ -34,6 +35,17 @@
|
|||||||
"name": "Customer",
|
"name": "Customer",
|
||||||
"doctype": "DocType"
|
"doctype": "DocType"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"description": "Note: You Can Manage Multiple Address or Contacts via Addresses & Contacts",
|
||||||
|
"oldfieldtype": "Section Break",
|
||||||
|
"colour": "White:FFF",
|
||||||
|
"doctype": "DocField",
|
||||||
|
"label": "Basic Info",
|
||||||
|
"fieldname": "basic_info",
|
||||||
|
"fieldtype": "Section Break",
|
||||||
|
"reqd": 0,
|
||||||
|
"permlevel": 0
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"print_hide": 0,
|
"print_hide": 0,
|
||||||
"no_copy": 1,
|
"no_copy": 1,
|
||||||
@ -183,7 +195,6 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"doctype": "DocField",
|
"doctype": "DocField",
|
||||||
"label": "Communication History",
|
|
||||||
"fieldname": "communication_history",
|
"fieldname": "communication_history",
|
||||||
"fieldtype": "Section Break",
|
"fieldtype": "Section Break",
|
||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
|
@ -73,7 +73,6 @@ cur_frm.cscript.refresh = function(doc, cdt, cdn) {
|
|||||||
doc: doc,
|
doc: doc,
|
||||||
email: doc.email_id
|
email: doc.email_id
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
wn.require('app/utilities/doctype/sms_control/sms_control.js');
|
wn.require('app/utilities/doctype/sms_control/sms_control.js');
|
||||||
wn.require('app/support/doctype/communication/communication.js');
|
|
||||||
|
|
||||||
cur_frm.cscript.refresh = function(doc, cdt, cdn){
|
cur_frm.cscript.refresh = function(doc, cdt, cdn){
|
||||||
erpnext.hide_naming_series();
|
erpnext.hide_naming_series();
|
||||||
@ -26,7 +25,6 @@ cur_frm.cscript.refresh = function(doc, cdt, cdn){
|
|||||||
cur_frm.add_custom_button('Opportunity Lost', cur_frm.cscript['Declare Opportunity Lost']);
|
cur_frm.add_custom_button('Opportunity Lost', cur_frm.cscript['Declare Opportunity Lost']);
|
||||||
cur_frm.add_custom_button('Send SMS', cur_frm.cscript.send_sms);
|
cur_frm.add_custom_button('Send SMS', cur_frm.cscript.send_sms);
|
||||||
}
|
}
|
||||||
if(!doc.__islocal) cur_frm.cscript.render_communication_list(doc, cdt, cdn);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ONLOAD
|
// ONLOAD
|
||||||
@ -48,7 +46,14 @@ cur_frm.cscript.onload = function(doc, cdt, cdn) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.cscript.make_communication_body();
|
if(!doc.__islocal) {
|
||||||
|
cur_frm.communication_view = new wn.views.CommunicationList({
|
||||||
|
list: wn.model.get("Communication", {"opportunity": doc.name}),
|
||||||
|
parent: cur_frm.fields_dict.communication_html.wrapper,
|
||||||
|
doc: doc,
|
||||||
|
email: doc.contact_email
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if(cur_frm.fields_dict.contact_by.df.options.match(/^Profile/)) {
|
if(cur_frm.fields_dict.contact_by.df.options.match(/^Profile/)) {
|
||||||
cur_frm.fields_dict.contact_by.get_query = erpnext.utils.profile_query;
|
cur_frm.fields_dict.contact_by.get_query = erpnext.utils.profile_query;
|
||||||
|
@ -18,20 +18,14 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import webnotes
|
import webnotes
|
||||||
|
|
||||||
from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
|
from webnotes.utils import add_days, add_years, cint, cstr, date_diff, flt, getdate
|
||||||
from webnotes.model import db_exists
|
from webnotes.model import db_exists
|
||||||
from webnotes.model.doc import Document, addchild, getchildren, make_autoname
|
from webnotes.model.doc import Document, addchild, make_autoname
|
||||||
from webnotes.model.wrapper import getlist, copy_doclist
|
from webnotes.model.wrapper import getlist
|
||||||
from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
|
from webnotes.model.code import get_obj
|
||||||
from webnotes import session, form, msgprint, errprint
|
from webnotes import form, msgprint
|
||||||
|
|
||||||
set = webnotes.conn.set
|
|
||||||
sql = webnotes.conn.sql
|
sql = webnotes.conn.sql
|
||||||
get_value = webnotes.conn.get_value
|
|
||||||
in_transaction = webnotes.conn.in_transaction
|
|
||||||
convert_to_lists = webnotes.conn.convert_to_lists
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
from utilities.transaction_base import TransactionBase
|
from utilities.transaction_base import TransactionBase
|
||||||
|
|
||||||
@ -42,8 +36,8 @@ class DocType(TransactionBase):
|
|||||||
self.fname = 'enq_details'
|
self.fname = 'enq_details'
|
||||||
self.tname = 'Opportunity Item'
|
self.tname = 'Opportunity Item'
|
||||||
|
|
||||||
def autoname(self):
|
def onload(self):
|
||||||
self.doc.name = make_autoname(self.doc.naming_series+'.####')
|
self.add_communication_list()
|
||||||
|
|
||||||
def get_item_details(self, item_code):
|
def get_item_details(self, item_code):
|
||||||
item = sql("""select item_name, stock_uom, description_html, description, item_group, brand
|
item = sql("""select item_name, stock_uom, description_html, description, item_group, brand
|
||||||
@ -94,8 +88,8 @@ class DocType(TransactionBase):
|
|||||||
if self.doc.contact_date and self.doc.contact_date_ref != self.doc.contact_date:
|
if self.doc.contact_date and self.doc.contact_date_ref != self.doc.contact_date:
|
||||||
if self.doc.contact_by:
|
if self.doc.contact_by:
|
||||||
self.add_calendar_event()
|
self.add_calendar_event()
|
||||||
set(self.doc, 'contact_date_ref',self.doc.contact_date)
|
webnotes.conn.set(self.doc, 'contact_date_ref',self.doc.contact_date)
|
||||||
set(self.doc, 'status', 'Draft')
|
webnotes.conn.set(self.doc, 'status', 'Draft')
|
||||||
|
|
||||||
def add_calendar_event(self):
|
def add_calendar_event(self):
|
||||||
desc=''
|
desc=''
|
||||||
@ -169,7 +163,7 @@ class DocType(TransactionBase):
|
|||||||
self.validate_lead_cust()
|
self.validate_lead_cust()
|
||||||
|
|
||||||
def on_submit(self):
|
def on_submit(self):
|
||||||
set(self.doc, 'status', 'Submitted')
|
webnotes.conn.set(self.doc, 'status', 'Submitted')
|
||||||
|
|
||||||
def on_cancel(self):
|
def on_cancel(self):
|
||||||
chk = sql("select t1.name from `tabQuotation` t1, `tabQuotation Item` t2 where t2.parent = t1.name and t1.docstatus=1 and (t1.status!='Order Lost' and t1.status!='Cancelled') and t2.prevdoc_docname = %s",self.doc.name)
|
chk = sql("select t1.name from `tabQuotation` t1, `tabQuotation Item` t2 where t2.parent = t1.name and t1.docstatus=1 and (t1.status!='Order Lost' and t1.status!='Cancelled') and t2.prevdoc_docname = %s",self.doc.name)
|
||||||
@ -177,7 +171,7 @@ class DocType(TransactionBase):
|
|||||||
msgprint("Quotation No. "+cstr(chk[0][0])+" is submitted against this Opportunity. Thus can not be cancelled.")
|
msgprint("Quotation No. "+cstr(chk[0][0])+" is submitted against this Opportunity. Thus can not be cancelled.")
|
||||||
raise Exception
|
raise Exception
|
||||||
else:
|
else:
|
||||||
set(self.doc, 'status', 'Cancelled')
|
webnotes.conn.set(self.doc, 'status', 'Cancelled')
|
||||||
|
|
||||||
def declare_enquiry_lost(self,arg):
|
def declare_enquiry_lost(self,arg):
|
||||||
chk = sql("select t1.name from `tabQuotation` t1, `tabQuotation Item` t2 where t2.parent = t1.name and t1.docstatus=1 and (t1.status!='Order Lost' and t1.status!='Cancelled') and t2.prevdoc_docname = %s",self.doc.name)
|
chk = sql("select t1.name from `tabQuotation` t1, `tabQuotation Item` t2 where t2.parent = t1.name and t1.docstatus=1 and (t1.status!='Order Lost' and t1.status!='Cancelled') and t2.prevdoc_docname = %s",self.doc.name)
|
||||||
@ -185,6 +179,6 @@ class DocType(TransactionBase):
|
|||||||
msgprint("Quotation No. "+cstr(chk[0][0])+" is submitted against this Opportunity. Thus 'Opportunity Lost' can not be declared against it.")
|
msgprint("Quotation No. "+cstr(chk[0][0])+" is submitted against this Opportunity. Thus 'Opportunity Lost' can not be declared against it.")
|
||||||
raise Exception
|
raise Exception
|
||||||
else:
|
else:
|
||||||
set(self.doc, 'status', 'Opportunity Lost')
|
webnotes.conn.set(self.doc, 'status', 'Opportunity Lost')
|
||||||
set(self.doc, 'order_lost_reason', arg)
|
webnotes.conn.set(self.doc, 'order_lost_reason', arg)
|
||||||
return 'true'
|
return 'true'
|
||||||
|
@ -2,12 +2,13 @@
|
|||||||
{
|
{
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"creation": "2012-11-28 11:26:19",
|
"creation": "2012-11-24 17:21:44",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"modified": "2012-11-16 12:27:49"
|
"modified": "2012-11-30 10:54:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
|
"autoname": "naming_series:",
|
||||||
"name": "__common__",
|
"name": "__common__",
|
||||||
"default_print_format": "Standard",
|
"default_print_format": "Standard",
|
||||||
"search_fields": "status,transaction_date,customer,lead,enquiry_type,territory,company",
|
"search_fields": "status,transaction_date,customer,lead,enquiry_type,territory,company",
|
||||||
@ -34,6 +35,16 @@
|
|||||||
"name": "Opportunity",
|
"name": "Opportunity",
|
||||||
"doctype": "DocType"
|
"doctype": "DocType"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"description": "Enter customer enquiry for which you might raise a quotation in future",
|
||||||
|
"oldfieldtype": "Section Break",
|
||||||
|
"colour": "White:FFF",
|
||||||
|
"doctype": "DocField",
|
||||||
|
"label": "Basic Info",
|
||||||
|
"fieldname": "basic_info",
|
||||||
|
"fieldtype": "Section Break",
|
||||||
|
"permlevel": 0
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"description": "To manage multiple series please go to Setup > Manage Series",
|
"description": "To manage multiple series please go to Setup > Manage Series",
|
||||||
"no_copy": 1,
|
"no_copy": 1,
|
||||||
@ -154,15 +165,14 @@
|
|||||||
"oldfieldtype": "Section Break",
|
"oldfieldtype": "Section Break",
|
||||||
"colour": "White:FFF",
|
"colour": "White:FFF",
|
||||||
"doctype": "DocField",
|
"doctype": "DocField",
|
||||||
"label": "Communication History",
|
|
||||||
"fieldname": "communication_history",
|
"fieldname": "communication_history",
|
||||||
"fieldtype": "Section Break",
|
"fieldtype": "Section Break",
|
||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"allow_on_submit": 1,
|
|
||||||
"oldfieldtype": "Table",
|
"oldfieldtype": "Table",
|
||||||
"colour": "White:FFF",
|
"colour": "White:FFF",
|
||||||
|
"allow_on_submit": 1,
|
||||||
"doctype": "DocField",
|
"doctype": "DocField",
|
||||||
"label": "Communication HTML",
|
"label": "Communication HTML",
|
||||||
"oldfieldname": "follow_up",
|
"oldfieldname": "follow_up",
|
||||||
|
@ -24,8 +24,6 @@ cur_frm.cscript.sales_team_fname = "sales_team";
|
|||||||
wn.require('app/selling/doctype/sales_common/sales_common.js');
|
wn.require('app/selling/doctype/sales_common/sales_common.js');
|
||||||
wn.require('app/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
|
wn.require('app/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
|
||||||
wn.require('app/utilities/doctype/sms_control/sms_control.js');
|
wn.require('app/utilities/doctype/sms_control/sms_control.js');
|
||||||
wn.require('app/setup/doctype/notification_control/notification_control.js');
|
|
||||||
wn.require('app/support/doctype/communication/communication.js');
|
|
||||||
|
|
||||||
// ONLOAD
|
// ONLOAD
|
||||||
// ===================================================================================
|
// ===================================================================================
|
||||||
@ -49,7 +47,7 @@ cur_frm.cscript.onload = function(doc, cdt, cdn) {
|
|||||||
hide_field(['customer','customer_address','contact_person', 'customer_name','contact_display', 'customer_group']);
|
hide_field(['customer','customer_address','contact_person', 'customer_name','contact_display', 'customer_group']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cur_frm.cscript.make_communication_body();
|
//cur_frm.cscript.make_communication_body();
|
||||||
|
|
||||||
if(cur_frm.fields_dict.contact_by.df.options.match(/^Profile/)) {
|
if(cur_frm.fields_dict.contact_by.df.options.match(/^Profile/)) {
|
||||||
cur_frm.fields_dict.contact_by.get_query = erpnext.utils.profile_query;
|
cur_frm.fields_dict.contact_by.get_query = erpnext.utils.profile_query;
|
||||||
@ -104,7 +102,14 @@ cur_frm.cscript.refresh = function(doc, cdt, cdn) {
|
|||||||
if(doc.customer || doc.lead) $(cur_frm.fields_dict.contact_section.row.wrapper).toggle(true);
|
if(doc.customer || doc.lead) $(cur_frm.fields_dict.contact_section.row.wrapper).toggle(true);
|
||||||
else $(cur_frm.fields_dict.contact_section.row.wrapper).toggle(false);
|
else $(cur_frm.fields_dict.contact_section.row.wrapper).toggle(false);
|
||||||
|
|
||||||
if (!doc.__islocal) cur_frm.cscript.render_communication_list(doc, cdt, cdn);
|
if (!doc.__islocal) {
|
||||||
|
cur_frm.communication_view = new wn.views.CommunicationList({
|
||||||
|
list: wn.model.get("Communication", {"quotation": doc.name}),
|
||||||
|
parent: cur_frm.fields_dict.communication_html.wrapper,
|
||||||
|
doc: doc,
|
||||||
|
email: doc.contact_email
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -333,9 +338,7 @@ cur_frm.fields_dict['quotation_details'].grid.get_field('item_code').get_query=
|
|||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
|
cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
|
||||||
var args = {
|
if(cint(wn.boot.notification_settings.quotation)) {
|
||||||
type: 'Quotation',
|
cur_frm.email_doc(wn.boot.notification_settings.quotation_message);
|
||||||
doctype: 'Quotation'
|
|
||||||
}
|
}
|
||||||
cur_frm.cscript.notify(doc, args);
|
|
||||||
}
|
}
|
@ -42,6 +42,9 @@ class DocType(TransactionBase):
|
|||||||
self.tname = 'Quotation Item'
|
self.tname = 'Quotation Item'
|
||||||
self.fname = 'quotation_details'
|
self.fname = 'quotation_details'
|
||||||
|
|
||||||
|
def onload(self):
|
||||||
|
self.add_communication_list()
|
||||||
|
|
||||||
# Pull Opportunity Details
|
# Pull Opportunity Details
|
||||||
# --------------------
|
# --------------------
|
||||||
def pull_enq_details(self):
|
def pull_enq_details(self):
|
||||||
|
@ -25,7 +25,6 @@ cur_frm.cscript.sales_team_fname = "sales_team";
|
|||||||
wn.require('app/selling/doctype/sales_common/sales_common.js');
|
wn.require('app/selling/doctype/sales_common/sales_common.js');
|
||||||
wn.require('app/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
|
wn.require('app/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
|
||||||
wn.require('app/utilities/doctype/sms_control/sms_control.js');
|
wn.require('app/utilities/doctype/sms_control/sms_control.js');
|
||||||
wn.require('app/setup/doctype/notification_control/notification_control.js');
|
|
||||||
|
|
||||||
|
|
||||||
// ONLOAD
|
// ONLOAD
|
||||||
@ -369,9 +368,7 @@ cur_frm.fields_dict['territory'].get_query = function(doc,cdt,cdn) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
|
cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
|
||||||
var args = {
|
if(cint(wn.boot.notification_settings.sales_order)) {
|
||||||
type: 'Sales Order',
|
cur_frm.email_doc(wn.boot.notification_settings.sales_order);
|
||||||
doctype: 'Sales Order'
|
|
||||||
}
|
}
|
||||||
cur_frm.cscript.notify(doc, args);
|
|
||||||
}
|
}
|
||||||
|
@ -22,45 +22,5 @@ cur_frm.cscript.select_transaction = function(doc, cdt, cdn) {
|
|||||||
refresh_field('custom_message');
|
refresh_field('custom_message');
|
||||||
}
|
}
|
||||||
$c_obj(make_doclist(cdt, cdn),'get_message',doc.select_transaction, callback)
|
$c_obj(make_doclist(cdt, cdn),'get_message',doc.select_transaction, callback)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
cur_frm.cscript.notify = function(doc, args) {
|
|
||||||
var doc = locals[doc.doctype][doc.name];
|
|
||||||
$c_obj(make_doclist(doc.doctype, doc.name), 'get_formatted_message', {
|
|
||||||
type: args['type'],
|
|
||||||
doctype: args['doctype'],
|
|
||||||
contact_name: args['contact_name'] || doc.contact_display
|
|
||||||
}, function(r, rt) {
|
|
||||||
if(!r.exc) {
|
|
||||||
var res = JSON.parse(r.message);
|
|
||||||
var send_from = (function() {
|
|
||||||
if(user!='Administrator') {
|
|
||||||
return user;
|
|
||||||
} else {
|
|
||||||
return (wn.control_panel.auto_email_id ||
|
|
||||||
'ERPNext Notification<automail@erpnext.com>');
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
if(res.send) {
|
|
||||||
var print_heading = (doc.select_print_heading || args['type'])
|
|
||||||
if(validate_email(args['send_to'] || doc.contact_email || '')) {
|
|
||||||
sendmail(
|
|
||||||
args['send_to'] || doc.contact_email,
|
|
||||||
send_from,
|
|
||||||
send_from,
|
|
||||||
doc.company + " - " + print_heading + " - " + doc.name,
|
|
||||||
res.message,
|
|
||||||
res.print_format
|
|
||||||
);
|
|
||||||
msgprint('This ' + print_heading + ' is being sent to <b>'
|
|
||||||
+ (args['send_to'] || doc.contact_email) + '</b><br />...');
|
|
||||||
} else {
|
|
||||||
msgprint('Invalid/Missing Email Address of Contact. Auto notification for '
|
|
||||||
+ print_heading + ' not sent.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//console.log(JSON.parse(r.message));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
@ -25,84 +25,17 @@ from webnotes import msgprint
|
|||||||
|
|
||||||
sql = webnotes.conn.sql
|
sql = webnotes.conn.sql
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------
|
|
||||||
# Notification control
|
|
||||||
class DocType:
|
class DocType:
|
||||||
def __init__(self,d,dl):
|
def __init__(self,d,dl):
|
||||||
self.doc, self.doclist = d,dl
|
self.doc, self.doclist = d,dl
|
||||||
|
|
||||||
# get message to load in custom text
|
|
||||||
# ----------------------------------
|
|
||||||
def get_message(self, arg):
|
def get_message(self, arg):
|
||||||
fn = arg.lower().replace(' ', '_') + '_message'
|
fn = arg.lower().replace(' ', '_') + '_message'
|
||||||
v = sql("select value from tabSingles where field=%s and doctype=%s", (fn, 'Notification Control'))
|
v = sql("select value from tabSingles where field=%s and doctype=%s", (fn, 'Notification Control'))
|
||||||
return v and v[0][0] or ''
|
return v and v[0][0] or ''
|
||||||
|
|
||||||
# set custom text
|
|
||||||
# ---------------
|
|
||||||
def set_message(self, arg = ''):
|
def set_message(self, arg = ''):
|
||||||
fn = self.doc.select_transaction.lower().replace(' ', '_') + '_message'
|
fn = self.doc.select_transaction.lower().replace(' ', '_') + '_message'
|
||||||
webnotes.conn.set(self.doc, fn, self.doc.custom_message)
|
webnotes.conn.set(self.doc, fn, self.doc.custom_message)
|
||||||
msgprint("Custom Message for %s updated!" % self.doc.select_transaction)
|
msgprint("Custom Message for %s updated!" % self.doc.select_transaction)
|
||||||
|
|
||||||
|
|
||||||
def get_formatted_message(self, args):
|
|
||||||
"""
|
|
||||||
args can contain:
|
|
||||||
* type
|
|
||||||
* doctype
|
|
||||||
* contact_name
|
|
||||||
"""
|
|
||||||
import json
|
|
||||||
args = json.loads(args)
|
|
||||||
res = {
|
|
||||||
'send': 0,
|
|
||||||
'message': self.prepare_message(args),
|
|
||||||
'print_format': self.get_default_print_format(args)
|
|
||||||
}
|
|
||||||
|
|
||||||
dt_small = args.get('doctype').replace(' ', '_').lower()
|
|
||||||
if cint(self.doc.fields.get(dt_small)):
|
|
||||||
res['send'] = 1
|
|
||||||
|
|
||||||
return json.dumps(res)
|
|
||||||
|
|
||||||
|
|
||||||
def prepare_message(self, args):
|
|
||||||
"""
|
|
||||||
Prepares message body
|
|
||||||
"""
|
|
||||||
if args.get('type'):
|
|
||||||
msg_dict = {}
|
|
||||||
msg_dict['message'] = args.get('message') or self.get_message(args.get('type'))
|
|
||||||
msg_dict['company'] = Document('Control Panel', 'Control Panel').company_name
|
|
||||||
msg_dict['salutation'] = "Hi" + (args.get('contact_name') and (" " + args.get('contact_name')) or "")
|
|
||||||
msg_dict['send_from'] = webnotes.conn.sql("""\
|
|
||||||
SELECT CONCAT_WS(' ', first_name, last_name)
|
|
||||||
FROM `tabProfile`
|
|
||||||
WHERE name = %s""", webnotes.session['user'], as_list=1)[0][0] or ''
|
|
||||||
|
|
||||||
return """\
|
|
||||||
<div>
|
|
||||||
%(salutation)s,
|
|
||||||
|
|
||||||
%(message)s
|
|
||||||
|
|
||||||
Thanks,
|
|
||||||
%(send_from)s
|
|
||||||
%(company)s
|
|
||||||
</div>""" % msg_dict
|
|
||||||
|
|
||||||
else: return ""
|
|
||||||
|
|
||||||
|
|
||||||
def get_default_print_format(self, args):
|
|
||||||
"""
|
|
||||||
Get default print format from doclayer
|
|
||||||
"""
|
|
||||||
doclayer = get_obj('Customize Form', 'Customize Form')
|
|
||||||
doclayer.doc.doc_type = args.get('doctype')
|
|
||||||
doclayer.get()
|
|
||||||
if doclayer.doc.default_print_format:
|
|
||||||
return doclayer.doc.default_print_format
|
|
||||||
else: return 'Standard'
|
|
||||||
|
@ -76,6 +76,8 @@ def boot_session(bootinfo):
|
|||||||
import webnotes.model.doctype
|
import webnotes.model.doctype
|
||||||
bootinfo['docs'] += webnotes.model.doctype.get('Event')
|
bootinfo['docs'] += webnotes.model.doctype.get('Event')
|
||||||
bootinfo['docs'] += webnotes.model.doctype.get('Search Criteria')
|
bootinfo['docs'] += webnotes.model.doctype.get('Search Criteria')
|
||||||
|
bootinfo['notification_settings'] = webnotes.doc("Notification Control",
|
||||||
|
"Notification Control").get_values()
|
||||||
|
|
||||||
bootinfo['modules_list'] = webnotes.conn.get_global('modules_list')
|
bootinfo['modules_list'] = webnotes.conn.get_global('modules_list')
|
||||||
|
|
||||||
|
@ -23,7 +23,6 @@ cur_frm.cscript.sales_team_fname = "sales_team";
|
|||||||
wn.require('app/selling/doctype/sales_common/sales_common.js');
|
wn.require('app/selling/doctype/sales_common/sales_common.js');
|
||||||
wn.require('app/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
|
wn.require('app/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
|
||||||
wn.require('app/utilities/doctype/sms_control/sms_control.js');
|
wn.require('app/utilities/doctype/sms_control/sms_control.js');
|
||||||
wn.require('app/setup/doctype/notification_control/notification_control.js');
|
|
||||||
|
|
||||||
// ONLOAD
|
// ONLOAD
|
||||||
// ================================================================================================
|
// ================================================================================================
|
||||||
@ -327,9 +326,7 @@ cur_frm.pformat.sales_order_no= function(doc, cdt, cdn){
|
|||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
|
cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
|
||||||
var args = {
|
if(cint(wn.boot.notification_settings.delivery_note)) {
|
||||||
type: 'Delivery Note',
|
cur_frm.email_doc(wn.boot.notification_settings.delivery_note);
|
||||||
doctype: 'Delivery Note'
|
|
||||||
}
|
}
|
||||||
cur_frm.cscript.notify(doc, args);
|
|
||||||
}
|
}
|
@ -21,7 +21,6 @@ cur_frm.cscript.other_fname = "purchase_tax_details";
|
|||||||
wn.require('app/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
|
wn.require('app/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
|
||||||
wn.require('app/buying/doctype/purchase_common/purchase_common.js');
|
wn.require('app/buying/doctype/purchase_common/purchase_common.js');
|
||||||
wn.require('app/utilities/doctype/sms_control/sms_control.js');
|
wn.require('app/utilities/doctype/sms_control/sms_control.js');
|
||||||
wn.require('app/setup/doctype/notification_control/notification_control.js');
|
|
||||||
|
|
||||||
//========================== On Load ================================================================
|
//========================== On Load ================================================================
|
||||||
cur_frm.cscript.onload = function(doc, cdt, cdn) {
|
cur_frm.cscript.onload = function(doc, cdt, cdn) {
|
||||||
@ -311,9 +310,7 @@ cur_frm.pformat.purchase_order_no = function(doc, cdt, cdn){
|
|||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
|
cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
|
||||||
var args = {
|
if(cint(wn.boot.notification_settings.purchase_receipt)) {
|
||||||
type: 'Purchase Receipt',
|
cur_frm.email_doc(wn.boot.notification_settings.purchase_receipt);
|
||||||
doctype: 'Purchase Receipt'
|
|
||||||
}
|
}
|
||||||
cur_frm.cscript.notify(doc, args);
|
|
||||||
}
|
}
|
||||||
|
@ -238,9 +238,11 @@ class TransactionBase:
|
|||||||
return dcc
|
return dcc
|
||||||
|
|
||||||
|
|
||||||
def get_formatted_message(self, args):
|
def load_notification_message(self):
|
||||||
""" get formatted message for auto notification"""
|
dt = self.doc.doctype.lower().replace(" ", "_")
|
||||||
return get_obj('Notification Control').get_formatted_message(args)
|
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):
|
def add_communication_list(self):
|
||||||
# remove communications if present
|
# remove communications if present
|
||||||
|
Loading…
Reference in New Issue
Block a user