rerun of rename_dt

This commit is contained in:
Anand Doshi 2012-04-02 19:12:29 +05:30
parent 5c6cdb06b2
commit 5112b5b6b8
85 changed files with 93 additions and 7064 deletions

View File

@ -163,7 +163,7 @@ class DocType(TransactionBase):
def get_rate(self,arg):
return get_obj('Purchase Common').get_rate(arg,self)
# Pull details from other charges master (Get Other Charges)
# Get Purchase Taxes and Charges Master
# -----------------------------------------------------------
def get_purchase_tax_details(self):
return get_obj('Purchase Common').get_purchase_tax_details(self)

View File

@ -230,7 +230,7 @@ class DocType(TransactionBase):
def load_default_taxes(self):
return get_obj('Sales Common').load_default_taxes(self)
# Get Other Charges Details
# Get Sales Taxes and Charges Master Details
# --------------------------
def get_other_charges(self):
return get_obj('Sales Common').get_other_charges(self)

View File

@ -35,7 +35,7 @@
<div class="section-item">
<a class="section-link"
title="Cancel off untracked Payments (JV) against Invoices"
href="#!Form/Internal Reconciliation/Internal Reconciliation">Payment Reconciliation</a>
href="#!Form/Payment to Invoice Matching Tool/Payment to Invoice Matching Tool">Payment Reconciliation</a>
</div>
<div class="section-item">
<a class="section-link"
@ -45,7 +45,7 @@
<div class="section-item">
<a class="section-link"
title="Export multiple Account Ledgers (GL) to spreadsheet (csv)"
href="#!Form/Ledger Balance Export/Ledger Balance Export">Export Multiple Ledgers (GL)</a>
href="#!Form/Multi Ledger Report/Multi Ledger Report">Export Multiple Ledgers (GL)</a>
</div>
<div class="section-item">
<a class="section-link"
@ -55,7 +55,7 @@
<div class="section-item">
<a class="section-link"
title = "Helper for managing return of goods (sales or purchase)"
href="#!Form/Sales and Purchase Return Wizard/Sales and Purchase Return Wizard">Sales or Purchase Returns</a>
href="#!Form/Sales and Purchase Return Tool/Sales and Purchase Return Tool">Sales or Purchase Returns</a>
</div>
<div class="section-item">
<a class="section-link"
@ -78,12 +78,12 @@
<div class="section-item">
<a class="section-link"
title = "Tax and charges structure master on sales transactions"
href="#!List/Other Charges">Sales Other Charges</a>
href="#!List/Sales Taxes and Charges Master">Sales Taxes and Charges Master</a>
</div>
<div class="section-item">
<a class="section-link"
title = "Tax and charges structure master on purchase transactions"
href="#!List/Purchase Other Charges">Purchase Other Charges</a>
href="#!List/Purchase Taxes and Charges Master">Purchase Taxes and Charges Master</a>
</div>
<div class="section-item">
<a class="section-link"

View File

@ -572,7 +572,7 @@
'doctype': u'DocField',
'fieldname': u'purchase_tax_details',
'fieldtype': u'Table',
'label': u'Purchase Tax Details',
'label': u'Purchase Taxes and Charges',
'no_copy': 0,
'oldfieldname': u'purchase_tax_details',
'oldfieldtype': u'Table',

View File

@ -178,7 +178,7 @@ class DocType:
qty =flt(d.qty)
if is_stopped:
qty = (d.qty > d.ordered_qty) and flt(flt(d.qty) - flt(d.ordered_qty)) or 0
# Step 3 :=> Update Bin's Indent Qty by +- qty
# Step 3 :=> Update Bin's Purchase Request Qty by +- qty
get_obj('Warehouse', d.warehouse).update_bin(0, 0, 0, (is_submit and 1 or -1) * flt(qty), 0, d.item_code, self.doc.transaction_date)
# On Submit
@ -220,7 +220,7 @@ class DocType:
# Step 2:=> Check for stopped status
pc_obj.check_for_stopped_status( self.doc.doctype, self.doc.name)
# Step 3:=> Check if Purchase Order has been submitted against current Indent
# Step 3:=> Check if Purchase Order has been submitted against current Purchase Request
pc_obj.check_docstatus(check = 'Next', doctype = 'Purchase Order', docname = self.doc.name, detail_doctype = 'Purchase Order Item')
# Step 4:=> Update Bin
self.update_bin(is_submit = 0, is_stopped = (cstr(self.doc.status) == 'Stopped') and 1 or 0)
@ -229,7 +229,7 @@ class DocType:
set(self.doc,'status','Cancelled')
# Repair Indent
# Repair Purchase Request
# ===========================================
def repair_indent(self):
get_obj('Purchase Common', 'Purchase Common').repair_curr_doctype_details(self)

View File

@ -122,9 +122,9 @@
'doctype': u'DocField',
'fieldname': u'purchase_tax_details',
'fieldtype': u'Table',
'label': u'Purchase Tax Details',
'label': u'Purchase Taxes and Charges',
'oldfieldname': u'purchase_tax_details',
'oldfieldtype': u'Table',
'options': u'Purchase Taxes and Charges'
}
]
]

View File

@ -1,140 +0,0 @@
# DocType, Raw Materials Supplied
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:35:52',
'docstatus': 0,
'modified': '2012-03-27 14:35:52',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
# These values are common for all DocType
{
'autoname': u'RMS/.######',
'colour': u'White:FFF',
'doctype': 'DocType',
'istable': 1,
'module': u'Buying',
'name': '__common__',
'section_style': u'Tray',
'show_in_menu': 0,
'version': 8
},
# These values are common for all DocField
{
'doctype': u'DocField',
'name': '__common__',
'parent': u'Raw Materials Supplied',
'parentfield': u'fields',
'parenttype': u'DocType'
},
# DocType, Raw Materials Supplied
{
'doctype': 'DocType',
'name': u'Raw Materials Supplied'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'po_item',
'fieldtype': u'Select',
'label': u'PO Item',
'oldfieldname': u'po_item',
'oldfieldtype': u'Select',
'permlevel': 0,
'reqd': 1,
'trigger': u'Client'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'raw_material',
'fieldtype': u'Link',
'label': u'Raw Material',
'oldfieldname': u'raw_material',
'oldfieldtype': u'Link',
'options': u'Item',
'permlevel': 0,
'reqd': 1,
'trigger': u'Client'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'description',
'fieldtype': u'Small Text',
'label': u'Description',
'oldfieldname': u'description',
'oldfieldtype': u'Small Text',
'permlevel': 0,
'width': u'300px'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'source_warehouse',
'fieldtype': u'Select',
'label': u'Source Warehouse',
'oldfieldname': u'source_warehouse',
'oldfieldtype': u'Select',
'options': u'link:Warehouse',
'permlevel': 0,
'reqd': 1,
'trigger': u'Client'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'ma_valuation_rate',
'fieldtype': u'Currency',
'label': u'Valuation Rate (MA)',
'no_copy': 1,
'oldfieldname': u'ma_valuation_rate',
'oldfieldtype': u'Currency',
'permlevel': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'fifo_valuation_rate',
'fieldtype': u'Currency',
'label': u'Valuation Rate (FIFO)',
'oldfieldname': u'fifo_valuation_rate',
'oldfieldtype': u'Currency',
'permlevel': 0
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'qty',
'fieldtype': u'Currency',
'label': u'Qty',
'oldfieldname': u'qty',
'oldfieldtype': u'Currency',
'permlevel': 0,
'reqd': 1,
'trigger': u'Client'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'stock_uom',
'fieldtype': u'Data',
'label': u'Stock UOM',
'oldfieldname': u'stock_uom',
'oldfieldtype': u'Data',
'permlevel': 1
}
]

View File

@ -28,7 +28,7 @@
<div class="section-item">
<a class="section-link"
title = "Tax and charges structure master"
href="#!List/Purchase Other Charges">Purchase Other Charges</a>
href="#!List/Purchase Taxes and Charges Master">Purchase Taxes and Charges Master</a>
</div>
<div class="section-item">
<a class="section-link"
@ -38,7 +38,7 @@
<div class="section-item">
<a class="section-link"
title = "Helper for managing return of goods (sales or purchase)"
href="#!Form/Sales and Purchase Return Wizard/Sales and Purchase Return Wizard">Purchase Returns</a>
href="#!Form/Sales and Purchase Return Tool/Sales and Purchase Return Tool">Purchase Returns</a>
</div>
<div class="section-item">
<a class="section-link"
@ -61,4 +61,4 @@
</div>
</div>
<div style="clear: both;"></div>
</div>
</div>

View File

@ -1,52 +0,0 @@
# ERPNext - web based ERP (http://erpnext.com)
# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import webnotes
from webnotes.utils import nowdate
from webnotes.model.doc import Document
from webnotes.model.code import get_obj
from webnotes import session, form, msgprint
sql = webnotes.conn.sql
try: import json
except: import simplejson as json
# -----------------------------------------------------------------------------------------
class DocType:
def __init__(self,d,dl):
self.doc, self.doclist = d, dl
def add_comment(self,args):
import time
args = eval(args)
if(args['comment']):
cmt = Document('Comment')
for arg in args:
cmt.fields[arg] = args[arg]
cmt.comment_date = nowdate()
cmt.comment_time = time.strftime('%H:%M')
cmt.save(1)
else:
raise Exception
def remove_comment(self, args):
args = json.loads(args)
sql("delete from `tabComment` where name=%s",args['id'])

View File

@ -1,32 +0,0 @@
# DocType, Widget Control
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:35:53',
'docstatus': 0,
'modified': '2012-03-27 14:35:53',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
# These values are common for all DocType
{
'colour': u'White:FFF',
'doctype': 'DocType',
'issingle': 1,
'istable': 0,
'module': u'Home',
'name': '__common__',
'section_style': u'Simple',
'server_code_error': u' ',
'show_in_menu': 0,
'version': 27
},
# DocType, Widget Control
{
'doctype': 'DocType',
'name': u'Widget Control'
}
]

View File

@ -1,129 +0,0 @@
# DocType, Absent Days Detail
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:35:53',
'docstatus': 0,
'modified': '2012-03-27 14:35:53',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
# These values are common for all DocType
{
'colour': u'White:FFF',
'doctype': 'DocType',
'istable': 1,
'module': u'HR',
'name': '__common__',
'section_style': u'Simple',
'show_in_menu': 0,
'version': 5
},
# These values are common for all DocField
{
'doctype': u'DocField',
'name': '__common__',
'parent': u'Absent Days Detail',
'parentfield': u'fields',
'parenttype': u'DocType',
'permlevel': 0
},
# These values are common for all DocPerm
{
'create': 1,
'doctype': u'DocPerm',
'name': '__common__',
'parent': u'Absent Days Detail',
'parentfield': u'permissions',
'parenttype': u'DocType',
'permlevel': 0,
'read': 1,
'write': 1
},
# DocType, Absent Days Detail
{
'doctype': 'DocType',
'name': u'Absent Days Detail'
},
# DocPerm
{
'doctype': u'DocPerm'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'leave_type',
'fieldtype': u'Select',
'label': u'Leave Type',
'oldfieldname': u'leave_type',
'oldfieldtype': u'Select',
'options': u'link:Leave Type'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'no_of_leave_days',
'fieldtype': u'Data',
'label': u'No of leave days',
'oldfieldname': u'no_of_leave_days',
'oldfieldtype': u'Data'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'from_date',
'fieldtype': u'Date',
'label': u'From Date',
'oldfieldname': u'from_date',
'oldfieldtype': u'Date'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'to_date',
'fieldtype': u'Date',
'label': u'To Date',
'oldfieldname': u'to_date',
'oldfieldtype': u'Date'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'previous_balance',
'fieldtype': u'Data',
'label': u'Previous Balance',
'oldfieldname': u'previous_balance',
'oldfieldtype': u'Data'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'current_balance',
'fieldtype': u'Data',
'label': u'Current Balance',
'oldfieldname': u'current_balance',
'oldfieldtype': u'Data'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'max_allowed',
'fieldtype': u'Data',
'label': u'Max. Allowed',
'oldfieldname': u'max_allowed',
'oldfieldtype': u'Data'
}
]

View File

@ -1,110 +0,0 @@
# DocType, Earn Deduction Detail
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:35:54',
'docstatus': 0,
'modified': '2012-03-27 14:35:54',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
# These values are common for all DocType
{
'colour': u'White:FFF',
'doctype': 'DocType',
'istable': 1,
'module': u'HR',
'name': '__common__',
'section_style': u'Simple',
'show_in_menu': 0,
'version': 4
},
# These values are common for all DocField
{
'doctype': u'DocField',
'name': '__common__',
'parent': u'Earn Deduction Detail',
'parentfield': u'fields',
'parenttype': u'DocType',
'permlevel': 0
},
# These values are common for all DocPerm
{
'create': 1,
'doctype': u'DocPerm',
'name': '__common__',
'parent': u'Earn Deduction Detail',
'parentfield': u'permissions',
'parenttype': u'DocType',
'permlevel': 0,
'read': 1,
'role': u'All',
'write': 1
},
# DocType, Earn Deduction Detail
{
'doctype': 'DocType',
'name': u'Earn Deduction Detail'
},
# DocPerm
{
'doctype': u'DocPerm'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'earn_deduction_name',
'fieldtype': u'Data',
'label': u'Earn/Deduction Name',
'oldfieldname': u'earn_deduction_name',
'oldfieldtype': u'Data'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'mode',
'fieldtype': u'Select',
'label': u'Mode',
'oldfieldname': u'mode',
'oldfieldtype': u'Select',
'options': u'\n%\nRs'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'per',
'fieldtype': u'Data',
'label': u'Per.(%)',
'oldfieldname': u'per',
'oldfieldtype': u'Data'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'amount',
'fieldtype': u'Data',
'label': u'Amount',
'oldfieldname': u'amount',
'oldfieldtype': u'Data'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'type',
'fieldtype': u'Data',
'label': u'Type',
'oldfieldname': u'type',
'oldfieldtype': u'Data'
}
]

View File

@ -1,112 +0,0 @@
# DocType, Educational Qualifications
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:35:54',
'docstatus': 0,
'modified': '2012-03-27 14:35:54',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
# These values are common for all DocType
{
'colour': u'White:FFF',
'default_print_format': u'Standard',
'doctype': 'DocType',
'istable': 1,
'module': u'HR',
'name': '__common__',
'section_style': u'Simple',
'server_code_error': u' ',
'show_in_menu': 0,
'version': 12
},
# These values are common for all DocField
{
'doctype': u'DocField',
'name': '__common__',
'parent': u'Educational Qualifications',
'parentfield': u'fields',
'parenttype': u'DocType',
'permlevel': 0
},
# DocType, Educational Qualifications
{
'doctype': 'DocType',
'name': u'Educational Qualifications'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'school_univ',
'fieldtype': u'Data',
'label': u'School/University',
'oldfieldname': u'school_univ',
'oldfieldtype': u'Data'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'qualification',
'fieldtype': u'Data',
'label': u'Qualification (Degree/Diploma)',
'oldfieldname': u'qualification',
'oldfieldtype': u'Data',
'reqd': 0,
'search_index': 1,
'width': u'170px'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'level',
'fieldtype': u'Select',
'label': u'Level',
'oldfieldname': u'level',
'oldfieldtype': u'Select',
'options': u'\nGraduate\nPost Graduate\nUnder Graduate',
'reqd': 0,
'search_index': 0
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'year_of_passing',
'fieldtype': u'Int',
'label': u'Year of Passing',
'oldfieldname': u'year_of_passing',
'oldfieldtype': u'Int',
'reqd': 0
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'class_percent',
'fieldtype': u'Data',
'label': u'Class / Percentage',
'oldfieldname': u'class_percent',
'oldfieldtype': u'Data',
'reqd': 0
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'maj_opt_sub',
'fieldtype': u'Data',
'label': u'Major / Optional Subject',
'oldfieldname': u'maj_opt_sub',
'oldfieldtype': u'Data',
'reqd': 0,
'width': u'170px'
}
]

View File

@ -73,7 +73,7 @@ class DocType(TransactionBase):
self.doc.clear_table(self.doclist, 'earning_details')
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'],['Earning Detail', 'Salary Slip Earning'],['Deduction Detail','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']]")
basic_info = sql("select bank_name, bank_ac_no, esic_card_no, pf_number from `tabEmployee` where name ='%s'" % self.doc.employee)
self.doc.bank_name = basic_info[0][0]

View File

@ -60,7 +60,7 @@ cur_frm.cscript['Make Salary Slip'] = function(){
'from_doctype':'Salary Structure',
'to_doctype':'Salary Slip',
'from_docname':doc.name,
'from_to_list':"[['Salary Structure', 'Salary Slip'], ['Earning Detail', 'Salary Slip Earning'], ['Deduction Detail', 'Salary Slip Deduction']]"
'from_to_list':"[['Salary Structure', 'Salary Slip'], ['Salary Structure Earning', 'Salary Slip Earning'], ['Salary Structure Deduction', 'Salary Slip Deduction']]"
},
function(r,rt) {
n.fiscal_year = sys_defaults.fiscal_year;

View File

@ -8,7 +8,7 @@
<p class="help">Attendance Mark</p>
<h4><a href="#!List/Leave Application">Leave Application</a></h4>
<p class="help">Applications for leave</p>
<h4><a href="#!List/Expense Voucher">Expense Voucher</a></h4>
<h4><a href="#!List/Expense Claim">Expense Claim</a></h4>
<p class="help">Claims for expenses</p>
<h4><a href="#!List/Salary Slip">Salary Slip</a></h4>
<p class="help">Monthly salary statement</p>
@ -93,7 +93,7 @@
<div class="section-item">
<a class="section-link"
title = "Template for employee performance appraisals"
href="#!List/KRA Template">Key Performance Area (KRA) Template</a>
href="#!List/Appraisal Template">Key Performance Area (KRA) Template</a>
</div>
<div class="section-item">
<a class="section-link"

View File

@ -1,69 +0,0 @@
# DocType, Question Tag
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:36:02',
'docstatus': 0,
'modified': '2012-03-27 14:36:02',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
# These values are common for all DocType
{
'autoname': u'field:tag_name',
'colour': u'White:FFF',
'doctype': 'DocType',
'module': u'Knowledge Base',
'name': '__common__',
'section_style': u'Simple',
'version': 1
},
# These values are common for all DocField
{
'doctype': u'DocField',
'fieldname': u'tag_name',
'fieldtype': u'Data',
'label': u'Tag Name',
'name': '__common__',
'oldfieldname': u'tag_name',
'oldfieldtype': u'Data',
'parent': u'Question Tag',
'parentfield': u'fields',
'parenttype': u'DocType',
'permlevel': 0,
'reqd': 1
},
# These values are common for all DocPerm
{
'create': 1,
'doctype': u'DocPerm',
'name': '__common__',
'parent': u'Question Tag',
'parentfield': u'permissions',
'parenttype': u'DocType',
'permlevel': 0,
'read': 1,
'role': u'All',
'write': 1
},
# DocType, Question Tag
{
'doctype': 'DocType',
'name': u'Question Tag'
},
# DocPerm
{
'doctype': u'DocPerm'
},
# DocField
{
'doctype': u'DocField'
}
]

View File

@ -15,7 +15,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
Reload DocLayer, Customize Form Field and Print Format doctypes
Reload Customize Form, Customize Form Field and Print Format doctypes
"""
def execute():
from webnotes.modules import reload_doc

View File

@ -7,10 +7,12 @@ from webnotes.modules import reload_doc
from webnotes.utils import make_esc
import os
def execute1():
update_file_content({'Follow up': 'Communication'})
def execute():
rendt = get_dt_to_be_renamed()
rename_dt_files(rendt)
#update_local_file_system()
def execute1():
# delete dt, mapper
delete_dt_and_mapper()
@ -106,6 +108,7 @@ def delete_dt_and_mapper():
delete_doc('DocType', d)
def rename_in_db(ren_data, data_type, is_doctype):
for d in ren_data:
print colored('Renaming... ' + d + ' --> '+ ren_data[d], 'yellow')
@ -301,23 +304,30 @@ def update_local_file_system():
def update_file_content(rendt):
for d in rendt:
print colored('Renaming... ' + d + ' --> '+ rendt[d], 'yellow')
for extn in ['js', 'py', 'txt']:
replace_code('/var/www/erpnext/', d, rendt[d], extn)
for extn in ['js', 'py', 'txt', 'html']:
res = replace_code('/var/www/erpnext/', d, rendt[d], extn)
if res == 'skip':
break
def rename_dt_files(rendt):
for d in rendt:
mod = webnotes.conn.sql("select module from tabDocType where name = %s", rendt[d])[0][0]
path = 'erpnext/' + '_'.join(mod.lower().split()) + '/doctype/'
if mod == 'Core':
os.chdir('/var/www/erpnext/lib/')
path = 'py/core/doctype/'
else:
os.chdir('/var/www/erpnext/')
path = 'erpnext/' + '_'.join(mod.lower().split()) + '/doctype/'
old = '_'.join(d.lower().split())
new = '_'.join(rendt[d].lower().split())
print 'git mv ' + path + old + ' ' + path + new
# rename old dir
os.system('git mv ' + path + old + ' ' + path + new)
print 'git mv ' + path + old + ' ' + path + new
# rename all files in that dir
for extn in ['js', 'py', 'txt']:
for extn in ['js', 'py', 'txt', 'html']:
if os.path.exists(path + new + '/'+ old + '.' +extn):
os.system('git mv ' + path + new + '/'+ old + '.' +extn + ' ' + path + new + '/' + new + '.' +extn)
print 'git mv ' + path + new + '/'+ old + '.' +extn + ' ' + path + new + '/' + new + '.' +extn

View File

@ -0,0 +1,17 @@
def execute():
import webnotes
doctype_list = webnotes.conn.sql("""SELECT name FROM `tabDocType`
WHERE docstatus<2 AND IFNULL(issingle, 0)=0
AND IFNULL(istable, 0)=0""")
webnotes.conn.commit()
for d in doctype_list:
add_col = True
desc = webnotes.conn.sql("DESC `tab%s`" % d[0], as_dict=1)
for td in desc:
if td.get('Field')=='_user_tags':
add_col = False
if add_col:
webnotes.conn.sql("alter table `tab%s` add column `_user_tags` varchar(180)" % d[0])
webnotes.conn.begin()

View File

@ -256,5 +256,10 @@ patch_list = [
'patch_module': 'patches.mar_2012',
'patch_file': 'delete_docformat',
'description': 'Deletes DocFormat from database'
},
{
'patch_module': 'patches.mar_2012',
'patch_file': 'usertags',
'description': 'Adds _user_tags columns to tables'
}
]

View File

@ -1,291 +0,0 @@
<!--
Sample Print Format for ERPNext
Please use at your own discretion
For suggestions and contributions:
https://github.com/webnotes/erpnext-print-templates
Freely usable under MIT license
-->
<!-- Style Settings -->
<style>
/*
common style for whole page
This should include:
+ page size related settings
+ font family settings
+ line spacing settings
*/
@media screen {
body {
width: 8.3in;
}
}
html, body, div, span, td {
font-family: "Georgia", serif;
font-size: 12px;
}
body {
padding: 10px;
margin: auto;
font-size: 12px;
line-height: 150%;
}
.common {
font-family: "Georgia", serif !important;
font-size: 12px;
padding: 10px 0px;
}
table {
border-collapse: collapse;
width: 100%;
vertical-align: top;
}
table td {
padding: 2px 0px;
}
table h1, h2, h3, h4, h5, h6 {
padding: 0px;
margin: 0px;
}
table.header-table td {
vertical-align: top;
}
table.header-table thead {
border-bottom: 1px solid black;
}
table.header-table h3 {
color: gray;
}
table.header-table thead td {
padding: 5px 0px;
}
div.page-body table td:nth-child(6),
div.page-body table td:nth-child(7) {
text-align: right;
}
table.footer-table td {
vertical-align: top;
}
table.footer-table td table td:nth-child(2),
table.footer-table td table td:nth-child(3) {
text-align: right;
}
</style>
<!-- Javascript -->
<script>
si_std = {
print_item_table: function() {
var table = print_table(
'Delivery Note',
doc.name,
'delivery_note_details',
'Delivery Note Detail',
[// Here specify the table columns to be displayed
'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
'basic_rate', 'amount'
],
[// Here specify the labels of column headings
'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
'UoM', 'Basic Rate', 'Amount'
],
[// Here specify the column widths
'3%', '10%', '15%', '32%', '5%',
'5%', '15%', '15%'
],
null,
null,
{
'description' : function(data_row) {
var to_append = ''
if(data_row.adj_rate){
to_append = '<div style="padding-left: 15px;"><i>Discount: ' +
data_row.adj_rate + '% on ' + doc.currency + ' ' +
fmt_money(data_row.ref_rate) + '</i></div>';
if(data_row.description.indexOf(to_append)==-1) {
data_row.description = data_row.description + to_append;
}
}
if(data_row.serial_no) {
to_append = '<div style="padding-left: 15px;"><i>Serial No.:' +
((data_row.serial_no.indexOf('\n')>-1)?'<br />':'&nbsp;') +
data_row.serial_no + '</i></div>';
if(data_row.description.indexOf(to_append)==-1) {
data_row.description = data_row.description + to_append;
}
}
return data_row.description;
}
}
);
// This code takes care of page breaks
if(table.appendChild) {
out = table.innerHTML;
} else {
out = '';
for(var i=0; i < (table.length-1); i++) {
out += table[i].innerHTML +
'<div style = "page-break-after: always;" \
class = "page_break"></div>\
<div class="page-settings"></div>';
}
out += table[table.length-1].innerHTML;
}
return out;
},
print_other_charges: function(parent) {
var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
var rows = '<table width=100%>\n';
for(var i=0; i<oc.length; i++) {
if(!oc[i].included_in_print_rate) {
rows +=
'<tr>\n' +
'\t<td>' + oc[i].description + '</td>\n' +
'\t<td></td>\n' +
'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
'</tr>\n';
}
}
return rows + '</table>\n';
}
};
</script>
<!-- Page Layout Settings -->
<div class='common page-header'>
<!--
Page Header will contain
+ table 1
+ table 1a
- Name
- Address
- Contact
- Mobile No
+ table 1b
- Voucher Date
- Due Date
-->
<table class='header-table' cellspacing=0>
<thead>
<tr><td><script>'<h1>' + (doc.select_print_heading || 'Delivery Note') + '</h1>'</script></td></tr>
<tr><td><h3><script>cur_frm.docname</script></h3></td></tr>
</thead>
<tbody>
<tr>
<td width=60%><table width=100% cellspacing=0><tbody>
<tr>
<td width=22%><b>Name</b></td>
<td><script>doc.customer_name</script></td>
</tr>
<tr>
<td><b>Address</b></td>
<td><script>replace_newlines(doc.address_display)</script></td>
</tr>
<tr>
<td><b>Contact</b></td>
<td><script>doc.contact_display</script></td>
</tr>
</tbody></table></td>
<td><table width=100% cellspacing=0><tbody>
<tr>
<td width=63%><b>Delivery Note Date</b></td>
<td><script>date.str_to_user(doc.transaction_date)</script></td>
<tr>
<tr>
<td><b>Sales Order No.</b></td>
<td>
<script>doc.sales_order_no</script><br />
<i>(<script>date.str_to_user(doc.posting_date)</script>)</i>
</td>
<tr>
</tbody></table></td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div class='common page-body'>
<!--
Page Body will contain
+ table 2
- Sales Invoice Data
-->
<script>si_std.print_item_table()</script>
</div>
<div class='common page-footer'>
<!--
Page Footer will contain
+ table 3
- Terms and Conditions
- Total Rounded Amount Calculation
- Total Rounded Amount in Words
-->
<table class='footer-table' width=100% cellspacing=0>
<thead>
</thead>
<tbody>
<tr>
<td width=60% style='padding-right: 10px;'>
<b>Terms, Conditions &amp; Other Information:</b><br />
<script>doc.terms</script>
</td>
<td>
<table cellspacing=0 width=100%><tbody>
<tr>
<td>Net Total</td>
<td></td>
<td width=38%><script>
fmt_money(doc.net_total)
</script></td>
</tr>
<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
<tr>
<td>Grand Total</td>
<td></td>
<td><script>
fmt_money(doc.grand_total_export)
</script></td>
</tr>
<tr style='font-weight: bold'>
<td>Rounded Total</td>
<td><script>doc.currency</script></td>
<td><script>
fmt_money(doc.rounded_total_export)
</script></td>
</tr>
</tbody></table>
<br /><b>In Words</b><br />
<i><script>doc.in_words_export</script></i>
</td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>

View File

@ -1,317 +0,0 @@
<!--
Sample Print Format for ERPNext
Please use at your own discretion
For suggestions and contributions:
https://github.com/webnotes/erpnext-print-templates
Freely usable under MIT license
-->
<!-- Style Settings -->
<style>
/*
common style for whole page
This should include:
+ page size related settings
+ font family settings
+ line spacing settings
*/
@media screen {
body {
width: 8.3in;
}
}
html, body, div, span, td {
font-family: "Helvetica", "Arial", sans-serif;
font-size: 12px;
}
body {
padding: 10px;
margin: auto;
font-size: 12px;
line-height: 150%;
}
.common {
font-family: "Helvetica", "Arial", sans-serif !important;
font-size: 12px;
padding: 10px 0px;
}
table {
border-collapse: collapse;
width: 100%;
vertical-align: top;
border-style: none !important;
}
table td {
padding: 2px 0px;
border-style: none !important;
}
table h1, h2, h3, h4, h5, h6 {
padding: 0px;
margin: 0px;
}
table.header-table td {
vertical-align: top;
}
table.header-table h1 {
text-transform: uppercase;
color: white;
font-size: 55px;
font-style: italic;
}
table.header-table thead tr:nth-child(1) div {
height: 24px;
background-color: #696969;
vertical-align: middle;
padding: 12px 0px 0px 0px;
width: 100%;
}
div.page-body table td:nth-child(6),
div.page-body table td:nth-child(7) {
text-align: right;
}
div.page-body table tr td {
background-color: #DCDCDC !important;
}
div.page-body table tr:nth-child(1) td {
background-color: #696969 !important;
color: white !important;
}
table.footer-table td {
vertical-align: top;
}
table.footer-table td table td:nth-child(2),
table.footer-table td table td:nth-child(3) {
text-align: right;
}
table.footer-table tfoot td {
background-color: #696969;
height: 10px;
}
.imp-details {
background-color: #DCDCDC;
}
</style>
<!-- Javascript -->
<script>
si_std = {
print_item_table: function() {
var table = print_table(
'Delivery Note',
doc.name,
'delivery_note_details',
'Delivery Note Detail',
[// Here specify the table columns to be displayed
'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
'basic_rate', 'amount'
],
[// Here specify the labels of column headings
'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
'UoM', 'Basic Rate', 'Amount'
],
[// Here specify the column widths
'3%', '10%', '15%', '32%', '5%',
'5%', '15%', '15%'
],
null,
null,
{
'description' : function(data_row) {
var to_append = ''
if(data_row.adj_rate){
to_append = '<div style="padding-left: 15px;"><i>Discount: ' +
data_row.adj_rate + '% on ' + doc.currency + ' ' +
fmt_money(data_row.ref_rate) + '</i></div>';
if(data_row.description.indexOf(to_append)==-1) {
data_row.description = data_row.description + to_append;
}
}
if(data_row.serial_no) {
to_append = '<div style="padding-left: 15px;"><i>Serial No.:' +
((data_row.serial_no.indexOf('\n')>-1)?'<br />':'&nbsp;') +
data_row.serial_no + '</i></div>';
if(data_row.description.indexOf(to_append)==-1) {
data_row.description = data_row.description + to_append;
}
}
return data_row.description;
}
}
);
// This code takes care of page breaks
if(table.appendChild) {
out = table.innerHTML;
} else {
out = '';
for(var i=0; i < (table.length-1); i++) {
out += table[i].innerHTML +
'<div style = "page-break-after: always;" \
class = "page_break"></div>\
<div class="page-settings"></div>';
}
out += table[table.length-1].innerHTML;
}
return out;
},
print_other_charges: function(parent) {
var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
var rows = '<table width=100%>\n';
for(var i=0; i<oc.length; i++) {
if(!oc[i].included_in_print_rate) {
rows +=
'<tr>\n' +
'\t<td>' + oc[i].description + '</td>\n' +
'\t<td></td>\n' +
'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
'</tr>\n';
}
}
return rows + '</table>\n';
}
};
</script>
<!-- Page Layout Settings -->
<div class='common page-header'>
<!--
Page Header will contain
+ table 1
+ table 1a
- Name
- Address
- Contact
- Mobile No
+ table 1b
- Voucher Date
- Due Date
-->
<table class='header-table' cellspacing=0>
<thead>
<tr><td colspan=2><div><script>'<h1>' + (doc.select_print_heading || 'Delivery Note') + '</h1>'</script></div></td></tr>
<tr><td colspan=2><div style="height:15px"></div></td></tr>
</thead>
<tbody>
<tr>
<td width=60%><table width=100% cellspacing=0><tbody>
<tr>
<td width=22%><b>Name</b></td>
<td><script>doc.customer_name</script></td>
</tr>
<tr>
<td><b>Address</b></td>
<td><script>replace_newlines(doc.address_display)</script></td>
</tr>
<tr>
<td><b>Contact</b></td>
<td><script>doc.contact_display</script></td>
</tr>
</tbody></table></td>
<td><table width=100% cellspacing=0><tbody>
<tr class='imp-details'>
<td><b>Delivery Note No.</b></td>
<td><script>cur_frm.docname</script></td>
</tr>
<tr>
<td width=63%><b>Delivery Note Date</b></td>
<td><script>date.str_to_user(doc.transaction_date)</script></td>
<tr>
<tr>
<td><b>Sales Order No.</b></td>
<td>
<script>doc.sales_order_no</script><br />
<i>(<script>date.str_to_user(doc.posting_date)</script>)</i>
</td>
<tr>
</tbody></table></td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div class='common page-body'>
<!--
Page Body will contain
+ table 2
- Sales Invoice Data
-->
<script>si_std.print_item_table()</script>
</div>
<div class='common page-footer'>
<!--
Page Footer will contain
+ table 3
- Terms and Conditions
- Total Rounded Amount Calculation
- Total Rounded Amount in Words
-->
<table class='footer-table' width=100% cellspacing=0>
<thead>
</thead>
<tbody>
<tr>
<td width=60% style='padding-right: 10px;'>
<b>Terms, Conditions &amp; Other Information:</b><br />
<script>doc.terms</script>
</td>
<td>
<table cellspacing=0 width=100%><tbody>
<tr>
<td>Net Total</td>
<td></td>
<td width=38%><script>
fmt_money(doc.net_total)
</script></td>
</tr>
<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
<tr>
<td>Grand Total</td>
<td></td>
<td><script>
fmt_money(doc.grand_total_export)
</script></td>
</tr>
<tr style='font-weight: bold' class='imp-details'>
<td>Rounded Total</td>
<td><script>doc.currency</script></td>
<td><script>
fmt_money(doc.rounded_total_export)
</script></td>
</tr>
</tbody></table>
<br /><b>In Words</b><br />
<i><script>doc.in_words_export</script></i>
</td>
</tr>
</tbody>
<tfoot>
<tr><td colspan=2><div></div></td><tr>
</tfoot>
</table>
</div>

View File

@ -1,312 +0,0 @@
<!--
Sample Print Format for ERPNext
Please use at your own discretion
For suggestions and contributions:
https://github.com/webnotes/erpnext-print-templates
Freely usable under MIT license
-->
<!-- Style Settings -->
<style>
/*
common style for whole page
This should include:
+ page size related settings
+ font family settings
+ line spacing settings
*/
@media screen {
body {
width: 8.3in;
}
}
html, body, div, span, td {
font-family: "Arial", sans-serif;
font-size: 12px;
}
body {
padding: 10px;
margin: auto;
font-size: 12px;
line-height: 150%;
}
.common {
font-family: "Arial", sans-serif !important;
font-size: 12px;
padding: 0px;
}
table {
width: 100% !important;
vertical-align: top;
}
table td {
padding: 2px 0px;
}
table, td {
border-collapse: collapse !important;
padding: 0px;
margin: 0px !important;
}
table h1, h2, h3, h4, h5, h6 {
padding: 0px;
margin: 0px;
}
table.header-table td {
vertical-align: top;
}
table.header-table h3 {
color: gray;
}
table.header-table thead td {
padding: 5px;
}
table.header-table > thead,
table.header-table > tbody > tr > td,
table.footer-table > tbody > tr > td {
border: 1px solid black;
padding: 5px;
}
table.footer-table > tbody,
table.header-table > thead {
border-bottom: 3px solid black;
}
table.header-table > thead {
border-top: 3px solid black;
}
div.page-body table td:nth-child(6),
div.page-body table td:nth-child(7) {
text-align: right;
}
div.page-body td {
background-color: white !important;
border: 1px solid black !important;
}
table.footer-table td {
vertical-align: top;
}
table.footer-table td table td:nth-child(2),
table.footer-table td table td:nth-child(3) {
text-align: right;
}
</style>
<!-- Javascript -->
<script>
si_std = {
print_item_table: function() {
var table = print_table(
'Delivery Note',
doc.name,
'delivery_note_details',
'Delivery Note Detail',
[// Here specify the table columns to be displayed
'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
'basic_rate', 'amount'
],
[// Here specify the labels of column headings
'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
'UoM', 'Basic Rate', 'Amount'
],
[// Here specify the column widths
'3%', '10%', '15%', '32%', '5%',
'5%', '15%', '15%'
],
null,
null,
{
'description' : function(data_row) {
var to_append = ''
if(data_row.adj_rate){
to_append = '<div style="padding-left: 15px;"><i>Discount: ' +
data_row.adj_rate + '% on ' + doc.currency + ' ' +
fmt_money(data_row.ref_rate) + '</i></div>';
if(data_row.description.indexOf(to_append)==-1) {
data_row.description = data_row.description + to_append;
}
}
if(data_row.serial_no) {
to_append = '<div style="padding-left: 15px;"><i>Serial No.:' +
((data_row.serial_no.indexOf('\n')>-1)?'<br />':'&nbsp;') +
data_row.serial_no + '</i></div>';
if(data_row.description.indexOf(to_append)==-1) {
data_row.description = data_row.description + to_append;
}
}
return data_row.description;
}
}
);
// This code takes care of page breaks
if(table.appendChild) {
out = table.innerHTML;
} else {
out = '';
for(var i=0; i < (table.length-1); i++) {
out += table[i].innerHTML +
'<div style = "page-break-after: always;" \
class = "page_break"></div>\
<div class="page-settings"></div>';
}
out += table[table.length-1].innerHTML;
}
return out;
},
print_other_charges: function(parent) {
var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
var rows = '<table width=100%>\n';
for(var i=0; i<oc.length; i++) {
if(!oc[i].included_in_print_rate) {
rows +=
'<tr>\n' +
'\t<td>' + oc[i].description + '</td>\n' +
'\t<td></td>\n' +
'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
'</tr>\n';
}
}
return rows + '</table>\n';
}
};
</script>
<!-- Page Layout Settings -->
<div class='common page-header'>
<!--
Page Header will contain
+ table 1
+ table 1a
- Name
- Address
- Contact
- Mobile No
+ table 1b
- Voucher Date
- Due Date
-->
<table class='header-table' cellspacing=0>
<thead>
<tr><td colspan=2><script>'<h1>' + (doc.select_print_heading || 'Delivery Note') + '</h1>'</script></td></tr>
<tr><td colspan=2><h3><script>cur_frm.docname</script></h3></td></tr>
</thead>
<tbody>
<tr>
<td width=60%><table width=100% cellspacing=0><tbody>
<tr>
<td width=22%><b>Name</b></td>
<td><script>doc.customer_name</script></td>
</tr>
<tr>
<td><b>Address</b></td>
<td><script>replace_newlines(doc.address_display)</script></td>
</tr>
<tr>
<td><b>Contact</b></td>
<td><script>doc.contact_display</script></td>
</tr>
</tbody></table></td>
<td><table width=100% cellspacing=0><tbody>
<tr>
<td width=63%><b>Delivery Note Date</b></td>
<td><script>date.str_to_user(doc.transaction_date)</script></td>
<tr>
<tr>
<td><b>Sales Order No.</b></td>
<td>
<script>doc.sales_order_no</script><br />
<i>(<script>date.str_to_user(doc.posting_date)</script>)</i>
</td>
<tr>
</tbody></table></td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div class='common page-body'>
<!--
Page Body will contain
+ table 2
- Sales Invoice Data
-->
<script>si_std.print_item_table()</script>
</div>
<div class='common page-footer'>
<!--
Page Footer will contain
+ table 3
- Terms and Conditions
- Total Rounded Amount Calculation
- Total Rounded Amount in Words
-->
<table class='footer-table' width=100% cellspacing=0>
<thead>
</thead>
<tbody>
<tr>
<td width=60% style='padding-right: 10px;'>
<b>Terms, Conditions &amp; Other Information:</b><br />
<script>doc.terms</script>
</td>
<td>
<table cellspacing=0 width=100%><tbody>
<tr>
<td>Net Total</td>
<td></td>
<td width=38%><script>
fmt_money(doc.net_total)
</script></td>
</tr>
<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
<tr>
<td>Grand Total</td>
<td></td>
<td><script>
fmt_money(doc.grand_total_export)
</script></td>
</tr>
<tr style='font-weight: bold'>
<td>Rounded Total</td>
<td><script>doc.currency</script></td>
<td><script>
fmt_money(doc.rounded_total_export)
</script></td>
</tr>
</tbody></table>
<br /><b>In Words</b><br />
<i><script>doc.in_words_export</script></i>
</td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>

View File

@ -1,248 +0,0 @@
<!--
Sample Print Format for ERPNext
Please use at your own discretion
For suggestions and contributions:
https://github.com/webnotes/erpnext-print-templates
Freely usable under MIT license
-->
<!-- Style Settings -->
<style>
/*
common style for whole page
This should include:
+ page size related settings
+ font family settings
+ line spacing settings
*/
@media screen {
body {
width: 8.3in;
}
}
html, body, div, span, td {
font-family: "Georgia", serif;
font-size: 12px;
}
body {
padding: 10px;
margin: auto;
font-size: 12px;
line-height: 150%;
}
.common {
font-family: "Georgia", serif !important;
font-size: 12px;
padding: 10px 0px;
}
table {
border-collapse: collapse;
width: 100%;
vertical-align: top;
}
table td {
padding: 2px 0px;
}
table h1, h2, h3, h4, h5, h6 {
padding: 0px;
margin: 0px;
}
table.header-table td {
vertical-align: top;
}
table.header-table thead {
border-bottom: 1px solid black;
}
table.header-table h3 {
color: gray;
}
table.header-table thead td {
padding: 5px 0px;
}
div.page-body table td:nth-child(6),
div.page-body table td:nth-child(7) {
text-align: right;
}
table.footer-table td {
vertical-align: top;
}
table.footer-table td table td:nth-child(2),
table.footer-table td table td:nth-child(3) {
text-align: right;
}
</style>
<!-- Javascript -->
<script>
si_std = {
print_item_table: function() {
var table = print_table(
'Purchase Order',
doc.name,
'po_details',
'PO Detail',
[// Here specify the table columns to be displayed
'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
'import_rate', 'import_amount'
],
[// Here specify the labels of column headings
'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
'UoM', 'Basic Rate', 'Amount'
],
[// Here specify the column widths
'3%', '10%', '15%', '32%', '5%',
'5%', '15%', '15%'
]
);
// This code takes care of page breaks
if(table.appendChild) {
out = table.innerHTML;
} else {
out = '';
for(var i=0; i < (table.length-1); i++) {
out += table[i].innerHTML +
'<div style = "page-break-after: always;" \
class = "page_break"></div>\
<div class="page-settings"></div>';
}
out += table[table.length-1].innerHTML;
}
return out;
},
print_other_charges: function(parent) {
var oc = getchildren('Purchase Tax Detail', doc.name, 'purchase_tax_details');
var rows = '<table width=100%>\n';
for(var i=0; i<oc.length; i++) {
rows +=
'<tr>\n' +
'\t<td>' + oc[i].description + '</td>\n' +
'\t<td></td>\n' +
'\t<td width=38%>' + fmt_money(oc[i].tax_amount / (doc.conversion_rate || 1)) + '</td>\n' +
'</tr>\n';
}
return rows + '</table>\n';
}
};
</script>
<!-- Page Layout Settings -->
<div class='common page-header'>
<!--
Page Header will contain
+ table 1
+ table 1a
- Name
- Address
- Contact
- Mobile No
+ table 1b
- Voucher Date
- Due Date
-->
<table class='header-table' cellspacing=0>
<thead>
<tr><td><script>'<h1>' + (doc.select_print_heading || 'Purchase Order') + '</h1>'</script></td></tr>
<tr><td><h3><script>cur_frm.docname</script></h3></td></tr>
</thead>
<tbody>
<tr>
<td width=60%><table width=100% cellspacing=0><tbody>
<tr>
<td width=22%><b>Name</b></td>
<td><script>doc.supplier_name</script></td>
</tr>
<tr>
<td><b>Address</b></td>
<td><script>replace_newlines(doc.address_display)</script></td>
</tr>
<tr>
<td><b>Contact</b></td>
<td><script>doc.contact_display</script></td>
</tr>
</tbody></table></td>
<td><table width=100% cellspacing=0><tbody>
<tr>
<td width=63%><b>Purchase Order Date</b></td>
<td><script>date.str_to_user(doc.transaction_date)</script></td>
<tr>
</tbody></table></td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div class='common page-body'>
<!--
Page Body will contain
+ table 2
- Sales Invoice Data
-->
<script>si_std.print_item_table()</script>
</div>
<div class='common page-footer'>
<!--
Page Footer will contain
+ table 3
- Terms and Conditions
- Total Rounded Amount Calculation
- Total Rounded Amount in Words
-->
<table class='footer-table' width=100% cellspacing=0>
<thead>
</thead>
<tbody>
<tr>
<td width=60% style='padding-right: 10px;'>
<b>Terms, Conditions &amp; Other Information:</b><br />
<script>doc.terms</script>
</td>
<td>
<table cellspacing=0 width=100%><tbody>
<tr>
<td>Net Total</td>
<td></td>
<td width=38%><script>
fmt_money(doc.net_total_import)
</script></td>
</tr>
<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
<tr style='font-weight: bold'>
<td>Grand Total</td>
<td><script>doc.currency</script></td>
<td><script>
fmt_money(doc.grand_total_import)
</script></td>
</tr>
</tbody></table>
<br /><b>In Words</b><br />
<i><script>doc.in_words_import</script></i>
</td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>

View File

@ -1,275 +0,0 @@
<!--
Sample Print Format for ERPNext
Please use at your own discretion
For suggestions and contributions:
https://github.com/webnotes/erpnext-print-templates
Freely usable under MIT license
-->
<!-- Style Settings -->
<style>
/*
common style for whole page
This should include:
+ page size related settings
+ font family settings
+ line spacing settings
*/
@media screen {
body {
width: 8.3in;
}
}
html, body, div, span, td {
font-family: "Helvetica", "Arial", sans-serif;
font-size: 12px;
}
body {
padding: 10px;
margin: auto;
font-size: 12px;
line-height: 150%;
}
.common {
font-family: "Helvetica", "Arial", sans-serif !important;
font-size: 12px;
padding: 10px 0px;
}
table {
border-collapse: collapse;
width: 100%;
vertical-align: top;
border-style: none !important;
}
table td {
padding: 2px 0px;
border-style: none !important;
}
table h1, h2, h3, h4, h5, h6 {
padding: 0px;
margin: 0px;
}
table.header-table td {
vertical-align: top;
}
table.header-table h1 {
text-transform: uppercase;
color: white;
font-size: 55px;
font-style: italic;
}
table.header-table thead tr:nth-child(1) div {
height: 24px;
background-color: #696969;
vertical-align: middle;
padding: 12px 0px 0px 0px;
width: 100%;
}
div.page-body table td:nth-child(6),
div.page-body table td:nth-child(7) {
text-align: right;
}
div.page-body table tr td {
background-color: #DCDCDC !important;
}
div.page-body table tr:nth-child(1) td {
background-color: #696969 !important;
color: white !important;
}
table.footer-table td {
vertical-align: top;
}
table.footer-table td table td:nth-child(2),
table.footer-table td table td:nth-child(3) {
text-align: right;
}
table.footer-table tfoot td {
background-color: #696969;
height: 10px;
}
.imp-details {
background-color: #DCDCDC;
}
</style>
<!-- Javascript -->
<script>
si_std = {
print_item_table: function() {
var table = print_table(
'Purchase Order',
doc.name,
'po_details',
'PO Detail',
[// Here specify the table columns to be displayed
'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
'import_rate', 'import_amount'
],
[// Here specify the labels of column headings
'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
'UoM', 'Basic Rate', 'Amount'
],
[// Here specify the column widths
'3%', '10%', '15%', '32%', '5%',
'5%', '15%', '15%'
]
);
// This code takes care of page breaks
if(table.appendChild) {
out = table.innerHTML;
} else {
out = '';
for(var i=0; i < (table.length-1); i++) {
out += table[i].innerHTML +
'<div style = "page-break-after: always;" \
class = "page_break"></div>\
<div class="page-settings"></div>';
}
out += table[table.length-1].innerHTML;
}
return out;
},
print_other_charges: function(parent) {
var oc = getchildren('Purchase Tax Detail', doc.name, 'purchase_tax_details');
var rows = '<table width=100%>\n';
for(var i=0; i<oc.length; i++) {
rows +=
'<tr>\n' +
'\t<td>' + oc[i].description + '</td>\n' +
'\t<td></td>\n' +
'\t<td width=38%>' + fmt_money(oc[i].tax_amount / (doc.conversion_rate || 1)) + '</td>\n' +
'</tr>\n';
}
return rows + '</table>\n';
}
};
</script>
<!-- Page Layout Settings -->
<div class='common page-header'>
<!--
Page Header will contain
+ table 1
+ table 1a
- Name
- Address
- Contact
- Mobile No
+ table 1b
- Voucher Date
- Due Date
-->
<table class='header-table' cellspacing=0>
<thead>
<tr><td colspan=2><div><script>'<h1>' + (doc.select_print_heading || 'Purchase Order') + '</h1>'</script></div></td></tr>
<tr><td colspan=2><div style="height:15px"></div></td></tr>
</thead>
<tbody>
<tr>
<td width=60%><table width=100% cellspacing=0><tbody>
<tr>
<td width=22%><b>Name</b></td>
<td><script>doc.supplier_name</script></td>
</tr>
<tr>
<td><b>Address</b></td>
<td><script>replace_newlines(doc.address_display)</script></td>
</tr>
<tr>
<td><b>Contact</b></td>
<td><script>doc.contact_display</script></td>
</tr>
</tbody></table></td>
<td><table width=100% cellspacing=0><tbody>
<tr class='imp-details'>
<td><b>Purchase Order No.</b></td>
<td><script>cur_frm.docname</script></td>
</tr>
<tr>
<td width=63%><b>Purchase Order Date</b></td>
<td><script>date.str_to_user(doc.transaction_date)</script></td>
<tr>
</tbody></table></td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div class='common page-body'>
<!--
Page Body will contain
+ table 2
- Sales Invoice Data
-->
<script>si_std.print_item_table()</script>
</div>
<div class='common page-footer'>
<!--
Page Footer will contain
+ table 3
- Terms and Conditions
- Total Rounded Amount Calculation
- Total Rounded Amount in Words
-->
<table class='footer-table' width=100% cellspacing=0>
<thead>
</thead>
<tbody>
<tr>
<td width=60% style='padding-right: 10px;'>
<b>Terms, Conditions &amp; Other Information:</b><br />
<script>doc.terms</script>
</td>
<td>
<table cellspacing=0 width=100%><tbody>
<tr>
<td>Net Total</td>
<td></td>
<td width=38%><script>
fmt_money(doc.net_total_import)
</script></td>
</tr>
<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
<tr style='font-weight: bold' class='imp-details'>
<td>Grand Total</td>
<td><script>doc.currency</script></td>
<td><script>
fmt_money(doc.grand_total_import)
</script></td>
</tr>
</tbody></table>
<br /><b>In Words</b><br />
<i><script>doc.in_words_import</script></i>
</td>
</tr>
</tbody>
<tfoot>
<tr><td colspan=2><div></div></td><tr>
</tfoot>
</table>
</div>

View File

@ -1,270 +0,0 @@
<!--
Sample Print Format for ERPNext
Please use at your own discretion
For suggestions and contributions:
https://github.com/webnotes/erpnext-print-templates
Freely usable under MIT license
-->
<!-- Style Settings -->
<style>
/*
common style for whole page
This should include:
+ page size related settings
+ font family settings
+ line spacing settings
*/
@media screen {
body {
width: 8.3in;
}
}
html, body, div, span, td {
font-family: "Arial", sans-serif;
font-size: 12px;
}
body {
padding: 10px;
margin: auto;
font-size: 12px;
line-height: 150%;
}
.common {
font-family: "Arial", sans-serif !important;
font-size: 12px;
padding: 0px;
}
table {
width: 100% !important;
vertical-align: top;
}
table td {
padding: 2px 0px;
}
table, td {
border-collapse: collapse !important;
padding: 0px;
margin: 0px !important;
}
table h1, h2, h3, h4, h5, h6 {
padding: 0px;
margin: 0px;
}
table.header-table td {
vertical-align: top;
}
table.header-table h3 {
color: gray;
}
table.header-table thead td {
padding: 5px;
}
table.header-table > thead,
table.header-table > tbody > tr > td,
table.footer-table > tbody > tr > td {
border: 1px solid black;
padding: 5px;
}
table.footer-table > tbody,
table.header-table > thead {
border-bottom: 3px solid black;
}
table.header-table > thead {
border-top: 3px solid black;
}
div.page-body table td:nth-child(6),
div.page-body table td:nth-child(7) {
text-align: right;
}
div.page-body td {
background-color: white !important;
border: 1px solid black !important;
}
table.footer-table td {
vertical-align: top;
}
table.footer-table td table td:nth-child(2),
table.footer-table td table td:nth-child(3) {
text-align: right;
}
</style>
<!-- Javascript -->
<script>
si_std = {
print_item_table: function() {
var table = print_table(
'Purchase Order',
doc.name,
'po_details',
'PO Detail',
[// Here specify the table columns to be displayed
'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
'import_rate', 'import_amount'
],
[// Here specify the labels of column headings
'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
'UoM', 'Basic Rate', 'Amount'
],
[// Here specify the column widths
'3%', '10%', '15%', '32%', '5%',
'5%', '15%', '15%'
]
);
// This code takes care of page breaks
if(table.appendChild) {
out = table.innerHTML;
} else {
out = '';
for(var i=0; i < (table.length-1); i++) {
out += table[i].innerHTML +
'<div style = "page-break-after: always;" \
class = "page_break"></div>\
<div class="page-settings"></div>';
}
out += table[table.length-1].innerHTML;
}
return out;
},
print_other_charges: function(parent) {
var oc = getchildren('Purchase Tax Detail', doc.name, 'purchase_tax_details');
var rows = '<table width=100%>\n';
for(var i=0; i<oc.length; i++) {
rows +=
'<tr>\n' +
'\t<td>' + oc[i].description + '</td>\n' +
'\t<td></td>\n' +
'\t<td width=38%>' + fmt_money(oc[i].tax_amount / (doc.conversion_rate || 1)) + '</td>\n' +
'</tr>\n';
}
return rows + '</table>\n';
}
};
</script>
<!-- Page Layout Settings -->
<div class='common page-header'>
<!--
Page Header will contain
+ table 1
+ table 1a
- Name
- Address
- Contact
- Mobile No
+ table 1b
- Voucher Date
- Due Date
-->
<table class='header-table' cellspacing=0>
<thead>
<tr><td colspan=2><script>'<h1>' + (doc.select_print_heading || 'Purchase Order') + '</h1>'</script></td></tr>
<tr><td colspan=2><h3><script>cur_frm.docname</script></h3></td></tr>
</thead>
<tbody>
<tr>
<td width=60%><table width=100% cellspacing=0><tbody>
<tr>
<td width=22%><b>Name</b></td>
<td><script>doc.supplier_name</script></td>
</tr>
<tr>
<td><b>Address</b></td>
<td><script>replace_newlines(doc.address_display)</script></td>
</tr>
<tr>
<td><b>Contact</b></td>
<td><script>doc.contact_display</script></td>
</tr>
</tbody></table></td>
<td><table width=100% cellspacing=0><tbody>
<tr>
<td width=63%><b>Purchase Order Date</b></td>
<td><script>date.str_to_user(doc.transaction_date)</script></td>
<tr>
</tbody></table></td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div class='common page-body'>
<!--
Page Body will contain
+ table 2
- Sales Invoice Data
-->
<script>si_std.print_item_table()</script>
</div>
<div class='common page-footer'>
<!--
Page Footer will contain
+ table 3
- Terms and Conditions
- Total Rounded Amount Calculation
- Total Rounded Amount in Words
-->
<table class='footer-table' width=100% cellspacing=0>
<thead>
</thead>
<tbody>
<tr>
<td width=60% style='padding-right: 10px;'>
<b>Terms, Conditions &amp; Other Information:</b><br />
<script>doc.terms</script>
</td>
<td>
<table cellspacing=0 width=100%><tbody>
<tr>
<td>Net Total</td>
<td></td>
<td width=38%><script>
fmt_money(doc.net_total_import)
</script></td>
</tr>
<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
<tr style='font-weight: bold'>
<td>Grand Total</td>
<td><script>doc.currency</script></td>
<td><script>
fmt_money(doc.grand_total_import)
</script></td>
</tr>
</tbody></table>
<br /><b>In Words</b><br />
<i><script>doc.in_words_import</script></i>
</td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>

View File

@ -1,275 +0,0 @@
<!--
Sample Print Format for ERPNext
Please use at your own discretion
For suggestions and contributions:
https://github.com/webnotes/erpnext-print-templates
Freely usable under MIT license
-->
<!-- Style Settings -->
<style>
/*
common style for whole page
This should include:
+ page size related settings
+ font family settings
+ line spacing settings
*/
@media screen {
body {
width: 8.3in;
}
}
html, body, div, span, td {
font-family: "Georgia", serif;
font-size: 12px;
}
body {
padding: 10px;
margin: auto;
font-size: 12px;
line-height: 150%;
}
.common {
font-family: "Georgia", serif !important;
font-size: 12px;
padding: 10px 0px;
}
table {
border-collapse: collapse;
width: 100%;
vertical-align: top;
}
table td {
padding: 2px 0px;
}
table h1, h2, h3, h4, h5, h6 {
padding: 0px;
margin: 0px;
}
table.header-table td {
vertical-align: top;
}
table.header-table thead {
border-bottom: 1px solid black;
}
table.header-table h3 {
color: gray;
}
table.header-table thead td {
padding: 5px 0px;
}
div.page-body table td:nth-child(6),
div.page-body table td:nth-child(7) {
text-align: right;
}
table.footer-table td {
vertical-align: top;
}
table.footer-table td table td:nth-child(2),
table.footer-table td table td:nth-child(3) {
text-align: right;
}
</style>
<!-- Javascript -->
<script>
si_std = {
print_item_table: function() {
var table = print_table(
'Quotation',
doc.name,
'quotation_details',
'Quotation Detail',
[// Here specify the table columns to be displayed
'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
'export_rate', 'export_amount'
],
[// Here specify the labels of column headings
'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
'UoM', 'Basic Rate', 'Amount'
],
[// Here specify the column widths
'3%', '10%', '15%', '32%', '5%',
'5%', '15%', '15%'
],
null,
null,
{
'description' : function(data_row) {
if(data_row.adj_rate) {
var to_append = '<div style="padding-left: 15px;"><i>Discount: ' +
data_row.adj_rate + '% on ' + doc.currency + ' ' +
fmt_money(data_row.ref_rate) + '</i></div>';
if(data_row.description.indexOf(to_append)==-1) {
return data_row.description + to_append;
} else { return data_row.description; }
} else {
return data_row.description;
}
}
}
);
// This code takes care of page breaks
if(table.appendChild) {
out = table.innerHTML;
} else {
out = '';
for(var i=0; i < (table.length-1); i++) {
out += table[i].innerHTML +
'<div style = "page-break-after: always;" \
class = "page_break"></div>\
<div class="page-settings"></div>';
}
out += table[table.length-1].innerHTML;
}
return out;
},
print_other_charges: function(parent) {
var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
var rows = '<table width=100%>\n';
for(var i=0; i<oc.length; i++) {
if(!oc[i].included_in_print_rate) {
rows +=
'<tr>\n' +
'\t<td>' + oc[i].description + '</td>\n' +
'\t<td></td>\n' +
'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
'</tr>\n';
}
}
return rows + '</table>\n';
}
};
</script>
<!-- Page Layout Settings -->
<div class='common page-header'>
<!--
Page Header will contain
+ table 1
+ table 1a
- Name
- Address
- Contact
- Mobile No
+ table 1b
- Voucher Date
- Due Date
-->
<table class='header-table' cellspacing=0>
<thead>
<tr><td>
<script>'<h1>' + (doc.select_print_heading || 'Quotation') + '</h1>'</script>
</td></tr>
<tr><td><h3><script>cur_frm.docname</script></h3></td></tr>
</thead>
<tbody>
<tr>
<td width=60%><table width=100% cellspacing=0><tbody>
<tr>
<td width=39%><b>Name</b></td>
<td><script>doc.customer?doc.customer:doc.lead_name</script></td>
</tr>
<tr>
<td><b>Address</b></td>
<td><script>replace_newlines(doc.address_display)</script></td>
</tr>
<tr>
<td><b>Contact</b></td>
<td><script>doc.contact_display</script></td>
</tr>
</tbody></table></td>
<td><table width=100% cellspacing=0><tbody>
<tr>
<td width=63%><b>Quotation Date</b></td>
<td><script>date.str_to_user(doc.transaction_date)</script></td>
<tr>
</tbody></table></td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div class='common page-body'>
<!--
Page Body will contain
+ table 2
- Sales Invoice Data
-->
<script>si_std.print_item_table()</script>
</div>
<div class='common page-footer'>
<!--
Page Footer will contain
+ table 3
- Terms and Conditions
- Total Rounded Amount Calculation
- Total Rounded Amount in Words
-->
<table class='footer-table' width=100% cellspacing=0>
<thead>
</thead>
<tbody>
<tr>
<td width=60% style='padding-right: 10px;'>
<b>Terms, Conditions &amp; Other Information:</b><br />
<script>doc.terms</script>
</td>
<td>
<table cellspacing=0 width=100%><tbody>
<tr>
<td>Net Total</td>
<td></td>
<td width=38%><script>
fmt_money(doc.net_total/doc.conversion_rate)
</script></td>
</tr>
<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
<tr>
<td>Grand Total</td>
<td></td>
<td><script>
fmt_money(doc.grand_total_export)
</script></td>
</tr>
<tr style='font-weight: bold'>
<td>Rounded Total</td>
<td><script>doc.currency</script></td>
<td><script>
fmt_money(doc.rounded_total_export)
</script></td>
</tr>
</tbody></table>
<br /><b>In Words</b><br />
<i><script>doc.in_words_export</script></i>
</td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>

View File

@ -1,300 +0,0 @@
<!--
Sample Print Format for ERPNext
Please use at your own discretion
For suggestions and contributions:
https://github.com/webnotes/erpnext-print-templates
Freely usable under MIT license
-->
<!-- Style Settings -->
<style>
/*
common style for whole page
This should include:
+ page size related settings
+ font family settings
+ line spacing settings
*/
@media screen {
body {
width: 8.3in;
}
}
html, body, div, span, td {
font-family: "Helvetica", "Arial", sans-serif;
font-size: 12px;
}
body {
padding: 10px;
margin: auto;
font-size: 12px;
line-height: 150%;
}
.common {
font-family: "Helvetica", "Arial", sans-serif !important;
font-size: 12px;
padding: 10px 0px;
}
table {
border-collapse: collapse;
width: 100%;
vertical-align: top;
border-style: none !important;
}
table td {
padding: 2px 0px;
border-style: none !important;
}
table h1, h2, h3, h4, h5, h6 {
padding: 0px;
margin: 0px;
}
table.header-table td {
vertical-align: top;
}
table.header-table h1 {
text-transform: uppercase;
color: white;
font-size: 55px;
font-style: italic;
}
table.header-table thead tr:nth-child(1) div {
height: 24px;
background-color: #696969;
vertical-align: middle;
padding: 12px 0px 0px 0px;
width: 100%;
}
div.page-body table td:nth-child(6),
div.page-body table td:nth-child(7) {
text-align: right;
}
div.page-body table tr td {
background-color: #DCDCDC !important;
}
div.page-body table tr:nth-child(1) td {
background-color: #696969 !important;
color: white !important;
}
table.footer-table td {
vertical-align: top;
}
table.footer-table td table td:nth-child(2),
table.footer-table td table td:nth-child(3) {
text-align: right;
}
table.footer-table tfoot td {
background-color: #696969;
height: 10px;
}
.imp-details {
background-color: #DCDCDC;
}
</style>
<!-- Javascript -->
<script>
si_std = {
print_item_table: function() {
var table = print_table(
'Quotation',
doc.name,
'quotation_details',
'Quotation Detail',
[// Here specify the table columns to be displayed
'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
'export_rate', 'export_amount'
],
[// Here specify the labels of column headings
'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
'UoM', 'Basic Rate', 'Amount'
],
[// Here specify the column widths
'3%', '10%', '15%', '32%', '5%',
'5%', '15%', '15%'
],
null,
null,
{
'description' : function(data_row) {
if(data_row.adj_rate) {
var to_append = '<div style="padding-left: 15px;"><i>Discount: ' +
data_row.adj_rate + '% on ' + doc.currency + ' ' +
fmt_money(data_row.ref_rate) + '</i></div>';
if(data_row.description.indexOf(to_append)==-1) {
return data_row.description + to_append;
} else { return data_row.description; }
} else {
return data_row.description;
}
}
}
);
// This code takes care of page breaks
if(table.appendChild) {
out = table.innerHTML;
} else {
out = '';
for(var i=0; i < (table.length-1); i++) {
out += table[i].innerHTML +
'<div style = "page-break-after: always;" \
class = "page_break"></div>\
<div class="page-settings"></div>';
}
out += table[table.length-1].innerHTML;
}
return out;
},
print_other_charges: function(parent) {
var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
var rows = '<table width=100%>\n';
for(var i=0; i<oc.length; i++) {
if(!oc[i].included_in_print_rate) {
rows +=
'<tr>\n' +
'\t<td>' + oc[i].description + '</td>\n' +
'\t<td></td>\n' +
'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
'</tr>\n';
}
}
return rows + '</table>\n';
}
};
</script>
<!-- Page Layout Settings -->
<div class='common page-header'>
<!--
Page Header will contain
+ table 1
+ table 1a
- Name
- Address
- Contact
- Mobile No
+ table 1b
- Voucher Date
- Due Date
-->
<table class='header-table' cellspacing=0>
<thead>
<tr><td colspan=2><div><script>'<h1>' + (doc.select_print_heading || 'Quotation') + '</h1>'</script></div></td></tr>
<tr><td colspan=2><div style="height:15px"></div></td></tr>
</thead>
<tbody>
<tr>
<td width=60%><table width=100% cellspacing=0><tbody>
<tr>
<td width=39%><b>Name</b></td>
<td><script>doc.customer?doc.customer:doc.lead_name</script></td>
</tr>
<tr>
<td><b>Address</b></td>
<td><script>replace_newlines(doc.address_display)</script></td>
</tr>
<tr>
<td><b>Contact</b></td>
<td><script>doc.contact_display</script></td>
</tr>
</tbody></table></td>
<td><table width=100% cellspacing=0><tbody>
<tr class='imp-details'>
<td><b>Quotation No.</b></td>
<td><script>cur_frm.docname</script></td>
</tr>
<tr>
<td width=63%><b>Quotation Date</b></td>
<td><script>date.str_to_user(doc.transaction_date)</script></td>
<tr>
</tbody></table></td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div class='common page-body'>
<!--
Page Body will contain
+ table 2
- Sales Invoice Data
-->
<script>si_std.print_item_table()</script>
</div>
<div class='common page-footer'>
<!--
Page Footer will contain
+ table 3
- Terms and Conditions
- Total Rounded Amount Calculation
- Total Rounded Amount in Words
-->
<table class='footer-table' width=100% cellspacing=0>
<thead>
</thead>
<tbody>
<tr>
<td width=60% style='padding-right: 10px;'>
<b>Terms, Conditions &amp; Other Information:</b><br />
<script>doc.terms</script>
</td>
<td>
<table cellspacing=0 width=100%><tbody>
<tr>
<td>Net Total</td>
<td></td>
<td width=38%><script>
fmt_money(doc.net_total/doc.conversion_rate)
</script></td>
</tr>
<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
<tr>
<td>Grand Total</td>
<td></td>
<td><script>
fmt_money(doc.grand_total_export)
</script></td>
</tr>
<tr style='font-weight: bold' class='imp-details'>
<td>Rounded Total</td>
<td><script>doc.currency</script></td>
<td><script>
fmt_money(doc.rounded_total_export)
</script></td>
</tr>
</tbody></table>
<br /><b>In Words</b><br />
<i><script>doc.in_words_export</script></i>
</td>
</tr>
</tbody>
<tfoot>
<tr><td colspan=2><div></div></td><tr>
</tfoot>
</table>
</div>

View File

@ -1,295 +0,0 @@
<!--
Sample Print Format for ERPNext
Please use at your own discretion
For suggestions and contributions:
https://github.com/webnotes/erpnext-print-templates
Freely usable under MIT license
-->
<!-- Style Settings -->
<style>
/*
common style for whole page
This should include:
+ page size related settings
+ font family settings
+ line spacing settings
*/
@media screen {
body {
width: 8.3in;
}
}
html, body, div, span, td {
font-family: "Arial", sans-serif;
font-size: 12px;
}
body {
padding: 10px;
margin: auto;
font-size: 12px;
line-height: 150%;
}
.common {
font-family: "Arial", sans-serif !important;
font-size: 12px;
padding: 0px;
}
table {
width: 100% !important;
vertical-align: top;
}
table td {
padding: 2px 0px;
}
table, td {
border-collapse: collapse !important;
padding: 0px;
margin: 0px !important;
}
table h1, h2, h3, h4, h5, h6 {
padding: 0px;
margin: 0px;
}
table.header-table td {
vertical-align: top;
}
table.header-table h3 {
color: gray;
}
table.header-table thead td {
padding: 5px;
}
table.header-table > thead,
table.header-table > tbody > tr > td,
table.footer-table > tbody > tr > td {
border: 1px solid black;
padding: 5px;
}
table.footer-table > tbody,
table.header-table > thead {
border-bottom: 3px solid black;
}
table.header-table > thead {
border-top: 3px solid black;
}
div.page-body table td:nth-child(6),
div.page-body table td:nth-child(7) {
text-align: right;
}
div.page-body td {
background-color: white !important;
border: 1px solid black !important;
}
table.footer-table td {
vertical-align: top;
}
table.footer-table td table td:nth-child(2),
table.footer-table td table td:nth-child(3) {
text-align: right;
}
</style>
<!-- Javascript -->
<script>
si_std = {
print_item_table: function() {
var table = print_table(
'Quotation',
doc.name,
'quotation_details',
'Quotation Detail',
[// Here specify the table columns to be displayed
'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
'export_rate', 'export_amount'
],
[// Here specify the labels of column headings
'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
'UoM', 'Basic Rate', 'Amount'
],
[// Here specify the column widths
'3%', '10%', '15%', '32%', '5%',
'5%', '15%', '15%'
],
null,
null,
{
'description' : function(data_row) {
if(data_row.adj_rate) {
var to_append = '<div style="padding-left: 15px;"><i>Discount: ' +
data_row.adj_rate + '% on ' + doc.currency + ' ' +
fmt_money(data_row.ref_rate) + '</i></div>';
if(data_row.description.indexOf(to_append)==-1) {
return data_row.description + to_append;
} else { return data_row.description; }
} else {
return data_row.description;
}
}
}
);
// This code takes care of page breaks
if(table.appendChild) {
out = table.innerHTML;
} else {
out = '';
for(var i=0; i < (table.length-1); i++) {
out += table[i].innerHTML +
'<div style = "page-break-after: always;" \
class = "page_break"></div>\
<div class="page-settings"></div>';
}
out += table[table.length-1].innerHTML;
}
return out;
},
print_other_charges: function(parent) {
var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
var rows = '<table width=100%>\n';
for(var i=0; i<oc.length; i++) {
if(!oc[i].included_in_print_rate) {
rows +=
'<tr>\n' +
'\t<td>' + oc[i].description + '</td>\n' +
'\t<td></td>\n' +
'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
'</tr>\n';
}
}
return rows + '</table>\n';
}
};
</script>
<!-- Page Layout Settings -->
<div class='common page-header'>
<!--
Page Header will contain
+ table 1
+ table 1a
- Name
- Address
- Contact
- Mobile No
+ table 1b
- Voucher Date
- Due Date
-->
<table class='header-table' cellspacing=0>
<thead>
<tr><td colspan=2><script>'<h1>' + (doc.select_print_heading || 'Quotation') + '</h1>'</script></td></tr>
<tr><td colspan=2><h3><script>cur_frm.docname</script></h3></td></tr>
</thead>
<tbody>
<tr>
<td width=60%><table width=100% cellspacing=0><tbody>
<tr>
<td width=39%><b>Name</b></td>
<td><script>doc.customer?doc.customer:doc.lead_name</script></td>
</tr>
<tr>
<td><b>Address</b></td>
<td><script>replace_newlines(doc.address_display)</script></td>
</tr>
<tr>
<td><b>Contact</b></td>
<td><script>doc.contact_display</script></td>
</tr>
</tbody></table></td>
<td><table width=100% cellspacing=0><tbody>
<tr>
<td width=63%><b>Quotation Date</b></td>
<td><script>date.str_to_user(doc.transaction_date)</script></td>
<tr>
</tbody></table></td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div class='common page-body'>
<!--
Page Body will contain
+ table 2
- Sales Invoice Data
-->
<script>si_std.print_item_table()</script>
</div>
<div class='common page-footer'>
<!--
Page Footer will contain
+ table 3
- Terms and Conditions
- Total Rounded Amount Calculation
- Total Rounded Amount in Words
-->
<table class='footer-table' width=100% cellspacing=0>
<thead>
</thead>
<tbody>
<tr>
<td width=60% style='padding-right: 10px;'>
<b>Terms, Conditions &amp; Other Information:</b><br />
<script>doc.terms</script>
</td>
<td>
<table cellspacing=0 width=100%><tbody>
<tr>
<td>Net Total</td>
<td></td>
<td width=38%><script>
fmt_money(doc.net_total/doc.conversion_rate)
</script></td>
</tr>
<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
<tr>
<td>Grand Total</td>
<td></td>
<td><script>
fmt_money(doc.grand_total_export)
</script></td>
</tr>
<tr style='font-weight: bold'>
<td>Rounded Total</td>
<td><script>doc.currency</script></td>
<td><script>
fmt_money(doc.rounded_total_export)
</script></td>
</tr>
</tbody></table>
<br /><b>In Words</b><br />
<i><script>doc.in_words_export</script></i>
</td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>

View File

@ -1,277 +0,0 @@
<!--
Sample Print Format for ERPNext
Please use at your own discretion
For suggestions and contributions:
https://github.com/webnotes/erpnext-print-templates
Freely usable under MIT license
-->
<!-- Style Settings -->
<style>
/*
common style for whole page
This should include:
+ page size related settings
+ font family settings
+ line spacing settings
*/
@media screen {
body {
width: 8.3in;
}
}
html, body, div, span, td {
font-family: "Georgia", serif;
font-size: 12px;
}
body {
padding: 10px;
margin: auto;
font-size: 12px;
line-height: 150%;
}
.common {
font-family: "Georgia", serif !important;
font-size: 12px;
padding: 10px 0px;
}
table {
border-collapse: collapse;
width: 100%;
vertical-align: top;
}
table td {
padding: 2px 0px;
}
table h1, h2, h3, h4, h5, h6 {
padding: 0px;
margin: 0px;
}
table.header-table td {
vertical-align: top;
}
table.header-table thead {
border-bottom: 1px solid black;
}
table.header-table h3 {
color: gray;
}
table.header-table thead td {
padding: 5px 0px;
}
div.page-body table td:nth-child(6),
div.page-body table td:nth-child(7) {
text-align: right;
}
table.footer-table td {
vertical-align: top;
}
table.footer-table td table td:nth-child(2),
table.footer-table td table td:nth-child(3) {
text-align: right;
}
</style>
<!-- Javascript -->
<script>
si_std = {
print_item_table: function() {
var table = print_table(
'Receivable Voucher',
doc.name,
'entries',
'RV Detail',
[// Here specify the table columns to be displayed
'SR', 'item_name', 'description', 'qty', 'stock_uom',
'export_rate', 'export_amount'
],
[// Here specify the labels of column headings
'Sr', 'Item Name', 'Description', 'Qty',
'UoM', 'Basic Rate', 'Amount'
],
[// Here specify the column widths
'3%', '20%', '37%', '5%',
'5%', '15%', '15%'
],
null,
null,
{
'description' : function(data_row) {
if(data_row.adj_rate) {
var to_append = '<div style="padding-left: 15px;"><i>Discount: ' +
data_row.adj_rate + '% on ' + doc.currency + ' ' +
fmt_money(data_row.ref_rate) + '</i></div>';
if(data_row.description.indexOf(to_append)==-1) {
return data_row.description + to_append;
} else { return data_row.description; }
} else {
return data_row.description;
}
}
}
);
// This code takes care of page breaks
if(table.appendChild) {
out = table.innerHTML;
} else {
out = '';
for(var i=0; i < (table.length-1); i++) {
out += table[i].innerHTML +
'<div style = "page-break-after: always;" \
class = "page_break"></div>\
<div class="page-settings"></div>';
}
out += table[table.length-1].innerHTML;
}
return out;
},
print_other_charges: function(parent) {
var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
var rows = '<table width=100%>\n';
for(var i=0; i<oc.length; i++) {
if(!oc[i].included_in_print_rate) {
rows +=
'<tr>\n' +
'\t<td>' + oc[i].description + '</td>\n' +
'\t<td></td>\n' +
'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
'</tr>\n';
}
}
return rows + '</table>\n';
}
};
</script>
<!-- Page Layout Settings -->
<div class='common page-header'>
<!--
Page Header will contain
+ table 1
+ table 1a
- Name
- Address
- Contact
- Mobile No
+ table 1b
- Voucher Date
- Due Date
-->
<table class='header-table' cellspacing=0>
<thead>
<tr><td><script>'<h1>' + (doc.select_print_heading || 'Invoice') + '</h1>'</script></td></tr>
<tr><td><h3><script>cur_frm.docname</script></h3></td></tr>
</thead>
<tbody>
<tr>
<td width=60%><table width=100% cellspacing=0><tbody>
<tr>
<td width=39%><b>Name</b></td>
<td><script>doc.customer_name</script></td>
</tr>
<tr>
<td><b>Address</b></td>
<td><script>replace_newlines(doc.address_display)</script></td>
</tr>
<tr>
<td><b>Contact</b></td>
<td><script>doc.contact_display</script></td>
</tr>
</tbody></table></td>
<td><table width=100% cellspacing=0><tbody>
<tr>
<td width=40%><b>Invoice Date</b></td>
<td><script>date.str_to_user(doc.posting_date)</script></td>
<tr>
<tr>
<td><b>Due Date</b></td>
<td><script>date.str_to_user(doc.due_date)</script></td>
<tr>
</tbody></table></td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div class='common page-body'>
<!--
Page Body will contain
+ table 2
- Sales Invoice Data
-->
<script>si_std.print_item_table()</script>
</div>
<div class='common page-footer'>
<!--
Page Footer will contain
+ table 3
- Terms and Conditions
- Total Rounded Amount Calculation
- Total Rounded Amount in Words
-->
<table class='footer-table' width=100% cellspacing=0>
<thead>
</thead>
<tbody>
<tr>
<td width=60% style='padding-right: 10px;'>
<b>Terms, Conditions &amp; Other Information:</b><br />
<script>doc.terms</script>
</td>
<td>
<table cellspacing=0 width=100%><tbody>
<tr>
<td>Net Total</td>
<td></td>
<td width=38%><script>
fmt_money(doc.net_total/doc.conversion_rate)
</script></td>
</tr>
<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
<tr>
<td>Grand Total</td>
<td></td>
<td><script>
fmt_money(doc.grand_total_export)
</script></td>
</tr>
<tr style='font-weight: bold'>
<td>Rounded Total</td>
<td><script>doc.currency</script></td>
<td><script>
fmt_money(doc.rounded_total_export)
</script></td>
</tr>
</tbody></table>
<br /><b>In Words</b><br />
<i><script>doc.in_words_export</script></i>
</td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>

View File

@ -1,304 +0,0 @@
<!--
Sample Print Format for ERPNext
Please use at your own discretion
For suggestions and contributions:
https://github.com/webnotes/erpnext-print-templates
Freely usable under MIT license
-->
<!-- Style Settings -->
<style>
/*
common style for whole page
This should include:
+ page size related settings
+ font family settings
+ line spacing settings
*/
@media screen {
body {
width: 8.3in;
}
}
html, body, div, span, td {
font-family: "Helvetica", "Arial", sans-serif;
font-size: 12px;
}
body {
padding: 10px;
margin: auto;
font-size: 12px;
line-height: 150%;
}
.common {
font-family: "Helvetica", "Arial", sans-serif !important;
font-size: 12px;
padding: 10px 0px;
}
table {
border-collapse: collapse;
width: 100%;
vertical-align: top;
border-style: none !important;
}
table td {
padding: 2px 0px;
border-style: none !important;
}
table h1, h2, h3, h4, h5, h6 {
padding: 0px;
margin: 0px;
}
table.header-table td {
vertical-align: top;
}
table.header-table h1 {
text-transform: uppercase;
color: white;
font-size: 55px;
font-style: italic;
}
table.header-table thead tr:nth-child(1) div {
height: 24px;
background-color: #696969;
vertical-align: middle;
padding: 12px 0px 0px 0px;
width: 100%;
}
div.page-body table td:nth-child(6),
div.page-body table td:nth-child(7) {
text-align: right;
}
div.page-body table tr td {
background-color: #DCDCDC !important;
}
div.page-body table tr:nth-child(1) td {
background-color: #696969 !important;
color: white !important;
}
table.footer-table td {
vertical-align: top;
}
table.footer-table td table td:nth-child(2),
table.footer-table td table td:nth-child(3) {
text-align: right;
}
table.footer-table tfoot td {
background-color: #696969;
height: 10px;
}
.imp-details {
background-color: #DCDCDC;
}
</style>
<!-- Javascript -->
<script>
si_std = {
print_item_table: function() {
var table = print_table(
'Receivable Voucher',
doc.name,
'entries',
'RV Detail',
[// Here specify the table columns to be displayed
'SR', 'item_name', 'description', 'qty', 'stock_uom',
'export_rate', 'export_amount'
],
[// Here specify the labels of column headings
'Sr', 'Item Name', 'Description', 'Qty',
'UoM', 'Basic Rate', 'Amount'
],
[// Here specify the column widths
'3%', '20%', '37%', '5%',
'5%', '15%', '15%'
],
null,
null,
{
'description' : function(data_row) {
if(data_row.adj_rate) {
var to_append = '<div style="padding-left: 15px;"><i>Discount: ' +
data_row.adj_rate + '% on ' + doc.currency + ' ' +
fmt_money(data_row.ref_rate) + '</i></div>';
if(data_row.description.indexOf(to_append)==-1) {
return data_row.description + to_append;
} else { return data_row.description; }
} else {
return data_row.description;
}
}
}
);
// This code takes care of page breaks
if(table.appendChild) {
out = table.innerHTML;
} else {
out = '';
for(var i=0; i < (table.length-1); i++) {
out += table[i].innerHTML +
'<div style = "page-break-after: always;" \
class = "page_break"></div>\
<div class="page-settings"></div>';
}
out += table[table.length-1].innerHTML;
}
return out;
},
print_other_charges: function(parent) {
var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
var rows = '<table width=100%>\n';
for(var i=0; i<oc.length; i++) {
if(!oc[i].included_in_print_rate) {
rows +=
'<tr>\n' +
'\t<td>' + oc[i].description + '</td>\n' +
'\t<td></td>\n' +
'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
'</tr>\n';
}
}
return rows + '</table>\n';
}
};
</script>
<!-- Page Layout Settings -->
<div class='common page-header'>
<!--
Page Header will contain
+ table 1
+ table 1a
- Name
- Address
- Contact
- Mobile No
+ table 1b
- Voucher Date
- Due Date
-->
<table class='header-table' cellspacing=0>
<thead>
<tr><td colspan=2><div><script>'<h1>' + (doc.select_print_heading || 'Invoice') + '</h1>'</script></div></td></tr>
<tr><td colspan=2><div style="height:15px"></div></td></tr>
</thead>
<tbody>
<tr>
<td width=60%><table width=100% cellspacing=0><tbody>
<tr>
<td width=39%><b>Name</b></td>
<td><script>doc.customer_name</script></td>
</tr>
<tr>
<td><b>Address</b></td>
<td><script>replace_newlines(doc.address_display)</script></td>
</tr>
<tr>
<td><b>Contact</b></td>
<td><script>doc.contact_display</script></td>
</tr>
</tbody></table></td>
<td><table width=100% cellspacing=0><tbody>
<tr class='imp-details'>
<td><b>Invoice No.</b></td>
<td><script>cur_frm.docname</script></td>
</tr>
<tr>
<td width=40%><b>Invoice Date</b></td>
<td><script>date.str_to_user(doc.posting_date)</script></td>
<tr>
<tr>
<td><b>Due Date</b></td>
<td><script>date.str_to_user(doc.due_date)</script></td>
<tr>
</tbody></table></td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div class='common page-body'>
<!--
Page Body will contain
+ table 2
- Sales Invoice Data
-->
<script>si_std.print_item_table()</script>
</div>
<div class='common page-footer'>
<!--
Page Footer will contain
+ table 3
- Terms and Conditions
- Total Rounded Amount Calculation
- Total Rounded Amount in Words
-->
<table class='footer-table' width=100% cellspacing=0>
<thead>
</thead>
<tbody>
<tr>
<td width=60% style='padding-right: 10px;'>
<b>Terms, Conditions &amp; Other Information:</b><br />
<script>doc.terms</script>
</td>
<td>
<table cellspacing=0 width=100%><tbody>
<tr>
<td>Net Total</td>
<td></td>
<td width=38%><script>
fmt_money(doc.net_total/doc.conversion_rate)
</script></td>
</tr>
<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
<tr>
<td>Grand Total</td>
<td></td>
<td><script>
fmt_money(doc.grand_total_export)
</script></td>
</tr>
<tr style='font-weight: bold' class='imp-details'>
<td>Rounded Total</td>
<td><script>doc.currency</script></td>
<td><script>
fmt_money(doc.rounded_total_export)
</script></td>
</tr>
</tbody></table>
<br /><b>In Words</b><br />
<i><script>doc.in_words_export</script></i>
</td>
</tr>
</tbody>
<tfoot>
<tr><td colspan=2><div></div></td><tr>
</tfoot>
</table>
</div>

View File

@ -1,299 +0,0 @@
<!--
Sample Print Format for ERPNext
Please use at your own discretion
For suggestions and contributions:
https://github.com/webnotes/erpnext-print-templates
Freely usable under MIT license
-->
<!-- Style Settings -->
<style>
/*
common style for whole page
This should include:
+ page size related settings
+ font family settings
+ line spacing settings
*/
@media screen {
body {
width: 8.3in;
}
}
html, body, div, span, td {
font-family: "Arial", sans-serif;
font-size: 12px;
}
body {
padding: 10px;
margin: auto;
font-size: 12px;
line-height: 150%;
}
.common {
font-family: "Arial", sans-serif !important;
font-size: 12px;
padding: 0px;
}
table {
width: 100% !important;
vertical-align: top;
}
table td {
padding: 2px 0px;
}
table, td {
border-collapse: collapse !important;
padding: 0px;
margin: 0px !important;
}
table h1, h2, h3, h4, h5, h6 {
padding: 0px;
margin: 0px;
}
table.header-table td {
vertical-align: top;
}
table.header-table h3 {
color: gray;
}
table.header-table thead td {
padding: 5px;
}
table.header-table > thead,
table.header-table > tbody > tr > td,
table.footer-table > tbody > tr > td {
border: 1px solid black;
padding: 5px;
}
table.footer-table > tbody,
table.header-table > thead {
border-bottom: 3px solid black;
}
table.header-table > thead {
border-top: 3px solid black;
}
div.page-body table td:nth-child(6),
div.page-body table td:nth-child(7) {
text-align: right;
}
div.page-body td {
background-color: white !important;
border: 1px solid black !important;
}
table.footer-table td {
vertical-align: top;
}
table.footer-table td table td:nth-child(2),
table.footer-table td table td:nth-child(3) {
text-align: right;
}
</style>
<!-- Javascript -->
<script>
si_std = {
print_item_table: function() {
var table = print_table(
'Receivable Voucher',
doc.name,
'entries',
'RV Detail',
[// Here specify the table columns to be displayed
'SR', 'item_name', 'description', 'qty', 'stock_uom',
'export_rate', 'export_amount'
],
[// Here specify the labels of column headings
'Sr', 'Item Name', 'Description', 'Qty',
'UoM', 'Basic Rate', 'Amount'
],
[// Here specify the column widths
'3%', '20%', '37%', '5%',
'5%', '15%', '15%'
],
null,
null,
{
'description' : function(data_row) {
if(data_row.adj_rate) {
var to_append = '<div style="padding-left: 15px;"><i>Discount: ' +
data_row.adj_rate + '% on ' + doc.currency + ' ' +
fmt_money(data_row.ref_rate) + '</i></div>';
if(data_row.description.indexOf(to_append)==-1) {
return data_row.description + to_append;
} else { return data_row.description; }
} else {
return data_row.description;
}
}
}
);
// This code takes care of page breaks
if(table.appendChild) {
out = table.innerHTML;
} else {
out = '';
for(var i=0; i < (table.length-1); i++) {
out += table[i].innerHTML +
'<div style = "page-break-after: always;" \
class = "page_break"></div>\
<div class="page-settings"></div>';
}
out += table[table.length-1].innerHTML;
}
return out;
},
print_other_charges: function(parent) {
var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
var rows = '<table width=100%>\n';
for(var i=0; i<oc.length; i++) {
if(!oc[i].included_in_print_rate) {
rows +=
'<tr>\n' +
'\t<td>' + oc[i].description + '</td>\n' +
'\t<td></td>\n' +
'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
'</tr>\n';
}
}
return rows + '</table>\n';
}
};
</script>
<!-- Page Layout Settings -->
<div class='common page-header'>
<!--
Page Header will contain
+ table 1
+ table 1a
- Name
- Address
- Contact
- Mobile No
+ table 1b
- Voucher Date
- Due Date
-->
<table class='header-table' cellspacing=0>
<thead>
<tr><td colspan=2><script>'<h1>' + (doc.select_print_heading || 'Invoice') + '</h1>'</script></td></tr>
<tr><td colspan=2><h3><script>cur_frm.docname</script></h3></td></tr>
</thead>
<tbody>
<tr>
<td width=60%><table width=100% cellspacing=0><tbody>
<tr>
<td width=39%><b>Name</b></td>
<td><script>doc.customer_name</script></td>
</tr>
<tr>
<td><b>Address</b></td>
<td><script>replace_newlines(doc.address_display)</script></td>
</tr>
<tr>
<td><b>Contact</b></td>
<td><script>doc.contact_display</script></td>
</tr>
</tbody></table></td>
<td><table width=100% cellspacing=0><tbody>
<tr>
<td width=40%><b>Invoice Date</b></td>
<td><script>date.str_to_user(doc.posting_date)</script></td>
<tr>
<tr>
<td><b>Due Date</b></td>
<td><script>date.str_to_user(doc.due_date)</script></td>
<tr>
</tbody></table></td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div class='common page-body'>
<!--
Page Body will contain
+ table 2
- Sales Invoice Data
-->
<script>si_std.print_item_table()</script>
</div>
<div class='common page-footer'>
<!--
Page Footer will contain
+ table 3
- Terms and Conditions
- Total Rounded Amount Calculation
- Total Rounded Amount in Words
-->
<table class='footer-table' width=100% cellspacing=0>
<thead>
</thead>
<tbody>
<tr>
<td width=60% style='padding-right: 10px;'>
<b>Terms, Conditions &amp; Other Information:</b><br />
<script>doc.terms</script>
</td>
<td>
<table cellspacing=0 width=100%><tbody>
<tr>
<td>Net Total</td>
<td></td>
<td width=38%><script>
fmt_money(doc.net_total/doc.conversion_rate)
</script></td>
</tr>
<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
<tr>
<td>Grand Total</td>
<td></td>
<td><script>
fmt_money(doc.grand_total_export)
</script></td>
</tr>
<tr style='font-weight: bold'>
<td>Rounded Total</td>
<td><script>doc.currency</script></td>
<td><script>
fmt_money(doc.rounded_total_export)
</script></td>
</tr>
</tbody></table>
<br /><b>In Words</b><br />
<i><script>doc.in_words_export</script></i>
</td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>

View File

@ -1,277 +0,0 @@
<!--
Sample Print Format for ERPNext
Please use at your own discretion
For suggestions and contributions:
https://github.com/webnotes/erpnext-print-templates
Freely usable under MIT license
-->
<!-- Style Settings -->
<style>
/*
common style for whole page
This should include:
+ page size related settings
+ font family settings
+ line spacing settings
*/
@media screen {
body {
width: 8.3in;
}
}
html, body, div, span, td {
font-family: "Georgia", serif;
font-size: 12px;
}
body {
padding: 10px;
margin: auto;
font-size: 12px;
line-height: 150%;
}
.common {
font-family: "Georgia", serif !important;
font-size: 12px;
padding: 10px 0px;
}
table {
border-collapse: collapse;
width: 100%;
vertical-align: top;
}
table td {
padding: 2px 0px;
}
table h1, h2, h3, h4, h5, h6 {
padding: 0px;
margin: 0px;
}
table.header-table td {
vertical-align: top;
}
table.header-table thead {
border-bottom: 1px solid black;
}
table.header-table h3 {
color: gray;
}
table.header-table thead td {
padding: 5px 0px;
}
div.page-body table td:nth-child(6),
div.page-body table td:nth-child(7) {
text-align: right;
}
table.footer-table td {
vertical-align: top;
}
table.footer-table td table td:nth-child(2),
table.footer-table td table td:nth-child(3) {
text-align: right;
}
</style>
<!-- Javascript -->
<script>
si_std = {
print_item_table: function() {
var table = print_table(
'Sales Order',
doc.name,
'sales_order_details',
'Sales Order Detail',
[// Here specify the table columns to be displayed
'SR', 'item_code', 'description', 'qty', 'stock_uom',
'basic_rate', 'amount'
],
[// Here specify the labels of column headings
'Sr', 'Item Code', 'Description', 'Qty',
'UoM', 'Basic Rate', 'Amount'
],
[// Here specify the column widths
'3%', '20%', '37%', '5%',
'5%', '15%', '15%'
],
null,
null,
{
'description' : function(data_row) {
if(data_row.adj_rate) {
var to_append = '<div style="padding-left: 15px;"><i>Discount: ' +
data_row.adj_rate + '% on ' + doc.currency + ' ' +
fmt_money(data_row.ref_rate) + '</i></div>';
if(data_row.description.indexOf(to_append)==-1) {
return data_row.description + to_append;
} else { return data_row.description; }
} else {
return data_row.description;
}
}
}
);
// This code takes care of page breaks
if(table.appendChild) {
out = table.innerHTML;
} else {
out = '';
for(var i=0; i < (table.length-1); i++) {
out += table[i].innerHTML +
'<div style = "page-break-after: always;" \
class = "page_break"></div>\
<div class="page-settings"></div>';
}
out += table[table.length-1].innerHTML;
}
return out;
},
print_other_charges: function(parent) {
var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
var rows = '<table width=100%>\n';
for(var i=0; i<oc.length; i++) {
if(!oc[i].included_in_print_rate) {
rows +=
'<tr>\n' +
'\t<td>' + oc[i].description + '</td>\n' +
'\t<td></td>\n' +
'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
'</tr>\n';
}
}
return rows + '</table>\n';
}
};
</script>
<!-- Page Layout Settings -->
<div class='common page-header'>
<!--
Page Header will contain
+ table 1
+ table 1a
- Name
- Address
- Contact
- Mobile No
+ table 1b
- Voucher Date
- Due Date
-->
<table class='header-table' cellspacing=0>
<thead>
<tr><td><script>'<h1>' + (doc.select_print_heading || 'Sales Order') + '</h1>'</script></td></tr>
<tr><td><h3><script>cur_frm.docname</script></h3></td></tr>
</thead>
<tbody>
<tr>
<td width=60%><table width=100% cellspacing=0><tbody>
<tr>
<td width=39%><b>Name</b></td>
<td><script>doc.customer_name</script></td>
</tr>
<tr>
<td><b>Address</b></td>
<td><script>replace_newlines(doc.address_display)</script></td>
</tr>
<tr>
<td><b>Contact</b></td>
<td><script>doc.contact_display</script></td>
</tr>
</tbody></table></td>
<td><table width=100% cellspacing=0><tbody>
<tr>
<td width=63%><b>Sales Order Date</b></td>
<td><script>date.str_to_user(doc.transaction_date)</script></td>
<tr>
<tr>
<td><b>Delivery Date</b></td>
<td><script>date.str_to_user(doc.delivery_date)</script></td>
<tr>
</tbody></table></td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div class='common page-body'>
<!--
Page Body will contain
+ table 2
- Sales Invoice Data
-->
<script>si_std.print_item_table()</script>
</div>
<div class='common page-footer'>
<!--
Page Footer will contain
+ table 3
- Terms and Conditions
- Total Rounded Amount Calculation
- Total Rounded Amount in Words
-->
<table class='footer-table' width=100% cellspacing=0>
<thead>
</thead>
<tbody>
<tr>
<td width=60% style='padding-right: 10px;'>
<b>Terms, Conditions &amp; Other Information:</b><br />
<script>doc.terms</script>
</td>
<td>
<table cellspacing=0 width=100%><tbody>
<tr>
<td>Net Total</td>
<td></td>
<td width=38%><script>
fmt_money(doc.net_total)
</script></td>
</tr>
<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
<tr>
<td>Grand Total</td>
<td></td>
<td><script>
fmt_money(doc.grand_total_export)
</script></td>
</tr>
<tr style='font-weight: bold'>
<td>Rounded Total</td>
<td><script>doc.currency</script></td>
<td><script>
fmt_money(doc.rounded_total_export)
</script></td>
</tr>
</tbody></table>
<br /><b>In Words</b><br />
<i><script>doc.in_words_export</script></i>
</td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>

View File

@ -1,304 +0,0 @@
<!--
Sample Print Format for ERPNext
Please use at your own discretion
For suggestions and contributions:
https://github.com/webnotes/erpnext-print-templates
Freely usable under MIT license
-->
<!-- Style Settings -->
<style>
/*
common style for whole page
This should include:
+ page size related settings
+ font family settings
+ line spacing settings
*/
@media screen {
body {
width: 8.3in;
}
}
html, body, div, span, td {
font-family: "Helvetica", "Arial", sans-serif;
font-size: 12px;
}
body {
padding: 10px;
margin: auto;
font-size: 12px;
line-height: 150%;
}
.common {
font-family: "Helvetica", "Arial", sans-serif !important;
font-size: 12px;
padding: 10px 0px;
}
table {
border-collapse: collapse;
width: 100%;
vertical-align: top;
border-style: none !important;
}
table td {
padding: 2px 0px;
border-style: none !important;
}
table h1, h2, h3, h4, h5, h6 {
padding: 0px;
margin: 0px;
}
table.header-table td {
vertical-align: top;
}
table.header-table h1 {
text-transform: uppercase;
color: white;
font-size: 55px;
font-style: italic;
}
table.header-table thead tr:nth-child(1) div {
height: 24px;
background-color: #696969;
vertical-align: middle;
padding: 12px 0px 0px 0px;
width: 100%;
}
div.page-body table td:nth-child(6),
div.page-body table td:nth-child(7) {
text-align: right;
}
div.page-body table tr td {
background-color: #DCDCDC !important;
}
div.page-body table tr:nth-child(1) td {
background-color: #696969 !important;
color: white !important;
}
table.footer-table td {
vertical-align: top;
}
table.footer-table td table td:nth-child(2),
table.footer-table td table td:nth-child(3) {
text-align: right;
}
table.footer-table tfoot td {
background-color: #696969;
height: 10px;
}
.imp-details {
background-color: #DCDCDC;
}
</style>
<!-- Javascript -->
<script>
si_std = {
print_item_table: function() {
var table = print_table(
'Sales Order',
doc.name,
'sales_order_details',
'Sales Order Detail',
[// Here specify the table columns to be displayed
'SR', 'item_code', 'description', 'qty', 'stock_uom',
'basic_rate', 'amount'
],
[// Here specify the labels of column headings
'Sr', 'Item Code', 'Description', 'Qty',
'UoM', 'Basic Rate', 'Amount'
],
[// Here specify the column widths
'3%', '20%', '37%', '5%',
'5%', '15%', '15%'
],
null,
null,
{
'description' : function(data_row) {
if(data_row.adj_rate) {
var to_append = '<div style="padding-left: 15px;"><i>Discount: ' +
data_row.adj_rate + '% on ' + doc.currency + ' ' +
fmt_money(data_row.ref_rate) + '</i></div>';
if(data_row.description.indexOf(to_append)==-1) {
return data_row.description + to_append;
} else { return data_row.description; }
} else {
return data_row.description;
}
}
}
);
// This code takes care of page breaks
if(table.appendChild) {
out = table.innerHTML;
} else {
out = '';
for(var i=0; i < (table.length-1); i++) {
out += table[i].innerHTML +
'<div style = "page-break-after: always;" \
class = "page_break"></div>\
<div class="page-settings"></div>';
}
out += table[table.length-1].innerHTML;
}
return out;
},
print_other_charges: function(parent) {
var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
var rows = '<table width=100%>\n';
for(var i=0; i<oc.length; i++) {
if(!oc[i].included_in_print_rate) {
rows +=
'<tr>\n' +
'\t<td>' + oc[i].description + '</td>\n' +
'\t<td></td>\n' +
'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
'</tr>\n';
}
}
return rows + '</table>\n';
}
};
</script>
<!-- Page Layout Settings -->
<div class='common page-header'>
<!--
Page Header will contain
+ table 1
+ table 1a
- Name
- Address
- Contact
- Mobile No
+ table 1b
- Voucher Date
- Due Date
-->
<table class='header-table' cellspacing=0>
<thead>
<tr><td colspan=2><div><script>'<h1>' + (doc.select_print_heading || 'Sales Order') + '</h1>'</script></div></td></tr>
<tr><td colspan=2><div style="height:15px"></div></td></tr>
</thead>
<tbody>
<tr>
<td width=60%><table width=100% cellspacing=0><tbody>
<tr>
<td width=39%><b>Name</b></td>
<td><script>doc.customer_name</script></td>
</tr>
<tr>
<td><b>Address</b></td>
<td><script>replace_newlines(doc.address_display)</script></td>
</tr>
<tr>
<td><b>Contact</b></td>
<td><script>doc.contact_display</script></td>
</tr>
</tbody></table></td>
<td><table width=100% cellspacing=0><tbody>
<tr class='imp-details'>
<td><b>Sales Order No.</b></td>
<td><script>cur_frm.docname</script></td>
</tr>
<tr>
<td width=63%><b>Sales Order Date</b></td>
<td><script>date.str_to_user(doc.transaction_date)</script></td>
<tr>
<tr>
<td><b>Delivery Date</b></td>
<td><script>date.str_to_user(doc.delivery_date)</script></td>
<tr>
</tbody></table></td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div class='common page-body'>
<!--
Page Body will contain
+ table 2
- Sales Invoice Data
-->
<script>si_std.print_item_table()</script>
</div>
<div class='common page-footer'>
<!--
Page Footer will contain
+ table 3
- Terms and Conditions
- Total Rounded Amount Calculation
- Total Rounded Amount in Words
-->
<table class='footer-table' width=100% cellspacing=0>
<thead>
</thead>
<tbody>
<tr>
<td width=60% style='padding-right: 10px;'>
<b>Terms, Conditions &amp; Other Information:</b><br />
<script>doc.terms</script>
</td>
<td>
<table cellspacing=0 width=100%><tbody>
<tr>
<td>Net Total</td>
<td></td>
<td width=38%><script>
fmt_money(doc.net_total)
</script></td>
</tr>
<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
<tr>
<td>Grand Total</td>
<td></td>
<td><script>
fmt_money(doc.grand_total_export)
</script></td>
</tr>
<tr style='font-weight: bold' class='imp-details'>
<td>Rounded Total</td>
<td><script>doc.currency</script></td>
<td><script>
fmt_money(doc.rounded_total_export)
</script></td>
</tr>
</tbody></table>
<br /><b>In Words</b><br />
<i><script>doc.in_words_export</script></i>
</td>
</tr>
</tbody>
<tfoot>
<tr><td colspan=2><div></div></td><tr>
</tfoot>
</table>
</div>

View File

@ -1,299 +0,0 @@
<!--
Sample Print Format for ERPNext
Please use at your own discretion
For suggestions and contributions:
https://github.com/webnotes/erpnext-print-templates
Freely usable under MIT license
-->
<!-- Style Settings -->
<style>
/*
common style for whole page
This should include:
+ page size related settings
+ font family settings
+ line spacing settings
*/
@media screen {
body {
width: 8.3in;
}
}
html, body, div, span, td {
font-family: "Arial", sans-serif;
font-size: 12px;
}
body {
padding: 10px;
margin: auto;
font-size: 12px;
line-height: 150%;
}
.common {
font-family: "Arial", sans-serif !important;
font-size: 12px;
padding: 0px;
}
table {
width: 100% !important;
vertical-align: top;
}
table td {
padding: 2px 0px;
}
table, td {
border-collapse: collapse !important;
padding: 0px;
margin: 0px !important;
}
table h1, h2, h3, h4, h5, h6 {
padding: 0px;
margin: 0px;
}
table.header-table td {
vertical-align: top;
}
table.header-table h3 {
color: gray;
}
table.header-table thead td {
padding: 5px;
}
table.header-table > thead,
table.header-table > tbody > tr > td,
table.footer-table > tbody > tr > td {
border: 1px solid black;
padding: 5px;
}
table.footer-table > tbody,
table.header-table > thead {
border-bottom: 3px solid black;
}
table.header-table > thead {
border-top: 3px solid black;
}
div.page-body table td:nth-child(6),
div.page-body table td:nth-child(7) {
text-align: right;
}
div.page-body td {
background-color: white !important;
border: 1px solid black !important;
}
table.footer-table td {
vertical-align: top;
}
table.footer-table td table td:nth-child(2),
table.footer-table td table td:nth-child(3) {
text-align: right;
}
</style>
<!-- Javascript -->
<script>
si_std = {
print_item_table: function() {
var table = print_table(
'Sales Order',
doc.name,
'sales_order_details',
'Sales Order Detail',
[// Here specify the table columns to be displayed
'SR', 'item_code', 'description', 'qty', 'stock_uom',
'basic_rate', 'amount'
],
[// Here specify the labels of column headings
'Sr', 'Item Code', 'Description', 'Qty',
'UoM', 'Basic Rate', 'Amount'
],
[// Here specify the column widths
'3%', '20%', '37%', '5%',
'5%', '15%', '15%'
],
null,
null,
{
'description' : function(data_row) {
if(data_row.adj_rate) {
var to_append = '<div style="padding-left: 15px;"><i>Discount: ' +
data_row.adj_rate + '% on ' + doc.currency + ' ' +
fmt_money(data_row.ref_rate) + '</i></div>';
if(data_row.description.indexOf(to_append)==-1) {
return data_row.description + to_append;
} else { return data_row.description; }
} else {
return data_row.description;
}
}
}
);
// This code takes care of page breaks
if(table.appendChild) {
out = table.innerHTML;
} else {
out = '';
for(var i=0; i < (table.length-1); i++) {
out += table[i].innerHTML +
'<div style = "page-break-after: always;" \
class = "page_break"></div>\
<div class="page-settings"></div>';
}
out += table[table.length-1].innerHTML;
}
return out;
},
print_other_charges: function(parent) {
var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
var rows = '<table width=100%>\n';
for(var i=0; i<oc.length; i++) {
if(!oc[i].included_in_print_rate) {
rows +=
'<tr>\n' +
'\t<td>' + oc[i].description + '</td>\n' +
'\t<td></td>\n' +
'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
'</tr>\n';
}
}
return rows + '</table>\n';
}
};
</script>
<!-- Page Layout Settings -->
<div class='common page-header'>
<!--
Page Header will contain
+ table 1
+ table 1a
- Name
- Address
- Contact
- Mobile No
+ table 1b
- Voucher Date
- Due Date
-->
<table class='header-table' cellspacing=0>
<thead>
<tr><td colspan=2><script>'<h1>' + (doc.select_print_heading || 'Sales Order') + '</h1>'</script></td></tr>
<tr><td colspan=2><h3><script>cur_frm.docname</script></h3></td></tr>
</thead>
<tbody>
<tr>
<td width=60%><table width=100% cellspacing=0><tbody>
<tr>
<td width=39%><b>Name</b></td>
<td><script>doc.customer_name</script></td>
</tr>
<tr>
<td><b>Address</b></td>
<td><script>replace_newlines(doc.address_display)</script></td>
</tr>
<tr>
<td><b>Contact</b></td>
<td><script>doc.contact_display</script></td>
</tr>
</tbody></table></td>
<td><table width=100% cellspacing=0><tbody>
<tr>
<td width=63%><b>Sales Order Date</b></td>
<td><script>date.str_to_user(doc.transaction_date)</script></td>
<tr>
<tr>
<td><b>Delivery Date</b></td>
<td><script>date.str_to_user(doc.delivery_date)</script></td>
<tr>
</tbody></table></td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div class='common page-body'>
<!--
Page Body will contain
+ table 2
- Sales Invoice Data
-->
<script>si_std.print_item_table()</script>
</div>
<div class='common page-footer'>
<!--
Page Footer will contain
+ table 3
- Terms and Conditions
- Total Rounded Amount Calculation
- Total Rounded Amount in Words
-->
<table class='footer-table' width=100% cellspacing=0>
<thead>
</thead>
<tbody>
<tr>
<td width=60% style='padding-right: 10px;'>
<b>Terms, Conditions &amp; Other Information:</b><br />
<script>doc.terms</script>
</td>
<td>
<table cellspacing=0 width=100%><tbody>
<tr>
<td>Net Total</td>
<td></td>
<td width=38%><script>
fmt_money(doc.net_total)
</script></td>
</tr>
<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
<tr>
<td>Grand Total</td>
<td></td>
<td><script>
fmt_money(doc.grand_total_export)
</script></td>
</tr>
<tr style='font-weight: bold'>
<td>Rounded Total</td>
<td><script>doc.currency</script></td>
<td><script>
fmt_money(doc.rounded_total_export)
</script></td>
</tr>
</tbody></table>
<br /><b>In Words</b><br />
<i><script>doc.in_words_export</script></i>
</td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>

View File

@ -1,36 +0,0 @@
// ERPNext - web based ERP (http://erpnext.com)
// Copyright (C) 2012 Web Notes Technologies Pvt Ltd
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// Get Query functions
cur_frm.fields_dict['s_bom'].get_query = function(doc) {
return 'SELECT `tabBOM`.`name` FROM `tabBOM` WHERE `tabBOM`.`docstatus` = 1 AND `tabBOM`.%(key)s LIKE "%s" ORDER BY `tabBOM`.`name` DESC LIMIT 50';
}
cur_frm.fields_dict['r_bom'].get_query = function(doc) {
return 'SELECT `tabBOM`.`name` FROM `tabBOM` WHERE `tabBOM`.`docstatus` = 1 and `tabBOM`.%(key)s LIKE "%s" ORDER BY `tabBOM`.`name` DESC LIMIT 50';
}
cur_frm.fields_dict['s_item'].get_query = function(doc) {
return 'SELECT DISTINCT `tabItem`.name FROM `tabItem` WHERE (IFNULL(`tabItem`.`end_of_life`,"") = "" OR `tabItem`.`end_of_life` ="0000-00-00" OR `tabItem`.`end_of_life` > NOW()) AND (`tabItem`.is_purchase_item = "Yes" OR`tabItem`.is_sub_contracted_item = "Yes") AND tabItem.%(key)s LIKE "%s" ORDER BY `tabItem`.item_code LIMIT 50';
}
cur_frm.fields_dict['r_item'].get_query = function(doc) {
return 'SELECT DISTINCT `tabItem`.name FROM `tabItem` WHERE (IFNULL(`tabItem`.`end_of_life`,"") = "" OR `tabItem`.`end_of_life` ="0000-00-00" OR `tabItem`.`end_of_life` > NOW()) AND (`tabItem`.is_purchase_item = "Yes" OR`tabItem`.is_sub_contracted_item = "Yes") AND tabItem.%(key)s LIKE "%s" ORDER BY `tabItem`.item_code LIMIT 50';
}
// Client Triggers

View File

@ -1,143 +0,0 @@
# ERPNext - web based ERP (http://erpnext.com)
# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Please edit this list and import only required elements
import webnotes
from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, 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.model import db_exists
from webnotes.model.doc import Document, addchild, removechild, getchildren, make_autoname, SuperDocType
from webnotes.model.doclist 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, is_testing, msgprint, errprint
set = webnotes.conn.set
sql = webnotes.conn.sql
get_value = webnotes.conn.get_value
in_transaction = webnotes.conn.in_transaction
convert_to_lists = webnotes.conn.convert_to_lists
# -----------------------------------------------------------------------------------------
class DocType:
def __init__(self, doc, doclist=[]):
self.doc = doc
self.doclist = doclist
def search_parent_bom_of_bom(self):
pbom = sql("select parent from `tabBOM Item` where bom_no = '%s' and docstatus = 1 " % self.doc.s_bom )
self.doc.clear_table(self.doclist,'replace_bom_details', 1)
self.add_to_replace_bom_utility_detail(pbom, 'replace_bom_details')
def search_parent_bom_of_item(self):
pbom = sql("select parent from `tabBOM Item` where item_code = '%s' and (bom_no is NULL or bom_no = '') and docstatus =1" % self.doc.s_item )
self.doc.clear_table(self.doclist,'replace_item_details', 1)
self.add_to_replace_bom_utility_detail(pbom, 'replace_item_details')
def add_to_replace_bom_utility_detail(self, pbom, t_fname):
for d in pbom:
br_child = addchild( self.doc, t_fname, 'BOM Replace Utility Detail', 0,self.doclist)
br_child.parent_bom = d[0]
br_child.save()
self.doc.save()
def replace_bom(self):
# validate r_bom
bom = sql("select name, is_active, docstatus from `tabBOM` where name = %s",self.doc.r_bom, as_dict =1)
if not bom:
msgprint("Please Enter Valid BOM to replace with.")
raise Exception
if bom and bom[0]['is_active'] != 'Yes':
msgprint("BOM '%s' is not Active BOM." % cstr(self.doc.r_bom))
raise Exception
if bom and flt(bom[0]['docstatus']) != 1:
msgprint("BOM '%s' is not Submitted BOM." % cstr(self.doc.r_bom))
raise Exception
# get item code of r_bom
item_code = cstr(sql("select item from `tabBOM` where name = '%s' " % self.doc.r_bom)[0][0])
# call replace bom engine
self.replace_bom_engine('replace_bom_details', 'bom_no', self.doc.s_bom, self.doc.r_bom, item_code)
def replace_item(self):
item = sql("select name, is_active from `tabItem` where name = %s", self.doc.r_item, as_dict = 1)
if not item:
msgprint("Please enter Valid Item Code to replace with.")
raise Exception
if item and item[0]['is_active'] != 'Yes':
msgprint("Item Code '%s' is not Active Item." % cstr(self.doc.r_item))
raise Exception
self.replace_bom_engine('replace_item_details', 'item_code', self.doc.s_item, self.doc.r_item)
def replace_data_in_bom_materials(self, dl, fname, s_data, r_data, item_code =''):
for d in getlist(dl, 'bom_materials'):
if d.fields[fname] == s_data:
d.fields[fname] = r_data
if fname == 'bom_no':
d.item_code = item_code
d.save()
def replace_bom_engine(self, t_fname, fname, s_data, r_data, item_code = ''):
if not r_data:
msgprint("Please Enter '%s' and then click on '%s'." % ((t_fname == 'replace_bom_details') and 'BOM to Replace' or 'Item to Replace',(t_fname == 'replace_bom_details') and 'Replace BOM' or 'Replace Item' ))
raise Exception
for d in getlist(self.doclist, t_fname):
if d.bom_created:
msgprint("Please click on '%s' and then on '%s'." % ((t_fname == 'replace_bom_details') and 'Search BOM' or 'Search Item',(t_fname == 'replace_bom_details') and 'Replace BOM' or 'Replace Item' ))
raise Exception
if d.replace:
# copy_doclist is the framework funcn which create duplicate document and returns doclist of new document
# Reinder :=
# make copy
if self.doc.create_new_bom:
import webnotes.model.doc
new_bom_dl = copy_doclist(webnotes.model.doc.get('BOM', d.parent_bom), no_copy = ['is_active', 'is_default', 'is_sub_assembly', 'remarks', 'flat_bom_details'])
new_bom_dl[0].docstatus = 0
new_bom_dl[0].save()
else:
new_bom_dl = get_obj('BOM', d.parent_bom, with_children = 1).doclist
# replace s_data with r_data in Bom Material Detail Table
self.replace_data_in_bom_materials(new_bom_dl, fname, s_data, r_data, item_code)
d.bom_created = new_bom_dl[0].name
d.save()
def update_docstatus(self):
sql("update `tabBOM` set docstatus = 0 where name = '%s' limit 1" % self.doc.bom)
msgprint("Updated")
def update_bom(self):
self.check_bom_list = []
main_bom_list = get_obj('Production Control').traverse_bom_tree(self.doc.fg_bom_no, 1)
main_bom_list.reverse()
# run calculate cost and get
#msgprint(main_bom_list)
for bom in main_bom_list:
if bom and bom not in self.check_bom_list:
bom_obj = get_obj('BOM', bom, with_children = 1)
#print(bom_obj.doc.fields)
bom_obj.validate()
bom_obj.doc.docstatus = 1
bom_obj.check_recursion()
bom_obj.update_flat_bom_engine(is_submit = 1)
bom_obj.doc.docstatus = 1
bom_obj.doc.save()
self.check_bom_list.append(bom)

View File

@ -1,383 +0,0 @@
# DocType, BOM Replace Utility
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:36:02',
'docstatus': 0,
'modified': '2012-03-27 14:36:02',
'modified_by': u'Administrator',
'owner': u'jai@webnotestech.com'
},
# These values are common for all DocType
{
'colour': u'White:FFF',
'doctype': 'DocType',
'issingle': 1,
'module': u'Production',
'name': '__common__',
'section_style': u'Tray',
'server_code_error': u' ',
'show_in_menu': 1,
'version': 56
},
# These values are common for all DocField
{
'doctype': u'DocField',
'name': '__common__',
'parent': u'BOM Replace Utility',
'parentfield': u'fields',
'parenttype': u'DocType',
'permlevel': 0
},
# These values are common for all DocPerm
{
'doctype': u'DocPerm',
'name': '__common__',
'parent': u'BOM Replace Utility',
'parentfield': u'permissions',
'parenttype': u'DocType',
'read': 1
},
# DocType, BOM Replace Utility
{
'doctype': 'DocType',
'name': u'BOM Replace Utility'
},
# DocPerm
{
'create': 1,
'doctype': u'DocPerm',
'permlevel': 0,
'role': u'System Manager',
'write': 1
},
# DocPerm
{
'create': 1,
'doctype': u'DocPerm',
'permlevel': 0,
'role': u'Production User',
'write': 1
},
# DocPerm
{
'create': 1,
'doctype': u'DocPerm',
'permlevel': 0,
'role': u'Production Manager',
'submit': 0,
'write': 1
},
# DocPerm
{
'doctype': u'DocPerm',
'permlevel': 1,
'role': u'System Manager'
},
# DocPerm
{
'doctype': u'DocPerm',
'permlevel': 1,
'role': u'Production User'
},
# DocPerm
{
'doctype': u'DocPerm',
'permlevel': 1,
'role': u'Production Manager'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'create_new_bom',
'fieldtype': u'Check',
'label': u'Create New BOM'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'bom_details',
'fieldtype': u'Section Break',
'label': u'BOM Details'
},
# DocField
{
'colour': u'White:FFF',
'description': u'Select the relevant BOM to be replaced which is actually a raw material used for a parent BOM.',
'doctype': u'DocField',
'fieldname': u's_bom',
'fieldtype': u'Link',
'label': u'Select BOM',
'options': u'BOM',
'trigger': u'Client'
},
# DocField
{
'colour': u'White:FFF',
'doctype': u'DocField',
'fieldname': u'note_1',
'fieldtype': u'HTML',
'label': u'Note 1',
'options': u'Click on the button "Search BOM" to fetch in the table below all the parent BOMs in which the above selected BOM is used as a raw material.'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'column_break0',
'fieldtype': u'Column Break'
},
# DocField
{
'colour': u'White:FFF',
'doctype': u'DocField',
'fieldname': u'search_bom',
'fieldtype': u'Button',
'label': u'Search BOM',
'options': u'search_parent_bom_of_bom'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'section_break0',
'fieldtype': u'Section Break',
'options': u'Simple'
},
# DocField
{
'colour': u'White:FFF',
'description': u'Select the BOM by which you want the above sected BOM to be replaced.',
'doctype': u'DocField',
'fieldname': u'r_bom',
'fieldtype': u'Link',
'label': u'Replace Bom with',
'options': u'BOM',
'trigger': u'Client'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'note_2',
'fieldtype': u'HTML',
'label': u'Note 2',
'options': u'Click on the button "Replace BOM" after checking under the column Replace against relevant Parent BOMs'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'column_break1',
'fieldtype': u'Column Break'
},
# DocField
{
'colour': u'White:FFF',
'doctype': u'DocField',
'fieldname': u'replace_bom',
'fieldtype': u'Button',
'label': u'Replace BOM',
'options': u'replace_bom'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'section_break1',
'fieldtype': u'Section Break',
'options': u'Simple'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'replace_bom_details',
'fieldtype': u'Table',
'label': u'Replace BOM Detail',
'options': u'BOM Replace Utility Detail'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'item_details',
'fieldtype': u'Section Break',
'label': u'Item Details'
},
# DocField
{
'colour': u'White:FFF',
'description': u'Select the relevant item to be replaced which is actually a raw material used for a parent BOM.',
'doctype': u'DocField',
'fieldname': u's_item',
'fieldtype': u'Link',
'label': u'Select Item',
'options': u'Item',
'trigger': u'Client'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'note_3',
'fieldtype': u'HTML',
'label': u'Note 3',
'options': u'Click on the button "Search Item" to fetch in the table below all the parent BOMs in which the above selected item is used as a raw material.'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'column_break2',
'fieldtype': u'Column Break'
},
# DocField
{
'colour': u'White:FFF',
'doctype': u'DocField',
'fieldname': u'search_item',
'fieldtype': u'Button',
'label': u'Search Item',
'options': u'search_parent_bom_of_item'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'section_break2',
'fieldtype': u'Section Break',
'options': u'Simple'
},
# DocField
{
'colour': u'White:FFF',
'description': u'Select the item by which you want the above sected item to be replaced.',
'doctype': u'DocField',
'fieldname': u'r_item',
'fieldtype': u'Link',
'label': u'Replace Item with',
'options': u'Item',
'trigger': u'Client'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'note_4',
'fieldtype': u'HTML',
'label': u'Note 4',
'options': u'Click on the button "Replace Item" after checking under the column Replace against relevant Parent BOMs'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'column_break3',
'fieldtype': u'Column Break'
},
# DocField
{
'colour': u'White:FFF',
'doctype': u'DocField',
'fieldname': u'replace_item',
'fieldtype': u'Button',
'label': u'Replace Item',
'options': u'replace_item'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'section_break3',
'fieldtype': u'Section Break',
'options': u'Simple'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'replace_item_details',
'fieldtype': u'Table',
'label': u'Replace Item Detail',
'options': u'BOM Replace Utility Detail'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'update_bom_tree',
'fieldtype': u'Section Break',
'label': u'Update BOM Tree'
},
# DocField
{
'colour': u'White:FFF',
'description': u'Select the root Bill of Materials in which raw materials are replaced and click on the button below to update costs.',
'doctype': u'DocField',
'fieldname': u'fg_bom_no',
'fieldtype': u'Link',
'label': u'FG BOM No',
'options': u'BOM'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'update',
'fieldtype': u'Button',
'label': u'Update',
'options': u'update_bom'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'update_bom',
'fieldtype': u'Section Break',
'label': u'Update BOM'
},
# DocField
{
'colour': u'White:FFF',
'doctype': u'DocField',
'fieldname': u'bom',
'fieldtype': u'Link',
'label': u'BOM',
'options': u'BOM'
},
# DocField
{
'colour': u'White:FFF',
'doctype': u'DocField',
'fieldname': u'update_docstatus',
'fieldtype': u'Button',
'label': u'Update Docstatus',
'options': u'update_docstatus'
}
]

View File

@ -1,101 +0,0 @@
# DocType, BOM Replace Utility Detail
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:36:02',
'docstatus': 0,
'modified': '2012-03-27 14:36:02',
'modified_by': u'Administrator',
'owner': u'jai@webnotestech.com'
},
# These values are common for all DocType
{
'autoname': u'BRUD/.#####',
'colour': u'White:FFF',
'doctype': 'DocType',
'hide_toolbar': 1,
'in_create': 1,
'istable': 1,
'module': u'Production',
'name': '__common__',
'read_only': 1,
'section_style': u'Simple',
'server_code_error': u' ',
'show_in_menu': 0,
'version': 8
},
# These values are common for all DocField
{
'doctype': u'DocField',
'name': '__common__',
'parent': u'BOM Replace Utility Detail',
'parentfield': u'fields',
'parenttype': u'DocType'
},
# These values are common for all DocPerm
{
'create': 0,
'doctype': u'DocPerm',
'name': '__common__',
'parent': u'BOM Replace Utility Detail',
'parentfield': u'permissions',
'parenttype': u'DocType',
'permlevel': 0,
'read': 1,
'role': u'System Manager',
'write': 1
},
# DocType, BOM Replace Utility Detail
{
'doctype': 'DocType',
'name': u'BOM Replace Utility Detail'
},
# DocPerm
{
'doctype': u'DocPerm'
},
# DocField
{
'colour': u'White:FFF',
'doctype': u'DocField',
'fieldname': u'parent_bom',
'fieldtype': u'Link',
'label': u'Parent BOM',
'oldfieldname': u'parent_bom',
'oldfieldtype': u'Link',
'options': u'BOM',
'permlevel': 1,
'reqd': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'replace',
'fieldtype': u'Check',
'label': u'Replace',
'oldfieldname': u'replace',
'oldfieldtype': u'Check',
'permlevel': 0
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'bom_created',
'fieldtype': u'Link',
'label': u'BOM Created',
'oldfieldname': u'bom_created',
'oldfieldtype': u'Link',
'options': u'BOM',
'permlevel': 1,
'search_index': 0
}
]

View File

@ -1,152 +0,0 @@
# DocType, BOM Report Detail
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:36:03',
'docstatus': 0,
'modified': '2012-03-27 14:36:03',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
# These values are common for all DocType
{
'colour': u'White:FFF',
'doctype': 'DocType',
'istable': 1,
'module': u'Production',
'name': '__common__',
'section_style': u'Simple',
'show_in_menu': 0,
'version': 8
},
# These values are common for all DocField
{
'doctype': u'DocField',
'name': '__common__',
'parent': u'BOM Report Detail',
'parentfield': u'fields',
'parenttype': u'DocType'
},
# These values are common for all DocPerm
{
'doctype': u'DocPerm',
'name': '__common__',
'parent': u'BOM Report Detail',
'parentfield': u'permissions',
'parenttype': u'DocType',
'read': 1,
'role': u'System Manager'
},
# DocType, BOM Report Detail
{
'doctype': 'DocType',
'name': u'BOM Report Detail'
},
# DocPerm
{
'doctype': u'DocPerm',
'permlevel': 0,
'write': 1
},
# DocPerm
{
'doctype': u'DocPerm',
'permlevel': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'item_code',
'fieldtype': u'Link',
'in_filter': 1,
'label': u'Item Code',
'oldfieldname': u'item_code',
'oldfieldtype': u'Link',
'options': u'Item',
'permlevel': 0,
'reqd': 1,
'search_index': 1,
'trigger': u'Client'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'description',
'fieldtype': u'Text',
'label': u'Description',
'oldfieldname': u'description',
'oldfieldtype': u'Text',
'permlevel': 1,
'reqd': 0,
'width': u'300px'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'moving_avg_rate',
'fieldtype': u'Currency',
'label': u'Moving Avg Rate',
'oldfieldname': u'moving_avg_rate',
'oldfieldtype': u'Currency',
'permlevel': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'amount',
'fieldtype': u'Currency',
'label': u'Amount',
'oldfieldname': u'amount',
'oldfieldtype': u'Currency',
'permlevel': 1,
'reqd': 0
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'last_purchase_rate',
'fieldtype': u'Currency',
'label': u'Last Purchase Rate',
'oldfieldname': u'last_purchase_rate',
'oldfieldtype': u'Currency',
'permlevel': 1,
'width': u'150px'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'qty',
'fieldtype': u'Data',
'label': u'Qty',
'oldfieldname': u'qty',
'oldfieldtype': u'Data',
'permlevel': 1,
'reqd': 1,
'trigger': u'Client'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'stock_uom',
'fieldtype': u'Data',
'label': u'Stock UOM',
'oldfieldname': u'stock_uom',
'oldfieldtype': u'Data',
'permlevel': 1,
'reqd': 0
}
]

View File

@ -1,230 +0,0 @@
# DocType, PF Detail
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:36:03',
'docstatus': 0,
'modified': '2012-03-27 14:45:49',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
# These values are common for all DocType
{
'autoname': u'PFD/.#####',
'colour': u'White:FFF',
'doctype': 'DocType',
'is_submittable': 1,
'istable': 1,
'module': u'Production',
'name': '__common__',
'section_style': u'Simple',
'show_in_menu': 0,
'version': 1
},
# These values are common for all DocField
{
'doctype': u'DocField',
'name': '__common__',
'parent': u'PF Detail',
'parentfield': u'fields',
'parenttype': u'DocType'
},
# These values are common for all DocPerm
{
'doctype': u'DocPerm',
'name': '__common__',
'parent': u'PF Detail',
'parentfield': u'permissions',
'parenttype': u'DocType',
'read': 1,
'role': u'System Manager'
},
# DocType, PF Detail
{
'doctype': 'DocType',
'name': u'PF Detail'
},
# DocPerm
{
'create': 1,
'doctype': u'DocPerm',
'permlevel': 0,
'submit': 1,
'write': 1
},
# DocPerm
{
'doctype': u'DocPerm',
'permlevel': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'item_code',
'fieldtype': u'Link',
'in_filter': 1,
'label': u'Item Code',
'oldfieldname': u'item_code',
'oldfieldtype': u'Link',
'options': u'Item',
'permlevel': 0,
'reqd': 1,
'search_index': 1,
'trigger': u'Client',
'width': u'150px'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'description',
'fieldtype': u'Text',
'label': u'Description',
'oldfieldname': u'description',
'oldfieldtype': u'Text',
'permlevel': 1,
'width': u'300px'
},
# DocField
{
'default': u'0.00',
'doctype': u'DocField',
'fieldname': u'planned_qty',
'fieldtype': u'Currency',
'label': u'Planned Quantity',
'oldfieldname': u'planned_qty',
'oldfieldtype': u'Currency',
'permlevel': 1,
'width': u'100px'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'produced_qty',
'fieldtype': u'Currency',
'label': u'Produced Quantity',
'oldfieldname': u'produced_qty',
'oldfieldtype': u'Currency',
'permlevel': 1,
'width': u'100px'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'start_date',
'fieldtype': u'Date',
'hidden': 0,
'in_filter': 0,
'label': u'Start Date',
'oldfieldname': u'start_date',
'oldfieldtype': u'Date',
'permlevel': 0,
'report_hide': 0,
'reqd': 1,
'search_index': 0,
'width': u'100px'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'end_date',
'fieldtype': u'Date',
'hidden': 0,
'in_filter': 0,
'label': u'End Date',
'oldfieldname': u'end_date',
'oldfieldtype': u'Date',
'permlevel': 0,
'report_hide': 0,
'reqd': 1,
'search_index': 0,
'width': u'100px'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'qty',
'fieldtype': u'Currency',
'label': u'Quantity',
'oldfieldname': u'qty',
'oldfieldtype': u'Currency',
'permlevel': 0,
'reqd': 1,
'width': u'100px'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'forecast_date',
'fieldtype': u'Date',
'hidden': 1,
'label': u'Forecast Date',
'oldfieldname': u'forecast_date',
'oldfieldtype': u'Date',
'permlevel': 1,
'report_hide': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'forecast_due_date',
'fieldtype': u'Date',
'hidden': 1,
'label': u'Forecast Due Date',
'oldfieldname': u'forecast_due_date',
'oldfieldtype': u'Date',
'permlevel': 1,
'report_hide': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'stock_uom',
'fieldtype': u'Data',
'label': u'Stock UOM',
'oldfieldname': u'stock_uom',
'oldfieldtype': u'Data',
'permlevel': 1
},
# DocField
{
'depends_on': u'eval:doc.amended_from',
'description': u'The date at which current entry is corrected in the system.',
'doctype': u'DocField',
'fieldname': u'amendment_date',
'fieldtype': u'Date',
'label': u'Amendment Date',
'no_copy': 1,
'permlevel': 0,
'print_hide': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'amended_from',
'fieldtype': u'Link',
'label': u'Amended From',
'no_copy': 1,
'options': u'Sales Invoice',
'permlevel': 1,
'print_hide': 1
}
]

View File

@ -1,51 +0,0 @@
# DocType, PPW Detail
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:36:04',
'docstatus': 0,
'modified': '2012-03-27 14:36:04',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
# These values are common for all DocType
{
'autoname': u'PPWD/.#######',
'colour': u'White:FFF',
'doctype': 'DocType',
'module': u'Production',
'name': '__common__',
'section_style': u'Simple',
'show_in_menu': 0,
'version': 1
},
# These values are common for all DocField
{
'doctype': u'DocField',
'fieldname': u'warehouse',
'fieldtype': u'Link',
'label': u'Warehouse',
'name': '__common__',
'oldfieldname': u'warehouse',
'oldfieldtype': u'Link',
'options': u'Warehouse',
'parent': u'PPW Detail',
'parentfield': u'fields',
'parenttype': u'DocType',
'permlevel': 0
},
# DocType, PPW Detail
{
'doctype': 'DocType',
'name': u'PPW Detail'
},
# DocField
{
'doctype': u'DocField'
}
]

View File

@ -1,148 +0,0 @@
# DocType, PRO Detail
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:36:04',
'docstatus': 0,
'modified': '2012-03-27 14:36:04',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
# These values are common for all DocType
{
'autoname': u'PRODC/.#######',
'colour': u'White:FFF',
'doctype': 'DocType',
'istable': 1,
'module': u'Production',
'name': '__common__',
'section_style': u'Simple',
'show_in_menu': 0,
'version': 4
},
# These values are common for all DocField
{
'doctype': u'DocField',
'name': '__common__',
'parent': u'PRO Detail',
'parentfield': u'fields',
'parenttype': u'DocType'
},
# DocType, PRO Detail
{
'doctype': 'DocType',
'name': u'PRO Detail'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'item_code',
'fieldtype': u'Link',
'label': u'Item Code',
'oldfieldname': u'item_code',
'oldfieldtype': u'Link',
'options': u'Item',
'permlevel': 0,
'reqd': 1,
'trigger': u'Client'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'description',
'fieldtype': u'Text',
'label': u'Description',
'oldfieldname': u'description',
'oldfieldtype': u'Text',
'permlevel': 1,
'width': u'300px'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'source_warehouse',
'fieldtype': u'Link',
'label': u'Source Warehouse',
'oldfieldname': u'source_warehouse',
'oldfieldtype': u'Link',
'options': u'Warehouse',
'permlevel': 0,
'reqd': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'actual_qty',
'fieldtype': u'Currency',
'label': u'Current Stock',
'oldfieldname': u'actual_qty',
'oldfieldtype': u'Currency',
'permlevel': 0,
'reqd': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'qty_reqd',
'fieldtype': u'Currency',
'label': u'Qty Reqd',
'oldfieldname': u'qty_reqd',
'oldfieldtype': u'Currency',
'permlevel': 0,
'reqd': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'issued_qty',
'fieldtype': u'Currency',
'label': u'Issued Qty',
'oldfieldname': u'issued_qty',
'oldfieldtype': u'Currency',
'permlevel': 0
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'consumed_qty',
'fieldtype': u'Currency',
'label': u'Consumed Qty',
'oldfieldname': u'consumed_qty',
'oldfieldtype': u'Currency',
'permlevel': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'qty_consumed_per_unit',
'fieldtype': u'Currency',
'label': u'Qty Consumed Per Unit',
'oldfieldname': u'qty_consumed_per_unit',
'oldfieldtype': u'Currency',
'permlevel': 0
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'stock_uom',
'fieldtype': u'Data',
'label': u'Stock UOM',
'oldfieldname': u'stock_uom',
'oldfieldtype': u'Data',
'permlevel': 1,
'reqd': 1
}
]

View File

@ -1,121 +0,0 @@
# DocType, PRO PP Detail
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:36:04',
'docstatus': 0,
'modified': '2012-03-27 14:36:04',
'modified_by': u'Administrator',
'owner': u'jai@webnotestech.com'
},
# These values are common for all DocType
{
'colour': u'White:FFF',
'doctype': 'DocType',
'istable': 1,
'module': u'Production',
'name': '__common__',
'section_style': u'Simple',
'show_in_menu': 0,
'version': 5
},
# These values are common for all DocField
{
'doctype': u'DocField',
'name': '__common__',
'parent': u'PRO PP Detail',
'parentfield': u'fields',
'parenttype': u'DocType',
'permlevel': 0
},
# DocType, PRO PP Detail
{
'doctype': 'DocType',
'name': u'PRO PP Detail'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'source_doctype',
'fieldtype': u'Data',
'label': u'Source Doctype',
'oldfieldname': u'source_doctype',
'oldfieldtype': u'Data'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'source_docname',
'fieldtype': u'Data',
'label': u'Source Docname',
'oldfieldname': u'source_docname',
'oldfieldtype': u'Data'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'source_detail_docname',
'fieldtype': u'Data',
'label': u'Source Detail Docname ',
'oldfieldname': u'source_detail_docname',
'oldfieldtype': u'Data'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'prevdoc_detail_docname',
'fieldtype': u'Data',
'label': u'Prevdoc Detail Docname',
'oldfieldname': u'prevdoc_detail_docname',
'oldfieldtype': u'Data'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'confirm_date',
'fieldtype': u'Date',
'label': u'Confirm Date',
'oldfieldname': u'confirm_date',
'oldfieldtype': u'Date'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'qty_reqd',
'fieldtype': u'Currency',
'label': u'Qty Reqd',
'oldfieldname': u'qty_reqd',
'oldfieldtype': u'Currency'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'produced_qty',
'fieldtype': u'Currency',
'label': u'Produced Qty',
'oldfieldname': u'produced_qty',
'oldfieldtype': u'Currency'
},
# DocField
{
'allow_on_submit': 1,
'doctype': u'DocField',
'fieldname': u'update',
'fieldtype': u'Check',
'label': u'Update',
'oldfieldname': u'update',
'oldfieldtype': u'Check'
}
]

View File

@ -10,7 +10,7 @@
<p class="help">Generate Purchase Requisition (MRP) and Production Orders</p>
</div>
<div style="width: 48%; float: right;">
<h4><a href="#!List/Bill Of Materials">Bill of Materials</a></h4>
<h4><a href="#!List/BOM">Bill of Materials</a></h4>
<p class="help">Bill of Materials (BOM) Master</p>
<h4><a href="#!List/Item">Item</a></h4>
<p class="help">Item Master</p>

View File

@ -249,7 +249,7 @@ cur_frm.cscript['Create Quotation'] = function(){
'from_doctype':'Opportunity',
'to_doctype':'Quotation',
'from_docname':cur_frm.docname,
'from_to_list':"[['Enquiry', 'Quotation'],['Opportunity Item','Quotation Item']]"
'from_to_list':"[['Opportunity', 'Quotation'],['Opportunity Item','Quotation Item']]"
}
, function(r,rt) {
loaddoc("Quotation", n);

View File

@ -54,7 +54,7 @@ class DocType(TransactionBase):
# --------------------
def pull_enq_details(self):
self.doc.clear_table(self.doclist, 'quotation_details')
get_obj('DocType Mapper', 'Enquiry-Quotation').dt_map('Enquiry', 'Quotation', self.doc.enq_no, self.doc, self.doclist, "[['Enquiry', '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()
@ -114,7 +114,7 @@ class DocType(TransactionBase):
def load_default_taxes(self):
return get_obj('Sales Common').load_default_taxes(self)
# Pull details from other charges master (Get Other Charges)
# Pull details from other charges master (Get Sales Taxes and Charges Master)
# ----------------------------------------------------------
def get_other_charges(self):
return get_obj('Sales Common').get_other_charges(self)

View File

@ -149,7 +149,7 @@ class DocType(TransactionBase):
def load_default_taxes(self):
return get_obj('Sales Common').load_default_taxes(self)
# Pull details from other charges master (Get Other Charges)
# Pull details from other charges master (Get Sales Taxes and Charges Master)
# ----------------------------------------------------------
def get_other_charges(self):
return get_obj('Sales Common').get_other_charges(self)

View File

@ -6,7 +6,7 @@
<div style="width: 48%; float: left;">
<h4><a href="#!List/Lead">Lead</a></h4>
<p class="help">Prospective customers</p>
<h4><a href="#!List/Enquiry">Enquiry</a></h4>
<h4><a href="#!List/Opportunity">Opportunity</a></h4>
<p class="help">Business opportunities</p>
<h4><a href="#!List/Quotation">Quotation</a></h4>
<p class="help">Quotes sent to Leads / Customers</p>
@ -32,7 +32,7 @@
<div class="section-item">
<a class="section-link"
title = "Tax and charges structure master"
href="#!List/Other Charges">Sales Other Charges</a>
href="#!List/Sales Taxes and Charges Master">Sales Taxes and Charges Master</a>
</div>
<div class="section-item">
<a class="section-link"
@ -47,7 +47,7 @@
<div class="section-item">
<a class="section-link"
title = "Terms of contract template"
href="#!List/Term">Order Terms Template</a>
href="#!List/Terms and Conditions">Terms and Conditions Template</a>
</div>
<div class="section-item">
<a class="section-link"
@ -82,7 +82,7 @@
<div class="section-item">
<a class="section-link"
title = "Helper for managing return of goods (sales or purchase)"
href="#!Form/Sales and Purchase Return Wizard/Sales and Purchase Return Wizard">Sales Returns</a>
href="#!Form/Sales and Purchase Return Tool/Sales and Purchase Return Tool">Sales Returns</a>
</div>
<div class="section-item">
<a class="section-link"
@ -99,4 +99,4 @@
</div>
</div>
<div style="clear: both;"></div>
</div>
</div>

View File

@ -1,50 +0,0 @@
# ERPNext - web based ERP (http://erpnext.com)
# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import webnotes
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl
#
# load current banner
#
def onload(self):
self.doc.header_html = webnotes.conn.get_value('Control Panel', None, 'client_name')
#
# on update
#
def validate(self):
from webnotes.utils import cint
if self.doc.file_list and cint(self.doc.set_from_attachment):
self.set_html_from_image()
# update control panel - so it loads new letter directly
webnotes.conn.set_value('Control Panel', None, 'client_name', self.doc.header_html)
# clear the cache so that the new letter head is uploaded
webnotes.conn.sql("delete from __SessionCache")
#
# set html for image
#
def set_html_from_image(self):
file_name = self.doc.file_list.split(',')[0]
self.doc.header_html = """<div>
<img style="max-height: 120px; max-width: 600px" src="files/%s"/>
</div>""" % file_name

View File

@ -1,101 +0,0 @@
# DocType, Personalize
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:36:22',
'docstatus': 0,
'modified': '2012-03-27 14:36:22',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
# These values are common for all DocType
{
'_last_update': u'1303277497',
'allow_attach': 1,
'allow_copy': 1,
'allow_email': 1,
'allow_print': 1,
'colour': u'White:FFF',
'doctype': 'DocType',
'document_type': u'Other',
'in_create': 1,
'issingle': 1,
'max_attachments': 1,
'module': u'Setup',
'name': '__common__',
'read_only': 1,
'section_style': u'Simple',
'version': 4
},
# These values are common for all DocField
{
'doctype': u'DocField',
'name': '__common__',
'parent': u'Personalize',
'parentfield': u'fields',
'parenttype': u'DocType',
'permlevel': 0
},
# These values are common for all DocPerm
{
'create': 1,
'doctype': u'DocPerm',
'name': '__common__',
'parent': u'Personalize',
'parentfield': u'permissions',
'parenttype': u'DocType',
'permlevel': 0,
'read': 1,
'role': u'System Manager',
'write': 1
},
# DocType, Personalize
{
'doctype': 'DocType',
'name': u'Personalize'
},
# DocPerm
{
'doctype': u'DocPerm'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'help_html',
'fieldtype': u'HTML',
'label': u'Help HTML',
'options': u'<div class="help_box">You can edit HTML for your banner or add an attachment and click on "Set from Attachment"</div>'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'header_html',
'fieldtype': u'Code',
'label': u'Banner HTML'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'set_from_attachment',
'fieldtype': u'Check',
'label': u'Set from attachment'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'file_list',
'fieldtype': u'Text',
'hidden': 1,
'label': u'File List'
}
]

View File

@ -1,73 +0,0 @@
# ERPNext - web based ERP (http://erpnext.com)
# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Please edit this list and import only required elements
import webnotes
from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, 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.model import db_exists
from webnotes.model.doc import Document, addchild, removechild, getchildren, make_autoname, SuperDocType
from webnotes.model.doclist import getlist
from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
from webnotes import session, form, is_testing, msgprint, errprint
sql = webnotes.conn.sql
convert_to_lists = webnotes.conn.convert_to_lists
# -----------------------------------------------------------------------------------------
class DocType:
def __init__(self, doc, doclist=[]):
self.doc = doc
self.doclist = doclist
#=======================================================================================================
def get_master_lists(self):
ret = convert_to_lists(sql("select name from `tabWarehouse Type`"))
ret = ret and ret or []
return ret
#=======================================================================================================
def create_record(self,dict_val):
obj_dict = eval(dict_val)
for d in obj_dict:
if not obj_dict[d] == '' and not d =='Doctype':
ret =sql("select name from `tab%s` where name = '%s'" %(obj_dict['Doctype'],obj_dict[d]))
if ret:
return "Record already exist."
raise Exception
rec = Document(obj_dict['Doctype'])
for i in obj_dict:
if not obj_dict[i] == '' and not i == 'Doctype':
rec.fields[i] = obj_dict[i]
rec.save(1)
return "Record created."
#=======================================================================================================
def get_page_lst(self,nm):
ret = sql("select parent from `tabPage Role` where role in ('%s') and parent = '%s'" % ("','".join(webnotes.user.get_roles()),nm))
return ret and True or False
#=======================================================================================================
#------------------------get contry--------------------------------
def get_country(self):
cty = sql("select value from `tabSingles` where field = 'country' and doctype = 'Control Panel'")
return cty and cty[0][0] or ''

View File

@ -1,49 +0,0 @@
# DocType, Setup Wizard Control
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:36:25',
'docstatus': 0,
'modified': '2012-03-27 14:36:25',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
# These values are common for all DocType
{
'colour': u'White:FFF',
'doctype': 'DocType',
'issingle': 1,
'module': u'Setup',
'name': '__common__',
'section_style': u'Simple',
'server_code_error': u' ',
'show_in_menu': 0,
'version': 110
},
# These values are common for all DocPerm
{
'doctype': u'DocPerm',
'name': '__common__',
'parent': u'Setup Wizard Control',
'parentfield': u'permissions',
'parenttype': u'DocType',
'permlevel': 0,
'read': 1,
'role': u'All',
'write': 1
},
# DocType, Setup Wizard Control
{
'doctype': 'DocType',
'name': u'Setup Wizard Control'
},
# DocPerm
{
'doctype': u'DocPerm'
}
]

View File

@ -39,7 +39,7 @@
<span class="help">Import data from spreadsheet (csv) files</span>
</p>
<p>
<b><a href="#!Form/Manage Account/Manage Account">Global Defaults</a></b><br>
<b><a href="#!Form/Global Defaults/Global Defaults">Global Defaults</a></b><br>
<span class="help">Set default values for entry</span>
</p>
<p>
@ -81,7 +81,7 @@
<div class="setup-column">
<h3>Customize ERPNext</h3>
<p>
<b><a href="#!Form/DocLayer/DocLayer">Customize Forms</a></b><br>
<b><a href="#!Form/Customize Form/Customize Form">Customize Forms</a></b><br>
<span class="help">Change entry properties (hide fields, make mandatory etc)</span>
</p>
<p>

View File

@ -189,12 +189,12 @@
{
'doctype': u'Table Mapper Detail',
'from_field': u'po_details',
'from_table': u'PO Detail',
'from_table': u'Purchase Order Item',
'match_id': 1,
'reference_doctype_key': u'prevdoc_doctype',
'reference_key': u'prevdoc_detail_docname',
'to_field': u'purchase_receipt_details',
'to_table': u'Purchase Receipt Detail',
'to_table': u'Purchase Receipt Item',
'validation_logic': u'docstatus=1 and qty > ifnull(received_qty,0)'
},
@ -225,10 +225,10 @@
{
'doctype': u'Table Mapper Detail',
'from_field': u'purchase_tax_details',
'from_table': u'Purchase Tax Detail',
'from_table': u'Purchase Taxes and Charges',
'match_id': 2,
'to_field': u'purchase_tax_details',
'to_table': u'Purchase Tax Detail',
'to_table': u'Purchase Taxes and Charges',
'validation_logic': u'docstatus = 1'
},

View File

@ -255,10 +255,10 @@
{
'doctype': u'Table Mapper Detail',
'from_field': u'other_charges',
'from_table': u'RV Tax Detail',
'from_table': u'Sales Taxes and Charges',
'match_id': 2,
'to_field': u'other_charges',
'to_table': u'RV Tax Detail',
'to_table': u'Sales Taxes and Charges',
'validation_logic': u'name is not null'
},
@ -277,12 +277,12 @@
{
'doctype': u'Table Mapper Detail',
'from_field': u'sales_order_details',
'from_table': u'Sales Order Detail',
'from_table': u'Sales Order Item',
'match_id': 1,
'reference_doctype_key': u'prevdoc_doctype',
'reference_key': u'prevdoc_detail_docname',
'to_field': u'delivery_note_details',
'to_table': u'Delivery Note Detail',
'to_table': u'Delivery Note Item',
'validation_logic': u'qty > ifnull(delivered_qty,0) and docstatus = 1'
},

View File

@ -151,7 +151,7 @@ class DocType(TransactionBase):
return get_obj('Sales Common').load_default_taxes(self)
# **** Pull details from other charges master (Get Other Charges) ****
# **** Pull details from other charges master (Get Sales Taxes and Charges Master) ****
def get_other_charges(self):
return get_obj('Sales Common').get_other_charges(self)

View File

@ -646,7 +646,7 @@
'doctype': u'DocField',
'fieldname': u'purchase_tax_details',
'fieldtype': u'Table',
'label': u'Purchase Tax Details',
'label': u'Purchase Taxes and Charges',
'oldfieldname': u'purchase_tax_details',
'oldfieldtype': u'Table',
'options': u'Purchase Taxes and Charges',

View File

@ -49,7 +49,7 @@
<div class="section-item">
<a class="section-link"
title = "Readings of incoming quality inspections"
href="#!List/QA Inspection Report">Incoming Inspection</a>
href="#!List/Quality Inspection">Incoming Inspection</a>
</div>
<div class="section-item">
<a class="section-link"
@ -69,7 +69,7 @@
<div class="section-item">
<a class="section-link"
title = "Helper for managing return of goods (sales or purchase)"
href="#!Form/Sales and Purchase Return Wizard/Sales and Purchase Return Wizard">Sales or Purchase Returns</a>
href="#!Form/Sales and Purchase Return Tool/Sales and Purchase Return Tool">Sales or Purchase Returns</a>
</div>
</div>
</div>

View File

@ -1,111 +0,0 @@
# ERPNext - web based ERP (http://erpnext.com)
# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Please edit this list and import only required elements
import webnotes
from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, 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.model import db_exists
from webnotes.model.doc import Document, addchild, removechild, getchildren, make_autoname, SuperDocType
from webnotes.model.doclist 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, is_testing, msgprint, errprint
set = webnotes.conn.set
sql = webnotes.conn.sql
get_value = webnotes.conn.get_value
in_transaction = webnotes.conn.in_transaction
convert_to_lists = webnotes.conn.convert_to_lists
# -----------------------------------------------------------------------------------------
class DocType:
def __init__(self, doc, doclist=[]):
self.doc = doc
self.doclist = doclist
# get dashboard counts
# --------------------
def get_dashboard_counts(self, dt):
dtl = eval(dt)
dt = {}
for d in dtl:
# if Lead
if d=='Lead':
dt[d] = {'To follow up':sql("select count(name) from tabLead where status!='Converted' and docstatus=1")[0][0] or 0}
# if Opportunity
elif d=='Enquiries':
args = {}
args['Quotations to be sent'] = sql("select count(distinct(t2.name)) from `tabQuotation`t1, `tabOpportunity`t2 where t1.enq_no!=t2.name and t2.docstatus=1")[0][0] or 0
args['To follow up'] = sql("select count(name) from `tabQuotation` where docstatus=0")[0][0] or 0 #Draft
dt[d] = args
# if Sales Order
elif d=='Sales Order':
args = {}
args['To be delivered'] = sql("select count(name) from `tabSales Order` where per_delivered<100 and delivery_date>now() and docstatus=1")[0][0] or 0
args['To be billed'] = sql("select count(name) from `tabSales Order` where per_billed<100 and docstatus=1")[0][0] or 0
args['Overdue'] = sql("select count(name) from `tabSales Order` where per_delivered<100 and delivery_date<now() and docstatus=1")[0][0] or 0
args['To be submitted'] = sql("select count(name) from `tabSales Order` where status='Draft'")[0][0] or 0 #Draft
dt[d] = args
# if Invoice
elif d=='Invoices':
args = {}
args['To receive payment'] = sql("select count(name) from `tabSales Invoice` where docstatus=1 and due_date>now() and outstanding_amount!=0")[0][0] or 0
args['Overdue'] = sql("select count(name) from `tabSales Invoice` where docstatus=1 and due_date<now() and outstanding_amount!=0")[0][0] or 0
args['To be submitted'] = sql("select count(name) from `tabSales Invoice` where docstatus=0")[0][0] or 0 #Draft
dt[d] = args
# if Purchase Request
elif d=='Purchase Request':
args = {}
args['Purchase Order to be made'] = sql("select count(name) from `tabPurchase Request` where per_ordered<100 and docstatus=1")[0][0] or 0
args['To be submitted'] = sql("select count(name) from `tabPurchase Request` where status='Draft'")[0][0] or 0 #Draft
dt[d] = args
# if Purchase Order
elif d=='Purchase Order':
args = {}
args['To receive items'] = sql("select count(name) from `tabPurchase Order` where per_received<100 and docstatus=1")[0][0] or 0
args['To be billed'] = sql("select count(name) from `tabPurchase Order` where per_billed<100 and docstatus=1")[0][0] or 0
args['To be submitted'] = sql("select count(name) from `tabPurchase Order` where status='Draft'")[0][0] or 0 #Draft
dt[d] = args
# if Bills
elif d=='Bills':
args = {}
args['To be payed'] = sql("select count(name) from `tabPurchase Invoice` where docstatus=1 and outstanding_amount!=0")[0][0] or 0
args['To be submitted'] = sql("select count(name) from `tabPurchase Invoice` where docstatus=0")[0][0] or 0 #Draft
dt[d] = args
# if Tasks
elif d=='Tasks':
dt[d] = {'Open': sql("select count(name) from `tabTask` where status='Open'")[0][0] or 0}
# if Maintenance
elif d=='Serial No':
args = {}
args['AMC to expire this month'] = sql("select count(name) from `tabSerial No` where docstatus=1 and month(getdate()) = month(amc_expiry_date) and year(getdate()) = year(amc_expiry_date)")[0][0] or 0
args['Warranty to expire this month'] = ql("select count(name) from `tabSerial No` where docstatus=1 and month(getdate()) = month(warranty_expiry_date) and year(getdate())=year(warranty_expiry_date)")[0][0] or 0
dt[d] = args
msgprint(dt)
return dt

View File

@ -1,30 +0,0 @@
# DocType, Activity Dashboard Control
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:36:45',
'docstatus': 0,
'modified': '2012-03-27 14:36:45',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
# These values are common for all DocType
{
'colour': u'White:FFF',
'doctype': 'DocType',
'issingle': 1,
'module': u'Utilities',
'name': '__common__',
'section_style': u'Simple',
'server_code_error': u' ',
'version': 42
},
# DocType, Activity Dashboard Control
{
'doctype': 'DocType',
'name': u'Activity Dashboard Control'
}
]

View File

@ -1,93 +0,0 @@
# DocType, Contact Detail
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:36:46',
'docstatus': 0,
'modified': '2012-03-27 14:36:46',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
# These values are common for all DocType
{
'autoname': u'CD/.#####',
'colour': u'White:FFF',
'doctype': 'DocType',
'istable': 1,
'module': u'Utilities',
'name': '__common__',
'section_style': u'Tray',
'show_in_menu': 0,
'version': 5
},
# These values are common for all DocField
{
'doctype': u'DocField',
'name': '__common__',
'parent': u'Contact Detail',
'parentfield': u'fields',
'parenttype': u'DocType',
'permlevel': 0
},
# DocType, Contact Detail
{
'doctype': 'DocType',
'name': u'Contact Detail'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'contact_person',
'fieldtype': u'Data',
'label': u'Contact Person',
'oldfieldname': u'contact_person',
'oldfieldtype': u'Data',
'reqd': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'contact_no',
'fieldtype': u'Data',
'label': u'Contact No',
'oldfieldname': u'contact_no',
'oldfieldtype': u'Data',
'reqd': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'department',
'fieldtype': u'Data',
'label': u'Department',
'oldfieldname': u'department',
'oldfieldtype': u'Data'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'designation',
'fieldtype': u'Data',
'label': u'Designation',
'oldfieldname': u'designation',
'oldfieldtype': u'Data'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'email_id',
'fieldtype': u'Small Text',
'label': u'Email Id',
'oldfieldname': u'email_id',
'oldfieldtype': u'Small Text'
}
]

View File

@ -1,118 +0,0 @@
# ERPNext - web based ERP (http://erpnext.com)
# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Please edit this list and import only required elements
import webnotes
from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, 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.model import db_exists
from webnotes.model.doc import Document, addchild, removechild, getchildren, make_autoname, SuperDocType
from webnotes.model.doclist 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, is_testing, msgprint, errprint
set = webnotes.conn.set
sql = webnotes.conn.sql
get_value = webnotes.conn.get_value
in_transaction = webnotes.conn.in_transaction
convert_to_lists = webnotes.conn.convert_to_lists
# -----------------------------------------------------------------------------------------
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl
def get_field_id(self, doctype, fieldname):
f = sql("select name, idx from tabDocField where parent=%s and fieldname=%s", (doctype, fieldname))
if not f:
f=sql("select name, idx from tabDocField where parent=%s and label=%s", (doctype, fieldname))
if not f:
return '__notfound__', 0
#msgprint("No field found for %s" % fieldname)
#raise Exception
return f[0]
def set_field_property(self, doctype, fieldname, property, value):
f = self.get_field_id(doctype, fieldname)
sql("update tabDocField set `%s`=%s where name=%s" % (property,'%s','%s'), (value, f[0]))
def move_field(self, doctype, fieldname, before_field='', after_field=''):
f1 = self.get_field_id(doctype, fieldname)
# get new id
new_idx = self.get_field_id(doctype, before_field or after_field)[1]
if after_field:
new_idx = new_idx + 1
# push fields down at new idx
sql("update tabDocField set idx=idx+1 where idx>=%s and parent=%s", (new_idx, doctype))
# push fields up at old idx
sql("update tabDocField set idx=idx-1 where idx>%s and parent=%s", (f1[1], doctype))
# set field idx
sql("update tabDocField set idx=%s where name=%s", (new_idx, f1[0]))
def delete_field(self, doctype, fieldname):
sql("delete from tabDocField where name=%s limit 1", self.get_field_id(doctype, fieldname)[0])
def delete_unnamed_field(self, doctype, after_field=''):
f1 = self.get_field_id(doctype, after_field)
if f1[0]=='__notfound__':
return
# check if truly un-named
f2 = sql("select name, fieldname, label from tabDocField where idx=%s and parent=%s limit 1", (f1[1]+1, doctype))
if not f2:
return
f2 = f2[0]
if f2[1] or f2[2]:
return
else:
sql("delete from tabDocField where name=%s limit 1", (f2[0]))
# move fields up
sql("update tabDocField set idx=idx-1 where idx>%s and parent=%s", (f1[1], doctype))
def add_permission(self, doctype, role, level=0, read=0, write=0, create=0, submit=0, cancel=0, amend=0, match=''):
# check if exists
pid = sql("select name from tabDocPerm where parent=%s and role=%s and permlevel=%s", (doctype, role, level))
if pid:
d = Document('DocPerm', pid[0][0])
else:
d = Document('DocPerm')
d.parent = doctype
d.parenttype = 'DocType'
d.parentfield = 'permissions'
d.permlevel = level
d.role = role
d.read = read
d.write = write
d.create = create
d.submit = submit
d.cancel = cancel
d.amend = amend
d.match = match
d.save(new = (not d.name and 1 or 0))
def delete_permission(self, doctype, role, level):
sql("delete from `tabDocPerm` where role = '%s' and parent = '%s' and permlevel = '%s'" % (role, doctype, level))

View File

@ -1,30 +0,0 @@
# DocType, Patch Util
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:36:47',
'docstatus': 0,
'modified': '2012-03-27 14:36:47',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
# These values are common for all DocType
{
'colour': u'White:FFF',
'doctype': 'DocType',
'issingle': 1,
'module': u'Utilities',
'name': '__common__',
'section_style': u'Simple',
'server_code_error': u' ',
'version': 5
},
# DocType, Patch Util
{
'doctype': 'DocType',
'name': u'Patch Util'
}
]

View File

@ -84,7 +84,7 @@ class DocType:
# =============================================================================
def check_bin_qty(self, bin_obj, qty_dict):
label_dict = {'actual_qty': 'Actual Qty', 'indented_qty': 'Indent Qty', 'ordered_qty': 'Ordered Qty', 'reserved_qty': 'Reserved Qty', 'planned_qty': 'Planned Qty'}
label_dict = {'actual_qty': 'Actual Qty', 'indented_qty': 'Quantity Requested for Purchase', 'ordered_qty': 'Ordered Qty', 'reserved_qty': 'Reserved Qty', 'planned_qty': 'Planned Qty'}
for f in qty_dict:
if flt(bin_obj.doc.fields[f]) != qty_dict[f]:
msgprint('<div style="color: RED"> Difference found in %s for Item:= %s and Warehouse:= %s (Before : %s; After : %s)</div>' % (label_dict[f], bin_obj.doc.item_code, bin_obj.doc.warehouse, cstr(bin_obj.doc.fields[f]), cstr(qty_dict[f])))

10
wnf.py
View File

@ -30,7 +30,9 @@ def replace_code(start, txt1, txt2, extn):
content = f.read()
if re.search(txt1, content):
search_replace_with_prompt(fpath, txt1, txt2)
res = search_replace_with_prompt(fpath, txt1, txt2)
if res == 'skip':
return 'skip'
@ -47,10 +49,12 @@ def search_replace_with_prompt(fpath, txt1, txt2):
print '\n', fpath
print colored(txt1, 'red').join(c[:-1].split(txt1))
a = ''
while a not in ['y', 'n', 'Y', 'N']:
a = raw_input('Do you want to Change [y/n]?')
while a.lower() not in ['y', 'n', 'skip']:
a = raw_input('Do you want to Change [y/n/skip]?')
if a.lower() == 'y':
c = c.replace(txt1, txt2)
elif a.lower() == 'skip':
return 'skip'
tmp.append(c)
with open(fpath, 'w') as f: