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 |
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
Il processo di inizializzazione segue questi passaggi:
importCashData.log)DBCFG_cassa.xml e connessione a IERPCFG_A03
Questa è la modalità principale che elabora le chiusure di cassa e genera i relativi movimenti contabili e di magazzino.
1. Recupero Magazzini
SELECT DISTINCT CODMAG FROM AY_CASSA_CHIUSURE
2. Per ogni Magazzino
3. Per ogni Chiusura
4. Esito elaborazione
| Successo | Errore |
|---|---|
| Commit() | RollBack() |
| UPDATE stato = 2 | Invio mail con errori |
| Invio mail successo | BREAK dal ciclo |
1. Recupero Contratti Attivi
SELECT * FROM V_CONMV_CONTRATTI_IMPORT WHERE CM_STATO = 'A'
2. Per ogni Contratto
3. Invio Email Riepilogativa - “Importazione Contratti WEB”
1. Recupero Contratto
SELECT * FROM contratti_Web WHERE CM_KEY = @ID
2. Se contratto trovato e CM_SWICHIUDISCAD = true:
| 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 |
| 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) |
| Chiave | Descrizione |
|---|---|
| DestMail | Destinatario principale per notifiche corrispettivi |
| DestMailCC | Destinatario in copia (opzionale) |
| DestMailContratti | Destinatario per notifiche importazione contratti |
<connectionStrings> <add name="DBConfig" connectionString="Server=192.168.10.200\GESTERP; Database=IERPCFG_A03; User Id=sa; Password=********;" /> </connectionStrings>
| Chiave | Descrizione |
|---|---|
| pathDllErp | Percorso della DLL wrapper ERP (es. \\srvayerp\GEST\SAMW\Sam98ext.dll) |
| 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 |
| Vista | Descrizione |
|---|---|
| V_CONMV_CONTRATTI_IMPORT | Contratti attivi da importare (filtro CM_STATO='A') |
| V_AY_CASSA_ARTICOLI_LOTTI | Disponibilità lotti per articoli |
| 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 |
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
| Stato | Descrizione |
|---|---|
| 0 | Da elaborare |
| 2 | Elaborato con successo |
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 |
{AppPath}\importCashData.log
| Causa | Azione | Recovery |
|---|---|---|
| Server non raggiungibile | Log errore + terminazione | Verificare configurazione rete |
| Credenziali errate | Log errore + terminazione | Verificare username/password |
| 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 |
try { pEngI24.StartTransaction() // Operazioni contabili e di magazzino if (successo) { pEngI24.Commit() // UPDATE stato = 2 } } catch { pEngI24.RollBack() InvioMail(esito: false, dettaglio errori) }
| 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 |
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, ...)
Server: smtp.gmail.com Porta: 587 Sicurezza: TLS/SSL abilitato Mittente: Configurato in smtp_User
| Funzione | Destinatario (TO) | Copia (CC) |
|---|---|---|
| Corrispettivi | AppSettings[“DestMail”] | AppSettings[“DestMailCC”] |
| Contratti | AppSettings[“DestMailContratti”] | AppSettings[“DestMailCC”] |
| 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 |
| Campo | Valore |
|---|---|
| Da | corrispettiving@gmail.com |
| A | [DestMailContratti] |
| CC | [DestMailCC] (se configurato) |
| Oggetto | Importazione Contratti WEB |
| Corpo | Importazione CONTRATTI Avvenuta Correttamente |
| 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 |
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>
| 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 |
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.
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:
Documento generato automaticamente - ImportCashData V5