← Back to team overview

openobject-italia-core-devs team mailing list archive

[Merge] lp:~a-camilli/openobject-italia/6.1-fix-Divisione-importo-riba into lp:openobject-italia/6.1

 

Alessandro Camilli has proposed merging lp:~a-camilli/openobject-italia/6.1-fix-Divisione-importo-riba into lp:openobject-italia/6.1.

Requested reviews:
  OpenERP Italia core devs (openobject-italia-core-devs)

For more details, see:
https://code.launchpad.net/~a-camilli/openobject-italia/6.1-fix-Divisione-importo-riba/+merge/152919
-- 
https://code.launchpad.net/~a-camilli/openobject-italia/6.1-fix-Divisione-importo-riba/+merge/152919
Your team OpenERP Italia core devs is requested to review the proposed merge of lp:~a-camilli/openobject-italia/6.1-fix-Divisione-importo-riba into lp:openobject-italia/6.1.
=== modified file 'l10n_it_ricevute_bancarie/account/account.py'
--- l10n_it_ricevute_bancarie/account/account.py	2013-01-04 14:02:10 +0000
+++ l10n_it_ricevute_bancarie/account/account.py	2013-03-12 14:28:22 +0000
@@ -54,6 +54,25 @@
 
 # se distinta_line_ids == None allora non è stata emessa
 class account_move_line(osv.osv):
+    
+    def _get_riba_amount_residual(self, cr, uid, ids, name, arg, context):
+        
+        res = {}
+        amount_residual = 0
+        for line in self.browse(cr, uid, ids, context=context):
+            amount_residual = line.debit
+            if len(line.distinta_line_ids) > 0:
+                if len(line.riba_move_unriconcile) > 0 :
+                    for riba_unreconcile in line.riba_move_unriconcile:
+                        amount_residual = round(amount_residual - riba_unreconcile.amount, 2)
+                else:
+                    amount_residual = 0
+            
+            res[line.id] = {}
+            res[line.id]['riba_amount_residual'] = amount_residual
+            
+        return res
+    
     _inherit = "account.move.line"
 
     _columns = {
@@ -61,6 +80,8 @@
         'riba': fields.related('invoice', 'payment_term', 'riba', 
             type='boolean', string='RiBa', store=False),
         'unsolved_invoice_ids': fields.many2many('account.invoice', 'invoice_unsolved_line_rel', 'line_id', 'invoice_id', 'Unsolved Invoices'),
+        'riba_move_unriconcile': fields.one2many('riba.move.line.unreconcile', 'move_line_id', "Riba to reconcile"),
+        'riba_amount_residual': fields.function(_get_riba_amount_residual, method=True, string="Residuo", multi="line"),
     }
     _defaults = {
         'distinta_line_ids' : None,

=== modified file 'l10n_it_ricevute_bancarie/account/account_view.xml'
--- l10n_it_ricevute_bancarie/account/account_view.xml	2012-12-06 16:45:55 +0000
+++ l10n_it_ricevute_bancarie/account/account_view.xml	2013-03-12 14:28:22 +0000
@@ -58,6 +58,8 @@
                 <field name="date_maturity"/>
                 <field name="riba" />
                 <field name="distinta_line_ids" invisible="1" />
+                <field name="riba_move_unriconcile" invisible="1" />
+                 <field name="riba_amount_residual" invisible="0" />
             </tree>
         </field>
     </record>
@@ -70,8 +72,10 @@
         <field name="type">search</field>
         <field name="arch" type="xml">
             <search string="Search Journal Items">
+                <!-- <filter icon="terp-go-today" string="To Issue" 
+                    domain="[('distinta_line_ids', '=', False)]" name="da_emettere"/> -->
                 <filter icon="terp-go-today" string="To Issue" 
-                    domain="[('distinta_line_ids', '=', False)]" name="da_emettere"/>
+                    domain="['|',('distinta_line_ids', '=', False),('riba_move_unriconcile', '!=', 0)]" name="da_emettere"/>
                 <field name="account_id"/>
                 <field name="partner_id"/>
                 <field name="invoice"/>

=== modified file 'l10n_it_ricevute_bancarie/riba.py'
--- l10n_it_ricevute_bancarie/riba.py	2013-01-04 14:02:10 +0000
+++ l10n_it_ricevute_bancarie/riba.py	2013-03-12 14:28:22 +0000
@@ -364,6 +364,21 @@
                     'move_id': move_id,
                     }, context=context)
                 to_be_reconciled.append([move_line_id, riba_move_line.move_line_id.id])
+                # with saldo < 0 : error
+                #      saldo > 0 : save move_line_id unreconciled 
+                #      saldo = 0 : unlink move unriconciled saved 
+                saldo = riba_move_line.amount_residual
+                if saldo < 0:
+                    raise osv.except_osv(_('Error'),_('%s - Aomunt Riba of %s exceeds value residual (%s) ') % (line.partner_id.name, str(riba_move_line.amount), str(saldo + riba_move_line.amount)))
+                if saldo > 0:
+                    move_line_unreconcile_id = self.pool.get('riba.move.line.unreconcile').create(cr, uid, {
+                    'payment_move_id': move_line_id, 
+                    'move_line_id': riba_move_line.move_line_id.id,
+                    'amount': riba_move_line.amount,
+                    }, context=context)
+                if saldo == 0 and riba_move_line.amount != riba_move_line.amount_origin:
+                    payments_to_reconcile_ids = self.pool.get('riba.move.line.unreconcile').search(cr, uid, [('move_line_id','=', riba_move_line.move_line_id.id)], context=context)
+                    self.pool.get('riba.move.line.unreconcile').unlink(cr, uid, payments_to_reconcile_ids)
             move_line_pool.create(cr, uid, {
                 'name': 'Ri.Ba. %s - line %s' % (line.distinta_id.name, line.sequence),
                 'account_id': line.acceptance_account_id.id,
@@ -383,9 +398,42 @@
             wf_service.trg_validate(
                 uid, 'riba.distinta', line.distinta_id.id, 'accepted', cr)
         return True
-
+    # Variazione importo riba su riga distinta in bozza
+    def onchange_riba_amount(self, cr, uid, ids, amount, context=None):
+        
+        for riba_line in self.browse(cr, uid, ids, context=context):
+            move_amount = riba_line.move_line_ids[0].move_line_id.debit
+            move_amount_residual = riba_line.move_line_ids[0].move_line_id.debit
+            # amount in other lines
+            distinta_move_line_ids = self.pool.get('riba.distinta.move.line').search(
+                cr, uid, [('move_line_id','=', riba_line.move_line_ids[0].move_line_id.id),('riba_line_id','!=', riba_line.id)], context=context)
+            if len(distinta_move_line_ids) > 0 :
+                for distinta_move_line in self.pool.get('riba.distinta.move.line').browse(cr, uid, distinta_move_line_ids, context=context):
+                    move_amount_residual -= distinta_move_line.amount
+            # Control amounts
+            if ( round(move_amount_residual, 2) - amount) < 0:
+                raise osv.except_osv(_('Error'),_('Aomunt Riba exceeds value of move (%s) ') % (str(move_amount)))
+            values = {'amount': amount}
+            self.pool.get('riba.distinta.move.line').write(cr, uid, riba_line.id, values)
+        
+        return {}
 
 class riba_distinta_move_line(osv.osv):
+    
+    def _get_riba_amount_residual(self, cr, uid, ids, name, arg, context):
+        res = {}
+        amount_residual = 0
+        for line in self.browse(cr, uid, ids, context=context):
+            amount_residual = line.move_line_id.debit
+            if len(line.move_line_id.distinta_line_ids) > 0:
+                if len(line.move_line_id.riba_move_unriconcile) > 0 :
+                    for riba_unreconcile in line.move_line_id.riba_move_unriconcile:
+                        amount_residual = round(amount_residual - riba_unreconcile.amount, 2)
+                else:
+                    amount_residual = line.amount_origin - line.amount
+            res[line.id] = {}
+            res[line.id]['amount_residual'] = amount_residual
+        return res
 
     _name = 'riba.distinta.move.line'
     _description = 'Riba details'
@@ -395,5 +443,18 @@
         'amount' : fields.float('Amount', digits_compute=dp.get_precision('Account')),
         'move_line_id': fields.many2one('account.move.line', 'Credit move line'),
         'riba_line_id': fields.many2one('riba.distinta.line', 'Distinta line', ondelete='cascade'),
+        'amount_origin' : fields.float('Amount', digits_compute=dp.get_precision('Account')),
+        'amount_residual': fields.function(_get_riba_amount_residual, method=True, string="Residuo", multi="line"),
     }
 
+class riba_move_line_unreconcile(osv.osv):
+    
+    _name = 'riba.move.line.unreconcile'
+    _description = 'Riba move line unreconcile'
+    _rec_name = 'amount'
+    
+    _columns = {
+        'payment_move_id': fields.many2one('account.move.line', 'Move line to reconcile'),
+        'move_line_id': fields.many2one('account.move.line', 'Credit move line'),
+        'amount' : fields.float('Amount', digits_compute=dp.get_precision('Account')),
+    }

=== modified file 'l10n_it_ricevute_bancarie/riba_view.xml'
--- l10n_it_ricevute_bancarie/riba_view.xml	2012-06-16 10:45:58 +0000
+++ l10n_it_ricevute_bancarie/riba_view.xml	2013-03-12 14:28:22 +0000
@@ -75,10 +75,16 @@
                                             <field name="invoice_number"/>
                                             <field name="invoice_date"/>
                                             <field name="partner_id"/>
-                                            <field name="amount" />
+                                            <!-- <field name="amount" /> -->
+                                            <field name="amount"  readonly="0" on_change="onchange_riba_amount(amount)"/>
                                             <field name="due_date"/>
                                             <field name="state"/>
                                             <field name="reconciled" />
+                                            <field name="move_line_ids">
+                                            	<form>
+                                            		<field name="amount_residual" />
+                                            	</form>
+                                            </field>
                                         </page>
                                         <page string="Accounting">
                                             <separator string="Invoice entries" colspan="4"/>

=== modified file 'l10n_it_ricevute_bancarie/security/ir.model.access.csv'
--- l10n_it_ricevute_bancarie/security/ir.model.access.csv	2012-06-16 10:45:58 +0000
+++ l10n_it_ricevute_bancarie/security/ir.model.access.csv	2013-03-12 14:28:22 +0000
@@ -13,3 +13,7 @@
 access_riba_distinta_move_line_accountant,riba_distinta_move_line accountant,model_riba_distinta_move_line,account.group_account_user,1,0,0,0
 access_riba_configurazione_manager,riba_configurazione,model_riba_configurazione,account.group_account_manager,1,1,1,1
 access_riba_configurazione_invoice,riba_configurazione invoice,model_riba_configurazione,account.group_account_invoice,1,0,0,0
+access_riba_move_line_unreconcile_uinvoice;riba_move_line_unreconcile;model_riba_move_line_unreconcile;account.group_account_invoice;1;1;1;1
+access_riba_move_line_unreconcile_group_invoice;riba_move_line_unreconcile group invoice;model_riba_move_line_unreconcile;account.group_account_invoice;1;1;1;1
+access_riba_move_line_unreconcile_user;riba_move_line_unreconcile user;model_riba_move_line_unreconcile;base.group_user;1;0;0;0
+access_riba_move_line_unreconcile_accountant;riba_move_line_unreconcile accountant;model_riba_move_line_unreconcile;account.group_account_user;1;0;0;0

=== modified file 'l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.py'
--- l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.py	2013-01-04 14:02:10 +0000
+++ l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.py	2013-03-12 14:28:22 +0000
@@ -100,6 +100,7 @@
                             riba_distinta_move_line.create(cr, uid, {
                                 'riba_line_id': rdl_id,
                                 'amount': grouped_line.debit,
+                                'amount_origin': grouped_line.debit,
                                 'move_line_id': grouped_line.id,
                                 }, context=context)
                         del grouped_lines[key]
@@ -109,6 +110,7 @@
                 riba_distinta_move_line.create(cr, uid, {
                     'riba_line_id': rdl_id,
                     'amount': move_line.debit,
+                    'amount_origin': grouped_line.debit,
                     'move_line_id': move_line.id,
                     }, context=context)
             


Follow ups