rerun of rename_dt
This commit is contained in:
parent
5c6cdb06b2
commit
5112b5b6b8
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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"
|
||||
|
@ -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',
|
||||
|
@ -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)
|
||||
|
@ -122,7 +122,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'
|
||||
|
@ -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
|
||||
}
|
||||
]
|
@ -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"
|
||||
|
@ -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'])
|
@ -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'
|
||||
}
|
||||
]
|
@ -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'
|
||||
}
|
||||
]
|
@ -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'
|
||||
}
|
||||
]
|
@ -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'
|
||||
}
|
||||
]
|
@ -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]
|
||||
|
@ -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;
|
||||
|
@ -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"
|
||||
|
@ -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'
|
||||
}
|
||||
]
|
@ -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
|
||||
|
@ -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]
|
||||
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
|
||||
|
17
erpnext/patches/mar_2012/usertags.py
Normal file
17
erpnext/patches/mar_2012/usertags.py
Normal 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()
|
||||
|
@ -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'
|
||||
}
|
||||
]
|
||||
|
@ -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 />':' ') +
|
||||
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 & 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>
|
||||
|
@ -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 />':' ') +
|
||||
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 & 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>
|
@ -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 />':' ') +
|
||||
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 & 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>
|
@ -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 & 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>
|
@ -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 & 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>
|
@ -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 & 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>
|
@ -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 & 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>
|
@ -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 & 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>
|
@ -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 & 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>
|
@ -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 & 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>
|
@ -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 & 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>
|
@ -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 & 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>
|
@ -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 & 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>
|
@ -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 & 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>
|
@ -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 & 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>
|
@ -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
|
||||
|
@ -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)
|
@ -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'
|
||||
}
|
||||
]
|
@ -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
|
||||
}
|
||||
]
|
@ -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
|
||||
}
|
||||
]
|
@ -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
|
||||
}
|
||||
]
|
@ -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'
|
||||
}
|
||||
]
|
@ -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
|
||||
}
|
||||
]
|
@ -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'
|
||||
}
|
||||
]
|
@ -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>
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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"
|
||||
|
@ -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
|
@ -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'
|
||||
}
|
||||
]
|
@ -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 ''
|
@ -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'
|
||||
}
|
||||
]
|
@ -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>
|
||||
|
@ -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'
|
||||
},
|
||||
|
||||
|
@ -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'
|
||||
},
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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',
|
||||
|
@ -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>
|
||||
|
@ -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
|
@ -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'
|
||||
}
|
||||
]
|
@ -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'
|
||||
}
|
||||
]
|
@ -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))
|
@ -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'
|
||||
}
|
||||
]
|
@ -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
10
wnf.py
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user