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:
nicolas.bessi@camptocamp.com 2011-02-09 09:59:05 +01:00
parent 771a33d4a3
commit f4c5c1882d
18 changed files with 125 additions and 87 deletions

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -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 ?',

View File

@ -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>

View File

@ -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>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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),
}

View File

@ -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),
}

View File

@ -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'))}&gt;${_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]}&gt;</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'))}&gt;${_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]}&gt;</td></tr>
</table>
%endfor
</body>

View File

@ -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>&nbsp;</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>

View File

@ -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)

View File

@ -2,8 +2,8 @@
<openerp>
<data>
<record id="ir_header_webkit_bvr_invoice0" model="ir.header_webkit">
<field eval="&quot;&quot;&quot;Portrait&quot;&quot;&quot;" name="orientation"/>
<field eval="&quot;&quot;&quot;A4&quot;&quot;&quot;" 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="&quot;&quot;&quot;BVR header&quot;&quot;&quot;" name="name"/>
<field name="name">BVR header</field>
</record>
<report auto="True"

View File

@ -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>

View File

@ -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
-

View File

@ -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',

View File

@ -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,