GiuseppeS ha scritto:
In sostanza estendi account.invoice ed aggiungi il campo carrier_id
Estendi sale.order e nel metodo che crea i campi della fattura propaghi il carrier_id
Scusa ma non riesco propri a capire. Ne ho provate di tutti i colori ma il risultato è sempre quello... bianco cioè niente.
Mica potresti postarmi un piccolo esempio?
Questo è un altro po di codice che ho provato ma senza risultato.
class AccountCarrier (models.Model):
_inherit = 'account.invoice'
account_carrier_ids = fields.One2many(comodel_name='sale.order', inverse_name='carrier_id', string='Carrier id', delegate=True, store=True)
Ok hai inserito il field del carrier in fattura ... ma chi lo popola?
Devi creare qualcosa del tipo:
class SaleOrderCarrierPropagate (models.Model):
_inherit = 'sale.order'
def _prepare_invoice(self, cr, uid, order, lines, context=None):
invoicevals = super(SaleOrderCarrierPropagate, self)._prepare_invoice(self, cr, uid, order, lines, context)
invoicevals['account_carrier_ids'] = self.carrier_id
return invoicevals
ho scritto codice a caiser direttamente sul forum e la mia memoria non e' il massimo ma spero di aver reso l'idea.
In pratica propaghi il carrier presente nell'ordine sulla fattura e poi da li lo usi nei report, il solo fatto di aver definito il field in fattura non lo popola per magia
Detto questo credo che il solo carrier non ti basti comunque per la fattura accompagnatoria, dovresti prendere il numero di colli, il peso ed altre info che trovi sul picking associato all'ordine. Ancora una volta devi propagare eventuali dati in fattura o associare i picking ad esse e poi decidere come aggregare i dati in presenza di piu' di un picking.
Sono solo spunti ... il come strutturare il tutto spetta a te.