meta data for this page
  •  

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
cashdata [2026/01/20 11:48] francescocashdata [2026/02/11 14:54] (current) francesco
Line 13: Line 13:
   - [[#gestione_operatori_e_permessi|Gestione Operatori e Permessi]]   - [[#gestione_operatori_e_permessi|Gestione Operatori e Permessi]]
   - [[#sistema_di_reportistica|Sistema di Reportistica]]   - [[#sistema_di_reportistica|Sistema di Reportistica]]
-  - [[#integrazione_con_erp|Integrazione con ERP]]+  - [[#integrazione_con_erp2|Integrazione con ERP2]] 
 +  - [[#integrazione_con_bilancia|Integrazione con Bilancia]]
   - [[#schema_database|Schema Database]]   - [[#schema_database|Schema Database]]
   - [[#troubleshooting|Troubleshooting]]   - [[#troubleshooting|Troubleshooting]]
Line 119: Line 120:
 === FASE 1: Preparazione Database === === FASE 1: Preparazione Database ===
   * Installare SQL Server (Express o Standard)   * Installare SQL Server (Express o Standard)
-  * Creare database vuoto (nome consigliato: TTCS) +  * Creare database vuoto (nome consigliato: ''TTCS'' o ''TTCS_LOCAL'' per sviluppo
-  * Configurare account SA con password+  * Configurare account SQL (es. ''sa''con password 
 +  * Verificare che l'account SQL abbia permessi sufficienti sul database
  
 \\ \\
 === FASE 2: Esecuzione Script SQL === === FASE 2: Esecuzione Script SQL ===
-Eseguire in ordine: +Eseguire in ordine dalla cartella ''RELEASE\01\''
-  - ''00_DB_CREATION_CREATEDB.sql'' +  - ''00_DB_CREATION_CREATEDB.sql'' - Creazione struttura DB 
-  - ''01_DB_CREATION_PROCEDURE.sql'' +  - ''01_DB_CREATION_PROCEDURE.sql'' - Stored procedures 
-  - ''02_DB_CREATION_TABLES.sql'' +  - ''02_DB_CREATION_TABLES.sql'' - Tabelle, dati iniziali, utenti e gruppi 
-  - ''03_DB_CREATION_WITH_PROMO.sql''+  - ''03_DB_CREATION_WITH_PROMO.sql'' - Dati promozioni 
 + 
 +**Nota:** Lo script ''02_DB_CREATION_TABLES.sql'' include automaticamente: 
 +  * Parametri di configurazione (''CASSA_CONFIG_PARAMETER'') per tutte e 3 le sezioni (10, 20, 30) 
 +  * Parametri runtime (''CASSA_PARAMETER'') inclusi RECEIPT_COUNTER_PWD, HOMEMENU_ENABLED 
 +  * Parametri per-PC (''CASSA_PARAMETER_PC'') inclusi NEW_DAYLY_CLOSURE, NEW_START_BILL 
 +  * Gruppi utente predefiniti (GSU, ADMINISTRATORS GROUP, MANAGER, USER) 
 +  * Utenti predefiniti (su, Administator, Manager, User) con password impostate al primo avvio 
 +  * Stampante predefinita "Microsoft Print to PDF" per tutti i tipi documento 
 +  * Valori LIC (licenza) vuoti per consentire la prima installazione
  
 \\ \\
 === FASE 3: Configurazione Iniziale === === FASE 3: Configurazione Iniziale ===
-Modificare ed eseguire ''02 Reimposta dati.sql'':+Modificare ed eseguire ''Cose da fare per nuova installazione\02 Reimposta dati.sql'':
  
 <code sql> <code sql>
Line 142: Line 153:
 DECLARE @cashclosuredate VARCHAR(8) = '20240201'; -- Data prima chiusura DECLARE @cashclosuredate VARCHAR(8) = '20240201'; -- Data prima chiusura
 </code> </code>
 +
 +Questo script aggiorna automaticamente anche:
 +  * I valori LIC (licenza) vengono azzerati per consentire la prima installazione
 +  * Il parametro ACTIVATION viene impostato a '.'
  
 \\ \\
-=== FASE 4: Primo Avvio Applicazione === +=== FASE 4: Compilazione Applicazione === 
-Al primo avvio, inserire: +  * Aprire la solution ''CASHDATA.sln'' in Visual Studio 
-  * **Server DB**: ''SERVER\SQLEXPRESS'' o IP +  * Impostare la configurazione su **Release** e piattaforma **x86** 
-  * **Database**: ''TTCS'' +  Compilare la solution 
-  * **ReleaseFor**: Numero univoco PC +  * Copiare il contenuto della cartella di output nella cartella di installazione (es. ''C:\APP - LOCAL\CASHDATA'')
-  * **PCisSqlServer**: ''false'' (se server remoto)+
  
 \\ \\
-==== 3.2 Parametri di Configurazione Essenziali ====+=== FASE 5: Configurazione CashData.xml === 
 +Prima di avviare l'applicazione, configurare il file ''CashData.xml'' nella cartella di installazione:
  
-=== Parametri in CASSA_CONFIG_PARAMETER ===+<code xml> 
 +<?xml version="1.0" encoding="utf-8"?> 
 +<configuration> 
 +  <appSettings> 
 +    <add key="cnn_server" value="localhost\SQLEXPRESS" /> 
 +    <add key="cnn_database" value="TTCS_LOCAL" /> 
 +    <add key="cnn_user" value="sa" /> 
 +    <add key="cnn_password" value="la_tua_password" /> 
 +    <add key="ReleaseFor" value="84" /> 
 +    <add key="PCisSqlServer" value="false" /> 
 +  </appSettings> 
 +</configuration> 
 +</code>
  
-^ Parametro ^ Valore Esempio ^ Descrizione ^ +**Parametri importanti:** 
-FIRMA_SHOP 10 Codice azienda + 
-CURRENT_SHOP 000002 Codice negozio DIAMOD +^ Parametro ^ Descrizione ^ Note 
-VAT_DEFAULT 22 Aliquota IVA % +''cnn_server'' Indirizzo SQL Server Es. ''localhost\SQLEXPRESS'', ''192.168.1.100'' 
-VAT_BUONO 22 IVA per buoni +''cnn_database'' Nome database Deve corrispondere al DB creato nella FASE 1 
-BARCODELEN 13 Lunghezza EAN +''cnn_user'' Utente SQL Es. ''sa'' 
-LanguageCode 0 | 0=Italiano, 1=Tedesco | +''cnn_password'' Password SQL Password dell'utente SQL 
-| DecimalSeparator | , | Separatore decimali | +''ReleaseFor'' ID univoco del PC Deve corrispondere a @releasefor dello script 
-| GroupSeparator | . | Separatore migliaia | +''PCisSqlServer'' Il PC e' il SQL Server **''false''** se SQL Server non e' locale o l'utente SQL non ha permessi BACKUPImpostare a ''true'' solo se si vuole il backup automatico del DB |
-| CurrencySymbol | EUR | Simbolo valuta |+
  
 \\ \\
-=== Parametri in Properties/Settings.settings ===+=== FASE 6: Primo Avvio Applicazione === 
 +  - **Avviare ''CASHDATA.exe''** dalla cartella di installazione 
 +  - **Cartella di installazione**: Al primo avvio, l'app chiede di confermare la cartella. Selezionare il percorso dove e' stato copiato l'eseguibile (es. ''C:\APP - LOCAL\CASHDATA''
 +  - **Creazione sottocartelle**: L'applicazione crea automaticamente: ''DDT\'', ''Received\'', ''ToSend\'', ''backup\'', ''basic\'', ''EXCEL\'' 
 +  - **Inizializzazione utenti**: La funzione ''ChechForNewFunction()'' al primo avvio: 
 +    * Popola automaticamente la tabella ''CASSA_USER_FUNCTIONGROUP'' con i permessi per ogni gruppo 
 +    * Imposta le password predefinite per gli utenti 
 +  - **Login**: Usare le credenziali predefinite:
  
-<code xml> +^ Utente ^ Password ^ Livello ^ 
-<Setting Name="cnn_server" Type="System.String">SERVER\SQLEXPRESS</Setting> +| su | su28053 | SuperUser (99) | 
-<Setting Name="cnn_database" Type="System.String">TTCS</Setting> +| Administator | admincash | Amministratore (30) | 
-<Setting Name="cnn_provider" Type="System.String">SQLOLEDB.1</Setting> +| Manager | manager1 | Manager (20) | 
-<Setting Name="ReleaseFor" Type="System.Int32">84</Setting> +| User | user | Utente base (10) | 
-<Setting Name="PCisSqlServer" Type="System.Boolean">False</Setting> + 
-</code>+\\ 
 +==== 3.2 Architettura dei Parametri ==== 
 + 
 +Il sistema CASHDATA utilizza **3 tabelle distinte** per i parametri, ognuna con uno scopo diverso: 
 + 
 +=== 3.2.1 CASSA_CONFIG_PARAMETER (Configurazione) === 
 +Tabella principale di configurazione a 3 livelli (sezioni): 
 + 
 +^ Sezione ^ RELEASEDFOR ^ Scopo ^ Caricamento ^ 
 +| 10 | -1 | Parametri negozio (globali) | ''Config.Parametri'' via ''getParValueByKey()''
 +| 20 | N (=ReleaseFor) | Flag funzioni UI (solo TRUE) | ''Config.Funzioni''
 +| 30 | N (=ReleaseFor) | Parametri per-PC/hardware | ''Config.Parametri'' (sovrascrive sez. 10) | 
 + 
 +**Lettura:** ''ReadConfigParameter(name, releasedfor, section)'' oppure ''getParValueByKey(key)'' per le sezioni 10+30. 
 + 
 +=== 3.2.2 CASSA_PARAMETER (Parametri Runtime Globali) === 
 +Parametri operativi condivisi da tutte le casse del negozio (contatori, percorsi, password). 
 + 
 +**Lettura:** ''ReadParameter(name, increment)'' con ''cash_nr = 0'' (default). 
 + 
 +^ Parametro ^ Valore ^ Descrizione ^ 
 +| NEW_CLOSUREID | | Contatore ID chiusura | 
 +| NEW_START_BILL | 1 | Contatore scontrini (se globale) | 
 +| RECEIPT_COUNTER_PWD | tex01 | Password reset contatore scontrini | 
 +| INVENTORY_PWD | tex01 | Password conferma inventario | 
 +| HOMEMENU_ENABLED | 0 | Menu home abilitato (0/1) | 
 +| LAST_TCS | 1 | Ultimo file TCS eseguito | 
 +| DDT_FILE | c:\texdatacash\DDT\ | Percorso caricamento DDT | 
 +| SALES_EXCEL_FILE | ... | Percorso report vendite Excel | 
 +| STOCK_EXCEL_FILE | ... | Percorso report giacenze Excel | 
 + 
 +=== 3.2.3 CASSA_PARAMETER_PC (Parametri Runtime per-PC) === 
 +Parametri specifici per ogni cassa/PC, identificati dalla colonna ''CASH_NR''. 
 + 
 +**Lettura:** ''ReadParameter(name, increment, Config.CASHNUMBER)'' con ''cash_nr !0''
 + 
 +^ Parametro ^ Valore ^ Descrizione ^ 
 +| NEW_DAYLY_CLOSURE | 1 | Contatore chiusura giornaliera per cassa | 
 +| NEW_START_BILL | 1 | Contatore scontrini per cassa | 
 + 
 +\\ 
 +==== 3.3 Parametri di Configurazione Essenziali ==== 
 + 
 +=== Parametri in CASSA_CONFIG_PARAMETER === 
 + 
 +^ Parametro ^ Sezione ^ Valore Esempio ^ Descrizione ^ 
 +| FIRMA_SHOP | 10 | 10 | Codice azienda | 
 +| CURRENT_SHOP | 10 | 000002 | Codice negozio DIAMOD | 
 +| VAT_DEFAULT | 10 | 22 | Aliquota IVA % | 
 +| VAT_BUONO | 10 | 22 | IVA per buoni | 
 +| BARCODELEN | 10 | 13 | Lunghezza EAN | 
 +| LanguageCode | 10 | 0 | 0=Italiano, 1=Tedesco | 
 +| DecimalSeparator | 10 | , | Separatore decimali | 
 +| GroupSeparator | 10 | . | Separatore migliaia | 
 +| CurrencySymbol | 10 | EUR | Simbolo valuta | 
 +| INSTALLFOLDER | 30 | C:\APP - LOCAL\CASHDATA | Cartella installazione | 
 +| LIC_SOSerial | 30 | //(vuoto)// | Seriale licenza (vuoto per nuova installazione) | 
 +| LIC_Volume | 30 | //(vuoto)// | Volume licenza (vuoto per nuova installazione) | 
 +| LIC_ACTIVATE | 30 | //(vuoto)/| Stato attivazione (vuoto per nuova installazione) |
  
 \\ \\
-==== 3.Connection String ====+==== 3.Connection String ====
  
 <code> <code>
Line 186: Line 277:
  
 \\ \\
-==== 3.Configurazione Moduli ====+==== 3.Configurazione Moduli ====
  
 ^ Modulo ^ Parametro ^ Descrizione ^ ^ Modulo ^ Parametro ^ Descrizione ^
Line 601: Line 692:
 ---- ----
  
-===== 11. Integrazione con ERP =====+===== 11. Integrazione con ERP2 =====
  
-Questa sezione descrive come configurare l'integrazione tra CASHDATA e un sistema ERP esterno per l'esportazione automatica dei dati di chiusura cassa e DDT.+Questa sezione descrive come configurare l'integrazione tra CASHDATA e il gestionale **ERP2** per la sincronizzazione bidirezionale di articoli, listini, chiusure cassa e DDT
 + 
 +**Script di riferimento:** ''RELEASE\02 Integrazione con ERP2\'' 
 + 
 +> **Nota:** Le viste e stored procedure possono variare a seconda dell'installazione specifica del cliente. Gli script forniti sono template da adattare.
  
 \\ \\
 ==== 11.1 Panoramica ==== ==== 11.1 Panoramica ====
  
-L'integrazione ERP permette di: +L'integrazione ERP2 permette di: 
-  * Esportare automaticamente i dati delle chiusure cassa (venditepagamenti, IVA+  * **Import** da ERP: Caricare articoli e listini prezzi dal gestionale alla cassa 
-  * Esportare i DDT confermati verso il gestionale+  * **Export** verso ERP: Esportare automaticamente chiusure cassa, vendite, IVA DDT
   * Sincronizzare lo stato dei DDT tra i due sistemi   * Sincronizzare lo stato dei DDT tra i due sistemi
  
-\\ +**Flusso bidirezionale:**
-**Flusso di esportazione:**+
  
 <code> <code>
-CHIUSURA CASSA COMPLETATA +                    LINKED SERVER 
-         │ +                         │ 
-         ▼ +    ┌────────────────────┼────────────────────┐ 
-   ExchangeData() +    │  DB CASHDATA       │      DB ERP2       │ 
-         │ +    │                    │                    │ 
-         ▼ +    │  ┌─── IMPORT ──────┤                    │ 
-   PRC_EXPORT_ERP (Stored Procedure+    │  │ AY_CARICA_DDT_  │  ARTICO, BARART   │ 
-         │ +    │  │ DA_ERP          │  LOTSER, LISRIG   │ 
-         ├──► ERP_CASSA_CHIUSURE (totali per metodo pagamento) +    │  │ (SP su CASHDATA│  IVA, MARCHE...   │ 
-         ├──► ERP_CASSA_VENDITE (dettaglio articoli venduti) +    │  │                 │                    │ 
-         ├──► ERP_CASSA_CHIUSURE_IVA (ripartizione IVA) +    │  │ Sinonimi ERP_*────► Tabelle ERP     │ 
-         ├──► ERP_CASSA_ELENCO_CHIUSURE (registro chiusure+    │ ─────────────────┤                    │ 
-         │ +    │                    │                    │ 
-         └──► [Se Invio_DDT_to_ERP = 1] +    │  ┌─── EXPORT ──────┤                    │ 
-              ├──► ORDINI_TOCOMPANY (testate DDT) +    │  │ PRC_EXPORT_ERP  │  AY_CASSA_*       │ 
-              └──► ORDINI_DET_TOCOMPANY (righe DDT)+    │  │ (SP su CASHDATA│  EXT_ORDINI_*     │ 
 +    │  │                 │                    │ 
 +    │  │ Sinonimi ERP_*──┼──► Tabelle ERP     │ 
 +    │ ─────────────────┤                    │ 
 +    └────────────────────┴────────────────────┘
 </code> </code>
  
 \\ \\
-==== 11.2 Configurazione nel Database CASHDATA ====+==== 11.2 Parametri di Configurazione ====
  
-=== STEP 1: Abilitare l'export ERP ===+Parametri da configurare in ''CASSA_CONFIG_PARAMETER'' per abilitare l'integrazione:
  
-Configurare i seguenti parametri in ''CASSA_CONFIG_PARAMETER'': +^ Parametro ^ Sezione ^ Valore ^ Descrizione ^ 
- +**EXPORT_ERP** 10 | ''true'' | Abilita l'export verso ERP alla chiusura cassa 
-^ Parametro ^ Valore ^ Descrizione ^ +**ExportDataForTrasmission** 10 | ''0'' Modalita export: ''0'' = alla chiusura cassa, ''-1'' = manuale (mostra bottone), ''N'' = ogni N millisecondi 
-| EXPORT_ERP | true | Abilita l'export verso ERP | +**ERP_CODMAG** | 20 | //(es. NEGCU)// | **Obbligatorio.** Codice magazzino nel sistema ERP. Usato anche come prefisso per chiavi DDT | 
-| ExportDataForTrasmission | 0 | 0 = export alla chiusura cassa | +| **Invio_DDT_to_ERP** 10 | ''0'' o ''1'' ''1'' = esporta anche i DDT verso ERP (opzionale) 
-| Invio_DDT_to_ERP | 1 | 1 = esporta anche i DDT (opzionale) |+| **ExportDataType** | 10 | ''0'' | Formato dati export: ''1'' = CSV, ''2'' = Excel, ''0'' = nessun file | 
 +| **Carico_Ordini** | 10 | ''false'' | Abilita caricamento ordini da ERP |
  
 \\ \\
-=== STEP 2: Configurare il codice magazzino ERP ===+==== 11.3 Procedura di Installazione ====
  
-Inserire il parametro ''ERP_CODMAG'' che identifica il magazzino/negozio nel sistema ERP:+Gli script si trovano in ''RELEASE\02 Integrazione con ERP2\'' e vanno eseguiti in ordine:
  
-<code sql> +=== STEP 0: Creare il Linked Server (su database master) ===
--- Modificare i valori secondo l'installazione specifica +
-DECLARE @firma INT 10; +
-DECLARE @shopnr INT 84; +
-DECLARE @releasefor INT 84; +
-DECLARE @codmag VARCHAR(50) = 'NEGCU';  -- Codice magazzino nel sistema ERP+
  
-IF NOT EXISTS (SELECT 1 FROM CASSA_CONFIG_PARAMETER WHERE CP_NAME = 'ERP_CODMAGAND CP_FIRMA = @firma) +**Script:** ''00_Creare linked server.txt''
-BEGIN +
-    INSERT INTO CASSA_CONFIG_PARAMETER +
-    (SHOP_NR, RELEASEFOR, CP_SECTION, CP_SECTION_PROGR, CP_FIRMA, CP_DATATYPE, CP_NAME, CP_VALUE, CP_TEXT) +
-    VALUES +
-    (@shopnr, @releasefor, 20, 100, @firma, 'string', 'ERP_CODMAG', @codmag, 'Codice magazzino per export ERP')+
  
-    PRINT 'Parametro ERP_CODMAG inserito con valore: + @codmag +Crea un linked server denominato ''ERPSERVER'' per connettere SQL Server di CASHDATA a quello del gestionale ERP2.
-END +
-</code>+
  
-\\ +**Valori da personalizzare:**
-=== STEP 3Creare/Aggiornare la Stored Procedure PRC_EXPORT_ERP ===+
  
-Nel database CASHDATA, creare o aggiornare la stored procedure:+^ Parametro ^ Valore di esempio ^ Descrizione ^ 
 +| ''@datasrc'' | ''SERVER\GESTERP'' | Nome/IP e istanza del SQL Server dove risiede il DB ERP2 | 
 +| ''@rmtuser'' | ''sa'' | Utente SQL per accedere al DB ERP2 | 
 +| ''@rmtpassword'' | ''########'' | Password dell'utente SQL remoto |
  
 <code sql> <code sql>
-ALTER PROCEDURE [dbo].[PRC_EXPORT_ERP] +-- Esempio (da 00_Creare linked server.txt) 
-AS +EXEC master.dbo.sp_addlinkedserver 
-BEGIN +    @server = N'ERPSERVER', 
-    DECLARE @CASSULTCHIU AS INT +    @srvproduct = N'', 
-    DECLARE @ERPULTCHIU AS INT +    @provider = N'SQLNCLI', 
-    DECLARE @CODMAG AS VARCHAR(50) +    @datasrc = N'SERVER\GESTERP'  -- PERSONALIZZARE
-    DECLARE @Ordprexix AS VARCHAR(10)+
  
-    -- Lettura CODMAG da parametro di configurazione +EXEC master.dbo.sp_addlinkedsrvlogin 
-    SELECT @CODMAG CP_VALUE +    @rmtsrvname N'ERPSERVER', 
-    FROM CASSA_CONFIG_PARAMETER +    @useself = N'False', 
-    WHERE CP_NAME = 'ERP_CODMAG'+    @locallogin = NULL, 
 +    @rmtuser N'sa',             -- PERSONALIZZARE 
 +    @rmtpassword = '########'     -- PERSONALIZZARE 
 +</code>
  
-    IF @CODMAG IS NULL OR LTRIM(RTRIM(@CODMAG)) = '' +Le opzioni importanti impostate dallo script: 
-    BEGIN +  * ''data access = true'' (necessario per le query cross-server) 
-        RAISERROR('Parametro ERP_CODMAG non configurato. Contattare la software house.', 16, 1+  * ''connect timeout 0'' ''query timeout = 0'' (nessun timeout
-        RETURN +  * ''use remote collation = true''
-    END+
  
-    -- Ordprexix deriva da CODMAG (usato come prefisso per i DDT) +\\ 
-    SET @Ordprexix @CODMAG+=== STEP 1: Creare tabelle e viste nel DB ERP2 ===
  
-    -- Determina range chiusure da esportare +**Script:** ''01_Tabelle&Viste da creare su db ERP.txt''
-    SET @ERPULTCHIU = ISNULL((SELECT MAX(IDCHIUSURA) FROM [ERP_CASSA_ELENCO_CHIUSURE] WHERE CODMAG = @CODMAG), 0) +
-    SET @CASSULTCHIU = ISNULL((SELECT MAX(IDCHIUSURA) FROM V_CASSA_CHIUSURE), 0)+
  
-    -- Pulizia e inserimento dati chiusure +Eseguire sul **database del gestionale ERP2**. Lo script crea:
-    DELETE FROM ERP_CASSA_CHIUSURE WHERE IDCHIUSURA > @ERPULTCHIU AND IDCHIUSURA <= @CASSULTCHIU AND CODMAG = @CODMAG +
-    INSERT INTO ERP_CASSA_CHIUSURE (IDCHIUSURA, DATA, CODPAG, VALCHIUSURA, CODMAG) +
-    SELECT IDCHIUSURA, DATASCONTRINO, CODPAG, VALCHIUSURA, @CODMAG +
-    FROM V_CASSA_CHIUSURE WHERE IDCHIUSURA > @ERPULTCHIU AND IDCHIUSURA <= @CASSULTCHIU+
  
-    -- ... continua con altre operazioni ... +  **Login e utente** ''texdatacash'' con permessi di lettura e scrittura 
-END +  **Tabelle per ricevere i dati delle chiusure cassa:** 
-</code>+    * ''AY_CASSA_ELENCO_CHIUSURE'' - Registro chiusure esportate 
 +    * ''AY_CASSA_CHIUSURE'' - Totali per metodo pagamento 
 +    * ''AY_CASSA_CHIUSURE_IVA'' - Ripartizione IVA per chiusura 
 +    * ''AY_CASSA_PAGAMENTI'' - Anagrafica metodi di pagamento 
 +    * ''AY_CASSA_VENDITE'' - Dettaglio vendite per articolo 
 +    * ''AY_CASSA_VENDITE_ECCESSO'' - Vendite oltre giacenza teorica 
 +  - **Tabelle per DDT** (se ''Invio_DDT_to_ERP = 1''): 
 +    * ''EXT_ORDINI_TOCOMPANY'' - Testate ordini/DDT 
 +    * ''EXT_ORDINI_DET_TOCOMPANY'' - Righe ordini/DDT 
 +    * ''EXT_ORDINI_TOCOMPANY_STOR'' - Storico DDT 
 +  - **Sinonimi** per accesso semplificato: 
 +    * ''ORDINI_DET_TOCOMPANY'' -> ''EXT_ORDINI_DET_TOCOMPANY'' 
 +    * ''ORDINI_TOCOMPANY'' -> ''EXT_ORDINI_TOCOMPANY'' 
 +    * ''ORDINI_TOCOMPANY_STOR'' -> ''EXT_ORDINI_TOCOMPANY_STOR'' 
 +  - **Vista** ''V_AY_CASSA_ARTICOLI_LOTTI'' - Articoli con giacenze per lotto/magazzino 
 + 
 +**Valori da personalizzare:** 
 + 
 +^ Parametro ^ Valore di esempio ^ Descrizione ^ 
 +| Password ''texdatacash'' | ''qgt...'' (placeholder) | Impostare una password sicura | 
 +| ''ALMG.ID IN (41, 42)'' nella vista | ID magazzini | Sostituire con gli ID magazzino corretti del gestionale |
  
 \\ \\
-==== 11.3 Configurazione nel Database ERP ====+=== STEP 2: Creare sinonimi, viste e SP nel DB CASHDATA ===
  
-Nel database del gestionale ERP è necessario creare le tabelle di destinazione per ricevere i dati esportati da CASHDATA.+**Script:** ''02_Da fare su DB CashData.txt''
  
-**File script:** ''D:\dev.net\CashData\CASHDATA\ERP2Tabelle.sql''+Eseguire sul **database CASHDATA**. Lo script crea:
  
-\\ +**a) Sinonimi verso le tabelle ERP (via linked server)** 
-=== Tabelle per Chiusure Cassa ===+ 
 +Creare un sinonimo per ogni tabella ERP referenziata. Il pattern e':
  
 <code sql> <code sql>
--- Chiusure per metodo di pagamento +CREATE SYNONYM [dbo].[ERP_ARTICOFOR [ERPSERVER].[NOMEDB_ERP].[dbo].[ARTICO
-CREATE TABLE [dbo].[AY_CASSA_CHIUSURE]+</code>
-    [ID] [intIDENTITY(1,1) NOT NULL, +
-    [IDCHIUSURA] [int] NOT NULL, +
-    [DATA] [smalldatetime] NULL, +
-    [CODPAG] [varchar](50) NULL, +
-    [VALCHIUSURA] [decimal](12, 2) NULL, +
-    [CODMAG] [varchar](50) NULL +
-)+
  
--- Ripartizione IVA per chiusura +Sinonimi necessari (sostituire ''NOMEDB_ERP'' con il nome effettivo del database ERP2):
-CREATE TABLE [dbo].[AY_CASSA_CHIUSURE_IVA]( +
-    [ID] [int] IDENTITY(1,1) NOT NULL, +
-    [IDCHIUSURA] [int] NOT NULL, +
-    [Aliquota] [decimal](12, 2) NULL, +
-    [Tot_senza_Iva] [decimal](12, 2) NULL, +
-    [Tot_Iva] [decimal](12, 2) NULL, +
-    [ID_IVA] [int] NULL, +
-    [CODMAG] [varchar](50) NULL +
-)+
  
--- Elenco chiusure esportate +^ Sinonimo nel DB CASHDATA ^ Tabella nel DB ERP ^ 
-CREATE TABLE [dbo].[AY_CASSA_ELENCO_CHIUSURE]( +| ''ERP_ARTICO'' | ''ARTICO'' | 
-    [ID] [int] IDENTITY(1,1) NOT NULL, +| ''ERP_BARART'' | ''BARART'' | 
-    [IDCHIUSURA] [int] NOT NULL, +| ''ERP_LOTSER'' | ''LOTSER'' | 
-    [STATO] [smallint] NOT NULL DEFAULT(0), +| ''ERP_CLASSI'' | ''CLASSI'' | 
-    [DATCHIU] [smalldatetime] NULL, +| ''ERP_GRUPPI'' | ''GRUPPI'' | 
-    [DATCRE] [smalldatetime] NULL, +| ''ERP_IVA'' | ''IVA'' | 
-    [DATMOD] [smalldatetime] NULL, +| ''ERP_LISRIG'' | ''LISRIG'' | 
-    [NOTE] [varchar](500NULL, +| ''ERP_LISTES'' | ''LISTES''
-    [CODMAG] [varchar](50NULL +| ''ERP_MARCHE'' | ''MARCHE''
-)+| ''ERP_CATOMO'' | ''CATOMO''
 +| ''ERP_SCOCLI'' | ''SCOCLI''
 +| ''ERP_VALUTA'' | ''VALUTA''
 +| ''ERP_BAMTES'' | ''BAMTES''
 +| ''ERP_FATRIG'' | ''FATRIG''
 +| ''ERP_CASSA_CHIUSURE'' | ''AY_CASSA_CHIUSURE''
 +| ''ERP_CASSA_CHIUSURE_IVA'' | ''AY_CASSA_CHIUSURE_IVA''
 +| ''ERP_CASSA_ELENCO_CHIUSURE'' | ''AY_CASSA_ELENCO_CHIUSURE''
 +| ''ERP_CASSA_VENDITE'' | ''AY_CASSA_VENDITE''
 +| ''ORDINI_TOCOMPANY'' | ''EXT_ORDINI_TOCOMPANY'' (o sinonimo| 
 +| ''ORDINI_DET_TOCOMPANY'' | ''EXT_ORDINI_DET_TOCOMPANY'' (o sinonimo| 
 +| ''ORDINI_TOCOMPANY_STOR'' | ''EXT_ORDINI_TOCOMPANY_STOR'' (o sinonimo|
  
--- Anagrafica metodi di pagamento +**b) Vista ''V_ERP_ARTICOLO''** Unisce articoli ERP con barcodeIVAlotti e classificazione
-CREATE TABLE [dbo].[AY_CASSA_PAGAMENTI]( +
-    [CODPAG] [int] NOT NULL, +
-    [DESPAG] [varchar](200) NULL, +
-    [CODCON] [varchar](50) NULL, +
-    [CODCAUINC] [varchar](50) NULL +
-+
-</code>+
  
-\\ +**c) Vista ''V_ERP_ARTICOLO_PREZZI''** - Estende ''V_ERP_ARTICOLO'' aggiungendo prezzi da listino, marca e categoria (puo' variare per installazione)
-=== Tabelle per Vendite ===+
  
-<code sql> +**d) Stored Procedure ''AY_CARICA_DDT_DA_ERP''** Importa articoli e aggiorna listini: 
--- Dettaglio vendite per articolo +  * Con parametro ''@LEGGILISTINI = 0'': importa nuovi articoli da ERP in ''CASSA_READ_DELNOTE'' e ''CASSA_READ_DELNOTE_ART_ATTRIB'' 
-CREATE TABLE [dbo].[AY_CASSA_VENDITE]( +  * Con parametro ''@LEGGILISTINI = 1'': aggiorna prezzimarca e categoria per articoli esistentie registra nuove aliquote IVA 
-    [ID] [int] IDENTITY(1,1) NOT NULL+  * Puo' essere invocata dal bottone "Carica da ERP" nella sezione Controllo dell'UIoppure schedulata come SQL Server Job
-    [DATVEN] [smalldatetime] NULL, +
-    [CODART] [varchar](100) NOT NULL, +
-    [QUANTITA] [int] NOT NULL, +
-    [PREZZOVENDITA] [decimal](12, 2) NOT NULL, +
-    [IDCHIUSURA] [int] NOT NULL, +
-    [CODMAG] [varchar](50) NULL +
-)+
  
--- Vendite in eccesso rispetto a giacenza teorica +**e) Stored Procedure ''PRC_EXPORT_ERP''** Esporta chiusure cassa verso ERP: 
-CREATE TABLE [dbo].[AY_CASSA_VENDITE_ECCESSO]( +  * Esportazione incrementale basata su IDCHIUSURA 
-    [ID_RIF] [int] NOT NULL, +  * Gestisce chiusurevenditeIVA 
-    [DATVEN] [smalldatetime] NULL+  * Se ''Invio_DDT_to_ERP = 1'': esporta anche DDT con stato 45 (confermato-> 50 (trasmesso)
-    [CODART] [varchar](100NOT NULL, +
-    [QUANTITA] [int] NOT NULL, +
-    [PREZZOVENDITA] [decimal](12, 2NOT NULL, +
-    [IDCHIUSURA] [int] NOT NULL, +
-    [CODMAG] [varchar](50) NULL +
-+
-</code>+
  
 \\ \\
-==== 11.4 Checklist Integrazione ERP ====+==== 11.4 Checklist Integrazione ERP2 ====
  
-=== Nel Database CASHDATA: === +=== Sul server SQL Server (master): === 
-  * Inserire parametro ''EXPORT_ERP = true'' +  * Creare linked server ''ERPSERVER'' con ''00_Creare linked server.txt'' 
-  * Inserire parametro ''ExportDataForTrasmission = 0'' +  * Verificare connettivita con ''SELECT FROM OPENQUERY(ERPSERVER, 'SELECT 1')''
-  * Inserire parametro ''ERP_CODMAG'' con il codice magazzino corretto +
-  * (Opzionale) Inserire parametro ''Invio_DDT_to_ERP = 1'' se serve export DDT +
-  * Creare/aggiornare la stored procedure ''PRC_EXPORT_ERP'' +
-  * Verificare esistenza viste ''V_CASSA_CHIUSURE'' e ''V_CASSA_VENDITE_ARTICOLI''+
  
-\\ +=== Sul database ERP2: === 
-=== Nel Database ERP: === +  * Creare login/utente ''texdatacash'' con permessi read/write 
-  * Creare tabella ''AY_CASSA_CHIUSURE'' +  * Creare le 6 tabelle ''AY_CASSA_*'' 
-  * Creare tabella ''AY_CASSA_CHIUSURE_IVA'' +  * (Se DDT) Creare le 3 tabelle ''EXT_ORDINI_*'' e relativi sinonimi 
-  * Creare tabella ''AY_CASSA_ELENCO_CHIUSURE'' +  * Creare/modificare la vista ''V_AY_CASSA_ARTICOLI_LOTTI'' con ID magazzini corretti 
-  * Creare tabella ''AY_CASSA_PAGAMENTI'' +  * Popolare ''AY_CASSA_PAGAMENTI'' con i codici pagamento corretti 
-  * Creare tabella ''AY_CASSA_VENDITE'' + 
-  * Creare tabella ''AY_CASSA_VENDITE_ECCESSO'' +=== Sul database CASHDATA: === 
-  * (Se DDT) Creare tabelle ''EXT_ORDINI_TOCOMPANY''''EXT_ORDINI_DET_TOCOMPANY'' +  * Creare tutti i sinonimi ''ERP_*'' verso le tabelle ERP (personalizzare nome DB) 
-  * Configurare linked server o replica per comunicazione tra i database+  * Creare la vista ''V_ERP_ARTICOLO'' 
 +  * Creare la vista ''V_ERP_ARTICOLO_PREZZI'' (personalizzare per installazione) 
 +  * Creare/aggiornare la SP ''AY_CARICA_DDT_DA_ERP'' 
 +  * Creare/aggiornare la SP ''PRC_EXPORT_ERP'' 
 +  * Configurare parametro ''EXPORT_ERP = true'' in CASSA_CONFIG_PARAMETER 
 +  * Configurare parametro ''ExportDataForTrasmission = 0'' 
 +  * Configurare parametro ''ERP_CODMAG'' con il codice magazzino corretto 
 +  * (Opzionale) Configurare ''Invio_DDT_to_ERP = 1'' per export DDT 
 +  * Verificare esistenza viste ''V_CASSA_CHIUSURE'' e ''V_CASSA_VENDITE_ARTICOLI'' (create dallo script ''01_DB_CREATION_PROCEDURE.sql''
 +  * Testare import articoli: ''EXEC AY_CARICA_DDT_DA_ERP @LEGGILISTINI = 0'' 
 +  * Testare export chiusura: ''EXEC PRC_EXPORT_ERP''
  
 \\ \\
Line 819: Line 903:
 ^ Stato ^ Descrizione ^ Origine ^ ^ Stato ^ Descrizione ^ Origine ^
 | 45 | Confermato | CASHDATA | | 45 | Confermato | CASHDATA |
-| 50 | Trasmesso | CASHDATA (dopo export) |+| 50 | Trasmesso | CASHDATA (dopo export PRC_EXPORT_ERP) |
 | 70 | Importato | ERP (elaborazione OK) | | 70 | Importato | ERP (elaborazione OK) |
 | 80 | Non importato | ERP (errore elaborazione) | | 80 | Non importato | ERP (errore elaborazione) |
Line 827: Line 911:
  
 ^ Errore ^ Causa ^ Soluzione ^ ^ Errore ^ Causa ^ Soluzione ^
-| "Parametro ERP_CODMAG non configurato..." | Parametro mancante | Inserire ERP_CODMAG in CASSA_CONFIG_PARAMETER | +| "Parametro ERP_CODMAG non configurato" | Parametro mancante | Inserire ERP_CODMAG in CASSA_CONFIG_PARAMETER (sezione 20) 
-| "Errore export dati vendite" | Errore generico SP | Verificare log SQL Server, controllare esistenza tabelle ERP | +| "Errore export dati vendite" | Errore generico SP | Verificare log SQL Server, controllare esistenza tabelle e sinonimi ERP 
-| DDT non esportati | Invio_DDT_to_ERP = 0 | Impostare parametro a 1 |+| Linked server non raggiungibile | Rete o credenziali | Testare con ''SELECT * FROM OPENQUERY(ERPSERVER, 'SELECT 1')''
 +| Errore collation nei JOIN | Collation diversa tra DB | Le viste usano ''COLLATE Latin1_General_CI_AS'' per gestire le differenze 
 +| DDT non esportati | ''Invio_DDT_to_ERP = 0'' | Impostare parametro a ''1'' in CASSA_CONFIG_PARAMETER |
 | Dati duplicati in ERP | Chiusure riesportate | Verificare IDCHIUSURA in ERP_CASSA_ELENCO_CHIUSURE | | Dati duplicati in ERP | Chiusure riesportate | Verificare IDCHIUSURA in ERP_CASSA_ELENCO_CHIUSURE |
 +| Articoli non importati | Barcode gia' presente in CASSA_READ_DELNOTE_PROTOCOL | L'import e' incrementale: salta articoli gia' importati |
 +| Bottone "Esporta Dati" non visibile | ''ExportDataForTrasmission != -1'' | Per il bottone manuale, impostare ''ExportDataForTrasmission = -1'' |
 +
 +----
 +
 +===== 11b. Integrazione con Bilancia =====
 +
 +Questa sezione descrive come configurare l'export del listino prezzi verso bilance elettroniche collegate al sistema.
 +
 +**Script di riferimento:** ''RELEASE\03 Integrazione con Bilancia\''
 +
 +\\
 +==== 11b.1 Panoramica ====
 +
 +L'integrazione bilancia permette di:
 +  * Esportare il listino articoli verso bilance elettroniche
 +  * Supportare il formato **BENCHCOMM** (standard per bilance da banco)
 +  * Generare file in formato testo a posizione fissa (100 caratteri per riga)
 +
 +**Flusso di esportazione:**
 +
 +<code>
 +UI: Bottone "Esporta Listino Bilance" (sezione Controllo)
 +         │
 +         ▼
 +   FunctionsForm.cs
 +         │  (verifica Config.SCALE_EXPORT_PROTOCOL)
 +         ▼
 +   ScaleExport_Benchcomm.EsportaListinoBilance()
 +         │
 +         ├──► EXEC AY_EXPORT_FILE_BILANCIA @FIRMA, @BANCO, @SOLO_MODIFICATI
 +         │    (SP da creare nel DB CASHDATA)
 +         │
 +         └──► Genera file IM00VARP.txt nella directory EXPORT_BILANCIA_DIR
 +              (Formato BENCHCOMM, encoding ISO-8859-1)
 +</code>
 +
 +\\
 +==== 11b.2 Parametri di Configurazione ====
 +
 +Parametri da configurare in ''CASSA_CONFIG_PARAMETER'':
 +
 +^ Parametro ^ Sezione ^ Valore ^ Descrizione ^
 +| **SCALE_EXPORT_ENABLED** | 10 | ''true'' | Abilita il bottone "Esporta Listino Bilance" nella sezione Controllo dell'UI |
 +| **SCALE_EXPORT_PROTOCOL** | 10 | ''BENCHCOMM'' | Formato/protocollo bilancia. Attualmente supportato: ''BENCHCOMM'' |
 +| **EXPORT_BILANCIA_DIR** | 10 | //(es. C:\Export\Bilance)// | Directory dove salvare i file di export. Default: ''C:\Export\Bilance'' |
 +
 +\\
 +==== 11b.3 Procedura di Installazione ====
 +
 +=== STEP 1: Configurare i parametri ===
 +
 +Inserire/aggiornare i 3 parametri nella tabella ''CASSA_CONFIG_PARAMETER'':
 +
 +<code sql>
 +-- Abilitare export bilancia
 +UPDATE CASSA_CONFIG_PARAMETER SET CP_VALUE = 'true'
 +WHERE CP_NAME = 'SCALE_EXPORT_ENABLED' AND CP_SECTION = 10
 +
 +-- Impostare protocollo BENCHCOMM
 +UPDATE CASSA_CONFIG_PARAMETER SET CP_VALUE = 'BENCHCOMM'
 +WHERE CP_NAME = 'SCALE_EXPORT_PROTOCOL' AND CP_SECTION = 10
 +
 +-- Impostare directory di export
 +UPDATE CASSA_CONFIG_PARAMETER SET CP_VALUE = 'C:\Export\Bilance'
 +WHERE CP_NAME = 'EXPORT_BILANCIA_DIR' AND CP_SECTION = 10
 +</code>
 +
 +\\
 +=== STEP 2: Creare la Stored Procedure nel DB CASHDATA ===
 +
 +**Script:** ''03 Integrazione con Bilancia\00_Creare SP per estrarre dati da inviare alla bilancia.txt''
 +
 +> **Nota:** Lo script nella cartella contiene attualmente la SP ''PRC_EXPORT_ERP'' (export chiusure). La SP effettiva per la bilancia e' ''AY_EXPORT_FILE_BILANCIA'', che va creata in base alle specifiche della bilancia utilizzata.
 +
 +La SP ''AY_EXPORT_FILE_BILANCIA'' deve accettare questi parametri:
 +
 +<code sql>
 +CREATE PROCEDURE [dbo].[AY_EXPORT_FILE_BILANCIA]
 +    @FIRMA INT,
 +    @BANCO INT,
 +    @SOLO_MODIFICATI BIT
 +AS
 +BEGIN
 +    -- Restituisce un DataTable con i campi necessari al formato BENCHCOMM:
 +    -- Banco, CodicePLU, AliquotaIVA, Prezzo, CodiceEAN,
 +    -- DescrizioneRiga1, DescrizioneRiga2, GiorniConservazione, Tara, ecc.
 +    -- L'implementazione varia in base alla bilancia
 +END
 +</code>
 +
 +\\
 +=== STEP 3: Creare la directory di export ===
 +
 +Creare la cartella specificata nel parametro ''EXPORT_BILANCIA_DIR'' e verificare che l'utente Windows che esegue CASHDATA abbia permessi di scrittura.
 +
 +\\
 +=== STEP 4: Configurare la bilancia ===
 +
 +Configurare la bilancia per leggere il file ''IM00VARP.txt'' dalla directory di export. Il formato e':
 +  * **Protocollo:** BENCHCOMM
 +  * **Encoding:** ISO-8859-1
 +  * **Lunghezza riga:** 100 caratteri + CR+LF
 +  * **Campi a posizione fissa** (pos 1-99 con dati per banco, PLU, IVA, prezzo, EAN, descrizione, ecc.)
 +
 +\\
 +==== 11b.4 Checklist Integrazione Bilancia ====
 +
 +  * Configurare parametro ''SCALE_EXPORT_ENABLED = true''
 +  * Configurare parametro ''SCALE_EXPORT_PROTOCOL = BENCHCOMM''
 +  * Configurare parametro ''EXPORT_BILANCIA_DIR'' con il percorso corretto
 +  * Creare la SP ''AY_EXPORT_FILE_BILANCIA'' nel DB CASHDATA (personalizzare per tipo bilancia)
 +  * Creare la directory di export con permessi di scrittura
 +  * Configurare la bilancia per leggere da ''EXPORT_BILANCIA_DIR\IM00VARP.txt''
 +  * Testare l'export dal bottone "Esporta Listino Bilance" nella sezione Controllo
 +  * Verificare che il file generato sia corretto (100 char/riga, encoding ISO-8859-1)
 +
 +\\
 +==== 11b.5 Troubleshooting Integrazione Bilancia ====
 +
 +^ Errore ^ Causa ^ Soluzione ^
 +| Bottone "Esporta Listino Bilance" non visibile | ''SCALE_EXPORT_ENABLED != true'' | Impostare parametro a ''true'' in CASSA_CONFIG_PARAMETER |
 +| "Formato bilancia 'X' non riconosciuto" | Protocollo non supportato | Verificare che ''SCALE_EXPORT_PROTOCOL = BENCHCOMM'' (unico formato supportato) |
 +| Errore durante export | SP ''AY_EXPORT_FILE_BILANCIA'' mancante | Creare la SP nel database CASHDATA |
 +| File non generato | Directory non esistente o senza permessi | Verificare che ''EXPORT_BILANCIA_DIR'' esista e sia scrivibile |
 +| Bilancia non legge i dati | Formato file errato | Verificare encoding ISO-8859-1 e lunghezza righe (100 + CRLF) |
  
 ---- ----
Line 902: Line 1114:
  
 ^ Errore ^ Causa ^ Soluzione ^ ^ Errore ^ Causa ^ Soluzione ^
-| "Errore connessione DB" | Server non raggiungibile | Verificare IP/nome server | +| "Errore connessione DB" | Server non raggiungibile | Verificare IP/nome server in CashData.xml 
-| "Login failed" | Credenziali errate | Verificare username/password | +| "Login failed" | Credenziali errate | Verificare username/password in CashData.xml 
-| "Database not found" | DB non esiste | Creare database ed eseguire script |+| "Database not found" | DB non esiste | Creare database ed eseguire script FASE 1-2 |
  
 \\ \\
-==== 13.2 Errori di Configurazione ====+==== 13.2 Errori di Prima Installazione ==== 
 + 
 +Questi errori si verificano tipicamente al primo avvio dopo una nuova installazione. La sequenza di avvio dell'app (''HomeLogic.cs'') verifica molti parametri e tabelle in ordine. 
 + 
 +=== Flusso di avvio (ordine di verifica) === 
 + 
 +<code> 
 +1. BackupAndVerifyDataBase()    -- Solo in Release, richiede PCisSqlServer 
 +2. ReadConfigParameter("LanguageCode"
 +3. ReadConfigParameter("INSTALLFOLDER" -- Prima installazione se vuoto 
 +4. CheckLic()                    -- Verifica licenza 
 +5. ReadDefaultPrinter()          -- Verifica stampante 
 +6. ReadParameter("HOMEMENU_ENABLED"
 +7. PulisciScontrino()            -- Usa CCO_CASH_NR su CASSA_COUPON 
 +8. LoadParametri()               -- Carica tutti i getParValueByKey() 
 +9. LoadScontrinoDefaultsValues() -- Contatori (NEW_DAYLY_CLOSURE, RECEIPT_COUNTER_PWD, ecc.) 
 +10. Login()                      -- Richiede utenti e gruppi 
 +</code> 
 + 
 +\\ 
 +=== Tabella errori e soluzioni === 
 + 
 +^ Errore ^ Causa Radice ^ Soluzione ^ 
 +| **"Errore lettura parametro: INSTALLFOLDER"** | Parametro mancante in CASSA_CONFIG_PARAMETER sezione 30 | Eseguire ''03_FIX_PARAMETRI_MANCANTI.sql'' oppure verificare che ''02_DB_CREATION_TABLES.sql'' sia aggiornato | 
 +| **"First installation procedure invalid. Contact Software House !!!"** | I campi LIC_SOSerial, LIC_Volume, LIC_ACTIVATE in CASSA_CONFIG_PARAMETER (sezione 30) contengono valori template non vuoti, ma il sistema rileva una prima installazione | ''UPDATE CASSA_CONFIG_PARAMETER SET CP_VALUE = '''' WHERE CP_NAME IN ('LIC_SOSerial', 'LIC_Volume', 'LIC_ACTIVATE') AND CP_SECTION = 30''
 +| **"Autorizzazione CREATE DATABASE negata" / "Errore durante creazione backup database"** | ''BackupAndVerifyDataBase()'' esegue ''BACKUP DATABASE'' in modalita Release, ma l'utente SQL non ha permessi BACKUP | Impostare ''PCisSqlServer = false'' in CashData.xml. Impostare ''true'' solo se l'utente SQL ha permessi di backup | 
 +| **"La stampante non e' installata" (loop infinito)** | ''CASSA_DOC_PRINTER.DPR_DEFAULTPRINTER'' e' NULL per tutti i tipi documento. Il codice in ''Utility.cs:1899'' ha un bug nel check ''IsDBNull'' | ''UPDATE CASSA_DOC_PRINTER SET DPR_DEFAULTPRINTER = 'Microsoft Print to PDF''' (gia' incluso nello script di creazione aggiornato) | 
 +| **"Nessun gruppo configurato nel sistema"** | Tabelle ''CASSA_USER_GROUP'' e ''CASSA_USER'' vuote | Gia' incluso nello script di creazione aggiornato. Per DB esistenti: inserire manualmente gruppi e utenti (vedi sezione 3.1 FASE 6) | 
 +| **"Errore lettura parametro: HOMEMENU_ENABLED"** | Parametro mancante in tabella ''CASSA_PARAMETER'' (non CONFIG_PARAMETER!) | ''INSERT INTO CASSA_PARAMETER (CP_FIRMA, CP_NAME, CP_VALUE, CP_TEXT) VALUES (10, N'HOMEMENU_ENABLED', N'0', N'Home menu enabled')''
 +| **"Il nome colonna CCO_CASH_NR"** a ''HomeLogic.cs:1497'' | Colonna ''CCO_CASH_NR'' mancante nella tabella ''CASSA_COUPON'' | ''ALTER TABLE [CASSA_COUPON] ADD [CCO_CASH_NR] [int] NULL'' (gia' incluso nello script di creazione aggiornato) | 
 +| **"Errore lettura parametro: NEW_DAYLY_CLOSURE"** | Parametro letto con ''ReadParameter("NEW_DAYLY_CLOSURE", 0, Config.CASHNUMBER)'' quindi va in ''CASSA_PARAMETER_PC'' (non CASSA_PARAMETER!) | ''INSERT INTO CASSA_PARAMETER_PC (CP_FIRMA, CP_NAME, CP_VALUE, CP_TEXT, CASH_NR) VALUES (10, N'NEW_DAYLY_CLOSURE', N'1', N'Daily closure counter', 1)''
 +| **"Errore lettura parametro: RECEIPT_COUNTER_PWD"** | Parametro letto con ''ReadParameter("RECEIPT_COUNTER_PWD", 0)'' dalla tabella ''CASSA_PARAMETER''. Il valore deve essere **non vuoto** | ''INSERT INTO CASSA_PARAMETER (CP_FIRMA, CP_NAME, CP_VALUE, CP_TEXT) VALUES (10, N'RECEIPT_COUNTER_PWD', N'tex01', N'Password reset contatore')''
 +| **"Errore lettura parametro: X"** (generico) | Parametro X mancante. Individuare la tabella corretta verificando il codice sorgente | Se ''ReadParameter(name, 0)'' -> ''CASSA_PARAMETER''. Se ''ReadParameter(name, 0, Config.CASHNUMBER)'' -> ''CASSA_PARAMETER_PC''. Se ''getParValueByKey(name)'' -> ''CASSA_CONFIG_PARAMETER''
 + 
 +\\ 
 +==== 13.3 Come Distinguere le Tabelle dei Parametri ==== 
 + 
 +Quando si incontra un errore "Errore lettura parametro", e' fondamentale capire **quale tabella** deve contenere il parametro: 
 + 
 +^ Metodo di lettura nel codice ^ Tabella DB ^ Identificato da ^ 
 +| ''getParValueByKey("NOME")'' | ''CASSA_CONFIG_PARAMETER'' | Errore da ''Utility.cs:3808''
 +| ''ReadConfigParameter("NOME", releasedfor, section)'' | ''CASSA_CONFIG_PARAMETER'' | Errore da ''HomeLogic.cs:734''
 +| ''ReadParameter("NOME", 0)'' (2 argomenti) | ''CASSA_PARAMETER'' | cash_nr=0 (default) | 
 +| ''ReadParameter("NOME", 0, Config.CASHNUMBER)'' (3 argomenti) | ''CASSA_PARAMETER_PC'' | cash_nr != 0 | 
 + 
 +\\ 
 +==== 13.4 Errori di Configurazione ====
  
 ^ Errore ^ Causa ^ Soluzione ^ ^ Errore ^ Causa ^ Soluzione ^
-| "Parametro mancante: X" | Parametro non configurato | Inserire in CASSA_CONFIG_PARAMETER +| "Parametro mancante: X" | Parametro non configurato | Identificare la tabella corretta (vedi 13.3) e inserire il parametro 
-| "ReleaseFor non valido" | PC non registrato | Configurare ReleaseFor in Settings |+| "ReleaseFor non valido" | PC non registrato | Configurare ReleaseFor in CashData.xml | 
 +| Parametri con valore vuoto | Alcuni parametri (es. RECEIPT_COUNTER_PWD) richiedono un valore non vuoto | Verificare che CP_VALUE non sia vuoto per i parametri che lo richiedono |
  
 \\ \\
-==== 13.Errori Operativi ====+==== 13.Errori Operativi ====
  
 ^ Errore ^ Causa ^ Soluzione ^ ^ Errore ^ Causa ^ Soluzione ^
Line 922: Line 1181:
  
 \\ \\
-==== 13.Log e Diagnostica ====+==== 13.Log e Diagnostica ====
  
   * **Log accessi**: Tabella ''CASSA_USER_OP''   * **Log accessi**: Tabella ''CASSA_USER_OP''
   * **Log operazioni**: Consultare con report ''CASHPROTOCOL''   * **Log operazioni**: Consultare con report ''CASHPROTOCOL''
   * **Errori applicazione**: Verificare file di log in cartella installazione   * **Errori applicazione**: Verificare file di log in cartella installazione
 +  * **Debug SQL**: Controllare i parametri direttamente nel DB con:
 +
 +<code sql>
 +-- Verificare parametri di configurazione
 +SELECT * FROM CASSA_CONFIG_PARAMETER WHERE CP_NAME = 'NOME_PARAMETRO'
 +-- Verificare parametri runtime
 +SELECT * FROM CASSA_PARAMETER WHERE CP_NAME = 'NOME_PARAMETRO'
 +-- Verificare parametri per-PC
 +SELECT * FROM CASSA_PARAMETER_PC WHERE CP_NAME = 'NOME_PARAMETRO'
 +</code>
  
 ---- ----
Line 992: Line 1261:
 | Form1.cs | ~2700 | Form vendite | | Form1.cs | ~2700 | Form vendite |
 | PAY.cs | ~2500 | Dialog pagamento | | PAY.cs | ~2500 | Dialog pagamento |
-| CashChiusura.cs | ~800 | Form chiusura cassa |+| CashChiusura.cs | ~800 | Form chiusura cassa + validazione DDT per ERP |
 | UpdateUtility.cs | ~1600 | Importazione dati | | UpdateUtility.cs | ~1600 | Importazione dati |
 +| FunctionsForm.cs | ~1800 | Sezione Controllo (export ERP, bilancia) |
 +| ScaleExport_Benchcomm.cs | ~100 | Export listino bilance formato BENCHCOMM |
 +
 +\\
 +==== B.2 Script Database - Installazione Base ====
 +
 +^ File ^ Cartella ^ Descrizione ^
 +| 00_DB_CREATION_CREATEDB.sql | RELEASE\01\ | Creazione database |
 +| 01_DB_CREATION_PROCEDURE.sql | RELEASE\01\ | Stored procedures e viste (V_CASSA_CHIUSURE, V_CASSA_VENDITE_ARTICOLI) |
 +| 02_DB_CREATION_TABLES.sql | RELEASE\01\ | Tabelle, dati iniziali, utenti, gruppi, stampanti |
 +| 03_DB_CREATION_WITH_PROMO.sql | RELEASE\01\ | Dati promozioni |
 +| 02 Reimposta dati.sql | Cose da fare...\ | Configurazione iniziale (personalizzare prima dell'esecuzione) |
 +| 03_FIX_PARAMETRI_MANCANTI.sql | Cose da fare...\ | Fix parametri mancanti per DB esistenti |
 +
 +\\
 +==== B.3 Script Integrazione ERP2 ====
 +
 +^ File ^ Cartella ^ Target DB ^ Descrizione ^
 +| 00_Creare linked server.txt | RELEASE\02...\ | master | Linked server verso DB ERP2 |
 +| 01_Tabelle&Viste da creare su db ERP.txt | RELEASE\02...\ | DB ERP | Tabelle AY_CASSA_*, EXT_ORDINI_*, vista lotti, login |
 +| 02_Da fare su DB CashData.txt | RELEASE\02...\ | DB CASHDATA | Sinonimi ERP_*, viste V_ERP_*, SP AY_CARICA_DDT_DA_ERP, PRC_EXPORT_ERP |
  
 \\ \\
-==== B.Script Database ====+==== B.Script Integrazione Bilancia ====
  
-^ File ^ Descrizione ^ +^ File ^ Cartella ^ Target DB ^ Descrizione ^ 
-00_DB_CREATION_CREATEDB.sql Creazione database | +00_Creare SP per estrarre dati.txt RELEASE\03...DB CASHDATA SP AY_EXPORT_FILE_BILANCIA (template, personalizzare per tipo bilancia) |
-| 01_DB_CREATION_PROCEDURE.sql | Stored procedures | +
-| 02_DB_CREATION_TABLES.sql Tabelle | +
-| 02 Reimposta dati.sql Configurazione iniziale |+
  
 ---- ----
  
 //Documento generato automaticamente dall'analisi del codice sorgente CASHDATA.//\\ //Documento generato automaticamente dall'analisi del codice sorgente CASHDATA.//\\
-//Data generazioneGennaio 2026//\\ +//Ultimo aggiornamentoFebbraio 2026//\\ 
-//Versione: 1.0//+//Versione: 1.2 - Aggiunta integrazione ERP2 e bilancia//