Kuldeep Joshi(OpenERP) has proposed merging 
lp:~openerp-dev/openobject-addons/trunk-bug-917863-kjo into 
lp:openobject-addons.

Requested reviews:
  Bhumika (OpenERP) (sbh-openerp)
Related bugs:
  Bug #917863 in OpenERP Addons: "can not convert contact in leads to partner"
  https://bugs.launchpad.net/openobject-addons/+bug/917863

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-917863-kjo/+merge/89200

Give the address and location right to the base.group_sale_salesman
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-917863-kjo/+merge/89200
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-addons/trunk-bug-917863-kjo.
=== modified file 'base_contact/security/ir.model.access.csv'
--- base_contact/security/ir.model.access.csv	2011-12-22 09:12:58 +0000
+++ base_contact/security/ir.model.access.csv	2012-01-19 09:30:09 +0000
@@ -2,4 +2,6 @@
 "access_res_partner_contact","res.partner.contact","model_res_partner_contact","base.group_partner_manager",1,1,1,1
 "access_res_partner_contact_all","res.partner.contact all","model_res_partner_contact","base.group_user",1,0,0,0
 "access_res_partner_location","res.partner.location","model_res_partner_location","base.group_user",1,0,0,0
+"access_res_partner_location_sale_salesman","res.partner.location","model_res_partner_location","base.group_sale_salesman",1,1,1,0
+"access_res_partner_address_sale_salesman","res.partner.address.user","base.model_res_partner_address","base.group_sale_salesman",1,1,1,0
 "access_group_sale_salesman","res.partner.contact.sale.salesman","model_res_partner_contact","base.group_sale_salesman",1,1,1,0

=== modified file 'l10n_ch/bank.py'
--- l10n_ch/bank.py	2011-12-19 16:54:40 +0000
+++ l10n_ch/bank.py	2012-01-19 09:30:09 +0000
@@ -21,6 +21,7 @@
 
 from tools.translate import _
 from osv import fields, osv
+import re
 
 class Bank(osv.osv):
     """Inherit res.bank class in order to add swiss specific field"""
@@ -42,8 +43,8 @@
 
     _columns = {
         'name': fields.char('Description', size=128, required=True),
-        'post_number': fields.char('Post number', size=64),
-        'bvr_adherent_num': fields.char('BVR adherent number', size=11),
+        'post_number': fields.char('Post number', size=64, help="Postal number 0x-xxxxxx-x or xxxxx"),
+        'bvr_adherent_num': fields.char('Bank BVR adherent number', size=11, help="Your Bank adherent number to be printed in references of your BVR. This is not a postal account number."),
         'dta_code': fields.char('DTA code', size=5),
         'print_bank': fields.boolean('Print Bank on BVR'),
         'print_account': fields.boolean('Print Account Number on BVR'),
@@ -69,10 +70,48 @@
     def _prepare_name(self, bank):
         "Hook to get bank number of bank account"
         res = super(ResPartnerBank, self)._prepare_name(bank)
+        res = res or u''
         if bank.post_number:
-            res =  u"%s - %s" % (res, bank.post_number)
+            if res:
+                res =  u"%s - %s" % (res, bank.post_number)
+            else:
+                res = bank.post_number
         return res
 
+    def _check_9_pos_postal_num(self, number):
+        """
+        check if a postal number in format xx-xxxxxx-x is correct,
+        return true if it matches the pattern
+        and if check sum mod10 is ok
+        """
+        from tools import mod10r
+        pattern = r'^[0-9]{2}-[0-9]{1,6}-[0-9]$'
+        if not re.search(pattern, number):
+            return False
+        num, checksum = (number.replace('-','')[:-1], number[-1:])
+        return mod10r(num)[-1:] == checksum
+
+
+    def _check_5_pos_postal_num(self, number):
+        """
+        check if a postal number on 5 positions is correct
+        """
+        pattern = r'^[0-9]{1,5}$'
+        if not re.search(pattern, number):
+            return False
+        return True
+
+    def _check_postal_num(self, cursor, uid, ids):
+        banks = self.browse(cursor, uid, ids)
+        for b in banks:
+            return self._check_9_pos_postal_num(b.post_number) or \
+                   self._check_5_pos_postal_num(b.post_number)
+
+ 
+    _constraints = [(_check_postal_num,
+                    'Please enter a correct postal number. (01-23456-5 or 12345)',
+                    ['post_number'])]    
+
     _sql_constraints = [('bvr_adherent_uniq', 'unique (bvr_adherent_num)',
         'The BVR adherent number must be unique !')]
 

=== modified file 'l10n_ch/bank_view.xml'
--- l10n_ch/bank_view.xml	2011-12-19 16:54:40 +0000
+++ l10n_ch/bank_view.xml	2012-01-19 09:30:09 +0000
@@ -130,12 +130,14 @@
                     </group>
                     <separator colspan="4" string="Financial institute infos"/>
                     <newline/>
-                    <field name="my_bank"  attrs="{'invisible': [('company_id', '=', False)]}" colspan="4"/>
-                    <group string="BVR print options" colspan="4"  attrs="{'invisible': [('my_bank', '!=', True)]}" >
-                        <field name="bvr_adherent_num"/>
-                        <field name="print_bank"/>
-                        <field name="print_account"/>
-                        <newline/>
+                    <group attrs="{'invisible': ['|', ('state', 'not in', ['bvrpost','bvrbank']), ('company_id', '=', False)]}" colspan="4">
+                        <field name="my_bank"  attrs="{'invisible': [('company_id', '=', False)]}" />
+                        <group string="BVR print options" colspan="4"  attrs="{'invisible': [('my_bank', '!=', True)]}" >
+                            <field name="bvr_adherent_num" attrs="{'invisible': [('state','!=','bvrbank')]}"/>
+                            <field name="print_bank"/>
+                            <field name="print_account"/>
+                            <newline/>
+                        </group>
                     </group>
                     <newline/>
                     <field name="bank" />

=== modified file 'l10n_ch/demo/demo.xml'
--- l10n_ch/demo/demo.xml	2011-09-16 14:32:55 +0000
+++ l10n_ch/demo/demo.xml	2012-01-19 09:30:09 +0000
@@ -11,7 +11,7 @@
             <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="post_number">70-004152-8</field>
             <field name="bank" ref="main_bank"/>
             <!-- <field name="iban">CH9100767000S00023455</field> -->
             <field name="bvr_adherent_num">0000000</field>

=== modified file 'l10n_ch/demo/dta_demo.xml'
--- l10n_ch/demo/dta_demo.xml	2011-11-04 16:26:24 +0000
+++ l10n_ch/demo/dta_demo.xml	2012-01-19 09:30:09 +0000
@@ -12,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="post_number">234567</field>
+        <field name="post_number">01-23456-5</field>
         <field name="bank" ref="partner_bank"/>
         <!-- <field name="iban">CH9100767000S00023455</field> -->
     </record>

=== modified file 'l10n_ch/report/report_webkit_html.py'
--- l10n_ch/report/report_webkit_html.py	2011-12-19 16:54:40 +0000
+++ l10n_ch/report/report_webkit_html.py	2012-01-19 09:30:09 +0000
@@ -124,28 +124,24 @@
         invoice_obj = pool.get('account.invoice')
         ids = invoice_ids
         for invoice in invoice_obj.browse(cursor, self.uid, ids):
+            invoice_name = "%s %s" %(invoice.name, invoice.number)
             if not invoice.partner_bank_id:
                 raise except_osv(_('UserError'),
-                        _('No bank specified on invoice:\n' + \
-                                invoice_obj.name_get(cursor, self.uid, [invoice.id],
-                                    context={})[0][1]))
+                        _('No bank specified on invoice:\n%s' %(invoice_name)))
             if not self._compile_check_bvr.match(
                     invoice.partner_bank_id.post_number or ''):
                 raise except_osv(_('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]))
+                        _(('Your bank BVR number should be of the form 0X-XXX-X! '
+                          'Please check your company '
+                          'information for the invoice:\n%s')
+                          %(invoice_name)))
             if invoice.partner_bank_id.bvr_adherent_num \
                     and not self._compile_check_bvr_add_num.match(
                             invoice.partner_bank_id.bvr_adherent_num):
                 raise except_osv(_('UserError'),
-                        _('Your bank BVR adherent number must contain exactly seven' +
-                          'digits!\nPlease check your company ' +
-                          'information for the invoice:\n' +
-                          invoice_obj.name_get(cursor, self.uid, [invoice.id],
-                          context={})[0][1]))
+                        _(('Your bank BVR adherent number must contain only '
+                          'digits!\nPlease check your company '
+                          'information for the invoice:\n%s') %(invoice_name)))
         return ''
 
 class BVRWebKitParser(webkit_report.WebKitParser):

=== modified file 'l10n_ch/sterchi_chart/account.xml'
--- l10n_ch/sterchi_chart/account.xml	2011-12-19 16:54:40 +0000
+++ l10n_ch/sterchi_chart/account.xml	2012-01-19 09:30:09 +0000
@@ -177,12 +177,14 @@
         <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">none</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">none</field>
         </record>
@@ -11802,7 +11804,12 @@
             <field name="property_account_receivable" ref="ch_1100"/>
             <field name="property_account_payable" ref="ch_2000"/>
             <field name="property_account_expense_categ" ref="ch_4200"/>
-            <field name="property_account_income_categ" ref="ch_1000"/>
+            <field name="property_account_income_categ" ref="ch_3200"/>
+            <field name="property_account_expense" ref="ch_4200"/>
+            <field name="property_account_income" ref="ch_3200"/>
+            <field name="property_account_income_opening" ref="ch_2990"/>
+            <field name="property_account_expense_opening" ref="ch_2990"/>
+            <field name="property_reserve_and_surplus_account" ref="ch_2991"/>
         </record>
         
         <!-- journal configuration of account -->

=== modified file 'l10n_ch/wizard/bvr_import.py'
--- l10n_ch/wizard/bvr_import.py	2011-12-19 16:54:40 +0000
+++ l10n_ch/wizard/bvr_import.py	2012-01-19 09:30:09 +0000
@@ -71,6 +71,9 @@
     statement_obj = self.pool.get('account.bank.statement')
     property_obj = self.pool.get('ir.property')
     file = data['form']['file']
+    if not file: 
+        raise osv.except_osv(_('UserError'),
+                             _('Please select a file first!'))
     statement_id = data['id']
     records = []
     total_amount = 0
@@ -239,7 +242,7 @@
 class bvr_import_wizard(osv.osv_memory):
     _name = 'bvr.import.wizard'
     _columns = {
-        'file':fields.binary('BVR File', readonly=True)
+        'file':fields.binary('BVR File')
     }
 
     def import_bvr(self, cr, uid, ids, context=None):

=== modified file 'l10n_ch/wizard/create_dta.py'
--- l10n_ch/wizard/create_dta.py	2011-11-01 10:02:57 +0000
+++ l10n_ch/wizard/create_dta.py	2012-01-19 09:30:09 +0000
@@ -28,6 +28,8 @@
 from tools.translate import _
 import unicode2ascii
 
+import re
+
 TRANS=[
     (u'é','e'),
     (u'è','e'),
@@ -346,6 +348,14 @@
     s = s.decode('utf-8').encode('latin1','replace').ljust(size)
     return s
 
+def _is_9_pos_bvr_adherent(adherent_num):
+    """
+    from a bvr adherent number,
+    return true if 
+    """
+    pattern = r'[0-9]{2}-[0-9]{1,6}-[0-9]'
+    return re.search(pattern, adherent_num)
+
 def _create_dta(obj, cr, uid, data, context=None):
     v = {}
     v['uid'] = str(uid)
@@ -435,10 +445,24 @@
                 or  False
         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:
-                v['partner_bvr'] = v['partner_bvr'][:2] + '0' * \
-                        (9 - len(v['partner_bvr'])) + v['partner_bvr'][2:]
+            is_9_pos_adherent = None
+            # if adherent bvr number is a 9 pos number
+            # add 0 to fill 2nd part plus remove '-'
+            # exemple: 12-567-C becomes 12000567C
+            if _is_9_pos_bvr_adherent(v['partner_bvr']):
+                parts = v['partner_bvr'].split('-')
+                parts[1] = parts[1].rjust(6, '0')
+                v['partner_bvr'] = ''.join(parts)
+                is_9_pos_adherent = True
+            # add 4*0 to bvr adherent number with 5 pos
+            # exemple: 12345 becomes 000012345
+            elif len(v['partner_bvr']) == 5:
+                v['partner_bvr'] = v['partner_bvr'].rjust(9, '0')
+                is_9_pos_adherent = False
+            else:
+                raise osv.except_osv(_('Error'),
+                                     _('Wrong postal number format.\n'
+                                       'It must be 12-123456-9 or 12345 format'))
 
         if pline.bank_id.bank:
             v['partner_bank_city'] = pline.bank_id.bank.city or False
@@ -518,15 +542,39 @@
 
         elif elec_pay == 'bvrbank' or elec_pay == 'bvrpost':
             from tools import mod10r
-            if v['reference']:
-                v['reference'] = v['reference'].replace(' ',
-                        '').rjust(27).replace(' ', '0')
-                if not v['reference'] \
-                    or (mod10r(v['reference'][:-1]) != v['reference'] and \
-                    not len(v['reference']) == 15):
-                    raise osv.except_osv(_('Error'), _('You must provide ' \
-                        'a valid BVR reference number \n' \
-                        'for the line: %s') % pline.name)
+            if not v['reference']:
+                raise osv.except_osv(_('Error'), 
+                                     _('You must provide ' \
+                                       'a BVR reference number \n' \
+                                       'for the line: %s') % pline.name)
+            v['reference'] = v['reference'].replace(' ', '')
+            if is_9_pos_adherent:
+                if len(v['reference']) > 27: 
+                    raise osv.except_osv(_('Error'),
+                                         _('BVR reference number is not valid \n' 
+                                           'for the line: %s. \n'
+                                           'Reference is too long.') % pline.name)
+                # do a mod10 check
+                if mod10r(v['reference'][:-1]) != v['reference']:
+                    raise osv.except_osv(_('Error'),
+                                         _('BVR reference number is not valid \n'
+                                           'for the line: %s. \n'
+                                           'Mod10 check failed') % pline.name)
+                # fill reference with 0
+                v['reference'] = v['reference'].rjust(27, '0')
+            else:
+                # reference of BVR adherent with 5 positions number
+                # have 15 positions references
+                if len(v['reference']) > 15:
+                    raise osv.except_osv(_('Error'),
+                                         _('BVR reference number is not valid \n'
+                                           'for the line: %s. \n'
+                                           'Reference is too long '
+                                           'for this type of beneficiary.') % pline.name)
+                # complete 15 first digit with 0 on left and complete 27 digits with trailing spaces
+                # exemple: 123456 becomes 00000000012345____________
+                v['reference'] = v['reference'].rjust(15, '0').ljust(27, ' ')
+
             if not v['partner_bvr']:
                 raise osv.except_osv(_('Error'), _('You must provide a BVR number\n'
                     'for the bank account: %s' \

=== modified file 'l10n_ch/wizard/create_dta_view.xml'
--- l10n_ch/wizard/create_dta_view.xml	2011-11-16 11:58:10 +0000
+++ l10n_ch/wizard/create_dta_view.xml	2012-01-19 09:30:09 +0000
@@ -8,8 +8,7 @@
             <field name="type">form</field>
             <field name="arch" type="xml">
                 <form string="DTA file creation - Results">
-                    <group width="300" colspan="4">
-                        <separator string="Create DTA - (DTA file will appear after you click on create)" colspan="4"/>
+                    <group colspan="4">
                         <field name="dta_file"/>
                         <group colspan="4">
                             <button special="cancel" string="Cancel" icon="gtk-cancel"  colspan="2"/>
@@ -32,6 +31,7 @@
         
         <record model="ir.values" id="action_account_dtr_create_values">
             <field name="model_id" ref="model_create_dta_wizard" />
+            <field name="object" eval="1" />
             <field name="name">Create DTA</field>
             <field name="key2">client_action_multi</field>
             <field name="value" eval="'ir.actions.act_window,' +str(ref('action_dta_create'))" />

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to