Alessandro Camilli has proposed merging lp:~a-camilli/openobject-italia/6.1-fix-bugs-ricevute-bancarie 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-bugs-ricevute-bancarie/+merge/156935 Correzioni per: - Errore nella creazione della distinta - Modifica importo ricevuta bancaria -- https://code.launchpad.net/~a-camilli/openobject-italia/6.1-fix-bugs-ricevute-bancarie/+merge/156935 Your team OpenERP Italia core devs is requested to review the proposed merge of lp:~a-camilli/openobject-italia/6.1-fix-bugs-ricevute-bancarie into lp:openobject-italia/6.1.
=== modified file 'l10n_it_ricevute_bancarie/account/account.py' --- l10n_it_ricevute_bancarie/account/account.py 2013-03-09 11:48:05 +0000 +++ l10n_it_ricevute_bancarie/account/account.py 2013-04-03 18:15:30 +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"), 'iban' : fields.related('partner_id', 'bank_ids', 'iban', type='char', string='IBAN', store=False), } _defaults = { === modified file 'l10n_it_ricevute_bancarie/account/account_view.xml' --- l10n_it_ricevute_bancarie/account/account_view.xml 2013-03-09 11:48:05 +0000 +++ l10n_it_ricevute_bancarie/account/account_view.xml 2013-04-03 18:15:30 +0000 @@ -59,6 +59,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> @@ -71,8 +73,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-03-07 19:58:33 +0000 +++ l10n_it_ricevute_bancarie/riba.py 2013-04-03 18:15:30 +0000 @@ -365,6 +365,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, @@ -384,9 +399,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'),_('Residual is %s :Amount Riba exceeds value of move (%s) ') % (str(move_amount_residual), str(move_amount))) + values = {'amount': amount} + self.pool.get('riba.distinta.move.line').write(cr, uid, riba_line.move_line_ids[0].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' @@ -396,5 +444,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 2013-03-07 19:58:33 +0000 +++ l10n_it_ricevute_bancarie/riba_view.xml 2013-04-03 18:15:30 +0000 @@ -76,10 +76,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-04-03 18:15:30 +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-04-03 18:15:30 +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': move_line.debit, 'move_line_id': move_line.id, }, context=context)
_______________________________________________ Mailing list: https://launchpad.net/~openobject-italia-core-devs Post to : openobject-italia-core-devs@lists.launchpad.net Unsubscribe : https://launchpad.net/~openobject-italia-core-devs More help : https://help.launchpad.net/ListHelp