~unifield-team/unifield-wm/us-826

« back to all changes in this revision

Viewing changes to analytic_distribution/wizard/analytic_distribution_wizard.py

  • Committer: Matthieu Dietrich
  • Date: 2012-08-09 11:20:48 UTC
  • mto: This revision was merged to the branch mainline in revision 1132.
  • Revision ID: matthieu.dietrich@geneva.msf.org-20120809112048-6wo5tyd5qgxp0udw
Uf-1167: [IMP] multiple recurring entries improvements

Show diffs side-by-side

added added

removed removed

Lines of Context:
201
201
                    if context.get('from_accrual_line', False):
202
202
                        field.set('domain', "[('id', '=', %s)]" % fp_id)
203
203
                    # If context with 'from' exist AND its content is an integer (so an invoice_id)
204
 
                    elif (context.get('from_invoice', False) and isinstance(context.get('from_invoice'), int)) or (context.get('from_commitment', False) and isinstance(context.get('from_commitment'), int)):
 
204
                    elif (context.get('from_invoice', False) and isinstance(context.get('from_invoice'), int)) or (context.get('from_commitment', False) and isinstance(context.get('from_commitment'), int)) \
 
205
                      or (context.get('from_model', False) and isinstance(context.get('from_model'), int)):
205
206
                        # Filter is only on cost_center and MSF Private Fund on invoice header
206
207
                        field.set('domain', "[('type', '!=', 'view'), ('state', '=', 'open'), ('category', '=', 'FUNDING'), '|', ('cost_center_ids', '=', cost_center_id), ('id', '=', %s)]" % fp_id)
207
208
                    else:
211
212
                dest_fields = tree.xpath('/tree/field[@name="destination_id"]')
212
213
                for field in dest_fields:
213
214
                    if (context.get('from_invoice', False) and isinstance(context.get('from_invoice'), int)) or (context.get('from_commitment', False) and isinstance(context.get('from_commitment'), int)) \
214
 
                        or (context.get('from_purchase', False) and isinstance(context.get('from_purchase'), int)) or (context.get('from_sale_order', False) and isinstance(context.get('from_sale_order'), int)):
 
215
                        or (context.get('from_purchase', False) and isinstance(context.get('from_purchase'), int)) or (context.get('from_sale_order', False) and isinstance(context.get('from_sale_order'), int)) \
 
216
                        or (context.get('from_model', False) and isinstance(context.get('from_model'), int)):
215
217
                        field.set('domain', "[('type', '!=', 'view'), ('state', '=', 'open'), ('category', '=', 'DEST')]")
216
218
                    else:
217
219
                        field.set('domain', "[('type', '!=', 'view'), ('state', '=', 'open'), ('category', '=', 'DEST'), ('destination_ids', '=', parent.account_id)]")
470
472
                res[wiz.id] = True
471
473
            elif wiz.commitment_line_id and wiz.commitment_line_id.commit_id and wiz.commitment_line_id.commit_id.analytic_distribution_id:
472
474
                res[wiz.id] = True
 
475
            if wiz.model_line_id and wiz.model_line_id.model_id and wiz.model_line_id.model_id.analytic_distribution_id:
 
476
                res[wiz.id] = True
473
477
        return res
474
478
 
475
479
    def _get_amount(self, cr, uid, ids, name, args, context=None):
502
506
        'move_line_id': fields.many2one('account.move.line', string="Journal Item"),
503
507
        'commitment_id': fields.many2one('account.commitment', string="Commitment Voucher"),
504
508
        'commitment_line_id': fields.many2one('account.commitment.line', string="Commitment Voucher Line"),
 
509
        'model_id': fields.many2one('account.model', string="Account Model"),
505
510
        'model_line_id': fields.many2one('account.model.line', string="Account Model Line"),
506
511
        'accrual_line_id': fields.many2one('msf.accrual.line', string="Accrual Line"),
507
512
        'distribution_id': fields.many2one('analytic.distribution', string="Analytic Distribution"),
672
677
                raise osv.except_osv(_('Warning'), _('No Allocation done!'))
673
678
            if not wiz.fp_line_ids and wiz.accrual_line_id:
674
679
                raise osv.except_osv(_('Warning'), _('No Allocation done!'))
 
680
            if not wiz.fp_line_ids and (wiz.model_id or wiz.model_line_id) :
 
681
                raise osv.except_osv(_('Warning'), _('No Allocation done!'))
675
682
            # Verify that allocation is 100% on each type of distribution, but only if there some lines
676
683
            for lines in [wiz.line_ids, wiz.fp_line_ids, wiz.f1_line_ids, wiz.f2_line_ids]:
677
684
                # Do nothing if there no lines for the current type
873
880
                    ('purchase_line_id', 'purchase.order.line'), ('register_line_id', 'account.bank.statement.line'), 
874
881
                    ('move_line_id', 'account.move.line'), ('direct_invoice_id', 'wizard.account.invoice'), 
875
882
                    ('direct_invoice_line_id', 'wizard.account.invoice.line'), ('commitment_id', 'account.commitment'), 
876
 
                    ('commitment_line_id', 'account.commitment.line'), ('model_line_id', 'account.model.line'),
 
883
                    ('commitment_line_id', 'account.commitment.line'), ('model_id', 'account.model'), ('model_line_id', 'account.model.line'),
877
884
                    ('accrual_line_id', 'msf.accrual.line'), ('sale_order_id', 'sale.order'), ('sale_order_line_id', 'sale.order.line')]:
878
885
                    if getattr(wiz, el[0], False):
879
886
                        id = getattr(wiz, el[0], False).id
1013
1020
            elif wiz.commitment_line_id:
1014
1021
                pl = wiz.commitment_line_id
1015
1022
                distrib = pl.commit_id and pl.commit_id.analytic_distribution_id or False
 
1023
            elif wiz.model_line_id:
 
1024
                pl = wiz.model_line_id
 
1025
                distrib = pl.model_id and pl.model_id.analytic_distribution_id or False
1016
1026
 
1017
1027
            if distrib:
1018
1028
                # Check if distribution if valid with wizard account