Dovresti die quale versione di Odoo stai usando.
Sulla 7.0 ho rilevato un bug che in alcuni casi non scrive l'ordine di acquisto.
Sino ad oggi credevo fosse un problema della mia versione ma forse è qualcosa di più.
Se hai la 7.0 puoi dare un'occhiata al file /ODOO_PATH/addons/purchase/purchase.py (dove ODOO_PATH è la directory dove è installato Odoo).
Intorno a riga 630 dovresti trovare qualcosa di simile:
for inv in purchase.invoice_ids:
if inv and inv.state not in ('cancel','draft'):
raise osv.except_osv(
_('Unable to cancel this purchase order.'),
_('You must first cancel all receptions related to this purchase order.'))
if inv:
wf_service.trg_validate(uid, 'account.invoice', inv.id, 'invoice_cancel', cr)
self.pool['purchase.order.line'].write(cr, uid, [l.id for l in purchase.order_line],
{'state': 'cancel'})
# [antoniov: 2015-11-12] cancel did not work, added write
self.write(cr,uid,ids,{'state':'cancel'})
Le riga dopo il commento [antoniov] l'ho aggiunta io nella mia versione. Potresti provare ad inserire il codice e vedere se così ti funziona.
ATTENZIONE!
Fatti un copia del DB, per sicurezza.
Per favore, fornisci un feedback che potrebbe essere utile alla Community
Grazie