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
  • Pagina:
  • 1
  • 2

ARGOMENTO: Field one2many obbligatorio (required)

Field one2many obbligatorio (required) 4 Anni 3 Mesi fa #18000

  • angelov
  • Avatar di angelov
  • Offline
  • Fresh Boarder
  • Messaggi: 11
  • Karma: 0
Buongiorno a tutti,
Ho la necessità di rendere obbligatorio l'inserimento di almeno un fornitore durante l'anagrafica articolo (parliamo del modulo product).

I tentativi falliti sono stati:
- Impostare il field seller_ids come required, ma per un one2many non ha effetto;
- Impostare un sql constrains dove seller_ids doveva essere diverso da NULL.. peccato che sul db non esiste questo campo.

Sinceramente una folle idea mi è venuta:
Quando premo il pulsante "salva" del form di inserimento articolo, controllo tutti i campi product_tmpl_id della tabella product_supplierinfo, e verifico se è presente l'id del prodotto corrente.. se non lo trovo, vuol dire che non ho inserito alcun fornitore, quindi blocco il salvataggio.

A parte essere una soluzione un po articolata.. non so nemmeno se possa funzionare.

Essendo un neofita di questo mondo.. chiedo supporto ai guru del forum.

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

Field one2many obbligatorio (required) 4 Anni 3 Mesi fa #18001

  • enlightx
  • Avatar di enlightx
  • Online
  • Platinum Boarder
  • Messaggi: 6064
  • Ringraziamenti ricevuti 638
  • Karma: 85
penso ti basti fare l'override del metodo create e controllare che seller_ids sia nei valori passati.
poi immagino vorrai anche controllare che tale valore non venga eliminato da successive modifiche e quindi ti servirà fare l'override del metodo write.

però penso ti basti aggiungere required=True alla definizione del campo.
se lo fai dalla vista non funziona, ma se lo fai da python si.

ma forse così è troppo drastico, siccome sarebbe valido in tutti i casi, anche per gli articoli usati internamente all'azienda, quelli producibili, etc
Davide Corio
Odoo Solution Architect
email: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
web: www.davidecorio.com
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Field one2many obbligatorio (required) 4 Anni 3 Mesi fa #18002

  • angelov
  • Avatar di angelov
  • Offline
  • Fresh Boarder
  • Messaggi: 11
  • Karma: 0
Intanto grazie per la risposta...

Non è un problema che il fornitore sia obbligatorio per qualunque prodotto..

Ho provato così:
class product_template(osv.osv):
	_inherit = 'product.template'
	_name = 'product.template'
	
	_columns = {
            'seller_ids': fields.one2many('product.supplierinfo', 'product_tmpl_id', 'Supplier', required=True),
            }
product_template()

Ma nulla... il prodotto viene salvato anche senza fonitore.

Per quanto riguarda invece la soluzione di fare l'override di create e write, puoi darmi qualche dritta? Magari con questa soluzione risolvo.

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

Field one2many obbligatorio (required) 4 Anni 3 Mesi fa #18003

  • enlightx
  • Avatar di enlightx
  • Online
  • Platinum Boarder
  • Messaggi: 6064
  • Ringraziamenti ricevuti 638
  • Karma: 85
mi pare strano che ti permetta di salvare il prodotto anche se è required.
magari il campo è ridefinito altrove. oppure è un baco :)

per l'override di create/write, guarda ad esempio in product/product.py e cerca "def create"
Davide Corio
Odoo Solution Architect
email: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
web: www.davidecorio.com
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Field one2many obbligatorio (required) 4 Anni 3 Mesi fa #18005

  • angelov
  • Avatar di angelov
  • Offline
  • Fresh Boarder
  • Messaggi: 11
  • Karma: 0
Ho trovato dentro la classe product_template
def create(self, cr, uid, vals, context=None):
        ''' Store the initial standard price in order to be able to retrieve the cost of a product template for a given date'''
        product_template_id = super(product_template, self).create(cr, uid, vals, context=context)
        if not context or "create_product_product" not in context:
            self.create_variant_ids(cr, uid, [product_template_id], context=context)
        self._set_standard_price(cr, uid, product_template_id, vals.get('standard_price', 0.0), context=context)

        # TODO: this is needed to set given values to first variant after creation
        # these fields should be moved to product as lead to confusion
        related_vals = {}
        if vals.get('ean13'):
            related_vals['ean13'] = vals['ean13']
        if vals.get('default_code'):
            related_vals['default_code'] = vals['default_code']
        if related_vals:
            self.write(cr, uid, product_template_id, related_vals, context=context)

        return product_template_id

E per fare l'override di questo ci siamo... ma non ho la più pallida idea di come fare il controllo che mi hai consigliato...

Sconfitto :noway:
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Field one2many obbligatorio (required) 4 Anni 3 Mesi fa #18006

  • enlightx
  • Avatar di enlightx
  • Online
  • Platinum Boarder
  • Messaggi: 6064
  • Ringraziamenti ricevuti 638
  • Karma: 85
cose tipo
if not vals.get('seller_ids')
Davide Corio
Odoo Solution Architect
email: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
web: www.davidecorio.com
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
  • Pagina:
  • 1
  • 2
Tempo creazione pagina: 0.156 secondi

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

Protected by R Antispam