fixes related to --> clear locals and then sync locals when whole doclist is passed

This commit is contained in:
Anand Doshi 2012-06-25 20:05:35 +05:30
parent 815ad3fa28
commit 8ae5ba9abf
39 changed files with 103 additions and 79 deletions

View File

@ -44,7 +44,7 @@ class DocType:
dl = sql("select t1.name, t1.cheque_no, t1.cheque_date, t2.debit, t2.credit, t1.posting_date, t2.against_account from `tabJournal Voucher` t1, `tabJournal Voucher Detail` t2 where t2.parent = t1.name and t2.account = %s and (clearance_date is null or clearance_date = '0000-00-00' or clearance_date = '') and (t1.cheque_no is not null or t1.cheque_no != '') and t1.posting_date >= %s and t1.posting_date <= %s and t1.docstatus=1", (self.doc.bank_account, self.doc.from_date, self.doc.to_date)) dl = sql("select t1.name, t1.cheque_no, t1.cheque_date, t2.debit, t2.credit, t1.posting_date, t2.against_account from `tabJournal Voucher` t1, `tabJournal Voucher Detail` t2 where t2.parent = t1.name and t2.account = %s and (clearance_date is null or clearance_date = '0000-00-00' or clearance_date = '') and (t1.cheque_no is not null or t1.cheque_no != '') and t1.posting_date >= %s and t1.posting_date <= %s and t1.docstatus=1", (self.doc.bank_account, self.doc.from_date, self.doc.to_date))
self.doc.clear_table(self.doclist, 'entries') self.doclist = self.doc.clear_table(self.doclist, 'entries')
self.doc.total_amount = 0.0 self.doc.total_amount = 0.0
for d in dl: for d in dl:

View File

@ -20,6 +20,6 @@ cur_frm.cscript.onload = function(doc,cdt,cdn){
refresh_field('budget_distribution_details'); refresh_field('budget_distribution_details');
} }
$c('runserverobj',args={'method' : 'get_months', 'docs' : compress_doclist([doc])},callback1); $c('runserverobj',args={'method' : 'get_months', 'docs' : compress_doclist(make_doclist(doc.doctype, doc.name))},callback1);
} }
} }

View File

@ -77,7 +77,7 @@ class DocType(TransactionBase):
# Get TDS Return acknowledgement # Get TDS Return acknowledgement
#------------------------------- #-------------------------------
def get_return_ack_details(self): def get_return_ack_details(self):
self.doc.clear_table(self.doclist, 'form_16A_ack_details') self.doclist = self.doc.clear_table(self.doclist, 'form_16A_ack_details')
if not (self.doc.from_date and self.doc.to_date): if not (self.doc.from_date and self.doc.to_date):
msgprint("Please enter From Date, To Date") msgprint("Please enter From Date, To Date")
else: else:
@ -90,7 +90,7 @@ class DocType(TransactionBase):
# Get tds payment details # Get tds payment details
#------------------------------- #-------------------------------
def get_tds(self): def get_tds(self):
self.doc.clear_table(self.doclist,'form_16A_tax_details') self.doclist = self.doc.clear_table(self.doclist,'form_16A_tax_details')
import datetime import datetime
if self.doc.from_date and self.doc.to_date and self.doc.tds_category: if self.doc.from_date and self.doc.to_date and self.doc.tds_category:
tot=0.0 tot=0.0

View File

@ -289,7 +289,7 @@ class DocType:
def get_advances(self, obj, account_head, table_name,table_field_name, dr_or_cr): def get_advances(self, obj, account_head, table_name,table_field_name, dr_or_cr):
jv_detail = webnotes.conn.sql("select t1.name, t1.remark, t2.%s, t2.name, t1.ded_amount from `tabJournal Voucher` t1, `tabJournal Voucher Detail` t2 where t1.name = t2.parent and (t2.against_voucher is null or t2.against_voucher = '') and (t2.against_invoice is null or t2.against_invoice = '') and (t2.against_jv is null or t2.against_jv = '') and t2.account = '%s' and t2.is_advance = 'Yes' and t1.docstatus = 1 order by t1.voucher_date " % (dr_or_cr,account_head)) jv_detail = webnotes.conn.sql("select t1.name, t1.remark, t2.%s, t2.name, t1.ded_amount from `tabJournal Voucher` t1, `tabJournal Voucher Detail` t2 where t1.name = t2.parent and (t2.against_voucher is null or t2.against_voucher = '') and (t2.against_invoice is null or t2.against_invoice = '') and (t2.against_jv is null or t2.against_jv = '') and t2.account = '%s' and t2.is_advance = 'Yes' and t1.docstatus = 1 order by t1.voucher_date " % (dr_or_cr,account_head))
# clear advance table # clear advance table
obj.doc.clear_table(obj.doclist,table_field_name) obj.doclist = obj.doc.clear_table(obj.doclist,table_field_name)
# Create advance table # Create advance table
for d in jv_detail: for d in jv_detail:
add = addchild(obj.doc, table_field_name, table_name, 1, obj.doclist) add = addchild(obj.doc, table_field_name, table_name, 1, obj.doclist)
@ -301,6 +301,8 @@ class DocType:
if table_name == 'Purchase Invoice Advance': if table_name == 'Purchase Invoice Advance':
add.tds_amount = flt(d[4]) add.tds_amount = flt(d[4])
return obj.doclist
# Clear rows which is not adjusted # Clear rows which is not adjusted
#------------------------------------- #-------------------------------------
def clear_advances(self, obj,table_name,table_field_name): def clear_advances(self, obj,table_name,table_field_name):

View File

@ -378,7 +378,7 @@ class DocType:
# get outstanding invoices # get outstanding invoices
# ------------------------- # -------------------------
def get_outstanding_invoices(self): def get_outstanding_invoices(self):
self.doc.clear_table(self.doclist, 'entries') self.doclist = self.doc.clear_table(self.doclist, 'entries')
total = 0 total = 0
for d in self.get_values(): for d in self.get_values():
total += flt(d[2]) total += flt(d[2])

View File

@ -73,7 +73,7 @@ class DocType:
Payment entry will be decided based on account type (Dr/Cr) Payment entry will be decided based on account type (Dr/Cr)
""" """
self.doc.clear_table(self.doclist, 'ir_payment_details') self.doclist = self.doc.clear_table(self.doclist, 'ir_payment_details')
gle = self.get_gl_entries() gle = self.get_gl_entries()
self.create_payment_table(gle) self.create_payment_table(gle)

View File

@ -170,7 +170,7 @@ class DocType(TransactionBase):
# Advance Allocation # Advance Allocation
# ------------------- # -------------------
def get_advances(self): def get_advances(self):
get_obj('GL Control').get_advances( self, self.doc.credit_to, 'Purchase Invoice Advance','advance_allocation_details','debit') self.doclist = get_obj('GL Control').get_advances(self, self.doc.credit_to, 'Purchase Invoice Advance','advance_allocation_details','debit')
# ============= OTHER CHARGES ==================== # ============= OTHER CHARGES ====================
@ -183,7 +183,7 @@ class DocType(TransactionBase):
# Get Purchase Taxes and Charges Master # Get Purchase Taxes and Charges Master
# ----------------------------------------------------------- # -----------------------------------------------------------
def get_purchase_tax_details(self): def get_purchase_tax_details(self):
return get_obj('Purchase Common').get_purchase_tax_details(self) self.doclist = get_obj('Purchase Common').get_purchase_tax_details(self)
def get_rate1(self,acc): def get_rate1(self,acc):

View File

@ -140,13 +140,13 @@ class DocType(TransactionBase):
# Delivery Note # Delivery Note
if self.doc.delivery_note_main: if self.doc.delivery_note_main:
self.validate_prev_docname('delivery note') self.validate_prev_docname('delivery note')
self.doc.clear_table(self.doclist,'other_charges') self.doclist = self.doc.clear_table(self.doclist,'other_charges')
self.doclist = get_obj('DocType Mapper', 'Delivery Note-Sales Invoice').dt_map('Delivery Note', 'Sales Invoice', self.doc.delivery_note_main, self.doc, self.doclist, "[['Delivery Note', 'Sales Invoice'],['Delivery Note Item', 'Sales Invoice Item'],['Sales Taxes and Charges','Sales Taxes and Charges'],['Sales Team','Sales Team']]") self.doclist = get_obj('DocType Mapper', 'Delivery Note-Sales Invoice').dt_map('Delivery Note', 'Sales Invoice', self.doc.delivery_note_main, self.doc, self.doclist, "[['Delivery Note', 'Sales Invoice'],['Delivery Note Item', 'Sales Invoice Item'],['Sales Taxes and Charges','Sales Taxes and Charges'],['Sales Team','Sales Team']]")
self.get_income_account('entries') self.get_income_account('entries')
# Sales Order # Sales Order
elif self.doc.sales_order_main: elif self.doc.sales_order_main:
self.validate_prev_docname('sales order') self.validate_prev_docname('sales order')
self.doc.clear_table(self.doclist,'other_charges') self.doclist = self.doc.clear_table(self.doclist,'other_charges')
get_obj('DocType Mapper', 'Sales Order-Sales Invoice').dt_map('Sales Order', 'Sales Invoice', self.doc.sales_order_main, self.doc, self.doclist, "[['Sales Order', 'Sales Invoice'],['Sales Order Item', 'Sales Invoice Item'],['Sales Taxes and Charges','Sales Taxes and Charges'], ['Sales Team', 'Sales Team']]") get_obj('DocType Mapper', 'Sales Order-Sales Invoice').dt_map('Sales Order', 'Sales Invoice', self.doc.sales_order_main, self.doc, self.doclist, "[['Sales Order', 'Sales Invoice'],['Sales Order Item', 'Sales Invoice Item'],['Sales Taxes and Charges','Sales Taxes and Charges'], ['Sales Team', 'Sales Team']]")
self.get_income_account('entries') self.get_income_account('entries')
@ -240,18 +240,17 @@ class DocType(TransactionBase):
# Load Default Charges # Load Default Charges
# ---------------------------------------------------------- # ----------------------------------------------------------
def load_default_taxes(self): def load_default_taxes(self):
return get_obj('Sales Common').load_default_taxes(self) self.doclist = get_obj('Sales Common').load_default_taxes(self)
# Get Sales Taxes and Charges Master Details # Get Sales Taxes and Charges Master Details
# -------------------------- # --------------------------
def get_other_charges(self): def get_other_charges(self):
return get_obj('Sales Common').get_other_charges(self) self.doclist = get_obj('Sales Common').get_other_charges(self)
# Get Advances # Get Advances
# ------------- # -------------
def get_advances(self): def get_advances(self):
get_obj('GL Control').get_advances(self, self.doc.debit_to, 'Sales Invoice Advance', 'advance_adjustment_details', 'credit') self.doclist = get_obj('GL Control').get_advances(self, self.doc.debit_to, 'Sales Invoice Advance', 'advance_adjustment_details', 'credit')
#pull project customer #pull project customer
#------------------------- #-------------------------

View File

@ -67,7 +67,7 @@ class DocType:
# Fetch voucherwise tds details # Fetch voucherwise tds details
#------------------------------- #-------------------------------
def get_tds_list(self): def get_tds_list(self):
self.doc.clear_table(self.doclist,'tds_payment_details') self.doclist = self.doc.clear_table(self.doclist,'tds_payment_details')
self.doc.total_tds = 0 self.doc.total_tds = 0
import datetime import datetime
if not self.doc.tds_category: if not self.doc.tds_category:

View File

@ -621,7 +621,7 @@ class DocType(TransactionBase):
# Get other charges from Master # Get other charges from Master
# ================================================================================= # =================================================================================
def get_purchase_tax_details(self,obj): def get_purchase_tax_details(self,obj):
self.doc.clear_table(obj.doclist,'purchase_tax_details') obj.doclist = self.doc.clear_table(obj.doclist,'purchase_tax_details')
idx = 0 idx = 0
other_charge = sql("select category, add_deduct_tax, charge_type,row_id,description,account_head,rate,tax_amount from `tabPurchase Taxes and Charges` where parent = '%s' order by idx" %(obj.doc.purchase_other_charges), as_dict = 1) other_charge = sql("select category, add_deduct_tax, charge_type,row_id,description,account_head,rate,tax_amount from `tabPurchase Taxes and Charges` where parent = '%s' order by idx" %(obj.doc.purchase_other_charges), as_dict = 1)
for other in other_charge: for other in other_charge:
@ -636,6 +636,7 @@ class DocType(TransactionBase):
d.tax_amount = flt(other['tax_amount']) d.tax_amount = flt(other['tax_amount'])
d.idx = idx d.idx = idx
idx += 1 idx += 1
return obj.doclist
# Get Tax rate if account type is TAX # Get Tax rate if account type is TAX

View File

@ -291,7 +291,7 @@ class DocType(TransactionBase):
if self.doc.is_subcontracted == 'Yes': if self.doc.is_subcontracted == 'Yes':
self.add_bom(d) self.add_bom(d)
else: else:
self.doc.clear_table(self.doclist,'po_raw_material_details',1) self.doclist = self.doc.clear_table(self.doclist,'po_raw_material_details',1)
self.doc.save() self.doc.save()
elif item_det[0][1] == 'No': elif item_det[0][1] == 'No':
self.add_bom(d) self.add_bom(d)
@ -371,4 +371,4 @@ class DocType(TransactionBase):
# **** Pull details from other charges master (Get Other Charges) **** # **** Pull details from other charges master (Get Other Charges) ****
def get_purchase_tax_details(self): def get_purchase_tax_details(self):
return get_obj('Purchase Common').get_purchase_tax_details(self) self.doclist = get_obj('Purchase Common').get_purchase_tax_details(self)

View File

@ -45,7 +45,7 @@ class DocType:
def get_item_specification_details(self): def get_item_specification_details(self):
self.doc.clear_table(self.doclist, 'qa_specification_details') self.doclist = self.doc.clear_table(self.doclist, 'qa_specification_details')
specification = sql("select specification, value from `tabItem Quality Inspection Parameter` where parent = '%s' order by idx" % (self.doc.item_code)) specification = sql("select specification, value from `tabItem Quality Inspection Parameter` where parent = '%s' order by idx" % (self.doc.item_code))
for d in specification: for d in specification:
child = addchild(self.doc, 'qa_specification_details', 'Quality Inspection Reading', 1, self.doclist) child = addchild(self.doc, 'qa_specification_details', 'Quality Inspection Reading', 1, self.doclist)

View File

@ -48,7 +48,7 @@ class DocType:
if not self.doc.kra_template: if not self.doc.kra_template:
msgprint("Please select Appraisal Template to be be fetched") msgprint("Please select Appraisal Template to be be fetched")
raise Exception raise Exception
self.doc.clear_table(self.doclist,'appraisal_details') self.doclist = self.doc.clear_table(self.doclist,'appraisal_details')
get_obj('DocType Mapper', 'Appraisal Template-Appraisal').dt_map('Appraisal Template', 'Appraisal', self.doc.kra_template, self.doc, self.doclist, "[['Appraisal Template','Appraisal'],['Appraisal Template Goal', 'Appraisal Goal']]") get_obj('DocType Mapper', 'Appraisal Template-Appraisal').dt_map('Appraisal Template', 'Appraisal', self.doc.kra_template, self.doc, self.doclist, "[['Appraisal Template','Appraisal'],['Appraisal Template Goal', 'Appraisal Goal']]")
def validate_dates(self): def validate_dates(self):

View File

@ -113,7 +113,7 @@ class DocType:
# clear table # clear table
# ------------ # ------------
def clear_table(self): def clear_table(self):
self.doc.clear_table(self.doclist,'holiday_list_details') self.doclist = self.doc.clear_table(self.doclist,'holiday_list_details')
# ***************************************** validate ************************************************* # ***************************************** validate *************************************************

View File

@ -24,7 +24,7 @@ cur_frm.cscript.onload = function(doc,dt,dn){
// Validation For To Date // Validation For To Date
// ================================================================================================ // ================================================================================================
cur_frm.cscript.to_date = function(doc, cdt, cdn) { cur_frm.cscript.to_date = function(doc, cdt, cdn) {
$c('runserverobj', args={'method':'to_date_validation','docs':compress_doclist([doc])}, $c('runserverobj', args={'method':'to_date_validation','docs':compress_doclist(make_doclist(doc.doctype, doc.name))},
function(r, rt) { function(r, rt) {
var doc = locals[cdt][cdn]; var doc = locals[cdt][cdn];
if (r.message) { if (r.message) {

View File

@ -70,8 +70,8 @@ class DocType(TransactionBase):
# Pull struct details # Pull struct details
#======================================================= #=======================================================
def pull_sal_struct(self, struct): def pull_sal_struct(self, struct):
self.doc.clear_table(self.doclist, 'earning_details') self.doclist = self.doc.clear_table(self.doclist, 'earning_details')
self.doc.clear_table(self.doclist, 'deduction_details') self.doclist = self.doc.clear_table(self.doclist, 'deduction_details')
get_obj('DocType Mapper', 'Salary Structure-Salary Slip').dt_map('Salary Structure', 'Salary Slip', struct, self.doc, self.doclist, "[['Salary Structure', 'Salary Slip'],['Salary Structure Earning', 'Salary Slip Earning'],['Salary Structure Deduction','Salary Slip Deduction']]") get_obj('DocType Mapper', 'Salary Structure-Salary Slip').dt_map('Salary Structure', 'Salary Slip', struct, self.doc, self.doclist, "[['Salary Structure', 'Salary Slip'],['Salary Structure Earning', 'Salary Slip Earning'],['Salary Structure Deduction','Salary Slip Deduction']]")

View File

@ -322,7 +322,7 @@ class DocType:
def add_to_flat_bom_detail(self, is_submit = 0): def add_to_flat_bom_detail(self, is_submit = 0):
"Add items to Flat BOM table" "Add items to Flat BOM table"
self.doc.clear_table(self.doclist, 'flat_bom_details', 1) self.doclist = self.doc.clear_table(self.doclist, 'flat_bom_details', 1)
for d in self.cur_flat_bom_items: for d in self.cur_flat_bom_items:
ch = addchild(self.doc, 'flat_bom_details', 'BOM Explosion Item', 1, self.doclist) ch = addchild(self.doc, 'flat_bom_details', 'BOM Explosion Item', 1, self.doclist)
for i in d.keys(): for i in d.keys():

View File

@ -58,13 +58,13 @@ class DocType:
def clear_so_table(self): def clear_so_table(self):
""" Clears sales order table""" """ Clears sales order table"""
self.doc.clear_table(self.doclist, 'pp_so_details') self.doclist = self.doc.clear_table(self.doclist, 'pp_so_details')
def clear_item_table(self): def clear_item_table(self):
""" Clears item table""" """ Clears item table"""
self.doc.clear_table(self.doclist, 'pp_details') self.doclist = self.doc.clear_table(self.doclist, 'pp_details')

View File

@ -95,5 +95,5 @@ cur_frm.cscript.add = function(doc, dt, dn) {
cur_frm.mylist.run(); cur_frm.mylist.run();
} }
$c_obj([doc],'add_update','',callback); $c_obj(make_doclist(doc.doctype, doc.name),'add_update','',callback);
} }

View File

@ -87,7 +87,7 @@ cur_frm.cscript.item_code=function(doc,cdt,cdn){
// =============================================================== // ===============================================================
cur_frm.cscript['Create Customer'] = function(){ cur_frm.cscript['Create Customer'] = function(){
var doc = cur_frm.doc; var doc = cur_frm.doc;
$c('runserverobj',args={ 'method':'check_status', 'docs':compress_doclist([doc])}, $c('runserverobj',args={ 'method':'check_status', 'docs':compress_doclist(make_doclist(doc.doctype, doc.name))},
function(r,rt){ function(r,rt){
if(r.message == 'Converted'){ if(r.message == 'Converted'){
msgprint("This lead is already converted to customer"); msgprint("This lead is already converted to customer");
@ -124,7 +124,7 @@ cur_frm.cscript.send_email = function(doc,cdt,cdn){
// =============================================================== // ===============================================================
cur_frm.cscript['Create Opportunity'] = function(){ cur_frm.cscript['Create Opportunity'] = function(){
var doc = cur_frm.doc; var doc = cur_frm.doc;
$c('runserverobj',args={ 'method':'check_status', 'docs':compress_doclist([doc])}, $c('runserverobj',args={ 'method':'check_status', 'docs':compress_doclist(make_doclist(doc.doctype, doc.name))},
function(r,rt){ function(r,rt){
if(r.message == 'Converted'){ if(r.message == 'Converted'){
msgprint("This lead is now converted to customer. Please create enquiry on behalf of customer"); msgprint("This lead is now converted to customer. Please create enquiry on behalf of customer");

View File

@ -53,7 +53,7 @@ class DocType(TransactionBase):
# Pull Opportunity Details # Pull Opportunity Details
# -------------------- # --------------------
def pull_enq_details(self): def pull_enq_details(self):
self.doc.clear_table(self.doclist, 'quotation_details') self.doclist = self.doc.clear_table(self.doclist, 'quotation_details')
get_obj('DocType Mapper', 'Opportunity-Quotation').dt_map('Opportunity', 'Quotation', self.doc.enq_no, self.doc, self.doclist, "[['Opportunity', 'Quotation'],['Opportunity Item', 'Quotation Item']]") get_obj('DocType Mapper', 'Opportunity-Quotation').dt_map('Opportunity', 'Quotation', self.doc.enq_no, self.doc, self.doclist, "[['Opportunity', 'Quotation'],['Opportunity Item', 'Quotation Item']]")
self.get_adj_percent() self.get_adj_percent()
@ -115,12 +115,12 @@ class DocType(TransactionBase):
# Load Default Charges # Load Default Charges
# ---------------------------------------------------------- # ----------------------------------------------------------
def load_default_taxes(self): def load_default_taxes(self):
return get_obj('Sales Common').load_default_taxes(self) self.doclist = get_obj('Sales Common').load_default_taxes(self)
# Pull details from other charges master (Get Sales Taxes and Charges Master) # Pull details from other charges master (Get Sales Taxes and Charges Master)
# ---------------------------------------------------------- # ----------------------------------------------------------
def get_other_charges(self): def get_other_charges(self):
return get_obj('Sales Common').get_other_charges(self) self.doclist = get_obj('Sales Common').get_other_charges(self)
# GET TERMS AND CONDITIONS # GET TERMS AND CONDITIONS

View File

@ -72,9 +72,11 @@ class DocType(TransactionBase):
# Get Sales Person Details # Get Sales Person Details
# ========================== # ==========================
# TODO: To be deprecated if not in use
def get_sales_person_details(self, obj): def get_sales_person_details(self, obj):
if obj.doc.doctype != 'Quotation': if obj.doc.doctype != 'Quotation':
obj.doc.clear_table(obj.doclist,'sales_team') obj.doclist = obj.doc.clear_table(obj.doclist,'sales_team')
idx = 0 idx = 0
for d in webnotes.conn.sql("select sales_person, allocated_percentage, allocated_amount, incentives from `tabSales Team` where parent = '%s'" % obj.doc.customer): for d in webnotes.conn.sql("select sales_person, allocated_percentage, allocated_amount, incentives from `tabSales Team` where parent = '%s'" % obj.doc.customer):
ch = addchild(obj.doc, 'sales_team', 'Sales Team', 1, obj.doclist) ch = addchild(obj.doc, 'sales_team', 'Sales Team', 1, obj.doclist)
@ -84,6 +86,7 @@ class DocType(TransactionBase):
ch.incentives = d and flt(d[3]) or 0 ch.incentives = d and flt(d[3]) or 0
ch.idx = idx ch.idx = idx
idx += 1 idx += 1
return obj.doclist
# Get customer's contact person details # Get customer's contact person details
@ -215,15 +218,15 @@ class DocType(TransactionBase):
# ==================== # ====================
def load_default_taxes(self, obj): def load_default_taxes(self, obj):
if cstr(obj.doc.charge): if cstr(obj.doc.charge):
self.get_other_charges(obj) return self.get_other_charges(obj)
else: else:
self.get_other_charges(obj, 1) return self.get_other_charges(obj, 1)
# Get other charges from Master # Get other charges from Master
# ================================================================================= # =================================================================================
def get_other_charges(self,obj, default=0): def get_other_charges(self,obj, default=0):
obj.doc.clear_table(obj.doclist,'other_charges') obj.doclist = obj.doc.clear_table(obj.doclist, 'other_charges')
if not getlist(obj.doclist, 'other_charges'): if not getlist(obj.doclist, 'other_charges'):
if default: add_cond = 'ifnull(t2.is_default,0) = 1' if default: add_cond = 'ifnull(t2.is_default,0) = 1'
else: add_cond = 't1.parent = "'+cstr(obj.doc.charge)+'"' else: add_cond = 't1.parent = "'+cstr(obj.doc.charge)+'"'
@ -253,6 +256,7 @@ class DocType(TransactionBase):
d.included_in_print_rate = cint(d.included_in_print_rate) d.included_in_print_rate = cint(d.included_in_print_rate)
d.idx = idx d.idx = idx
idx += 1 idx += 1
return obj.doclist
# Get TERMS AND CONDITIONS # Get TERMS AND CONDITIONS
# ======================================================================================= # =======================================================================================
@ -484,11 +488,22 @@ class DocType(TransactionBase):
self.cleanup_packing_list(obj, parent_items) self.cleanup_packing_list(obj, parent_items)
def cleanup_packing_list(self, obj, parent_items): def cleanup_packing_list(self, obj, parent_items):
"""Remove all those parent items which are no longer present in main item table""" """Remove all those child items which are no longer present in main item table"""
delete_list = []
for d in getlist(obj.doclist, 'packing_details'): for d in getlist(obj.doclist, 'packing_details'):
if [d.parent_item, d.parent_detail_docname] not in parent_items: if [d.parent_item, d.parent_detail_docname] not in parent_items:
d.parent = '' # mark for deletion from doclist
delete_list.append(d.name)
if not delete_list: return
# delete from doclist
obj.doclist = filter(lambda d: d.name not in delete_list, obj.doclist)
# delete from db
webnotes.conn.sql("""\
delete from `tabDelivery Note Packing Item`
where name in ("%s")""" % '", "'.join(delete_list))
# Get total in words # Get total in words
# ================================================================== # ==================================================================

View File

@ -35,8 +35,9 @@ convert_to_lists = webnotes.conn.convert_to_lists
from utilities.transaction_base import TransactionBase from utilities.transaction_base import TransactionBase
class DocType(TransactionBase): class DocType(TransactionBase):
def __init__(self, doc, doclist=[]): def __init__(self, doc, doclist=None):
self.doc = doc self.doc = doc
if not doclist: doclist = []
self.doclist = doclist self.doclist = doclist
self.tname = 'Sales Order Item' self.tname = 'Sales Order Item'
self.fname = 'sales_order_details' self.fname = 'sales_order_details'
@ -55,10 +56,10 @@ class DocType(TransactionBase):
# Pull Quotation Items # Pull Quotation Items
# ----------------------- # -----------------------
def pull_quotation_details(self): def pull_quotation_details(self):
self.doc.clear_table(self.doclist, 'other_charges') self.doclist = self.doc.clear_table(self.doclist, 'other_charges')
self.doc.clear_table(self.doclist, 'sales_order_details') self.doclist = self.doc.clear_table(self.doclist, 'sales_order_details')
self.doc.clear_table(self.doclist, 'sales_team') self.doclist = self.doc.clear_table(self.doclist, 'sales_team')
self.doc.clear_table(self.doclist, 'tc_details') self.doclist = self.doc.clear_table(self.doclist, 'tc_details')
if self.doc.quotation_no: if self.doc.quotation_no:
get_obj('DocType Mapper', 'Quotation-Sales Order').dt_map('Quotation', 'Sales Order', self.doc.quotation_no, self.doc, self.doclist, "[['Quotation', 'Sales Order'],['Quotation Item', 'Sales Order Item'],['Sales Taxes and Charges','Sales Taxes and Charges'],['Sales Team','Sales Team'],['TC Detail','TC Detail']]") get_obj('DocType Mapper', 'Quotation-Sales Order').dt_map('Quotation', 'Sales Order', self.doc.quotation_no, self.doc, self.doclist, "[['Quotation', 'Sales Order'],['Quotation Item', 'Sales Order Item'],['Sales Taxes and Charges','Sales Taxes and Charges'],['Sales Team','Sales Team'],['TC Detail','TC Detail']]")
else: else:
@ -135,12 +136,12 @@ class DocType(TransactionBase):
# Load Default Charges # Load Default Charges
# ---------------------------------------------------------- # ----------------------------------------------------------
def load_default_taxes(self): def load_default_taxes(self):
return get_obj('Sales Common').load_default_taxes(self) self.doclist = get_obj('Sales Common').load_default_taxes(self)
# Pull details from other charges master (Get Sales Taxes and Charges Master) # Pull details from other charges master (Get Sales Taxes and Charges Master)
# ---------------------------------------------------------- # ----------------------------------------------------------
def get_other_charges(self): def get_other_charges(self):
return get_obj('Sales Common').get_other_charges(self) self.doclist = get_obj('Sales Common').get_other_charges(self)
# GET TERMS & CONDITIONS # GET TERMS & CONDITIONS

View File

@ -55,7 +55,7 @@ cur_frm.cscript.make_history_list = function(parent,doc){
// get sates on country trigger // get sates on country trigger
// ----------------------------- // -----------------------------
cur_frm.cscript.get_states=function(doc,dt,dn){ cur_frm.cscript.get_states=function(doc,dt,dn){
$c('runserverobj', args={'method':'check_state', 'docs':compress_doclist([doc])}, $c('runserverobj', args={'method':'check_state', 'docs':compress_doclist(make_doclist(doc.doctype, doc.name))},
function(r,rt){ function(r,rt){
if(r.message) { if(r.message) {
set_field_options('state', r.message); set_field_options('state', r.message);

View File

@ -19,7 +19,7 @@ cur_frm.cscript.onload = function(doc, cdt, cdn){
var callback = function(r, rt){ var callback = function(r, rt){
set_field_options('select_doc_for_series', r.message); set_field_options('select_doc_for_series', r.message);
} }
$c_obj([doc],'get_transactions','',callback); $c_obj(make_doclist(doc.doctype, doc.name),'get_transactions','',callback);
cur_frm.cscript.refresh(); cur_frm.cscript.refresh();
// add page head // add page head
//var ph = new PageHeader(cur_frm.fields_dict['head_html'].wrapper, 'Setup Series', 'Set prefix for numbering series on your transactions'); //var ph = new PageHeader(cur_frm.fields_dict['head_html'].wrapper, 'Setup Series', 'Set prefix for numbering series on your transactions');
@ -36,5 +36,5 @@ cur_frm.cscript.select_doc_for_series = function(doc, cdt, cdn) {
refresh_field('set_options'); refresh_field('set_options');
} }
$c_obj([doc],'get_options','',callback) $c_obj(make_doclist(doc.doctype, doc.name),'get_options','',callback)
} }

View File

@ -32,6 +32,6 @@ cur_frm.cscript.refresh = function(doc, cdt, cdn) {
cur_frm.cscript.clear_prices = function(doc, cdt, cdn) { cur_frm.cscript.clear_prices = function(doc, cdt, cdn) {
if(confirm("This action will clear all rates for '"+ doc.name +"' from the Item Master and cannot be un-done. Are you sure you want to continue?")) { if(confirm("This action will clear all rates for '"+ doc.name +"' from the Item Master and cannot be un-done. Are you sure you want to continue?")) {
$c_obj([doc], 'clear_prices', '', function(r, rt) { }); $c_obj(make_doclist(doc.doctype, doc.name), 'clear_prices', '', function(r, rt) { });
} }
} }

View File

@ -26,7 +26,7 @@ cur_frm.cscript.onload = function(){
} }
cur_frm.cscript.country = function(doc, cdt, cdn) { cur_frm.cscript.country = function(doc, cdt, cdn) {
var mydoc=doc; var mydoc=doc;
$c('runserverobj', args={'method':'check_state', 'docs':compress_doclist([doc])}, $c('runserverobj', args={'method':'check_state', 'docs':compress_doclist(make_doclist(doc.doctype, doc.name))},
function(r,rt){ function(r,rt){
if(r.message) { if(r.message) {
var doc = locals[mydoc.doctype][mydoc.name]; var doc = locals[mydoc.doctype][mydoc.name];

View File

@ -65,7 +65,7 @@ class DocType(TransactionBase):
# *************** Pull Sales Order Items ************************ # *************** Pull Sales Order Items ************************
def pull_sales_order_details(self): def pull_sales_order_details(self):
self.validate_prev_docname() self.validate_prev_docname()
self.doc.clear_table(self.doclist,'other_charges') self.doclist = self.doc.clear_table(self.doclist,'other_charges')
if self.doc.sales_order_no: if self.doc.sales_order_no:
get_obj('DocType Mapper', 'Sales Order-Delivery Note').dt_map('Sales Order', 'Delivery Note', self.doc.sales_order_no, self.doc, self.doclist, "[['Sales Order', 'Delivery Note'],['Sales Order Item', 'Delivery Note Item'],['Sales Taxes and Charges','Sales Taxes and Charges'],['Sales Team','Sales Team']]") get_obj('DocType Mapper', 'Sales Order-Delivery Note').dt_map('Sales Order', 'Delivery Note', self.doc.sales_order_no, self.doc, self.doclist, "[['Sales Order', 'Delivery Note'],['Sales Order Item', 'Delivery Note Item'],['Sales Taxes and Charges','Sales Taxes and Charges'],['Sales Team','Sales Team']]")
@ -151,12 +151,12 @@ class DocType(TransactionBase):
# Load Default Charges # Load Default Charges
# ---------------------------------------------------------- # ----------------------------------------------------------
def load_default_taxes(self): def load_default_taxes(self):
return get_obj('Sales Common').load_default_taxes(self) self.doclist = get_obj('Sales Common').load_default_taxes(self)
# **** Pull details from other charges master (Get Sales Taxes and Charges Master) **** # **** Pull details from other charges master (Get Sales Taxes and Charges Master) ****
def get_other_charges(self): def get_other_charges(self):
return get_obj('Sales Common').get_other_charges(self) self.doclist = get_obj('Sales Common').get_other_charges(self)
#check in manage account if sales order required or not. #check in manage account if sales order required or not.

View File

@ -43,7 +43,7 @@ class DocType:
def get_purchase_receipts(self): def get_purchase_receipts(self):
""" Get purchase receipts for given period """ """ Get purchase receipts for given period """
self.doc.clear_table(self.doclist,'lc_pr_details',1) self.doclist = self.doc.clear_table(self.doclist,'lc_pr_details',1)
self.check_mandatory() self.check_mandatory()
pr = sql("select name from `tabPurchase Receipt` where docstatus = 1 and posting_date >= '%s' and posting_date <= '%s' and currency = '%s' order by name " % (self.doc.from_pr_date, self.doc.to_pr_date, self.doc.currency), as_dict = 1) pr = sql("select name from `tabPurchase Receipt` where docstatus = 1 and posting_date >= '%s' and posting_date <= '%s' and currency = '%s' order by name " % (self.doc.from_pr_date, self.doc.to_pr_date, self.doc.currency), as_dict = 1)
@ -58,7 +58,7 @@ class DocType:
def get_landed_cost_master_details(self): def get_landed_cost_master_details(self):
""" pull details from landed cost master""" """ pull details from landed cost master"""
self.doc.clear_table(self.doclist, 'landed_cost_details') self.doclist = self.doc.clear_table(self.doclist, 'landed_cost_details')
idx = 0 idx = 0
landed_cost = sql("select account_head, description from `tabLanded Cost Master Detail` where parent=%s", (self.doc.landed_cost), as_dict = 1) landed_cost = sql("select account_head, description from `tabLanded Cost Master Detail` where parent=%s", (self.doc.landed_cost), as_dict = 1)
for cost in landed_cost: for cost in landed_cost:

View File

@ -370,7 +370,7 @@ class DocType(TransactionBase):
raise Exception raise Exception
self.add_bom(d) self.add_bom(d)
else: else:
self.doc.clear_table(self.doclist,'pr_raw_material_details',1) self.doclist = self.doc.clear_table(self.doclist,'pr_raw_material_details',1)
self.doc.save() self.doc.save()
elif item_det[0][1] == 'No': elif item_det[0][1] == 'No':
if not self.doc.supplier_warehouse: if not self.doc.supplier_warehouse:
@ -479,4 +479,4 @@ class DocType(TransactionBase):
# **** Pull details from other charges master (Get Other Charges) **** # **** Pull details from other charges master (Get Other Charges) ****
def get_purchase_tax_details(self): def get_purchase_tax_details(self):
return get_obj('Purchase Common').get_purchase_tax_details(self) self.doclist = get_obj('Purchase Common').get_purchase_tax_details(self)

View File

@ -57,7 +57,7 @@ class DocType :
# Create Item Table # Create Item Table
# ----------------------------- # -----------------------------
def create_item_table(self, det): def create_item_table(self, det):
self.doc.clear_table(self.doclist, 'return_details', 1) self.doclist = self.doc.clear_table(self.doclist, 'return_details', 1)
for i in det: for i in det:
ch = addchild(self.doc, 'return_details', 'Sales and Purchase Return Item', 1, self.doclist) ch = addchild(self.doc, 'return_details', 'Sales and Purchase Return Item', 1, self.doclist)
ch.detail_name = i and i[0] or '' ch.detail_name = i and i[0] or ''
@ -73,5 +73,5 @@ class DocType :
# Clear return table # Clear return table
# -------------------------------- # --------------------------------
def clear_return_table(self): def clear_return_table(self):
self.doc.clear_table(self.doclist, 'return_details', 1) self.doclist = self.doc.clear_table(self.doclist, 'return_details', 1)
self.doc.save() self.doc.save()

View File

@ -240,7 +240,7 @@ class DocType(TransactionBase):
consider_sa_items_as_rm = self.doc.consider_sa_items_as_raw_materials consider_sa_items_as_rm = self.doc.consider_sa_items_as_raw_materials
self.get_raw_materials(bom_no, fg_qty, consider_sa_items_as_rm) self.get_raw_materials(bom_no, fg_qty, consider_sa_items_as_rm)
self.doc.clear_table(self.doclist, 'mtn_details', 1) self.doclist = self.doc.clear_table(self.doclist, 'mtn_details', 1)
sw = (self.doc.process == 'Backflush') and cstr(pro_obj.doc.wip_warehouse) or '' sw = (self.doc.process == 'Backflush') and cstr(pro_obj.doc.wip_warehouse) or ''
tw = (self.doc.process == 'Material Transfer') and cstr(pro_obj.doc.wip_warehouse) or '' tw = (self.doc.process == 'Material Transfer') and cstr(pro_obj.doc.wip_warehouse) or ''

View File

@ -16,7 +16,7 @@
cur_frm.cscript.country = function(doc, cdt, cdn) { cur_frm.cscript.country = function(doc, cdt, cdn) {
var mydoc=doc; var mydoc=doc;
$c('runserverobj', args={'method':'check_state', 'docs':compress_doclist([doc])}, $c('runserverobj', args={'method':'check_state', 'docs':compress_doclist(make_doclist(doc.doctype, doc.name))},
function(r,rt){ function(r,rt){
if(r.message) { if(r.message) {
var doc = locals[mydoc.doctype][mydoc.name]; var doc = locals[mydoc.doctype][mydoc.name];

View File

@ -42,8 +42,8 @@ class DocType(TransactionBase):
# pull sales order details # pull sales order details
#-------------------------- #--------------------------
def pull_sales_order_detail(self): def pull_sales_order_detail(self):
self.doc.clear_table(self.doclist, 'item_maintenance_detail') self.doclist = self.doc.clear_table(self.doclist, 'item_maintenance_detail')
self.doc.clear_table(self.doclist, 'maintenance_schedule_detail') self.doclist = self.doc.clear_table(self.doclist, 'maintenance_schedule_detail')
self.doclist = get_obj('DocType Mapper', 'Sales Order-Maintenance Schedule').dt_map('Sales Order', 'Maintenance Schedule', self.doc.sales_order_no, self.doc, self.doclist, "[['Sales Order', 'Maintenance Schedule'],['Sales Order Item', 'Maintenance Schedule Item']]") self.doclist = get_obj('DocType Mapper', 'Sales Order-Maintenance Schedule').dt_map('Sales Order', 'Maintenance Schedule', self.doc.sales_order_no, self.doc, self.doclist, "[['Sales Order', 'Maintenance Schedule'],['Sales Order Item', 'Maintenance Schedule Item']]")
#pull item details #pull item details
@ -60,7 +60,7 @@ class DocType(TransactionBase):
#------------------------------------- #-------------------------------------
def generate_schedule(self): def generate_schedule(self):
import datetime import datetime
self.doc.clear_table(self.doclist, 'maintenance_schedule_detail') self.doclist = self.doc.clear_table(self.doclist, 'maintenance_schedule_detail')
count = 0 count = 0
sql("delete from `tabMaintenance Schedule Detail` where parent='%s'" %(self.doc.name)) sql("delete from `tabMaintenance Schedule Detail` where parent='%s'" %(self.doc.name))
for d in getlist(self.doclist, 'item_maintenance_detail'): for d in getlist(self.doclist, 'item_maintenance_detail'):

View File

@ -56,7 +56,7 @@ class DocType(TransactionBase):
msgprint("You can not fetch details of both, Sales Order and Customer Issue, in same Maintenance Visit") msgprint("You can not fetch details of both, Sales Order and Customer Issue, in same Maintenance Visit")
raise Exception raise Exception
self.doc.clear_table(self.doclist, 'maintenance_visit_details') self.doclist = self.doc.clear_table(self.doclist, 'maintenance_visit_details')
if self.doc.sales_order_no: if self.doc.sales_order_no:
self.doclist = get_obj('DocType Mapper', 'Sales Order-Maintenance Visit').dt_map('Sales Order', 'Maintenance Visit', self.doc.sales_order_no, self.doc, self.doclist, "[['Sales Order', 'Maintenance Visit'],['Sales Order Item', 'Maintenance Visit Purpose']]") self.doclist = get_obj('DocType Mapper', 'Sales Order-Maintenance Visit').dt_map('Sales Order', 'Maintenance Visit', self.doc.sales_order_no, self.doc, self.doclist, "[['Sales Order', 'Maintenance Visit'],['Sales Order Item', 'Maintenance Visit Purpose']]")

View File

@ -99,7 +99,7 @@ $.extend(cur_frm.cscript, {
}, },
send: function(doc, dt, dn) { send: function(doc, dt, dn) {
$c_obj([doc], 'send_response', '', function(r,rt) { $c_obj(make_doclist(doc.doctype, doc.name), 'send_response', '', function(r,rt) {
locals[dt][dn].new_response = ''; locals[dt][dn].new_response = '';
if(!(r.exc || r.server_messages)) { if(!(r.exc || r.server_messages)) {
cur_frm.refresh(); cur_frm.refresh();
@ -124,7 +124,7 @@ $.extend(cur_frm.cscript, {
var answer = confirm("Close Ticket "+doc.name+"?\n\nAllocated To: "+doc.allocated_to+"\n\nSubject: "+doc.subject+""); var answer = confirm("Close Ticket "+doc.name+"?\n\nAllocated To: "+doc.allocated_to+"\n\nSubject: "+doc.subject+"");
if(answer) { if(answer) {
if(doc.name) if(doc.name)
$c_obj([doc],'close_ticket','',function(r,rt) { $c_obj(make_doclist(doc.doctype, doc.name),'close_ticket','',function(r,rt) {
if(!r.exc) { if(!r.exc) {
cur_frm.refresh(); cur_frm.refresh();
} }
@ -138,7 +138,7 @@ $.extend(cur_frm.cscript, {
var answer = confirm("Re-Open Ticket "+doc.name+"?\n\nAllocated To: "+doc.allocated_to+"\n\nSubject: "+doc.subject+""); var answer = confirm("Re-Open Ticket "+doc.name+"?\n\nAllocated To: "+doc.allocated_to+"\n\nSubject: "+doc.subject+"");
if(answer) { if(answer) {
if(doc.name) if(doc.name)
$c_obj([doc],'reopen_ticket','',function(r,rt) { $c_obj(make_doclist(doc.doctype, doc.name),'reopen_ticket','',function(r,rt) {
if(!r.exc) { if(!r.exc) {
cur_frm.refresh(); cur_frm.refresh();
} }

View File

@ -214,7 +214,7 @@ class TransactionBase:
# Get Sales Person Details of Customer # Get Sales Person Details of Customer
# ------------------------------------ # ------------------------------------
def get_sales_person(self, name): def get_sales_person(self, name):
self.doc.clear_table(self.doclist,'sales_team') self.doclist = self.doc.clear_table(self.doclist,'sales_team')
idx = 0 idx = 0
for d in webnotes.conn.sql("select sales_person, allocated_percentage, allocated_amount, incentives from `tabSales Team` where parent = '%s'" % name): for d in webnotes.conn.sql("select sales_person, allocated_percentage, allocated_amount, incentives from `tabSales Team` where parent = '%s'" % name):
ch = addchild(self.doc, 'sales_team', 'Sales Team', 1, self.doclist) ch = addchild(self.doc, 'sales_team', 'Sales Team', 1, self.doclist)

View File

@ -396,7 +396,7 @@ wn.request.cleanup=function(opts,r){if(opts.btn)$(opts.btn).done_working();if(op
return;} return;}
if(r.server_messages)msgprint(r.server_messages) if(r.server_messages)msgprint(r.server_messages)
if(r.exc){console.log(r.exc);};if(r['403']){wn.container.change_to('403');} if(r.exc){console.log(r.exc);};if(r['403']){wn.container.change_to('403');}
if(r.docs)LocalDB.sync(r.docs);} if(r.docs){LocalDB.sync(r.docs);}}
wn.request.call=function(opts){wn.request.prepare(opts);$.ajax({url:opts.url||wn.request.url,data:opts.args,type:opts.type||'POST',dataType:opts.dataType||'json',success:function(r,xhr){wn.request.cleanup(opts,r);opts.success(r,xhr.responseText);},error:function(xhr,textStatus){wn.request.cleanup(opts,{});show_alert('Unable to complete request: '+textStatus) wn.request.call=function(opts){wn.request.prepare(opts);$.ajax({url:opts.url||wn.request.url,data:opts.args,type:opts.type||'POST',dataType:opts.dataType||'json',success:function(r,xhr){wn.request.cleanup(opts,r);opts.success(r,xhr.responseText);},error:function(xhr,textStatus){wn.request.cleanup(opts,{});show_alert('Unable to complete request: '+textStatus)
if(opts.error)opts.error(xhr)}})} if(opts.error)opts.error(xhr)}})}
wn.call=function(opts){var args=$.extend({},opts.args) wn.call=function(opts){var args=$.extend({},opts.args)
@ -1313,8 +1313,10 @@ LocalDB.add=function(dt,dn){if(!locals[dt])locals[dt]={};if(locals[dt][dn])delet
LocalDB.delete_doc=function(dt,dn){var doc=get_local(dt,dn);for(var ndt in locals){if(locals[ndt]){for(var ndn in locals[ndt]){var doc=locals[ndt][ndn];if(doc&&doc.parenttype==dt&&(doc.parent==dn||doc.__oldparent==dn)){delete locals[ndt][ndn];}}}} LocalDB.delete_doc=function(dt,dn){var doc=get_local(dt,dn);for(var ndt in locals){if(locals[ndt]){for(var ndn in locals[ndt]){var doc=locals[ndt][ndn];if(doc&&doc.parenttype==dt&&(doc.parent==dn||doc.__oldparent==dn)){delete locals[ndt][ndn];}}}}
delete locals[dt][dn];} delete locals[dt][dn];}
function get_local(dt,dn){return locals[dt]?locals[dt][dn]:null;} function get_local(dt,dn){return locals[dt]?locals[dt][dn]:null;}
LocalDB.sync=function(list){if(list._kl)list=expand_doclist(list);for(var i=0;i<list.length;i++){var d=list[i];if(!d.name) LocalDB.sync=function(list){if(list._kl)list=expand_doclist(list);if(list){LocalDB.clear_locals(list[0].doctype,list[0].name);}
for(var i=0;i<list.length;i++){var d=list[i];if(!d.name)
d.name=LocalDB.get_localname(d.doctype);LocalDB.add(d.doctype,d.name);locals[d.doctype][d.name]=d;if(d.doctype=='DocField')wn.meta.add_field(d);if(d.localname){wn.model.new_names[d.localname]=d.name;$(document).trigger('rename',[d.doctype,d.localname,d.name]);delete locals[d.doctype][d.localname];}}} d.name=LocalDB.get_localname(d.doctype);LocalDB.add(d.doctype,d.name);locals[d.doctype][d.name]=d;if(d.doctype=='DocField')wn.meta.add_field(d);if(d.localname){wn.model.new_names[d.localname]=d.name;$(document).trigger('rename',[d.doctype,d.localname,d.name]);delete locals[d.doctype][d.localname];}}}
LocalDB.clear_locals=function(dt,dn){var doclist=make_doclist(dt,dn,1);$.each(doclist,function(i,v){v&&delete locals[v.doctype][v.name];});}
local_name_idx={};LocalDB.get_localname=function(doctype){if(!local_name_idx[doctype])local_name_idx[doctype]=1;var n='New '+get_doctype_label(doctype)+' '+local_name_idx[doctype];local_name_idx[doctype]++;return n;} local_name_idx={};LocalDB.get_localname=function(doctype){if(!local_name_idx[doctype])local_name_idx[doctype]=1;var n='New '+get_doctype_label(doctype)+' '+local_name_idx[doctype];local_name_idx[doctype]++;return n;}
LocalDB.set_default_values=function(doc){var doctype=doc.doctype;var docfields=wn.meta.docfield_list[doctype];if(!docfields){return;} LocalDB.set_default_values=function(doc){var doctype=doc.doctype;var docfields=wn.meta.docfield_list[doctype];if(!docfields){return;}
var fields_to_refresh=[];for(var fid=0;fid<docfields.length;fid++){var f=docfields[fid];if(!in_list(no_value_fields,f.fieldtype)&&doc[f.fieldname]==null){var v=LocalDB.get_default_value(f.fieldname,f.fieldtype,f['default']);if(v){doc[f.fieldname]=v;fields_to_refresh.push(f.fieldname);}}} var fields_to_refresh=[];for(var fid=0;fid<docfields.length;fid++){var f=docfields[fid];if(!in_list(no_value_fields,f.fieldtype)&&doc[f.fieldname]==null){var v=LocalDB.get_default_value(f.fieldname,f.fieldtype,f['default']);if(v){doc[f.fieldname]=v;fields_to_refresh.push(f.fieldname);}}}
@ -1344,7 +1346,8 @@ return sys_defaults[fn];}
LocalDB.add_child=function(doc,childtype,parentfield){var n=LocalDB.create(childtype);var d=locals[childtype][n];d.parent=doc.name;d.parentfield=parentfield;d.parenttype=doc.doctype;return d;} LocalDB.add_child=function(doc,childtype,parentfield){var n=LocalDB.create(childtype);var d=locals[childtype][n];d.parent=doc.name;d.parentfield=parentfield;d.parenttype=doc.doctype;return d;}
LocalDB.no_copy_list=['amended_from','amendment_date','cancel_reason'];LocalDB.copy=function(dt,dn,from_amend){var newdoc=LocalDB.create(dt);for(var key in locals[dt][dn]){var df=get_field(dt,key);if(key!=='name'&&key.substr(0,2)!='__'&&!(df&&((!from_amend&&cint(df.no_copy)==1)||in_list(LocalDB.no_copy_list,df.fieldname)))){locals[dt][newdoc][key]=locals[dt][dn][key];}} LocalDB.no_copy_list=['amended_from','amendment_date','cancel_reason'];LocalDB.copy=function(dt,dn,from_amend){var newdoc=LocalDB.create(dt);for(var key in locals[dt][dn]){var df=get_field(dt,key);if(key!=='name'&&key.substr(0,2)!='__'&&!(df&&((!from_amend&&cint(df.no_copy)==1)||in_list(LocalDB.no_copy_list,df.fieldname)))){locals[dt][newdoc][key]=locals[dt][dn][key];}}
return locals[dt][newdoc];} return locals[dt][newdoc];}
function make_doclist(dt,dn,deleted){var dl=[];dl[0]=locals[dt][dn];for(var ndt in locals){if(locals[ndt]){for(var ndn in locals[ndt]){var doc=locals[ndt][ndn];if(doc&&doc.parenttype==dt&&(doc.parent==dn||(deleted&&doc.__oldparent==dn))){dl[dl.length]=doc;}}}} function make_doclist(dt,dn,deleted){if(!locals[dt]){return[];}
var dl=[];dl[0]=locals[dt][dn];for(var ndt in locals){if(locals[ndt]){for(var ndn in locals[ndt]){var doc=locals[ndt][ndn];if(doc&&doc.parenttype==dt&&(doc.parent==dn||(deleted&&doc.__oldparent==dn))){dl[dl.length]=doc;}}}}
return dl;} return dl;}
var Meta={};var local_dt={};Meta.make_local_dt=function(dt,dn){var dl=make_doclist('DocType',dt);if(!local_dt[dt])local_dt[dt]={};if(!local_dt[dt][dn])local_dt[dt][dn]={};for(var i=0;i<dl.length;i++){var d=dl[i];if(d.doctype=='DocField'){var key=d.fieldname?d.fieldname:d.label;local_dt[dt][dn][key]=copy_dict(d);}}} var Meta={};var local_dt={};Meta.make_local_dt=function(dt,dn){var dl=make_doclist('DocType',dt);if(!local_dt[dt])local_dt[dt]={};if(!local_dt[dt][dn])local_dt[dt][dn]={};for(var i=0;i<dl.length;i++){var d=dl[i];if(d.doctype=='DocField'){var key=d.fieldname?d.fieldname:d.label;local_dt[dt][dn][key]=copy_dict(d);}}}
Meta.get_field=function(dt,fn,dn){if(dn&&local_dt[dt]&&local_dt[dt][dn]){return local_dt[dt][dn][fn];}else{if(wn.meta.docfield_map[dt])var d=wn.meta.docfield_map[dt][fn];if(d)return d;} Meta.get_field=function(dt,fn,dn){if(dn&&local_dt[dt]&&local_dt[dt][dn]){return local_dt[dt][dn][fn];}else{if(wn.meta.docfield_map[dt])var d=wn.meta.docfield_map[dt][fn];if(d)return d;}
@ -2115,7 +2118,7 @@ $c_get_values=function(args,doc,dt,dn,user_callback){var call_back=function(r,rt
refresh_field(fl[i],dn,args.table_field);else refresh_field(fl[i],dn,args.table_field);else
refresh_field(fl[i]);}} refresh_field(fl[i]);}}
$c('webnotes.widgets.form.utils.get_fields',args,call_back);} $c('webnotes.widgets.form.utils.get_fields',args,call_back);}
get_server_fields=function(method,arg,table_field,doc,dt,dn,allow_edit,call_back){if(!allow_edit)freeze('Fetching Data...');$c('runserverobj',args={'method':method,'docs':compress_doclist([doc]),'arg':arg},function(r,rt){if(r.message){var d=locals[dt][dn];var field_dict=r.message;for(var key in field_dict){d[key]=field_dict[key];if(table_field)refresh_field(key,d.name,table_field);else refresh_field(key);}} get_server_fields=function(method,arg,table_field,doc,dt,dn,allow_edit,call_back){if(!allow_edit)freeze('Fetching Data...');$c('runserverobj',args={'method':method,'docs':compress_doclist(make_doclist(doc.doctype,doc.name)),'arg':arg},function(r,rt){if(r.message){var d=locals[dt][dn];var field_dict=r.message;for(var key in field_dict){d[key]=field_dict[key];if(table_field)refresh_field(key,d.name,table_field);else refresh_field(key);}}
if(call_back){doc=locals[doc.doctype][doc.name];call_back(doc,dt,dn);} if(call_back){doc=locals[doc.doctype][doc.name];call_back(doc,dt,dn);}
if(!allow_edit)unfreeze();});} if(!allow_edit)unfreeze();});}
set_multiple=function(dt,dn,dict,table_field){var d=locals[dt][dn];for(var key in dict){d[key]=dict[key];if(table_field)refresh_field(key,d.name,table_field);else refresh_field(key);}} set_multiple=function(dt,dn,dict,table_field){var d=locals[dt][dn];for(var key in dict){d[key]=dict[key];if(table_field)refresh_field(key,d.name,table_field);else refresh_field(key);}}

View File

@ -283,7 +283,7 @@ wn.request.cleanup=function(opts,r){if(opts.btn)$(opts.btn).done_working();if(op
return;} return;}
if(r.server_messages)msgprint(r.server_messages) if(r.server_messages)msgprint(r.server_messages)
if(r.exc){console.log(r.exc);};if(r['403']){wn.container.change_to('403');} if(r.exc){console.log(r.exc);};if(r['403']){wn.container.change_to('403');}
if(r.docs)LocalDB.sync(r.docs);} if(r.docs){LocalDB.sync(r.docs);}}
wn.request.call=function(opts){wn.request.prepare(opts);$.ajax({url:opts.url||wn.request.url,data:opts.args,type:opts.type||'POST',dataType:opts.dataType||'json',success:function(r,xhr){wn.request.cleanup(opts,r);opts.success(r,xhr.responseText);},error:function(xhr,textStatus){wn.request.cleanup(opts,{});show_alert('Unable to complete request: '+textStatus) wn.request.call=function(opts){wn.request.prepare(opts);$.ajax({url:opts.url||wn.request.url,data:opts.args,type:opts.type||'POST',dataType:opts.dataType||'json',success:function(r,xhr){wn.request.cleanup(opts,r);opts.success(r,xhr.responseText);},error:function(xhr,textStatus){wn.request.cleanup(opts,{});show_alert('Unable to complete request: '+textStatus)
if(opts.error)opts.error(xhr)}})} if(opts.error)opts.error(xhr)}})}
wn.call=function(opts){var args=$.extend({},opts.args) wn.call=function(opts){var args=$.extend({},opts.args)
@ -626,8 +626,10 @@ LocalDB.add=function(dt,dn){if(!locals[dt])locals[dt]={};if(locals[dt][dn])delet
LocalDB.delete_doc=function(dt,dn){var doc=get_local(dt,dn);for(var ndt in locals){if(locals[ndt]){for(var ndn in locals[ndt]){var doc=locals[ndt][ndn];if(doc&&doc.parenttype==dt&&(doc.parent==dn||doc.__oldparent==dn)){delete locals[ndt][ndn];}}}} LocalDB.delete_doc=function(dt,dn){var doc=get_local(dt,dn);for(var ndt in locals){if(locals[ndt]){for(var ndn in locals[ndt]){var doc=locals[ndt][ndn];if(doc&&doc.parenttype==dt&&(doc.parent==dn||doc.__oldparent==dn)){delete locals[ndt][ndn];}}}}
delete locals[dt][dn];} delete locals[dt][dn];}
function get_local(dt,dn){return locals[dt]?locals[dt][dn]:null;} function get_local(dt,dn){return locals[dt]?locals[dt][dn]:null;}
LocalDB.sync=function(list){if(list._kl)list=expand_doclist(list);for(var i=0;i<list.length;i++){var d=list[i];if(!d.name) LocalDB.sync=function(list){if(list._kl)list=expand_doclist(list);if(list){LocalDB.clear_locals(list[0].doctype,list[0].name);}
for(var i=0;i<list.length;i++){var d=list[i];if(!d.name)
d.name=LocalDB.get_localname(d.doctype);LocalDB.add(d.doctype,d.name);locals[d.doctype][d.name]=d;if(d.doctype=='DocField')wn.meta.add_field(d);if(d.localname){wn.model.new_names[d.localname]=d.name;$(document).trigger('rename',[d.doctype,d.localname,d.name]);delete locals[d.doctype][d.localname];}}} d.name=LocalDB.get_localname(d.doctype);LocalDB.add(d.doctype,d.name);locals[d.doctype][d.name]=d;if(d.doctype=='DocField')wn.meta.add_field(d);if(d.localname){wn.model.new_names[d.localname]=d.name;$(document).trigger('rename',[d.doctype,d.localname,d.name]);delete locals[d.doctype][d.localname];}}}
LocalDB.clear_locals=function(dt,dn){var doclist=make_doclist(dt,dn,1);$.each(doclist,function(i,v){v&&delete locals[v.doctype][v.name];});}
local_name_idx={};LocalDB.get_localname=function(doctype){if(!local_name_idx[doctype])local_name_idx[doctype]=1;var n='New '+get_doctype_label(doctype)+' '+local_name_idx[doctype];local_name_idx[doctype]++;return n;} local_name_idx={};LocalDB.get_localname=function(doctype){if(!local_name_idx[doctype])local_name_idx[doctype]=1;var n='New '+get_doctype_label(doctype)+' '+local_name_idx[doctype];local_name_idx[doctype]++;return n;}
LocalDB.set_default_values=function(doc){var doctype=doc.doctype;var docfields=wn.meta.docfield_list[doctype];if(!docfields){return;} LocalDB.set_default_values=function(doc){var doctype=doc.doctype;var docfields=wn.meta.docfield_list[doctype];if(!docfields){return;}
var fields_to_refresh=[];for(var fid=0;fid<docfields.length;fid++){var f=docfields[fid];if(!in_list(no_value_fields,f.fieldtype)&&doc[f.fieldname]==null){var v=LocalDB.get_default_value(f.fieldname,f.fieldtype,f['default']);if(v){doc[f.fieldname]=v;fields_to_refresh.push(f.fieldname);}}} var fields_to_refresh=[];for(var fid=0;fid<docfields.length;fid++){var f=docfields[fid];if(!in_list(no_value_fields,f.fieldtype)&&doc[f.fieldname]==null){var v=LocalDB.get_default_value(f.fieldname,f.fieldtype,f['default']);if(v){doc[f.fieldname]=v;fields_to_refresh.push(f.fieldname);}}}
@ -657,7 +659,8 @@ return sys_defaults[fn];}
LocalDB.add_child=function(doc,childtype,parentfield){var n=LocalDB.create(childtype);var d=locals[childtype][n];d.parent=doc.name;d.parentfield=parentfield;d.parenttype=doc.doctype;return d;} LocalDB.add_child=function(doc,childtype,parentfield){var n=LocalDB.create(childtype);var d=locals[childtype][n];d.parent=doc.name;d.parentfield=parentfield;d.parenttype=doc.doctype;return d;}
LocalDB.no_copy_list=['amended_from','amendment_date','cancel_reason'];LocalDB.copy=function(dt,dn,from_amend){var newdoc=LocalDB.create(dt);for(var key in locals[dt][dn]){var df=get_field(dt,key);if(key!=='name'&&key.substr(0,2)!='__'&&!(df&&((!from_amend&&cint(df.no_copy)==1)||in_list(LocalDB.no_copy_list,df.fieldname)))){locals[dt][newdoc][key]=locals[dt][dn][key];}} LocalDB.no_copy_list=['amended_from','amendment_date','cancel_reason'];LocalDB.copy=function(dt,dn,from_amend){var newdoc=LocalDB.create(dt);for(var key in locals[dt][dn]){var df=get_field(dt,key);if(key!=='name'&&key.substr(0,2)!='__'&&!(df&&((!from_amend&&cint(df.no_copy)==1)||in_list(LocalDB.no_copy_list,df.fieldname)))){locals[dt][newdoc][key]=locals[dt][dn][key];}}
return locals[dt][newdoc];} return locals[dt][newdoc];}
function make_doclist(dt,dn,deleted){var dl=[];dl[0]=locals[dt][dn];for(var ndt in locals){if(locals[ndt]){for(var ndn in locals[ndt]){var doc=locals[ndt][ndn];if(doc&&doc.parenttype==dt&&(doc.parent==dn||(deleted&&doc.__oldparent==dn))){dl[dl.length]=doc;}}}} function make_doclist(dt,dn,deleted){if(!locals[dt]){return[];}
var dl=[];dl[0]=locals[dt][dn];for(var ndt in locals){if(locals[ndt]){for(var ndn in locals[ndt]){var doc=locals[ndt][ndn];if(doc&&doc.parenttype==dt&&(doc.parent==dn||(deleted&&doc.__oldparent==dn))){dl[dl.length]=doc;}}}}
return dl;} return dl;}
var Meta={};var local_dt={};Meta.make_local_dt=function(dt,dn){var dl=make_doclist('DocType',dt);if(!local_dt[dt])local_dt[dt]={};if(!local_dt[dt][dn])local_dt[dt][dn]={};for(var i=0;i<dl.length;i++){var d=dl[i];if(d.doctype=='DocField'){var key=d.fieldname?d.fieldname:d.label;local_dt[dt][dn][key]=copy_dict(d);}}} var Meta={};var local_dt={};Meta.make_local_dt=function(dt,dn){var dl=make_doclist('DocType',dt);if(!local_dt[dt])local_dt[dt]={};if(!local_dt[dt][dn])local_dt[dt][dn]={};for(var i=0;i<dl.length;i++){var d=dl[i];if(d.doctype=='DocField'){var key=d.fieldname?d.fieldname:d.label;local_dt[dt][dn][key]=copy_dict(d);}}}
Meta.get_field=function(dt,fn,dn){if(dn&&local_dt[dt]&&local_dt[dt][dn]){return local_dt[dt][dn][fn];}else{if(wn.meta.docfield_map[dt])var d=wn.meta.docfield_map[dt][fn];if(d)return d;} Meta.get_field=function(dt,fn,dn){if(dn&&local_dt[dt]&&local_dt[dt][dn]){return local_dt[dt][dn][fn];}else{if(wn.meta.docfield_map[dt])var d=wn.meta.docfield_map[dt][fn];if(d)return d;}