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",
|
||||
"website": "http://www.tinyerp.com",
|
||||
"depends" : ["base", "account"],
|
||||
"init_xml" : [],
|
||||
"init_xml" : ["dta/dta_data.xml"],
|
||||
# "init_xml" : ["zip_code_default.xml"],
|
||||
"demo_xml" : ["vaudtax_data_demo.xml","dta/dta_demo.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>
|
||||
<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">
|
||||
<field name="name">FORTIS BANK</field>
|
||||
<field name="number">1234567</field>
|
||||
<field name="bank_name">Fortis Banque</field>
|
||||
<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 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="number">7654321</field>
|
||||
<field name="bank_name">Dexia Banque</field>
|
||||
<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 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="number">7654321</field>
|
||||
<field name="bank_name">Dexia Banque</field>
|
||||
<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 model="res.partner" id="base.res_partner_agrolait">
|
||||
|
@ -70,7 +58,7 @@
|
|||
<field name="dta_state">2bp</field>
|
||||
<field name="type">in_invoice</field>
|
||||
<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="account_id" ref="account.a_pay"/>
|
||||
<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">
|
||||
<field name="name">account.invoice.form</field>
|
||||
<field name="model">account.invoice</field>
|
||||
|
@ -27,7 +40,6 @@
|
|||
<field name="journal_id" position="after">
|
||||
<newline/>
|
||||
<field name="dta_state" select="1"/>
|
||||
<field name="structured_ref" />
|
||||
</field>
|
||||
</field>
|
||||
|
||||
|
|
|
@ -167,8 +167,8 @@ class record:
|
|||
self.fields = []
|
||||
self.global_values = global_context_dict
|
||||
self.pre={'padding':'','seg_num1':'01','seg_num2':'02',
|
||||
'seg_num3':'03','seg_num4':'04','seg_num5':'05',
|
||||
'type_paiement':'0', 'flag':'0', 'zero5':'00000'
|
||||
'seg_num3':'03','seg_num4':'04','seg_num5':'05',
|
||||
'type_paiement':'0', 'flag':'0', 'zero5':'00000'
|
||||
}
|
||||
self.post={}
|
||||
self.init_local_context()
|
||||
|
@ -232,7 +232,32 @@ class record_gt826(record):
|
|||
class record_gt827(record):
|
||||
# -> interne suisse
|
||||
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),
|
||||
('comp_city',15),('comp_country',10),('padding',9),
|
||||
#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),
|
||||
#seg4
|
||||
('seg_num4',2),('partner_name',35),('partner_street',35),('partner_zip',10),('partner_city',15),
|
||||
('partner_country',10),('padding',21),
|
||||
#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':'',
|
||||
'type_paiement':'1', 'genre_trans':'836',
|
||||
'conv_cours':'', 'option_id_bank':'D',
|
||||
'conv_cours':'',
|
||||
'ref1': self.global_values['invoice_reference'],
|
||||
'ref2':'','ref3':'',
|
||||
'partner_iban': self.global_values['partner_bank_number'],
|
||||
'format':'0'})
|
||||
self.post.update({'option_motif':'U'})
|
||||
self.post.update({'comp_dta':'','option_motif':'U'})
|
||||
|
||||
|
||||
class record_gt890(record):
|
||||
|
@ -286,7 +311,7 @@ class record_gt890(record):
|
|||
('genre_trans',3),
|
||||
('type_paiement',1),('flag',1),
|
||||
#total
|
||||
('amount_total',16)]
|
||||
('amount_total',16),('padding',59)]
|
||||
|
||||
self.pre.update({'partner_bank_clearing':'','partner_cpt_benef':'',
|
||||
'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_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'] :
|
||||
return {'note':'Bank account of the company not well defined.'}
|
||||
if not v['comp_bank_clearing']:
|
||||
return {'note':'You must provide a Clearing Number for your bank account.'}
|
||||
|
||||
user = pool.get('res.users').browse(cr,uid,[uid])[0]
|
||||
company= user.company_id
|
||||
|
@ -339,9 +365,10 @@ def _create_dta(self,cr,uid,data,context):
|
|||
|
||||
|
||||
v['comp_bank_number'] = bank.number or ''
|
||||
|
||||
if not v['comp_bank_number'] : # ex iban
|
||||
return {'note':'No account number for the company bank account.'}
|
||||
|
||||
v['comp_bank_iban'] = bank.iban or ''
|
||||
|
||||
inv_obj = pool.get('account.invoice')
|
||||
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):
|
||||
|
||||
|
||||
print "BCL SUR LES I"
|
||||
i = dtal.name #dta_line.name = invoice's id
|
||||
invoice_number = i.number or '??'
|
||||
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['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_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_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['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_city']= i.partner_id.address[0].city
|
||||
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:
|
||||
v['partner_street'] =''
|
||||
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
|
||||
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
|
||||
if i.structured_ref :
|
||||
v['option_motif']='I'
|
||||
elif i.structured_ref :
|
||||
record_type = record_gt826
|
||||
if v['partner_bank_code'] :
|
||||
print "IF1"
|
||||
v['option_id_bank']= 'A'
|
||||
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:
|
||||
record_type = record_gt827
|
||||
log= log +'\nBank type not supported. (invoice '+ invoice_number +')'
|
||||
continue
|
||||
|
||||
|
||||
try:
|
||||
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})
|
||||
|
||||
# segment total
|
||||
v['amount_total'] = str(amount_tot)
|
||||
v['amount_total'] = str(amount_tot).replace('.',',')
|
||||
try:
|
||||
if dta :
|
||||
dta = dta + record_gt890(v).generate()
|
||||
|
|
|
@ -40,12 +40,10 @@ class account_invoice(osv.osv):
|
|||
('2bp','To be paid'),
|
||||
('paid','Paid')],
|
||||
'DTA state',readonly=True,select=True, states={'draft':[('readonly',False)]}),
|
||||
'structured_ref': fields.boolean('Structured Reference'),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'dta_state': lambda *a: 'none',
|
||||
'structured_ref': lambda *a: False,
|
||||
}
|
||||
|
||||
account_invoice()
|
||||
|
|
|
@ -38,3 +38,11 @@ class res_partner(osv.osv):
|
|||
}
|
||||
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