diff --git a/addons/account/account.py b/addons/account/account.py
index f1f80316814..98f4e74ae78 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -332,7 +332,7 @@ class account_bank_account(osv.osv):
_columns = {
'name': fields.char('Bank Account', size=64, required=True),
'code': fields.char('Code', size=6),
- 'iban': fields.char('IBAN', size=24),
+ 'iban': fields.char('IBAN', size=21),
'swift': fields.char('Swift Code', size=24),
'currency_id': fields.many2one('res.currency', 'Currency', required=True),
'journal_id': fields.many2one('account.journal', 'Journal', required=True),
diff --git a/addons/account/invoice.py b/addons/account/invoice.py
index 07c59f51bd8..2184ff03a99 100644
--- a/addons/account/invoice.py
+++ b/addons/account/invoice.py
@@ -83,7 +83,7 @@ class account_invoice(osv.osv):
_description = 'Invoice'
_order = "number"
_columns = {
- 'name': fields.char('Invoice Description', size=64, required=True, select=True),
+ 'name': fields.char('Invoice Description', size=64, required=True, select=True,readonly=True, states={'draft':[('readonly',False)]}),
'origin': fields.char('Origin', size=64),
'type': fields.selection([
('out_invoice','Customer Invoice'),
@@ -116,7 +116,7 @@ class account_invoice(osv.osv):
'partner_contact': fields.char('Partner Contact', size=64),
'partner_ref': fields.char('Partner Reference', size=64),
- 'payment_term': fields.many2one('account.payment.term', 'Payment Term'),
+ 'payment_term': fields.many2one('account.payment.term', 'Payment Term',readonly=True, states={'draft':[('readonly',False)]} ),
'period_id': fields.many2one('account.period', 'Force Period', help="Keep empty to use the period of the validation date."),
@@ -128,8 +128,9 @@ class account_invoice(osv.osv):
'amount_untaxed': fields.function(_amount_untaxed, method=True, digits=(16,2),string='Untaxed Amount'),
'amount_tax': fields.function(_amount_tax, method=True, string='Tax'),
'amount_total': fields.function(_amount_total, method=True, string='Total'),
- 'currency_id': fields.many2one('res.currency', 'Currency', required=True),
- 'journal_id': fields.many2one('account.journal', 'Journal', required=True, relate=True),
+ 'currency_id': fields.many2one('res.currency', 'Currency', required=True, readonly=True, states={'draft':[('readonly',False)]}),
+ 'journal_id': fields.many2one('account.journal', 'Journal', required=True, relate=True,readonly=True,
+ states={'draft':[('readonly',False)]}),
}
_defaults = {
'type': lambda *a: 'out_invoice',
diff --git a/addons/l10n_ch/dta/dta_view.xml b/addons/l10n_ch/dta/dta_view.xml
index d380dc7a51a..6bd6a2f5f5f 100644
--- a/addons/l10n_ch/dta/dta_view.xml
+++ b/addons/l10n_ch/dta/dta_view.xml
@@ -28,7 +28,6 @@
-
@@ -41,9 +40,22 @@
+
+
+
+ account.invoice.form
+ account.invoice
+ form
+
+
+
+
+
+
+
@@ -116,7 +128,7 @@
tree,form
-
+
diff --git a/addons/l10n_ch/dta/dta_wizard.py b/addons/l10n_ch/dta/dta_wizard.py
index 1dc07a40cf4..be8af3f2ca3 100644
--- a/addons/l10n_ch/dta/dta_wizard.py
+++ b/addons/l10n_ch/dta/dta_wizard.py
@@ -227,7 +227,6 @@ class record:
class record_gt826(record):
# -> bvr
def init_local_context(self):
- print "gt826"
self.fields=[
('seg_num1',2),
#header
@@ -244,7 +243,7 @@ class record_gt826(record):
('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',80),('invoice_bvr_num',27),#communication structuree
('padding',2),#cle de controle
('padding',5)
]
@@ -254,13 +253,13 @@ class record_gt826(record):
'partner_bank_clearing':'','partner_cpt_benef':'',
'genre_trans':'826',
'conv_cours':'', 'option_id_bank':'D',
+ 'partner_bvr' : '/C/'+ self.global_values['partner_bvr'],
'ref2':'','ref3':'',
'format':'0'})
class record_gt827(record):
# -> interne suisse
def init_local_context(self):
- print "gt826"
self.fields=[
('seg_num1',2),
#header
@@ -280,7 +279,7 @@ class record_gt827(record):
('comp_name',24),('comp_street',24),('comp_zip',12),
('comp_city',12),('comp_country',24),
#seg4
- ('seg_num4',2),('invoice_reference',28),('padding',98),
+ ('seg_num4',2),('partner_comment',28),('padding',98),
#seg5
#('padding',128)
]
@@ -299,7 +298,6 @@ class record_gt827(record):
class record_gt836(record):
# -> iban
def init_local_context(self):
- print "gt836"
self.fields=[
('seg_num1',2),
#header
@@ -321,14 +319,14 @@ class record_gt836(record):
('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),('padding',19)
+ ('seg_num5',2),('option_motif',1),('invoice_reference',105),('format',1),('padding',19)
]
self.pre.update( {
'partner_bank_clearing':'','partner_cpt_benef':'',
'type_paiement':'1','genre_trans':'836',
'conv_cours':'',
- 'ref1': self.global_values['invoice_reference'],
+ 'invoice_reference': self.global_values['invoice_reference'] or self.global_values['partner_comment'],
'ref2':'','ref3':'',
'format':'0'
})
@@ -338,7 +336,6 @@ class record_gt836(record):
class record_gt890(record):
# -> total
def init_local_context(self):
- print "gt890"
self.fields=[
('seg_num1',2),
#header
@@ -359,7 +356,8 @@ def c_ljust(s, size):
"""
s= s or ''
if len(s) > size:
- raise Exception("Too long data ! %s exceed %d character." % (s, size))
+ s= s[:len(a)]
+ print "Too long data ! %s exceed %d character." % (s, size)
return s.decode('utf-8').encode('latin1','replace').ljust(size)
@@ -465,6 +463,8 @@ def _create_dta(self,cr,uid,data,context):
v['partner_bank_iban']= i.partner_bank_id.iban or False
v['partner_bank_number']= i.partner_bank_id.number or False
+ v['partner_bank_number']= v['partner_bank_number'].replace('.','').replace('-','')
+
v['partner_bvr']= i.partner_bank_id.bvr_number or ''
if v['partner_bvr']:
@@ -480,6 +480,8 @@ def _create_dta(self,cr,uid,data,context):
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_bvr_num']= i.bvr_ref_num
+ v['partner_comment']= i.partner_comment
v['partner_name'] = i.partner_id and i.partner_id.name or ''
if i.partner_id and i.partner_id.address and i.partner_id.address[0]:
@@ -508,7 +510,6 @@ def _create_dta(self,cr,uid,data,context):
# si payment structure -> bvr (826)
# si non -> (827)
-
elec_pay = i.partner_bank_id.type_id.elec_pay
if not elec_pay :
log= log +'\nBank type does not support DTA. (invoice '+ invoice_number +')'
@@ -540,14 +541,14 @@ def _create_dta(self,cr,uid,data,context):
elif elec_pay == 'bvrbank' or elec_pay == 'bvrpost':
- if not v['invoice_reference']:
- log= log +'\nYou must provide an invoice reference. (invoice '+ invoice_number +')'
-
+ if not v['invoice_bvr_num']:
+ log= log +'\nYou must provide an Bvr reference number. (invoice '+ invoice_number +')'
+ continue
if not v['partner_bvr']:
log= log +'\nYou must provide a BVR reference number in the partner bank. (invoice '+ invoice_number +')'
continue
record_type = record_gt826
- v['partner_bvr'] = '/C/'+v['partner_bvr']
+
elif elec_pay == 'bvbank':
diff --git a/addons/l10n_ch/dta/invoice.py b/addons/l10n_ch/dta/invoice.py
index ea27bb6c389..324f7e39924 100644
--- a/addons/l10n_ch/dta/invoice.py
+++ b/addons/l10n_ch/dta/invoice.py
@@ -34,17 +34,28 @@ from osv import fields, osv
import ir
class account_invoice(osv.osv):
+
_inherit = "account.invoice"
_columns = {
'dta_state': fields.selection([('none','None'),
('2bp','To be paid'),
('paid','Paid')],
'DTA state',readonly=True,select=True, states={'draft':[('readonly',False)]}),
+ 'bvr_ref_num': fields.char('Bvr Reference Number', size=64,readonly=True, states={'draft':[('readonly',False)]}),
+ 'partner_comment':fields.char('Partner Comment', size=112, readonly=True, states={'draft':[('readonly',False)]}),
}
_defaults = {
'dta_state': lambda *a: 'none',
}
+
+ def _check_bvr(self, cr, uid, ids):
+ return True
+
+ _constraints = [
+ (_check_bvr, 'Error ! Invalid Bvr Number.', ['bvr_ref_num'])
+ ]
+
account_invoice()
diff --git a/addons/l10n_ch/partner.py b/addons/l10n_ch/partner.py
index 5ece8d17d37..768d520866b 100644
--- a/addons/l10n_ch/partner.py
+++ b/addons/l10n_ch/partner.py
@@ -34,7 +34,7 @@ from osv import fields, osv
class res_partner_bank(osv.osv):
_inherit = "res.partner.bank"
_columns = {
- 'bvr_number': fields.char('BVR Reference Number', size=9),
+ 'bvr_number': fields.char('BVR Reference Number', size=11),
'bank_code': fields.char('Bank Code', size=64, help='Swift or BIC number'),
'bank_clearing': fields.char('Bank Clearing Number', size=64),
}
diff --git a/addons/l10n_ch/v11/v11_view.xml b/addons/l10n_ch/v11/v11_view.xml
index e96b233346f..0f198791a79 100644
--- a/addons/l10n_ch/v11/v11_view.xml
+++ b/addons/l10n_ch/v11/v11_view.xml
@@ -42,7 +42,7 @@
form,tree
-
+