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: Trigger lettore barcode e stampa Qwer report

Trigger lettore barcode e stampa Qwer report 3 Anni 3 Mesi fa #22542

  • burnout75
  • Avatar di burnout75
  • Offline
  • Fresh Boarder
  • Messaggi: 8
  • Ringraziamenti ricevuti 1
  • Karma: 0
Ciao, vorrei lanciare in ambiente Barcode UI la stampa in automatico di un etichetta alla lettura di un codice con lettore.

Prima di creare un modulo ad hoc ho tentato la funzione modificando il file odoo/addons/stock/stock.py
def process_barcode_from_ui(self, cr, uid, picking_id, barcode_str, visible_op_ids, context=None):
        '''This function is called each time there barcode scanner reads an input'''
        lot_obj = self.pool.get('stock.production.lot')
        package_obj = self.pool.get('stock.quant.package')
        product_obj = self.pool.get('product.product')
        stock_operation_obj = self.pool.get('stock.pack.operation')
        stock_location_obj = self.pool.get('stock.location')
        answer = {'filter_loc': False, 'operation_id': False}
        #check if the barcode correspond to a location
        matching_location_ids = stock_location_obj.search(cr, uid, [('loc_barcode', '=', barcode_str)], context=context)
        if matching_location_ids:
            #if we have a location, return immediatly with the location name
            location = stock_location_obj.browse(cr, uid, matching_location_ids[0], context=None)
            answer['filter_loc'] = stock_location_obj._name_get(cr, uid, location, context=None)
            answer['filter_loc_id'] = matching_location_ids[0]
            return answer
        #check if the barcode correspond to a product
        matching_product_ids = product_obj.search(cr, uid, ['|', ('ean13', '=', barcode_str), ('default_code', '=', barcode_str)], context=context)
        if matching_product_ids:
            # Inizio test
            return self.pool.get('report').get_action(cr, uid, matching_product_ids, 'product.etichetta_29mm', context=context)
           # Fine test

Il sistema non genera il report e non restituisce errori anche se la stampa del Qweb report avviene regolarmente se richiamata dal modulo product.

Dove sbaglio?
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Trigger lettore barcode e stampa Qwer report 3 Anni 3 Mesi fa #22543

  • gigidn
  • Avatar di gigidn
  • Offline
  • Platinum Boarder
  • Messaggi: 1925
  • Ringraziamenti ricevuti 446
  • Karma: 22
Se non ricordo male, almeno per la gestione magazzino son quasi sicuro, quella funzione viene invocata da javascript che ogni x secondi legge l'input da tastiera. Dubito che modificando quella funzione e ritornando un report funzioni.

Probabilmente dovresti richiamare la funzione di stampa da javascript.
@KTec
www.ktec.it
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Trigger lettore barcode e stampa Qwer report 3 Anni 3 Mesi fa #22553

  • burnout75
  • Avatar di burnout75
  • Offline
  • Fresh Boarder
  • Messaggi: 8
  • Ringraziamenti ricevuti 1
  • Karma: 0
Grazie della dritta.

Ho creato una funzione dedicata nello stock.py
def print_product_scanned(self, cr, uid, ids, context=None):
        product_obj = self.pool.get('product.product')
        matching_product_ids = product_obj.search(cr, uid, ['|', ('ean13', '=', ids), ('default_code', '=', ids)], context=context)
        if matching_product_ids:
            return self.pool['report'].get_action(cr, uid, matching_product_ids, 'product.product_label_29', context=context)

a sua volta chiamata nello widgets.js e vincolata (la stampa) ai soli articoli in entrata
print: function(ean){
             var self = this;
             if (self.picking_type_id == 1){
                 return new instance.web.Model('stock.picking').call('print_product_scanned',[[ean]])
                           .then(function(action){
                                return self.do_action(action);
                           });
                 }
               },
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Tempo creazione pagina: 0.133 secondi

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

Protected by R Antispam