meta data for this page
ImportCashData V5 - Guida Operativa
Panoramica
ImportCashData è un'applicazione console .NET che gestisce l'importazione di dati di cassa e contratti nel sistema ERP aziendale. L'applicazione supporta tre modalità operative principali:
| Modalità | Descrizione |
|---|---|
| Corrispettivi | Importazione chiusure di cassa e movimenti di magazzino |
| Contratti | Importazione contratti web nel sistema gestionale |
| Scadenze | Riscrittura delle scadenze di pagamento per un contratto |
Flusso Operativo
Avvio dell'Applicazione
ImportCashData.exe /s <username> <password> [operazione] [parametro]
Parametri riga di comando:
| Parametro | Obbligatorio | Descrizione |
|---|---|---|
/s | Sì | Flag di avvio (start) |
username | Sì | Credenziali utente ERP |
password | Sì | Password utente ERP |
/CONTRATTI | No | Attiva modalità importazione contratti |
/SCADENZE | No | Attiva modalità riscrittura scadenze |
[ID] | Solo con /SCADENZE | ID del contratto da elaborare |
Esempi:
:: Importazione corrispettivi (modalità default) ImportCashData.exe /s admin password123 :: Importazione contratti ImportCashData.exe /s admin password123 /CONTRATTI :: Riscrittura scadenze contratto #456 ImportCashData.exe /s admin password123 /SCADENZE 456
Fase di Inizializzazione
Il processo di inizializzazione segue questi passaggi:
- Parsing argomenti - Verifica presenza /s, username, password
- Creazione istanza Engine - Inizializzazione sistema di logging (file:
importCashData.log) - Caricamento configurazione - Lettura file
DBCFG_cassa.xmle connessione a IERPCFG_A03 - Connessione all'impresa - Query ID azienda, connessione ERP tramite WrapperErp_5
Modalità 1: Importazione Corrispettivi (Default)
Questa è la modalità principale che elabora le chiusure di cassa e genera i relativi movimenti contabili e di magazzino.
Flusso di elaborazione
1. Recupero Magazzini
SELECT DISTINCT CODMAG FROM AY_CASSA_CHIUSURE
2. Per ogni Magazzino
- Recupero chiusure in stato 0 (da elaborare)
- Recupero dati pagamenti associati
3. Per ogni Chiusura
- a) StartTransaction() - Avvio transazione
- b) pScriviCorrispettivo() - Creazione movimento contabile
- Recupero codici conto (CODCONCORR)
- Recupero conto cassa (CODCONCASSACORR)
- Creazione movimento MOVCON tipo 'R'
- Gestione ripartizione IVA
- Generazione movimento contabile
- c) pScriviIncasso() - Solo se conto pagamento diverso da cassa predefinita
- Trasferimento da conto pagamento a conto cassa predefinito
- Creazione movimento MOVCON tipo 'C'
- d) GeneraMovimentoMagazzino() - Per ogni vendita (AY_CASSA_VENDITE)
- Creazione movimento magazzino
- Scarico quantità da lotti
- Se quantità > disponibile: INSERT in AY_CASSA_VENDITE_ECCESSO
4. Esito elaborazione
| Successo | Errore |
|---|---|
| Commit() | RollBack() |
| UPDATE stato = 2 | Invio mail con errori |
| Invio mail successo | BREAK dal ciclo |
Modalità 2: Importazione Contratti (/CONTRATTI)
Flusso di elaborazione
1. Recupero Contratti Attivi
SELECT * FROM V_CONMV_CONTRATTI_IMPORT WHERE CM_STATO = 'A'
2. Per ogni Contratto
- a) Recupero scadenze pagamento da CONTRATTI_WEB_SCADENZE
- b) Esecuzione PRG_IMPORTA_CONTRATTI_WEB
- Importazione nel calcolo premi
- Valore ritorno atteso: 1 (righe inserite)
- c) Se tipo pagamento > 0:
- Calcolo importo (rate × num_rate)
- pScriviPNContratto() - Creazione movimento contabile
- Esecuzione AY_GENERA_SCAD_CONTRATTO
- d) Se CM_SWICHIUDISCAD = true:
- pScriviPNChiusuraScad() - Chiusura scadenze esistenti
- Esecuzione EXSP_PARTITE_CONTRATTI_nuovi
3. Invio Email Riepilogativa - “Importazione Contratti WEB”
Modalità 3: Riscrittura Scadenze (/SCADENZE)
Flusso di elaborazione
1. Recupero Contratto
SELECT * FROM contratti_Web WHERE CM_KEY = @ID
2. Se contratto trovato e CM_SWICHIUDISCAD = true:
- Recupero scadenze da CONTRATTI_WEB_SCADENZE
- pScriviPNChiusuraScad() - Ricreazione movimenti di chiusura
- Esecuzione EXSP_PARTITE_CONTRATTI_nuovi - Riconciliazione pagamenti/fatture
Parametri di Configurazione
File App.config - AppSettings
Codici Contabili
| Chiave | Esempio | Descrizione |
|---|---|---|
| CODCONCORR | 500400005 | Codice conto contabile per i corrispettivi |
| CODCONCASSACORR | 100110005 | Codice conto cassa per i corrispettivi |
| CODCAU | CNC | Codice causale contabile |
| CODCAUMOV | VENN | Codice causale movimenti di magazzino |
| CODIVACORR | 22 | Codice IVA per i corrispettivi |
Parametri SMTP
| Chiave | Esempio | Descrizione |
|---|---|---|
| smtp_Server | smtp.gmail.com | Server SMTP per invio email |
| smtp_Port | 587 | Porta SMTP |
| smtp_User | corrispettiving@gmail.com | Utente SMTP (mittente) |
| smtp_Password | [app_password] | Password SMTP (app password) |
| smtp_UseSSL | 1 | Abilita TLS/SSL (1=sì, 0=no) |
| smtp_UseImplicitSSL | 0 | SSL implicito (1=sì, 0=no) |
| smtp_TimeOut | 0 | Timeout connessione (0=default) |
Destinatari Email
| Chiave | Descrizione |
|---|---|
| DestMail | Destinatario principale per notifiche corrispettivi |
| DestMailCC | Destinatario in copia (opzionale) |
| DestMailContratti | Destinatario per notifiche importazione contratti |
Connection String
<connectionStrings> <add name="DBConfig" connectionString="Server=192.168.10.200\GESTERP; Database=IERPCFG_A03; User Id=sa; Password=********;" /> </connectionStrings>
Parametri Aggiuntivi
| Chiave | Descrizione |
|---|---|
| pathDllErp | Percorso della DLL wrapper ERP (es. \\srvayerp\GEST\SAMW\Sam98ext.dll) |
Tabelle e Viste Coinvolte
Tabelle Principali
| Tabella | Descrizione | Operazioni |
|---|---|---|
| AY_CASSA_ELENCO_CHIUSURE | Elenco riepilogativo delle chiusure cassa | SELECT, UPDATE (stato) |
| AY_CASSA_CHIUSURE | Dettaglio delle chiusure cassa | SELECT |
| AY_CASSA_PAGAMENTI | Metodi di pagamento configurati | SELECT |
| AY_CASSA_VENDITE | Dettaglio vendite per chiusura | SELECT |
| AY_CASSA_ARTICOLI_LOTTI | Informazioni sui lotti degli articoli | SELECT |
| AY_CASSA_CHIUSURE_IVA | Ripartizione IVA per chiusura | SELECT |
| AY_CASSA_VENDITE_ECCESSO | Vendite con quantità eccedente la disponibilità | INSERT |
| CONTRATTI_WEB | Anagrafica contratti web | SELECT |
| CONTRATTI_WEB_SCADENZE | Scadenze di pagamento contratti | SELECT |
| MOVCON | Movimenti contabili (via ERP wrapper) | INSERT |
Viste
| Vista | Descrizione |
|---|---|
| V_CONMV_CONTRATTI_IMPORT | Contratti attivi da importare (filtro CM_STATO='A') |
| V_AY_CASSA_ARTICOLI_LOTTI | Disponibilità lotti per articoli |
Stored Procedures
| Procedura | Parametri | Descrizione |
|---|---|---|
| PRG_IMPORTA_CONTRATTI_WEB | Dati contratto | Importa contratto nel calcolo premi. Ritorna il numero di righe inserite (atteso: 1) |
| AY_GENERA_SCAD_CONTRATTO | @RIFCON, @PARIDMOVCON | Genera le scadenze di pagamento per un contratto |
| EXSP_PARTITE_CONTRATTI_nuovi | ID movimento | Riconcilia pagamenti contratti con fatture |
Schema Relazioni Principali
AY_CASSA_ELENCO_CHIUSURE (1) ──────► (N) AY_CASSA_CHIUSURE
│ - IDCHIUSURA (PK) │ - IDCHIUSURA (FK)
│ - CODMAG │ - VALCHIUSURA
│ - STATO │ - CODPAG
│ - DATCHIU │
│ │
│ ▼
│ AY_CASSA_VENDITE (N)
│ │ - IDCHIUSURA (FK)
│ │ - CODART
└─► AY_CASSA_PAGAMENTI │ - QUANTITA
│ - CODPAG │
│ - CODCON ▼
│ - CODCAUINC AY_CASSA_ARTICOLI_LOTTI
│ - CODART
│ - CODLOTTO
│ - DISPONIBILITA
CONTRATTI_WEB (1) ──────────────► (N) CONTRATTI_WEB_SCADENZE
│ - CM_KEY (PK) │ - CMCS_RIFCON (FK)
│ - CM_STATO │ - CMCS_NUMDOC
│ - CM_IMPRATA │ - CMCS_DATDOC
│ - CM_NUMRATE │ - CMCS_IMPORTO
│ - CM_RIFTIPOPAG
│ - CM_SWICHIUDISCAD
Stati Chiusura Cassa
| Stato | Descrizione |
|---|---|
| 0 | Da elaborare |
| 2 | Elaborato con successo |
Gestione degli Errori
Livelli di Severità
Il sistema utilizza la classe Messaggi per la gestione dei log con i seguenti livelli:
| Tipo | Livello | Descrizione |
|---|---|---|
| 0 | Info | Messaggi informativi/diagnostici |
| 1 | Warning | Avvertimenti non bloccanti |
| 2 | Error | Errori che richiedono attenzione |
| 3 | Critical | Errori critici che bloccano l'elaborazione |
File di Log
- Percorso:
{AppPath}\importCashData.log - Formato: Timestamp + messaggio
- Nota: Non è presente rotazione automatica dei log
Scenari di Errore Gestiti
1. Errori di Connessione
| Causa | Azione | Recovery |
|---|---|---|
| Server non raggiungibile | Log errore + terminazione | Verificare configurazione rete |
| Credenziali errate | Log errore + terminazione | Verificare username/password |
2. Errori di Validazione
| Errore | Causa | Gestione |
|---|---|---|
| Codice conto non trovato | GetID ritorna -1 | Log errore, skip operazione |
| Causale non valida | Codice causale inesistente | Log errore, skip operazione |
| Metodo pagamento non trovato | CODPAG non in AY_CASSA_PAGAMENTI | Log warning, usa default |
3. Errori Transazionali
try { pEngI24.StartTransaction() // Operazioni contabili e di magazzino if (successo) { pEngI24.Commit() // UPDATE stato = 2 } } catch { pEngI24.RollBack() InvioMail(esito: false, dettaglio errori) }
4. Errori Stored Procedure
| Procedura | Valore Ritorno Errore | Gestione |
|---|---|---|
| PRG_IMPORTA_CONTRATTI_WEB | ≠ 1 | Log errore, continua con prossimo contratto |
| AY_GENERA_SCAD_CONTRATTO | < 0 | Rollback movimento, log errore |
| EXSP_PARTITE_CONTRATTI_nuovi | < 0 | Log errore |
5. Gestione Quantità Insufficiente
Quando la quantità venduta supera la disponibilità a magazzino:
-- Inserimento automatico dell'eccesso INSERT INTO AY_CASSA_VENDITE_ECCESSO (CODART, QUANTITA_ECCESSO, IDCHIUSURA, ...) VALUES (@CodArt, @QtaEccesso, @IdChiusura, ...)
Meccanismo di Recovery
- Transazioni atomiche: Ogni chiusura è elaborata in una transazione separata
- Idempotenza: Lo stato = 2 previene rielaborazioni
- Isolamento per magazzino: Errori in un magazzino non bloccano gli altri
- Notifica immediata: Email inviata al primo errore critico
Notifiche Email
Configurazione SMTP
Server: smtp.gmail.com Porta: 587 Sicurezza: TLS/SSL abilitato Mittente: Configurato in smtp_User
Logica Destinatari
| Funzione | Destinatario (TO) | Copia (CC) |
|---|---|---|
| Corrispettivi | AppSettings[“DestMail”] | AppSettings[“DestMailCC”] |
| Contratti | AppSettings[“DestMailContratti”] | AppSettings[“DestMailCC”] |
Email di Successo
Quando viene inviata
- Al completamento di ogni chiusura cassa elaborata correttamente
- Al termine dell'importazione contratti (se senza errori)
Formato Email Successo - Corrispettivi
| Campo | Valore |
|---|---|
| Da | corrispettiving@gmail.com |
| A | [DestMail] |
| CC | [DestMailCC] (se configurato) |
| Oggetto | Importazione Corrispettivo in Contabilità : n° {IDCHIUSURA} del {DATA} per Negozio {CODMAG} |
| Corpo | Importazione Corrispettivo Avvenuta Correttamente |
Formato Email Successo - Contratti
| Campo | Valore |
|---|---|
| Da | corrispettiving@gmail.com |
| A | [DestMailContratti] |
| CC | [DestMailCC] (se configurato) |
| Oggetto | Importazione Contratti WEB |
| Corpo | Importazione CONTRATTI Avvenuta Correttamente |
Email di Errore
Quando viene inviata
- Al verificarsi di un errore durante l'elaborazione di una chiusura
- Al termine dell'importazione contratti con errori
Formato Email Errore
| Campo | Valore |
|---|---|
| Da | corrispettiving@gmail.com |
| A | [DestMail] o [DestMailContratti] |
| CC | [DestMailCC] (se configurato) |
| Oggetto | Errore Importazione Corrispettivo in Contabilità : n° {IDCHIUSURA} del {DATA} per Negozio {CODMAG} |
| Corpo | Tabella HTML con elenco messaggi di log |
Struttura Corpo Email Errore
Il corpo dell'email contiene un'intestazione e una tabella con tutti i messaggi registrati durante l'elaborazione:
<H3>Log Importazione Corrispettivo in Contabilità : n° 1234 del 20-01-2026 per Negozio MAG01</H3> <table> <tr> <td>[Info]</td> <td>Inizio elaborazione chiusura 1234</td> </tr> <tr> <td>[Info]</td> <td>Creazione movimento contabile corrispettivo</td> </tr> <tr> <td>[Errore]</td> <td>Codice conto 500400099 non trovato nel piano dei conti</td> </tr> <tr> <td>[Errore]</td> <td>Impossibile completare la registrazione contabile</td> </tr> </table>
Classificazione Messaggi nel Log Email
| Prefisso | Tipo Messaggio | Significato |
|---|---|---|
[Info] | Tipo 0 - Informativo | Operazione completata normalmente |
[Warning] | Tipo 1 - Avvertimento | Situazione anomala non bloccante |
[Errore] | Tipo 2-3 - Errore | Problema che ha causato il fallimento |
Comportamento Post-Invio
Dopo l'invio dell'email (sia successo che errore), la lista messaggi viene svuotata:
pMessaggi.Items.Clear()
Questo assicura che le email successive contengano solo i messaggi relativi all'elaborazione corrente.
Esecuzione Schedulata
Per l'esecuzione automatica tramite Task Scheduler di Windows:
@echo off cd /d "C:\Program Files\ImportCashData\V5" ImportCashData.exe /s username password
Configurazione consigliata:
- Esecuzione giornaliera post-chiusura cassa
- Account di servizio con privilegi minimi necessari
- Monitoraggio file log per anomalie
- Verifica periodica casella email per notifiche errore
Documento generato automaticamente - ImportCashData V5