bzr revid: pap@tinyerp.co.in-20100714094329-rgm800hzrw73e7c4
This commit is contained in:
pap (openerp)
2010-07-14 15:13:29 +05:30
41 changed files with 2374 additions and 87 deletions
+6 -1
View File
@@ -1746,7 +1746,12 @@ class account_tax(osv.osv):
tin = self.compute_inv(cr, uid, tin, price_unit, quantity, address_id=address_id, product=product, partner=partner)
for r in tin:
totalex -= r['amount']
tex = self._compute(cr, uid, tex, totalex/quantity, quantity, address_id=address_id, product=product, partner=partner)
totlex_qty=0.0
try:
totlex_qty=totalex/quantity
except:
pass
tex = self._compute(cr, uid, tex, totlex_qty, quantity, address_id=address_id, product=product, partner=partner)
for r in tex:
totalin += r['amount']
return {
+2 -2
View File
@@ -147,7 +147,7 @@
<field name="number" readonly="1"/>
<field name="type" invisible="1"/>
<field name="currency_id" domain="[('company_id','=', company_id)]" on_change="onchange_currency_id(currency_id, company_id)" width="50"/>
<button name="%(action_account_change_currency)d" type="action" icon="gtk-apply" string="Change"/>
<button name="%(action_account_change_currency)d" type="action" icon="terp-stock_effects-object-colorize" string="Change"/>
<newline/>
<field name="partner_id" domain="[('supplier','=', 1)]" on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank,company_id)" context="{'default_customer': 0}"/>
<field domain="[('partner_id','=',partner_id)]" name="address_invoice_id"/>
@@ -202,7 +202,7 @@
<field name="state"/>
<field name="residual"/>
<group col="3" colspan="4">
<button name="invoice_open" states="draft,proforma2" string="Validate" icon="terp-camera_test"/>
<button name="invoice_open" states="draft,proforma2" string="Approve" icon="terp-camera_test"/>
<button name="%(action_account_invoice_pay)d" type='action' string='Pay Invoice' states='open' icon="gtk-ok"/>
<button name="invoice_cancel" states="draft,proforma2,sale,open" string="Cancel" icon="terp-gtk-stop"/>
<button name="action_cancel_draft" states="cancel" string="Set to Draft" type="object" icon="terp-stock_effects-object-colorize"/>
+2 -2
View File
@@ -1059,7 +1059,7 @@
<field name="to_check" groups="base.group_extended"/>
<field name="amount"/>
<field name="state"/>
<button name="button_validate" states="draft" string="Validate" type="object" icon="terp-camera_test"/>
<button name="button_validate" states="draft" string="Approve" type="object" icon="terp-camera_test"/>
</tree>
</field>
</record>
@@ -1127,7 +1127,7 @@
<field name="narration" colspan="4" nolabel="1"/>
<field name="state" select="1"/>
<group col="2" colspan="2">
<button name="button_validate" states="draft" string="Validate" type="object" icon="terp-camera_test"/>
<button name="button_validate" states="draft" string="Approve" type="object" icon="terp-camera_test"/>
<button name="button_cancel" states="posted" string="Cancel" type="object" icon="terp-gtk-stop"/>
</group>
</page>
@@ -16,7 +16,7 @@
<field name="period_id"/>
<group colspan="4" col="6">
<button icon="gtk-cancel" special="cancel" string="Cancel"/>
<button icon="terp-camera_test" string="Validate" name="validate_move" type="object"/>
<button icon="terp-camera_test" string="Approve" name="validate_move" type="object"/>
</group>
</form>
</field>
@@ -47,7 +47,7 @@
<form string="Validate Moves">
<separator string="Validate Ledger Postings" colspan="4"/>
<button special="cancel" string="Cancel" icon="gtk-cancel"/>
<button name="validate_move_lines" string="Validate" type="object" icon="gtk-go-forward" default_focus="1"/>
<button name="validate_move_lines" string="Approve" type="object" icon="gtk-go-forward" default_focus="1"/>
</form>
</field>
</record>
@@ -148,7 +148,7 @@
<field name="state" select="1"/>
<group col="4" colspan="2">
<button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-apply" />
<button string="Validate" name="validate" states="confirm" type="workflow" icon="gtk-ok"/>
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-ok"/>
<button string="Done" name="done" states="validate" type="workflow" icon="gtk-jump-to" />
<button string="Cancel" name="cancel" states="confirm,validate" type="workflow" icon="gtk-cancel"/>
<!--<button string="Set to Draft" name="action_set_to_draft" states="cancel" type="object"/>-->
@@ -181,7 +181,7 @@
<search string="Budget">
<group col="20" colspan="4">
<filter string="Draft" icon="terp-document-new" domain="[('state','=','draft')]" help="Draft Budgets" default="1"/>
<filter string="To Validate" icon="terp-gtk-go-back-rtl" domain="[('state','=','validate')]" help="To Validate Budgets" />
<filter string="To Approve" icon="terp-gtk-go-back-rtl" domain="[('state','=','validate')]" help="To Approve Budgets" />
<separator orientation="vertical"/>
<field name="name" select="1"/>
<field name="code" select="1" />
@@ -207,7 +207,7 @@
</record>
<record id="action_payment_order_open" model="ir.actions.act_window">
<field name="name">Payment Orders to Validate</field>
<field name="name">Payment Orders to Approve</field>
<field name="res_model">payment.order</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
+6 -6
View File
@@ -116,10 +116,10 @@ class account_voucher(osv.osv):
('journal_pur_voucher','Journal Purchase'),
('journal_voucher','Journal Voucher'),
],'Entry Type', select=True , size=128, readonly=True, states={'draft':[('readonly',False)]}),
'date':fields.date('Date', readonly=True, states={'draft':[('readonly',False)]}),
'date':fields.date('Date', readonly=True, states={'draft':[('readonly',False)]}, help="Effective date for accounting entries"),
'journal_id':fields.many2one('account.journal', 'Journal', required=True, readonly=True, states={'draft':[('readonly',False)]}),
'account_id':fields.many2one('account.account', 'Account', required=True, readonly=True, states={'draft':[('readonly',False)]}, domain=[('type','<>','view')]),
'payment_ids':fields.one2many('account.voucher.line','voucher_id','Voucher Lines', readonly=False, states={'proforma':[('readonly',True)]}),
'payment_ids':fields.one2many('account.voucher.line','voucher_id','Voucher Lines', readonly=False, states={'draft':[('readonly',True)]}),
'period_id': fields.many2one('account.period', 'Period', required=True, readonly=True, states={'posted':[('readonly',True)]}),
'narration':fields.text('Narration', readonly=True, states={'draft':[('readonly',False)]}, required=False),
'currency_id': fields.many2one('res.currency', 'Currency', required=True, readonly=True, states={'draft':[('readonly',False)]}),
@@ -137,9 +137,8 @@ class account_voucher(osv.osv):
\n* The \'Posted\' state is used when user create voucher,a voucher number is generated and voucher entries are created in account \
\n* The \'Cancelled\' state is used when user cancel voucher.'),
'amount':fields.float('Amount', readonly=True),
'reference': fields.char('Voucher Reference', size=64),
'reference_type': fields.selection(_get_reference_type, 'Reference Type',
required=True),
'reference': fields.char('Reference', size=64, readonly=True, states={'draft':[('readonly',False)]}, help="Bank cheque number or payorder number"),
'reference_type': fields.selection(_get_reference_type, 'Reference Type', required=True),
'number': fields.related('move_id', 'name', type="char", readonly=True, string='Number'),
'move_id':fields.many2one('account.move', 'Account Entry'),
'move_ids':fields.many2many('account.move.line', 'voucher_id', 'account_id', 'rel_account_move', 'Real Entry'),
@@ -280,7 +279,8 @@ class account_voucher(osv.osv):
'journal_id': journal.id,
'type' : inv.type,
'narration' : inv.narration and inv.narration or inv.name,
'date':inv.date
'date':inv.date,
'ref':inv.reference
}
if inv.period_id:
+14 -7
View File
@@ -35,7 +35,7 @@
</group>
<notebook colspan="4">
<page string="Journal Entries">
<field name="payment_ids" colspan="4" nolabel="1" height="250">
<field name="payment_ids" colspan="4" nolabel="1" height="200">
<tree string="Voucher Lines" editable="top">
<field name="partner_id" on_change="onchange_partner(partner_id,type,parent.type, parent.currency_id)"/>
<field name="account_id"/>
@@ -46,14 +46,21 @@
<field name="ref"/>
</tree>
</field>
<separator string="Narration" colspan="4"/>
<field name="narration" colspan="4" nolabel="1" height="50"/>
<group col="2" colspan="3">
<separator string="Narration" colspan="2"/>
<field name="narration" colspan="2" nolabel="1"/>
</group>
<group col="2" colspan="1">
<separator string="Other Informtion" colspan="2"/>
<field name="reference" select="1"/>
<field name="date" select="1"/>
<field name="currency_id" select="1"/>
</group>
</page>
<page string="Other Info">
<page string="Accounting Entries">
<field name="company_id" select="1" widget="selection" groups="base.group_multi_company"/>
<field name="currency_id" select="1" />
<field name="period_id"/>
<field name="date" select="1"/>
<separator string="General Entries" colspan="4"/>
<field name="move_ids" colspan="4" nolabel="1" readonly="1"/>
</page>
@@ -62,7 +69,7 @@
<field name="state"/>
<button name="open_voucher" string="Pro-forma" states="draft" icon="terp-check"/>
<button name="proforma_voucher" string="Create" states="proforma" icon="terp-document-new"/>
<button name="recheck_voucher" string="Validate" states="recheck" icon="terp-check"/>
<button name="recheck_voucher" string="Approve" states="recheck" icon="terp-check"/>
<button name="audit_complete" string="Audit Pass" states="posted" icon="terp-check"/>
<button name="cancel_voucher" string="Cancel" states="proforma,recheck,posted" icon="gtk-cancel"/>
<button name="cancel_to_draft" states="cancel" string="Set to Draft" icon="terp-stock_effects-object-colorize"/>
@@ -63,7 +63,8 @@ class account_voucher(osv.osv):
'journal_id': journal.id,
'type' : inv.type,
'narration' : inv.narration and inv.narration or inv.name,
'date':inv.date
'date':inv.date,
'ref':inv.reference
}
if inv.period_id:
+2 -2
View File
@@ -25,11 +25,11 @@
'version': '0.1',
'category': 'Generic Modules/Base',
'description': """
This module is used along with openerp OpenOffice plugin.
This module is used along with OpenERP OpenOffice plugin.
You have to first install the plugin which is available at
http://www.openerp.com
This module adds wizards to import/export .SXW report that
This module adds wizards to Import/Export .sxw report that
you can modify in OpenOffice.Once you have modified it you can
upload the report using the same wizard.
""",
@@ -7,6 +7,7 @@
<field eval="[(6,0,[ref('base.user_root')])]" name="users"/>
<field eval="&quot;&quot;&quot;OpenOfficeReportDesigner&quot;&quot;&quot;" name="name"/>
</record>
<record id="ir_model_access_openofficereportdesigner0" model="ir.model.access">
<field name="model_id" ref="base.model_ir_actions_report_xml"/>
<field eval="1" name="perm_read"/>
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
#
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
@@ -15,11 +15,11 @@
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from osv import fields,osv
from osv import osv
from wizard.tiny_sxw2rml import sxw2rml
from StringIO import StringIO
from report import interface
@@ -27,49 +27,53 @@ import base64
import pooler
import tools
class report_xml(osv.osv):
_inherit = 'ir.actions.report.xml'
def sxwtorml(self,cr, uid, file_sxw,file_type):
def sxwtorml(self, cr, uid, file_sxw, file_type):
'''
The use of this function is to get rml file from sxw file.
'''
sxwval = StringIO(base64.decodestring(file_sxw))
if file_type=='sxw':
fp = tools.file_open('normalized_oo2rml.xsl',
fp = tools.file_open('normalized_oo2rml.xsl',
subdir='addons/base_report_designer/wizard/tiny_sxw2rml')
if file_type=='odt':
fp = tools.file_open('normalized_odt2rml.xsl',
fp = tools.file_open('normalized_odt2rml.xsl',
subdir='addons/base_report_designer/wizard/tiny_sxw2rml')
return {'report_rml_content': str(sxw2rml(sxwval, xsl=fp.read()))}
def upload_report(self, cr, uid, report_id, file_sxw,file_type, context):
def upload_report(self, cr, uid, report_id, file_sxw, file_type, context):
'''
Untested function
'''
pool = pooler.get_pool(cr.dbname)
sxwval = StringIO(base64.decodestring(file_sxw))
if file_type=='sxw':
fp = tools.file_open('normalized_oo2rml.xsl',
fp = tools.file_open('normalized_oo2rml.xsl',
subdir='addons/base_report_designer/wizard/tiny_sxw2rml')
if file_type=='odt':
fp = tools.file_open('normalized_odt2rml.xsl',
fp = tools.file_open('normalized_odt2rml.xsl',
subdir='addons/base_report_designer/wizard/tiny_sxw2rml')
report = pool.get('ir.actions.report.xml').write(cr, uid, [report_id], {
'report_sxw_content': base64.decodestring(file_sxw),
'report_rml_content': str(sxw2rml(sxwval, xsl=fp.read())),
'report_sxw_content': base64.decodestring(file_sxw),
'report_rml_content': str(sxw2rml(sxwval, xsl=fp.read())),
})
db = pooler.get_db_only(cr.dbname)
interface.register_all(db)
return True
def report_get(self, cr, uid, report_id, context={}):
report = self.browse(cr, uid, report_id, context)
return {
'file_type' : report.report_type,
'report_sxw_content': report.report_sxw_content and base64.encodestring(report.report_sxw_content) or False,
'file_type' : report.report_type,
'report_sxw_content': report.report_sxw_content and base64.encodestring(report.report_sxw_content) or False,
'report_rml_content': report.report_rml_content and base64.encodestring(report.report_rml_content) or False
}
report_xml()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,31 +1,22 @@
<?xml version="1.0"?>
<openerp>
<data>
<data>
<wizard
string="Modify an existing report"
model="ir.actions.report.xml"
name="base_report_designer.modify"
id="wizard_report_designer_modify"/>
<wizard string="Modify an existing report"
model="ir.actions.report.xml" name="base_report_designer.modify"
id="wizard_report_designer_modify" />
<menuitem icon="terp-graph" id="base.reporting_menu" name="Reporting" sequence="30"/>
<menuitem
id="base.next_id_50"
name="Configuration"
parent="base.reporting_menu"
groups="base.group_system"
sequence="3"/>
<menuitem
parent="base.next_id_50"
name="Report Designer"
action="wizard_report_designer_modify"
type="wizard"
id="menu_wizard_report_designer_modify"
sequence="70"/>
<menuitem icon="terp-graph" id="base.reporting_menu"
name="Reporting" sequence="30" />
<menuitem id="base.next_id_50" name="Configuration"
parent="base.reporting_menu" groups="base.group_system" sequence="3" />
<menuitem parent="base.next_id_50" name="Report Designer"
action="wizard_report_designer_modify" type="wizard"
id="menu_wizard_report_designer_modify" sequence="70" />
</data>
</data>
</openerp>
+1 -1
View File
@@ -46,7 +46,7 @@ class crm_opportunity(osv.osv):
domain="[('partner_id','=',partner_id)]"),
# Opportunity fields
'probability': fields.float('Probability (%)'),
'probability': fields.float('Probability (%)',group_operator="avg"),
'planned_revenue': fields.float('Expected Revenue'),
'ref': fields.reference('Reference', selection=crm._links_get, size=128),
'ref2': fields.reference('Reference 2', selection=crm._links_get, size=128),
+1 -1
View File
@@ -133,7 +133,7 @@
<group expand="0" string="Extended options..." groups="base.group_extended">
<field name="partner_id"/>
<separator orientation="vertical"/>
<field name="stage_id" widget="selection" domain="[('section_id','=',section_id), ('object_id.model', '=', 'crm.lead')]" />
<field name="stage_id" widget="selection" domain="[('object_id.model', '=', 'crm.lead')]" />
<field name="categ_id" widget="selection" domain="[('object_id.model', '=', 'crm.lead')]"/>
<separator orientation="vertical"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
@@ -211,7 +211,7 @@
<field name="act_window_id" ref="action_report_crm_claim"/>
</record>
<menuitem name="Claims" id="menu_report_crm_claim_tree"
<menuitem name="Claims Analysis" id="menu_report_crm_claim_tree"
groups="base.group_extended"
action="action_report_crm_claim" parent="base.next_id_64" sequence="6"/>
@@ -198,7 +198,7 @@
<field name="act_window_id" ref="action_report_crm_fundraising"/>
</record>
<menuitem name="Fundraising"
<menuitem name="Fundraising Analysis"
action="action_report_crm_fundraising"
groups="base.group_extended"
id="menu_report_crm_fundraising_tree" parent="base.next_id_64" sequence="20"/>
@@ -179,7 +179,7 @@
<field name="act_window_id" ref="action_report_crm_helpdesk"/>
</record>
<menuitem name="Helpdesk" action="action_report_crm_helpdesk"
<menuitem name="Helpdesk Analysis" action="action_report_crm_helpdesk"
groups="base.group_extended"
id="menu_report_crm_helpdesks_tree" parent="base.next_id_64" sequence="7"/>
+1 -1
View File
@@ -128,7 +128,7 @@
<group>
<filter icon="terp-document-new" domain="[('state','=','draft')]" string="Draft" help="Draft Expense"/>
<separator orientation="vertical"/>
<filter icon="terp-gtk-go-back-rtl" domain="[('state','=','confirm')]" string="To Validate"
<filter icon="terp-gtk-go-back-rtl" domain="[('state','=','confirm')]" string="To Approve"
help="Confirmed Expense"/>
<filter icon="terp-gtk-go-back-rtl" domain="[('state','=','accepted')]" string="To Pay"
help="Expenses to Invoice"/>
+6 -6
View File
@@ -10,7 +10,7 @@
<search string="Search Leave">
<group col='8' colspan='4'>
<filter icon="terp-gtk-go-back-rtl" domain="[('state','=','draft')]" string="To Confirm"/>
<filter icon="terp-gtk-go-back-rtl" domain="[('state','=','confirm')]" string="To Validate"/>
<filter icon="terp-gtk-go-back-rtl" domain="[('state','=','confirm')]" string="To Approve"/>
<filter icon="terp-camera_test" domain="[('state','=','validate')]" string="Validated"
default="context.get('report', False)"/>
<separator orientation="vertical"/>
@@ -69,8 +69,8 @@
<field name="state" colspan="2"/>
<group colspan="2">
<button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-yes"/>
<button string="Validate" name="validate" states="confirm" type="workflow" icon="gtk-apply"/>
<button string="Approve" name="second_validate" states="validate1" type="workflow" icon="gtk-apply"/>
<button string="To Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply"/>
<button string="Approved" name="second_validate" states="validate1" type="workflow" icon="gtk-apply"/>
<button string="Refuse" name="refuse" states="confirm,validate1" type="workflow" icon="gtk-no"/>
<button string="Cancel" name="cancel" states="validate,refuse" type="workflow" icon="gtk-cancel"/>
<button string="Set to Draft" name="set_to_draft" states="cancel" type="object" icon="gtk-convert"/>
@@ -113,8 +113,8 @@
<field name="state" colspan="2"/>
<group colspan="2">
<button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-yes"/>
<button string="Validate" name="validate" states="confirm" type="workflow" icon="gtk-apply"/>
<button string="Approve" name="second_validate" states="validate1" type="workflow" icon="gtk-apply"/>
<button string="To Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply"/>
<button string="Approved" name="second_validate" states="validate1" type="workflow" icon="gtk-apply"/>
<button string="Refuse" name="refuse" states="confirm,validate1" type="workflow" icon="gtk-no"/>
<button string="Cancel" name="cancel" states="validate,refuse" type="workflow" icon="gtk-cancel"/>
<button string="Set to Draft" name="set_to_draft" states="cancel" type="object" icon="gtk-convert"/>
@@ -168,7 +168,7 @@
<field name="state" colspan="2"/>
<group colspan="2">
<button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-yes"/>
<button string="Validate" name="validate" states="confirm" type="workflow" icon="gtk-apply"/>
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply"/>
<button string="Refuse" name="refuse" states="confirm" type="workflow" icon="gtk-no"/>
<button string="Cancel" name="cancel" states="validate,refuse,validate1" type="workflow" icon="gtk-cancel"/>
<button string="Set to Draft" name="set_to_draft" states="cancel" type="object" icon="gtk-convert"/>
+1 -1
View File
@@ -505,7 +505,7 @@
<button string="Compute Sheet" icon="terp-stock_format-scientific" name="compute_sheet" states="new"/>
<button string="Recompute Sheet" icon="terp-stock_format-scientific" name="compute_sheet" type="object" states="draft"/>
<button string="Verify Sheet" icon="terp-camera_test" name="verify_sheet" states="draft"/>
<button string="Validate Sheet" icon="terp-camera_test" name="final_verify_sheet" states="hr_check"/>
<button string="Approve Sheet" icon="terp-camera_test" name="final_verify_sheet" states="hr_check"/>
<button string="Pay Salary" icon="terp-dolar_ok!" name="process_sheet" states="confirm"/>
<button string="Cancel" icon="terp-dialog-close" name="cancel_sheet" states="draft,hr_check,confirm"/>
<button string="Set to Draft" icon="terp-stock_effects-object-colorize" name="set_to_draft" states="cancel"/>
@@ -195,7 +195,7 @@
<search string="Search Timesheet">
<group col="10" colspan="4">
<filter icon="terp-document-new" string="In Draft" domain="[('state','in',('draft', 'new'))]" help="Unvalidated Timesheets"/>
<filter icon="terp-gtk-go-back-rtl" string="To Validate" domain="[('state','=','confirm')]" help="Confirmed Timesheets"/>
<filter icon="terp-gtk-go-back-rtl" string="To Approve" domain="[('state','=','confirm')]" help="Confirmed Timesheets"/>
<separator orientation="vertical"/>
<field name="user_id" select="1"/>
<field name="date_from"/>
@@ -15,7 +15,7 @@
<group col="2" colspan="4">
<button icon='gtk-close' special="cancel"
string="Close" />
<button name="change_prod_qty" string="Validate"
<button name="change_prod_qty" string="Approve"
colspan="1" type="object" icon="gtk-ok" />
</group>
</form>
+1 -1
View File
@@ -457,7 +457,7 @@ class task(osv.osv):
'ref_doc1': 'project.task,%d'% (task.id,),
'ref_doc2': 'project.project,%d'% (project.id,),
})
elif project.warn_manager and cntx.get('mail_send',False):
elif project.warn_manager and cntx.get('mail_send',True):
mail_send = True
message = _('Task ') + " '" + task.name + "' "+ _("is Done.")
self.log(cr, uid, task.id, message)
@@ -26,7 +26,7 @@
<newline/>
<group colspan="4" col="6">
<button icon="gtk-cancel" special="cancel" string="_Cancel"/>
<button icon="gtk-ok" name="validate" string="Validate" type="object"/>
<button icon="gtk-ok" name="validate" string="Approve" type="object"/>
</group>
</form>
</field>
@@ -93,8 +93,8 @@ class project_phase(osv.osv):
_columns = {
'name': fields.char("Name", size=64, required=True),
'date_start': fields.datetime('Start Date', help="Starting Date of the phase"),
'date_end': fields.datetime('End Date', help="Ending Date of the phase"),
'date_start': fields.date('Start Date', help="Starting Date of the phase"),
'date_end': fields.date('End Date', help="Ending Date of the phase"),
'constraint_date_start': fields.datetime('Start Date', help='force the phase to start after this date'),
'constraint_date_end': fields.datetime('End Date', help='force the phase to finish before this date'),
'project_id': fields.many2one('project.project', 'Project', required=True),
@@ -114,7 +114,7 @@ class project_phase(osv.osv):
'responsible_id': lambda obj,cr,uid,context: uid,
'state': 'draft',
'sequence': 10,
'product_uom': lambda self,cr,uid,c: self.pool.get('product.uom').search(cr, uid, [('name', '=', 'day')], context=c)[0]
'product_uom': lambda self,cr,uid,c: self.pool.get('product.uom').search(cr, uid, [('name', '=', _('Day'))], context=c)[0]
}
_order = "name"
_constraints = [
+25
View File
@@ -0,0 +1,25 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import sale_layout
import report
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+48
View File
@@ -0,0 +1,48 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
"name" : "Sale Order Layout Improvement",
"version" : "1.0",
"depends" : ["base", "sale"],
"author" : "Tiny",
"description": """
This module provides some features to improve the layout of the Sale Order.
It gives you the possibility to
* order all the lines of an sale order
* add titles, comment lines, sub total lines
* draw horizontal lines and put page breaks
""",
"website" : "http://www.openerp.com",
"category" : "Generic Modules/Sales & Purchases",
"init_xml" : [],
"demo_xml" : [],
"update_xml" : [
# "security/ir.model.access.csv",
"sale_layout_view.xml",
"sale_layout_report.xml",
],
"active": False,
"installable": True
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+291
View File
@@ -0,0 +1,291 @@
# translation of fr_FR.po to Français
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_layout
#
# Numerigraphe <informatique@numerigraphe.com>, 2009.
msgid ""
msgstr ""
"Project-Id-Version: fr_FR\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-11-26 08:45+0000\n"
"PO-Revision-Date: 2010-01-19 05:23+0000\n"
"Last-Translator: Numérigraphe <Unknown>\n"
"Language-Team: Français\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-05-21 03:45+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Sub Total"
msgstr "Sous-total"
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Title"
msgstr "Titre"
#. module: sale_layout
#: model:ir.module.module,shortdesc:sale_layout.module_meta_information
msgid "sale_layout"
msgstr "sale_layout"
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Disc. (%)"
msgstr ""
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Note"
msgstr "Remarque"
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Unit Price"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Order N°"
msgstr ""
#. module: sale_layout
#: field:sale.order,abstract_line_ids:0
msgid "Order Lines"
msgstr "Lignes de commande"
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Disc.(%)"
msgstr ""
#. module: sale_layout
#: field:sale.order.line,layout_type:0
msgid "Layout Type"
msgstr "Mise en page"
#. module: sale_layout
#: view:sale.order:0
#: view:sale.order.line:0
msgid "Seq."
msgstr "Séq."
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Product"
msgstr "Produit"
#. module: sale_layout
#: model:ir.module.module,description:sale_layout.module_meta_information
msgid ""
"\n"
" This module provides some features to improve the layout of the Sale "
"Order.\n"
"\n"
" It gives you the possibility to\n"
" * order all the lines of an sale order\n"
" * add titles, comment lines, sub total lines\n"
" * draw horizontal lines and put page breaks \n"
"\n"
" "
msgstr ""
"\n"
" Ce module ajoute des options pour améliorer la mise en page des "
"commandes de vente.\n"
"\n"
" Il vous permet :\n"
" * de réordonner toutes les lignes d'une commande\n"
" * d'ajouter des titres, des lignes de remarques, des sous-totaux\n"
" * de tracer des lignes horizontales et de faire des sauts de page "
"\n"
"\n"
" "
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Description"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Manual Description"
msgstr "Description manuelle"
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Our Salesman"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Automatic Declaration"
msgstr "Déclaration automatique"
#. module: sale_layout
#: view:sale.order:0
msgid "Invoice Lines"
msgstr "Lignes de facture"
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Quantity"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Quotation N°"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "VAT"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Make Invoice"
msgstr "Créer facture"
#. module: sale_layout
#: view:sale.order:0
msgid "Properties"
msgstr "Propriétés"
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Invoice address :"
msgstr ""
#. module: sale_layout
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "XML non valide pour l'architecture de la vue"
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Page Break"
msgstr "Saut de page"
#. module: sale_layout
#: view:sale.order:0
msgid "Notes"
msgstr "Notes"
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Date Ordered"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Shipping address :"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Taxes"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Net Total :"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Tel. :"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Total :"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Payment Terms"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "History"
msgstr "Historique"
#. module: sale_layout
#: view:sale.order:0
msgid "Sale Order Lines"
msgstr "Lignes de commande"
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Separator Line"
msgstr "Ligne de séparation"
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Your Reference"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Sales order lines"
msgstr "Lignes de commande"
#. module: sale_layout
#: view:sale.order:0
msgid "Qty"
msgstr "Qté"
#. module: sale_layout
#: view:sale.order:0
msgid "States"
msgstr "États"
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "TVA :"
msgstr ""
#. module: sale_layout
#: model:ir.actions.report.xml,name:sale_layout.sale_order_1
msgid "Order with Layout"
msgstr "Commande avec mise en page"
#. module: sale_layout
#: view:sale.order:0
msgid "Extra Info"
msgstr "Info supplémentaires"
#. module: sale_layout
#: view:sale.order:0
msgid "UoM"
msgstr "UDM"
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Fax :"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Order Line"
msgstr "Commande client"
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Price"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Taxes :"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Stock Moves"
msgstr "Mouvements de stocks"
+276
View File
@@ -0,0 +1,276 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_layout
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.6\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-11-26 08:45:52+0000\n"
"PO-Revision-Date: 2009-11-26 08:45:52+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Sub Total"
msgstr ""
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Title"
msgstr ""
#. module: sale_layout
#: model:ir.module.module,shortdesc:sale_layout.module_meta_information
msgid "sale_layout"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Disc. (%)"
msgstr ""
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Note"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Unit Price"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Order N°"
msgstr ""
#. module: sale_layout
#: field:sale.order,abstract_line_ids:0
msgid "Order Lines"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Disc.(%)"
msgstr ""
#. module: sale_layout
#: field:sale.order.line,layout_type:0
msgid "Layout Type"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
#: view:sale.order.line:0
msgid "Seq."
msgstr ""
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Product"
msgstr ""
#. module: sale_layout
#: model:ir.module.module,description:sale_layout.module_meta_information
msgid "\n"
" This module provides some features to improve the layout of the Sale Order.\n"
"\n"
" It gives you the possibility to\n"
" * order all the lines of an sale order\n"
" * add titles, comment lines, sub total lines\n"
" * draw horizontal lines and put page breaks \n"
"\n"
" "
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Description"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Manual Description"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Our Salesman"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Automatic Declaration"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Invoice Lines"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Quantity"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Quotation N°"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "VAT"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Make Invoice"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Properties"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Invoice address :"
msgstr ""
#. module: sale_layout
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Page Break"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Notes"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Date Ordered"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Shipping address :"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Taxes"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Net Total :"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Tel. :"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Total :"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Payment Terms"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "History"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Sale Order Lines"
msgstr ""
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Separator Line"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Your Reference"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Sales order lines"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Qty"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "States"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "TVA :"
msgstr ""
#. module: sale_layout
#: model:ir.actions.report.xml,name:sale_layout.sale_order_1
msgid "Order with Layout"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Extra Info"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "UoM"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Fax :"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Order Line"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Price"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Taxes :"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Stock Moves"
msgstr ""
+179
View File
@@ -0,0 +1,179 @@
# translation of fr_FR.po to Français
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_layout
#
# Numerigraphe <informatique@numerigraphe.com>, 2009.
msgid ""
msgstr ""
"Project-Id-Version: fr_FR\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-03-25 10:13:19+0000\n"
"PO-Revision-Date: 2009-03-25 11:25+0100\n"
"Last-Translator: Numerigraphe <informatique@numerigraphe.com>\n"
"Language-Team: Français\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: \n"
"X-Generator: KBabel 1.11.4\n"
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Sub Total"
msgstr "Sous-total"
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Title"
msgstr "Titre"
#. module: sale_layout
#: view:sale.order:0
msgid "Sale Order Lines"
msgstr "Lignes de commande"
#. module: sale_layout
#: field:sale.order,abstract_line_ids:0
msgid "Order Lines"
msgstr "Lignes de commande"
#. module: sale_layout
#: model:ir.module.module,description:sale_layout.module_name_translation
msgid ""
"\n"
" This module provides some features to improve the layout of the Sale Order.\n"
"\n"
" It gives you the possibility to\n"
" * order all the lines of an sale order\n"
" * add titles, comment lines, sub total lines\n"
" * draw horizontal lines and put page breaks \n"
"\n"
" "
msgstr ""
"\n"
" Ce module ajoute des options pour améliorer la mise en page des commandes de vente.\n"
"\n"
" Il vous permet :\n"
" * de réordonner toutes les lignes d'une commande\n"
" * d'ajouter des titres, des lignes de remarques, des sous-totaux\n"
" * de tracer des lignes horizontales et de faire des sauts de page \n"
"\n"
" "
#. module: sale_layout
#: field:sale.order.line,layout_type:0
msgid "Layout Type"
msgstr "Mise en page"
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Product"
msgstr "Produit"
#. module: sale_layout
#: view:sale.order:0
msgid "Manual Description"
msgstr "Description manuelle"
#. module: sale_layout
#: view:sale.order:0
msgid "Automatic Declaration"
msgstr "Déclaration automatique"
#. module: sale_layout
#: view:sale.order:0
msgid "Invoice Lines"
msgstr "Lignes de facture"
#. module: sale_layout
#: view:sale.order:0
msgid "Make Invoice"
msgstr "Créer facture"
#. module: sale_layout
#: view:sale.order:0
msgid "Properties"
msgstr "Propriétés"
#. module: sale_layout
#: view:sale.order:0
msgid "UoM"
msgstr "UDM"
#. module: sale_layout
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "XML non valide pour l'architecture de la vue"
#. module: sale_layout
#: view:sale.order:0
#: view:sale.order.line:0
msgid "Seq."
msgstr "Séq."
#. module: sale_layout
#: view:sale.order:0
msgid "Notes"
msgstr "Notes"
#. module: sale_layout
#: view:sale.order:0
msgid "History"
msgstr "Historique"
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Note"
msgstr "Remarque"
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Separator Line"
msgstr "Ligne de séparation"
#. module: sale_layout
#: view:sale.order:0
msgid "Sales order lines"
msgstr "Lignes de commande"
#. module: sale_layout
#: view:sale.order:0
msgid "Qty"
msgstr "Qté"
#. module: sale_layout
#: view:sale.order:0
msgid "States"
msgstr "États"
#. module: sale_layout
#: model:ir.actions.report.xml,name:sale_layout.sale_order_1
msgid "Order with Layout"
msgstr "Commande avec mise en page"
#. module: sale_layout
#: view:sale.order:0
msgid "Extra Info"
msgstr "Info supplémentaires"
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Page Break"
msgstr "Saut de page"
#. module: sale_layout
#: view:sale.order:0
msgid "Order Line"
msgstr "Commande client"
#. module: sale_layout
#: model:ir.module.module,shortdesc:sale_layout.module_name_translation
msgid "sale_layout"
msgstr "sale_layout"
#. module: sale_layout
#: view:sale.order:0
msgid "Stock Moves"
msgstr "Mouvements de stocks"
+276
View File
@@ -0,0 +1,276 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_layout
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.6\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-11-26 08:45:52+0000\n"
"PO-Revision-Date: 2009-11-26 08:45:52+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Sub Total"
msgstr ""
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Title"
msgstr ""
#. module: sale_layout
#: model:ir.module.module,shortdesc:sale_layout.module_meta_information
msgid "sale_layout"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Disc. (%)"
msgstr ""
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Note"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Unit Price"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Order N°"
msgstr ""
#. module: sale_layout
#: field:sale.order,abstract_line_ids:0
msgid "Order Lines"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Disc.(%)"
msgstr ""
#. module: sale_layout
#: field:sale.order.line,layout_type:0
msgid "Layout Type"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
#: view:sale.order.line:0
msgid "Seq."
msgstr ""
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Product"
msgstr ""
#. module: sale_layout
#: model:ir.module.module,description:sale_layout.module_meta_information
msgid "\n"
" This module provides some features to improve the layout of the Sale Order.\n"
"\n"
" It gives you the possibility to\n"
" * order all the lines of an sale order\n"
" * add titles, comment lines, sub total lines\n"
" * draw horizontal lines and put page breaks \n"
"\n"
" "
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Description"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Manual Description"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Our Salesman"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Automatic Declaration"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Invoice Lines"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Quantity"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Quotation N°"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "VAT"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Make Invoice"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Properties"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Invoice address :"
msgstr ""
#. module: sale_layout
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Page Break"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Notes"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Date Ordered"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Shipping address :"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Taxes"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Net Total :"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Tel. :"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Total :"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Payment Terms"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "History"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Sale Order Lines"
msgstr ""
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Separator Line"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Your Reference"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Sales order lines"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Qty"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "States"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "TVA :"
msgstr ""
#. module: sale_layout
#: model:ir.actions.report.xml,name:sale_layout.sale_order_1
msgid "Order with Layout"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Extra Info"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "UoM"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Fax :"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Order Line"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Price"
msgstr ""
#. module: sale_layout
#: rml:sale.order.layout:0
msgid "Taxes :"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Stock Moves"
msgstr ""
+24
View File
@@ -0,0 +1,24 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import report_sale_layout
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+378
View File
@@ -0,0 +1,378 @@
<?xml version="1.0"?>
<document filename="test.pdf">
<template pageSize="(595.0,842.0)" title="Test" author="Martin Simon" allowSplitting="20">
<pageTemplate id="first">
<frame id="first" x1="15.0" y1="42.0" width="539" height="758"/>
</pageTemplate>
</template>
<stylesheet>
<blockTableStyle id="Standard_Outline">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="AddressTable">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="Table1">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="2,0" stop="2,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="2,0" stop="2,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="3,0" stop="3,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
</blockTableStyle>
<blockTableStyle id="OrderTable">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="2,0" stop="2,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="2,0" stop="2,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="3,0" stop="3,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
</blockTableStyle>
<blockTableStyle id="HeadingTable">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="5,-1" stop="5,-1"/>
</blockTableStyle>
<blockTableStyle id="Order_Desc_Table">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="6,-1" stop="6,-1"/>
</blockTableStyle>
<blockTableStyle id="Total_Table">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEABOVE" colorName="#ffffff" start="0,0" stop="0,0"/>
<lineStyle kind="LINEABOVE" colorName="#000000" start="1,0" stop="1,0"/>
<lineStyle kind="LINEABOVE" colorName="#000000" start="2,0" stop="2,0"/>
<lineStyle kind="LINEABOVE" colorName="#000000" start="3,0" stop="3,0"/>
<lineStyle kind="LINEBEFORE" colorName="#ffffff" start="0,1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#ffffff" start="0,2" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#000000" start="1,2" stop="1,2"/>
<lineStyle kind="LINEABOVE" colorName="#000000" start="2,2" stop="2,2"/>
<lineStyle kind="LINEABOVE" colorName="#000000" start="3,2" stop="3,2"/>
</blockTableStyle>
<blockTableStyle id="Partner_Note_Table">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<initialize>
<paraStyle name="all" alignment="justify"/>
</initialize>
<paraStyle name="P1" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P2" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P3" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P4" rightIndent="0.0" leftIndent="14.0" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P5" rightIndent="0.0" leftIndent="11.0" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P6" rightIndent="0.0" leftIndent="-2.0" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P7" rightIndent="0.0" leftIndent="11.0" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="Standard" fontName="Times-Roman"/>
<paraStyle name="Text body" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Heading" fontName="Helvetica" fontSize="8.0" leading="10" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Table Contents" fontName="Times-Roman"/>
<paraStyle name="Table Heading" fontName="Times-Roman" alignment="CENTER"/>
<paraStyle name="Caption" fontName="Times-Roman" fontSize="12.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="Index" fontName="Times-Roman"/>
<paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Bold_8" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Bold_9" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_tblheader_General" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="Footer" fontName="Times-Roman"/>
<paraStyle name="Horizontal Line" fontName="Times-Roman" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/>
<paraStyle name="Heading 9" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_General_Right" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_Details_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_Details_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_Right_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_header_Right" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_header_Centre" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="CENTER" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_address" fontName="Helvetica" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Centre_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Right_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_1" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Right_9_Bold" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Italic" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="Preformatted Text" fontName="Times-Roman" fontSize="10.0" leading="13" spaceBefore="0.0" spaceAfter="0.0"/>
</stylesheet>
<images/>
<story>
<para style="terp_default_8">[[ repeatIn(objects,'o') ]]</para>
<para style="terp_default_8">[[ setLang(o.partner_id.lang) ]]</para>
<blockTable colWidths="265.0,51.0,225.0" style="AddressTable">
<tr>
<td>
<para style="terp_default_Bold_9">Shipping address :</para>
<para style="terp_default_9">[[ o.partner_id.title or '' ]][[ o.partner_id.name ]]</para>
<para style="terp_default_9">[[ o.partner_shipping_id.title or '' ]][[ o.partner_shipping_id.name ]]</para>
<para style="terp_default_9">[[ o.partner_shipping_id.street ]]</para>
<para style="terp_default_9">[[ o.partner_shipping_id.street2 or '' ]]</para>
<para style="terp_default_9">[[ o.partner_shipping_id.city or '' ]] [[ o.partner_shipping_id.zip or '' ]]</para>
<para style="terp_default_9">[[ o.partner_shipping_id.state_id and o.partner_shipping_id.state_id.name or '' ]][[ o.partner_shipping_id.country_id and o.partner_shipping_id.country_id.name or '' ]]</para>
<para style="terp_default_9">
<font color="white"> </font>
</para>
<para style="terp_default_Bold_9">Invoice address :</para>
<para style="terp_default_9">[[ o.partner_invoice_id.street ]][[ o.partner_invoice_id.street2 and (', %s' % o.partner_invoice_id.street2 or '') ]]</para>
<para style="terp_default_9">[[ o.partner_invoice_id.city or '' ]] [[ o.partner_invoice_id.zip or '' ]]</para>
<para style="terp_default_9">[[ o.partner_invoice_id.country_id and ('%s' % (o.partner_invoice_id.country_id and o.partner_invoice_id.country_id.name or '')) ]]</para>
</td>
<td>
<para style="terp_default_8">
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_9">[[ o.partner_id.title or '' ]][[ o.partner_id.name ]]</para>
<para style="terp_default_9">[[ o.partner_order_id.title or '' ]][[ o.partner_order_id.name ]]</para>
<para style="terp_default_9">[[ o.partner_order_id.street ]]</para>
<para style="terp_default_9">[[ o.partner_order_id.street2 or '' ]]</para>
<para style="terp_default_9">[[ o.partner_order_id.city or '' ]] [[ o.partner_order_id.zip or '' ]]</para>
<para style="terp_default_9">[[ o.partner_order_id.state_id and o.partner_order_id.state_id.name or '' ]][[ o.partner_order_id.country_id and o.partner_order_id.country_id.name or '' ]]</para>
<para style="terp_default_9">
<font color="white"> </font>
</para>
<para style="terp_default_9">Tel. : [[ o.partner_order_id.phone or removeParentNode('para') ]]</para>
<para style="terp_default_9">Fax : [[ o.partner_order_id.fax or removeParentNode('para') ]]</para>
<para style="terp_default_9">TVA : [[ o.partner_id.vat or removeParentNode('para') ]]</para>
<para style="terp_default_9">
<font color="white"> </font>
</para>
</td>
</tr>
</blockTable>
<para style="terp_default_8">
<font color="white"> </font>
</para>
<para style="terp_header">[[ o.state&lt;&gt;'draft' and removeParentNode('para') ]] Quotation N° [[ o.name ]]</para>
<para style="terp_header">[[ o.state=='draft' and removeParentNode('para') ]] Order N° [[ o.name ]]</para>
<para style="terp_default_8">
<font color="white"> </font>
</para>
<blockTable colWidths="132.0,134.0,135.0,135.0" style="Table1">
<tr>
<td>
<para style="terp_tblheader_General_Centre">Your Reference </para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Date Ordered </para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Our Salesman </para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Payment Terms</para>
</td>
</tr>
</blockTable>
<blockTable colWidths="132.0,134.0,135.0,135.0" style="OrderTable">
<tr>
<td>
<para style="terp_default_Centre_8">[[ o.name ]]</para>
</td>
<td>
<para style="terp_default_Centre_8">[[ o.date_order ]]</para>
</td>
<td>
<para style="terp_default_Centre_8">[[ o.user_id.name ]]</para>
</td>
<td>
<para style="terp_default_Centre_8">[[ o.payment_term.name ]]</para>
</td>
</tr>
</blockTable>
<para style="terp_default_8">
<font color="white"> </font>
</para>
<blockTable colWidths="208.0,99.0,64.0,59.0,43.0,65.0" repeatRows="1" style="HeadingTable">
<tr>
<td>
<para style="terp_tblheader_Details">Description</para>
</td>
<td>
<para style="terp_tblheader_Details_Centre">VAT</para>
</td>
<td>
<para style="terp_tblheader_Details_Centre">Quantity</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Unit Price</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Disc.(%)</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Price</para>
</td>
</tr>
</blockTable>
<section>
<para style="terp_default_1">[[ repeatIn(o.order_line,'line') ]]</para>
<blockTable colWidths="207.0,99.0,43.0,21.0,59.0,43.0,65.0" style="Order_Desc_Table">
<tr>
<td>
<para style="terp_default_9">[[ line.name ]]</para>
</td>
<td>
<para style="terp_default_Centre_9">[[ ', '.join(map(lambda x: x.name, line.tax_id)) or '0.00' ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ line.product_uos and line.product_uos_qty or line.product_uom_qty or '0.00']]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ line.product_uos and line.product_uos.name or line.product_uom.name ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ line.price_unit or '0.00' ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ line.discount and str(line.discount) or '0.00' ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ line.price_subtotal or '0.00' ]]</para>
</td>
</tr>
<tr>
<td>
<para style="P7">[[ format(line.notes or removeParentNode('tr')) ]]</para>
</td>
<td>
<para style="terp_default_Centre_9">
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_Right_9">
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_Right_9">
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_Right_9">
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_Right_9">
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_Right_9">
<font color="white"> </font>
</para>
</td>
</tr>
</blockTable>
</section>
<blockTable colWidths="384.0,67.0,64.0,22.0" style="Total_Table">
<tr>
<td>
<para style="terp_default_9">
<font color="white"> </font>
</para>
</td>
<td>
<para style="P6">Net Total :</para>
</td>
<td>
<para style="terp_default_Right_9">[[ o.amount_untaxed or '0.00' ]]</para>
</td>
<td>
<para style="P2">[[ o.pricelist_id.currency_id.name ]]</para>
</td>
</tr>
<tr>
<td>
<para style="terp_default_9">
<font color="white"> </font>
</para>
</td>
<td>
<para style="P5">Taxes :</para>
</td>
<td>
<para style="terp_default_Right_9">[[ o.amount_tax or '0.00' ]]</para>
</td>
<td>
<para style="P2">[[ o.pricelist_id.currency_id.name ]]</para>
</td>
</tr>
<tr>
<td>
<para style="terp_default_9">
<font color="white"> </font>
</para>
</td>
<td>
<para style="P4">Total :</para>
</td>
<td>
<para style="terp_default_Right_9_Bold">[[ o.amount_total or '0.00' ]] </para>
</td>
<td>
<para style="P3">[[ o.pricelist_id.currency_id.name ]]</para>
</td>
</tr>
</blockTable>
<para style="terp_default_8">
<font color="white"> </font>
</para>
<blockTable colWidths="533.0" style="Partner_Note_Table">
<tr>
<td>
<para style="terp_default_9">[[ format(o.note or '') ]]</para>
</td>
</tr>
<tr>
<td>
<para style="terp_default_9">[[ format((o.partner_id.property_payment_term and o.partner_id.property_payment_term.note) or '') ]]</para>
</td>
</tr>
</blockTable>
<para style="P1">
<font color="white"> </font>
</para>
</story>
</document>
+140
View File
@@ -0,0 +1,140 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import time
import pooler
from report import report_sxw
rml_parents = {
'tr':1,
'li':1,
'story': 0,
'section': 0
}
class sale_order_1(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
super(sale_order_1, self).__init__(cr, uid, name, context)
self.localcontext.update({
'time': time,
'sale_order_lines': self.sale_order_lines,
# 'repeat_In':self.repeat_In,
})
self.context = context
#
def sale_order_lines(self,sale_order):
result =[]
sub_total={}
info=[]
order_lines=[]
res={}
list_in_seq=[]
ids = self.pool.get('sale.order.line').search(self.cr, self.uid, [('order_id', '=', sale_order.id)])
for id in range(0,len(ids)):
order = self.pool.get('sale.order.line').browse(self.cr, self.uid,ids[id], self.context.copy())
order_lines.append(order)
i=1
j=0
sum_flag={}
sum_flag[j]=-1
for entry in order_lines:
res={}
if entry.layout_type=='article':
res['tax_id']=', '.join(map(lambda x: x.name, entry.tax_id)) or ''
res['name']=entry.name
res['product_uom_qty']="%.2f"%(entry.product_uos and entry.product_uos_qty or entry.product_uom_qty or 0.00)
res['product_uom']=entry.product_uos and entry.product_uos.name or entry.product_uom.name
res['price_unit']="%.2f"%(entry.price_unit or 0.00)
res['discount']="%.2f"%(entry.discount and entry.discount or 0.00)
res['price_subtotal']="%.2f"%(entry.price_subtotal and entry.price_subtotal or 0.00)
sub_total[i]= entry.price_subtotal and entry.price_subtotal
i=i+1
res['note']=entry.notes or ''
res['currency']=sale_order.pricelist_id.currency_id.name
res['layout_type']=entry.layout_type
else:
res['product_uom_qty']=''
res['price_unit']=''
res['discount']=''
res['tax_id']=''
res['layout_type']=entry.layout_type
res['note']=entry.notes or ''
res['product_uom']=''
if entry.layout_type=='subtotal':
res['name']=entry.name
sum=0
sum_id=0
if sum_flag[j]==-1:
temp=1
else:
temp=sum_flag[j]
for sum_id in range(temp,len(sub_total)+1):
sum+=sub_total[sum_id]
sum_flag[j+1]= sum_id +1
j=j+1
res['price_subtotal']="%.2f"%(sum)
res['currency']=sale_order.pricelist_id.currency_id.name
res['quantity']=''
res['price_unit']=''
res['discount']=''
res['tax_id']=''
res['product_uom']=''
elif entry.layout_type=='title':
res['name']=entry.name
res['price_subtotal']=''
res['currency']=''
elif entry.layout_type=='text':
res['name']=entry.name
res['price_subtotal']=''
res['currency']=''
elif entry.layout_type=='line':
res['product_uom_qty']='__________'
res['price_unit']='______________'
res['discount']='___________'
res['tax_id']='_________________'
res['product_uom']='_____'
res['name']='_______________________________________'
res['price_subtotal']='_________'
res['currency']='_______'
elif entry.layout_type=='break':
res['layout_type']=entry.layout_type
res['name']=entry.name
res['price_subtotal']=''
res['currency']=''
else:
res['name']=entry.name
res['price_subtotal']=''
res['currency']=sale_order.pricelist_id.currency_id.name
result.append(res)
return result
report_sxw.report_sxw('report.sale.order.layout', 'sale.order', 'addons/sale_layout/report/report_sale_layout.rml', parser=sale_order_1)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+352
View File
@@ -0,0 +1,352 @@
<?xml version="1.0"?>
<document filename="test.pdf">
<template pageSize="(595.0,842.0)" title="Test" author="Martin Simon" allowSplitting="20">
<pageTemplate id="first">
<frame id="first" x1="34.0" y1="28.0" width="527" height="786"/>
</pageTemplate>
</template>
<stylesheet>
<blockTableStyle id="Standard_Outline">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="Tableau2">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="Table5">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="2,0" stop="2,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="2,0" stop="2,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="3,0" stop="3,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
</blockTableStyle>
<blockTableStyle id="Table6">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="2,0" stop="2,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="2,0" stop="2,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="3,0" stop="3,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
</blockTableStyle>
<blockTableStyle id="Table7">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="5,-1" stop="5,-1"/>
</blockTableStyle>
<blockTableStyle id="Table1">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="Table2">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="Table3">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="Table4">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="5,-1" stop="5,-1"/>
</blockTableStyle>
<blockTableStyle id="Table8">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEABOVE" colorName="#ffffff" start="0,0" stop="0,0"/>
<lineStyle kind="LINEABOVE" colorName="#000000" start="1,0" stop="1,0"/>
<lineStyle kind="LINEABOVE" colorName="#000000" start="2,0" stop="2,0"/>
<lineStyle kind="LINEABOVE" colorName="#000000" start="3,0" stop="3,0"/>
<lineStyle kind="LINEBEFORE" colorName="#ffffff" start="0,1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#ffffff" start="0,2" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#000000" start="1,2" stop="1,2"/>
<lineStyle kind="LINEABOVE" colorName="#000000" start="2,2" stop="2,2"/>
<lineStyle kind="LINEABOVE" colorName="#000000" start="3,2" stop="3,2"/>
</blockTableStyle>
<initialize>
<paraStyle name="all" alignment="justify"/>
</initialize>
<paraStyle name="P1" rightIndent="0.0" leftIndent="14.0" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P2" rightIndent="0.0" leftIndent="-2.0" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P3" rightIndent="0.0" leftIndent="11.0" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P4" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P5" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P6" fontName="Helvetica" fontSize="5.0" leading="7" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P7" fontName="Helvetica"/>
<paraStyle name="P8" fontName="Helvetica" fontSize="9.0" leading="13" alignment="LEFT"/>
<paraStyle name="P9" fontName="Helvetica-Bold" fontSize="20.0" leading="25" alignment="LEFT"/>
<paraStyle name="P10" fontName="Helvetica-BoldOblique" fontSize="20.0" leading="25" alignment="LEFT"/>
<paraStyle name="P11" fontName="Helvetica" fontSize="11.0" leading="14"/>
<paraStyle name="P12" fontName="Helvetica" fontSize="11.0" leading="14"/>
<paraStyle name="P13" fontName="Helvetica" fontSize="11.0" leading="14" alignment="LEFT"/>
<paraStyle name="P14" fontName="Helvetica-BoldOblique" fontSize="6.0" leading="8" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P15" fontName="Helvetica-BoldOblique" fontSize="14.0" leading="17" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P16" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P17" fontName="Helvetica" alignment="LEFT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P18" fontName="Helvetica-BoldOblique" fontSize="11.0" leading="14" alignment="LEFT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P19" fontName="Helvetica-BoldOblique" fontSize="11.0" leading="14" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P20" fontName="Helvetica" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P21" fontName="Helvetica" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P22" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P23" fontName="Helvetica" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P24" fontName="Helvetica-Bold" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P25" fontName="Helvetica-Bold" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="P26" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P27" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P28" rightIndent="0.0" leftIndent="-2.0" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P29" rightIndent="0.0" leftIndent="11.0" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P30" rightIndent="0.0" leftIndent="14.0" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P31" fontName="Helvetica-Bold" fontSize="9.0" leading="13" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="P32" fontName="Helvetica-Bold" fontSize="5.0" leading="7" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P33" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P34" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="Standard" fontName="Helvetica"/>
<paraStyle name="Text body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Table Contents" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Table Heading" fontName="Helvetica" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Caption" fontName="Helvetica" fontSize="10.0" leading="13" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="Index" fontName="Helvetica"/>
<paraStyle name="Heading" fontName="Helvetica" fontSize="8.0" leading="10" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Bold_8" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Bold_9" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_tblheader_General" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_Details_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_Details_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_1" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Centre_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Right_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Right_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Italic" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Right_9_Bold" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
</stylesheet>
<images/>
<story>
<para style="terp_default_8">[[repeatIn(objects,'o')]]</para>
<para style="P14">[[ setLang(o.partner_id.lang) ]]</para>
<para style="P8">
<font color="white"> </font>
</para>
<blockTable colWidths="254.0,62.0,211.0" style="Tableau2">
<tr>
<td>
<para style="terp_default_Bold_9">Shipping address :</para>
<para style="terp_default_9">[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]]</para>
<para style="terp_default_9">[[ o.partner_shipping_id.title or '' ]] [[ o.partner_shipping_id.name ]]</para>
<para style="terp_default_9">[[ o.partner_shipping_id.street ]]</para>
<para style="terp_default_9">[[ o.partner_shipping_id.street2 or '' ]]</para>
<para style="terp_default_9">[[ o.partner_shipping_id.city or '' ]] [[ o.partner_shipping_id.zip or '' ]]</para>
<para style="terp_default_9">[[ o.partner_shipping_id.state_id and o.partner_shipping_id.state_id.name or '' ]] [[ o.partner_shipping_id.country_id and o.partner_shipping_id.country_id.name or '' ]]</para>
<para style="terp_default_9">
<font color="white"> </font>
</para>
<para style="terp_default_Bold_9">Invoice address :</para>
<para style="terp_default_9">[[ o.partner_invoice_id.street ]] [[ o.partner_invoice_id.street2 and (', %s' % o.partner_invoice_id.street2 or '') ]]</para>
<para style="P27">[[ o.partner_invoice_id.zip or '' ]] [[ o.partner_invoice_id.city or '' ]] [[ o.partner_invoice_id.country_id and (', %s' % (o.partner_invoice_id.country_id and o.partner_invoice_id.country_id.name or '')) ]]</para>
</td>
<td>
<para style="P17">
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_9">[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]]</para>
<para style="terp_default_9">[[ o.partner_order_id.title or '' ]] [[ o.partner_order_id.name ]]</para>
<para style="terp_default_9">[[ o.partner_order_id.street ]]</para>
<para style="terp_default_9">[[ o.partner_order_id.street2 or '' ]]</para>
<para style="terp_default_9">[[ o.partner_order_id.zip or '' ]] [[ o.partner_order_id.city or '' ]]</para>
<para style="terp_default_9">[[ o.partner_order_id.state_id and o.partner_order_id.state_id.name or '' ]] [[ o.partner_order_id.country_id and o.partner_order_id.country_id.name or '' ]]</para>
<para style="terp_default_9">
<font color="white"> </font>
</para>
<para style="terp_default_9">Tel. : [[ o.partner_order_id.phone or removeParentNode('para') ]]</para>
<para style="terp_default_9">Fax : [[ o.partner_order_id.fax or removeParentNode('para') ]]</para>
<para style="terp_default_9">TVA : [[ o.partner_id.vat or removeParentNode('para') ]]</para>
<para style="P26">
<font color="white"> </font>
</para>
</td>
</tr>
</blockTable>
<para style="P8">
<font color="white"> </font>
</para>
<para style="terp_header">[[ o.state&lt;&gt;'draft' and removeParentNode('para') ]] Quotation N° [[ o.name ]]</para>
<para style="terp_header">[[ o.state=='draft' and removeParentNode('para') ]] Order N° [[ o.name ]]</para>
<para style="P15">
<font color="white"> </font>
</para>
<blockTable colWidths="132.0,134.0,135.0,135.0" style="Table5">
<tr>
<td>
<para style="terp_tblheader_General_Centre">Your Reference </para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Date Ordered </para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Our Salesman </para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Payment Terms</para>
</td>
</tr>
</blockTable>
<blockTable colWidths="132.0,134.0,135.0,135.0" style="Table6">
<tr>
<td>
<para style="terp_default_Centre_8">[[ o.name ]]</para>
</td>
<td>
<para style="terp_default_Centre_8">[[ o.date_order ]]</para>
</td>
<td>
<para style="terp_default_Centre_8">[[ o.user_id.name ]]</para>
</td>
<td>
<para style="terp_default_Centre_8">[[ o.payment_term.name ]]</para>
</td>
</tr>
</blockTable>
<para style="P7">
<font color="white"> </font>
</para>
<blockTable colWidths="216.0,62.0,62.0,62.0,51.0,74.0" style="Table7">
<tr>
<td>
<para style="terp_tblheader_Details">Description</para>
</td>
<td>
<para style="terp_tblheader_Details_Centre">VAT</para>
</td>
<td>
<para style="terp_tblheader_Details_Centre">Quantity</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Unit Price</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Disc.(%)</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Price</para>
</td>
</tr>
</blockTable>
<section>
<para style="P32">[[ repeatIn(sale_order_lines(o),'a') ]]</para>
<blockTable colWidths="0.0,216.0,66,46,24,66,55,54" style="Table1">
<tr>
<td>
<para style="P8">[[ a['layout_type']=='text' and removeParentNode('blockTable')]]</para>
</td>
<td>
<para style="Table Contents"><font>[[ (a['layout_type']=='title' or a['layout_type']=='subtotal') and ( setTag('para','para',{'fontName':'Helvetica-bold'})) or removeParentNode('font') ]]</font>[[ a['name'] ]]</para>
</td>
<td>
<para style="Table Contents"><font>[[ a['layout_type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-Bold'})) or removeParentNode('font') ]]</font><font>[[ a['tax_id'] ]]</font></para>
</td>
<td>
<para style="Table Contents"><font>[[ a['layout_type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-Bold'})) or removeParentNode('font') ]]</font><font>[[ a['product_uom_qty'] ]]</font></para>
</td>
<td>
<para style="Table Contents"><font>[[ a['layout_type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-Bold'})) or removeParentNode('font') ]]</font><font>[[ a['product_uom'] ]]</font></para>
</td>
<td>
<para style="Table Contents"><font>[[ a['layout_type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-Bold'})) or removeParentNode('font') ]] </font><font>[[ a['price_unit'] ]]</font></para>
</td>
<td>
<para style="Table Contents"><font>[[ a['layout_type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-Bold'})) or removeParentNode('font') ]]</font><font>[[ a['discount'] ]]</font></para>
</td>
<td>
<para style="Table Contents"><font>[[ a['layout_type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-Bold'})) or removeParentNode('font') ]]</font><font>[[ a['price_subtotal'] ]]</font></para>
</td>
</tr>
</blockTable>
<blockTable colWidths="453.0,74.0" style="Table2">
<tr>
<td>
<para style="P7">[[ a['layout_type']=='text' and a['name'] or removeParentNode('blockTable') ]]</para>
</td>
<td>
<para style="P7"></para>
</td>
</tr>
</blockTable>
<blockTable colWidths="66.0,461.0" style="Table3">
<tr>
<td>
<para style="P7"><font>[[ a['note']=='' and removeParentNode('blockTable') ]]</font><font>[[ repeatIn(( a['note'] and a['note'].splitlines()) or [], 'note') ]]</font></para>
</td>
<td>
<para style="P7">[[ a['note'] and note or removeParentNode('blockTable') ]]</para>
</td>
</tr>
</blockTable>
<pageBreak>[[ a['layout_type']!='break' and removeParentNode('pageBreak')]]</pageBreak>
<blockTable colWidths="216.0,62.0,62.0,62.0,51.0,74.0" style="Table4">
<tr>
<td>
<para style="P31">Description [[ a['layout_type']!='break' and removeParentNode('blockTable')]]</para>
</td>
<td>
<para style="P31">Taxes</para>
</td>
<td>
<para style="P31">Quantity</para>
</td>
<td>
<para style="P31">Unit Price</para>
</td>
<td>
<para style="P31">Disc. (%)</para>
</td>
<td>
<para style="P31">Price</para>
</td>
</tr>
</blockTable>
</section>
</story>
</document>
+160
View File
@@ -0,0 +1,160 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2008 Tiny SPRL (<http://tiny.be>). All Rights Reserved
# $Id$
#
# 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/>.
#
##############################################################################
from osv import fields,osv
from tools import config
import decimal_precision as dp
from tools.translate import _
class sale_order_line(osv.osv):
def _amount_line(self, cr, uid, ids, field_name, arg, context=None):
tax_obj = self.pool.get('account.tax')
cur_obj = self.pool.get('res.currency')
res = {}
context = context or {}
for line in self.browse(cr, uid, ids, context=context):
if line.layout_type=='article':
return super(sale_order_line, self)._amount_line(cr, uid, ids, field_name, arg, context)
return res
def invoice_line_create(self, cr, uid, ids, context={}):
new_ids = []
list_seq = []
for line in self.browse(cr, uid, ids, context):
if line.layout_type == 'article':
new_ids.append(line.id)
list_seq.append(line.sequence)
invoice_line_ids = super(sale_order_line, self).invoice_line_create(cr, uid, new_ids, context)
pool_inv_line = self.pool.get('account.invoice.line')
seq = 0
for obj_inv_line in pool_inv_line.browse(cr, uid, invoice_line_ids, context=context):
pool_inv_line.write(cr, uid, [obj_inv_line.id], {'sequence': list_seq[seq]}, context=context)
seq += 1
return invoice_line_ids
def onchange_sale_order_line_view(self, cr, uid, id, type, context={}, *args):
temp ={}
temp['value']= {}
if (not type):
return {}
if type != 'article':
temp = {'value': {
'product_id': False,
'uos_id': False,
'account_id': False,
'price_unit': 0.0,
'price_subtotal': 0.0,
'quantity': 0,
'discount': 0.0,
'invoice_line_tax_id': False,
'account_analytic_id': False,
'product_uom_qty':0.0,
},
}
if type == 'line':
temp['value']['name'] = ' '
if type == 'break':
temp['value']['name'] = ' '
if type == 'subtotal':
temp['value']['name'] = 'Sub Total'
return temp
return {}
def create(self, cr, user, vals, context=None):
if vals.has_key('layout_type'):
if vals['layout_type'] == 'line':
vals['name'] = ' '
if vals['layout_type'] == 'break':
vals['name'] = ' '
if vals['layout_type'] != 'article':
vals['product_uom_qty']= 0
return super(sale_order_line, self).create(cr, user, vals, context)
def write(self, cr, user, ids, vals, context=None):
if vals.has_key('layout_type'):
if vals['layout_type'] == 'line':
vals['name'] = ' '
if vals['layout_type'] == 'break':
vals['name'] = ' '
return super(sale_order_line, self).write(cr, user, ids, vals, context)
def copy(self, cr, uid, id, default=None, context=None):
if default is None:
default = {}
default['layout_type'] = self.browse(cr, uid, id).layout_type
return super(sale_order_line, self).copy(cr, uid, id, default, context)
_name = "sale.order.line"
_order = "order_id, sequence asc"
_description = "Sale Order line"
_inherit = "sale.order.line"
_columns = {
'layout_type': fields.selection([
('article','Product'),
('title','Title'),
('text','Note'),
('subtotal','Sub Total'),
('line','Separator Line'),
('break','Page Break'),]
,'Layout Type', select=True, required=True),
'sequence': fields.integer('Sequence Number'),
'price_unit': fields.float('Unit Price', required=True, digits_compute= dp.get_precision('Sale Price'), readonly=True, states={'draft':[('readonly',False)]}),
'product_uom_qty': fields.float('Quantity (UoM)', digits=(16,2)),
'product_uom': fields.many2one('product.uom', 'Product UoM'),
}
_defaults = {
'layout_type': lambda *a: 'article',
}
sale_order_line()
class one2many_mod2(fields.one2many):
def get(self, cr, obj, ids, name, user=None, offset=0, context=None, values=None):
if not context:
context = {}
if not values:
values = {}
res = {}
for id in ids:
res[id] = []
ids2 = obj.pool.get(self._obj).search(cr, user, [(self._fields_id,'in',ids),('layout_type','=','article')], limit=self._limit)
for r in obj.pool.get(self._obj)._read_flat(cr, user, ids2, [self._fields_id], context=context, load='_classic_write'):
res[r[self._fields_id]].append( r['id'] )
return res
class sale_order(osv.osv):
def copy(self, cr, uid, id, default=None, context=None):
if default is None:
default = {}
default['order_line'] = False
return super(sale_order, self).copy(cr, uid, id, default, context)
_inherit = "sale.order"
_columns = {
'abstract_line_ids': fields.one2many('sale.order.line', 'order_id', 'Order Lines',readonly=True, states={'draft':[('readonly',False)]}),
'order_line': one2many_mod2('sale.order.line', 'order_id', 'Order Lines',readonly=True, states={'draft':[('readonly',False)]}),
}
sale_order()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+12
View File
@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<openerp>
<data>
<report id="sale_order_1"
string="Order with Layout"
model="sale.order"
name="sale.order.layout"
rml="sale_layout/report/report_sale_layout.rml"
auto="False"/>
</data>
</openerp>
+117
View File
@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="view_order_line_form2_inherit_1">
<field name="name">sale.order.line.form2.inherit_1</field>
<field name="model">sale.order.line</field>
<field name="inherit_id" ref="sale.view_order_line_form2"/>
<field name="type">form</field>
<field name="arch" type="xml">
<xpath expr="/form/notebook/page/field[@name='name']" position="before">
<field name="layout_type" select="1" on_change="onchange_sale_order_line_view(layout_type)" />
<field name="sequence"/>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="view_order_line_tree_inherit_1">
<field name="name">sale.order.line.tree.inherit_1</field>
<field name="model">sale.order.line</field>
<field name="inherit_id" ref="sale.view_order_line_tree"/>
<field name="type">tree</field>
<field name="arch" type="xml">
<xpath expr="/tree/field[@name='name']" position="before">
<field name="sequence" string="Seq."/>
<field name="layout_type"/>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="view_order_form_inherit_1">
<field name="name">sale.order.form.inherit_1</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
<xpath expr="/form/notebook/page/field[@name='order_line']" position="replace">
<field name="abstract_line_ids" colspan="4" nolabel="1" widget="one2many_list">
<form string="Sale Order Lines">
<notebook>
<page string="Order Line">
<separator colspan="4" string="Automatic Declaration"/>
<field colspan="4"
context="partner_id=parent.partner_id,quantity=product_uom_qty,pricelist=parent.pricelist_id,shop=parent.shop_id,uom=product_uom"
name="product_id"
attrs="{'readonly':[('layout_type','!=','article')]}"
on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], True, parent.date_order, product_packaging, parent.fiscal_position)"
select="1"/>
<field
context="partner_id=parent.partner_id,quantity=product_uom_qty,pricelist=parent.pricelist_id,shop=parent.shop_id,uom=product_uom"
name="product_uom_qty"
attrs="{'readonly':[('layout_type','!=','article')]}"
on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], False, parent.date_order, product_packaging, parent.fiscal_position)"
select="1"/>
<field name="product_uom"
required="0"
attrs="{'readonly':[('layout_type','!=','article')], 'required':[('layout_type','not in',['title','text','subtotal','line','break'])]}"
on_change="product_uom_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], False, parent.date_order)"/>
<field
name="product_packaging"
attrs="{'readonly':[('layout_type','!=','article')]}"
context="partner_id=parent.partner_id,quantity=product_uom_qty,pricelist=parent.pricelist_id,shop=parent.shop_id,uom=product_uom"
on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], False, parent.date_order, product_packaging, parent.fiscal_position)"
domain="[('product_id','=',product_id)]"
groups="base.group_extended"/>
<separator colspan="4" string="Manual Description" />
<field name="layout_type" on_change="onchange_sale_order_line_view(layout_type)"/>
<field name="sequence" string="Seq."/>
<field colspan="4" name="name" select="2" attrs="{'readonly':[('layout_type','in',('line','break'))] }"/>
<field name="price_unit" select="2" attrs="{'readonly':[('layout_type','!=','article')],'required':[('layout_type','not in',['title','text','subtotal','line','break'])]}"/>
<field name="discount" attrs="{'readonly':[('layout_type','!=','article')]}"/>
<field name="type" attrs="{'readonly':[('layout_type','!=','article')]}"/>
<field name="delay" select="2" attrs="{'readonly':[('layout_type','!=','article')]}"/>
<field colspan="4" name="tax_id" domain="[('parent_id','=',False)]" attrs="{'readonly':[('layout_type','!=','article')]}"/>
<separator colspan="4" string="States"/>
<field name="state" select="2"/>
<group col="3" colspan="2">
<field name="invoiced" select="2"/>
<button colspan="1" name="%(sale.action_view_sale_order_line_make_invoice)d" states="confirmed" string="Make Invoice" type="action"/>
</group>
</page>
<page groups="base.group_extended" string="Extra Info">
<field groups="product.group_uos" name="product_uos_qty" on_change="uos_change(product_uos, product_uos_qty, product_id)"/>
<field groups="product.group_uos" name="product_uos"/>
<field name="address_allotment_id" select="2"/>
<separator colspan="4" string="Properties"/>
<field colspan="4" name="property_ids" nolabel="1"/>
</page>
<page string="Notes">
<field colspan="4" name="notes" nolabel="1"/>
</page>
<page string="History" groups="base.group_extended">
<separator colspan="4" string="Invoice Lines"/>
<field colspan="4" name="invoice_lines" nolabel="1"/>
<separator colspan="4" string="Stock Moves"/>
<field colspan="4" name="move_ids" nolabel="1" widget="many2many"/>
</page>
</notebook>
</form>
<tree string="Sales order lines">
<field colspan="4" name="name"/>
<field name="product_uom_qty" string="Qty"/>
<field name="product_uom" string="UoM"/>
<field name="discount"/>
<field name="price_unit"/>
<!-- field name="price_net"/-->
<field name="price_subtotal"/>
<field name="sequence"/>
</tree>
</field>
</xpath>
</field>
</record>
</data>
</openerp>
+5 -5
View File
@@ -604,7 +604,7 @@
<field name="invoice_state"/>
<field name="stock_journal_id" groups="base.group_extended" widget="selection"/>
<field name="state"/>
<button name="%(action_partial_picking)d" states="assigned" string="Validate" type="action" icon="gtk-go-forward" help="Validate Picking"/>
<button name="%(action_partial_picking)d" states="assigned" string="Approve" type="action" icon="gtk-go-forward" help="Approve Picking"/>
<button name="button_cancel" states="assigned,confirmed,draft" string="Cancel" icon="gtk-cancel" help="Cancel" confirm="This operation will cancel the picking. Do you want to continue?"/>
</tree>
</field>
@@ -714,7 +714,7 @@
<button name="draft_validate" states="draft" string="Process Now" type="object" icon="gtk-media-play"/>
<button name="action_assign" states="confirmed" string="Check Availability" type="object" icon="gtk-find"/>
<button name="force_assign" states="confirmed" string="Force Availability" type="object" icon="gtk-jump-to"/>
<button name="%(action_partial_picking)d" states="assigned" string="Validate" type="action" icon="gtk-apply"/>
<button name="%(action_partial_picking)d" states="assigned" string="Approve" type="action" icon="gtk-apply"/>
<button name="button_cancel" states="assigned,confirmed,draft" string="Cancel" icon="gtk-cancel"/>
</group>
</page>
@@ -774,7 +774,7 @@
<field name="min_date"/>
<field name="stock_journal_id" groups="base.group_extended" widget="selection"/>
<field name="state"/>
<button name="%(action_partial_picking)d" states="assigned" string="Validate" type="action" icon="gtk-go-forward" help="Validate Delivery"/>
<button name="%(action_partial_picking)d" states="assigned" string="Approve" type="action" icon="gtk-go-forward" help="Approve Delivery"/>
<button name="button_cancel" states="assigned,confirmed,draft" string="Cancel" icon="gtk-cancel" help="Cancel" confirm="This operation will cancel the delivery. Do you want to continue?"/>
</tree>
</field>
@@ -978,7 +978,7 @@
<field name="invoice_state"/>
<field name="stock_journal_id" groups="base.group_extended" widget="selection"/>
<field name="state"/>
<button name="%(action_partial_picking)d" states="assigned" string="Validate" type="action" icon="gtk-go-forward" help="Validate Picking"/>
<button name="%(action_partial_picking)d" states="assigned" string="Approve" type="action" icon="gtk-go-forward" help="Approve Picking"/>
</tree>
</field>
</record>
@@ -1175,7 +1175,7 @@
<field name="invoice_state" groups="base.group_extended"/>
<field name="stock_journal_id" groups="base.group_extended" widget="selection"/>
<field name="state"/>
<button name="%(action_partial_picking)d" states="assigned" string="Validate" type="action" icon="gtk-ok" help="Receive products"/>
<button name="%(action_partial_picking)d" states="assigned" string="Approve" type="action" icon="gtk-ok" help="Receive products"/>
<button name="button_cancel" states="assigned,confirmed,draft" string="Cancel" icon="gtk-cancel" help="Cancel" confirm="This operation will cancel the shipment. Do you want to continue?" />
</tree>
</field>
@@ -153,7 +153,7 @@
<field name="product_qty" />
<field name="state"/>
<label string = ""/>
<button name="action_validate" icon="gtk-apply" string="Validate" states="draft" type="object" colspan = "1"/>
<button name="action_validate" icon="gtk-apply" string="Approve" states="draft" type="object" colspan = "1"/>
</group>
</group>