DTA : new version : the bank account type define the way the dta is created
bzr revid: bch-bab60b45a9ad7e49b17ec812275a13f1fb65ee29
This commit is contained in:
parent
e13a010db0
commit
42d54dcfdd
|
@ -8,7 +8,7 @@
|
||||||
"category" : "Localisation/Europe",
|
"category" : "Localisation/Europe",
|
||||||
"website": "http://www.tinyerp.com",
|
"website": "http://www.tinyerp.com",
|
||||||
"depends" : ["base", "account"],
|
"depends" : ["base", "account"],
|
||||||
"init_xml" : [],
|
"init_xml" : ["dta/dta_data.xml"],
|
||||||
# "init_xml" : ["zip_code_default.xml"],
|
# "init_xml" : ["zip_code_default.xml"],
|
||||||
"demo_xml" : ["vaudtax_data_demo.xml","dta/dta_demo.xml"],
|
"demo_xml" : ["vaudtax_data_demo.xml","dta/dta_demo.xml"],
|
||||||
"update_xml" : [
|
"update_xml" : [
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<terp>
|
||||||
|
<data>
|
||||||
|
|
||||||
|
<record model="res.partner.bank.type" id="bank_type_iban">
|
||||||
|
<field name="name">Iban</field>
|
||||||
|
<field name="code"></field>
|
||||||
|
<field name="elec_pay">iban</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="res.partner.bank.type" id="bank_type_bvrpost">
|
||||||
|
<field name="name">BVR Post</field>
|
||||||
|
<field name="code"></field>
|
||||||
|
<field name="elec_pay">bvrpost</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="res.partner.bank.type" id="bank_type_bvrbank">
|
||||||
|
<field name="name">BVR Bank</field>
|
||||||
|
<field name="code"></field>
|
||||||
|
<field name="elec_pay">bvrbank</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<record model="res.partner.bank.type" id="bank_type_bvpost">
|
||||||
|
<field name="name">BV Post</field>
|
||||||
|
<field name="code"></field>
|
||||||
|
<field name="elec_pay">bvpost</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="res.partner.bank.type" id="bank_type_bvbank">
|
||||||
|
<field name="name">BV Bank</field>
|
||||||
|
<field name="code"></field>
|
||||||
|
<field name="elec_pay">bvbank</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<record model="res.partner.bank.type" id="bank_type_notype">
|
||||||
|
<field name="name">Other</field>
|
||||||
|
<field name="code"></field>
|
||||||
|
<field name="elec_pay"></field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</data>
|
||||||
|
</terp>
|
|
@ -2,40 +2,28 @@
|
||||||
<terp>
|
<terp>
|
||||||
<data>
|
<data>
|
||||||
|
|
||||||
<record model="res.partner.bank.type" id="bank_type_iban">
|
|
||||||
<field name="name">With Iban (will generate gt836 records)</field>
|
|
||||||
<field name="code"></field>
|
|
||||||
<field name="elec_pay">iban</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="res.partner.bank.type" id="bank_type_gt">
|
|
||||||
<field name="name">Regular type</field>
|
|
||||||
<field name="code"></field>
|
|
||||||
<field name="elec_pay"></field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="res.partner.bank" id="main_bank">
|
<record model="res.partner.bank" id="main_bank">
|
||||||
<field name="name">FORTIS BANK</field>
|
<field name="name">FORTIS BANK</field>
|
||||||
<field name="number">1234567</field>
|
<field name="number">1234567</field>
|
||||||
<field name="bank_name">Fortis Banque</field>
|
<field name="bank_name">Fortis Banque</field>
|
||||||
<field name="partner_id" ref="base.main_partner"/>
|
<field name="partner_id" ref="base.main_partner"/>
|
||||||
<field name="type_id" ref="bank_type_gt836"/>
|
<field name="type_id" ref="bank_type_notype"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="res.partner.bank" id="agrolait_bank_gt836">
|
<record model="res.partner.bank" id="agrolait_bank_iban">
|
||||||
<field name="name">Dexia (with iban)</field>
|
<field name="name">Dexia (with iban)</field>
|
||||||
<field name="number">7654321</field>
|
<field name="number">7654321</field>
|
||||||
<field name="bank_name">Dexia Banque</field>
|
<field name="bank_name">Dexia Banque</field>
|
||||||
<field name="partner_id" ref="base.res_partner_agrolait"/>
|
<field name="partner_id" ref="base.res_partner_agrolait"/>
|
||||||
<field name="type_id" ref="bank_type_gt836"/>
|
<field name="type_id" ref="bank_type_iban"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="res.partner.bank" id="agrolait_bank_gt826">
|
<record model="res.partner.bank" id="agrolait_bank_bvrbank">
|
||||||
<field name="name">Dexia (with bvr)</field>
|
<field name="name">Dexia (with bvr)</field>
|
||||||
<field name="number">7654321</field>
|
<field name="number">7654321</field>
|
||||||
<field name="bank_name">Dexia Banque</field>
|
<field name="bank_name">Dexia Banque</field>
|
||||||
<field name="partner_id" ref="base.res_partner_agrolait"/>
|
<field name="partner_id" ref="base.res_partner_agrolait"/>
|
||||||
<field name="type_id" ref="bank_type_gt826"/>
|
<field name="type_id" ref="bank_type_bvrbank"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="res.partner" id="base.res_partner_agrolait">
|
<record model="res.partner" id="base.res_partner_agrolait">
|
||||||
|
@ -70,7 +58,7 @@
|
||||||
<field name="dta_state">2bp</field>
|
<field name="dta_state">2bp</field>
|
||||||
<field name="type">in_invoice</field>
|
<field name="type">in_invoice</field>
|
||||||
<field name="partner_id" ref="base.res_partner_agrolait"/>
|
<field name="partner_id" ref="base.res_partner_agrolait"/>
|
||||||
<field name="partner_bank_id" ref="agrolait_bank_gt826"/>
|
<field name="partner_bank_id" ref="agrolait_bank_bvrbank"/>
|
||||||
<field name="address_invoice_id" ref="base.res_partner_address_8"/>
|
<field name="address_invoice_id" ref="base.res_partner_address_8"/>
|
||||||
<field name="account_id" ref="account.a_pay"/>
|
<field name="account_id" ref="account.a_pay"/>
|
||||||
<field name="currency_id" ref="base.EUR"/>
|
<field name="currency_id" ref="base.EUR"/>
|
||||||
|
|
|
@ -16,8 +16,21 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<record model="ir.ui.view" id="view_partner_bank_form">
|
||||||
|
<field name="name">res.partner.bank.form</field>
|
||||||
|
<field name="model">res.partner.bank</field>
|
||||||
|
<field name="type">form</field>
|
||||||
|
<field name="inherit_id" ref="base.view_partner_bank_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="bank_code" position="after">
|
||||||
|
<newline/>
|
||||||
|
<field name="bank_clearing" />
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
<!-- these two record applies t othe same parent -->
|
|
||||||
<record model="ir.ui.view" id="invoice_form">
|
<record model="ir.ui.view" id="invoice_form">
|
||||||
<field name="name">account.invoice.form</field>
|
<field name="name">account.invoice.form</field>
|
||||||
<field name="model">account.invoice</field>
|
<field name="model">account.invoice</field>
|
||||||
|
@ -27,7 +40,6 @@
|
||||||
<field name="journal_id" position="after">
|
<field name="journal_id" position="after">
|
||||||
<newline/>
|
<newline/>
|
||||||
<field name="dta_state" select="1"/>
|
<field name="dta_state" select="1"/>
|
||||||
<field name="structured_ref" />
|
|
||||||
</field>
|
</field>
|
||||||
</field>
|
</field>
|
||||||
|
|
||||||
|
|
|
@ -167,8 +167,8 @@ class record:
|
||||||
self.fields = []
|
self.fields = []
|
||||||
self.global_values = global_context_dict
|
self.global_values = global_context_dict
|
||||||
self.pre={'padding':'','seg_num1':'01','seg_num2':'02',
|
self.pre={'padding':'','seg_num1':'01','seg_num2':'02',
|
||||||
'seg_num3':'03','seg_num4':'04','seg_num5':'05',
|
'seg_num3':'03','seg_num4':'04','seg_num5':'05',
|
||||||
'type_paiement':'0', 'flag':'0', 'zero5':'00000'
|
'type_paiement':'0', 'flag':'0', 'zero5':'00000'
|
||||||
}
|
}
|
||||||
self.post={}
|
self.post={}
|
||||||
self.init_local_context()
|
self.init_local_context()
|
||||||
|
@ -232,7 +232,32 @@ class record_gt826(record):
|
||||||
class record_gt827(record):
|
class record_gt827(record):
|
||||||
# -> interne suisse
|
# -> interne suisse
|
||||||
def init_local_context(self):
|
def init_local_context(self):
|
||||||
raise Exception("Record gt827 not yet available")
|
print "gt826"
|
||||||
|
self.fields=[
|
||||||
|
('seg_num1',2),
|
||||||
|
#header
|
||||||
|
('date_value',6),('partner_bank_clearing',12),('zero5',5),('creation_date',6),
|
||||||
|
('comp_bank_clearing',7), ('uid',5),
|
||||||
|
('sequence',5),
|
||||||
|
('genre_trans',3),
|
||||||
|
('type_paiement',1),('flag',1),
|
||||||
|
#seg1
|
||||||
|
('comp_dta',5),('invoice_number',11),('comp_bank_number',24),('date_value',6),
|
||||||
|
('invoice_currency',3),('amount_to_pay',12),('padding',14),
|
||||||
|
#seg2
|
||||||
|
('seg_num2',2),('comp_name',20),('comp_street',20),('comp_zip',10),
|
||||||
|
('comp_city',10),('comp_country',20),('padding',46),
|
||||||
|
#seg3
|
||||||
|
('seg_num3',2),('partner_bvr',12),#numero d'adherent bvr
|
||||||
|
('padding',80),('invoice_reference',27),#communication structuree
|
||||||
|
('padding',2)]
|
||||||
|
|
||||||
|
self.pre.update({'partner_cpt_benef':'',
|
||||||
|
'type_paiement':'1', 'genre_trans':'826',
|
||||||
|
'conv_cours':'', 'option_id_bank':'D',
|
||||||
|
'ref2':'','ref3':'',
|
||||||
|
'format':'0'})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -255,22 +280,22 @@ class record_gt836(record):
|
||||||
('seg_num2',2),('conv_cours',12),('comp_name',35),('comp_street',35),('comp_zip',10),
|
('seg_num2',2),('conv_cours',12),('comp_name',35),('comp_street',35),('comp_zip',10),
|
||||||
('comp_city',15),('comp_country',10),('padding',9),
|
('comp_city',15),('comp_country',10),('padding',9),
|
||||||
#seg3
|
#seg3
|
||||||
('seg_num3',2),('option_id_bank',1),('partner_bank_name',35),('partner_bank_city',35),
|
('seg_num3',2),('option_id_bank',1),('partner_bank_ident',70),
|
||||||
('partner_iban',34),('padding',21),
|
('partner_iban',34),('padding',21),
|
||||||
#seg4
|
#seg4
|
||||||
('seg_num4',2),('partner_name',35),('partner_street',35),('partner_zip',10),('partner_city',15),
|
('seg_num4',2),('partner_name',35),('partner_street',35),('partner_zip',10),('partner_city',15),
|
||||||
('partner_country',10),('padding',21),
|
('partner_country',10),('padding',21),
|
||||||
#seg5
|
#seg5
|
||||||
('seg_num5',2),('option_motif',1),('ref1',35),('ref2',35),('ref3',35),('format',1)]
|
('seg_num5',2),('option_motif',1),('ref1',35),('ref2',35),('ref3',35),('format',1),('padding',19)]
|
||||||
|
|
||||||
self.pre.update({'partner_bank_clearing':'','partner_cpt_benef':'',
|
self.pre.update({'partner_bank_clearing':'','partner_cpt_benef':'',
|
||||||
'type_paiement':'1', 'genre_trans':'836',
|
'type_paiement':'1', 'genre_trans':'836',
|
||||||
'conv_cours':'', 'option_id_bank':'D',
|
'conv_cours':'',
|
||||||
'ref1': self.global_values['invoice_reference'],
|
'ref1': self.global_values['invoice_reference'],
|
||||||
'ref2':'','ref3':'',
|
'ref2':'','ref3':'',
|
||||||
'partner_iban': self.global_values['partner_bank_number'],
|
'partner_iban': self.global_values['partner_bank_number'],
|
||||||
'format':'0'})
|
'format':'0'})
|
||||||
self.post.update({'option_motif':'U'})
|
self.post.update({'comp_dta':'','option_motif':'U'})
|
||||||
|
|
||||||
|
|
||||||
class record_gt890(record):
|
class record_gt890(record):
|
||||||
|
@ -286,7 +311,7 @@ class record_gt890(record):
|
||||||
('genre_trans',3),
|
('genre_trans',3),
|
||||||
('type_paiement',1),('flag',1),
|
('type_paiement',1),('flag',1),
|
||||||
#total
|
#total
|
||||||
('amount_total',16)]
|
('amount_total',16),('padding',59)]
|
||||||
|
|
||||||
self.pre.update({'partner_bank_clearing':'','partner_cpt_benef':'',
|
self.pre.update({'partner_bank_clearing':'','partner_cpt_benef':'',
|
||||||
'company_bank_clearing':'','genre_trans':'890'})
|
'company_bank_clearing':'','genre_trans':'890'})
|
||||||
|
@ -319,10 +344,11 @@ def _create_dta(self,cr,uid,data,context):
|
||||||
|
|
||||||
|
|
||||||
v['comp_bank_name']= bank.name or False
|
v['comp_bank_name']= bank.name or False
|
||||||
v['comp_bank_clearing'] = bank.bank_code or False # clearing or swift
|
v['comp_bank_clearing'] = bank.bank_clearing or False # clearing
|
||||||
|
v['comp_bank_code'] = bank.bank_code or False # swift or BIC
|
||||||
|
|
||||||
if not v['comp_bank_name'] and v['comp_bank_iban'] :
|
if not v['comp_bank_clearing']:
|
||||||
return {'note':'Bank account of the company not well defined.'}
|
return {'note':'You must provide a Clearing Number for your bank account.'}
|
||||||
|
|
||||||
user = pool.get('res.users').browse(cr,uid,[uid])[0]
|
user = pool.get('res.users').browse(cr,uid,[uid])[0]
|
||||||
company= user.company_id
|
company= user.company_id
|
||||||
|
@ -339,9 +365,10 @@ def _create_dta(self,cr,uid,data,context):
|
||||||
|
|
||||||
|
|
||||||
v['comp_bank_number'] = bank.number or ''
|
v['comp_bank_number'] = bank.number or ''
|
||||||
|
|
||||||
if not v['comp_bank_number'] : # ex iban
|
if not v['comp_bank_number'] : # ex iban
|
||||||
return {'note':'No account number for the company bank account.'}
|
return {'note':'No account number for the company bank account.'}
|
||||||
|
|
||||||
|
v['comp_bank_iban'] = bank.iban or ''
|
||||||
|
|
||||||
inv_obj = pool.get('account.invoice')
|
inv_obj = pool.get('account.invoice')
|
||||||
dta_line_obj = pool.get('account.dta.line')
|
dta_line_obj = pool.get('account.dta.line')
|
||||||
|
@ -376,7 +403,7 @@ def _create_dta(self,cr,uid,data,context):
|
||||||
|
|
||||||
for dtal in dta_line_obj.browse(cr,uid,dta_line_ids):
|
for dtal in dta_line_obj.browse(cr,uid,dta_line_ids):
|
||||||
|
|
||||||
|
print "BCL SUR LES I"
|
||||||
i = dtal.name #dta_line.name = invoice's id
|
i = dtal.name #dta_line.name = invoice's id
|
||||||
invoice_number = i.number or '??'
|
invoice_number = i.number or '??'
|
||||||
if not i.partner_bank_id:
|
if not i.partner_bank_id:
|
||||||
|
@ -388,7 +415,7 @@ def _create_dta(self,cr,uid,data,context):
|
||||||
|
|
||||||
|
|
||||||
v['sequence'] = str(seq).rjust(5,'0')
|
v['sequence'] = str(seq).rjust(5,'0')
|
||||||
v['amount_to_pay']= str(dtal.amount_to_pay)
|
v['amount_to_pay']= str(dtal.amount_to_pay).replace('.',',')
|
||||||
v['invoice_number'] = invoice_number
|
v['invoice_number'] = invoice_number
|
||||||
v['invoice_currency'] = i.currency_id.code or ''
|
v['invoice_currency'] = i.currency_id.code or ''
|
||||||
|
|
||||||
|
@ -405,7 +432,11 @@ def _create_dta(self,cr,uid,data,context):
|
||||||
|
|
||||||
v['partner_bvr']= i.partner_id.bvr_number or ''
|
v['partner_bvr']= i.partner_id.bvr_number or ''
|
||||||
|
|
||||||
v['partner_bank_city']= 'FIXME'
|
v['partner_bank_city']= i.partner_bank_id.city or False
|
||||||
|
v['partner_bank_street']= i.partner_bank_id.street or ''
|
||||||
|
v['partner_bank_zip']= i.partner_bank_id.zip or ''
|
||||||
|
v['partner_bank_country']= i.partner_bank_id.country_id and i.partner_bank_id.country_id.name or ''
|
||||||
|
v['partner_bank_code']= i.partner_bank_id.bank_code or False
|
||||||
v['invoice_reference']= i.reference
|
v['invoice_reference']= i.reference
|
||||||
|
|
||||||
v['partner_name'] = i.partner_id and i.partner_id.name or ''
|
v['partner_name'] = i.partner_id and i.partner_id.name or ''
|
||||||
|
@ -413,7 +444,7 @@ def _create_dta(self,cr,uid,data,context):
|
||||||
v['partner_street'] = i.partner_id.address[0].street
|
v['partner_street'] = i.partner_id.address[0].street
|
||||||
v['partner_city']= i.partner_id.address[0].city
|
v['partner_city']= i.partner_id.address[0].city
|
||||||
v['partner_zip']= i.partner_id.address[0].zip
|
v['partner_zip']= i.partner_id.address[0].zip
|
||||||
v['partner_country']= i.partner_id.address[0].country_id.name
|
v['partner_country']= i.partner_id.address[0].country_id and i.partner_id.address[0].country_id.name or ''
|
||||||
else:
|
else:
|
||||||
v['partner_street'] =''
|
v['partner_street'] =''
|
||||||
v['partner_city']= ''
|
v['partner_city']= ''
|
||||||
|
@ -439,14 +470,38 @@ def _create_dta(self,cr,uid,data,context):
|
||||||
|
|
||||||
|
|
||||||
elec_pay = i.partner_bank_id.type_id.elec_pay
|
elec_pay = i.partner_bank_id.type_id.elec_pay
|
||||||
if elec_pay and elec_pay == 'iban':
|
if not elec_pay :
|
||||||
|
log= log +'\nBank type does not support DTA. (invoice '+ invoice_number +')'
|
||||||
|
continue
|
||||||
|
|
||||||
|
if elec_pay == 'iban':
|
||||||
record_type = record_gt836
|
record_type = record_gt836
|
||||||
if i.structured_ref :
|
if v['partner_bank_code'] :
|
||||||
v['option_motif']='I'
|
print "IF1"
|
||||||
elif i.structured_ref :
|
v['option_id_bank']= 'A'
|
||||||
record_type = record_gt826
|
v['partner_bank_ident']= v['partner_bank_code']
|
||||||
|
elif v['partner_bank_city']:
|
||||||
|
print "IF2"
|
||||||
|
v['option_id_bank']= 'D'
|
||||||
|
v['partner_bank_ident']= v['partner_bank_name'] +' '+v['partner_bank_street']\
|
||||||
|
+' '+v['partner_bank_zip']+' '+v['partner_bank_city']\
|
||||||
|
+' '+v['partner_bank_country']
|
||||||
|
else:
|
||||||
|
log= log +'\nYou must provide the bank city or the bank code. (invoice '+ invoice_number +')'
|
||||||
|
continue
|
||||||
|
|
||||||
|
# elif elec_pay == 'bvrbank':
|
||||||
|
# record_type = record_gt826
|
||||||
|
# elif elec_pay == 'bvrpost':
|
||||||
|
# record_type = record_gt827
|
||||||
|
# elif elec_pay == 'bvbank':
|
||||||
|
# record_type = record_gt827
|
||||||
|
# elif elec_pay == 'bvpost':
|
||||||
|
# record_type = record_gt827
|
||||||
else:
|
else:
|
||||||
record_type = record_gt827
|
log= log +'\nBank type not supported. (invoice '+ invoice_number +')'
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
dta_line = record_type(v).generate()
|
dta_line = record_type(v).generate()
|
||||||
|
@ -483,7 +538,7 @@ def _create_dta(self,cr,uid,data,context):
|
||||||
pool.get('account.bank.statement').write(cr,uid,[bk_st_id],{'balance_end_real': amount_tot})
|
pool.get('account.bank.statement').write(cr,uid,[bk_st_id],{'balance_end_real': amount_tot})
|
||||||
|
|
||||||
# segment total
|
# segment total
|
||||||
v['amount_total'] = str(amount_tot)
|
v['amount_total'] = str(amount_tot).replace('.',',')
|
||||||
try:
|
try:
|
||||||
if dta :
|
if dta :
|
||||||
dta = dta + record_gt890(v).generate()
|
dta = dta + record_gt890(v).generate()
|
||||||
|
|
|
@ -40,12 +40,10 @@ class account_invoice(osv.osv):
|
||||||
('2bp','To be paid'),
|
('2bp','To be paid'),
|
||||||
('paid','Paid')],
|
('paid','Paid')],
|
||||||
'DTA state',readonly=True,select=True, states={'draft':[('readonly',False)]}),
|
'DTA state',readonly=True,select=True, states={'draft':[('readonly',False)]}),
|
||||||
'structured_ref': fields.boolean('Structured Reference'),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'dta_state': lambda *a: 'none',
|
'dta_state': lambda *a: 'none',
|
||||||
'structured_ref': lambda *a: False,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
account_invoice()
|
account_invoice()
|
||||||
|
|
|
@ -38,3 +38,11 @@ class res_partner(osv.osv):
|
||||||
}
|
}
|
||||||
res_partner()
|
res_partner()
|
||||||
|
|
||||||
|
|
||||||
|
class res_partner_bank(osv.osv):
|
||||||
|
_inherit = "res.partner.bank"
|
||||||
|
_columns = {
|
||||||
|
'bank_code': fields.char('Bank Code', size=64, help='Swift or BIC number'),
|
||||||
|
'bank_clearing': fields.char('Bank Clearing Number', size=64),
|
||||||
|
}
|
||||||
|
res_partner_bank()
|
||||||
|
|
Loading…
Reference in New Issue