221
def get_objects_for_partner(self, cr, uid, ids, context):
223
According to partner's ids:
224
return the most important objects linked to him that are not closed or opened
227
if isinstance(ids, (int, long)):
232
purchase_obj = self.pool.get('purchase.order')
233
sale_obj = self.pool.get('sale.order')
234
account_invoice_obj = self.pool.get('account.invoice') # for Supplier invoice/ Debit Note
235
pick_obj = self.pool.get('stock.picking') # for PICK/ PACK/ PPL/ INCOMING SHIPMENT/ DELIVERY
236
tender_obj = self.pool.get('tender')
237
com_vouch_obj = self.pool.get('account.commitment')# for commitment voucher
238
ship_obj = self.pool.get('shipment')
240
# ids list (the domain are the same as the one used for the action window of the menus)
241
purchase_ids = purchase_obj.search(cr, uid,
242
[('rfq_ok', '=', False), ('partner_id', '=', ids[0]), ('state', 'not in', ['done', 'cancel'])],
243
context=context.update({'purchase_order': True}))
244
rfq_ids = purchase_obj.search(cr, uid,
245
[('rfq_ok', '=', True), ('partner_id', '=', ids[0]), ('state', 'not in', ['done', 'cancel'])],
246
context=context.update({'request_for_quotation': True}))
247
sale_ids = sale_obj.search(cr, uid,
248
[('procurement_request', '=', False), ('partner_id', '=', ids[0]), ('state', 'not in', ['done', 'cancel'])],
250
intermission_vouch_in_ids = account_invoice_obj.search(cr, uid, [
251
('type','=','in_invoice'), ('is_debit_note', '=', False), ('is_inkind_donation', '=', False),
252
('is_intermission', '=', True), ('partner_id', '=', ids[0]), ('state', 'in', ['draft', 'open'])
253
], context = context.update({'type':'in_invoice', 'journal_type': 'intermission'}))
254
nb_intermission_vouch_in_ids = len(intermission_vouch_in_ids)
256
intermission_vouch_out_ids = account_invoice_obj.search(cr, uid, [
257
('type','=','out_invoice'), ('is_debit_note', '=', False), ('is_inkind_donation', '=', False),
258
('is_intermission', '=', True), ('partner_id', '=', ids[0]), ('state', 'in', ['draft', 'open'])
259
], context = context.update({'type':'out_invoice', 'journal_type': 'intermission'}))
260
nb_intermission_vouch_out_ids = len(intermission_vouch_out_ids)
262
donation_ids = account_invoice_obj.search(cr, uid, [
263
('type','=','in_invoice'), ('is_debit_note', '=', False), ('is_inkind_donation', '=', True),
264
('partner_id', '=', ids[0]), ('state', 'in', ['draft', 'open'])
265
], context = context.update({'type':'in_invoice', 'journal_type': 'inkind'}))
266
supp_invoice_ids = account_invoice_obj.search(cr, uid, [
267
('type','=','in_invoice'), ('register_line_ids', '=', False), ('is_inkind_donation', '=', False),
268
('is_debit_note', "=", False), ('partner_id', '=', ids[0]), ('state', 'in', ['draft', 'open'])
269
], context = context.update({'type':'in_invoice', 'journal_type': 'purchase'}))
270
nb_supp_invoice_ids = len(supp_invoice_ids)
272
cust_refunds_ids = account_invoice_obj.search(cr, uid,
273
[('type','=','out_refund'), ('partner_id', '=', ids[0]), ('state', 'in', ['draft', 'open'])],
274
context = context.update({'type':'out_refund', 'journal_type': 'sale_refund'}))
275
nb_cust_refunds_ids = len(cust_refunds_ids)
277
debit_note_ids = account_invoice_obj.search(cr, uid, [
278
('type','=','out_invoice'), ('is_debit_note', '!=', False), ('is_inkind_donation', '=', False),
279
('partner_id', '=', ids[0]), ('state', 'in', ['draft', 'open'])
280
], context = context.update({'type':'out_invoice', 'journal_type': 'sale', 'is_debit_note': True}))
281
nb_debit_note_ids = len(debit_note_ids)
283
stock_transfer_vouch_ids = account_invoice_obj.search(cr, uid, [
284
('type','=','out_invoice'), ('is_debit_note', '=', False), ('is_inkind_donation', '=', False),
285
('partner_id', '=', ids[0]), ('state', 'in', ['draft', 'open'])
286
], context = context.update({'type':'out_invoice', 'journal_type': 'sale'}))
287
incoming_ship_ids = pick_obj.search(cr, uid, [
288
('state', 'not in', ['done', 'cancel']), ('type', '=', 'in'), ('subtype', '=', 'standard'),
289
'|', ('partner_id', '=', ids[0]), ('partner_id2', '=', ids[0])
290
], context = context.update({
291
'contact_display': 'partner_address', 'subtype': 'in', 'picking_type': 'incoming_shipment', 'search_default_available':1
293
out_ids = pick_obj.search(cr, uid, [
294
('state', 'not in', ['done', 'cancel']), ('type', '=', 'out'), ('subtype', '=', 'standard'),
295
'|', ('partner_id', '=', ids[0]), ('partner_id2', '=', ids[0])
296
], context = context.update({
297
'contact_display': 'partner_address', 'search_default_available': 1,'picking_type': 'delivery_order', 'subtype': 'standard'
299
pick_ids = pick_obj.search(cr, uid, [
300
('state', 'not in', ['done', 'cancel']), ('type', '=', 'out'), ('subtype', '=', 'picking'),
301
'|', ('partner_id', '=', ids[0]), ('partner_id2', '=', ids[0])
302
], context = context.update({
303
'picking_screen':True, 'picking_type': 'picking_ticket', 'test':True, 'search_default_not_empty':1
305
ppl_ids = pick_obj.search(cr, uid, [
306
('state', 'not in', ['done', 'cancel']), ('type', '=', 'out'), ('subtype', '=', 'ppl'),
307
'|', ('partner_id', '=', ids[0]), ('partner_id2', '=', ids[0])
308
], context=context.update({
309
'contact_display': 'partner_address', 'ppl_screen':True, 'picking_type': 'picking_ticket', 'search_default_available':1
311
tender_ids = [tend for tend in tender_obj.search(cr, uid, [('state', '=', 'comparison')]) if ids[0] in tender_obj.read(cr, uid, tend, ['supplier_ids'])['supplier_ids']]
312
com_vouch_ids = com_vouch_obj.search(cr, uid, [('partner_id', '=', ids[0]), ('state', '!=', 'done')], context=context)
313
ship_ids = ship_obj.search(cr, uid,
314
[('state', 'not in', ['done', 'delivered']), '|', ('partner_id', '=', ids[0]), ('partner_id2', '=', ids[0])],
318
po['name']+_(' (Purchase)') for po in purchase_obj.read(cr, uid, purchase_ids, ['name'], context) if po['name']]
319
+[rfq['name']+_(' (RfQ)') for rfq in purchase_obj.read(cr, uid, rfq_ids, ['name'], context) if rfq['name']]
320
+[so['name']+_(' (Field Order)') for so in sale_obj.read(cr, uid, sale_ids, ['name'], context) if so['name']]
321
+([int_vouch_in['number']+_(' (Intermission Voucher IN)') for int_vouch_in in account_invoice_obj.read(cr, uid, intermission_vouch_in_ids, ['number'], context) if int_vouch_in['number']]\
322
or intermission_vouch_in_ids and [str(nb_intermission_vouch_in_ids)+_(' (Number of Intermission Voucher IN)')])
323
+([int_vouch_out['number']+_(' (Intermission Voucher OUT)') for int_vouch_out in account_invoice_obj.read(cr, uid, intermission_vouch_out_ids, ['number'], context) if int_vouch_out['number']]\
324
or intermission_vouch_out_ids and [str(nb_intermission_vouch_out_ids)+_(' (Number of Intermission Voucher OUT)')])
325
+[donation['name']+_(' (Donation)') for donation in account_invoice_obj.read(cr, uid, donation_ids, ['name'], context) if donation['name']]
326
+([supp_invoice['number']+_(' (Supplier Invoice)') for supp_invoice in account_invoice_obj.read(cr, uid, supp_invoice_ids, ['number'], context) if supp_invoice['number']]\
327
or supp_invoice_ids and [str(nb_supp_invoice_ids)+_(' (Number of Supplier Invoice)')])
328
+([cust_refunds['number']+_(' (Customer Refunds)') for cust_refunds in account_invoice_obj.read(cr, uid, cust_refunds_ids, ['number'], context) if cust_refunds['number']]\
329
or cust_refunds_ids and [str(nb_cust_refunds_ids)+_(' (Number of Customer Refunds)')])
330
+[debit_note['number']+_(' (Debit Note)') for debit_note in account_invoice_obj.read(cr, uid, debit_note_ids, ['number'], context) if debit_note['number']]
331
+[st_transf_vouch['number']+_(' (Stock Transfer Voucher)') for st_transf_vouch in account_invoice_obj.read(cr, uid, stock_transfer_vouch_ids, ['number',], context) if st_transf_vouch['number']]
332
+[inc_ship['name']+_(' (Incoming Shipment)') for inc_ship in pick_obj.read(cr, uid, incoming_ship_ids, ['name'], context) if inc_ship['name']]
333
+[out['name']+_(' (OUT)') for out in pick_obj.read(cr, uid, out_ids, ['name'], context) if out['name']]
334
+[pick['name']+_(' (PICK)') for pick in pick_obj.read(cr, uid, pick_ids, ['name'], context) if pick['name']]
335
+[ppl['name']+_(' (PPL)') for ppl in pick_obj.read(cr, uid, ppl_ids, ['name'], context) if ppl['name']]
336
+[tend['name']+_(' (Tender)') for tend in tender_obj.read(cr, uid, tender_ids, ['name'], context) if tend['name']]
337
+[com_vouch['name']+_(' (Commitment Voucher)') for com_vouch in com_vouch_obj.read(cr, uid, com_vouch_ids, ['name'], context) if com_vouch['name']]
338
+[ship['name']+_(' (Shipment)') for ship in ship_obj.read(cr, uid, ship_ids, ['name'], context) if ship['name']]
341
220
def write(self, cr, uid, ids, vals, context=None):
342
221
if isinstance(ids, (int, long)):
347
225
self._check_main_partner(cr, uid, ids, vals, context=context)
348
226
bro_uid = self.pool.get('res.users').browse(cr,uid,uid)
349
227
bro = bro_uid.company_id