Modification of l10n_ch as asked by P. Christeas (xrg).
This includes, fixes in account type report_type. Coding standard respect (regex, xml, comment etc.) Suppression of line2bank overriding Suppression of field bvr_number that is exactly the same data of post_number Better demo data in order to have main company linked to a bank account that will allows BVR printing testing Escaping of entity in bvr report Fixing v11 bugs bzr revid: nicolas.bessi@camptocamp.com-20110209085905-hkzt1asp70dav0p2
This commit is contained in:
parent
771a33d4a3
commit
f4c5c1882d
|
@ -28,6 +28,5 @@ import wizard
|
|||
import payment
|
||||
import report
|
||||
import bank
|
||||
import account_move_line
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
##############################################################################
|
||||
|
||||
{
|
||||
"name" : "Switzerland localization with 2011 taxes Beta 1",
|
||||
"name" : "Switzerland - localization with 2011 taxes",
|
||||
"description" : """
|
||||
Swiss localisation :
|
||||
- DTA generation for a lot of payment types
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
import tools
|
||||
from osv import osv
|
||||
import addons
|
||||
import os
|
||||
|
||||
class WizardMultiChartsAccounts(osv.osv_memory):
|
||||
|
||||
|
@ -35,7 +36,7 @@ class WizardMultiChartsAccounts(osv.osv_memory):
|
|||
def execute(self, cr, uid, ids, context=None):
|
||||
"""Override of code in order to be able to link journal with account in XML"""
|
||||
res = super(WizardMultiChartsAccounts, self).execute(cr, uid, ids, context)
|
||||
path = addons.get_module_resource('l10n_ch/sterchi_chart/account_journal_rel.xml')
|
||||
path = addons.get_module_resource(os.path.join('l10n_ch','sterchi_chart','account_journal_rel.xml'))
|
||||
tools.convert_xml_import(cr, 'l10n_ch', path, idref=None, mode='init', noupdate=True, report=None)
|
||||
return res
|
||||
|
||||
|
|
|
@ -27,13 +27,12 @@ class res_company(osv.osv):
|
|||
_inherit = "res.company"
|
||||
|
||||
_columns = {
|
||||
### horiz. delta in mm 1.2 will print the bvz 1.2mm lefter
|
||||
'bvr_delta_horz': fields.float('BVR Horz. Delta (mm)',
|
||||
help='horiz. delta in mm 1.2 will print the bvz 1.2mm lefter'),
|
||||
### vert. delta in mm 1.2 will print the bvz 1.2mm lefter
|
||||
help='horiz. delta in mm 1.2 will print the bvr 1.2mm lefter, negative value is possible'),
|
||||
|
||||
'bvr_delta_vert': fields.float('BVR Vert. Delta (mm)',
|
||||
help='vert. delta in mm 1.2 will print the bvz 1.2mm lefter'),
|
||||
### print bvr background image for standard paper or e-mail
|
||||
help='vert. delta in mm 1.2 will print the bvr 1.2mm lower, negative value is possible'),
|
||||
|
||||
'bvr_background': fields.boolean('Insert BVR background ?'),
|
||||
|
||||
'bvr_only': fields.boolean('Separated BVR only ?',
|
||||
|
|
|
@ -1,5 +1,23 @@
|
|||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
<record model="res.bank" id="main_bank">
|
||||
<field name="name">Main Partner Bank</field>
|
||||
<field name="clearing">234567</field>
|
||||
</record>
|
||||
|
||||
<record model="res.partner.bank" id="main_partner_bank">
|
||||
<field name="name">OpenERP BVR Account</field>
|
||||
<field name="acc_number">11-1234-1</field>
|
||||
<field name="partner_id" ref="base.main_partner"/>
|
||||
<field name="state">bvrbank</field>
|
||||
<field name="post_number">11-1234-1</field>
|
||||
<field name="bank" ref="main_bank"/>
|
||||
<field name="iban">CH9100767000S00023455</field>
|
||||
<field name="bvr_adherent_num">0000000</field>
|
||||
|
||||
|
||||
</record>
|
||||
|
||||
<record id="bank" model="res.partner">
|
||||
<field name="comment">My bank !</field>
|
||||
|
@ -7,6 +25,7 @@
|
|||
<field name="name">Banque</field>
|
||||
<field name="category_id" model="res.partner.category" search="[('name','=','Partenaire')]"/>
|
||||
</record>
|
||||
|
||||
<record id="res_partner_address_bank1" model="res.partner.address">
|
||||
<field name="fax">+41 31 622 13 00</field>
|
||||
<field name="name">Marc Dufour</field>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- Transform into YAML for testing -->
|
||||
<record model="res.bank" id="partner_bank">
|
||||
<field name="name">Fortis s.a.</field>
|
||||
<field name="clearing">123456</field>
|
||||
|
@ -11,7 +12,7 @@
|
|||
<field name="acc_number">123456</field>
|
||||
<field name="partner_id" ref="base.res_partner_agrolait"/>
|
||||
<field name="state">bvrbank</field>
|
||||
<field name="bvr_number">234567</field>
|
||||
<field name="post_number">234567</field>
|
||||
<field name="bank" ref="partner_bank"/>
|
||||
<field name="iban">CH9100767000S00023455</field>
|
||||
</record>
|
||||
|
|
|
@ -89,7 +89,7 @@
|
|||
<field name="readonly" eval="False"/>
|
||||
</record>
|
||||
<record model="res.partner.bank.type.field" id="bvr_num_field_bvrbank">
|
||||
<field name="name">bvr_number</field>
|
||||
<field name="name">post_number</field>
|
||||
<field name="bank_type_id" ref="bvrbank"/>
|
||||
<field name="required" eval="True"/>
|
||||
<field name="readonly" eval="False"/>
|
||||
|
@ -103,7 +103,7 @@
|
|||
<field name="readonly" eval="False"/>
|
||||
</record>
|
||||
<record model="res.partner.bank.type.field" id="bvr_num_field_bvrpost">
|
||||
<field name="name">bvr_number</field>
|
||||
<field name="name">post_number</field>
|
||||
<field name="bank_type_id" ref="bvrpost"/>
|
||||
<field name="required" eval="True"/>
|
||||
<field name="readonly" eval="False"/>
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
<field name="arch" type="xml">
|
||||
<field name="acc_number" position="after">
|
||||
<newline/>
|
||||
<field name="bvr_number"/>
|
||||
<field name="bvr_adherent_num"/>
|
||||
<field name="post_number"/>
|
||||
<field name="dta_code"/>
|
||||
|
@ -27,7 +26,6 @@
|
|||
<field name="arch" type="xml">
|
||||
<field name="acc_number" position="after">
|
||||
<newline/>
|
||||
<field name="bvr_number"/>
|
||||
<field name="bvr_adherent_num"/>
|
||||
<field name="post_number"/>
|
||||
<field name="dta_code"/>
|
||||
|
|
|
@ -191,7 +191,6 @@ class account_tax_code(osv.osv):
|
|||
_name = 'account.tax.code'
|
||||
_inherit = "account.tax.code"
|
||||
_columns = {
|
||||
### The case code of the tax code
|
||||
'code': fields.char('Case Code', size=512),
|
||||
}
|
||||
|
||||
|
|
|
@ -36,7 +36,6 @@ class res_partner_bank(osv.osv):
|
|||
_columns = {
|
||||
'name': fields.char('Description', size=128, required=True),
|
||||
'post_number': fields.char('Post number', size=64),
|
||||
'bvr_number': fields.char('BVR account number', size=11),
|
||||
'bvr_adherent_num': fields.char('BVR adherent number', size=11),
|
||||
'dta_code': fields.char('DTA code', size=5),
|
||||
}
|
||||
|
|
|
@ -99,11 +99,11 @@
|
|||
<table name="bvrframe" id="${inv.id}" style="width:210mm;height:106mm;border-collapse:collapse;padding-left:3mm;font-family:Helvetica;font-size:8pt;border-width:0px" border="0" CELLPADDING="0" CELLSPACING="0"> <!--border-width:1px;border-style:solid;border-color:black;-->
|
||||
<tr style="height:16.933333mm;vertical-align:bottom;padding-bottom:3mm"><td style="width:60.14mm;padding-bottom:3mm"><div style="padding-left:3mm;">${inv.partner_bank_id and inv.partner_bank_id.print_bank and inv.partner_bank_id.bank and inv.partner_bank_id.bank.name or ''}</div></td><td style="width:60.96mm;padding-bottom:3mm"><div style="padding-left:3mm;">${inv.partner_bank_id and inv.partner_bank_id.print_bank and inv.partner_bank_id.bank and inv.partner_bank_id.bank.name or ''}</div></td><td style="width:88.9mm"></td></tr>
|
||||
<tr style="height:12.7mm;vertical-align:bottom;padding-bottom:3mm"><td style="width:60.14mm;padding-bottom:3mm"><div style="padding-left:3mm;"><b>${user.company_id.partner_id.name}</b></div></td><td style="width:60.96mm;padding-bottom:3mm"><div style="padding-left:3mm;"><b>${user.company_id.partner_id.name}</b></div></td><td style="width:88.9mm"></td></tr>
|
||||
<tr style="height:16.933333mm;vertical-align:bottom;padding-bottom:0"><td><table style="padding-left:3mm;font-family:Helvetica;font-size:8pt" height="100%"><tr style="vertical-align:top;padding-bottom:0"><td>${user.company_id.partner_id.address[0].street}<br/> ${user.company_id.partner_id.address[0].zip} ${user.company_id.partner_id.address[0].city}</td></tr><tr style="vertical-align:bottom;padding-bottom:0"><td><div style="padding-left:30.48mm;">${inv.partner_bank_id.print_account and inv.partner_bank_id.bvr_number or ''}</div></td></tr></table></td><td style="padding-left:3mm"><table style="padding-left:3mm;font-family:Helvetica;font-size:8pt" height="100%"><tr style="vertical-align:top;padding-bottom:0"><td>${user.company_id.partner_id.address[0].street}<br/>${user.company_id.partner_id.address[0].zip} ${user.company_id.partner_id.address[0].city}</td></tr><tr style="vertical-align:bottom;padding-bottom:0"><td><div style="padding-left:30.48mm;">${inv.partner_bank_id.print_account and inv.partner_bank_id.bvr_number or ''}</div></td></tr></table></td><td style="text-align: right;padding-right:4mm;padding-bottom:8mm;font-size:11pt">${_space(_get_ref(inv))}</td></tr>
|
||||
<tr style="height:16.933333mm;vertical-align:bottom;padding-bottom:0"><td><table style="padding-left:3mm;font-family:Helvetica;font-size:8pt" height="100%"><tr style="vertical-align:top;padding-bottom:0"><td>${user.company_id.partner_id.address[0].street}<br/> ${user.company_id.partner_id.address[0].zip} ${user.company_id.partner_id.address[0].city}</td></tr><tr style="vertical-align:bottom;padding-bottom:0"><td><div style="padding-left:30.48mm;">${inv.partner_bank_id.print_account and inv.partner_bank_id.post_number or ''}</div></td></tr></table></td><td style="padding-left:3mm"><table style="padding-left:3mm;font-family:Helvetica;font-size:8pt" height="100%"><tr style="vertical-align:top;padding-bottom:0"><td>${user.company_id.partner_id.address[0].street}<br/>${user.company_id.partner_id.address[0].zip} ${user.company_id.partner_id.address[0].city}</td></tr><tr style="vertical-align:bottom;padding-bottom:0"><td><div style="padding-left:30.48mm;">${inv.partner_bank_id.print_account and inv.partner_bank_id.post_number or ''}</div></td></tr></table></td><td style="text-align: right;padding-right:4mm;padding-bottom:8mm;font-size:11pt">${_space(_get_ref(inv))}</td></tr>
|
||||
<tr style="height:8.4666667mm;vertical-align:bottom;padding-bottom:0"> <td><table style="width:100%" CELLPADDING="0" CELLSPACING="0"><td style="width:4mm"></td><td style="width:40mm;text-align: right" >${_space(('%.2f' % inv.amount_total)[:-3], 1)}</td><td style="width:6mm"></td><td style="width:10mm;text-align: right">${ _space(('%.2f' % inv.amount_total)[-2:], 1)}</td><td style="width:3mm;text-align: right"></td></table></td><td><table style="width:100%" CELLPADDING="0" CELLSPACING="0"><td style="width:4mm"></td><td style="width:40mm;text-align: right" >${_space(('%.2f' % inv.amount_total)[:-3], 1)}</td><td style="width:6mm"></td><td style="width:10mm;text-align: right">${ _space(('%.2f' % inv.amount_total)[-2:], 1)}</td><td style="width:3mm;text-align: right"></td></table></td><td></td></tr>
|
||||
<tr style="height:21.166667mm"><td></td><td></td><td></td></tr>
|
||||
<tr style="height:8.4666667mm"> <td></td><td></td><td></td></tr>
|
||||
<tr style="height:21.166667mm;vertical-align:top"><td></td><td colspan="2" style="text-align:right;padding-right:0.3in;font-family:bvrocrb;font-size:12pt">${mod10r('01'+str('%.2f' % inv.amount_total).replace('.','').rjust(10,'0'))}>${_get_ref(inv)}+${inv.partner_bank_id.bvr_number.split('-')[0]+(str(inv.partner_bank_id.bvr_number.split('-')[1])).rjust(6,'0')+inv.partner_bank_id.bvr_number.split('-')[2]}></td></tr>
|
||||
<tr style="height:21.166667mm;vertical-align:top"><td></td><td colspan="2" style="text-align:right;padding-right:0.3in;font-family:bvrocrb;font-size:12pt">${mod10r('01'+str('%.2f' % inv.amount_total).replace('.','').rjust(10,'0'))}>${_get_ref(inv)}+${inv.partner_bank_id.post_number.split('-')[0]+(str(inv.partner_bank_id.post_number.split('-')[1])).rjust(6,'0')+inv.partner_bank_id.post_number.split('-')[2]}></td></tr>
|
||||
</table>
|
||||
%endfor
|
||||
</body>
|
||||
|
|
|
@ -17,37 +17,37 @@
|
|||
<tr><td>${inv.address_invoice_id.country_id.name or ''|entity} </td></tr>
|
||||
%endif
|
||||
%if inv.address_invoice_id.phone :
|
||||
<tr><td>${_("Tel")}: ${inv.address_invoice_id.phone|entity}</td></tr>
|
||||
<tr><td>${_("Tel") |entity}: ${inv.address_invoice_id.phone|entity}</td></tr>
|
||||
%endif
|
||||
%if inv.address_invoice_id.fax :
|
||||
<tr><td>${_("Fax")}: ${inv.address_invoice_id.fax|entity}</td></tr>
|
||||
<tr><td>${_("Fax") |entity}: ${inv.address_invoice_id.fax|entity}</td></tr>
|
||||
%endif
|
||||
%if inv.address_invoice_id.email :
|
||||
<tr><td>${_("E-mail")}: ${inv.address_invoice_id.email|entity}</td></tr>
|
||||
<tr><td>${_("E-mail") |entity}: ${inv.address_invoice_id.email|entity}</td></tr>
|
||||
%endif
|
||||
%if inv.partner_id.vat :
|
||||
<tr><td>${_("VAT")}: ${inv.partner_id.vat|entity}</td></tr>
|
||||
<tr><td>${_("VAT") |entity}: ${inv.partner_id.vat|entity}</td></tr>
|
||||
%endif
|
||||
</table>
|
||||
<br />
|
||||
%if inv.type == 'out_invoice' :
|
||||
<span class="title">${_("Invoice")} ${inv.number or ''|entity}</span>
|
||||
<span class="title">${_("Invoice") |entity} ${inv.number or ''|entity}</span>
|
||||
%elif inv.type == 'in_invoice' :
|
||||
<span class="title">${_("Supplier Invoice")} ${inv.number or ''|entity}</span>
|
||||
<span class="title">${_("Supplier Invoice") |entity} ${inv.number or ''|entity}</span>
|
||||
%elif inv.type == 'out_refund' :
|
||||
<span class="title">${_("Refund")} ${inv.number or ''|entity}</span>
|
||||
<span class="title">${_("Refund") |entity} ${inv.number or ''|entity}</span>
|
||||
%elif inv.type == 'in_refund' :
|
||||
<span class="title">${_("Supplier Refund")} ${inv.number or ''|entity}</span>
|
||||
<span class="title">${_("Supplier Refund") |entity} ${inv.number or ''|entity}</span>
|
||||
%endif
|
||||
<br/>
|
||||
<br/>
|
||||
<table class="basic_table" width="90%">
|
||||
<tr><td>${_("Document")}</td><td>${_("Invoice Date")}</td><td>${_("Partner Ref.")}</td></tr>
|
||||
<tr><td>${_("Document") |entity}</td><td>${_("Invoice Date") |entity}</td><td>${_("Partner Ref.") |entity}</td></tr>
|
||||
<tr><td>${inv.name}</td><td>${formatLang(inv.date_invoice, date=True)|entity}</td><td> </td></tr>
|
||||
</table>
|
||||
<h1><br /></h1>
|
||||
<table class="list_table" width="90%">
|
||||
<thead><tr><th>${_("Description")}</th><th class>${_("Taxes")}</th><th class>${_("QTY")}</th><th>${_("Unit Price")}</th><th >${_("Disc.(%)")}</th><th>${_("Price")}</th></tr></thead>
|
||||
<thead><tr><th>${_("Description") |entity}</th><th class>${_("Taxes") |entity}</th><th class>${_("QTY") |entity}</th><th>${_("Unit Price") |entity}</th><th >${_("Disc.(%)") |entity}</th><th>${_("Price") |entity}</th></tr></thead>
|
||||
%for line in inv.invoice_line :
|
||||
<tbody>
|
||||
<tr><td>${line.name|entity}</td><td>${ ', '.join([ tax.name or '' for tax in line.invoice_line_tax_id ])|entity}</td><td>${line.quantity}</td><td style="text-align:right;">${formatLang(line.price_unit)}</td><td style="text-align:center;">${line.discount or 0.00}</td><td style="text-align:right;">${formatLang(line.price_subtotal)}</td></tr>
|
||||
|
@ -62,7 +62,7 @@
|
|||
</table>
|
||||
|
||||
<table class="list_table" width="40%">
|
||||
<tr><th>Tax</th><th>${_("Base")}</th><th>${_("Amount")}</th></tr>
|
||||
<tr><th>Tax</th><th>${_("Base") |entity}</th><th>${_("Amount") |entity}</th></tr>
|
||||
%if inv.tax_line :
|
||||
%for t in inv.tax_line :
|
||||
<tr>
|
||||
|
@ -74,7 +74,7 @@
|
|||
%endif
|
||||
<tr>
|
||||
<td style="border-style:none"/>
|
||||
<td style="border-top:2px solid"><b>${_("Total")}</b></td>
|
||||
<td style="border-top:2px solid"><b>${_("Total") |entity}</b></td>
|
||||
<td style="border-top:2px solid">${ formatLang(inv.amount_tax) }</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -33,6 +33,7 @@ import addons
|
|||
import pooler
|
||||
from tools.config import config
|
||||
from mako.template import Template
|
||||
from tools.translate import _
|
||||
|
||||
|
||||
class l10n_ch_report_webkit_html(report_sxw.rml_parse):
|
||||
|
@ -53,15 +54,19 @@ class l10n_ch_report_webkit_html(report_sxw.rml_parse):
|
|||
'headheight': self.headheight
|
||||
})
|
||||
|
||||
#will be fixed in 5.0.10
|
||||
_compile_get_ref = re.compile('[^0-9]')
|
||||
_compile_comma_me = re.compile("^(-?\d+)(\d{3})")
|
||||
_compile_check_bvr = re.compile('[0-9][0-9]-[0-9]{3,6}-[0-9]')
|
||||
_compile_check_bvr_add_num = re.compile('[0-9]*$')
|
||||
|
||||
def police_absolute_path(self, inner_path) :
|
||||
"""Will get the ocrb police absolute path"""
|
||||
path = addons.get_module_resource('l10n_ch/report/'+inner_path)
|
||||
path = addons.get_module_resource(os.path.join('l10n_ch','report',inner_path))
|
||||
return path
|
||||
|
||||
def bvr_absolute_path(self) :
|
||||
"""Will get the ocrb police absolute path"""
|
||||
path = addons.get_module_resource('l10n_ch/report/bvr1.jpg')
|
||||
path = addons.get_module_resource(os.path.join('l10n_ch','report','bvr1.jpg'))
|
||||
return path
|
||||
|
||||
def headheight(self):
|
||||
|
@ -76,7 +81,7 @@ class l10n_ch_report_webkit_html(report_sxw.rml_parse):
|
|||
else :
|
||||
amount = str(amount)
|
||||
orig = amount
|
||||
new = re.sub("^(-?\d+)(\d{3})", "\g<1>'\g<2>", amount)
|
||||
new = self._compile_comma_me.sub("\g<1>'\g<2>", amount)
|
||||
if orig == new:
|
||||
return new
|
||||
else:
|
||||
|
@ -98,7 +103,7 @@ class l10n_ch_report_webkit_html(report_sxw.rml_parse):
|
|||
res = inv.partner_bank_id.bvr_adherent_num
|
||||
invoice_number = ''
|
||||
if inv.number:
|
||||
invoice_number = re.sub('[^0-9]', '', inv.number)
|
||||
invoice_number = self._compile_get_ref.sub('', inv.number)
|
||||
return mod10r(res + invoice_number.rjust(26-len(res), '0'))
|
||||
|
||||
def _check(self, invoices):
|
||||
|
@ -109,20 +114,20 @@ class l10n_ch_report_webkit_html(report_sxw.rml_parse):
|
|||
ids = [x.id for x in invoices]
|
||||
for invoice in invoice_obj.browse(cursor, self.uid, ids):
|
||||
if not invoice.partner_bank_id:
|
||||
raise wizard.except_wizard('UserError',
|
||||
'No bank specified on invoice:\n' + \
|
||||
raise wizard.except_wizard(_('UserError'),
|
||||
_('No bank specified on invoice:\n' + \
|
||||
invoice_obj.name_get(cursor, self.uid, [invoice.id],
|
||||
context={})[0][1])
|
||||
if not re.compile('[0-9][0-9]-[0-9]{3,6}-[0-9]').match(
|
||||
invoice.partner_bank_id.bvr_number or ''):
|
||||
raise wizard.except_wizard('UserError',
|
||||
"Your bank BVR number should be of the form 0X-XXX-X! " +
|
||||
context={})[0][1]))
|
||||
if not self._compile_check_bvr.match(
|
||||
invoice.partner_bank_id.post_number or ''):
|
||||
raise wizard.except_wizard(_('UserError'),
|
||||
_("Your bank BVR number should be of the form 0X-XXX-X! " +
|
||||
'Please check your company ' +
|
||||
'information for the invoice:\n' +
|
||||
invoice_obj.name_get(cursor, self.uid, [invoice.id],
|
||||
context={})[0][1])
|
||||
context={})[0][1]))
|
||||
if invoice.partner_bank_id.bvr_adherent_num \
|
||||
and not re.compile('[0-9]*$').match(
|
||||
and not self._compile_check_bvr_add_num.match(
|
||||
invoice.partner_bank_id.bvr_adherent_num):
|
||||
raise wizard.except_wizard('UserError',
|
||||
'Your bank BVR adherent number must contain exactly seven' +
|
||||
|
@ -194,7 +199,7 @@ class BVRWebKitParser(webkit_report.WebKitParser):
|
|||
#default_filters=['unicode', 'entity'] can be used to set global filter
|
||||
body_mako_tpl = Template(parse_template ,input_encoding='utf-8')
|
||||
#BVR specific
|
||||
bvr_path = addons.get_module_resource('l10n_ch/report/bvr.mako')
|
||||
bvr_path = addons.get_module_resource(os.path.join('l10n_ch','report','bvr.mako'))
|
||||
body_bvr_tpl = Template(file(bvr_path).read(), input_encoding='utf-8')
|
||||
|
||||
helper = report_helper.WebKitHelper(cursor, uid, report_xml.id, context)
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
<openerp>
|
||||
<data>
|
||||
<record id="ir_header_webkit_bvr_invoice0" model="ir.header_webkit">
|
||||
<field eval=""""Portrait"""" name="orientation"/>
|
||||
<field eval=""""A4"""" name="format"/>
|
||||
<field name="orientation">Portrait</field>
|
||||
<field name="format">A4</field>
|
||||
<field name="html"><![CDATA[<html>
|
||||
<head>
|
||||
<script>
|
||||
|
@ -144,7 +144,7 @@ width:74%;
|
|||
.tax {
|
||||
width:50%;
|
||||
}]]></field>
|
||||
<field eval=""""BVR header"""" name="name"/>
|
||||
<field name="name">BVR header</field>
|
||||
</record>
|
||||
|
||||
<report auto="True"
|
||||
|
|
|
@ -10,26 +10,31 @@
|
|||
<field name="name">Bilan : Liquidites et titres</field>
|
||||
<field name="code">cash</field>
|
||||
<field name="close_method">balance</field>
|
||||
<field name="report_type">asset</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_adjusting_asset">
|
||||
<field name="name">Bilan : Actif de regularisation</field>
|
||||
<field name="code">adjusting_asset</field>
|
||||
<field name="close_method">balance</field>
|
||||
<field name="report_type">asset</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_equity">
|
||||
<field name="name">Bilan : Capitaux propres</field>
|
||||
<field name="code">equity</field>
|
||||
<field name="close_method">balance</field>
|
||||
<field name="report_type">liability</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_income">
|
||||
<field name="name">PP : Chiffre d'affaires</field>
|
||||
<field name="code">income</field>
|
||||
<field name="close_method">none</field>
|
||||
<field name="report_type">income</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_adj_liability">
|
||||
<field name="name">Bilan : Passifs de regularisation</field>
|
||||
<field name="code">adj_liability</field>
|
||||
<field name="close_method">balance</field>
|
||||
<field name="report_type">liability</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_closing">
|
||||
<field name="name">Autre : Cloture</field>
|
||||
|
@ -40,103 +45,123 @@
|
|||
<field name="name">PP : Amortissement</field>
|
||||
<field name="code">depreciation</field>
|
||||
<field name="close_method">none</field>
|
||||
<field name="report_type">expense</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_financial_result">
|
||||
<field name="name">PP : Resultat financier</field>
|
||||
<field name="code">financial_result</field>
|
||||
<field name="close_method">none</field>
|
||||
<field name="report_type">income</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_financial_asset">
|
||||
<field name="name">Bilan : Immobilisations financieres</field>
|
||||
<field name="code">financial_asset</field>
|
||||
<field name="close_method">balance</field>
|
||||
<field name="report_type">asset</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_building_asset">
|
||||
<field name="name">Bilan : Immo corporelles immobilieres</field>
|
||||
<field name="code">building_asset</field>
|
||||
<field name="close_method">balance</field>
|
||||
<field name="report_type">asset</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_non_ope_asset">
|
||||
<field name="name">Bilan : Actifs hors exploitation</field>
|
||||
<field name="code">non_ope_asset</field>
|
||||
<field name="close_method">balance</field>
|
||||
<field name="report_type">asset</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_other_ope_exp">
|
||||
<field name="name">PP : Autres charges d'exploitation</field>
|
||||
<field name="code">other_ope_expense</field>
|
||||
<field name="close_method">none</field>
|
||||
<field name="report_type">expense</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_non_ope_debts">
|
||||
<field name="name">Bilan : Dettes hors exploitation</field>
|
||||
<field name="code">non_ope_debts</field>
|
||||
<field name="close_method">balance</field>
|
||||
<field name="report_type">liability</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_fixed_asset">
|
||||
<field name="name">Bilan : Immo corporelles mobilieres</field>
|
||||
<field name="code">fixed_asset</field>
|
||||
<field name="close_method">balance</field>
|
||||
<field name="report_type">asset</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_intangible_asset">
|
||||
<field name="name">Bilan : Immo incorporelles</field>
|
||||
<field name="code">intangible_asset</field>
|
||||
<field name="close_method">balance</field>
|
||||
<field name="report_type">asset</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_inventory">
|
||||
<field name="name">Bilan : Stocks</field>
|
||||
<field name="code">inventory</field>
|
||||
<field name="close_method">balance</field>
|
||||
<field name="report_type">asset</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_lt_liability">
|
||||
<field name="name">Bilan : Dettes à LT</field>
|
||||
<field name="code">lt_liability</field>
|
||||
<field name="close_method">balance</field>
|
||||
<field name="report_type">liability</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_non_ope_result">
|
||||
<field name="name">PP : Resultat activites annexes</field>
|
||||
<field name="code">non_oper_result</field>
|
||||
<field name="close_method">none</field>
|
||||
<field name="report_type">income</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_other_payable">
|
||||
<field name="name">Bilan : Autres creanciers à CT</field>
|
||||
<field name="code">other_payable</field>
|
||||
<field name="close_method">balance</field>
|
||||
<field name="report_type">liability</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_other_receivable">
|
||||
<field name="name">Bilan : Autres créances</field>
|
||||
<field name="code">other_receivable</field>
|
||||
<field name="close_method">balance</field>
|
||||
<field name="report_type">asset</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_personnal_exp">
|
||||
<field name="name">PP : Charge de personnel</field>
|
||||
<field name="code">personnal_exp</field>
|
||||
<field name="close_method">none</field>
|
||||
<field name="report_type">expense</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_prov_reserve">
|
||||
<field name="name">Bilan : Provisions et reserves</field>
|
||||
<field name="code">provision_reserve</field>
|
||||
<field name="close_method">balance</field>
|
||||
<field name="report_type">liability</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_purchase">
|
||||
<field name="name">PP : Achat de marchandise</field>
|
||||
<field name="code">purchase</field>
|
||||
<field name="close_method">none</field>
|
||||
<field name="report_type">expense</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_report_result">
|
||||
<field name="name">Bilan : Resultat reporte</field>
|
||||
<field name="code">report_result</field>
|
||||
<field name="close_method">balance</field>
|
||||
<field name="report_type">liability</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_receivable">
|
||||
<field name="name">Bilan : Debiteurs</field>
|
||||
<field name="code">receivable</field>
|
||||
<field name="partner_account">True</field>
|
||||
<field name="close_method">unreconciled</field>
|
||||
<field name="report_type">asset</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_payable">
|
||||
<field name="name">Bilan : Fournisseurs</field>
|
||||
<field name="code">payable</field>
|
||||
<field name="partner_account">True</field>
|
||||
<field name="close_method">unreconciled</field>
|
||||
<field name="report_type">liability</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_consolidation">
|
||||
<field name="name">Autre : Consolidation</field>
|
||||
|
@ -148,11 +173,6 @@
|
|||
<field name="code">other</field>
|
||||
<field name="close_method">none</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_closed">
|
||||
<field name="name">Autre : Closed</field>
|
||||
<field name="code">closed</field>
|
||||
<field name="close_method">none</field>
|
||||
</record>
|
||||
<record id="ch_minimal_0" model="account.account.template">
|
||||
<field name="name">Plan comptable</field>
|
||||
<field name="code">0</field>
|
||||
|
|
|
@ -1,19 +1,8 @@
|
|||
-
|
||||
Creating a res.partner.bank record
|
||||
-
|
||||
!record {model: res.partner.bank, id: res_partner_bank_account0}:
|
||||
acc_number: 001-1001-1291-12323
|
||||
bank: base.res_bank_1
|
||||
bvr_number: 01-101-12
|
||||
name: Argolait Main Account
|
||||
partner_id: base.res_partner_agrolait
|
||||
sequence: 0.0
|
||||
state: bvbank
|
||||
-
|
||||
In order to test the BVR report, I will assign a bank to the invoice
|
||||
-
|
||||
!record {model: account.invoice, id: account.test_invoice_1}:
|
||||
partner_bank_id: res_partner_bank_account0
|
||||
partner_bank_id: main_partner_bank
|
||||
-
|
||||
In order to test the PDF reports defined on a l10n_ch, we will print BVR Report
|
||||
-
|
||||
|
|
|
@ -31,16 +31,16 @@ def _reconstruct_invoice_ref(cursor, user, reference, context=None):
|
|||
###
|
||||
id_invoice = False
|
||||
# On fait d'abord une recherche sur toutes les factures
|
||||
# we now searhc for company
|
||||
# we now search for an invoice
|
||||
user_obj = pooler.get_pool(cursor.dbname).get('res.users')
|
||||
user_current=user_obj.browse(cursor, user, user)
|
||||
|
||||
##
|
||||
cursor.execute("SELECT inv.id,inv.number from account_invoice AS inv where inv.company_id = %s" ,(user_current.company_id.id,))
|
||||
result_invoice = cursor.fetchall()
|
||||
|
||||
REF = re.compile('[^0-9]')
|
||||
for inv_id,inv_name in result_invoice:
|
||||
inv_name = re.sub('[^0-9]', '0', str(inv_name))
|
||||
inv_name = REF.sub('0', str(inv_name))
|
||||
if inv_name == reference:
|
||||
id_invoice = inv_id
|
||||
break
|
||||
|
@ -67,6 +67,8 @@ def _import(self, cursor, user, data, context=None):
|
|||
property_obj = self.pool.get('ir.property')
|
||||
model_fields_obj = self.pool.get('ir.model.fields')
|
||||
attachment_obj = self.pool.get('ir.attachment')
|
||||
statement_obj = self.pool.get('account.bank.statement')
|
||||
property_obj = self.pool.get('ir.property')
|
||||
file = data['form']['file']
|
||||
statement_id = data['id']
|
||||
records = []
|
||||
|
@ -124,14 +126,6 @@ def _import(self, cursor, user, data, context=None):
|
|||
total_cost += record['cost']
|
||||
records.append(record)
|
||||
|
||||
# model_fields_ids = model_fields_obj.search(cursor, user, [
|
||||
# ('name', 'in', ['property_account_receivable', 'property_account_payable']),
|
||||
# ('model', '=', 'res.partner'),
|
||||
# ], context=context)
|
||||
# property_ids = property_obj.search(cursor, user, [
|
||||
# ('fields_id', 'in', model_fields_ids),
|
||||
# ('res_id', '=', False),
|
||||
# ], context=context)
|
||||
account_receivable = False
|
||||
account_payable = False
|
||||
statement = statement_obj.browse(cursor, user, statement_id, context=context)
|
||||
|
@ -156,7 +150,6 @@ def _import(self, cursor, user, data, context=None):
|
|||
], order='date desc', context=context)
|
||||
if not line_ids:
|
||||
line_ids = _reconstruct_invoice_ref(cursor, user, reference, None)
|
||||
|
||||
partner_id = False
|
||||
account_id = False
|
||||
for line in move_line_obj.browse(cursor, user, line_ids, context=context):
|
||||
|
@ -174,8 +167,8 @@ def _import(self, cursor, user, data, context=None):
|
|||
# line2reconcile = line.id
|
||||
account_id = line.account_id.id
|
||||
break
|
||||
result = voucher_obj.onchange_partner_id(cursor, user, [], partner_id=partner_id, journal_id=statement.journal_id.id, price=abs(record['amount']), currency_id= statement.currency.id, ttype='payment', context=context)
|
||||
voucher_res = { 'type': 'payment' ,
|
||||
result = voucher_obj.onchange_partner_id(cursor, user, [], partner_id, journal_id=statement.journal_id.id, price=abs(record['amount']), currency_id= statement.currency.id, ttype='receipt', date=statement.date ,context=context)
|
||||
voucher_res = { 'type': 'receipt' ,
|
||||
|
||||
'name': values['name'],
|
||||
'partner_id': partner_id,
|
||||
|
@ -205,16 +198,32 @@ def _import(self, cursor, user, data, context=None):
|
|||
account_id = account_receivable
|
||||
else:
|
||||
account_id = account_payable
|
||||
if not account_id :
|
||||
##If line not linked to an invoice we create a line not linked to a voucher
|
||||
if not account_id and not line_ids:
|
||||
name = "property_account_receivable"
|
||||
if record['amount'] < 0:
|
||||
name = "property_account_payable"
|
||||
prop = property_obj.search(
|
||||
cursor,
|
||||
user,
|
||||
[
|
||||
('name','=','property_account_receivable'),
|
||||
('company_id','=',statement.company_id.id),
|
||||
('res_id', '=', False)
|
||||
]
|
||||
)
|
||||
if prop:
|
||||
value = property_obj.read(cursor, user, prop[0], ['value_reference']).get('value_reference', False)
|
||||
if value :
|
||||
account_id = int(value.split(',')[1])
|
||||
else :
|
||||
raise osv.except_osv(_('Error'),
|
||||
_('The properties account payable account receivable are not set'))
|
||||
if not account_id and line_ids:
|
||||
raise osv.except_osv(_('Error'),
|
||||
_('The properties account payable account receivable'))
|
||||
_('The properties account payable account receivable are not set'))
|
||||
values['account_id'] = account_id
|
||||
values['partner_id'] = partner_id
|
||||
|
||||
# values['reconcile_id'] = statement_reconcile_obj.create(cursor, user, {
|
||||
# 'line_ids': [(6, 0, [line2reconcile])],
|
||||
# }, context=context)
|
||||
|
||||
statement_line_obj.create(cursor, user, values, context=context)
|
||||
attachment_obj.create(cursor, user, {
|
||||
'name': 'BVR',
|
||||
|
|
|
@ -411,7 +411,7 @@ def _create_dta(obj, cr, uid, data, context=None):
|
|||
v['partner_post_number']= pline.bank_id.post_number \
|
||||
and pline.bank_id.post_number.replace('.', '').replace('-', '') \
|
||||
or False
|
||||
v['partner_bvr'] = pline.bank_id.bvr_number or ''
|
||||
v['partner_bvr'] = pline.bank_id.post_number or ''
|
||||
if v['partner_bvr']:
|
||||
v['partner_bvr'] = v['partner_bvr'].replace('-','')
|
||||
if len(v['partner_bvr']) < 9:
|
||||
|
@ -554,7 +554,7 @@ def _create_dta(obj, cr, uid, data, context=None):
|
|||
dta = dta + record_gt890(v).generate()
|
||||
|
||||
dta_data = base64.encodestring(dta)
|
||||
payment_obj.set_done(cr, uid, data['id'], context)
|
||||
payment_obj.set_done(cr, uid, [data['id']], context)
|
||||
attachment_obj.create(cr, uid, {
|
||||
'name': 'DTA',
|
||||
'datas': dta_data,
|
||||
|
|
Loading…
Reference in New Issue