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: Etichetta su stampante ToshibaTec B452 con aeroo

Etichetta su stampante ToshibaTec B452 con aeroo 6 Anni 8 Mesi fa #7452

  • shakin89
  • Avatar di shakin89
  • Offline
  • Platinum Boarder
  • Messaggi: 388
  • Ringraziamenti ricevuti 7
  • Karma: 7
Ciao ragazzi,
devo stampare su di una stampante toshiba tec b452 un po datata ma che stampa su dei cartellini piccolissimi.
Tale stampante accetta una serie di comandi del genere che venivano inviati alla stampante tramite questo comando
copy stampa.prn \ipserver\tecb452
dove stampa.prn conteneva i comandi della stampante di questo genere.
{PC01;0025,0050,05,05,A,00,B|}
{PC02;0020,0098,05,05,D,00,B|}
{PC03;0125,0098,05,05,A,00,B|}
Adesso ravanando un po in giro [1] mi pare di capire che il metodo più veloce per mandare direttamente alla stampante un tale report sia aeroo che usa un formato in uscita di tipo genshi-raw.
ho creato l'xml in questa maniera.
<record id="product_label_toshibatec_id" model="ir.actions.report.xml">
    <field name="name">product_label_toshibatec_b452</field>
    <field name="type">ir.actions.report.xml</field>
    <field name="model">product.product</field>
    <field name="report_name">product_label</field>
    <field name="report_type">aeroo</field>
    <field name="in_format">genshi-raw</field>
    <!--
    <field name="parser_loc">default</field>
    -->
    <field name="report_rml">product_label_toshibatecb452/report/product_label_template.txt</field>
    <field name="parser_state">default</field>
    <field name="tml_source">file</field>
</record>

<ir_set>
    <field eval="'action'" name="key"/>
    <field eval="'client_print_multi'" name="key2"/>
    <field eval="['product.product']" name="models"/>
    <field name="name">product_label_toshibatec_b452</field>
    <field eval="'ir.actions.report.xml,'+str(product_label_toshibatec_id)" name="value"/>
    <field eval="True" name="isobject"/>
    <field eval="True" name="replace"/>
</ir_set>
</data>
il bottone mi appare correttamente, dentro il report ci sta semplicemente
"${o.name}"
ma mi appare sempre questo errore:
012-06-04 18:16:02,798 7498 ERROR ? openerp.service.web_services: Exception: File is not a zip file
Traceback (most recent call last):
  File "/mnt/dati/openerp/openerp6.1/server/openerp/service/web_services.py", line 727, in go
    (result, format) = obj.create(cr, uid, ids, datas, context)
  File "/mnt/dati/openerp/openerp6.1/openerp-addons/aeroo/report_aeroo/report_aeroo.py", line 679, in create
    return fnct(cr, uid, ids, data, report_xml, context)
  File "/mnt/dati/openerp/openerp6.1/openerp-addons/aeroo/report_aeroo/report_aeroo.py", line 625, in create_source_odt
    return self.create_single_pdf(cr, uid, ids, data, report_xml, context)
  File "/mnt/dati/openerp/openerp6.1/openerp-addons/aeroo/report_aeroo/report_aeroo.py", line 472, in create_single_pdf
    return self.create_aeroo_report(cr, uid, ids, data, report_xml, context=context, output=output)
  File "/mnt/dati/openerp/openerp6.1/openerp-addons/aeroo/report_aeroo/report_aeroo.py", line 387, in create_aeroo_report
    serializer = OOSerializer(template_io, oo_styles=style_io)
  File "/mnt/dati/openerp/openerp6.1/lib/python2.6/site-packages/aeroolib-1.0.0.RC4-py2.6.egg/aeroolib/plugins/opendocument.py", line 823, in __init__
    self.inzip = zipfile.ZipFile(self.template)
  File "/usr/lib/python2.6/zipfile.py", line 696, in __init__
    self._GetContents()
  File "/usr/lib/python2.6/zipfile.py", line 716, in _GetContents
    self._RealGetContents()
  File "/usr/lib/python2.6/zipfile.py", line 728, in _RealGetContents
    raise BadZipfile, "File is not a zip file"
BadZipfile: File is not a zip file
2012-06-04 18:16:03,772 7498 ERROR ? openerp.netsvc: File is not a zip file
(<class 'zipfile.BadZipfile'>, BadZipfile('File is not a zip file',), <traceback object at 0x81a77e8>)
2012-06-04 18:16:03,773 7498 ERROR ? openerp.service.netrpc_server: netrpc: cannot deliver exception message to client
Traceback (most recent call last):
  File "/mnt/dati/openerp/openerp6.1/server/openerp/service/netrpc_server.py", line 71, in run
    valid_exception = Exception(netrpc_handle_exception_legacy(e))
  File "/mnt/dati/openerp/openerp6.1/server/openerp/service/netrpc_server.py", line 93, in netrpc_handle_exception_legacy
    return 'warning -- ' + e.name + '\n\n' + e.value
TypeError: coercing to Unicode: need string or buffer, tuple found

Mi chiedevo dove sto sbagliando o se questa è la strada giusta per un report del genere.
Grazie per ogni info

[1] www.alistek.com/forum/viewtopic.php?f=11...92&hilit=zebra#p1092
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:Etichetta su stampante ToshibaTec B452 con aeroo 6 Anni 8 Mesi fa #7454

  • archetipo
  • Avatar di archetipo
  • Offline
  • Platinum Boarder
  • Messaggi: 331
  • Ringraziamenti ricevuti 5
  • Karma: 8
ciao
una domanda,se ho capito bene la stampante usa dei comandi proprietari che conosci
copy stampa.prn \ipservertecb452
e all interno del file prn,sempre se non ho capito male, c'è una serie di comandi
{PC01;0025,0050,05,05,A,00,B|}
{PC02;0020,0098,05,05,D,00,B|}
{PC03;0125,0098,05,05,A,00,B|}
.....

che equivalgono proprio alle etichette e al loro contenuto.

se ho capito giusto perchè usi aerooo?
quello che ti serve è una funzione in python, che ti faccia da post processor, e ti generi il file prn, che poi viene eseguito in locale dalla macchina al quale è collegata la stampante, che a vedere così sarà su rs232 o su parallela...
Alessio Gerace
github.com/archetipo
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:Etichetta su stampante ToshibaTec B452 con aeroo 6 Anni 8 Mesi fa #7455

  • shakin89
  • Avatar di shakin89
  • Offline
  • Platinum Boarder
  • Messaggi: 388
  • Ringraziamenti ricevuti 7
  • Karma: 7
archetipo ha scritto:
ciao
una domanda,se ho capito bene la stampante usa dei comandi proprietari che conosci
Ciao,
si la stampante usa dei comandi proprietari che conosco, quelli non sono un problema, sono scritti sul manuale della stampante.
e all interno del file prn,sempre se non ho capito male, c'è una serie di comandi
Si all'interno del file ci sono i comandi che impaginano le etichette e definiscono il loro contenuto.
se ho capito giusto perchè usi aerooo?
quello che ti serve è una funzione in python, che ti faccia da post processor, e ti generi il file prn, che poi viene eseguito in locale dalla macchina al quale è collegata la stampante
Ottimo, sembra ancora più facile, l'unica cosa mi sapresti indicare un esempio di come fare un post processor? si tratta di un parser come per i report?
Come faccio poi a collegarlo alla stampa delle etichette? inserisco un bottone che richiama la funzione nel form?
, che a vedere così sarà su rs232 o su parallela...
Si la stampante è su una parallela. La dovrei usare su linux (attualmente è su windows) e pensavo di fare
lp nomefile.prn
Al momento però non posso fare prove perchè la continuano ad usare.
Ciao e grazie dei consigli
Fabrizio
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:Etichetta su stampante ToshibaTec B452 con aeroo 6 Anni 8 Mesi fa #7456

  • archetipo
  • Avatar di archetipo
  • Offline
  • Platinum Boarder
  • Messaggi: 331
  • Ringraziamenti ricevuti 5
  • Karma: 8
Ciao

ok allora dimenticati parser report ecc...

non ho un esempio da indicarti ma ti posso indicare delle linee che almeno io userei:
non è proprio semplice.

il post processor altri non è che una funzione all 'interno di un modulo py
(es. stampa.py)
che importerai nel file py che contiene i model che li generano

server
nel modulo stampa.py costruisci una funzione (stampa) che a partire da un dizionario
costruisce le righe del file,per come formattare i dati fai rif al manuale.
ed abbia un servizio (es. socket client) che invia il file appena generato
al server di stampa.

la funzione "stampa" la integri poi all interno di una funzione chiamata dal button,
della view del model che contiene i dati.

pc (server stampa)
sul pc linux con la stampate installata potresti scrivere un piccolo servizio di rete in py che ascolta su un canale socket per es. , e che è in ascolto in attesa del file, e quando arriva, procede con un comando schell di stampa.


spero di non averti confuso troppo le idee
Ciao
Alessio Gerace
github.com/archetipo
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:Etichetta su stampante ToshibaTec B452 con aeroo 6 Anni 8 Mesi fa #7457

  • shakin89
  • Avatar di shakin89
  • Offline
  • Platinum Boarder
  • Messaggi: 388
  • Ringraziamenti ricevuti 7
  • Karma: 7
Ciao e grazie per le dritte.
Il tutto è reso più semplice dal fatto che il server openerp è quello che ha la stampante attaccata.
Riassumendo:
  • Nel mio modulo che ha il product.product ereditato e personalizzato importo il file stampa.py a cui passo il dizionario di prodotti di cui stampare le etichette.
  • Il file stampa py processa il dizionario ed invia il tutto alla stampante parallela
  • Inserisco nella form un bottone che richiama la funzione stampa
Secondo te, posso integrare tutto dentro il product.product ereditato per sfruttare l'orm di openerp e rendere il tutto più facile per il reperimento dei dati?
Ciao e grazie
Fabrizio
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:Etichetta su stampante ToshibaTec B452 con aeroo 6 Anni 8 Mesi fa #7458

  • archetipo
  • Avatar di archetipo
  • Offline
  • Platinum Boarder
  • Messaggi: 331
  • Ringraziamenti ricevuti 5
  • Karma: 8
si si certo, ah se poi hai la stampante sul server c'è un sacco di lavoro in meno da fare.
anche se cmq io un servizio esterno lo farei in modo che sia scollegato da OE e possa gestire le code di stampa da non sovraccaricare il server OE, o da non rischiare che un errore , possa bloccare il server.
ma li vedi tu cammin facendo

ciao
Alessio
Alessio Gerace
github.com/archetipo
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Tempo creazione pagina: 0.148 secondi

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

Protected by R Antispam