Release Manuale 5.20 Tecnico REGISTRATORI DI CASSA Collegamento del registratore di cassa passivo Documentazione ad uso esclusivo dell’installatore della procedura Questa parte del manuale utilizza un linguaggio prettamente tecnico, di non facile comprensione per i non addetti ai lavori; fornisce specifiche relative alla configurazione del registratore di cassa. La procedura è predisposta per la configurazione e l’utilizzo di Registratori di Cassa per la stampa degli Scontrini Fiscali, dando la possibilità di scegliere tra modelli già preimpostati, o lasciando piena libertà d’installazione di nuovi modelli non previsti al momento dell’uscita del prodotto. Rel. 5.20 – Aggiornato al 31/12/2013 2 – Manuale Tecnico Indice degli argomenti 1 SCELTA DEL REGISTRATORE DI CASSA ....................................................................... 3 1.1 Esempio di file ECRconfig.ini per il registratore DITRON_ZIP ..................................... 5 1.1.1 1.1.1.1 1.1.1.2 1.2 Esempio di file ECRconfig.ini per il registratore SWEDA ............................................. 8 1.2.1 1.2.2 1.3 Aspetti tecnici della classe KngRegCass .................................................................... 12 Aspetti funzionali ......................................................................................................... 13 Esempio di file ECRconfig.ini per il registratore SAREMA SUPREMA ........................ 14 1.3.1 1.4 1.5 1.6 1.7 Interfacciamento con registratore di cassa DITRON_ZIP ............................................. 6 Settaggio protocollo XON-XOFF ................................................................................... 6 Settaggio formato importi .............................................................................................. 7 Aspetti funzionali ......................................................................................................... 20 Interfacciamento con registratore di cassa NCR2190i ................................................ 21 Interfacciamento con registratore di cassa Target ...................................................... 22 Specifiche per la certificazione di nuovi registratori di cassa ....................................... 23 Esempio di file ECRconfig.ini per interfacciamento con il driver universale RTS WPOS1 24 1.7.1 1.7.2 Configurazione file ECRconfig.ini per WPos1 ............................................................. 24 Configurazione per l’utilizzo RTS Wpos1 in modalità Desktop Remoto ..................... 25 REGISTRATORI DI CASSA: Collegamento - 3 1 Scelta del registratore di cassa Il procedimento di configurazione prevede l’utilizzo di alcuni file contenuti nella directory “DRIVERECR”, della cartella d’installazione della procedura. Tali files, che hanno tutti lo stesso nome (ECRconfig.ini), sono posizionati nella seguente struttura: Nella directory “DRIVERECR” sono contenute tante cartelle quanti sono i registratori di cassa implementati: quindi in ogni cartella è contenuto il file ECRconfig.ini predefinito per quel tipo di registratore di cassa. Nel menù Archivi Parametri Parametri della Società, è presente la cartella Codici a Barre e Dispositivi Collegati che consente la selezione e la configurazione del modello di registratore di cassa desiderato. Indicando l’esistenza di un registratore di cassa, si attiva il campo Tipo di registratore di cassa associato al pulsante di ricerca per l’apertura delle liste. 4 – Manuale Tecnico Il pulsante anziché aprire una lista, apre la finestra di dialogo con la quale ricercare il file ECRconfig.ini: La finestra si posiziona direttamente sulla cartella “DRIVERECR” che, come già visto, è contenuta nella directory di lavoro dell’applicazione. L’operazione da compiere è la selezione della cartella corrispondente al tipo di registratore, in uso presso l’utente, che si intende interfacciare: all’interno selezionare il file ECRconfig.ini. Così facendo la “routine open registratore”, che si effettua all’apertura della maschera Caricamento Scontrini Fiscali, farà riferimento al file ini appena identificato. Alla fine della selezione, il campo Tipo di registratore di cassa conterrà il percorso completo ed il nome del file necessario. E’ possibile scegliere inoltre se raggruppare o meno le righe di articolo caricate tramite lettura del codice a barre, al fine di raggruppare codici a barre uguali sulla stessa riga del documento. Selezionando il tipo di lettore dal campo Tipo lettore codici a barre, si devono quindi impostare i parametri ad esso relativo Se il flag Non Raggruppare Codici Articoli non è attivo (modalità standard) i codici degli articoli vengono raggruppati, altrimenti ogni codice a barre letto verrà riportato su una riga distinta dagli altri. REGISTRATORI DI CASSA: Collegamento - 5 1.1 Esempio di file ECRconfig.ini per il registratore DITRON_ZIP Il file ECRconfig.ini (file di testo) è il file che permette di impostare i diversi parametri di comunicazione con il registratore di cassa. Oltre a queste informazioni, consente di definire il layout dello scontrino fiscale sul registratore stesso. La struttura si presenta in questo modo: [DRIVER] DriverName=KngSweda.KngRegCass [SETTING] COMUNICAZIONE=9600,N,8,1 PORTA=1 COMANDO_CLEAR=KRCL COMANDO_CASSA=KRT1 COMANDO_INVIO=%13% COMANDO_EOT=%04% %13% QTA_RAGGRUPPATE=s Lungh_Descrizione=24 Lungh_Descrizione_e_Importo=32 [HEADER] Riga1=Pinco Pallino S.p.A. Riga2=P.IVA 01574625681 Riga3=P.zza Mare e Monti, 89 Riga4=20128 MILANO [DETAILS] Riga1=%ScFDett.QtaAnag% %descrizione% %IMPORTO% [FOOTER] Riga1=Grazie per la visita Riga2=Arrivederci Sezioni: • • • • • Driver: indica il nome della DLL da utilizzare come driver per l’ECR (registratore di cassa). Setting: in questa sezione si specificano i settaggi dell’ECR come i parametri di comunicazione, la porta cui è collegato il dispositivo ed una serie di comandi specifici del linguaggio del dispositivo collegato. Header: si tratta della testata dello scontrino, ossia la stringa che deve essere stampata prima degli articoli acquistati. Details: è la chiave che rappresenta il formato di ogni riga di dettaglio, ossia la riga dell’articolo acquistato. Footer: si tratta della stringa che si stampa, dopo aver inviato il comando cassa, al piede dello scontrino. 6 – Manuale Tecnico 1.1.1 Interfacciamento con registratore di cassa DITRON_ZIP L’interfacciamento con il registratore di cassa DITRON_ZIP prevede l’utilizzo della componente kngsweda.dll. Si descrive di seguito la procedura di settaggio da effettuare sulla Ditron ZIP. 1.1.1.1 Settaggio protocollo XON-XOFF Bisogna procedere innanzitutto con la configurazione del protocollo Xon-Xoff, seguendo la procedura illustrata di seguito: a) Digitare sull'ECR: 4 + CHIAVE + 9 + SUBT. + TOT b) Con il tasto SUBT. scorrere le voci fino ad arrivare a XON-XOFF e confermare con il tasto TOT c) Impostare: - PROTOCOLLO: 40185 - TIPO: 1 (corrisponde a “emulazione tastiera Sweda”) - OPZIONI XON-XOFF: per l’impostazione delle impostazioni avanzate si veda il riquadro sottostante Definizione dei protocolli di collegamento tipo "EMULAZIONE TASTIERA XON / XOFF", tipi SAREMA e SWEDA È possibile programmare la porta seriale 1 con questo tipo di connessione selezionando il tipo “XON XOFF". La stringa-protocollo prevede i soliti codici che specificano: - la velocità - la parità - il numero di bit/carattere - il numero di stop-bit - alcuni flags. In particolare l'ultima cifra (flags) viene calcolata sommando i seguenti possibili "pesi": - peso "1" = trasmissione dell'echo - peso "2" = controllo di flusso hardware (RTS/CTS) - peso "4" = controllo di flusso software (XON/XOFF) Successivamente, l'ECR richiede l’impostazione dei campi presenti nelle OPZIONI XON/XOFF. Questo campo permette di selezionare alcune "opzioni" relative al collegamento. Viene calcolato come somma di vari "pesi" ognuno dei quali indica una diversa opzione (tipo si/no). In particolare, sono gestiti i seguenti pesi: - peso "1" (bit 0): controllo transazione manuale; se incluso, l'ECR non processerà subito eventuali comandi ricevuti quando sia già stata iniziata una transazione da tastiera; appena questa verrà chiusa (manualmente) verranno poi processati i comandi ricevuti. REGISTRATORI DI CASSA: Collegamento - 7 - peso "2" (bit 1): opzione CR oppure CR+LF. Se incluso, l'ECR attende e trasmette la sequenza CR (13) + LF (10) come terminazione di una stringa di testo (laddove prevista). Se non incluso, l'ECR attende e trasmette solo CR (13). - peso "4" (bit 2): echo di stampa. Se incluso, l'ECR trasmette la copia di ogni riga di testo stampata sullo scontrino (in ASCII, terminata da CR oppure CR+LF). - peso "8" (bit 3): estensioni. Se incluso, vengono abilitate le seguenti estensioni al protocollo: - richiesta speciale stato ECR (hardware) real-time - comandi "INFO" - terminatore "!" = Input generico - peso "16" (bit 4): disabilitazione auto-clear su errore critico. Se incluso, e' necessario premere il tasto "CLEAR" sulla tastiera dell'ECR dopo aver eliminato la condizione di errore critico. - peso "64" (bit 6): echo di stampa speciale del messaggio con numero di scontrino (SWEDA): "XNSC. FISC. N. NNNN ". Al termine occorre digitare "101" e cliccare su CONFERMA per attivare le seriali. d) Premere 2 volte il tasto FINE e in CHIAVE P digitare "101 + TOT + TOT" 1.1.1.2 Settaggio formato importi Dopo aver impostato il protocollo di collegamento, è necessario impostare il formato corretto degli importi, altrimenti questi verranno stampati moltiplicando il valore per 100. Bisogna quindi digitare sull'ECR: 4 + Chiave + 51 + Tot + Tot e impostare con il tasto SUBT. VIRGOLA FISSA = ‘Sì’. Premere infine 2 volte il tasto FINE e in CHIAVE P digitare "101 + TOT + TOT". 8 – Manuale Tecnico 1.2 Esempio di file ECRconfig.ini per il registratore SWEDA Il file ECRconfig.ini (file di testo) è, come già accennato, il file che permette di impostare i diversi parametri di comunicazione con il registratore di cassa. Oltre a queste informazioni, consente di definire il layout dello scontrino fiscale sul registratore stesso. La struttura si presenta in questo modo: [DRIVER] DriverName=KngSweda.KngRegCass [SETTING] COMUNICAZIONE=2400,E,7,1 PORTA=1 COMANDO_CLEAR=KRCL COMANDO_CASSA=KRT1 COMANDO_INVIO=%13% COMANDO_EOT=%04% %13% QTA_RAGGRUPPATE=s Lungh_Descrizione=24 Lungh_Descrizione_e_Importo=32 [HEADER] Riga1=Pinco Pallino S.p.A. Riga2=P.IVA 01574625681 Riga3=P.zza Mare e Monti, 89 Riga4=20128 MILANO [DETAILS] Riga1=%barcode% %descrizione% %IMPORTO% [FOOTER] Riga1=Grazie per la visita Riga2=Arrivederci Sezioni: • • • • • Drivers: indica il nome della DLL da utilizzare come driver per l’ECR (registratore di cassa). Setting: in questa sezione si specificano i settaggi dell’ECR come i parametri di comunicazione, la porta cui è collegato il dispositivo ed una serie di comandi specifici del linguaggio del dispositivo collegato. Header: si tratta della testata dello scontrino, ossia la stringa che deve essere stampata prima degli articoli acquistati. Details: è la chiave che rappresenta il formato di ogni riga di dettaglio, ossia la riga dell’articolo acquistato. Footer: si tratta della stringa che si stampa, dopo aver inviato il comando cassa, al piede dello scontrino. REGISTRATORI DI CASSA: Collegamento - 9 Descrizione Dettagliata di ogni Sezione e di ogni Comando [DRIVER] DRIVERNAME: indica il nome della DLL da utilizzare. Deve essere presente e registrata sul sistema operativo del PC dal quale si controlla l’ECR. È possibile che tale DLL sia incompatibile con il registratore di cassa collegato. Pertanto va ricompilata seguendo le specifiche della macchina. Nel caso il registratore di cassa fosse della stessa famiglia di quello nativo (SWEDA modello Mikropos) per questo componente potrebbe essere sufficiente la sola modifica dei comandi specificata nella sezione setting. [SETTING] COMUNICAZIONE=2400,E,7,1 Indica i parametri di comunicazione. Nello specifico il BoudRate, la parità, il numero di bit dati e il numero dei bit di stop. PORTA=1 Indica la porta seriale alla quale è collegato il dispositivo. COMANDO_CLEAR=KRCL Rappresenta la stringa di caratteri da inviare al registratore di cassa per azzerare e cancellare dalla memoria lo scontrino precedente o eventuali errori commessi. Equivale a premere una volta il tasto [C] sul dispositivo. Questa impostazione è riportata sul manuale dell’ECR. COMANDO_CASSA=KRT1 Rappresenta la stringa di caratteri da inviare al registratore di cassa per ottenere il totale degli articoli battuti. Equivale a premere una volta il tasto [Totale] o [Cassa] sul dispositivo. Questa impostazione è riportata sul manuale dell’ECR. COMANDO_INVIO=%13% Si tratta del carattere da inviare al registratore di cassa, dopo ogni articolo, per essere stampato. Dato che può variare in base all’ECR, può essere impostato sul file di configurazione dell’ECR. Il carattere viene rappresentato nella sua codifica ASCII e in realtà potrebbe accadere che sui manuali compaia il comando in formato testo. In questo caso la stringa va scomposta, carattere per carattere, e di quest’ultimo va riportata tra le “%” la relativa codifica in ASCII. COMANDO_EOT=%04% %13% Si tratta della stringa che utilizza l’ECR per comunicare all’host il ricevimento del comando precedente e la relativa fine della trasmissione. Anche per questo comando vale la regola del precedente, ossia: codifica in ASCII e numero racchiuso tra le percentuali (%). QTA_RAGGRUPPATE=S Si tratta di una specifica proprietà del componente. Se questa è settata su SI le quantità vengono stampate in modo raggruppato. Esempio: se vengono acquistate 4 magliette, nello scontrino verrà riportata la scritta “4 x magliette L.480.000”; se invece la proprietà è settata su NO, allora sullo scontrino appariranno 4 righe distinte ognuna contenente una maglietta da 120.000. La chiave accetta i seguenti valori: “S”, “N”, “SI”, “NO”, “VERO”, “FALSO”, “TRUE”, “FALSE”, “YES”, “Y”, “0”, “1” O “-1”. Si è pensato di dare molte opzioni all’utente per evitare diverse perdite di tempo nella ricerca dell’impostazione esatta della chiave nel caso fosse sprovvisto della necessaria documentazione. 10 – Manuale Tecnico Tutte le impostazioni e le chiavi vengono accettate indifferentemente in maiuscolo e in minuscolo. LUNGH_DESCRIZIONE=24 Indica la lunghezza in caratteri della riga di descrizione. Può essere composta da più di un campo (ad esempio, prodotto, barcode, e qta). In questo caso, la stringa viene per prima cosa creata (concatenando i campi) e poi, successivamente, tagliata a destra per il numero di caratteri specificato in questa chiave. LUNGH_DESCRIZIONE_E_IMPORTO=32 Questa chiave è identica alla precedente con la differenza che include nella stringa anche l’importo degli articoli. Si è resa necessaria perché alcuni ECR (compreso lo SWEDA) hanno un limite totale di riga superato il quale rispondono con un errore. La procedura è identica: prima viene formata una stringa e poi viene troncata. Poiché, in molti ECR, il prezzo è l’ultimo campo da inviare nella stringa di dettaglio si è usato un controllo che evita di tagliare l’importo. [HEADER] Riga1=Pinco Pallino S.p.A. Per quanto riguarda l’header, in questa versione della DLL, esso può essere impostato sino ad un numero indefinito di righe (dipendenti dalle specifiche dell’ECR). Basterà aggiungere o eliminare le chiavi “RIGAn”. La procedura continua a cercare sino a che non ci siano più righe settate nel file ECRconfig.ini. Alcuni ECR non consentono la personalizzazione dall’esterno della testata, infatti basta inviare il primo articolo che automaticamente il registratore di cassa stampa il proprio header così come è stato impostato sul dispositivo. In tal modo, questi ECR, non permettono la variabilità dell’header, se non attraverso le impostazioni dirette sull’ECR. [FOOTER] Riga1=Grazie per la visita Stringa che viene stampata alla fine dello scontrino dopo il totale. Per il Footer valgono tutte le osservazioni fatte per l’Header. [DETAILS] RIGA1=%BARCODE% %DESCRIZIONE% %IMPORTO% La riga di dettaglio riveste una particolare importanza, in quanto essa specifica come deve essere rappresentato ogni singolo articolo sullo scontrino. In questa riga si specifica l’ordine dei campi. In effetti un utente potrebbe avere l’esigenza di stampare per prima il barcode, quindi la descrizione ed infine il prezzo. Un altro utente al contrario potrebbe rinunciare al barcode e evidenziare la descrizione e quindi il codice articolo. Il dettaglio ha la possibilità di essere multiriga come per il footer e per l’header. Il meccanismo è identico a quello delle altre sezioni, basta aggiungere la chiave RIGAn per specificare le successive righe. Tuttavia moltissimi ECR limitano la disponibilità di spazio per articolo ad una singola riga. La sintassi utilizzata è %nomecampo%. Esistono due tipologie di campi che si possono inserire. I campi standard e i campi personalizzati. I campi standard sono rappresentati nella tabella che segue: REGISTRATORI DI CASSA: Collegamento - 11 I campi standard sono: Nome campo Quantità Articolo Barcode sconto prezzo descrizione Indica la quantità di pezzi per quell’articolo Si tratta della descrizione dell’articolo È il codice a barre dell’articolo È la percentuale di sconto applicata Indica il prezzo dell’articolo Accettato anche come: qta, quantità, quantita' q.ta, quantita descrizione, prodotto, articolo Barcode, bc, codiceabarre Sconto Prezzo, importo Questi campi devono essere inseriti nella chiave DETAILS racchiusi tra caratteri %. Oltre ai campi standard è possibile inserirne altri tra quelli nella griglia, oppure eventuali campi personalizzati inseriti dall’utente. L’inserimento di altri campi si effettua attraverso la finestra Proprietà nell’ambito della personalizzazione on fly. Il nome del campo che dovrà comparire nella sezione DETAILS in questo caso è : %ScfDett.CodIva% che andrà inserito all’interno key riga1. Questo identico discorso vale anche per i campi personalizzati. In questo modo l’utente ha a disposizione il massimo grado di personalizzazione. 12 – Manuale Tecnico 1.2.1 Aspetti tecnici della classe KngRegCass (Per Sviluppatori) Il driver kngSWEDA, il primo implementato, è un subclassing virtuale della più generica kngRegCass. Questa classe espone i seguenti membri: Le due proprietà LungMaxRiga, LungRigaConImporto, Porta, Settaggi e Qta_Raggruppate hanno, anch’esse una corrispondenza nel file di configurazione. Il metodo OpenConnection apre una connessione sulla porta seriale, mentre il metodo CloseConnection la chiude. La funzione EstraiStringaAscii restituisce una stringa in ASCII ottenuta dalla conversione di una stringa letta nel file ini in cui i caratteri che compongono la stringa sono scritti numericamente tra le %. es %04% %13% restituisce una stringa di due caratteri fatta da chr(4) & chr(13). Il metodo ECRput permette l’invio di un output sul registratore di cassa. Il metodo OrdinaDatiNelDettaglio si preoccupa di interpretare la stringa letta nel file INI dal programma principale e passata alla DLL sotto forma di stringa. BuonFine è una proprietà di sola lettura che diventa true se la stampa dello scontrino è andata a buon fine. REGISTRATORI DI CASSA: Collegamento - 13 1.2.2 Aspetti funzionali (Per Sviluppatori) Il form presenta un pulsante in più, vale a dire il pulsante STAMPA che serve a stampare e confermare lo scontrino fiscale. Il pulsante appare (anche se disabilitato) solo se è presente il dispositivo; il che vuol dire: • Che la DLL è installata e registrata • Che il file ECRconfig.ini esiste nella directory specificata • Che il dispositivo risponde correttamente alla chiamata del membro OpenConnection. Il primo controllo effettuato dalla procedura è che ci sia il file ECRconfig.ini nella directory di lavoro. Se non ci dovesse essere viene visualizzato il seguente messaggio: Questo messaggio si verifica anche se nel file non dovesse comparire la voce DiverName nella sezione Driver. Se invece in apertura manca la DLL, una msgbox simile a quella precedente ne notifica la mancanza. Se nei parametri della procedura, alla voce dispositivi collegati, la combo box che identifica il tipo cassa è uguale a zero, allora il pulsante stampa non compare. 14 – Manuale Tecnico 1.3 Esempio di file ECRconfig.ini per il registratore SAREMA SUPREMA Il file si presenta in questo modo: [DRIVER] DriverName=KngSAREMA.KngRegCass [SETTING] COMUNICAZIONE=9600,N,8,1 PORTA=1 COMANDO_PREZZO=H COMANDO_QUANTITA=* COMANDO_DESCRIZIONE=" COMANDO_REPARTO=R COMANDO_PLU=P COMANDO_MODIFICATORE=M COMANDO_CODICE_NUMERICO=# COMANDO_CODICE_TESTO=@ COMANDO_ATTIVAZIONE_GRAFICA=^ COMANDO_CLEAR=K COMANDO_CASSA=1T COMANDO_INVIO=%13% COMANDO_EOT=%04% %13% COMANDO_SUBTOTALE=%=% COMANDO_SCONTO_PERC_LINEA=1 COMANDO_SCONTO_PERC_SUBTO=2 COMANDO_SCONTO_VALORE_LINEA=3 COMANDO_SCONTO_VALORE_SUBTO=4 COMANDO_MAGGNE_PERC_LINEA=5 COMANDO_MAGGNE_PERC_SUBTO=6 COMANDO_MAGGNE_VALORE_LINEA=7 COMANDO_MAGGNE_VALORE_SUBTO=8 COMANDO_RESO=9 COMANDO_FONDO_CASSA=10 COMANDO_PRELIEVO_CASSA=11 COMANDO_CREDITO_CLIENTE=12 QTA_RAGGRUPPATE=s Lungh_Descrizione=10 Lungh_Descrizione_e_Importo=32 MaxLenDescrInRiga1=10 [HEADER] Riga1=Pinco Pallo S.p.A. Riga2=P.IVA 01574625681 Riga3=P.zza Mare e Monti, 89 Riga4=20128 MILANO [DETAILS] Riga1=%qta% %descrizione% %IMPORTO% %SCONTO% [FOOTER] Riga1=Grazie per la visita Riga2=Arrivederci REGISTRATORI DI CASSA: Collegamento - 15 Sezioni • • • • • Drivers: indica il nome della DLL da utilizzare come driver per l’ECR. Setting: in questa sezione vengono specificati i settaggi dell’ECR quali i parametri di comunicazione, la porta cui è collegato il dispositivo e una serie di comandi specifici del linguaggio del dispositivo collegato. Header: si tratta della testata dello scontrino, ossia la stringa che va stampata prima degli articoli acquistati. Details: è la chiave che rappresenta il formato di ogni riga di dettaglio, ossia la riga dell’articolo acquistato. Footer: si tratta della stringa che viene stampata dopo aver inviato il comando cassa, al piede dello scontrino. Descrizione Dettagliata di ogni Sezione e di ogni Comando Nota Importante: sono riportate in rosso le restrizioni ed i limiti da rispettare per il registratore di cassa Sarema. [DRIVER] DRIVERNAME: indica il nome della DLL da utilizzare; deve essere presente e registrata sul sistema operativo del PC dal quale si controlla l’ECR. È possibile che tale DLL sia incompatibile con il registratore di cassa collegato. Pertanto va ricompilata seguendo le specifiche della macchina. Nel caso il registratore di cassa fosse della stessa famiglia di quello nativo (SAREMA modello EXTRA), per questo componente potrebbe essere sufficiente la sola modifica dei comandi specificata nella sezione setting. [SETTING] COMUNICAZIONE=9600,N,8,1 Indica i parametri di comunicazione. Nello specifico il BoudRate, la parità, il numero di bit dati e il numero dei bit di stop. PORTA=1 Indica la porta seriale al quale è collegato il dispositivo. COMANDO_CLEAR=K Rappresenta la stringa di caratteri da inviare al registratore di cassa per azzerare e cancellare dalla memoria lo scontrino precedente o eventuali errori. Equivale a premere una volta il tasto [C] sul dispositivo. Questa impostazione è riportata sul manuale dell’ECR. COMANDO_CASSA=T Rappresenta la stringa di caratteri da inviare al registratore di cassa per ottenere il totale degli articoli battuti. Equivale a premere una volta il tasto [Totale] o [Cassa] sul dispositivo. Questa impostazione è riportata sul manuale dell’ECR. COMANDO_PREZZO=H Si tratta del terminatore del prezzo. È il carattere in formato testo che deve seguire l’importo. Su questo ECR se si vuole inviare ad esempio una battuta da quarantottomila lire si deve inviare un output sulla porta come segue “48000H” COMANDO_QUANTITA=* 16 – Manuale Tecnico È il terminatore della quantità, esso segue immediatamente la quantità. In questo ECR la quantità deve obbligatoriamente precedere il prezzo e tra questi campi non può esserci nessun altro campo. COMANDO_DESCRIZIONE=" Si tratta del carattere che identifica la descrizione. A differenza degli altri terminatori questo va inserito prima e dopo del campo. In questo ECR la descrizione può contenere solo caratteri MAISCOLI e la lunghezza massima è di 10 caratteri. COMANDO_REPARTO=R Indica il reparto al quale appartiene la riga venduta. Il reparto e/o il PLU devono obbligatoriamente essere gli ultimi campi della linea inviata. COMANDO_PLU=P Si rimanda alla documentazione del registratore di cassa per la spiegazione del PLU. Il PLU come il reparto va posto alla fine della linea dello scontrino. COMANDO_MODIFICATORE=M Il comando modificatore serve a modificare un prezzo. Esso è usato negli sconti e nelle maggiorazioni immediatamente prima del carattere di modifica troviamo il numero che identifica il tipo di modifica (es. “1”= sconto in percentuale su transazione). Ogni modifica ha una sintassi prestabilita e rigorosa, anche l’ordine dei campi non è flessibile quando si usano le maggiorazioni. Vedere i comandi specifici al tipo di modifica per la sintassi e per l’ordine dei campi. COMANDO_CODICE_NUMERICO=# Una volta effettuata una transizione (ovvero una linea con un prezzo) è possibile inviare un codice numerico come ad esempio il barcode sulla linea successiva. Per inviare tale linea, che non ha influenza sul totale, bisogna far terminare la stringa con il carattere indicato. La lunghezza massima è di 19 caratteri. COMANDO_CODICE_TESTO=@ Esso funzione come il comando numerico con la differenza che nella stringa si possono inserire caratteri alfanumerici. La lunghezza massima è di 19 caratteri. COMANDO_ATTIVAZIONE_GRAFICA=^ In questo ECR si possono inserire delle immagini grafiche che sono memorizzate nella eprom del registratore di cassa. È, pertanto, possibile inserire nella sezione HEADER o FOOTER un comando che richiami una delle immagini residenti sull’ECR. Vedere le relative sezioni per i dettagli. COMANDO_INVIO=%13% Si tratta del carattere da inviare al registratore di cassa dopo ogni articolo per essere stampato. Siccome esso può variare in base all’ECR esso può essere impostato sul file di configurazione dell’ECR. Il carattere viene rappresentato nella sua codifica ASCII, e in realtà potrebbe accadere che sui manuali compaia il comando in formato testo. In questo caso la stringa va scomposta carattere per carattere e di quest’ultimo va riportata tra le “%” la relativa codifica in ASCII. COMANDO_EOT=%04% %13% Si tratta della stringa che utilizza l’ECR per comunicare all’HOST il ricevimento del comando precedente e la relativa fine della trasmissione. Anche per questo comande vale la regola del precedente cioè: codifica in ASCII e numero racchiuso tra le percentuali (%). COMANDO_SUBTOTALE== REGISTRATORI DI CASSA: Collegamento - 17 Il comando SUBTOTALE diventa molto importante nella gestione dello sconto su più linee. Infatti se si deve applicare uno sconto (o una maggiorazione) ad un gruppo di articoli è necessario inviare prima il comando di subtotale. Attenzione: in questa famiglia di registratori di cassa è il carattere =. COMANDO_SCONTO_PERC_LINEA=1 Questo comando effettua lo sconto in percentuale sulla singola linea (cioè sull’articolo specificato). In questo ECR l’ordine dei campi per la gestione dello sconto è rigorosa e va rispettata: Descrizione, qta, prezzo, sconto * M1. COMANDO_SCONTO_PERC_SUBTO=2 Funziona esattamente come lo sconto di linea ma ad esso va anteposto obbligatoriamente il comando di subtotale COMANDO_SCONTO_VALORE_LINEA=3 Rispetta la stessa sintassi dello sconto in percentuale, ma semplicemente al posto della percentuale viene sottratto un valore esatto. Attenzione bisogna rispettare lo stesso ordine dello sconto in percentuale. COMANDO_SCONTO_VALORE_SUBTO=4 Come per lo sconto in percentuale a subtotale. Valgono tutte le stesse regole di sintassi. COMANDO_MAGGNE_PERC_LINEA=5 Identica allo sconto relativo COMANDO_MAGGNE_PERC_SUBTO=6 Identica allo sconto relativo COMANDO_MAGGNE_VALORE_LINEA=7 Identica allo sconto relativo COMANDO_MAGGNE_VALORE_SUBTO=8 Identica allo sconto relativo COMANDO_RESO=9 Non implementata in questa versione ma prevista per uso futuro COMANDO_FONDO_CASSA=10 Non implementata in questa versione ma prevista per uso futuro COMANDO_PRELIEVO_CASSA=11 Non implementata in questa versione ma prevista per uso futuro COMANDO_CREDITO_CLIENTE=12 Non implementata in questa versione ma prevista per uso futuro QTA_RAGGRUPPATE=S Si tratta di una specifica proprietà del componente. Se questa è settata su SI le quantità vengono stampate in modo raggruppato. Esempio: se vengono acquistate 4 magliette nello scontrino verrà riportata la scritta “4 x magliette L.480.000” se invece la proprietà è settata su NO allora sullo scontrino appariranno 4 righe distinte ognuna contenente una maglietta da 120.000. La chiave accetta i seguenti valori: “S”, “N”, “SI”, “NO”, “VERO”, “FALSO”, “TRUE”, “FALSE”, “YES”, “Y”, “0”, “1” O “-1”. Si è pensato di dare molte opzioni all’utente per evitare diverse 18 – Manuale Tecnico perdite di tempo nella ricerca dell’impostazione esatta della chiave nel caso fosse sprovvisto della necessaria documentazione. Tutte le impostazioni e le chiavi vengono accettate indifferentemente in maiuscolo e in minuscolo. LUNGH_DESCRIZIONE=24 Indica la lunghezza in caratteri della riga di descrizione. Essa può essere composta da più di un campo, ad esempio, prodotto, barcode, e qta. In questo caso la stringa viene per prima cosa creata (concatenando i campi) e poi, successivamente, tagliata a destra per il numero di caratteri specificato in questa chiave. LUNGH_DESCRIZIONE_E_IMPORTO=32 Questa chiave è identica alla precedente con la differenza che include nella stringa anche l’importo degli articoli. Essa si è resa necessaria perché alcuni ECR (compreso questo) hanno un limite totale di riga superato il quale essi rispondono con un errore. La procedura è identica: prima viene formata una stringa e poi viene troncata. Siccome, però, in molti ECR il prezzo è l’ultimo campo da inviare nella stringa di dettaglio si è usato un controllo che evita di tagliare l’importo. [HEADER] Riga1=Pinco Pallo S.p.A. Per quanto riguarda l’header, in questa versione della DLL, esso può essere impostato sino ad un numero indefinito di righe (dipendenti dalle specifiche dell’ECR). Basterà aggiungere o eliminare le chiavi “RIGAn”. La procedura continua a cercare sino a che non ci siano più righe settate nel file ECRconfig.ini. Alcuni ECR non consentono la personalizzazione dall’esterno della testata, infatti basta inviare il primo articolo che automaticamente il registratore di cassa stampa il proprio header così come è stato impostato sul dispositivo. In tal modo, questi ECR, non permettono la variabilità dell’header, se non attraverso le impostazioni dirette sull’ECR. [FOOTER] Riga1=Grazie per la visita Stringa che viene stampata alla fine dello scontrino dopo il totale. Per il Footer valgono tutte le osservazioni fatte per l’Header. [DETAILS] RIGA1= %DESCRIZIONE% %IMPORTO% La riga di dettaglio riveste una particolare importanza, in quanto essa specifica come deve essere rappresentato ogni singolo articolo sullo scontrino. In questa riga si specifica l’ordine dei campi. In effetti un utente potrebbe avere l’esigenza di stampare per prima il barcode, quindi la descrizione ed infine il prezzo. Un altro utente al contrario potrebbe rinunciare al barcode ed evidenziare la descrizione e quindi il codice articolo. Il dettaglio ha la possibilità di essere multiriga come per il footer e per l’header. Il meccanismo è identico a quello delle altre sezioni, basta aggiungere la chiave RIGAn per specificare le successive righe. Questo ECR pone delle limitazioni di ordine solo alla prima riga, ovvero quella in cui compare il prezzo la quantità e lo sconto. Le righe successive possono contenere diversi campi alfanumerici secondo il grado di personalizzazione. Bisogna tener conto che ogni successiva riga può contenere al massimo 19 caratteri. REGISTRATORI DI CASSA: Collegamento - 19 La sintassi utilizzata è %nomecampo%. Esistono due tipologie di campi che si possono inserire. I campi standard e i campi personalizzati. I campi standard sono rappresentati nella tabella che segue: I campi standard sono: Nome campo Quantità Articolo Barcode Sconto Prezzo descrizione Indica la quantità di pezzi per quell’articolo Si tratta della descrizione dell’articolo È il codice a barre dell’articolo È la percentuale di sconto applicata Indica il prezzo dell’articolo Accettato anche come: qta, quantità, quantita' q.ta, quantita descrizione, prodotto, articolo Barcode, bc, codiceabarre Sconto Prezzo, importo Questi campi devono essere inseriti nella chiave DETAILS racchiusi tra caratteri %. Oltre ai campi standard è possibile inserire altri campi tra quelli inseriti nella griglia oppure eventuali campi personalizzati inseriti dall’utente. L’inserimento di altri campi viene effettuato attraverso la finestra proprietà nell’ambito della personalizzazione on fly. Il nome del campo che dovrà comparire nella sezione DETAILS in questo caso è %ScfDett.CodIva% che andrà inserito all’interno key riga1. Questo identico discorso vale anche per i campi personalizzati. In questo modo l’utente ha a disposizione il massimo grado di personalizzazione. 20 – Manuale Tecnico 1.3.1 Aspetti funzionali (Per Installatori) La maschera presenta un pulsante in più, vale a dire il pulsante STAMPA che serve a stampare e confermare lo scontrino fiscale. Il pulsante appare (anche se disabilitato) solo se è presente il dispositivo, il che vuol dire: • Che la DLL è installata e registrata • Che il file ECRconfig.ini esiste nella directory specificata • Che il dispositivo risponde correttamente alla chiamata del membro OpenConnection. Il primo controllo effettuato dalla procedura è che ci sia il file ECRconfig.ini nella directory di lavoro. Se non ci dovesse essere viene visualizzato il seguente messaggio: Questo messaggio si verifica anche se nel file non dovesse comparire la voce DiverName nella sezione Driver. Se invece in apertura manca la DLL una msgbox simile a quella precedente notifica la mancanza della suddetta. Se nella funzione parametri della procedura, alla voce dispositivi collegati, la combobox che identifica il tipocassa è uguale a zero, allora il pulsante stampa non compare affatto. REGISTRATORI DI CASSA: Collegamento - 21 1.4 Interfacciamento con registratore di cassa NCR2190i L’interfacciamento con il registratore di cassa prevede l’utilizzo del driver da loro fornito. In ogni caso buona parte delle personalizzazioni consentite con gli altri registratori di cassa è comunque garantita anche in questa DLL. I COMPONENTI CHE VANNO INSTALLATI SULLA MACCHINA HOST Innanzitutto la DLL chiamata KngNCR.dll quindi il file di configurazione ECRconfig.ini. Sino a qui valgono le stesse regole degli altri registratori di cassa. A questi componenti vanno aggiunti: • Una cartella “KngDvNcr” che sarebbe meglio se fosse posizionata nella root. In essa sono contenuti i seguenti files: • Il file WINPCS.EXE è il modulo che gestisce la comunicazione • Il file WINPCS.INI si tratta del file che permette la configurazione del driver, in realtà l’utente finale non dovrebbe avere la necessità di toccarlo. Tuttavia è necessario che questo file si trovi nella cartella specificata nel punto 1. • Il file WINDRV.EXE è il driver vero e proprio • Il file WINDRV.INI è un file di configurazione vale lo stesso discorso per il file di configurazione del punto 3. • Il file log definito denominato WINDRV.LOG che tiene traccia degli eventi del registratore di cassa, questo file va svuotato periodicamente. In quanto potrebbe diventare di dimensioni molto ampie. • Il file FPU.DAT è il file sul quale viene appoggiato lo scontrino prima di essere inviato al registratore di cassa. Anche questo file deve risiedere nella stessa cartella. • Il file STOPDRV.BAT che serve ad interrompere l’esecuzione del driver. IL FUNZIONAMENTO DEL DRIVER INSIEME ALLA KNGNCR.DLL Il driver viene eseguito ed attivato dalla funzione OpenConnection chiamata da OpenRegistratore nel programma gestionale. Importante: il path in cui si trova il driver è specificato nel file ECRconfig.ini nella sezione SETTING e più precisamente alla chiave PATHDRIVER anche questo parametro viene letto e passato in OpenRegistratore. Quando si carica il form del registratore di cassa potrebbe apparire per un istante la schermata della NCR, dipende dalla velocità della macchina, tuttavia è un’anomalia prevista. In ogni caso il codice gestisce il driver in modo da non visualizzare affatto la schermata. Il driver è un eseguibile che gira nella traybar ci si rende conto della sua attivazione perché appare l’icona nella trybar. La sua attivazione rallenta leggermente l’esecuzione di altre attività pertanto si consiglia di non avere altre applicazioni in esecuzione oltre al gestionale. Il driver viene chiuso automaticamente alla chiusura della form scontrini attraverso il file STOPDRV.BAT che deve risiedere sempre nella cartella C:\KngDvNcr. 22 – Manuale Tecnico LA PROGRAMMAZIONE È possibile personalizzare buona parte delle impostazioni del registratore di cassa, in particolare abbiamo la personalizzazione della testata e del piede dello scontrino. La personalizzazione della testata e del piede avviene ogni volta che l’utente cambia le impostazioni nel file ECRconfig.ini . Bisogna tener presente che per la testata si hanno a disposizione 6 righe da 18 caratteri, mentre per il piede si hanno a disposizione 2 righe da 18 caratteri. Per il dettaglio le regole di programmazione sono identiche a quelle degli altri ECR, tuttavia esiste in questo ECR la limitazione di 12 caratteri per la descrizione che come al solito può essere composta da più di un campo. 1.5 Interfacciamento con registratore di cassa Target L’interfacciamento con il registratore di cassa prevede l’utilizzo del driver da loro fornito. In ogni caso buona parte delle personalizzazioni consentite con gli altri registratori di cassa è comunque garantita anche in questa DLL. Lo stesso driver e lo stesso protocollo funzionano anche per i seguenti registratori: -------------------Modelli -------------------TARGET -------------------SERIE -------------------SERENA -------------------MI580 : : 300 : : INDESIT : Marca ARISIND CASIO ELETTRONICA TEC I COMPONENTI CHE VANNO INSTALLATI SULLA MACCHINA HOST Innanzitutto la DLL chiamata KngTarget.dll quindi il file di configurazione ECRconfig.ini. Sino a qui valgono le stesse regole degli altri registratori di cassa. A questi componenti vanno aggiunti: • Una cartella “KngDvTgt” che sarebbe meglio se fosse posizionata nella root. In essa sono contenuti i seguenti files: • Il file ECRCOM.EXE è il modulo che gestisce la comunicazione • Il file COM232.EXE è il file che apre e mantiene aperta la comunicazione. • Il file STOPDRV.BAT che serve ad interrompere l’esecuzione del driver. Credo che sia necessario configurare l’install shield in modo che tutte queste operazioni siano del tutto automatiche e nascoste all’utente. IL FUNZIONAMENTO DEL DRIVER INSIEME ALLA KNGNCR.DLL Il driver viene eseguito ed attivato dalla funzione OpenConnection chiamata da OpenRegistratore nel programma gestionale. Importante: il path in cui si trova il driver è specificato nel file ECRconfig.ini nella sezione SETTING e più precisamente alla chiave PATHDRIVER anche questo parametro viene letto e passato in OpenRegistratore. REGISTRATORI DI CASSA: Collegamento - 23 Il driver è un eseguibile che gira sotto l’interfaccia dos ed è completamente nascosto all’utente La sua attivazione rallenta leggermente l’esecuzione di altre attività pertanto si consiglia di non avere altre applicazioni in esecuzione oltre al gestionale. Il driver viene chiuso automaticamente alla chiusura della form scontrini attraverso il file STOPDRV.BAT che deve risiedere sempre nella cartella C:\KngDvTgt. LA PROGRAMMAZIONE È possibile personalizzare buona parte delle impostazioni del registratore di cassa, in particolare abbiamo la personalizzazione della testata e del piede dello scontrino. La personalizzazione della testata e del piede avviene ogni volta che l’utente cambia le impostazioni nel file ECRconfig.ini . La documentazione fornitami non spiega chiaramente quali siano i limiti delle personalizzazioni, in questo caso sarebbero necessarie un po’ di prove. Per il dettaglio le regole di programmazione sono identiche a quelle degli altri ECR, vale a dire si possono scegliere i campi che vanno a comporre la riga di dettaglio. Anche per questa proprietà la documentazione non dichiara limiti specifici, bisogna fare qualche prova. 1.6 Specifiche per la certificazione di nuovi registratori di cassa Per la certificazione di nuovi registratori di cassa occorre l’utente interessato a interfacciarVi la procedura ci fornisca di quanto segue: • • • • • Specifiche tecniche del protocollo (sia logico che fisico) Manuale di funzionamento della cassa Disponibilità della cassa di almeno due giorni (nella nostra sede o in quella del cliente) Cavi ed eventuali accessori per stabilire la comunicazione Il driver prodotto dalla casa costruttrice (se esiste) con relativa documentazione. Possiamo dichiarare di poter certificare e realizzare una nuova DLL di comunicazione tra la Procedura e registratore di cassa solo se ci vengono forniti tutti gli elementi sopra elencati. Con la giusta documentazione, il driver e la cassa a disposizione possiamo stabilire il tipo di l’implementazione. Ovviamente le 4 proprietà Comando_Cassa, Comando_Clear, Comando_Invio, Comando_EOT sono l’esatta corrispondenza della key impostata nel file ECRconfig.ini. Il metodo Cassa è pubblico poiché è data al programmatore la possibilità di inviare il comando cassa in qualsiasi punto del codice dell’eseguibile KngMain.exe. 24 – Manuale Tecnico 1.7 Esempio di file ECRconfig.ini per interfacciamento con il driver universale RTS WPOS1 L’applicativo RTS WPos1, prodotto e distribuito dalla società RTS Engineering (http://www.rtseng.it/), consente il collegamento tra il gestionale ed i Registratori di Cassa (ECR) presenti sul mercato. E’ necessario verificare innanzitutto la compatibilità del Registratore di Cassa accedendo al sito web della società produttrice: http://www.rtseng.it/public/Elenco%20ECR.pdf; quindi installare la versione corretta del software RTS WPOS1 al fine di interfacciare il gestionale con tale prodotto. 1.7.1 Configurazione file ECRconfig.ini per WPos1 Da un punto di vista tecnico, in fase di stampa di uno scontrino, il gestionale cercherà nel file ECRconfig.ini la presenza dell’istruzione DriverName = WPPos la quale consentirà di stabilire il collegamento con la procedura Rts WPos1. Di seguito riportiamo un esempio di configurazione del file ECRConfig.ini: [DRIVER] DriverName=WPPos [SETTING] PATHSCONTR=C:\Programmi\RTS Wpos1 In questa stringa dovrà essere riportato il percorso di salvataggio dei file necessari per la stampa degli scontrini e dovrà necessariamente coincidere con il percorso di installazione del programma RTS WPos1. MATRICOLA=000000000 In questo campo dovrà essere indicato il numero di licenza del programma RTS WPos1 (univoco per ogni matricola legata al corrispondente Registratore di Cassa) [DETAILS] Riga=CodArt%Descrizione% Valorizzando questo campo si possono impostare gli elementi da inserire nella riga dello scontrino separati dal simbolo percentuale. Files generati nella cartella di lavoro del driver: FILEOUT= " FILEOUT= "SR_OUT.001" viene generato ad ogni stampa e contiene i dati dello scontrino (numero scontrino, data e ora di stampa) FILEERR= "SR_ERR.001" viene generato solo in caso di errori e ne conterrà la relativa descrizione. I file seguenti vengono generati dal gestionale e contengono: FILEDATI= "SR_DATI.001" le istruzioni da inviare al registratore di cassa FILESTART= "SR_START.001" il numero di matricola necessario per avviare la stampa. FILEEND = "FINESCO.001" viene generato dal software RTS WPos1 solo nel caso in cui la stampa sia completata con successo. REGISTRATORI DI CASSA: Collegamento - 25 1.7.2 Configurazione per l’utilizzo RTS Wpos1 in modalità Desktop Remoto Sulla postazione dove risiede l’applicativo gestionale è necessario creare una cartella di scambio (es. C:\WPos), prestando attenzione ad autorizzazioni e relativi permessi di scrittura da parte degli utenti ed impostare la stessa come PATHSCONTR nel file ECRConfig.ini (il quale potrà essere posizionato nella directory %UserProfile%\Windows del singolo utente). A questo punto dalla postazione Client è necessario abilitare l’utilizzo delle proprie unità locali in fase di connessione remota, quindi “mappare” la cartella creata in precedenza come unità di rete (es. unità Z: = \\TSClient\C\Wpos) e infine copiare al suo interno il modulo eseguibile principale “wppos1.exe” A questo punto ed eseguire il file wppos1.exe e verificare la presenza del collegamento allo stesso nella cartella di Esecuzione Automatica del sistema.