Questo documento intende fornire le corrette indicazioni all'utente dell'applicazione FM Driver POS per creare e configurare al meglio lo script "Stampa scontrino"
Questo script si presenta con una parte, la prima, modificabile dall'utente e una seconda, di cui qui non si scrive, che non bisogna modificare.
Tipologia stampante
FM Driver POS funziona con stampanti fiscali e con registratori telematici e fino a quando le seconde non avranno sostituito totalmente le prime, il programma permetterà all'utente di scegliere su quale tipologia stampare.
Impostare la variabile a 1 se si tratta di stampante fiscale e non registratore telematico.
Set Variable [ $noRT ; Value: 0 ]
Il messaggio di testata
È possibile inserire un testo libero a inizio del documento commerciale che chiameremo "messaggio di testata". Può essere, ad esempio, il nome del cliente o qualche informazione aggiuntiva che si desidera comunicare. Si può abilitare con il valore di un campo boleano in testata (1 SI, 0 NO)
Set Variable [ $messaggioHeader ; Value: ricevuta::messageHeader ]
oppure impostarlo direttamente nello script
Set Variable [ $messaggioHeader ; Value: 0 ]
(abilitare solo una delle 2 possibilità)
Se si è deciso di abilitare il "messaggio di testata" con il valore della precedente variabile a 1, il programma permette di configurare 2 testi o 2 righe di uno stesso testo. Anche in questo caso la soluzione del cliente può avere 2 campi
Set Variable [ $messageHeader1 ; Value: ricevuta::messageHeader1 ]
Set Variable [ $messageHeader2 ; Value: ricevuta::messageHeader2 ]
o utilizzare 2 variabili create da una finestra di dialogo
Show Custom Dialog [ "Inserire i valori seguendo le indicazioni." ; $messageHeader1 ; $messageHeader2 ]
(abilitare solo una delle 2 possibilità)
Il "reso" di un prodotto
L'operazione di reso di un prodotto necessita di qualche accorgimento aggiuntivo.
In presenza di stampante fiscale è solamente importante che il movimento non abbia un totale inferiore allo ZERO. Nello script si consiglia di intercettare l'errore, ma in mancanza di codice per catturare l'errore sarà FM Driver POS occuparsene.
Un registratore telematico, invece, ha bisogno di sapere se si tratta o meno di un documento di reso e si gestisce con una variabile, lavorando con un campo boleano (1 = SI, 0 = NO) in testata.
Set Variable [ $reso ; ricevuta::resoBool ]
La variabile $reso può essere creata anche con un calcolo, naturalmente seguendo le esigenze del gestionale. Con l'articolo "RT e quantità negative" è descritta una seconda ipotesi.
La legislazione prevede che nel caso di un movimento di RESO si inseriscano i riferimenti del documento commerciale (scontrino) di origine.
Questo comporta almeno 2 ipotetici scenari:
- 2 nuovi campi per "data" e "numero" dello scontrino di riferimento
- 2 variabili
Due nuovi campi:
Set Variable [ $dataDocumentoOrigine ; Value: ricevuta::dataDocumentoOrigine ]
Set Variable [ $numeroDocumentoOrigine ; Value: ricevuta::numeroDocumentoOrigine ]
Due variabili create da una finestra di dialogo:
Show Custom Dialog [ "Inserire i valori seguendo le indicazioni." ; $dataDocumentoOrigine ; $numeroDocumentoOrigine ]
(abilitare solo una delle 2 possibilità)
La stampante RT trasforma i valori delle quantità da negativi a positivi. Questo significa che la presenza di quantità negative nel documento possono provocare risultati inaspettati e problemi con i totali.
Nello script si consiglia di intercettare l'errore, ma in mancanza di codice per catturare l'errore sarà FM Driver POS occuparsene.
L'articolo "Uniformità delle quantità nel documento di vendita/reso" contiene un suggerimento su come intercettare l'errore sulle quantità.
Il codice fiscale
Se si vuole inserire un Codice Fiscale è necessario indicarne il campo:
Set Variable [ $campo_codiceFiscale ; Value: GetFieldName ( ricevuta::codiceFiscale ) ]
La riga di vendita
Impostare il contenuto della seguente variabile per ricavare il numero delle righe del corpo del documento. Inserire il campo che serve per relazionare le righe alla testata del documento
Set Variable [$campo_righeCorpoIdTestataDoc; Value: GetFieldName (righe_ricevuta::idRicevuta )]
Impostare il contenuto della seguente variabile per riportare la quantità del prodotto della riga. La quantità deve avere al massimo 3 decimali.
Set Variable [ $campo_quantita ; Value: GetFieldName ( righe_ricevuta::Qtà ) ]
Impostare il contenuto della seguente variabile per riportare il prezzo unitario. Il prezzo deve essere di 2 decimali e deve essere sempre positivo, anche in caso di reso (quantità negativa).
Set Variable [ $campo_prezzoUnitario ; Value: GetFieldName ( righe_ricevuta::prezzoUnitario ) ]
Impostare il contenuto della seguente variabile per riportare la descrizione del prodotto.
Set Variable [ $campo_descrizione ; Value: GetFieldName ( righe_ricevuta::articolo ) ]
Ogni riga di vendita può avere un campo che descrive ulteriormente il prodotto. Ad esempio, può essere utile riportare numeri di serie, matricole o più semplicemente testo aggiuntivo.
Impostare il contenuto della seguente variabile per aggiungere contenuto alla riga.
Set Variable [ $campo_messaggio ; Value: GetFieldName ( righe_ricevuta::articolo2 ) ]
Gli sconti sul prodotto
In un documento di vendita si può decidere di impostare uno o più sconti su uno o più prodotti. Ogni riga di vendita ha un campo che ne indica il "totale" al netto degli sconti applicati.
Le stampanti, in presenza di sconti, inseriscono nella stampa una riga aggiuntiva che indica il valore dello sconto e, quindi, hanno bisogno di un campo che indichi la differenza tra il "totale" in assenza di sconti e il "totale" in loro presenza.
Impostare il contenuto della seguente variabile per riportare il valore dello sconto di ogni singola riga di vendita.
Set Variable [ $campo_valoreSconto ; Value: GetFieldName ( righe_ricevuta::importoSconto ) ]
In presenza di sconti viene stampata una riga con il valore dello sconto ed è possibile personalizzare la descrizione della riga. Per una miglior leggibilità del documento è meglio rimanere sotto i 26 caratteri.
Impostare il contenuto della seguente variabile per riportare una descrizione per lo sconto applicato.
Set Variable [ $messaggioSconto ; Value: Left ("*** PROMOZIONE ***"; 25) ]
L'IVA
I gestionali possono operare in almeno due modi con la gestione dell'IVA:
- su ogni riga
- sulla testata (aliquota unica per tutti i prodotti/servizi)
Impostare il contenuto della seguente variabile per indicare al sistema la tipologia di gestione (1 = SI, 0 = NO).
Set Variable [ $aliquotaSingola ; Value: 1 ]
1 - Presenza di una tabella "IVA"
La tabella deve avere un campo apposito che indichi la "Natura di Esenzione" nel caso l'aliquota sia a "0" e creare, nel caso non esistesse già, una lista valori con i valori presenti nella tabella IVA.
1 - Assenza di una tabella "IVA"
Se si ha una soluzione in cui non esiste una tabella IVA a cui riferirsi, probabilmente esiste una lista di valori utile a riempire un campo. Questa lista di valori deve essere modificata perchè il registratore telematico ha bisogno di conoscere la "Natura di Esenzione" in presenza di IVA a "0".
ESEMPIO LISTA VALORI
- IVA 22%
- IVA 10%
- IVA 0% N2
- IVA 0% N4
Questi valori rappresentano le varie tipologie di tassazione che l'attività può adottare durante la vendita. Alla testata del documento (o alle singole righe) serviranno due campi:
- percentuale (da applicare al documento/riga)
- natura (valore inserito dalla lista)
Impostare il contenuto della seguente variabile per riportare il codice IVA.
Set Variable [ $campo_iva ; Value: GetFieldName ( ricevuta::codiceIVA ) ]
In presenza di registratore telematico e in caso di imposta a 0 è necessario inserire un valore per la "Natura di Esenzione" (N1, N2, N3, N4, N5, N6).
Impostare il contenuto della seguente variabile per riportare l'eventuale "Natura" di esenzione.
Set Variable [ $campo_naturaIva ; Value: GetFieldName ( ricevuta::naturaIVA ) ]
Impostare il contenuto della seguente variabile con il nome della lista valori IVA usata per la selezione.
Set Variable [ $nomeListaValoriIVA ; Value: "lista valori IVA" ]
Per ulteriori informazioni sull'IVA leggere l'articolo "L'IVA sui registratori telematici"
Il "Totale" e lo sconto sul "Totale"
Il totale del documento deve essere assolutamente uguale alla somma degli importi delle singole righe. NON PUÒ ESSERE DIVERSO!
Impostare il contenuto della seguente variabile con il nome del campo totale.
Set Variable [ $campo_totaleDocumentoSuRighe ; Value: GetFieldName ( ricevuta::totale ) ]
Se si desidera impostare uno sconto sul totale o, più semplicemente, arrotondare il totale del documento è necessario inserire il campo con il valore dell'arrotondamento nella seguente variabile.
Set Variable [ $campo_scontoSubtotale ; Value: GetFieldName ( ricevuta::scontoSubtotale ) ]
Il pagamento
Ogni stampante ha le proprie tipologie di pagamento. Le stampanti EPSON offrono:
- 0 - Contanti
- 1 - Assegni
- 2 - Pagamenti elettronici
- 3 - Non riscossi
Ognuna di queste tipologie, continuando con le caratteristiche delle stampanti EPSON e con l'eccezione del numero 1 (Assegni), può avere ulteriori "indici", ad esempio il 2 (pagamenti elettronici) può essere suddiviso in "bancomat", "carte di credito", "satispay"...
Quello che è importante è segnalare al driver di comunicazione qual è la tipologia di riferimento, mentre gli indici sono facoltativi.
In un gestionale il pagamento di un documento può essere effettuato con uno o più forme di pagamento e si può gestire in due modi:
- un portale con le righe dei pagamenti
- uno o più campi della testata stessa del documento.
Impostare il contenuto della seguente variabile per indicare al sistema la presenza o meno di una tabella "pagamenti" (1 = SI, 0 = NO).
Set Variable [ $portalePagamenti ; Value: 0 ]
1 - Presenza di una tabella "pagamenti"
Questi sono i campi necessari:
- descrizione (contanti, bancomat...)
- importo
- tipologia (0, 1, 2, 3)
- indice
Impostare il contenuto della seguente variabile per ricavare il numero dei pagamenti del documento. Inserire il campo che serve per relazionare i pagamenti alla testata del documento.
Set Variable [$campo_righePagamentiIdTestataDoc; Value: GetFieldName (pagamenti_ricevuta::idRicevuta)]
Impostare il contenuto della seguente variabile con il campo che descrive il pagamento.
Set Variable [ $campo_pagamento ; Value: GetFieldName (pagamenti_ricevuta::pagamento ) ]
Impostare il contenuto della seguente variabile con il campo che indica l'importo del pagamento.
Set Variable [$campo_importoPagamento; Value: GetFieldName (pagamenti_ricevuta::importoPagamento)]
Impostare il contenuto della seguente variabile con il campo che indica la tipologia del pagamento.
Set Variable [ $campo_tipologiaPagamento ; Value: GetFieldName (pagamenti_ricevuta::tipologiaPagamento) ]
Impostare il contenuto della seguente variabile con il campo che indica l'indice del pagamento.
Set Variable [ $campo_indicePagamento ; Value: GetFieldName (pagamenti_ricevuta::indicePagamento)]
2 - Assenza di una tabella "pagamenti"
Nel caso, invece, non esista una tabella "pagamenti", ma un semplice campo nella testata del documento, è necessario inserire nella soluzione una lista con i valori dei pagamenti possibili e utilizzarla nell'applicazione per descrivere il pagamento.
ESEMPIO LISTA VALORI:
- Contanti
- Carta di debito/credito
- Assegno
- Bonifico bancario
Impostare il contenuto della seguente variabile per ricavare il numero dei pagamenti che si possono utilizzare nei documenti (MAX 3, normalmente 1).
Set Variable [ $numeroPagamentiUtilizzati ; Value: 1 ]
Impostare il contenuto della seguente variabile con il campo che descrive il pagamento.
Set Variable [ $campo_pagamento ; Value: GetFieldName (ricevuta::pagamento) ]
Impostare il contenuto della seguente variabile con il campo che indica l'importo del pagamento.
Set Variable [ $campo_importoPagamento ; Value: GetFieldName (ricevuta::importoPagamento) ]
È obbligatorio indicare qual è la tipologia di riferimento. La seguente variabile viene valorizzata (0, 1, 2, 3) seguendo la lista valori del gestionale, in questo caso si hanno i valori della lista di esempio:
Set Variable [ $tipologiaPagamento ; Value:
Case (
GetField ( $campo_pagamento ) = "Contanti"; "0";
GetField ( $campo_pagamento ) = "Carta di debito/credito"; "2";
GetField ( $campo_pagamento ) = "Assegno"; "1";
GetField ( $campo_pagamento ) = "Bonifico bancario"; "2"
) ]
È anche possibile indicare ai pagamenti qual è l'indice della tipologia. Con questa lista di pagamenti gli unici indici da impostare sono quelli della tipologia 2, ovvero i "pagamenti elettronici":
- Carta di debito/credito
- Bonifico bancario
Set Variable [ $indicePagamento ; Value:
Case (
GetField ( $campo_pagamento) = "Contanti"; "0";
GetField ( $campo_pagamento) = "Carta di debito/credito";"1";
GetField ( $campo_pagamento) = "Assegno"; "0"
GetField ( $campo_pagamento) = "Bonifico bancario"; "2"
) ]
Per ulteriori informazioni suIle operazioni di pagamento leggere l'articolo "Pagamenti aggiuntivi"
Commenti
0 commenti
Questo articolo è chiuso ai commenti.