Questo sito utilizza cookie per le proprie funzionalità e per inviarti pubblicità e servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie.

Accedendo al link http://www.odoo-italia.org/index.php/home/cookie-policy puoi leggere in dettaglio le modalità di trattamento dei cookie da parte dell'Associazione Odoo Italia.

Benvenuto, Ospite
Nome utente: Password: Ricordami
Ricordati di dichiarare la versione di Odoo a cui riferisce la domanda

ARGOMENTO: TypeError: 'long' object is not iterable

TypeError: 'long' object is not iterable 2 Anni 7 Mesi fa #24457

  • External
  • Avatar di External
  • Offline
  • Fresh Boarder
  • Messaggi: 19
  • Karma: 0
OpenErp 7
In:
Vendite -> Ordini di vendita -> selezionando un ordine di vendita

Tentando di generare una fattura (di un ordine), ricevo il seguente errore:


Server Traceback (most recent call last):
File "/home/odoo/lp/openerp/openerp/addons/web/session.py", line 89, in send
return openerp.netsvc.dispatch_rpc(service_name, method, args)
File "/home/odoo/lp/openerp/openerp/netsvc.py", line 296, in dispatch_rpc
result = ExportService.getService(service_name).dispatch(method, params)
File "/home/odoo/lp/openerp/openerp/service/web_services.py", line 626, in dispatch
res = fn(db, uid, *params)
File "/home/odoo/lp/openerp/openerp/osv/osv.py", line 190, in execute_kw
return self.execute(db, uid, obj, method, *args, **kw or {})
File "/home/odoo/lp/openerp/openerp/osv/osv.py", line 132, in wrapper
return f(self, dbname, *args, **kwargs)
File "/home/odoo/lp/openerp/openerp/osv/osv.py", line 199, in execute
res = self.execute_cr(cr, uid, obj, method, *args, **kw)
File "/home/odoo/lp/openerp/openerp/osv/osv.py", line 187, in execute_cr
return getattr(object, method)(cr, uid, *args, **kw)
File "/home/odoo/lp/openerp/openerp/addons/sale/wizard/sale_make_invoice_advance.py", line 174, in create_invoices
res = sale_obj.manual_invoice(cr, uid, sale_ids, context)
File "/home/odoo/lp/openerp/openerp/addons/sale/sale.py", line 436, in manual_invoice
wf_service.trg_validate(uid, 'sale.order', id, 'manual_invoice', cr)
File "/home/odoo/lp/openerp/openerp/workflow/wkf_service.py", line 119, in trg_validate
res2 = instance.validate(cr, id, ident, signal)
File "/home/odoo/lp/openerp/openerp/workflow/instance.py", line 43, in validate
workitem.process(cr, witem, ident, signal, force_running, stack=stack)
File "/home/odoo/lp/openerp/openerp/workflow/workitem.py", line 60, in process
ok = _split_test(cr, workitem, activity, ident, signal, stack)
File "/home/odoo/lp/openerp/openerp/workflow/workitem.py", line 175, in _split_test
_join_test(cr, t[0], t[1], ident, stack)
File "/home/odoo/lp/openerp/openerp/workflow/workitem.py", line 183, in _join_test
create(cr,[activity], inst_id, ident, stack)
File "/home/odoo/lp/openerp/openerp/workflow/workitem.py", line 40, in create
process(cr, res, ident, stack=stack)
File "/home/odoo/lp/openerp/openerp/workflow/workitem.py", line 52, in process
result = _execute(cr, workitem, activity, ident, stack)
File "/home/odoo/lp/openerp/openerp/workflow/workitem.py", line 127, in _execute
id_new = wkf_expr.execute(cr, ident, workitem, activity)
File "/home/odoo/lp/openerp/openerp/workflow/wkf_expr.py", line 67, in execute
return _eval_expr(cr, ident, workitem, activity)
File "/home/odoo/lp/openerp/openerp/workflow/wkf_expr.py", line 57, in _eval_expr
ret = eval(line, env, nocopy=True)
File "/home/odoo/lp/openerp/openerp/tools/safe_eval.py", line 285, in safe_eval
return eval(test_expr(expr, _SAFE_OPCODES, mode=mode), globals_dict, locals_dict)
File "", line 1, in <module>
File "/home/odoo/lp/openerp/openerp/osv/orm.py", line 377, in function_proxy
return attr(self._cr, self._uid, [self._id], *args, **kwargs)
File "/home/odoo/lp/openerp/openerp/addons/sale_stock/sale_stock.py", line 193, in action_invoice_create
res = super(sale_order,self).action_invoice_create( cr, uid, ids, grouped=grouped, states=states, date_invoice = date_invoice, context=context)
File "/home/odoo/lp/openerp/openerp/addons/sale/sale.py", line 541, in action_invoice_create
res = self._make_invoice(cr, uid, order, il, context=context)
File "/home/odoo/lp/openerp/openerp/addons/l10n_it_sale/sale/sale.py", line 52, in _make_invoice
partner.transportation_reason_id.id),
File "/home/odoo/lp/openerp/openerp/addons/account_makeover/invoice/account_invoice.py", line 583, in write
for t_id in ids:
TypeError: 'long' object is not iterable


questo è il codice rilevante in account_invoice.py :

def write(self, cr, uid, ids, vals, context=None):
if context is None:
context = {}

for t_id in ids:
t_acc_inv = self.browse(cr, uid, t_id)
...(continua)...


questo è il codice rilevante in sale.py :

def _make_invoice(self, cr, uid, order, lines, context={}):
inv_id = super(sale_order, self)._make_invoice(cr, uid, order, lines, context)
partner = self.pool.get('res.partner').browse(cr , uid, order.partner_id.id)
self.pool.get('account.invoice').write(cr, uid, inv_id, {
# 'order_id': order.id,
'carriage_condition_id': partner.carriage_condition_id.id,
'goods_description_id': partner.goods_description_id.id,
'transportation_reason_id': partner.transportation_reason_id.id,
})
return inv_id

A questo punto non mi è chiaro se l'errore sia in:
inv_id = super(sale_order, self)._make_invoice(cr, uid, order, lines, context)
O in
partner = self.pool.get('res.partner').browse(cr , uid, order.partner_id.id)

Qualunque suggerimento è benvenuto,
grazie.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

TypeError: 'long' object is not iterable 2 Anni 7 Mesi fa #24461

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
Questo è un errore tipico di quando si chiama una funzione a al posto della lista ids si passa un numero
es.
ids = 1
self.write(cr, uid, ids, {'name': 'ciao'}, context=context)

a volte può andarti bene ma è sempre meglio passare (può esserci infatti del codice scritto da altri, degli override o simili, che cerchi di leggere ciclicamente ids):
ids = [1]

segnalo anche un errore a livello prestazionale:
for t_id in ids:
    t_acc_inv = self.browse(cr, uid, t_id)

meglio
for item in self.browse(cr, uid, ids):
    t_acc_inv = item.id
Ultima modifica: 2 Anni 7 Mesi fa da NicoTheBrush.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

TypeError: 'long' object is not iterable 2 Anni 7 Mesi fa #24474

  • External
  • Avatar di External
  • Offline
  • Fresh Boarder
  • Messaggi: 19
  • Karma: 0
Grazie per la tua rapidissima risposta, Nicola.

Il punto è che questo non è codice scritto da me, ma codice proveniente da un (pull?) eseguito attraverso il comando bzr,
precisamente:
openerp@ubuntu:~$bzr branch lp:openobject-server/7.0 openerp
openerp@ubuntu:~$bzr branch lp:openerp-web/7.0 web
openerp@ubuntu:~$bzr branch lp:openobject-addons/7.0 addons
come suggerito quì:
wiki.odoo-italia.org/doku.php/area_tecni...ubuntu_12.04/openerp

Ho forse installato una "vecchia" versione di OpenErp 7?
E se si, che procedimento mi consigli di seguire per aggiornare la mia installazione?

Grazie.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

TypeError: 'long' object is not iterable 2 Anni 7 Mesi fa #24477

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
... per farlo funzionare al volo puoi modificare il file:
File "/home/odoo/lp/openerp/openerp/addons/account_makeover/invoice/account_invoice.py", line 583,

prima del ciclo
for t_id in ids:

metterei un:
if type(ids) in (long, int):
    ids = [ids]
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Ringraziano per il messaggio: External

TypeError: 'long' object is not iterable 2 Anni 7 Mesi fa #24480

  • External
  • Avatar di External
  • Offline
  • Fresh Boarder
  • Messaggi: 19
  • Karma: 0
Grazie Nicola,
Il tuo snippet ha risolto il problema.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Tempo creazione pagina: 0.145 secondi

Odoo Italia Associazione - C.F: 94200470485 - Sede: Viale dei Cadorna, 83 - Firenze - Italy

Protected by R Antispam