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: inventario

inventario 6 Anni 1 Mese fa #9629

  • shakin89
  • Avatar di shakin89
  • Offline
  • Platinum Boarder
  • Messaggi: 388
  • Ringraziamenti ricevuti 7
  • Karma: 7
Ciao ragazzi,
Si accinge il momento dell'inventario e visto che dovrò fare l'inventario di circa 8000 prodotti, vorrei velocizzare l'inventario dato che tutti i prodotti hanno o il codice a barre o un id numerico di 7 cifre.
Ho creato una maschera cosi fatta

Popolo il campo Product che è una fk su product.product, seleziono il prodotto, clicco il bottone inserisci, che mi inserisce il campo in stock.inventory.line. La funzione associata ad Inserisci però non torna nulla appositamente cosi non mi si chiude il wizard.
Fatto ciò vorrei ripulire il campo product da codice, senza chiudere il wizard, ci sta un modo?
secondo voi ci sono altre strade più fattibili / semplici / sensate per processare un inventario cosi grosso in poco tempo?
Ciao e grazie
Ultima modifica: 6 Anni 1 Mese fa da shakin89. Motivo: immagine
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:inventario 6 Anni 1 Mese fa #9630

  • enlightx
  • Avatar di enlightx
  • Online
  • Platinum Boarder
  • Messaggi: 6064
  • Ringraziamenti ricevuti 638
  • Karma: 85
non era forse più conveniente usare una campo o2m dove ad ogni invio, scansione barcode o click su inserisci veniva creata una nuova riga vuota?
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.

Re:inventario 6 Anni 1 Mese fa #9634

  • shakin89
  • Avatar di shakin89
  • Offline
  • Platinum Boarder
  • Messaggi: 388
  • Ringraziamenti ricevuti 7
  • Karma: 7
i campi product e location sono entrambi o2m.
L'unico rammarico che ho è che dopo il click su inserisci, che mi crea la riga in stock.inventory.line, non riesco a svuotare il campo product proprio perchè forzo il form a rimanere aperto, non avendo inserito l'istruzione return nella funzione chiamata da inserisci.
spero di essermi spiegato.
ciao e grazie ed auguri di buon natale
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:inventario 6 Anni 1 Mese fa #9635

  • enlightx
  • Avatar di enlightx
  • Online
  • Platinum Boarder
  • Messaggi: 6064
  • Ringraziamenti ricevuti 638
  • Karma: 85
shakin89 ha scritto:
i campi product e location sono entrambi o2m.
L'unico rammarico che ho è che dopo il click su inserisci, che mi crea la riga in stock.inventory.line, non riesco a svuotare il campo product proprio perchè forzo il form a rimanere aperto, non avendo inserito l'istruzione return nella funzione chiamata da inserisci.
spero di essermi spiegato.

product e location nel tuo esempio sono m2o e non o2m, ma non mi riferivo comunque ai singoli campi.

Ciò che intendevo era avere una tabella righe inventario, esattamente come il form dell'inventario standard di openerp.

Con un o2m puoi creare facilmente una seconda linea vuota.

In effetti non mi è chiaro come mai non usi il form standard.
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.

Re:inventario 6 Anni 1 Mese fa #9639

  • shakin89
  • Avatar di shakin89
  • Offline
  • Platinum Boarder
  • Messaggi: 388
  • Ringraziamenti ricevuti 7
  • Karma: 7
enlightx ha scritto:
product e location nel tuo esempio sono m2o e non o2m, ma non mi riferivo comunque ai singoli campi.
Ciò che intendevo era avere una tabella righe inventario, esattamente come il form dell'inventario standard di openerp.
Con un o2m puoi creare facilmente una seconda linea vuota.
In effetti non mi è chiaro come mai non usi il form standard.
ok adesso ho capito.
Non uso il form standard perchè è piu macchinoso del wizard che uso. Ho 8000 pz da inventariare e per ognuno con il form standard dovrei inserire la location dove si trova il pezzo e la quantità. Con il mio form mi limito ad inserire ogni volta solo il condice a barre, poichè gli altri campi rimangono valorizzati con i valori precedenti.
Siccome gli 8000 pezzi non è detto che siano in ordine, se dopo averne fatti 1000 me ne capita uno che ho già inventariato, nel form standard è un delirio trovare gli articoli già inseriti poichè non è presente neanche un filtro di ricerca.
La action che ho definito sul bottone cerca se il prodotto è già tra le linee inserite, in caso positivo incrementa la quantità, in caso negativo inserisce una linea nuova. Questa è la action che ho usato perchè non ho trovato un metodo più veloce per fare quello che mi serve.
versione online
class stock_inventory_barcode(osv.osv_memory):
    _name = 'stock.inventory.barcode'
    _description = 'stock.inventory.barcode'
    _columns = {
        'product_id': fields.many2one('product.product', 'Product', on_delete='cascade', required=True),
        'location_id': fields.many2one('stock.location', 'Location', on_delete='cascade', required=True),
        'qty': fields.integer('Qty', required=True),
    }
    _defaults = {
        'qty': 1,
    }

    def act_insert(self, cr, uid, ids, context={}):
        location = self.browse(cr, uid, ids, context)[0].location_id
        qty = self.browse(cr, uid, ids, context)[0].qty
        product = self.browse(cr, uid, ids, context)[0].product_id
        inventory_line = self.pool.get('stock.inventory.line')

        inventory_id = context and context.get('active_id', False)
        assert inventory_id, _('Active ID is not set in Context')

        inv_ids = inventory_line.search(cr, uid, ['&', '&', ('product_id', '=', product.id),
                                                  ('location_id', '=', location.id),
                                                  ('inventory_id', '=', inventory_id)])
        if inv_ids:
            # prodotto gia in inventory_line aggiorno qta
            if not isinstance(inv_ids, list):
                inv_ids = [inv_ids]
            if len(inv_ids) == 1:
                inv_ids = inv_ids[0]
            prod_inv = inventory_line.browse(cr, uid, inv_ids, context=context)
            inventory_line.write(cr, uid, inv_ids, {'product_qty': prod_inv.product_qty + qty}, context=context)
        else:
            #prodotto non c'e' lo creo
            values = {
                'inventory_id' : inventory_id,
                'product_qty' : qty,
                'location_id' : location.id,
                'product_id' : product.id,
                'product_uom' : product.uom_id.id,
            }
            inventory_line.create(cr, uid,values, context=context)
        #non trovo come pulire self.browse(cr, uid, ids, context)[0].product_id

    def act_close(self, cr, uid, ids, context={}):
        return {}


stock_inventory_barcode()
p.s. ogni suggerimento per migliorare il codice è benvenuto.
Ultima modifica: 6 Anni 1 Mese fa da shakin89.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:inventario 6 Anni 1 Mese fa #9641

  • enlightx
  • Avatar di enlightx
  • Online
  • Platinum Boarder
  • Messaggi: 6064
  • Ringraziamenti ricevuti 638
  • Karma: 85
potresti settare di default sui campi direttamente sul form di default. il vantaggio del o2m se usi un lettore di codice a barre è che puoi far creare una nuova riga ad ogni scansione, così ti dimentichi di openerp e continui a scansionare i prodotti fino alla fine
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.
Tempo creazione pagina: 0.135 secondi

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

Protected by R Antispam