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

« back to all changes in this revision

Viewing changes to purchase_override/purchase.py

  • Committer: jf
  • Date: 2014-01-15 10:21:14 UTC
  • mfrom: (1874.7.55 unifield-wm)
  • Revision ID: jfb@tempo-consulting.fr-20140115102114-zvwpyn3scav602tj
UF-2162 [IMP] Vertical integration - 2nd format of import/export file - Xml
UF-2158 [IMP] Simulation screen to show impact of imported file on validated PO
lp:~unifield-team/unifield-wm/uf-2156-uf-2158-uf-2162

Show diffs side-by-side

added added

removed removed

Lines of Context:
225
225
            res[po.id] = retour
226
226
        return res
227
227
 
 
228
    def _get_project_ref(self, cr, uid, ids, field_name, args, context=None):
 
229
        '''
 
230
        Get the name of the POs at project side
 
231
        '''
 
232
        if isinstance(ids, (int, long)):
 
233
            ids = [ids]
 
234
 
 
235
        res = {}
 
236
        for po in ids:
 
237
            res[po] = ''
 
238
            so_ids = self.get_so_ids_from_po_ids(cr, uid, po, context=context)
 
239
            for so in self.pool.get('sale.order').browse(cr, uid, so_ids, context=context):
 
240
                if so.client_order_ref:
 
241
                    if res[po]:
 
242
                        res[po] += ' - '
 
243
                    res[po] += so.client_order_ref
 
244
 
 
245
        return res
 
246
 
228
247
    _columns = {
229
248
        'order_type': fields.selection([('regular', 'Regular'), ('donation_exp', 'Donation before expiry'), 
230
249
                                        ('donation_st', 'Standard donation'), ('loan', 'Loan'), 
277
296
                        help="Reference of the document that generated this purchase order request."),
278
297
        # UF-2267: Store also the parent PO as reference in the sourced PO
279
298
        'parent_order_name': fields.many2one('purchase.order', string='Parent PO name', help='If the PO is created from a re-source FO, this field contains the relevant original PO name'),
 
299
        'project_ref': fields.char(size=256, string='Project Ref.'),
 
300
        'message_esc': fields.text(string='ESC Message'),
 
301
        'fnct_project_ref': fields.function(_get_project_ref, method=True, string='Project Ref.',
 
302
                                            type='char', size=256, store=False,),
280
303
    }
281
304
 
282
305
    _defaults = {
374
397
 
375
398
        return super(purchase_order, self).unlink(cr, uid, ids, context=context)
376
399
 
377
 
 
378
400
    def _check_restriction_line(self, cr, uid, ids, context=None):
379
401
        '''
380
402
        Check restriction on products
932
954
            for line in po.order_line:
933
955
                if not line.confirmed_delivery_date:
934
956
                    line.write({'confirmed_delivery_date': po.delivery_confirmed_date,}, context=context)
 
957
        # MOVE code for COMMITMENT into wkf_approve_order
935
958
        return True
936
959
 
937
960
    def create_extra_lines_on_fo(self, cr, uid, ids, context=None):
2195
2218
 
2196
2219
        return res
2197
2220
 
 
2221
    def update_origin_link(self, cr, uid, origin, context=None):
 
2222
        '''
 
2223
        Return the FO/IR that matches with the origin value
 
2224
        '''
 
2225
        so_obj = self.pool.get('sale.order')
 
2226
 
 
2227
        tmp_proc_context = context.get('procurement_request')
 
2228
        context['procurement_request'] = True
 
2229
        so_ids = so_obj.search(cr, uid, [('name', '=', origin), ('state', 'in', ('sourced', 'progress', 'manual'))], context=context)
 
2230
        context['procurement_request'] = tmp_proc_context
 
2231
        if so_ids:
 
2232
            return {'link_so_id': so_ids[0]}
 
2233
 
 
2234
        return {}
 
2235
 
2198
2236
    def ask_unlink(self, cr, uid, ids, context=None):
2199
2237
        '''
2200
2238
        Call the unlink method for lines and if the PO becomes empty
2294
2332
 
2295
2333
        return ids
2296
2334
 
2297
 
    def update_origin_link(self, cr, uid, origin, context=None):
2298
 
        '''
2299
 
        Return the FO/IR that matches with the origin value
2300
 
        '''
2301
 
        so_obj = self.pool.get('sale.order')
2302
 
 
2303
 
        tmp_proc_context = context.get('procurement_request')
2304
 
        context['procurement_request'] = True
2305
 
        so_ids = so_obj.search(cr, uid, [('name', '=', origin), ('state', 'in', ('sourced', 'progress', 'manual'))], context=context)
2306
 
        context['procurement_request'] = tmp_proc_context
2307
 
        if so_ids:
2308
 
            return {'link_so_id': so_ids[0]}
2309
 
 
2310
 
        return {}
2311
 
 
2312
2335
    def unlink(self, cr, uid, ids, context=None):
2313
2336
        '''
2314
2337
        Update the merged line
2429
2452
 
2430
2453
        return result
2431
2454
 
 
2455
    def _get_project_po_ref(self, cr, uid, ids, field_name, args, context=None):
 
2456
        '''
 
2457
        Return the name of the PO at project side
 
2458
        '''
 
2459
        if isinstance(ids, (int, long)):
 
2460
            ids = [ids]
 
2461
 
 
2462
        res = {}
 
2463
        for line_id in ids:
 
2464
            res[line_id] = ''
 
2465
            sol_ids = self.get_sol_ids_from_pol_ids(cr, uid, line_id, context=context)
 
2466
            for sol in self.pool.get('sale.order.line').browse(cr, uid, sol_ids, context=context):
 
2467
                if sol.order_id and sol.order_id.client_order_ref:
 
2468
                    if res[line_id]:
 
2469
                        res[line_id] += ' - '
 
2470
                    res[line_id] += sol.order_id.client_order_ref
 
2471
 
 
2472
        return res
 
2473
 
2432
2474
    _columns = {
2433
2475
        'is_line_split': fields.boolean(string='This line is a split line?'), # UTP-972: Use boolean to indicate if the line is a split line
2434
2476
        'merged_id': fields.many2one('purchase.order.merged.line', string='Merged line'),
2445
2487
 
2446
2488
        # This field is used to identify the FO PO line between 2 instances of the sync
2447
2489
        'sync_order_line_db_id': fields.text(string='Sync order line DB Id', required=False, readonly=True),
 
2490
        'external_ref': fields.char(size=256, string='Ext. Ref.'),
 
2491
        'project_ref': fields.char(size=256, string='Project Ref.'),
 
2492
        'select_fo': fields.many2one('sale.order', string='FO'),
2448
2493
        'has_to_be_resourced': fields.boolean(string='Has to be re-sourced'),
2449
2494
        'select_fo': fields.many2one('sale.order', string='FO'),
 
2495
        'fnct_project_ref': fields.function(_get_project_po_ref, method=True, string='Project PO',
 
2496
                                            type='char', size=128, store=False),
2450
2497
    }
2451
2498
 
2452
2499
    _defaults = {