openobject-italia-core-devs team mailing list archive
-
openobject-italia-core-devs team
-
Mailing list archive
-
Message #01195
[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