Benvenuto!
Questo è il forum ufficiale dell'Associazione Odoo Italia. Dopo esserti registrato potrai partecipare ponendo domande o rispondendo a quelle esistenti. Non scordarti di compilare il tuo profilo e consultare le linee guida prima di iniziare a scrivere.
[ODOO 12] creazione di una fattura tramite codice python
Salve,
Scrivo perché non riesco a capire come sia possibile creare una fattura tramite codice.
In pratica vorrei fare così:
nel momento in cui clicco sul bottone "Validate", una fattura passa da stato di "draft" a stato "open". vorrei che questo comando oltre a validare questa fattura, ne cloni una uguale ma in stato di "draft"
Come è possibile farlo tramite codice?
Buongiorno,
premesso che non mi è molto chiaro il perché vuoi realizzare una funzionalità simile, tramite codice, la potresti realizzare ad esempio come segue:
fai l'override del metodo invoice_validate di account.invoice
al suo interno, prima di chiamare il super, ti crei una copia con il metodo copy
Volevo scrivere qua per condividere il codice che ho creato, magari potrebbe servire a qualcuno in futuro.Lo faccio perché noto che questa è una ottima comunità da cui possiamo prendere tutti spunto e darci una mano a vicenda.
questo è il codice che ho fatto:
#creazione invoice se c'è multirata
class AccountInvoice(models.Model):
_inherit='account.invoice'
x_plurianno_check_invoicing = fields.Boolean(string="Corso di Laurea pluriennale")
@api.multi
def invoice_validate(self):
# Clean context from default_type to avoid making attachment
# with wrong values in subsequent operations
cleaned_ctx = dict(self.env.context)
cleaned_ctx.pop('default_type', None)
self = self.with_context(cleaned_ctx)
self.copy({'self.invoice_line_ids.x_numerorata_invoicing': '2'})
super(AccountInvoice, self).invoice_validate()
for invoice in self:
if invoice.company_id.country_id != self.env.ref('base.it'):
continue
if invoice.type == 'in_invoice' or invoice.type == 'in_refund':
invoice.l10n_it_send_state = "other"
continue
invoice._check_before_xml_exporting()
invoice.invoice_generate_xml()
if len(invoice.commercial_partner_id.l10n_it_pa_index or '') == 6:
invoice.message_post(
body=(_(
"Invoices for PA are not managed by Odoo, you can download the document and send it on your own."))
)
invoice.l10n_it_send_state = "other"
continue
invoice.l10n_it_send_state = "to_send"
invoice.send_pec_mail()
Grazie a tutti
Grazie mille, effettivamente così va bene, dopo provo con calma..
in pratica il mio problema è come gestire le fatture su prodotti pluriennali, dove viene creata una fattura per ogni anno.
Il prodotto è un servizio che dura 5 anni, si genera la fattura in stato di open per il primo anno, mentre si creano in stato di draft le altre 4 fatture. Poi se avete altri consigli li accetto volentieri.
Grazie ancora
Resta informato
Informazioni sulla comunità
Strumenti di richiesta
Statistiche
Richiesta del: 02/03/20, 08:13 |
Vista: 1654 volte |
Ultimo aggiornamento: 08/03/20, 19:56 |