Il linguaggio di programmazione Delphi
 

Registratore di cassa

Daniele 21 Feb 2017 12:27
Ciao a tutti,
sebbene la questione e' aperta a tutti, la pongo quasi in modo "personale"
ad Emanuele Desideri.

Alla fine ho trovato una ditron zip usata (quindi defiscalizzata) su cui
fare le dovute prove di invio dati al registratore di cassa.
Driver + installa zione zip fatta, il demo della ditron vede la zip e,
sembra, tutto a posto.

Procedo con il progetto test composto da un'unica form con un'unico bottone
ed il componente TCoEcrCom per gestire i dati diretti al registratore.

formcreate

I:=CR1.Open('Port=1'); // E' nella porta 1
if I<>0 then
sleep(5); // Brackpoint giusto per leggere il codice
di errore

Nell'onclick del bottone i vari esempi

procedure TForm1.btn1Click(Sender: TObject);
var ResultECR : WideString;
begin
// Manda il comando con reparto 1, 2 articoli senza codice al prezzo di
2.20, la stringa passa al rc ResultECR=OK
CR1.EcrCmd('VEND REP=1,QTY=2,PRE=2.20',ResultECR);

// Stessa riga ma anziche' il reparto c'e' il codice articolo (quello che
interessa a me), la stinga arriva al rc che "bippa" e
// ResultECR= 'ERRORE 16/26 : L''ECR SEGNALA ERRORE 26'
CR1.EcrCmd('VEND ART=98456237,QTY=2,PRE=2.20',ResultECR);

// Infine dato che con la prima riga per chiudere la vendita devo premere
il pulsante sulla tastiera, sto provando con l'aggiunta di CHIUS
CR1.EcrCmd('VEND REP=1,QTY=2,PRE=2.20',CHIUS,ResultECR);


end;

Con questo comando

CR1.EcrCmd('VEND REP=1,QTY=2,PRE=2.20',CHIUS,ResultECR);

ovvero con la sola aggiunta di CHIUS, ResultECR ritorna vuoto ('') e il
comando non arriva al rc.

Ecco le due domande
1) Dato che lavoro con i codici EAN (quindi codice articolo e non reparto),
come posso inserirli nella stringa (ART non va bene) e farla arrivare al rc?
2) Dato che CHIUS non va bene, come faccio a chiudere lo scontrino ed ad
azionare la taglierina?

Grazie

Ciao

Daniele

PS: Ho tentato di impiegare tutti i comandi utilizzati nel ******* di esempio
(che qui includo) ma con scarsi risultati.
Inoltre gli stessi risultati li ottengo con il ******* demo (exe) incluso
nel pacchetto dei driver.
Se pero' il ******* viene mandato al rc, lo scontrino viene stampato
correttamente e tagliato (pero' con il reparto e non il codice articolo).
******* di test

; Esempio di scontrino di vendita inviato ad ECR mediante WINECRCOM
; -----------------------------------------------------------------

CLEAR ;preme il tasto C

CHIAVE REG ;conferma che la cassa si trovi in assetto REGistrazione

VEND REP=1,PREZZO=0.20 ;vendita semplice a reparto 1
VEND REP=2,QTY=6,PREZZO=0.25 ;vendita su reparto con quantita' non
unitaria
VEND REP=3,PRE=0.30,DES='CANCELLERIA' ;vendita su reparto con descrizione

PERCA ALI=50, SUBTOT ;Sconto del 50% sul subtotale

CHIUS T=1
Daniele 21 Feb 2017 12:32
Ciao a tutti ancora,
un problema risolto .....
I comandi devono andare uno alla volta al rc.
In questo modo

CR1.EcrCmd('VEND REP=1,QTY=2,PRE=2.20',ResultECR);
CR1.EcrCmd('CHIUS T=1',ResultECR)

si totalizza e si attiva la taglierina.

L'unico problema rimane la descrizione articolo senza reparto o l'ibrido
(entrambi).

Grazie

Ciao

Daniele
Emanuele Desideri 21 Feb 2017 16:32
Daniele ci ha detto :
> Ciao a tutti ancora,

Ciao Daniele, mi chiedevo giusto giusto qualche giorno fa come stessi
procedendo :)
> un problema risolto .....
> I comandi devono andare uno alla volta al rc.
> In questo modo
>
> CR1.EcrCmd('VEND REP=1,QTY=2,PRE=2.20',ResultECR);
> CR1.EcrCmd('CHIUS T=1',ResultECR)
>
> si totalizza e si attiva la taglierina.
>

Perfetto

> L'unico problema rimane la descrizione articolo senza reparto o l'ibrido
> (entrambi).

Ehm...aspè, chiariscimi una cosa:
Non riesci ad inviare la descrizione dell'articolo al RC oppure vuoi
inviare il codice EAN e ti aspetti che la cassa conosca descrizione e
reparto?

nel primo caso è molto semplice:

CR1.EcrCmd('VEND REP=1,QTY=2,PRE=2.20,DES='+QuotedStr(Descrizione)+';',
ResultECR)

NB non credo tu possa non indicare il reparto.
NB2 il reparto (solitamente concordato con utente finale e tecnico RC)
può essere differenziato per Aliquota iva (punto vendita con prodotti
con diverse aliquote e no ventilazione dell'iva) oppure per categoria
di prodotto o chi più ne vuole più ne metta, quindi in base
all'esigenza del utente finale ti invito a "pensare" ad una gestione
dei reparti nell'applicativo.


nel secondo devi caricare preventivamente gli articoli sul RC (che la
cassa chiama PLU), ma se non per esigenze specifiche, ti sconsiglio
questa strada.

> Grazie
>
> Ciao
>
> Daniele

Ciao e buon lavoro!

--
Emanuele Desideri
Daniele 22 Feb 2017 09:55
Ciao Emanuele,

>> L'unico problema rimane la descrizione articolo senza reparto o l'ibrido
>> (entrambi).

> Ehm...aspè, chiariscimi una cosa:
> Non riesci ad inviare la descrizione dell'articolo al RC oppure vuoi
> inviare il codice EAN e ti aspetti che la cassa conosca descrizione e
> reparto?

Ci sono due casistiche differenti.
La prima e' omettere il reparto perche' il reparto non c'e'.
Opure, ragionando al contrario, dato che il reparto non c'e' lo posso
considerare "reparto 1".
Per quanto riguarda l'EAN, ovviamente non mi aspetto che la cassa sappia
quale prodotto sia associato all'ean, quello lo prendo dal DB.

> CR1.EcrCmd('VEND REP=1,QTY=2,PRE=2.20,DES='+QuotedStr(Descrizione)+';',
> ResultECR)

Grazie per la dritta, il problema e' questo conado
CR1.EcrCmd('VEND QTY=2,PRE=2.20,DES='+QuotedStr(Descrizione)+';',
ResultECR);
Dove ResultECR da 'ERRORE 1/13 : ERRORE DI SINTASSI 13 : MANCA REPARTO O
ARTICOLO'

E il problema sta proprio qui !
Se non c'e' il reparto ma indico l'articolo ....... non va (errore
precedente).
Se invece ci sono entrambi, stampa solo l'articolo.
Se devo visualizzare entrambi, l'articolo lo devo mettere come descrizione.

>NB non credo tu possa non indicare il reparto.
A questo punto lo penso anch'io.

> ti invito a "pensare" ad una gestione dei reparti nell'applicativo.
Wow mi sopravvaluti !!!!!

> Ciao e buon lavoro!
Grazie, tengo informato ng sui progressi !!!

Daniele
Daniele 22 Feb 2017 14:43
Ciao Emanuele,
dopo aver provato alcuni ******* di esempio ho concluso (a titolo
esclusivamente personale, quindi puo' essere non corretto) che il buon ecr
per poter emettere uno scontrino deve avere un riferimento obbligatorio.
Questo riferimento puo' essere il reparto o un articolo.
E qui c'e' la fregatura.
L'articolo non e' un articolo qualunque ma bensi' un articolo
precedentemente "caricato" nel ecr.
Se non e' caricato il comando ART non funziona.

A questo punto devo capire se, e se si come, sia possibile assegnare al
reparto la stringa vuota (''), cosi' da non stampare la dicitura REPARTO x.

Si continua a provare .....

Ciao

Daniele
Emanuele Desideri 22 Feb 2017 16:17
Nel suo scritto precedente, Daniele ha sostenuto :

> A questo punto devo capire se, e se si come, sia possibile assegnare al
> reparto la stringa vuota (''), cosi' da non stampare la dicitura REPARTO x.

Daniele scusami, sarà che è ora di un altro caffè, ma io non ho capito
qual'è il risultato che vuoi ottenere. :-?

--
Emanuele Desideri
Daniele 23 Feb 2017 09:48
Ciao Emanuele,


> Daniele scusami, sarà che è ora di un altro caffè,
No, nessun caffe' ....

> ma io non ho capito qual'è il risultato che vuoi ottenere. :-?
Molto semplice, se non hai reparti definiti (come nel mio caso) il risultato
da ottenere e' similare a (lascia perdere l'intestazione e il resto) :

1 x 12.25 123456789012 12.25
2 x 0.90 56789012345 1.80
Totale 14.05

ABCDEF12A34B567C

o, in alternativa

1 x 12.25
123456789012 12.25

2 x 0.90
56789012345 1.80

Totale 14.05

ABCDEF12A34B567C

Adesso lo scontrino e'

1 x 12.25
REPARTO 1 12.25

2 x 0.90
REPARTO 1 1.80

Totale 14.05

E' il reparto 1 che non si deve vedere.

Grazie di tutto

Ciao

Daniele
Emanuele Desideri 23 Feb 2017 10:13
Scriveva Daniele giovedì, 23/02/2017:

> E' il reparto 1 che non si deve vedere.

Ma presumo che si veda perchè non invii una descrizone dell'articolo.
Decidi tu se come descrizione inviare la descrizione "testuale" o il
codice articolo o quello che ti pare.
NB questa scelta dipende da quanto vuoi che lo scontrino sia
"parlante".

Buona giornata!

--
Emanuele Desideri
Daniele 23 Feb 2017 11:57
Ciao Emanuele,

> Ma presumo che si veda perchè non invii una descrizone dell'articolo.
> Decidi tu se come descrizione inviare la descrizione "testuale" o il
> codice articolo o quello che ti pare.
> NB questa scelta dipende da quanto vuoi che lo scontrino sia "parlante".

Il caffe' l'avevo bisogno io .....
Hai ragione, con la descrizione il reparto non viene indicato e mette la
descrizione inserita.
In piu' nella sintassi del comando mancava un virgola che dava problemi.

> Buona giornata!
Bhe grazie al tuo intervento direi che potrebbe andar bene !!!!
Ora posso terminare l'interfacciamento .....

Grazie ancora

Ciao

Daniele
Daniele 24 Feb 2017 12:19
Ciao Emanuele,
per il momento chiudiamo questa conversazione con le ultime notizie (per
me) avute proprio dai tecnici software della Ditron.

Il ******* di esempio della programmazione ora e' sbagliato, manca la prima
riga che e' azzgio tipo=1/2/3 perche' PRIMA di cambiare orario si deve
azzerare l'ecr.
Il cambio data va preso con le pinze da orologiaio.
La data puo' essere cambiata in avanti (superiore ad oggi) e MAI indietro
(inferiore ad oggi).
Questo significa che, se per qualsiasi motivo, per errore si imposta la data
del 28/02/2017 (mentre oggi e' il 24/02/2017), non si puo' piu' rimediare
all'errore (perche' per motivi fiscali non si puo' fare).

Le funzioni shortcut NON sono documentate, per farti un esempio il cambio
ora e'

CR1.EcrCmd('inp num=12, term=147',ResultECR);

dove 12 sta per queste operazioni su tastiera.

4 + CHIAVE
13 volte SCELTA
CONFERMA

Mi hanno detto che gli altri shortcut (ce ne sono diversi) vanno scoperti
secondo le necessita' e che, forse, li mettono nella prossima versione del
******* .ini

Credo che queste informazioni ti fossero gia' note, magari possono essere
utili anche ad altri.

Grazie per la pazienza e l'aiuto che mi hai dato.

Ciao

Daniele

PS: In quale regione risiedi?
Emanuele Desideri 24 Feb 2017 16:02
Daniele ha detto questo venerdì :

> Credo che queste informazioni ti fossero gia' note, magari possono essere
> utili anche ad altri.

ehm...in realtà non proprio, nel senso che non mi sono MAI volutamente
cimentato in operazioni che a mio avviso DEVE fare il tecnico della
cassa (vedi cambio della data e/o orario) ma grazie di averle
condivise.
> Grazie per la pazienza e l'aiuto che mi hai dato.

ma figurati, il senso del newsgroup è proprio questo, chissà quante
volte ho ricevuto aiuto, per una volta che posso dare anzichè chiedere!

> PS: In quale regione risiedi?

Lazio

ciao!

--
Emanuele Desideri
Daniele 25 Feb 2017 10:27
Ciao Emanuele,

> ehm...in realtà non proprio, nel senso che non mi sono MAI volutamente
> cimentato in operazioni che a mio avviso DEVE fare il tecnico della cassa

Diciamo che quando cambia l'orario legale/solare e viceversa, l'ora la
dobbiamo cambiare noi.
E dato che questa operazione avviene l'ultimo sabato di marzo/ottobre,
secondo te quando ci si ricorda di cambiare l'ora?
Pensavo di automatizzare il tutto .....

>> PS: In quale regione risiedi?
> Lazio

Quando passo di li (!) ti offro quel caffe' !!!

Ciao

Daniele
dino.imbriani@gmail.com 2 Giu 2017 13:11
Ciao Daniele, ho fatto un software per la gestione della vendita a banco e ora
vorrei collegare il pc alla cassa. Fra le varie ricerche sono approdato su
questo post. La mia domanda è: dove posso trovare la libreria TCoEcrCom?
grazie
Il giorno martedì 21 febbraio 2017 12:27:53 UTC+1, Daniele ha scritto:
> Ciao a tutti,
> sebbene la questione e' aperta a tutti, la pongo quasi in modo "personale"
> ad Emanuele Desideri.
>
> Alla fine ho trovato una ditron zip usata (quindi defiscalizzata) su cui
> fare le dovute prove di invio dati al registratore di cassa.
> Driver + installa zione zip fatta, il demo della ditron vede la zip e,
> sembra, tutto a posto.
>
> Procedo con il progetto test composto da un'unica form con un'unico bottone
> ed il componente TCoEcrCom per gestire i dati diretti al registratore.
>
> formcreate
>
> I:=CR1.Open('Port=1'); // E' nella porta 1
> if I<>0 then
> sleep(5); // Brackpoint giusto per leggere il codice
> di errore
>
> Nell'onclick del bottone i vari esempi
>
> procedure TForm1.btn1Click(Sender: TObject);
> var ResultECR : WideString;
> begin
> // Manda il comando con reparto 1, 2 articoli senza codice al prezzo di
> 2.20, la stringa passa al rc ResultECR=OK
> CR1.EcrCmd('VEND REP=1,QTY=2,PRE=2.20',ResultECR);
>
> // Stessa riga ma anziche' il reparto c'e' il codice articolo (quello che
> interessa a me), la stinga arriva al rc che "bippa" e
> // ResultECR= 'ERRORE 16/26 : L''ECR SEGNALA ERRORE 26'
> CR1.EcrCmd('VEND ART=98456237,QTY=2,PRE=2.20',ResultECR);
>
> // Infine dato che con la prima riga per chiudere la vendita devo premere
> il pulsante sulla tastiera, sto provando con l'aggiunta di CHIUS
> CR1.EcrCmd('VEND REP=1,QTY=2,PRE=2.20',CHIUS,ResultECR);
>
>
> end;
>
> Con questo comando
>
> CR1.EcrCmd('VEND REP=1,QTY=2,PRE=2.20',CHIUS,ResultECR);
>
> ovvero con la sola aggiunta di CHIUS, ResultECR ritorna vuoto ('') e il
> comando non arriva al rc.
>
> Ecco le due domande
> 1) Dato che lavoro con i codici EAN (quindi codice articolo e non reparto),
> come posso inserirli nella stringa (ART non va bene) e farla arrivare al rc?
> 2) Dato che CHIUS non va bene, come faccio a chiudere lo scontrino ed ad
> azionare la taglierina?
>
> Grazie
>
> Ciao
>
> Daniele
>
> PS: Ho tentato di impiegare tutti i comandi utilizzati nel ******* di esempio
> (che qui includo) ma con scarsi risultati.
> Inoltre gli stessi risultati li ottengo con il ******* demo (exe) incluso

> nel pacchetto dei driver.
> Se pero' il ******* viene mandato al rc, lo scontrino viene stampato
> correttamente e tagliato (pero' con il reparto e non il codice articolo).
>
> ******* di test
>
> ; Esempio di scontrino di vendita inviato ad ECR mediante WINECRCOM
> ; -----------------------------------------------------------------
>
> CLEAR ;preme il tasto C
>
> CHIAVE REG ;conferma che la cassa si trovi in assetto REGistrazione
>
> VEND REP=1,PREZZO=0.20 ;vendita semplice a reparto 1
> VEND REP=2,QTY=6,PREZZO=0.25 ;vendita su reparto con quantita' non
> unitaria
> VEND REP=3,PRE=0.30,DES='CANCELLERIA' ;vendita su reparto con descrizione
>
> PERCA ALI=50, SUBTOT ;Sconto del 50% sul subtotale
>
> CHIUS T=1
Daniele 7 Giu 2017 14:34
Ciao Dino,

> Ciao Daniele, ho fatto un software per la gestione della vendita a banco e
> ora vorrei collegare il pc alla cassa.
> Fra le varie ricerche sono approdato su questo post. La mia domanda è:
> dove posso trovare la libreria TCoEcrCom?
> grazie

Che tipo di gestionale hai sviluppato ??
Sai sono interessato a tutte le novita' (basta sapere il campo d'interesse).
Per quanto riguarda la libreria la trovi con il registratore di cassa (ora
quadra, la zip non la fanno piu').
Tuttavia il servizio tecnico della Ditron e' molto attivo e collaborativo,
dichiarandoti uno sviluppatore una mano te la possono dare.
Se pero' non hai la cassa !!! (questa e' stata la mia difficolta' .....
trovare una cassa defiscalizzata di un'attivita' chiusa !!! e non piu'
utilizzabile se non per i test).

Se puoi..... facci sapere come sta andando.

ciao

Daniele
dino.imbriani@gmail.com 18 Ago 2017 18:31
Il giorno mercoledì 7 giugno 2017 14:34:17 UTC+2, Daniele ha scritto:
> Ciao Dino,
>
>> Ciao Daniele, ho fatto un software per la gestione della vendita a banco e
>> ora vorrei collegare il pc alla cassa.
>> Fra le varie ricerche sono approdato su questo post. La mia domanda è:
>> dove posso trovare la libreria TCoEcrCom?
>> grazie
>
> Che tipo di gestionale hai sviluppato ??
> Sai sono interessato a tutte le novita' (basta sapere il campo d'interesse).
> Per quanto riguarda la libreria la trovi con il registratore di cassa (ora
> quadra, la zip non la fanno piu').
> Tuttavia il servizio tecnico della Ditron e' molto attivo e collaborativo,
> dichiarandoti uno sviluppatore una mano te la possono dare.
> Se pero' non hai la cassa !!! (questa e' stata la mia difficolta' .....
> trovare una cassa defiscalizzata di un'attivita' chiusa !!! e non piu'
> utilizzabile se non per i test).
>
> Se puoi..... facci sapere come sta andando.
>
> ciao
>
> Daniele

Ciao Daniele, ho sviluppato un gestionale per un punto vendita che fa da cassa,
gestione del magazzino con il suggerimento degli ordini per gli articoli in fine
scorta, gestione degli ordini con carico della merce, gestione degli articoli,
contabilità con fatture vend, fatture acq, preventivi, ddt, statistiche e
scadenziario, anagrafica clienti e fornitori ecc... Visto che avevo fretta ho
trovato un software che mi fa da middleware tra il mio programma e la cassa, ho
solo dovuto dire al software il modello di cassa e quale cartella monitorare.
L'unica cosa che devo fare è generare in ******* di testo formattato in un
certo modo in una cartella prestabilita, il software monitora quella cartella e
quando vede un ******* di testo lo prende, lo elabora e lo manda alla cassa. Il
venditore mi ha assicurato che è compatibile con tutte le cassa. Io per ora
l'ho provato su due modelli e funziona a meraviglia.
Saluti. Dino.
Daniele 22 Ago 2017 10:02
Ciao Dino,
hai fatto un bel software !!

> Visto che avevo fretta ho trovato un software che mi fa da middleware tra
> il mio programma e la cassa
E' sempre della Ditron o altra casa ?
Se altra casa puoi dire di piu'?
La zip/quadra ha la possibilita' di leggere in una directory un ******* e poi
trasformarlo in fiscale, pero' (sembra) che ogni misuratore fiscale ha il
suo interprete.
Se quel software risolve le diversita' tra i modelli ...... potrebbe
interessare !!!

Grazie

Ciao

Daniele
dino.imbriani@gmail.com 22 Ago 2017 17:44
Grazie

Il giorno martedì 22 agosto 2017 10:02:24 UTC+2, Daniele ha scritto:
> Ciao Dino,
> hai fatto un bel software !!
>
>> Visto che avevo fretta ho trovato un software che mi fa da middleware tra
>> il mio programma e la cassa
> E' sempre della Ditron o altra casa ?
> Se altra casa puoi dire di piu'?
> La zip/quadra ha la possibilita' di leggere in una directory un ******* e poi
> trasformarlo in fiscale, pero' (sembra) che ogni misuratore fiscale ha il
> suo interprete.
> Se quel software risolve le diversita' tra i modelli ...... potrebbe
> interessare !!!
>
> Grazie
>
> Ciao
>
> Daniele

Links
Giochi online
Dizionario sinonimi
Leggi e codici
Ricette
Testi
Webmatica
Hosting gratis
   
 

Il linguaggio di programmazione Delphi | Tutti i gruppi | it.comp.lang.delphi | Notizie e discussioni delphi | Delphi Mobile | Servizio di consultazione news.