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

ARGOMENTO: domain dinamico [8.0]

domain dinamico [8.0] 1 Anno 9 Mesi fa #28039

  • MiCantino
  • Avatar di MiCantino
  • Offline
  • Expert Boarder
  • Messaggi: 137
  • Ringraziamenti ricevuti 7
  • Karma: 1
Buongiorno!
SELECT replace(default_code, '-','') FROM product_product where default_code ilike '%123456%';

Mi rendo che come incipit questo lasci un po' a desiderare, ma non sapevo come arrivare al punto.

Ho nei codici dei prodotti dei caratteri non alfanumerici (spazi, trattini, punti).
Visto che questi codici in alcuni cataloghi sono riportati in maniera differente ma fanno riferimento sempre allo stesso prodotto, gli utenti dell'ufficio acquisti per evitare di continuare a duplicare prodotti come piovesse mi hanno chiesto di mettere in atto un barbatrucco: in pratica scrivo "152-88a" ma odoo mi trova "152 88a" oppure "152.88a" (ma anche "15288a" va bene).

Ho pensato, va bene faccio così:
('replace("product_tmpl_id.default_code", "-",""')', 'ilike', '%'+ name +'%'
Ma utilizzare nella definizione del domain una sintassi di questo tipo non è purtroppo possibile

La soluzione alla quale ho pensato è quella di andare a creare un campo parallelo dove scrivo i miei codici "normalizzati" e far puntare le ricerche ANCHE su quei campi. Questo significa andare a riscrivere i metodi di salvataggio per tutti i codici e uno script che mi normalizzi i codici attualmente presenti nella base dati e li salvi nei nuovi campi di appoggio. Badilate di codice.

Prima di partire... qualche suggerimento?
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

domain dinamico [8.0] 1 Anno 9 Mesi fa #28045

  • Antoniov
  • Avatar di Antoniov
  • Online
  • Administrator
  • Messaggi: 1555
  • Ringraziamenti ricevuti 283
  • Karma: -115
Temo che dovrai scrivere del codice, si tratta di capire come e quando

Una possibile soluzione è creare un modulo che eredita la classe dei prodotti e ridefiisce i metodi di scrittura.
Vantaggi: semplice e rapido
Svantaggi: Limita tutti i codici, potresti avere problemi non facilmente risolvibili

Altra soluzione: il modulo che eredita la classe utilizza un campo di ricerca basato su funzione
Vantaggi: poco impatto nel DB, non dovresti aver problemi
Svantaggi: la ricerca non è automatica, l'operatore deve cercare il campo specifico opuure devi creare filtri ad hoc
Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo. - Presidente eletto dell'associazione
Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Ringraziano per il messaggio: MiCantino

domain dinamico [8.0] 1 Anno 9 Mesi fa #28048

  • enlightx
  • Avatar di enlightx
  • Online
  • Platinum Boarder
  • Messaggi: 6064
  • Ringraziamenti ricevuti 638
  • Karma: 85
MiCantino ha scritto:
in pratica scrivo "152-88a" ma odoo mi trova "152 88a" oppure "152.88a" (ma anche "15288a" va bene).

Se cerchi "152%88a" Odoo ti tira fuori tutte e tre le occorrenze.
Questo sulla 10.0...sulla 8.0 non ricordo, ma penso dovrebbe funzionare correttamente.
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.

domain dinamico [8.0] 1 Anno 9 Mesi fa #28049

  • MiCantino
  • Avatar di MiCantino
  • Offline
  • Expert Boarder
  • Messaggi: 137
  • Ringraziamenti ricevuti 7
  • Karma: 1
con questa sintassi troverei anche "152[X]88a", mentre vorrei trovare solo "152-88a", "152.88a" e "152 88a"
In ogni caso il problema è che non è la mia chiave da trattare (avrei già fatto), ma il valore salvato
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

domain dinamico [8.0] 1 Anno 9 Mesi fa #28050

  • MiCantino
  • Avatar di MiCantino
  • Offline
  • Expert Boarder
  • Messaggi: 137
  • Ringraziamenti ricevuti 7
  • Karma: 1
Antoniov ha scritto:
Altra soluzione: il modulo che eredita la classe utilizza un campo di ricerca basato su funzione
Vantaggi: poco impatto nel DB, non dovresti aver problemi
Svantaggi: la ricerca non è automatica, l'operatore deve cercare il campo specifico opuure devi creare filtri ad hoc

Non credo di aver capito...
i codici da "normalizzare" sono quelli dei fornitori (product.supplier_info), il "Riferimento interno" (product,.product) e il Codice Prodotto del produttore (product.template).
come faccio ad invocare le funzioni nella name_search?
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

domain dinamico [8.0] 1 Anno 9 Mesi fa #28051

  • Antoniov
  • Avatar di Antoniov
  • Online
  • Administrator
  • Messaggi: 1555
  • Ringraziamenti ricevuti 283
  • Karma: -115
enlightx ha scritto:
MiCantino ha scritto:
in pratica scrivo "152-88a" ma odoo mi trova "152 88a" oppure "152.88a" (ma anche "15288a" va bene).

Se cerchi "152%88a" Odoo ti tira fuori tutte e tre le occorrenze.
Questo sulla 10.0...sulla 8.0 non ricordo, ma penso dovrebbe funzionare correttamente.

Il carattere '%' (percento) è standard sql e funziona su tutte le versioni di Odoo, nelle ricerche dei testi (quando il filtro propone "contiene")..
In alcuni casi (ma non sempre) permette di impostare la ricerca "inizia con". Ad esempio
abc%
cerca solo i record che iniziano con abc e non quelli che contengono abc. Questa ricerca funziona correttamente a livello basso ma per qualche strano motivo non smepre è applicata nei filtri. Non ho avuto modi di approfondire.

Un altro carattere speciale è '_' (underscore o sottolineato). Impostando ad esempio
ABC___
cerca solo ed esclusivamente i testi che iniziano per ABC seguiti da 3 caratteri.
La ricerca
ABC_DEF
sarebbe la più simile a quella richiesta, se l'operatore conoscesse l'esatta posizione del carattere aggiuntivo. Infatti trova 'ABC DEF' oppure 'ABC-DEF' oppure 'ABC.DEF' ma anche 'ABCZDEF'

Ribadisco che sono caratteristiche della ricerca SQL e quindi indipendenti dalla versione del software ma addirittura utilizzabili anche in altri software
Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo. - Presidente eletto dell'associazione
Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
  • Pagina:
  • 1
  • 2
Tempo creazione pagina: 0.135 secondi

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

Protected by R Antispam