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

ARGOMENTO: Decoratore @api.cr_uid e scrittura dei campi

Decoratore @api.cr_uid e scrittura dei campi 2 Anni 9 Mesi fa #24097

  • vencizon
  • Avatar di vencizon
  • Offline
  • Expert Boarder
  • Messaggi: 121
  • Ringraziamenti ricevuti 3
  • Karma: 1
Salve a tutti,
ho un problema tra vecchie e nuove API.

Ho il seguente codice:
from openerp import fields, models, api

class users_office(models.Model):
    _name = 'users.office'
    
    name = fields.Char(required=True)
    email = fields.Char(required=True)

class customers_data(models.Model):
    _name = 'customers_data'
    
    office = fields.Many2one('users.office', default=_write_office)
    customers = fields.Char(default=_write_customers)
    
    @api.cr_uid
    def check_customers_data(self, cr, uid, context=None):
        ids = self.pool.get('sale.order').search(cr,uid,[('ricevuta_mano', '=', False)])
        sales = self.pool.get('sale.order').browse(cr,uid,ids,context=context)
        dictionary = {}
        for sale_order in sales:
            if sale_order.partner_id.fiscal_code == False and sale_order.partner_id.vat == False:
                dictionary.update({sale_order.partner_id.office.id: dictionary.get(sale_order.partner_id.office.id, "") + ', ' + sale_order.partner_id.name})
        
        for key, value in dictionary.items():
            self.office = self.pool.get('users.office').browse(cr,uid,key,context=context)
            self.customers = value[2:]

Il metodo check_customers_data deve essere invocato ogni giorno dallo scheduler di Odoo (e funziona), il problema è che non riesco a scrivere i campi "office" e "customers", ricevo questo errore:
AttributeError: 'customers_data' object has no attribute 'env'
Ovviamente è dovuto al passaggio delle vecchie API.

Qualcuno sa suggerirmi come risolvere?


P.S.
Il mio obbiettivo è avere un controllo quotidiano sui dati dei clienti.

Se viene emessa una vendita senza ricevuta a mano e il cliente non ha codice fiscale e partita iva valorizzati, deve essere generata un'email verso l'indirizzo della relativa sede (users_office.email).

Ho pensato di scrivere una riga con i dati e inserire un'azione automatica che invia l'email. Se avete altre soluzioni (più pratiche) sono bene accette.

Grazie.
Ultima modifica: 2 Anni 9 Mesi fa da vencizon.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Decoratore @api.cr_uid e scrittura dei campi 2 Anni 9 Mesi fa #24099

  • gigidn
  • Avatar di gigidn
  • Offline
  • Platinum Boarder
  • Messaggi: 1925
  • Ringraziamenti ricevuti 446
  • Karma: 22
Questo è un pezzo di un mio modulo che fa circa quello che vorresti far te ... spero sia utile.
    @api.multi
    def update_forecast(self):

        for contract in self:
            forecast = 0
            qta_da_fatturare = 0
            qta_product = {}
            if not contract.use_intercettazioni:
                continue
            invoice = contract._create_invoice_intercettazioni(auto=True)
            for line in invoice['invoice_line']:
                forecast += line[2]['price_unit'] * line[2]['quantity'] * (1-line[2]['discount']/100)
                qta_product.setdefault(line[2]['product_id'],[]).append(line[2]['quantity'])
            contract.theoretical_intecettazioni = forecast
            for k,v in qta_product.iteritems():
                qta_da_fatturare = max(qta_da_fatturare,sum(v))
            contract.qta_da_fatturare = qta_da_fatturare

    @api.cr_uid
    def create_forecast(self, cr, uid, ids=None, context=None):

        if context is None:
            context = {}

        ids = self.search(cr,uid,[('use_intercettazioni','=',True),('state','in',['open','pending'])],context)

        print 'Eseguo Job con chiamata su',ids
        self.update_forecast(cr,uid,ids,context)

        return None
@KTec
www.ktec.it
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Tempo creazione pagina: 0.140 secondi

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

Protected by R Antispam