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

« back to all changes in this revision

Viewing changes to purchase_override/purchase.py

  • Committer: Fabien MORIN
  • Date: 2016-01-15 13:38:04 UTC
  • mto: This revision was merged to the branch mainline in revision 2735.
  • Revision ID: fabien.morin@tempo-consulting.fr-20160115133804-1jkrggrdszy8egf7
SP-223 [IMP] sorry for going back on this change again and again, but using
  limit=1 in combination with order='NO_ORDER' is more logic than using with
  count=True. This also not imply adding a new condition in the search and
  reusing existing code as much as possible. This is a minor modification and
  should not alter current behaviour and performances (or perhaps improve a
them
  just a bit as there is less if in the search)

Show diffs side-by-side

added added

removed removed

Lines of Context:
203
203
                        stock_pickings = [stock_pickings]
204
204
                    for sp in stock_pickings:
205
205
                        inv_ids = inv_obj.search(cursor, user, [('picking_id',
206
 
                            '=', sp)], limit=1, count=True)
 
206
                            '=', sp)], limit=1, order='NO_ORDER')
207
207
                        if inv_ids:
208
208
                            sp_ids.remove(sp)
209
209
                    if sp_ids:
255
255
                    sol_ids = sol_obj.search(
256
256
                        cr, uid,
257
257
                        [('procurement_id', 'in', proc_ids)],
258
 
                        limit=1, context=context, count=True)
 
258
                        limit=1, order='NO_ORDER', context=context)
259
259
                    res[po_data['id']]['po_from_ir'] = bool(sol_ids)
260
260
                    # po_from_fo
261
261
                    sol_ids = sol_obj.search(
262
262
                        cr, uid,
263
263
                        [('procurement_id', 'in', proc_ids),
264
264
                         ('order_id.procurement_request', '=', False)],
265
 
                        limit=1, context=context, count=True)
 
265
                        limit=1, order='NO_ORDER', context=context)
266
266
                    res[po_data['id']]['po_from_fo'] = bool(sol_ids)
267
267
        return res
268
268
 
1723
1723
 
1724
1724
            # if any lines exist, we return False
1725
1725
            if exp_sol_obj.search(cr, uid,
1726
 
                    [('order_id', 'in', all_so_ids)], limit=1, context=context,
1727
 
                    count=True):
 
1726
                    [('order_id', 'in', all_so_ids)], limit=1,
 
1727
                    order='NO_ORDER', context=context):
1728
1728
                return False
1729
1729
 
1730
1730
            if sol_obj.search(cr, uid,
1734
1734
                     ('procurement_id.state', '!=', 'cancel'),
1735
1735
                     ('order_id.procurement_request', '=', False),
1736
1736
                     ('state', 'not in', ['confirmed', 'done'])],
1737
 
                    limit=1, context=context, count=True):
 
1737
                    limit=1, order='NO_ORDER', context=context):
1738
1738
                return False
1739
1739
 
1740
1740
        return True
1850
1850
                    # Search if this move has been processed
1851
1851
                    backmove_ids = move_obj.search(cr, uid,
1852
1852
                            [('backmove_id', '=', move.id)],
1853
 
                            limit=1, count=True)
 
1853
                            limit=1, order='NO_ORDER')
1854
1854
                    if move.state != 'done' and not backmove_ids and not move.backmove_id:
1855
1855
                        if move.product_id.type in ('service', 'service_recep'):
1856
1856
                            location_id = cross_id
2789
2789
 
2790
2790
        other_lines = self.search(cr, uid, [('order_id', '=', order_id),
2791
2791
            ('product_id', '=', product_id), ('product_uom', '=',
2792
 
                product_uom)], limit=1, context=context, count=True)
 
2792
                product_uom)], limit=1, order='NO_ORDER', context=context)
2793
2793
        stages = self._get_stages_price(cr, uid, product_id, product_uom, order, context=context)
2794
2794
 
2795
2795
        if vals.get('origin'):
3103
3103
                for origin in so_obj.read(cr, uid, origin_ids, ['order_line'], context=context):
3104
3104
                    exp_sol_ids = exp_sol_obj.search(cr, uid, [('order_id',
3105
3105
                        '=', origin['id']), ('po_line_id', '!=', line.id)],
3106
 
                        limit=1, context=context, count=True)
 
3106
                        limit=1, order='NO_ORDER', context=context)
3107
3107
                    if not origin['order_line'] and not exp_sol_ids:
3108
3108
                        so_to_cancel_ids.extend(origin_ids)
3109
3109
 
3215
3215
 
3216
3216
            if not self.pool.get('sale.order.line.cancel').search(cr, uid, [
3217
3217
                ('sync_order_line_db_id', '=', line.sync_order_line_db_id),
3218
 
            ], limit=1, context=context, count=True):
 
3218
            ], limit=1, order='NO_ORDER', context=context):
3219
3219
                so_to_cancel = self.cancel_sol(cr, uid, [line.id], context=context)
3220
3220
 
3221
3221
            # we want to skip resequencing because unlink is performed on merged purchase order lines
3232
3232
                ('order_id.state', '!=', 'split'),
3233
3233
                ('id', 'not in', ids),
3234
3234
                ('procurement_id', '=', proc_id)],
3235
 
                limit=1, context=context, count=True):
 
3235
                limit=1, order='NO_ORDER', context=context):
3236
3236
                proc_obj.action_cancel(cr, uid, [proc_id])
3237
3237
 
3238
3238
        self.write(cr, uid, ids, {'state': 'cancel'}, context=context)
3299
3299
                 ('product_id', '=', product_id)],
3300
3300
                order='NO_ORDER', context=context)
3301
3301
        if suppinfo_ids:
3302
 
            pricelist_count = self.pool.get('pricelist.partnerinfo').search(cr, uid,
 
3302
            pricelist = self.pool.get('pricelist.partnerinfo').search(cr, uid,
3303
3303
                [('currency_id', '=', order.pricelist_id.currency_id.id),
3304
3304
                 ('suppinfo_id', 'in', suppinfo_ids),
3305
3305
                 ('uom_id', '=', uom_id),
3306
3306
                 '|', ('valid_till', '=', False),
3307
3307
                 ('valid_till', '>=', order.date_order)],
3308
 
                limit=2, context=context, count=True)
3309
 
            if pricelist_count > 1:
 
3308
                limit=2, context=context)
 
3309
            if len(pricelist) > 1:
3310
3310
                return True
3311
3311
 
3312
3312
        return False
3357
3357
            else:
3358
3358
                domain.append(('split_type_sale_order', '=', 'local_purchase_split_sale_order'))
3359
3359
            sale_id = self.pool.get('sale.order').search(cr, uid, domain,
3360
 
                    limit=1, context=context, count=True)
 
3360
                    limit=1, order='NO_ORDER', context=context)
3361
3361
            if not sale_id:
3362
3362
                res['warning'] = {'title': _('Warning'),
3363
3363
                                  'message': _('The reference \'%s\' put in the Origin field doesn\'t match with a confirmed FO/IR sourced with %s supplier. No FO/IR line will be created for this PO line') % (origin, o_type)}
3638
3638
                 ('order_id', '=', order_id),
3639
3639
                 ('product_id', '=', product_id),
3640
3640
                 ('product_uom', '=', product_uom)],
3641
 
                limit=1, context=context, count=True)
 
3641
                limit=1, order='NO_ORDER', context=context)
3642
3642
        stages = self._get_stages_price(cr, uid, product_id, product_uom, order, context=context)
3643
3643
 
3644
3644
        if not change_price_ok or (other_lines and stages and order.state != 'confirmed' and not context.get('rfq_ok')):
3892
3892
 
3893
3893
            # Add a check to avoid error in server log
3894
3894
            if not pol_obj.search(cr, uid, [('id', '=', wiz.line_id.id)],
3895
 
                    limit=1, context=context, count=True):
 
3895
                    limit=1, order='NO_ORDER', context=context):
3896
3896
                continue
3897
3897
 
3898
3898
            exp_sol_ids = pol_obj.get_exp_sol_ids_from_pol_ids(cr, uid, [wiz.line_id.id], context=context, po_line=wiz.line_id.id)
4017
4017
        exp_sol_ids = exp_sol_obj.search(cr, uid,
4018
4018
                                         [('order_id', 'in', po_so_ids),
4019
4019
                                          ('po_id', '!=', order_id)],
4020
 
                                         limit=1, context=context, count=True)
 
4020
                                         limit=1, order='NO_ORDER', context=context)
4021
4021
 
4022
4022
        if not exp_sol_ids and not po_ids:
4023
4023
            return True