diff --git a/build/773mod.vcxproj b/build/773mod.vcxproj
index 8cc66f907..2704f97f1 100644
--- a/build/773mod.vcxproj
+++ b/build/773mod.vcxproj
@@ -81,7 +81,7 @@
wsock32.lib;%(AdditionalDependencies)
- ..\exed/773mod.exe
+ $(OutDir)$(TargetName)$(TargetExt)
true
%(IgnoreSpecificDefaultLibraries)
true
diff --git a/build/Cg0.vcxproj b/build/Cg0.vcxproj
index 7ce0b57c1..9af49902e 100644
--- a/build/Cg0.vcxproj
+++ b/build/Cg0.vcxproj
@@ -231,7 +231,6 @@
-
@@ -288,6 +287,7 @@
+
@@ -313,6 +313,11 @@
{2d38a763-3d74-4338-9362-b891784ec90e}
+
+
+ Designer
+
+
diff --git a/build/Cg0.vcxproj.filters b/build/Cg0.vcxproj.filters
index c251a5fcb..e73032895 100644
--- a/build/Cg0.vcxproj.filters
+++ b/build/Cg0.vcxproj.filters
@@ -98,9 +98,6 @@
Masks
-
- Masks
-
Masks
@@ -263,6 +260,9 @@
Headers
+
+ Headers
+
@@ -272,4 +272,9 @@
Menu
+
+
+ Report
+
+
\ No newline at end of file
diff --git a/build/ca3.vcxproj b/build/ca3.vcxproj
index a8cc4d236..ffc4ad6aa 100644
--- a/build/ca3.vcxproj
+++ b/build/ca3.vcxproj
@@ -300,7 +300,9 @@
-
+
+ Designer
+
diff --git a/build/fastrip.exe b/build/fastrip.exe
index 15ee6b6a1..579752d23 100644
Binary files a/build/fastrip.exe and b/build/fastrip.exe differ
diff --git a/build/fastrip.vcxproj b/build/fastrip.vcxproj
index d5d41e9ea..b3cb7895f 100644
--- a/build/fastrip.vcxproj
+++ b/build/fastrip.vcxproj
@@ -1,5 +1,5 @@

-
+
Debug
@@ -14,18 +14,21 @@
{68251613-3B9A-4F87-9F40-827C46267ADE}
Win32Proj
fastrip
+ 10.0.17134.0
Application
true
Unicode
+ v141
Application
false
true
NotSet
+ v141
diff --git a/build/fd.vcxproj b/build/fd.vcxproj
index 889e4f72f..73d7b609e 100644
--- a/build/fd.vcxproj
+++ b/build/fd.vcxproj
@@ -1,5 +1,5 @@

-
+
Debug
@@ -15,18 +15,21 @@
Win32Proj
fd
fd0
+ 10.0.17763.0
Application
true
NotSet
+ v141
Application
false
true
NotSet
+ v141
diff --git a/build/msk232.bat b/build/msk232.bat
index 386018762..5eef7df95 100644
--- a/build/msk232.bat
+++ b/build/msk232.bat
@@ -8,7 +8,7 @@ type ..\src\include\uml.h >%TMP%\%~n1.tmp
type %1 >>%TMP%\%~n1.tmp
cl /nologo /EP %TMP%\%~n1.tmp >%TMP%\%~n1.tm2
-patchdef %TMP%\%~n1.tm2 %TMP%\%TMP%\%~n1.tm3
+patchdef %TMP%\%~n1.tm2 %TMP%\%~n1.tm3
type ..\src\include\uml.h >%TMP%\%~n1.uml
type %TMP%\%~n1.tm3 >>%TMP%\%~n1.uml
diff --git a/build/pg0001.vcxproj b/build/pg0001.vcxproj
index 9374a028e..653ac09e3 100644
--- a/build/pg0001.vcxproj
+++ b/build/pg0001.vcxproj
@@ -1,5 +1,5 @@

-
+
Debug
@@ -12,15 +12,18 @@
{9D5735F1-EE47-4ED3-929A-048FFF8B6344}
+ 10.0.17763.0
Application
false
+ v141
Application
false
+ v141
diff --git a/build/pg0067.vcxproj b/build/pg0067.vcxproj
index 90d387a89..c7bf8f4c9 100644
--- a/build/pg0067.vcxproj
+++ b/build/pg0067.vcxproj
@@ -1,5 +1,5 @@

-
+
Debug
@@ -12,15 +12,18 @@
{453301DF-028E-479F-9548-C2346AD8C6ED}
+ 10.0.17763.0
Application
false
+ v141
Application
false
+ v141
diff --git a/build/pg0068.vcxproj b/build/pg0068.vcxproj
index 79a865ed0..6e9562f6d 100644
--- a/build/pg0068.vcxproj
+++ b/build/pg0068.vcxproj
@@ -1,5 +1,5 @@

-
+
Debug
@@ -12,15 +12,18 @@
{DE9692C8-AD5E-4AD1-A0BB-16B9A4F722F1}
+ 10.0.17763.0
Application
false
+ v141
Application
false
+ v141
diff --git a/build/pg0069.vcxproj b/build/pg0069.vcxproj
index be5103906..bfc827962 100644
--- a/build/pg0069.vcxproj
+++ b/build/pg0069.vcxproj
@@ -1,5 +1,5 @@

-
+
Debug
@@ -12,15 +12,18 @@
{3B1237FC-2632-448E-B5F1-A1B2A3278E47}
+ 10.0.17763.0
Application
false
+ v141
Application
false
+ v141
diff --git a/build/pg0388.vcxproj b/build/pg0388.vcxproj
index 008da01af..c7465d10a 100644
--- a/build/pg0388.vcxproj
+++ b/build/pg0388.vcxproj
@@ -1,5 +1,5 @@

-
+
Debug
@@ -12,15 +12,18 @@
{4E392B08-31F0-48CC-AC05-5C6EE7A6473C}
+ 10.0.17763.0
Application
false
+ v141
Application
false
+ v141
diff --git a/build/pi0001.vcxproj b/build/pi0001.vcxproj
index c5ded3c5e..b6b58abb0 100644
--- a/build/pi0001.vcxproj
+++ b/build/pi0001.vcxproj
@@ -1,5 +1,5 @@

-
+
Debug
@@ -12,15 +12,18 @@
{5379F62B-868B-4469-9FC9-993AF9ADE381}
+ 10.0.17763.0
Application
false
+ v141
Application
false
+ v141
diff --git a/build/pi0002.vcxproj b/build/pi0002.vcxproj
index 79e4bbbb1..6e290d05a 100644
--- a/build/pi0002.vcxproj
+++ b/build/pi0002.vcxproj
@@ -1,5 +1,5 @@

-
+
Debug
@@ -12,15 +12,18 @@
{F154352E-CF6F-44A1-B45F-BAE74281A0AD}
+ 10.0.17763.0
Application
false
+ v141
Application
false
+ v141
diff --git a/build/pl0001.vcxproj b/build/pl0001.vcxproj
index 1e9a8770e..183f4f154 100644
--- a/build/pl0001.vcxproj
+++ b/build/pl0001.vcxproj
@@ -1,5 +1,5 @@

-
+
Debug
@@ -12,15 +12,18 @@
{EAA83FEF-B3E6-4BDE-B746-2BE727FA057A}
+ 10.0.17763.0
Application
false
+ v141
Application
false
+ v141
diff --git a/build/pl0002.vcxproj b/build/pl0002.vcxproj
index 5df6a685e..47697ec3f 100644
--- a/build/pl0002.vcxproj
+++ b/build/pl0002.vcxproj
@@ -1,5 +1,5 @@

-
+
Debug
@@ -12,15 +12,18 @@
{69D3E5F4-0C68-4171-9296-D01B7E885C89}
+ 10.0.17763.0
Application
false
+ v141
Application
false
+ v141
diff --git a/build/ps0017.vcxproj b/build/ps0017.vcxproj
index b32743e0e..85004b9d2 100644
--- a/build/ps0017.vcxproj
+++ b/build/ps0017.vcxproj
@@ -42,7 +42,7 @@
..\exe\
$(Configuration)\$(ProjectName)\
false
- ..\exed\
+ ..\exe\
$(Configuration)\$(ProjectName)\
true
@@ -135,6 +135,7 @@
MachineX86
+ false
true
@@ -144,6 +145,7 @@
+
diff --git a/build/ps0017.vcxproj.filters b/build/ps0017.vcxproj.filters
index 0ee1b1e09..f5e7021f4 100644
--- a/build/ps0017.vcxproj.filters
+++ b/build/ps0017.vcxproj.filters
@@ -39,6 +39,9 @@
Sources
+
+ Sources
+
diff --git a/build/pt0001.vcxproj b/build/pt0001.vcxproj
index 20e551636..7ce12bf51 100644
--- a/build/pt0001.vcxproj
+++ b/build/pt0001.vcxproj
@@ -1,5 +1,5 @@

-
+
Debug
@@ -12,15 +12,18 @@
{1479CB30-7DF8-4F92-A3E6-856EA6F2210C}
+ 10.0.17763.0
Application
false
+ v141
Application
false
+ v141
diff --git a/build/pt0003.vcxproj b/build/pt0003.vcxproj
index 42b330684..64d80588c 100644
--- a/build/pt0003.vcxproj
+++ b/build/pt0003.vcxproj
@@ -1,5 +1,5 @@

-
+
Debug
@@ -12,15 +12,18 @@
{0AA531D2-E451-4214-B9CE-E06C9E42BA2D}
+ 10.0.17763.0
Application
false
+ v141
Application
false
+ v141
diff --git a/build/pt0195.vcxproj b/build/pt0195.vcxproj
index bb84e5a45..389bf1658 100644
--- a/build/pt0195.vcxproj
+++ b/build/pt0195.vcxproj
@@ -1,5 +1,5 @@

-
+
Debug
@@ -12,15 +12,18 @@
{6796CEDE-A4D5-4340-B24D-F0E7DCEF050D}
+ 10.0.17763.0
Application
false
+ v141
Application
false
+ v141
diff --git a/build/tf0.vcxproj b/build/tf0.vcxproj
index 2f2cdba1f..682e499c1 100644
--- a/build/tf0.vcxproj
+++ b/build/tf0.vcxproj
@@ -92,6 +92,7 @@
MachineX86
+ false
true
diff --git a/build/ve0.vcxproj b/build/ve0.vcxproj
index 6a689514f..308b09807 100644
--- a/build/ve0.vcxproj
+++ b/build/ve0.vcxproj
@@ -66,7 +66,8 @@
Disabled
..\src\li;../src/include;../src/xvaga;../src/xvtdb;../src/xvturl;%(AdditionalIncludeDirectories)
_DEBUG;WIN32;_WINDOWS;__LONGDOUBLE__
- false
+
+
MultiThreadedDebug
true
Level3
diff --git a/exe/DIR.GEN b/exe/DIR.GEN
index 7f1a44f20..220d377f7 100644
Binary files a/exe/DIR.GEN and b/exe/DIR.GEN differ
diff --git a/exe/TRC.GEN b/exe/TRC.GEN
index 3069bb06c..2c183cab4 100644
Binary files a/exe/TRC.GEN and b/exe/TRC.GEN differ
diff --git a/exe/campo.ini b/exe/campo.ini
index 16f22d2bf..51f9ed078 100644
--- a/exe/campo.ini
+++ b/exe/campo.ini
@@ -1,8 +1,8 @@
[Main]
Donglehw =4
-Firm =00001a
+Firm =00100a
MaxHandles = 32
-Study =h:\e\dati\crpa\
+Study =h:\e\dati\din\
Type = 1
User = ADMIN
diff --git a/exe/recdesc/D90.DES b/exe/recdesc/D90.DES
index e69de29bb..d51cf2f9a 100644
--- a/exe/recdesc/D90.DES
+++ b/exe/recdesc/D90.DES
@@ -0,0 +1,102 @@
+[FieldDescr]
+ANTICORPI = Anticorpi
+BENEM = Vuole le benemerenze S/N
+CATDON = Categoria donatori
+CATNOND1 = Categoria non donatori 1
+CATNOND2 = Categoria non donatori 2
+CF = Codice fiscale
+CMV = CMV
+CODCL = Codice cartella clinica
+CODCT = Codice centro trasfusionale
+CODICE = Codice
+CODMED = Codice regionale medico di base
+CODSEZ = Codice sezione di appartenenza
+CODSOT = Codice sottogruppo di appartenenza
+COGNOME = Cognome
+COGNOME_SP = Cognome del marito
+COMNASC = Codice comune o stato estero di nascita
+CONDOCC = Condizione occupazionale (da cambiare)
+CONSENSO = Consenso informato (legge privacy)
+DATAAF = Data stato AF
+DATACONV = Data ultima convocazione spedita
+DATADIM = Data dimissione
+DATAISC = Data iscrizione
+DATANASC = Data di nascita
+DATAPRIAF = Data prima donazione AF
+DATAPRISI = Data prima donazione SI
+DATAPROSAF = Data prossima AF
+DATAPROSSI = Data prossima SI
+DATASI = Data stato SI
+DATASTATO = Data in cui è stato attribuito lo stato
+DATAULTAF = Data ultima donazione AF
+DATAULTAGG = Data ultimo aggiornamento
+DATAULTDON = Data ultima donazione
+DATAULTID = Data ultima idoneità
+DATAULTSI = Data ultima donazione SI
+DATAULTSOL = Data ultimo sollecito
+DATA_PROS = Data prossimo stato (per fine sospensione)
+DISP_AF_1 = Disponibilita AF 1
+DISP_AF_2 = Disponibilita AF 2
+DOCID = Documento di identità
+DOM_CAP = Domicilio - CAP
+DOM_CODCOM = Domicilio - codice comune
+DOM_CODLOC = Domicilio - codice localita' postale
+DOM_DISTRI = Domicilio - presso/località - ex distribuzione
+DOM_INDIR = Domicilio - indirizzo
+DOM_STRADA = Domicilio - codice stradario
+DONPRECAF = Numero donazioni AF non dettagliate
+DONPRECSI = Numero donazioni SI non dettagliate
+DU = Du
+EMAIL = Indirizzo di posta elettronica
+ESCLUSO = Esclusione non sanitaria
+FENOTIPORH = Fenotipo Rh
+FINESOSAF = Data fine sospensione AF
+FINESOSSI = Data fine sospensione per SI
+GIOPRECON = Giorni preferiti per controlli
+GIOPREDON = Giorni preferiti per donazioni
+GRUPPOAB0 = Gruppo AB0
+GRUPPOAZIE = Codice gruppo aziendale
+IDON1 = Idoneità 1
+IDON2 = Idoneità 2
+IDON3 = Idoneità 3
+IDON4 = Idoneità 4
+INTAF = Intervallo aferesi
+INTSI = Intervallo sangue intero
+KELL = Kell
+LUOGOLAV = Luogo di lavoro (codice)
+MODCONV = Modalita' di convocazione
+MOTESCL = Motivo esclusione
+NOME = Nome
+NOTE = Note
+NOTIZIARIO = Vuole il notiziario S/N
+NUMCONV = Numero convocazioni spedite
+POSPROF = Posizione professionale (da cambiare)
+PROFESS = Professione (codice)
+PROS_STATO = Stato prossimo
+PUNTORACC = Punto di raccolta per convocazione
+RAMOATT = Ramo di attività (da cambiare)
+RES_CAP = Residenza - CAP
+RES_CODCOM = Residenza - codice comune
+RES_CODLOC = Residenza - codice localita' postale
+RES_INDIR = Residenza - indirizzo
+RHANTID = Rh/AntiD
+SESSO = Sesso
+STATO = Stato attuale
+STATOAF = Stato sanitario AF
+STATOSI = Stato sanitario per SI
+TELABI = Telefono abitazione
+TELALT = Telefono altro
+TELLAV = Telefono lavoro
+TERMESCL = Data termine esclusione
+TESSAVIS = Tessera AVIS
+TESSSSN = Tessera SSN
+TIPOULTDON = Tipo ultima donazione
+TIPOULTID = Tipo ultima idoneità
+TITINDIR = Titolo in indirizzo
+TITSTUD = Titolo di studio (da cambiare)
+TOTDON = Totale donazioni
+TOTDONAF = Numero donazioni AF
+TOTDONSI = Numero donazioni SI
+T_STAMPATA = Tessera stampata (S/N)
+UTENULTAGG = Utente ultimo aggiornamento
+
diff --git a/exe/recdesc/D92.DES b/exe/recdesc/D92.DES
index 630566e1d..0412fabe4 100644
--- a/exe/recdesc/D92.DES
+++ b/exe/recdesc/D92.DES
@@ -1,3 +1,18 @@
[FieldDescr]
-XX =
+CC = CC
+CODICE = Codice soggetto
+CODSEZ = Sezione di app. al momento della donazione
+CODSOT = Sottogruppo di app.
+DATADON = Data donazione
+ETICHETTA = Etichetta sacca
+HB = Hb
+LUOGODON = Luogo donazione
+PA = P.A.
+PRIMADON = Prima donazione
+PROGDON = Progressivo donazione per soggetto
+PROGINS = Progressivo inserimento
+PROTIDEMIA = Protidemia
+SGPT = SGPT
+TIPODON = Tipo donazione
+XX =
diff --git a/exe/recdesc/D93.DES b/exe/recdesc/D93.DES
index e69de29bb..c20afda49 100644
--- a/exe/recdesc/D93.DES
+++ b/exe/recdesc/D93.DES
@@ -0,0 +1,17 @@
+[FieldDescr]
+CODICE = Codice soggetto
+DATACON = Data controllo
+IDON1 = Idoneità 1
+IDON2 = Idoneità 2
+IDON3 = Idoneità 3
+IDON4 = Idoneità 4
+INTAF = Intervallo per aferesi
+INTSI = Intervallo per sangue intero
+MOTIVO = Motivo (per controlli che modificano lo stato)
+PROGCON = Progressivo controllo
+PROSSDATA = Data prossimo tipo
+PROSSTIPO = Prossimo tipo di controllo (programmato e/o presunto)
+RESPONSAB = Responsabile (per controlli che modificano lo stato)
+SINGOLI = Singoli controlli
+TIPOCON = Tipo o esito controllo
+
diff --git a/exe/recdesc/D95.DES b/exe/recdesc/D95.DES
index e69de29bb..4abd68618 100644
--- a/exe/recdesc/D95.DES
+++ b/exe/recdesc/D95.DES
@@ -0,0 +1,6 @@
+[FieldDescr]
+CODFAM = Codice soggetto familiare
+FAMIGLIA = Codice famiglia (progressivo automatico)
+GRADOPAR = Grado di parentela
+PROGFAM = Progressivo familiare
+
diff --git a/exe/recdesc/D96.DES b/exe/recdesc/D96.DES
index e69de29bb..5b00bf764 100644
--- a/exe/recdesc/D96.DES
+++ b/exe/recdesc/D96.DES
@@ -0,0 +1,40 @@
+[FieldDescr]
+CATCANC = Categoria cancellati
+CATEMER = Categoria emeriti
+CATESTI = Categoria estinti
+CODSEZ = Codice sezione
+CODSOT = Codice sottogruppo
+COM = Codice comune residenza
+CONVNOTE = Note
+CONVORA = Orario per stampa cartolina
+CONVSEDE1 = Sede: 1° riga
+CONVSEDE2 = Sede: 2° riga
+CONVSEDE3 = Sede: 3° riga
+CONVSEDE4 = Sede: 4° riga
+DATAULTCON = Data ultima convocazione
+DENOMINAZ = Denominazione completa della sezione
+DENSEZ = Denominazione sezione
+DENSOT = Denominazione sottogruppo
+DONEMER = Numero donazioni per passaggio a emeriti
+FAX = Fax sezione
+GIOCARSOL = Giorni tra cartolina e primo sollecito
+GIOPERRIT = Giorni tra le chiamate per ritardatari
+GIOSOLSOL = Giorni tra sollecito e sollecito
+GIOULTSOL = Giorni tra penultimo e ultimo sollecito
+INDIRIZZO = Indirizzo
+INTESTAZ1 = 1° Riga di intestazione per tessere e cartoline
+INTESTAZ2 = 2° Riga di intestazione per tessere e cartoline
+INTESTAZ3 = 3° Riga di intestazione per tessere e cartoline
+INTESTAZ4 = 4° Riga di intestazione per tessere e cartoline
+INTESTI = Intervallo di estinzione in anni
+INTMAX = Intervallo max per cartolina
+INTMIN = Intervallo min. per cartolina
+INTMINCONV = Intervallo minimo di convocazione in gg.
+LOCALITA = Località postale
+NUMMAXSOL = Numero massimo di solleciti
+PUNTORACC = Codice punto di raccolta per convocazione
+REFERCED = Cognome e nome referente CED
+STATO = Stato sezione
+TELEFONO = Telefono sezione
+TIPOCONV = Tipo convocazione
+
diff --git a/exe/recdesc/D97.DES b/exe/recdesc/D97.DES
index e69de29bb..f29d95c0c 100644
--- a/exe/recdesc/D97.DES
+++ b/exe/recdesc/D97.DES
@@ -0,0 +1,10 @@
+[FieldDescr]
+CODMED = Codice regionale del medico
+COGNOME = Cognome medico
+COM = Codice comune di residenza
+INDIRIZZO = Indirizzo medico
+LOCALITA = Località postale
+NOME = Nome medico
+TELABI = Telefono abitazione
+TELAMB = Telefono ambulatorio
+
diff --git a/exe/recdesc/d154.des b/exe/recdesc/d154.des
index 0e4967c63..1e487fbfb 100644
--- a/exe/recdesc/d154.des
+++ b/exe/recdesc/d154.des
@@ -1,6 +1,7 @@
[FieldDescr]
AL = Data fine periodo
ANNO = Anno
+CHIUSA = Indica se una lettera di intento è chiusa
CODCLI = Codice cliente
DAL = Data inizio periodo
DATAREG = Data di registrazione
@@ -8,6 +9,8 @@ IMPORTO = Importo
INVIATO = Inviato
NOTE = Note
NUMPROT = Numero protocollo
+PROTINTF = Numero di protocollo passato dall agenzia delle entrate (prima parte)
+PROTINTS = Numero di protocollo passato dall agenzia delle entrate (seconda parte)
STAMPATO = Stampato
TIPOOP = Tipo operazione (1=singola,2=fino a,3=nel periodo dal/al)
UFFIVA = Codice ufficio IVA
diff --git a/exe/recdesc/d168.des b/exe/recdesc/d168.des
index 2201bd113..07499f2fa 100644
--- a/exe/recdesc/d168.des
+++ b/exe/recdesc/d168.des
@@ -46,7 +46,7 @@ RIFBOL = Riferimenti bolle in fattura
RIFBOLFAT = Riferimenti bolle in fattura
RIPCONS = Stampa riepilogo consegne
RITAUDTTMP = Ritiro automatico dotazione temporanea
-SSCONS = Spese di spedizione alla consegna
+SSCONS = Spese da addebitare alla consegna
STATUS = Stato del contratto, chiuso, confermato, da confermare
STDDTPTS = Stampa DDT da pulito con Touch Screen
STDICITURA = Stampa dicitura
diff --git a/exe/recdesc/d171.des b/exe/recdesc/d171.des
index e2d8c9637..cf3c1de1c 100644
--- a/exe/recdesc/d171.des
+++ b/exe/recdesc/d171.des
@@ -7,6 +7,7 @@ DATAREGP = Data pagamento
IMPONIBILE = Imponibile
IMPORTO = Importo
IMPOSTA = Imposta
+INDETR = Riga di IVA indetraibile
MESELIQ = Mese liquidazione
NUMPRO = Numero progressivo PAG o NC
NUMREG = Numero operazione Fattura
diff --git a/exe/recdesc/d20.des b/exe/recdesc/d20.des
index 208976f43..bd3b5a367 100644
--- a/exe/recdesc/d20.des
+++ b/exe/recdesc/d20.des
@@ -12,7 +12,7 @@ CODCFASS = Codice cliente (fornitori) o fornitore (clienti) associato
CODCFFATT = Codice cliente (fornitore) cui fatturare
CODLIN = Codice lingua
CODPAG = Codice pagamento
-CODRFSO = Missing description
+CODRFSO = Codice Rappresentate Fisc/Stabile Org
CODSTAT = Codice statistico
CODVAL = Codice valuta
COFI = Codice fiscale
@@ -22,7 +22,7 @@ CONTO = Conto prevalente (se presente)
CONTORIC = Conto prevalente di ricavo (se presente)
DATAAGG = Data ultima modifica
DATANASC = Data di nascita
-DATARFSO = Missing description
+DATARFSO = Data Rappresentate Fisc/Stabile Org
DIPPUBB = Dipendente Pubblico
DIRTY = Anagrafica modificata (NON UTILIZZATO)
DOCMAIL = Indirizzo di posta elettronica per i documenti
@@ -34,15 +34,15 @@ GRUPPORIC = Gruppo prevalente di ricavo (se presente)
IBAN = Codice IBAN
INDCF = Indirizzo
INDENTE = Indirizzo ente (Dipendente Pubblico)
-INIFATTEL = Missing description
-INIREVCHG = Missing description
+INIFATTEL = Data inizio fatturazione elettronica
+INIREVCHG = Data inizio reverse charge
LOCALITACF = Loacalita'
MAIL = Indirizzo di posta elettronica generico
NUMCC = Numero di conto corrente
OCCAS = Cliente / fornitore occasionale
OGGETTI = Link ad oggetti esterni
PAIV = Partita IVA
-PEC = Missing description
+PEC = Indirizzo di posta elettronica certificato
PFAX = Prefisso del numero di FAX
PTEL = Prefisso del numero di telefono
PTEL2 = Prefisso del 2 numero di telefono
diff --git a/exe/recdesc/d23.des b/exe/recdesc/d23.des
index 8b9c8b963..c03792418 100644
--- a/exe/recdesc/d23.des
+++ b/exe/recdesc/d23.des
@@ -4,6 +4,7 @@ ANNOFE = Anno invio definitivo dati rilevanti
ANNOIVA = Anno IVA
CAMBIO = Cambio della valuta
CAMBIOI = Cambio della valuta intra-comunitaria
+CFBOLLADOG = Codice fornitore a cui è riferita la bolla doganale
CODCAUS = Codice causale
CODCF = Codice
CODPAG = Codice pagamento
@@ -29,6 +30,7 @@ DPROVV = Documento originale PROVV
INVIATO = Inviato ad altra contabilità
INVIOFE = Data invio definitivo dati rilevanti
INVIVA = Inviata la parte IVA ad altra contabilita'
+IVALIQ = Iva per cassa liquidata completamente
IVAXCASSA = Flag di movimento IVA per cassa
LIQDIFF = Flag di movimento a liquidazione differita
MESELIQ = Mese per liquidazione differita
@@ -45,11 +47,14 @@ PROVVIS = Tipo movimento (" " Normale, "P" Provvisorio cancellabile, "C" Provvis
REG = Codice registro IVA
REGST = Stampato su registro IVA
REVCHARGE = Reverse charge
+RITFATT = Fattura in ritardo
RITFIS = Ritenute fiscali
RITSOC = Ritenute sociali
SCARCON = Scaricata la contabilitá
SPLITPAY = Flag di scissione pagamenti [_=Auto,S=Split,N=Normale]
STAMPATO = Stampato su giornale
+TFDATA = Data ultimo invio Trasferimento Fatture
+TFINVIO = Flag Invio Trasferimento Fatture
TIPO = Tipo liente o ornitore
TIPODOC = Tipo documento
TIPOMOV = Tipo movimento
diff --git a/exe/recdesc/d26.des b/exe/recdesc/d26.des
index 995766ea8..bda3f4a97 100644
--- a/exe/recdesc/d26.des
+++ b/exe/recdesc/d26.des
@@ -7,6 +7,7 @@ CODCAUSIM = Codice causale incasso immediato
COLLCESP = Collegamnto ai cespiti
CONTIND = Causale per contabilità industriale
DATADOC = Data documento
+DATAREGPR = Data di registrazion nell'ereserciozio precedente per il caso del campo precedente
DESCR = Descrizione causale
INTRACOM = Movimento intra-comunitario
LIQDIFF = Fatture a liquidazione differita
@@ -20,7 +21,8 @@ NUMDOC = Numero documento
PROVV = Tipo movimento (" " Normale, "P" Provvisorio cancellabile, "C" Provvisorio da cepiti)
REG = Codice registro
REGSPIVA = Regimi speciali IVA
-RITFATT =
+RILFTEMRI = Causale di rilevazione fatture de emettere o ricevere
+RITFATT = Fattura in ritardo
SOLOIVA = Movimento di sola IVA
SOSPESO = Causale sospesa
TIPODOC = Tipo documento
diff --git a/exe/recdesc/d3.des b/exe/recdesc/d3.des
index 136567b95..7c483afa4 100644
--- a/exe/recdesc/d3.des
+++ b/exe/recdesc/d3.des
@@ -22,6 +22,7 @@ D1 =
D2 =
D3 =
D4 =
+DATAAGG =
FPC =
I0 =
I1 =
@@ -66,6 +67,7 @@ R30 =
R31 =
R32 =
R33 =
+R34 =
R4 =
R5 =
R6 =
@@ -76,6 +78,9 @@ S0 =
S1 =
S10 =
S11 =
+S12 =
+S13 =
+S14 =
S2 =
S3 =
S4 =
@@ -84,4 +89,5 @@ S6 =
S7 =
S8 =
S9 =
+UTENTE =
diff --git a/exe/recdesc/d33.des b/exe/recdesc/d33.des
index 1b0385af2..1a7720cf2 100644
--- a/exe/recdesc/d33.des
+++ b/exe/recdesc/d33.des
@@ -93,6 +93,7 @@ TARA = Tara
TIPOCF = Tipo liente ornitore
TIPOCFFATT = Tipo liente ornitore cui fatturare
TIPODOC = Tipo documento
+TIPODOCSDI = Tido documento secondo Agenzia delle Entrate
UMPNETTO = Unità di misura per il peso netto
UMTARA = Unità di misura per la tara
UTENTE = Utente ultimo aggiornamento
diff --git a/exe/recdesc/d4.des b/exe/recdesc/d4.des
index 6286a4608..7c483afa4 100644
--- a/exe/recdesc/d4.des
+++ b/exe/recdesc/d4.des
@@ -78,6 +78,9 @@ S0 =
S1 =
S10 =
S11 =
+S12 =
+S13 =
+S14 =
S2 =
S3 =
S4 =
diff --git a/exe/recdesc/d5.des b/exe/recdesc/d5.des
index 6286a4608..7c483afa4 100644
--- a/exe/recdesc/d5.des
+++ b/exe/recdesc/d5.des
@@ -78,6 +78,9 @@ S0 =
S1 =
S10 =
S11 =
+S12 =
+S13 =
+S14 =
S2 =
S3 =
S4 =
diff --git a/exe/recdesc/d6.des b/exe/recdesc/d6.des
index 58c212b66..f8f92e731 100644
--- a/exe/recdesc/d6.des
+++ b/exe/recdesc/d6.des
@@ -45,6 +45,7 @@ STATOPAIV =
STATORES =
TELRF =
TIPOA =
+TIPORFSO = Definisce se la persona è un appr. Fiscale, tabile Organizzazione o nessuno dei due
TIPOSTDEL =
TITCF =
TLEXRFX =
@@ -52,6 +53,7 @@ UFFCONC =
UFFIIDD =
UFFIVA =
UFFUUE =
+UTENTE =
VARDF =
VARSLORES =
diff --git a/exe/recdesc/d9.des b/exe/recdesc/d9.des
index bf00652e7..558225e7c 100644
--- a/exe/recdesc/d9.des
+++ b/exe/recdesc/d9.des
@@ -10,6 +10,7 @@ CESSIVA = Cessata attivita' o variata partita IVA
CODANAGR =
CODATTPREV =
CODDITTA =
+CODRFSO = Codice Rappresentante Fiscale/Stabile Organizzazione
CODSOGDEL = Codice del soggetto delegato
CODSTAT1 =
CODSTAT2 =
@@ -18,6 +19,7 @@ COMAA =
CONDFAM =
CONTORD =
DATAISCRAA =
+DATARFSO = Data immissione valore
DATLAV =
DECCARINT =
DEDART13 =
diff --git a/exe/recdesc/f109.dir b/exe/recdesc/f109.dir
index e6c0ca675..86ff32ae7 100644
--- a/exe/recdesc/f109.dir
+++ b/exe/recdesc/f109.dir
@@ -1,3 +1,3 @@
109
0
-$mag|0|0|692|0|Giacenze di magazzino|||
+$mag|38313|38313|692|0|Giacenze di magazzino|||
diff --git a/exe/recdesc/f109.trr b/exe/recdesc/f109.trr
index a26ba4eb5..0a172c4f4 100644
--- a/exe/recdesc/f109.trr
+++ b/exe/recdesc/f109.trr
@@ -47,6 +47,7 @@ USER5|4|15|5|campo definito dall'utente
USERVAL5|4|18|3|valore
USER6|4|15|5|campo definito dall'utente
USERVAL6|4|18|3|valore
-2
+3
ANNOES+CODART+NRIGA|
ANNOES+CODMAG+CODART+LIVELLO|X
+ANNOES+CODMAG+LIVELLO|X
diff --git a/exe/recdesc/f120.dir b/exe/recdesc/f120.dir
index ef5c7cd37..6948f0058 100644
--- a/exe/recdesc/f120.dir
+++ b/exe/recdesc/f120.dir
@@ -1,3 +1,3 @@
120
1
-m770/quadrodb|0|0|117|4|Quadro D bis 770|||
+m770/quadrodb|0|0|118|0|Quadro D bis 770|||
diff --git a/exe/recdesc/f120.trr b/exe/recdesc/f120.trr
index 116e7ab0b..fdb310434 100644
--- a/exe/recdesc/f120.trr
+++ b/exe/recdesc/f120.trr
@@ -5,7 +5,7 @@ TIPOA|1|1|0|Tipo anagrafica (Sempre 'F')
CODANAGR|3|5|0|Codice anagrafica
NPROG|2|4|0|Numero progressivo di riga
CODCAUS|9|2|0|Codice causale
-CAUSALE|1|1|0|15 - Causale
+CAUSALE|1|2|0|15 - Causale
TOTALE|4|18|0|16 - Ammontare lordo corrisposto
SOMME|4|18|0|17 - Somme non soggette a ritenuta
IMPONIBILE|4|18|0|19 - Imponibile
diff --git a/exe/recdesc/f3.dir b/exe/recdesc/f3.dir
index bfa97a835..21d77491f 100644
--- a/exe/recdesc/f3.dir
+++ b/exe/recdesc/f3.dir
@@ -1,3 +1,3 @@
3
1
-%tabgen|0|0|1181|0|Tabelle di studio|50||
+%tabgen|0|0|1285|0|Tabelle di studio|50||
diff --git a/exe/recdesc/f3.trr b/exe/recdesc/f3.trr
index 631975380..886bb94db 100644
--- a/exe/recdesc/f3.trr
+++ b/exe/recdesc/f3.trr
@@ -1,5 +1,5 @@
3
-86
+91
COD|1|3|0|
CODTAB|1|25|0|
S0|1|70|0|
@@ -14,6 +14,9 @@ S8|1|5|0|
S9|1|5|0|
S10|1|5|0|
S11|1|5|0|
+S12|1|5|0|
+S13|1|70|0|
+S14|1|5|0|
I0|3|7|0|
I1|3|7|0|
I2|3|7|0|
@@ -59,11 +62,11 @@ R26|4|18|5|
R27|4|18|5|
R28|4|18|5|
R29|4|18|5|
-R29|4|18|5|
R30|4|18|5|
R31|4|18|5|
R32|4|18|5|
R33|4|18|5|
+R34|4|18|5|
D0|5|8|0|
D1|5|8|0|
D2|5|8|0|
@@ -85,6 +88,8 @@ B12|8|1|0|
B13|8|1|0|
B14|8|1|0|
B15|8|1|0|
+DATAAGG|5|8|0|
+UTENTE|1|16|0|
FPC|8|1|0|
2
COD+CODTAB|
diff --git a/exe/recdesc/f39.dir b/exe/recdesc/f39.dir
index b1f9921b5..3ec246a9f 100644
--- a/exe/recdesc/f39.dir
+++ b/exe/recdesc/f39.dir
@@ -1,3 +1,3 @@
39
1
-m770/schper|0|0|193|0|Schede percipienti|#9||
+m770/schper|0|0|194|0|Schede percipienti|#9||
diff --git a/exe/recdesc/f39.trr b/exe/recdesc/f39.trr
index 85a3f8215..c9a872e3e 100644
--- a/exe/recdesc/f39.trr
+++ b/exe/recdesc/f39.trr
@@ -16,7 +16,7 @@ TOTRIT|4|18|2|Totale ritenute (collegamento contabilit
RITSOC|4|18|2|Ritenute sociali (collegamento contabilità)
MESEC|2|2|0|Mese competenza
ANNOC|2|4|0|Anno competenza
-CAUSQUA|7|1|0|Causale quadro
+CAUSQUA|1|2|0|Causale quadro
FLAGTS|7|1|0|Flag T.S.
RITOPE|4|18|2|Ritenute operate
RITVER|4|18|2|Ritenute versate
diff --git a/exe/recdesc/f4.dir b/exe/recdesc/f4.dir
index 26ed68cf0..2e04936ab 100644
--- a/exe/recdesc/f4.dir
+++ b/exe/recdesc/f4.dir
@@ -1,3 +1,3 @@
4
1
-%tabcom|0|0|1210|0|Tabelle comuni|1500||
+%tabcom|0|0|1285|0|Tabelle comuni|1500||
diff --git a/exe/recdesc/f4.trr b/exe/recdesc/f4.trr
index bebb2871c..d5d69ef69 100644
--- a/exe/recdesc/f4.trr
+++ b/exe/recdesc/f4.trr
@@ -1,5 +1,5 @@
4
-89
+91
COD|1|3|0|
CODTAB|1|25|0|
S0|1|70|0|
@@ -15,6 +15,8 @@ S9|1|5|0|
S10|1|5|0|
S11|1|5|0|
S12|1|5|0|
+S13|1|70|0|
+S14|1|5|0|
I0|3|7|0|
I1|3|7|0|
I2|3|7|0|
diff --git a/exe/recdesc/f5.dir b/exe/recdesc/f5.dir
index a60807a80..2d2b15a27 100644
--- a/exe/recdesc/f5.dir
+++ b/exe/recdesc/f5.dir
@@ -1,3 +1,3 @@
5
0
-$tab|0|0|1197|0|Tabelle ditta|400||
+$tab|3666|3666|1285|0|Tabelle ditta|400||
diff --git a/exe/recdesc/f5.trr b/exe/recdesc/f5.trr
index 1b8c89633..bcef5f3d4 100644
--- a/exe/recdesc/f5.trr
+++ b/exe/recdesc/f5.trr
@@ -1,5 +1,5 @@
5
-88
+91
COD|1|3|0|
CODTAB|1|25|0|
S0|1|70|0|
@@ -14,6 +14,9 @@ S8|1|5|0|
S9|1|5|0|
S10|1|5|0|
S11|1|5|0|
+S12|1|5|0|
+S13|1|70|0|
+S14|1|5|0|
I0|3|7|0|
I1|3|7|0|
I2|3|7|0|
diff --git a/exe/recdesc/f61.dir b/exe/recdesc/f61.dir
index 5026ee525..23a90c790 100644
--- a/exe/recdesc/f61.dir
+++ b/exe/recdesc/f61.dir
@@ -1,3 +1,3 @@
61
1
-m770/quadroc|||192|0|Quadro C 770|||
+m770/quadroc|0|0|193|0|Quadro C 770|||
diff --git a/exe/recdesc/f61.trr b/exe/recdesc/f61.trr
index 1cbdfafb6..b995f483c 100644
--- a/exe/recdesc/f61.trr
+++ b/exe/recdesc/f61.trr
@@ -7,7 +7,7 @@ NPROG|2|4|0|Numero progressivo
GENERATA|8|1|0|Riga generata dalle schede
CODCAUS|9|2|0|Codice causale
PERC|4|6|2|Aliquota applicata
-CAUSALE|1|1|0|11 - Causale quadro C
+CAUSALE|1|2|0|11 - Causale quadro C
TASSAZIONE|6|1|0|12 - Tassazione operata
AMMLORDO|4|18|0|13 - Ammontare lordo corrisposto
CONTROBB|4|18|0|14 - Contributi obbligatori
diff --git a/exe/recdesc/f62.dir b/exe/recdesc/f62.dir
index 258c9f1c6..79917a168 100644
--- a/exe/recdesc/f62.dir
+++ b/exe/recdesc/f62.dir
@@ -1,3 +1,3 @@
62
1
-m770/quadrod|0|0|116|4|Quadro D 770|||
+m770/quadrod|0|0|117|0|Quadro D 770|||
diff --git a/exe/recdesc/f62.trr b/exe/recdesc/f62.trr
index c78d1f625..5d751acd2 100644
--- a/exe/recdesc/f62.trr
+++ b/exe/recdesc/f62.trr
@@ -5,7 +5,7 @@ TIPOA|1|1|0|Tipo anagrafica (Sempre 'F')
CODANAGR|3|5|0|Codice anagrafica
NPROG|2|4|0|Numero progressivo di riga
CODCAUS|9|2|0|Codice causale
-CAUSALE|1|1|0|15 - Causale
+CAUSALE|1|2|0|15 - Causale
TOTALE|4|18|2|16 - Ammontare lordo corrisposto
SOMME|4|18|2|17 - Somme non soggette a ritenuta
IMPONIBILE|4|18|2|19 - Imponibile
diff --git a/exe/recdesc/f63.dir b/exe/recdesc/f63.dir
index f27113c8e..eed0cdf94 100644
--- a/exe/recdesc/f63.dir
+++ b/exe/recdesc/f63.dir
@@ -1,3 +1,3 @@
63
1
-m770/quadrod1|0|0|116|4|Quadro D1 770|||
+m770/quadrod1|0|0|117|0|Quadro D1 770|||
diff --git a/exe/recdesc/f63.trr b/exe/recdesc/f63.trr
index 2be9bd91d..6551152e1 100644
--- a/exe/recdesc/f63.trr
+++ b/exe/recdesc/f63.trr
@@ -5,7 +5,7 @@ TIPOA|1|1|0|Tipo anagrafica (sempre 'F')
CODANAGR|3|5|0|Codice anagrafica
NPROG|2|4|0|Numero progrssivo riga
CODCAUS|9|2|0|Codice causale
-CAUSALE|7|1|0|11 - Causale
+CAUSALE|1|2|0|11 - Causale
TOTALE|4|18|2|12 - Ammontare lordo corrisposto
QUOTAPRO|4|18|2|14 - Quota provvigioni
SPESEANT|4|18|2|13 - Spese anticipate
diff --git a/exe/recdesc/f64.dir b/exe/recdesc/f64.dir
index ecd2e9c18..c7d919879 100644
--- a/exe/recdesc/f64.dir
+++ b/exe/recdesc/f64.dir
@@ -1,3 +1,3 @@
64
1
-m770/quadroe|||98|0|Quadro E 770|||
+m770/quadroe|0|0|99|0|Quadro E 770|||
diff --git a/exe/recdesc/f64.trr b/exe/recdesc/f64.trr
index d2dc35416..45dfdc2ed 100644
--- a/exe/recdesc/f64.trr
+++ b/exe/recdesc/f64.trr
@@ -5,7 +5,7 @@ TIPOA|1|1|0|Natura giuridica del percipiente
CODANAGR|3|5|0|Codice anagrafico
NPROG|2|4|0|Numero progressivo di riga
CODCAUS|9|2|0|Codice causale
-CAUSALE|7|1|0|11 - Causale quadro
+CAUSALE|1|2|0|11 - Causale quadro
IMPONIBILE|4|18|2|12 - Imponibile corrisposto
PERC|4|6|2|13 - Aliquota
IMPORTO|4|18|2|14 - Ritenute operate
diff --git a/exe/recdesc/f65.dir b/exe/recdesc/f65.dir
index bddcfc0cf..3954da404 100644
--- a/exe/recdesc/f65.dir
+++ b/exe/recdesc/f65.dir
@@ -1,3 +1,3 @@
65
1
-m770/quadroe1|||98|0|Quadro E1 770|||
+m770/quadroe1|0|0|99|0|Quadro E1 770|||
diff --git a/exe/recdesc/f65.trr b/exe/recdesc/f65.trr
index 72d36a0e7..df8bddd27 100644
--- a/exe/recdesc/f65.trr
+++ b/exe/recdesc/f65.trr
@@ -5,7 +5,7 @@ TIPOA|1|1|0|Natura giuridica
CODANAGR|3|5|0|Codice anagrafica
NPROG|2|4|0|Numero progrssivo i riga
CODCAUS|9|2|0|Codice causale
-CAUSALE|7|1|0|11 - Causale quadro
+CAUSALE|1|2|0|11 - Causale quadro
SOMME|4|18|2|12 - Somme corrisposte
AMMONTARE|4|18|2|13 - Ammontare complessivo dei premi riscossi
PERC|4|6|2|14 - Aliquota
diff --git a/exe/servers/servers.ini b/exe/servers/servers.ini
index bac3714bb..3ae5708a8 100644
--- a/exe/servers/servers.ini
+++ b/exe/servers/servers.ini
@@ -24,6 +24,6 @@ LogVerbose=
PingFreq=
[Spotlite]
-Data(0) = f:\clienti\Bellegotti\spotlite
+Data(0) = H:\e\dati\din\spotlite
Study(0) =
diff --git a/exe/xi.dll b/exe/xi.dll
index e4bc12d0e..cb07163a9 100644
Binary files a/exe/xi.dll and b/exe/xi.dll differ
diff --git a/exe/xvaga.dll b/exe/xvaga.dll
index a1b5b4687..686a7e13a 100644
Binary files a/exe/xvaga.dll and b/exe/xvaga.dll differ
diff --git a/lib/AgaLib.lib b/lib/AgaLib.lib
index c4ac0ecf0..3ec69655c 100644
Binary files a/lib/AgaLib.lib and b/lib/AgaLib.lib differ
diff --git a/lib/pdflibwrap.lib b/lib/pdflibwrap.lib
index 3851f1b40..7280b80b5 100644
Binary files a/lib/pdflibwrap.lib and b/lib/pdflibwrap.lib differ
diff --git a/lib/vedoc.lib b/lib/vedoc.lib
index f174616c6..62e294b77 100644
Binary files a/lib/vedoc.lib and b/lib/vedoc.lib differ
diff --git a/lib/vedocext.lib b/lib/vedocext.lib
index 5d8bfa873..e207c9c27 100644
Binary files a/lib/vedocext.lib and b/lib/vedocext.lib differ
diff --git a/lib/xi.exp b/lib/xi.exp
index 5491c02da..100b82dbe 100644
Binary files a/lib/xi.exp and b/lib/xi.exp differ
diff --git a/lib/xi.lib b/lib/xi.lib
index da06f540b..78e78f6da 100644
Binary files a/lib/xi.lib and b/lib/xi.lib differ
diff --git a/lib/xvaga.exp b/lib/xvaga.exp
index d07b9e6d2..663ae8f8b 100644
Binary files a/lib/xvaga.exp and b/lib/xvaga.exp differ
diff --git a/lib/xvaga.lib b/lib/xvaga.lib
index 4647cfa7a..d15b1d8b3 100644
Binary files a/lib/xvaga.lib and b/lib/xvaga.lib differ
diff --git a/src/ca/ca0400.cpp b/src/ca/ca0400.cpp
index 22203ace2..b99b312c7 100755
--- a/src/ca/ca0400.cpp
+++ b/src/ca/ca0400.cpp
@@ -330,6 +330,7 @@ bool TAnalisi_app::user_create()
break;
_maxlev = i;
}
+ set_search_field(F_DES1 + _maxlev - 1);
}
return ok;
}
diff --git a/src/ca/ca0500.cpp b/src/ca/ca0500.cpp
index af5fdde17..8ffa80a7e 100755
--- a/src/ca/ca0500.cpp
+++ b/src/ca/ca0500.cpp
@@ -116,6 +116,7 @@ bool TCdC_app::user_create()
//eventuali filtri per utente
_has_filter = cache().get("%AUC", user(), "S1").full();
+// set_search_field(F_CDCPDA1 + _maxlev - 1);
return TAnal_app::user_create();
}
diff --git a/src/ca/ca0700.cpp b/src/ca/ca0700.cpp
index 12c1bf7ac..34d00ae39 100755
--- a/src/ca/ca0700.cpp
+++ b/src/ca/ca0700.cpp
@@ -39,7 +39,7 @@ TFsc_anal_msk::TFsc_anal_msk()
read("ca0700a");
const bool use_pdcc = ca_config().get_bool("UsePdcc");
- const int nfields = ca_create_fields(*this, 0, use_pdcc ? LF_PCON : LF_PCONANA, 2 + compute_offset(), 8, F_FSCPDA1, F_FSCDES1, 0x0, FASI_CODCONTO);
+ const int nfields = ca_create_fields(*this, 0, use_pdcc ? LF_PCON : LF_PCONANA, 2 + compute_offset(), 8, 1, F_FSCDES1, 0x0, FASI_CODCONTO);
int from = 1;
for (int i = 0; i < nfields; i++)
@@ -124,7 +124,8 @@ bool TFsc_app::user_create()
if (mci.levels() <= 0)
return error_box(TR("Le fasi non sono state configurate"));
- //eventuali filtri per utente
+
+ //eventuali filtri per utente
_has_filter = cache().get("%AUC", user(), "S2").full();
return TAnal_app::user_create();
diff --git a/src/ca/calib02.cpp b/src/ca/calib02.cpp
index 4e7c1fe87..c669b26c5 100755
--- a/src/ca/calib02.cpp
+++ b/src/ca/calib02.cpp
@@ -162,7 +162,8 @@ const TVariant& TPconana_recordset::get(const char* field) const
}
((TAnal_bill&)_bill).set_conto(get(PCONANA_CODCONTO).as_string());
- const TSaldanal& s = ca_saldo(_bill, _dal, _al, tipimov);
+
+ const TSaldanal& s = ca_saldo(_bill, _dal, _al, tipimov);
TVariant& var = get_tmp_var();
if (sub_field == "INI_DARE")
@@ -1126,6 +1127,9 @@ TSaldi_cache::TSaldi_cache() : TCache(3881) // Numero primo
const TSaldanal& ca_saldo(const TAnal_bill& bill, const TDate& dal, const TDate& al, word tipi)
{
static TSaldi_cache* cache = NULL;
+
+ if (bill.commessa() == "CV18MRE50579") // e CV18MRE50579E2)
+ int i = 1;
if (tipi == 0 && cache != NULL)
{
delete cache;
diff --git a/src/cb/source/f4temp.c b/src/cb/source/f4temp.c
index 877274791..4d26e7462 100755
--- a/src/cb/source/f4temp.c
+++ b/src/cb/source/f4temp.c
@@ -249,7 +249,7 @@ int file4tempLow( FILE4 *file, CODE4 *c4, const int autoRemove )
time( &t ) ;
t %= 10000L ;
- c4ltoa45( t, fileName + 4, -4 ) ;
+ c4ltoa45( (long) t, fileName + 4, -4 ) ;
u4nameMake( name, sizeof( name ), drive, env + strlen( drive ), fileName ) ;
rc = file4create( file, c4, name, 1 ) ;
diff --git a/src/cg/cg0800.cpp b/src/cg/cg0800.cpp
index 8b2a68824..7ab176b1b 100644
--- a/src/cg/cg0800.cpp
+++ b/src/cg/cg0800.cpp
@@ -71,27 +71,39 @@ void TRiepilogoIVA_app::main_loop()
rep.load(repname);
if (recset != NULL)
{
- const int anno = m.get_int(F_ANNO);
+ int anno = m.get_int(F_ANNO);
int damese = m.get_int(F_DAMESE);
int amese = m.get_int(F_AMESE);
+ recset->freeze();
+ recset->set_da_mese_var(damese);
+ recset->set_a_mese_var(amese);
if (damese == 13)
{
damese = 1;
amese = 12;
- recset->set_annuale(true);
+ recset->set_annual(true);
}
+ recset->set_anno(anno);
+ recset->set_da_mese(damese);
+ recset->set_a_mese(amese);
+ if (damese == 13)
+ {
+ damese = 1;
+ amese = 12;
+ recset->set_annual(true);
+ }
+ recset->set_da_mese(damese);
+ recset->set_a_mese(amese);
const TDate da(1, damese, anno);
TDate a(1, amese, anno);
+ if (m.get_long(F_DAMESE) == 13)
+ a.addyear();
a.set_end_month();
- recset->freeze();
recset->set_from(da);
recset->set_to(a);
- recset->set_var("#ANNO", m.get_long(F_ANNO), true);
- recset->set_var("#DAMESE", m.get_long(F_DAMESE), true);
- recset->set_var("#AMESE", m.get_long(F_AMESE), true);
recset->unfreeze();
rep.set_recordset(recset);
diff --git a/src/cg/cg0800a.rep b/src/cg/cg0800a.rep
index c4b1dcb78..6f6fafbaa 100644
--- a/src/cg/cg0800a.rep
+++ b/src/cg/cg0800a.rep
@@ -18,74 +18,70 @@
#PAGE
-
-
+
+
-
-
+
+
#ANNO
-
-
-
-
-
+
+
#DAMESE
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
#AMESE
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/src/cg/cg0800a.uml b/src/cg/cg0800a.uml
index cf3252366..93360b762 100644
--- a/src/cg/cg0800a.uml
+++ b/src/cg/cg0800a.uml
@@ -63,7 +63,7 @@ END
LIST F_AMESE 20
BEGIN
- PROMPT 2 7 " A mese "
+ PROMPT 35 5 " A mese "
ITEM "13|13a liquid."
FLAGS "MP"
WARINIG "Il mese di inizio non può essere successico al mese di fine"
diff --git a/src/cg/cg4300.cpp b/src/cg/cg4300.cpp
index a07935810..842f2b6bf 100755
--- a/src/cg/cg4300.cpp
+++ b/src/cg/cg4300.cpp
@@ -586,10 +586,15 @@ bool TLiquidazione_app::ch_year_handler(TMask_field& f, KEY key)
(wht)f.mask().get_int(CG43_RDB_VERS) : all);
TMask& msk = f.mask();
const int vers = msk.get_int(CG43_RDB_VERS);
- const int m = (vers == 3) ? msk.get_int(CG43_LST_TRIM) : msk.get_int(CG43_LST_MESE);
+ int m = (vers == 3) ? msk.get_int(CG43_LST_TRIM) : msk.get_int(CG43_LST_MESE);
+
+ app()._is_liq_acconto = (m == 20);
+ if (app()._is_liq_acconto)
+ m = 12;
+
const TRectype & lim = app().get_lim(m);
const bool def = lim.get_bool("B1");
- const bool calc = !def && (lim.empty() || lim.get_bool("B0"));
+ const bool calc = app()._is_liq_acconto || (!def && (lim.empty() || lim.get_bool("B0")));
msk.set(CG43_CHK_CALCULATE, app()._lim_cleared && calc, 0x3);
msk.set(CG43_CHK_FINAL, app()._lim_cleared && def, 0x3);
@@ -690,6 +695,11 @@ bool TLiquidazione_app::what_freq_handler(TMask_field& f, KEY key)
if (key == K_SPACE)
{
int month = f.mask().get_int(CG43_LST_MESE);
+
+ app()._is_liq_acconto = (month == 20);
+ if (app()._is_liq_acconto)
+ month = 12;
+
if (f.get()[0] == '3') // trimestre intelligente
{
if (month > 3)
@@ -778,7 +788,11 @@ bool TLiquidazione_app::chk_calculate_handler(TMask_field& f, KEY key)
TMask& m = f.mask();
// Abilita solo se il mese di ricalcolo e' != 13 (annuale) e non e' checkkato il campo
const int vers = m.get_int(CG43_RDB_VERS);
- const int mese = vers == 3 ? m.get_int(CG43_LST_TRIM) : m.get_int(CG43_LST_MESE);
+ int mese = vers == 3 ? m.get_int(CG43_LST_TRIM) : m.get_int(CG43_LST_MESE);
+
+ app()._is_liq_acconto = (mese == 20);
+ if (app()._is_liq_acconto)
+ mese = 12;
const bool abilita = m.get_bool(CG43_CHK_CALCULATE) && mese != 13;
m.enable(CG43_LST_CALC, abilita);
}
@@ -893,10 +907,19 @@ bool TLiquidazione_app::set_liquidazione()
// handlers have set everything
_month = _what == trimestre ? m.get_int(CG43_LST_TRIM) : m.get_int(CG43_LST_MESE);
+ app()._is_liq_acconto = (_month == 20);
+ if (app()._is_liq_acconto)
+ {
+ _month = 12;
+ _recalc = one;
+ }
+ else
+ _recalc = m.get_bool(CG43_CHK_CALCULATE) ? one : never;
+
+
_year = m.get(CG43_FLD_ANNO);
_date = m.get(CG43_FLD_DATA);
_isprint = m.get_bool(CG43_CHK_STAMPA);
- _recalc = m.get_bool(CG43_CHK_CALCULATE) ? one : never;
_printonly = !m.get_bool(CG43_CHK_CALCULATE);
_definitiva = m.get_bool(CG43_CHK_FINAL);
diff --git a/src/cg/cg4300.h b/src/cg/cg4300.h
index cddfe7c78..b9f35ef5c 100755
--- a/src/cg/cg4300.h
+++ b/src/cg/cg4300.h
@@ -304,6 +304,7 @@ class TLiquidazione_app : public TPrint_application
int _monthinatt; // mese inizio attivita' (serve per differita)
bool _lim_cleared;
bool _definitiva;
+ bool _is_liq_acconto;
bool _end_cassa;
real _diff_ven_ap, _diff_ven_ap_iva, _diff_acq_ap, _diff_acq_ap_iva;
diff --git a/src/cg/cg4300a.uml b/src/cg/cg4300a.uml
index 4b896ee9e..36aba7a53 100755
--- a/src/cg/cg4300a.uml
+++ b/src/cg/cg4300a.uml
@@ -27,15 +27,16 @@ BEGIN
CHECKTYPE REQUIRED
END
-LIST CG43_LST_MESE 15
+LIST CG43_LST_MESE 20
BEGIN
PROMPT 28 3 "Periodo "
HELP "Mese per cui effettuare il calcolo liquidazione"
ITEM "13|13a liquid."
+ ITEM "20|Acconto Dicembre"
FLAGS "MP"
END
-LIST CG43_LST_TRIM 15
+LIST CG43_LST_TRIM 20
BEGIN
PROMPT 28 3 "Periodo "
HELP "Trimestre di cui effettuare il calcolo liquidazione"
@@ -44,6 +45,7 @@ BEGIN
ITEM "9|3 Trimestre "
ITEM "12|4 Trimestre"
ITEM "13|13a liquid."
+ ITEM "20|Acconto Dicembre"
END
BOOLEAN CG43_CHK_CALCULATE
diff --git a/src/cg/cg4304.cpp b/src/cg/cg4304.cpp
index d92871195..b11bf6048 100755
--- a/src/cg/cg4304.cpp
+++ b/src/cg/cg4304.cpp
@@ -1159,9 +1159,10 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
// calcola nuovo prorata per ogni attivita' (miste: 1+2)
real pr;
const real rsa = ris - (e3-e5) - (e4-e6) - vrc;
- if (!rsa.is_zero())
+ const real rsn = rsa - e1;
+
+ if (!rsa.is_zero())
{
- const real rsn = rsa - e1;
pr = CENTO - (rsn * CENTO / rsa); // Percentuale di indetraibilita: reciproco della percentuale di detraibilita'
pr.round(0);
}
@@ -1210,7 +1211,9 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
dd->_r8 = e5;
dd->_r9 = e6;
dd->_r10 = vrc;
- t->_arr.add(dd);
+ dd->_ra0 = rsa;
+ dd->_ra1 = rsn;
+ t->_arr.add(dd);
}
}
}
@@ -2825,10 +2828,8 @@ bool TLiquidazione_app::set_annual(_DescrItem& d)
set_row(row++, FR("%% PRO-RATA (%s%%) ed IVA non detraibile (%s%%)@69g%r"), (const char*)s1, (const char*)s2, &(d._r6));
else
set_row(row++, FR("%% PRO-RATA (%s%%)"), (const char*)s1);
- const real denom = vol_aff - rev_charge;
- const real num = denom - d._r1 - d._r4 - d._r5 + d._r8 - d._r7 + d._r9;
- set_row(row++, FR("Numeratore pro-rata @69g%r"), &num);
- set_row(row++, FR("Denominatore @69g%r"), &denom);
+ set_row(row++, FR("Numeratore pro-rata @69g%r"), &(d._ra1));
+ set_row(row++, FR("Denominatore @69g%r"), &(d._ra0));
// set_row(row++,FR("C1 - Operazioni esenti escluse da nr. 1 a 9 e 11 art. 10 @69g%r"), &(d._r1));
// set_row(row++,FR("C2 - Operazioni esenti di cui nr. 11 art. 10 @69g%r"), &(d._r4));
// set_row(row++,FR("C3 - Operazioni esenti da nr. 1 a 9 art. 10 @69g%r"), &(d._r5));
diff --git a/src/cg/cg4400a.uml b/src/cg/cg4400a.uml
index 8961e2c40..6aff78fc7 100755
--- a/src/cg/cg4400a.uml
+++ b/src/cg/cg4400a.uml
@@ -158,18 +158,20 @@ BEGIN
GROUP 3
END
-LISTBOX FINO_A_MESE 10
+LISTBOX FINO_A_MESE 20
BEGIN
PROMPT 3 9 "Fino al mese "
HELP "Mese fino al quale eseguire la stampa"
+ ITEM "20|Acconto di dicembre"
FLAGS "M"
GROUP 1
END
-LISTBOX MESE 10
+LISTBOX MESE 20
BEGIN
PROMPT 3 9 "Mese "
HELP "Mese di cui eseguire la stampa"
+ ITEM "20|Acconto di dicembre"
FLAGS "M"
GROUP 2
END
diff --git a/src/cg/cg4b00.cpp b/src/cg/cg4b00.cpp
index f14980be7..f81cd3c9d 100644
--- a/src/cg/cg4b00.cpp
+++ b/src/cg/cg4b00.cpp
@@ -25,6 +25,29 @@ bool TRiepilogoIVA_mask::on_field_event(TOperable_field& o, TField_event e, long
switch (o.dlg())
{
+ case F_DAMESE:
+ if (e == fe_modify || e == fe_close)
+ {
+ if (atoi(o.get()) > m.get_int(F_AMESE))
+ m.set(F_AMESE, o.get());
+ if (e == fe_modify && (atoi(o.get()) == 13))
+ {
+ TDate d(1, 1, m.get_int(F_ANNO));
+
+ m.set(F_DADATA, d);
+ d.set_month(12);
+ d.set_end_month();
+ m.set(F_ADATA, d);
+ }
+ }
+ break;
+ case F_AMESE:
+ if (e == fe_modify || e == fe_close)
+ {
+ if (atoi(o.get()) < m.get_int(F_DAMESE))
+ o.set(m.get(F_DAMESE));
+ }
+ break;
case F_DADATA:
if (e == fe_modify || e == fe_close)
{
@@ -38,34 +61,6 @@ bool TRiepilogoIVA_mask::on_field_event(TOperable_field& o, TField_event e, long
if (TDate(o.get()) < m.get_date(F_DADATA))
o.set(m.get(F_DADATA));
}
- case F_DASOTTOC:
- if (e == fe_modify || e == fe_close)
- {
- TString da; da.format("%03d%03d%06ld", m.get_int(F_DAGRUPPO), m.get_int(F_DACONTO), m.get_long(F_DASOTTOC));
- TString a; a.format("%03d%03d%06ld", m.get_int(F_AGRUPPO), m.get_int(F_ACONTO), m.get_long(F_ASOTTOC));
-
- if (da > a)
- {
- m.set(F_AGRUPPO, da.left(3));
- m.set(F_ACONTO, da.mid(3, 3));
- m.set(F_ASOTTOC, da.right(6), 0x3);
- }
- }
- break;
- case F_ASOTTOC:
- if (e == fe_modify || e == fe_close)
- {
- TString da; da.format("%03d%03d%06ld", m.get_int(F_DAGRUPPO), m.get_int(F_DACONTO), m.get_long(F_DASOTTOC));
- TString a; a.format("%03d%03d%06ld", m.get_int(F_AGRUPPO), m.get_int(F_ACONTO), m.get_long(F_ASOTTOC));
-
- if (da > a)
- {
- m.set(F_AGRUPPO, da.left(3));
- m.set(F_ACONTO, da.mid(3, 3));
- m.set(F_ASOTTOC, da.right(6), 0x3);
- }
- }
-
default:
break;
}
@@ -78,20 +73,10 @@ bool TRiepilogoIVA_mask::on_field_event(TOperable_field& o, TField_event e, long
class TRiepilogoIVAcompetenza_recordset : public TRiepilogoIVA_recordset
{
- bool _competenzaperiodo;
- bool _competenzadiversa;
- bool _registrazioneritardo;
public:
- virtual bool set_competenzaperiodoIVA(bool on) { _competenzaperiodo = on; return on; }
- virtual bool set_competenzadiversaIVA(bool on) { _competenzadiversa = on; return on; }
- virtual bool set_registrazioneIVAritardo(bool on) { return _registrazioneritardo = on; return on; }
- virtual bool competenzaperiodoIVA() const { return _competenzaperiodo; }
- virtual bool competenzadiversaIVA() const { return _competenzadiversa; }
- virtual bool registrazioneIVAritardo() const { return _registrazioneritardo; }
virtual bool is_competenza() const { return true; }
-
TRiepilogoIVAcompetenza_recordset() {}
virtual ~TRiepilogoIVAcompetenza_recordset() { }
};
@@ -121,34 +106,27 @@ void TRiepilogoIVA_app::main_loop()
rep.load(repname);
if (recset != NULL)
{
- recset->freeze();
- recset->set_competenzaperiodoIVA(m.get_bool(F_COMPUG));
- recset->set_competenzadiversaIVA(m.get_bool(F_COMPDIV));
- recset->set_registrazioneIVAritardo(m.get_bool(F_REGRIT));
- recset->set_from(m.get_date(F_DADATA));
- recset->set_to(m.get_date(F_ADATA));
- recset->set_annuale((m.get_date(F_DADATA).month() == 1) && (m.get_date(F_ADATA).month() == 12)
- );
+ int anno = m.get_int(F_ANNO);
+ int damese = m.get_int(F_DAMESE);
+ int amese = m.get_int(F_AMESE);
- recset->set_from_conto(m.get_long(F_DAGRUPPO), m.get_long(F_DACONTO), m.get_long(F_DASOTTOC));
- if (m.get_long(F_DAGRUPPO) != 0)
- recset->set_to_conto(m.get_long(F_AGRUPPO), m.get_long(F_ACONTO), m.get_long(F_ASOTTOC));
- recset->set_var("#COMPUG", m.get_bool(F_COMPUG), true);
- recset->set_var("#COMPDIV", m.get_bool(F_COMPDIV), true);
- recset->set_var("#REGRIT", m.get_bool(F_REGRIT), true);
- recset->set_var("#TODATE", m.get_date(F_ADATA), true);
- recset->set_var("#FROMDATE", m.get_date(F_DADATA), true);
- recset->set_var("#TODATE", m.get_date(F_ADATA), true);
- recset->set_var("#DAGRUPPO", m.get_long(F_DAGRUPPO), true);
- recset->set_var("#DACONTO", m.get_long(F_DACONTO), true);
- recset->set_var("#DASOTTOCONTO", m.get_long(F_DASOTTOC), true);
- recset->set_var("#AGRUPPO", m.get_long(F_AGRUPPO), true);
- recset->set_var("#ACONTO", m.get_long(F_ACONTO), true);
- recset->set_var("#ASOTTOCONTO", m.get_long(F_ASOTTOC), true);
- recset->unfreeze();
- rep.set_recordset(recset);
-
- rep.print_or_preview();
+ recset->freeze();
+ recset->set_da_mese_var(damese);
+ recset->set_a_mese_var(amese);
+ if (damese == 13)
+ {
+ damese = 1;
+ amese = 12;
+ recset->set_annual(true);
+ }
+ recset->set_anno(anno);
+ recset->set_da_mese(damese);
+ recset->set_a_mese(amese);
+ recset->set_from(m.get_date(F_DADATA));
+ recset->set_to(m.get_date(F_ADATA));
+ recset->unfreeze();
+ rep.set_recordset(recset);
+ rep.print_or_preview();
}
}
}
diff --git a/src/cg/cg4b00a.h b/src/cg/cg4b00a.h
index c807659a0..5d7d1555a 100644
--- a/src/cg/cg4b00a.h
+++ b/src/cg/cg4b00a.h
@@ -1,18 +1,10 @@
#define F_CODDITTA 101
#define F_RAGSOC 102
-#define F_DADATA 103
-#define F_ADATA 104
-#define F_DAGRUPPO 105
-#define F_DACONTO 106
-#define F_DASOTTOC 107
-#define F_AGRUPPO 108
-#define F_ACONTO 109
-#define F_ASOTTOC 110
-#define F_DADESCR 111
-#define F_ADESCR 112
-#define F_COMPUG 113
-#define F_COMPDIV 114
-#define F_REGRIT 115
+#define F_ANNO 103
+#define F_DAMESE 104
+#define F_AMESE 105
+#define F_DADATA 106
+#define F_ADATA 107
#define F_REPORT 200
#define F_PROFILO 201
diff --git a/src/cg/cg4b00a.rep b/src/cg/cg4b00a.rep
index 3eb4ec099..0ec843aed 100644
--- a/src/cg/cg4b00a.rep
+++ b/src/cg/cg4b00a.rep
@@ -18,108 +18,84 @@
#PAGE
-
-
+
+
-
-
+
+
+ #ANNO
+
+
+
+ #DAMESE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #AMESE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#FROMDATE
-
-
+
+
-
-
+
+
#TODATE
-
-
-
-
-
- #THIS
-#COMPUG @
-0
-=
-IF
-HIDE
-ELSE
-SHOW
-THEN
-
-
-
- #THIS
-#COMPDIV @
-0
-=
-IF
-HIDE
-ELSE
-SHOW
-THEN
-
-
-
- #THIS
-#REGRIT @
-0
-=
-IF
-HIDE
-ELSE
-SHOW
-THEN
-
-
-
-
-
-
- #DAGRUPPO
-
-
-
- #DACONTO
-
-
-
- #DASOTTOCONTO
-
-
-
-
-
-
- #AGRUPPO
-
-
-
- #ACONTO
-
-
-
- #ASOTTOCONTO
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/src/cg/cg4b00a.uml b/src/cg/cg4b00a.uml
index 7e29a7e83..1f2f17c59 100644
--- a/src/cg/cg4b00a.uml
+++ b/src/cg/cg4b00a.uml
@@ -46,151 +46,43 @@ BEGIN
FLAGS "D"
END
+NUMBER F_ANNO 4
+BEGIN
+ PROMPT 2 3 "Anno "
+ FLAGS "AP"
+ CHECKTYPE REQUIRED
+END
+
+LIST F_DAMESE 20
+BEGIN
+ PROMPT 2 5 "Da mese "
+ ITEM "13|13a liquid."
+ FLAGS "MP"
+ MESSAGE COPY,F_AMESE
+END
+
+LIST F_AMESE 20
+BEGIN
+ PROMPT 35 5 " A mese "
+ ITEM "13|13a liquid."
+ FLAGS "MP"
+ WARINIG "Il mese di inizio non può essere successico al mese di fine"
+ VALIDATE F_DAMESE<=F_AMESE
+END
+
+
DATE F_DADATA
BEGIN
- PROMPT 2 3 "Da: data "
+ PROMPT 2 7 "Da: data registrazione "
END
DATE F_ADATA
BEGIN
- PROMPT 2 5 " A: data "
+ PROMPT 2 9 " A: data registrazione "
WARINIG "La data di inizio non può essere successico alla data di fine"
VALIDATE DATE_CMP_FUNC >= F_>ADATA
END
-NUMBER F_DAGRUPPO 3
-BEGIN
- PROMPT 2 7 "Da: Gruppo "
- USE LF_PCON KEY 1 SELECT (CONTO="")
- INPUT GRUPPO F_DAGRUPPO
- DISPLAY "Gruppo" GRUPPO
- DISPLAY "Descrizione@50" DESCR
- OUTPUT F_DAGRUPPO GRUPPO
- CHECKTYPE NORMAL
-END
-
-NUMBER F_DACONTO 3
-BEGIN
- PROMPT 23 7 "Conto "
- USE LF_PCON KEY 1 SELECT (SOTTOCONTO="")
- INPUT GRUPPO F_DAGRUPPO
- INPUT CONTO F_DACONTO
- DISPLAY "Gruppo" GRUPPO
- DISPLAY "Conto" CONTO
- DISPLAY "Descrizione@50" DESCR
- OUTPUT F_DACONTO CONTO
- OUTPUT F_DAGRUPPO GRUPPO
- CHECKTYPE NORMAL
-END
-
-NUMBER F_DASOTTOC 6
-BEGIN
- PROMPT 36 7 "Sottoconto "
- USE LF_PCON
- INPUT GRUPPO F_DAGRUPPO
- INPUT CONTO F_DACONTO
- INPUT SOTTOCONTO F_DASOTTOC
- DISPLAY "Gruppo" GRUPPO
- DISPLAY "Conto" CONTO
- DISPLAY "Sottoconto" SOTTOCONTO
- DISPLAY "Descrizione@50" DESCR
- OUTPUT F_DASOTTOC SOTTOCONTO
- OUTPUT F_DAGRUPPO GRUPPO
- OUTPUT F_DACONTO CONTO
- OUTPUT F_DADESCR DESCR
- CHECKTYPE NORMAL
-END
-
-STRING F_DADESCR 50
-BEGIN
- PROMPT 14 9 ""
- USE LF_PCON KEY 2
- INPUT DESCR F_DADESCR
- DISPLAY "Descrizione@50" DESCR
- DISPLAY "Gruppo" GRUPPO
- DISPLAY "Conto" CONTO
- DISPLAY "Sottoconto" SOTTOCONTO
- OUTPUT F_DASOTTOC SOTTOCONTO
- OUTPUT F_DACONTO CONTO
- OUTPUT F_DAGRUPPO GRUPPO
- OUTPUT F_DADESCR DESCR
- CHECKTYPE NORMAL
-END
-
-NUMBER F_AGRUPPO 3
-BEGIN
- PROMPT 2 11 " A: Gruppo "
- USE LF_PCON KEY 1 SELECT (CONTO="")
- INPUT GRUPPO F_AGRUPPO
- DISPLAY "Gruppo" GRUPPO
- DISPLAY "Descrizione@50" DESCR
- OUTPUT F_AGRUPPO GRUPPO
- CHECKTYPE NORMAL
-END
-
-NUMBER F_ACONTO 3
-BEGIN
- PROMPT 23 11 "Conto "
- USE LF_PCON KEY 1 SELECT (SOTTOCONTO="")
- INPUT GRUPPO F_AGRUPPO
- INPUT CONTO F_ACONTO
- DISPLAY "Gruppo" GRUPPO
- DISPLAY "Conto" CONTO
- DISPLAY "Descrizione@50" DESCR
- OUTPUT F_ACONTO CONTO
- OUTPUT F_AGRUPPO GRUPPO
- CHECKTYPE NORMAL
-END
-
-NUMBER F_ASOTTOC 6
-BEGIN
- PROMPT 36 11 "Sottoconto "
- USE LF_PCON
- INPUT GRUPPO F_AGRUPPO
- INPUT CONTO F_ACONTO
- INPUT SOTTOCONTO F_ASOTTOC
- DISPLAY "Gruppo" GRUPPO
- DISPLAY "Conto" CONTO
- DISPLAY "Sottoconto" SOTTOCONTO
- DISPLAY "Descrizione@50" DESCR
- OUTPUT F_ASOTTOC SOTTOCONTO
- OUTPUT F_AGRUPPO GRUPPO
- OUTPUT F_ACONTO CONTO
- OUTPUT F_ADESCR DESCR
- CHECKTYPE NORMAL
-END
-
-STRING F_ADESCR 50
-BEGIN
- PROMPT 14 13 ""
- USE LF_PCON KEY 2
- INPUT DESCR F_ADESCR
- DISPLAY "Descrizione@50" DESCR
- DISPLAY "Gruppo" GRUPPO
- DISPLAY "Conto" CONTO
- DISPLAY "Sottoconto" SOTTOCONTO
- OUTPUT F_ASOTTOC SOTTOCONTO
- OUTPUT F_ACONTO CONTO
- OUTPUT F_AGRUPPO GRUPPO
- OUTPUT F_ADESCR DESCR
- CHECKTYPE NORMAL
-END
-
-BOOLEAN F_COMPUG
-BEGIN
- PROMPT 2 15 "Movimenti con competenza uguale alla registrazione"
-END
-
-BOOLEAN F_COMPDIV
-BEGIN
- PROMPT 2 17 "Movimenti con competenza diversa dalla registrazione"
-END
-
-BOOLEAN F_REGRIT
-BEGIN
- PROMPT 2 19 "Movimenti registrati in ritardo"
-END
-
STRING F_REPORT 256 50
BEGIN
PROMPT 2 -3 "Tipo di stampa "
diff --git a/src/cg/cglib05.cpp b/src/cg/cglib05.cpp
index ef3e2bbb4..1f865064b 100644
--- a/src/cg/cglib05.cpp
+++ b/src/cg/cglib05.cpp
@@ -69,27 +69,12 @@ void TRiepilogoIVA_recordset::requery()
int p = wrk.find("FROMDATE");
if (p > 0)
- query << wrk.left(p) << _from_date.string();
+ query << wrk.sleft(p) << _from_date.string();
wrk.ltrim(p + 8);
p = wrk.find("TODATE");
if (p > 0)
- {
- query << wrk.left(p);
- if (competenzaperiodoIVA() && !competenzadiversaIVA() && !registrazioneIVAritardo())
- query << _to_date.string();
- else
- {
- TDate to(_to_date);
-
- to.set_day(31);
- to.set_month(12);
- if (_to_date.month() == 12)
- to.addyear(1);
- query << to.string();
- }
- query << wrk.mid(p + 6);
- }
+ query << wrk.sleft(p) << _to_date.string()<< wrk.smid(p + 6);
TISAM_recordset recset(query);
@@ -101,94 +86,62 @@ void TRiepilogoIVA_recordset::requery()
long conto = recset.get(RMI_CONTO).as_int();
long sottoconto = recset.get(RMI_SOTTOCONTO).as_int();
- if (((gruppo >= _from_gruppo) && (gruppo <= _to_gruppo)) &&
- ((conto >= _from_conto) && (conto <= _to_conto)) &&
- ((sottoconto >= _from_sottoconto) && (conto <= _to_sottoconto)))
+ TRegistro reg(recset.get(reg_fieldname).as_string());
+ TipoIVA t = reg.iva();
+ TDate data = recset.get(datareg_fieldname).as_date();
+ const int meseliq = recset.get(meseliq_fieldname).as_int();
+ const TDate datadoc = recset.get(datadoc_fieldname).as_date();
+ const TipoIVA tipo = reg.iva(); // 1=Vendite; 2=Acquisti
+ const bool fatt_rit_2018 = recset.get(TOSTRING(LF_MOV) "." MOV_DATAREG).as_bool() && (data.year() >= 2018);
+ const int year_diff = data.year() - datadoc.year();
+ const bool fattritind = ((tipo == iva_acquisti) && fatt_rit_2018) && ((year_diff > 2) || ((year_diff >= 1) && data.month() >= 5));
+ const bool fattrit = ((tipo == iva_acquisti) && !fattritind && fatt_rit_2018) && (year_diff >= 1);
+
+ if (is_competenza())
{
- TRegistro reg(recset.get(reg_fieldname).as_string());
- TipoIVA t = reg.iva();
- TDate data = recset.get(datareg_fieldname).as_date();
- const int meseliq = recset.get(meseliq_fieldname).as_int();
- const TDate datadoc = recset.get(datadoc_fieldname).as_date();
- const TipoIVA tipo = reg.iva(); // 1=Vendite; 2=Acquisti
- const bool fatt_rit_2018 = recset.get(TOSTRING(LF_MOV) "." MOV_DATAREG).as_bool() && (data.year() >= 2018);
- const int year_diff = data.year() - datadoc.year();
- const bool fattritind = ((tipo == iva_acquisti) && fatt_rit_2018) && ((year_diff > 2) || ((year_diff >= 1) && data.month() >= 5));
- const bool fattrit = ((tipo == iva_acquisti) && !fattritind && fatt_rit_2018) && (year_diff >= 1);
-
- if (is_competenza())
+ if (meseliq != 0)
{
- if (meseliq != 0)
- {
- data.set_month(meseliq);
- data.set_end_month();
- if (competenzadiversaIVA())
- {
- if (data < _from_date || data > _to_date)
- continue;
- }
- else
- continue;
-
- }
- else
- if (competenzadiversaIVA() && !competenzaperiodoIVA())
- continue;
-
- if (fattrit)
- {
- if (registrazioneIVAritardo())
- {
- if (!annuale() || _to_date.year() != datadoc.year())
- continue;
- }
- else
- continue;
- }
- else
- if (competenzaperiodoIVA() && (data < _from_date || data > _to_date))
- continue;
+ if (meseliq > data.month())
+ data.addyear(-1);
+ data.set_month(meseliq);
+ data.set_end_month();
}
- else
- {
- if (fattrit)
- {
- if (!annuale() || _to_date.year() != datadoc.year())
- continue;
- }
- else
- if (data < _from_date || data > _to_date)
- continue;
- }
-
- if (rec == NULL)
- work_array.add(cod, rec = new TRiepilogoIVA_record(cod));
- if (t == iva_acquisti)
- {
- real & r = rec->impacq();
- r += recset.get(RMI_IMPONIBILE).as_real();
- real & r1 = rec->ivaacq();
- r1 += recset.get(RMI_IMPOSTA).as_real();
- }
- else
- if (t == iva_vendite)
- {
- if (reg.corrispettivi())
- {
- real & r = rec->impcorr();
- r += recset.get(RMI_IMPONIBILE).as_real();
- real & r1 = rec->ivacorr();
- r1 += recset.get(RMI_IMPOSTA).as_real();
- }
- else
- {
- real & r = rec->impven();
- r += recset.get(RMI_IMPONIBILE).as_real();
- real & r1 = rec->ivaven();
- r1 += recset.get(RMI_IMPOSTA).as_real();
- }
- }
}
+ if (fattrit)
+ {
+ data.addyear(-1);
+ data.set_month(12);
+ data.set_end_month();
+ }
+ if (data.year() != _anno || (data.year() == _anno && (data.month() < _da_mese || data.month() > _a_mese)))
+ continue;
+ if (rec == NULL)
+ work_array.add(cod, rec = new TRiepilogoIVA_record(cod));
+ if (t == iva_acquisti)
+ {
+ real & r = rec->impacq();
+ r += recset.get(RMI_IMPONIBILE).as_real();
+ real & r1 = rec->ivaacq();
+ r1 += recset.get(RMI_IMPOSTA).as_real();
+ }
+ else
+ if (t == iva_vendite)
+ {
+ if (reg.corrispettivi())
+ {
+ real & r = rec->impcorr();
+ r += recset.get(RMI_IMPONIBILE).as_real();
+ real & r1 = rec->ivacorr();
+ r1 += recset.get(RMI_IMPOSTA).as_real();
+ }
+ else
+ {
+ real & r = rec->impven();
+ r += recset.get(RMI_IMPONIBILE).as_real();
+ real & r1 = rec->ivaven();
+ r1 += recset.get(RMI_IMPOSTA).as_real();
+ }
+ }
}
TString_array keys;
@@ -317,8 +270,7 @@ const TVariant& TRiepilogoIVA_recordset::get(unsigned int column) const
}
TRiepilogoIVA_recordset::TRiepilogoIVA_recordset() : TRecordset(), _pos(0), _from_date(botime), _to_date(eotime),
-_from_gruppo(0), _from_conto(0), _from_sottoconto(0L),
-_to_gruppo(999), _to_conto(999), _to_sottoconto(999999L), _freezed(false), _annuale(false)
+ _freezed(false), _annuale(false), _anno(0), _da_mese(1), _a_mese(12)
{
add_field(_alfafld, 101, 4, COD);
diff --git a/src/cg/cglib05.h b/src/cg/cglib05.h
index 6447a5231..11f76e221 100644
--- a/src/cg/cglib05.h
+++ b/src/cg/cglib05.h
@@ -21,18 +21,15 @@
class TRiepilogoIVA_recordset : public TRecordset
{
TArray _rows;
- long _pos;
- TDate _from_date;
- TDate _to_date;
- long _from_gruppo;
- long _from_conto;
- long _from_sottoconto;
- long _to_gruppo;
- long _to_conto;
- long _to_sottoconto;
TArray _info;
- bool _freezed;
- bool _annuale;
+ long _pos;
+ TDate _from_date;
+ TDate _to_date;
+ int _anno;
+ int _da_mese;
+ int _a_mese;
+ bool _freezed;
+ bool _annuale;
protected:
virtual const TVariant& get_field(int num, const char* field) const;
@@ -51,21 +48,20 @@ public:
// const TString& col2name(unsigned int column) const;
virtual const TVariant& get(unsigned int column) const;
+ TDate set_from(const TDate& from) { set_var("#FROMDATE", from, true); return _from_date = from; }
+ TDate set_to(const TDate& to) { set_var("#TODATE", to, true); return _to_date = to; }
+ int set_anno(const int anno) {set_var("#ANNO", (long) anno, true); return _anno = anno; };
+ void set_da_mese_var(const int mese) { set_var("#DAMESE", (long)mese, true); }
+ void set_a_mese_var(const int mese) { set_var("#AMESE", (long)mese, true); }
+ int set_da_mese(const int mese) { return _da_mese = mese; }
+ int set_a_mese(const int mese) { return _a_mese = mese; }
- TDate set_from(const TDate& from) { return _from_date = from; }
- TDate set_to(const TDate& to) { return _to_date = to; }
- void set_from_conto(int gruppo, int conto, long sottoconto) { _from_gruppo = gruppo; _from_conto = conto; _from_sottoconto = sottoconto; }
- void set_to_conto(int gruppo, int conto, long sottoconto) { _to_gruppo = gruppo; _to_conto = conto; _to_sottoconto = sottoconto; }
-
- virtual bool set_competenzaperiodoIVA(bool on) { return true; }
- virtual bool set_competenzadiversaIVA(bool on) { return false; }
- virtual bool set_registrazioneIVAritardo(bool on) { return false; }
- virtual bool set_annuale(bool on) { _annuale = on; return _annuale; }
- virtual bool competenzaperiodoIVA() const { return true; }
- virtual bool competenzadiversaIVA() const { return false; }
- virtual bool registrazioneIVAritardo() const { return true; }
- virtual bool annuale() const { return _annuale; }
+ bool set_annual(bool on) { return _annuale = on; }
+ bool annuale() const { return _annuale; }
virtual bool is_competenza() const { return false; }
+ int anno() const { return _anno; }
+ int da_mese() { return _da_mese; }
+ int a_mese() { return _a_mese; }
TRiepilogoIVA_recordset();
virtual ~TRiepilogoIVA_recordset() { }
diff --git a/src/ef/ef0100.cpp b/src/ef/ef0100.cpp
index 990e70c94..c1f60e3c0 100755
--- a/src/ef/ef0100.cpp
+++ b/src/ef/ef0100.cpp
@@ -365,7 +365,7 @@ bool TVariazione_effetti::clifo_handler(TMask_field& f, KEY k)
TMask& m = f.mask();
TString8 str;
str << m.get(F_TIPOCF) << '|' << m.get(F_CODCF);
- const TString& iban = cache().get(LF_CFVEN, str, "IBAN");
+ const TString& iban = cache().get(LF_CLIFO, str, "IBAN");
if (iban.not_empty())
{
m.set(F_IBAN, iban);
diff --git a/src/ef/ef0100.h b/src/ef/ef0100.h
index 06370cda7..7a4803b32 100755
--- a/src/ef/ef0100.h
+++ b/src/ef/ef0100.h
@@ -44,6 +44,7 @@
#define F_DESCONTSEP 239
#define F_MANDATO 240
+
#define F_IBAN 250
#define F_IBAN_STATO 251
#define F_IBAN_CHECK 252
diff --git a/src/ef/ef0100a.uml b/src/ef/ef0100a.uml
index b7ff5789c..28839a961 100755
--- a/src/ef/ef0100a.uml
+++ b/src/ef/ef0100a.uml
@@ -26,7 +26,8 @@ BEGIN
PROMPT 30 1 "Numero "
FIELD NPROGTR
KEY 1
- USE LF_EFFETTI SELECT (TIPOCF=#F_TIPOCF)&&(BETWEEN(CODCF,#F_CODCF,#F_CODCF))
+ USE LF_EFFETTI
+// SELECT (TIPOCF=#F_TIPOCF)&&(BETWEEN(CODCF,#F_CODCF,#F_CODCF))
JOIN LF_CLIFO INTO CODCF=CODCF TIPOCF=TIPOCF
INPUT NPROGTR F_NPROGTR
DISPLAY "Nr.progr." NPROGTR
@@ -42,6 +43,7 @@ BEGIN
MESSAGE COPY,10@
END
+
TEXT DLG_NULL
BEGIN
PROMPT 1 2 "Cliente"
diff --git a/src/ef/ef0a00.cpp b/src/ef/ef0a00.cpp
index cb56638c7..4c4453029 100755
--- a/src/ef/ef0a00.cpp
+++ b/src/ef/ef0a00.cpp
@@ -442,6 +442,9 @@ bool TPE_mask::fill_rate()
for (int rata = 1; rata <= rp.rate(); rata++)
{
const TRiga_scadenze& rs = rp.rata(rata);
+ const long codcf = rs.get_long(SCAD_SOTTOCONTO);
+ if (codcf == 144)
+ int i = 1;
if (!rs.chiusa())
{
TString16 banca_part(rs.get(SCAD_CODABI)); banca_part << rs.get(SCAD_CODCAB);
diff --git a/src/ef/ef1100.cpp b/src/ef/ef1100.cpp
index 041ec1f95..ef37cebb7 100644
--- a/src/ef/ef1100.cpp
+++ b/src/ef/ef1100.cpp
@@ -24,43 +24,6 @@
static XVT_SQLDB _db = NULL; // SEPA sqlite db
-/////////////////////////////////////////////////////////////////////////////////////
-// Utilities
-/////////////////////////////////////////////////////////////////////////////////////
-
-// Cerca una stringa all'interno di una SLIST (Potrebbe diventare una funzione di XVT.h)
-static SLIST_ELT xvt_slist_find_str(SLIST list, const char* str)
-{
- SLIST_ELT e = NULL;
- for (e = xvt_slist_get_first(list); e; e = xvt_slist_get_next(list, e))
- {
- const char* val = xvt_slist_get(list, e, NULL);
- if (xvt_str_compare_ignoring_case(str, val) == 0)
- break;
- }
- return e;
-}
-
-// Aggiorna il file dst se più vecchio di src (Potrebbe diventare una funzione di XVT.h)
-bool xvt_fsys_fupdate(const char* src, const char* dst)
-{
- bool ok = false;
- if (xvt_fsys_file_exists(src))
- {
- const long tsrc = xvt_fsys_file_attr(src, XVT_FILE_ATTR_MTIME);
- if (tsrc > 0)
- {
- long tdst = 0;
- if (xvt_fsys_file_exists(dst))
- tdst = xvt_fsys_file_attr(dst, XVT_FILE_ATTR_MTIME);
- if (tsrc > tdst)
- ok = xvt_fsys_fcopy(src, dst) != 0;
- }
- }
-
- return ok;
-}
-
/////////////////////////////////////////////////////////////////////////////////////
// TJava_profile
/////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/fe/fe0100.cpp b/src/fe/fe0100.cpp
index f3c1eca20..226673b79 100755
--- a/src/fe/fe0100.cpp
+++ b/src/fe/fe0100.cpp
@@ -244,10 +244,6 @@ TExclusion_mode TSpesometro_msk::validate_mov(const TRectype& mov)
if (anno < 2012)
return segnala_movimento(mov, em_data_limite);
-#ifdef DBG
- if (mov.get_long(MOV_NUMREG) ==14224)
- int sn = 1;
-#endif
const char tipocf = mov.get_char(MOV_TIPO);
const real impmin = get_real(F_IMPMIN);
diff --git a/src/gfm/median.c b/src/gfm/median.c
index 6cf7d88ed..9fbd519fb 100755
--- a/src/gfm/median.c
+++ b/src/gfm/median.c
@@ -73,7 +73,7 @@ int n;
tmpa[i] = pSrc[i];
/* sort pointers */
- qsort((void *)tmpa,n,sizeof(DEC *), _SortInc);
+ qsort((void *)tmpa,n,sizeof(DEC *), (int (__cdecl *)(void)) _SortInc);
if (n%2)
_MacDCopy(pDst, tmpa[(n-1)/2]);
diff --git a/src/ic/ic0100f.rep b/src/ic/ic0100f.rep
index d9aa99419..d671d9cd9 100644
--- a/src/ic/ic0100f.rep
+++ b/src/ic/ic0100f.rep
@@ -395,7 +395,9 @@ THEN
#F1.203 +!
- USE IVADIFF SELECT (BETWEEN(DATAREG,#DAL,#AL))(TIPOIVA==#TIPOIVA)(TIPODIFF==#TIPODIFF)((CHIUSA=#CHIUSA)||(#CHIUSA="T"))
+ USE IVADIFF KEY 4 SELECT (BETWEEN(DATAREGP;#DAL;#AL))(TIPOIVA==#TIPOIVA)(TIPODIFF==#TIPODIFF)((CHIUSA=#CHIUSA)||(#CHIUSA="T"))
+FROM DATAREG=#DAL
+TO DATAREG=#AL
JOIN MOV INTO NUMREG==NUMREG
JOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF
\ No newline at end of file
diff --git a/src/include/alex.cpp b/src/include/alex.cpp
index 12cdfa7c9..37dd01e0f 100755
--- a/src/include/alex.cpp
+++ b/src/include/alex.cpp
@@ -1170,7 +1170,12 @@ bool TAlex_virtual_machine::execute(const TBytecode& bc)
bool TAlex_virtual_machine::compile(const char* cmd, TBytecode& bc)
{
+#ifdef LINUX
+ string s(cmd);
+ istringstream instr(s);
+#else
istrstream instr((const char*)cmd, strlen(cmd));
+#endif
return compile(instr, bc);
}
diff --git a/src/include/applicat.cpp b/src/include/applicat.cpp
index f420d7fbc..efd232ad3 100755
--- a/src/include/applicat.cpp
+++ b/src/include/applicat.cpp
@@ -296,12 +296,11 @@ void TApplication::stop_run()
{
if (_savefirm)
prefix().set_codditta(_savefirm);
- terminate();
+ terminate();
xvt_app_destroy();
}
-
bool TApplication::add_menu(TString_array& menu, MENU_TAG id)
{
TTemp_window tw(TASK_WIN);
@@ -316,11 +315,10 @@ bool TApplication::remove_menu(MENU_TAG id)
TApplication::TApplication()
- : _god_vars(NULL),_savefirm(0), _running(FALSE), _create_ok(FALSE)
+ : _god_vars(NULL),_savefirm(0), _running(false), _create_ok(false), _force(false)
{
}
-
TApplication::~TApplication()
{
if (_god_vars != NULL)
@@ -341,7 +339,8 @@ void TApplication::terminate()
if (_create_ok)
destroy(); // Distruzione files e maschere
- do_events();
+ if(!_force)
+ do_events();
if (use_files())
{
@@ -371,7 +370,8 @@ const char* TApplication::get_module_name() const
const TDongle& d = dongle();
const TString4 modname = _name.left(2);
word aut = d.module_name2code(modname);
- if (aut == 0xFFFF && modname == "ps")
+
+ if (aut == 0xFFFF && modname == "ps")
{
aut = 0;
module = TR("Personalizzazioni");
@@ -591,6 +591,7 @@ void TApplication::run(
set_xvt_hooks();
_running = TRUE;
+// message_box("a");
xvt_app_create(argc, argv, 0L, task_eh, &cfg);
}
diff --git a/src/include/applicat.h b/src/include/applicat.h
index f2a0695f2..4a88816ba 100755
--- a/src/include/applicat.h
+++ b/src/include/applicat.h
@@ -51,6 +51,9 @@ class TApplication
// @cmember:(INTERNAL) Codice della ditta
long _savefirm;
+ // @cmember:(INTERNAL) Chiusura forzata per programmi senza interfaccia
+ bool _force;
+
// @cmember:(INTERNAL) Indica se l'applicazione e' partita
bool _running;
@@ -59,7 +62,7 @@ class TApplication
// @cmember:(INTERNAL) Termine dell'applicazione
void terminate();
-
+
// @access Protected Member
protected:
// @cmember Ritorna il nome del modulo dell'applicazione
@@ -135,6 +138,8 @@ public:
// @cmember Forza la chiusura dell'applicazione
void stop_run();
+ void TApplication::force_stop() {_force = true;}
+
// @cmember Mette il segno Check a fianco di una voce di menu
void check_menu_item(MENU_TAG item, bool on = true);
diff --git a/src/include/campo.aut b/src/include/campo.aut
index 3c468827e..f59c67d24 100755
--- a/src/include/campo.aut
+++ b/src/include/campo.aut
@@ -47,4 +47,5 @@ bs Bee Store
ha Hardy Caffè
ri Riclassificazioni
gv Gestione versamenti
-tf Trasferimento Fatture
\ No newline at end of file
+tf Trasferimento Fatture
+vd Vendita al dettaglio
\ No newline at end of file
diff --git a/src/include/dongle.h b/src/include/dongle.h
index 87fba2205..d78f3cec5 100755
--- a/src/include/dongle.h
+++ b/src/include/dongle.h
@@ -17,7 +17,7 @@
#include
#endif
-enum TDongleHardware { _dongle_unknown=0, _dongle_network=3, _dongle_ssa=4, _dongle_ssanet=5 };
+enum TDongleHardware { _dongle_unknown, _dongle_hardlock, _dongle_eutron, _dongle_network, _dongle_ssa, _dongle_ssanet,_dongle_software };
enum TDongleType { _no_dongle, _user_dongle, _developer_dongle };
class TDongle : public TObject
diff --git a/src/include/filebar.h b/src/include/filebar.h
index 4a118bceb..89ca6b760 100755
--- a/src/include/filebar.h
+++ b/src/include/filebar.h
@@ -25,4 +25,6 @@ BEGIN
PICTURE 0
END
-#include
\ No newline at end of file
+#include
+
+// leave a newline at the end
diff --git a/src/include/fraction.cpp b/src/include/fraction.cpp
index 2a11a7ce6..716502841 100755
--- a/src/include/fraction.cpp
+++ b/src/include/fraction.cpp
@@ -122,7 +122,11 @@ void fraction::build_fraction (const char *s)
}
}
n.strip(",.-+/[]");
+#ifdef WIN32
sscanf_s(n, "%I64d", &_num);
+#else
+ sscanf_s(n, "%Ld", &_num);
+#endif
if (len_periodo > 0)
{
_den = 9;
@@ -174,6 +178,7 @@ fraction::fraction(const real& num, const real& den)
}
}
+
int fraction::sign() const
{
if (_num == 0 || _den == 0)
diff --git a/src/include/isam.cpp b/src/include/isam.cpp
index 2d3098d5b..e7b9898ca 100755
--- a/src/include/isam.cpp
+++ b/src/include/isam.cpp
@@ -985,7 +985,7 @@ int TBaseisamfile::_rewrite(const TRectype& rec)
// Forza l'uso della chiave principale (per chiavi duplicate?)
const int fhnd = handle(1);
- _lasterr = cisread(fhnd, 1, save_rec, _isequal + _nolock, _recno); // Si Posiziona per sicurezza...
+ while ((_lasterr = cisread(fhnd, 1, save_rec, _isequal + _testandlock, _recno)) == _islocked) ;// Si Posiziona e locca per sicurezza...
if (_lasterr == NOERR)
{
@@ -1276,11 +1276,7 @@ int TBaseisamfile::is_valid(bool exclusive)
{
const int dbfreclen = DB_reclen(fhnd);
if (dbfreclen != trcreclen)
- {
err = _istrcerr;
- if (_logicnum == LF_CLIFO)
- error_box("Clifo trc=%d dbf=%d", trcreclen, dbfreclen);
- }
}
}
else
@@ -1457,6 +1453,19 @@ TIsamtempfile::TIsamtempfile(int logicnum, const char* radix, bool create, bool
n.insert("%", 0);
open(n, create, eod, eox);
+
+ TCodeb_handle cb_handle = prefix().get_handle(_isam_handle, _curr_key);
+ const int dbfreclen = DB_reclen(cb_handle);
+ const int trcreclen = prefix().get_reclen(logicnum);
+
+ if (dbfreclen != trcreclen)
+ {
+ TString msg;
+ msg.format("Lunghezza record incoerente sul file %d (%s): file=%d trc=%d",
+ num(), (const char*)description(), dbfreclen, trcreclen);
+ fatal_box(msg);
+ }
+
}
diff --git a/src/include/lffiles.h b/src/include/lffiles.h
index bd3da435e..4aa0df9f3 100755
--- a/src/include/lffiles.h
+++ b/src/include/lffiles.h
@@ -201,3 +201,6 @@
#define CNF_DITTA CNF_GENERAL + 2
#endif // __LFFILES_H
+
+// leave a newline at the end
+
diff --git a/src/include/maskfld.cpp b/src/include/maskfld.cpp
index 0415a60b8..1d26d1b5d 100755
--- a/src/include/maskfld.cpp
+++ b/src/include/maskfld.cpp
@@ -380,6 +380,9 @@ void TMask_field::construct(TScanner& scanner, WINDOW parent)
_ctl_data.reset();
_ctl_data._dlg = atodlg(scanner.pop());
+ if (_ctl_data._dlg == 161)
+ int i = 1;
+
parse_head(scanner);
scanner.popkey(); // BEGIN
diff --git a/src/include/navbar.h b/src/include/navbar.h
index 3bbf8af78..819e30e8e 100755
--- a/src/include/navbar.h
+++ b/src/include/navbar.h
@@ -32,3 +32,5 @@ BEGIN
MESSAGE EXIT,K_END
PICTURE TOOL_LASTREC
END
+
+// leave a newline at the end
diff --git a/src/include/postman.cpp b/src/include/postman.cpp
index 7d811ae3d..8d33b6960 100755
--- a/src/include/postman.cpp
+++ b/src/include/postman.cpp
@@ -368,7 +368,12 @@ bool TPostman::dispatch_transaction(const TRectype& rec,
TSocketClient socket;
char * buf = new char[1024 * 256];
+#ifdef WIN32
ostrstream stream(buf, 1024 * 256);
+#else
+ ostringstream stream(buf);
+#endif
+
bool ok = true;
item.SetTag("m:CampoTransaction");
diff --git a/src/include/prefix.cpp b/src/include/prefix.cpp
index b7485fc5f..c04352c69 100755
--- a/src/include/prefix.cpp
+++ b/src/include/prefix.cpp
@@ -495,7 +495,7 @@ const TFilename& TFile_info::load_filedes()
{
_dir = _filedes.SysName[0] != '$' ? _comdir : _nordir;
_name = CAddPref(_filedes.SysName);
- strncpy(_filedes.Des, dictionary_translate(_filedes.Des), sizeof(_filedes.Des)-1);
+ strncpy_s(_filedes.Des, dictionary_translate(_filedes.Des), sizeof(_filedes.Des)-1);
}
else
_name.cut(0);
@@ -534,7 +534,7 @@ TFile_info::TFile_info(int logicnum, TFilename& name)
int err = DB_recinfo(_name, &_filedes, (RecDes*)&rec.rec(), keys.get_buffer());
if (err == NOERR && prefix().add_recdes(logicnum, rec, keys))
{
- strncpy(_filedes.SysName, _name, sizeof(_filedes.SysName));
+ strncpy_s(_filedes.SysName, _name, sizeof(_filedes.SysName));
_filedes.SysName[41] = '\0';
}
else
@@ -1036,7 +1036,7 @@ void TPrefix::set(
{
const TString saved_prf = __ptprf; // Salvo __ptprf che viene cambiato da CGetPref
char* prfx = (char*)CGetPref(); // Safe non const cast for StPath cprefix
- strcpy(__ptprf, saved_prf);
+ strcpy_s(__ptprf, saved_prf);
xvt_fsys_build_pathname(prfx, NULL, __ptprf, _prefix, NULL, NULL);
}
else
diff --git a/src/include/rdoc.h b/src/include/rdoc.h
index 2db5aff9c..32b02ea05 100755
--- a/src/include/rdoc.h
+++ b/src/include/rdoc.h
@@ -47,6 +47,11 @@
#define RDOC_MOVMAG "MOVMAG"
#define RDOC_CODMAGC "CODMAGC"
#define RDOC_DATACONS "DATACONS"
+#define RDOC_QTAGG1 "QTAGG1"
+#define RDOC_QTAGG2 "QTAGG2"
+#define RDOC_QTAGG3 "QTAGG3"
+#define RDOC_QTAGG4 "QTAGG4"
+#define RDOC_QTAGG5 "QTAGG5"
#define RDOC_IMPIANTO "IMPIANTO"
#define RDOC_LINEA "LINEA"
#define RDOC_IDRIGA "IDRIGA"
diff --git a/src/include/relapbar.h b/src/include/relapbar.h
index ea5271cf7..866fa3d37 100755
--- a/src/include/relapbar.h
+++ b/src/include/relapbar.h
@@ -1,2 +1,4 @@
#include
-#include
\ No newline at end of file
+#include
+
+// leave a newline at the end
diff --git a/src/include/relapp.cpp b/src/include/relapp.cpp
index 46dcf31db..f00077e7a 100755
--- a/src/include/relapp.cpp
+++ b/src/include/relapp.cpp
@@ -1422,7 +1422,7 @@ void TRelation_application::main_loop()
batch(false);
}
else
- k = _mask->run();
+ k = _mask->run();
switch (k)
{
@@ -1680,7 +1680,9 @@ void TRelation_application::main_loop()
}
if (_curr_trans_mode == TM_BATCH)
{
- TString_array & errs = errors();
+ batch(false);
+
+ TString_array & errs = errors();
FOR_EACH_ARRAY_ROW(errs, r, s)
ini.set("ErrMsg", *s, "Main", false, r);
@@ -1694,6 +1696,8 @@ void TRelation_application::main_loop()
}
_trans_counter++;
} while ( _trans_counter < _ntransactions);
+ if (_curr_trans_mode == TM_BATCH)
+ force_stop();
}
bool TRelation_application::filter()
diff --git a/src/include/report.h b/src/include/report.h
index 334a4d77a..84a9fe46c 100755
--- a/src/include/report.h
+++ b/src/include/report.h
@@ -660,6 +660,8 @@ public:
int parse_field(const char* code, char& type, int& level, int& id) const;
TReport_field* field(const char* code);
+ virtual bool set_var(const TString& name, const TVariant& var) { return set_usr_val(name, var); }
+
void report2mask(TMask & m) const;
void mask2report(const TMask & m);
diff --git a/src/include/tokens.h b/src/include/tokens.h
index c01af24ac..a55043156 100755
--- a/src/include/tokens.h
+++ b/src/include/tokens.h
@@ -53,3 +53,6 @@
#define VALIDATE VA
#define WARNING WA
#define ZOOM ZO
+
+// leave a newline at the end
+
diff --git a/src/include/uml.h b/src/include/uml.h
index 26e949121..9b2328641 100755
--- a/src/include/uml.h
+++ b/src/include/uml.h
@@ -8,3 +8,5 @@
#undef min
#undef max
+
+// leave a newline at the end
diff --git a/src/include/urldefid.h b/src/include/urldefid.h
index 098ab4486..80f2c5bb8 100755
--- a/src/include/urldefid.h
+++ b/src/include/urldefid.h
@@ -209,4 +209,4 @@
#endif
-/* @END */
\ No newline at end of file
+// leave a newline at the end
diff --git a/src/include/xml.cpp b/src/include/xml.cpp
index 932aa8825..98e7c13ef 100755
--- a/src/include/xml.cpp
+++ b/src/include/xml.cpp
@@ -518,7 +518,11 @@ void TXmlItem::AsString(TString& str) const
{
char* buf = str.get_buffer(nSize);
memset(buf, 0, nSize);
+#ifdef WIN32
ostrstream outf(buf, nSize);
+#else
+ ostringstream outf(buf);
+#endif
Write(outf, 0);
if (buf[nSize-1] == '\0')
diff --git a/src/pa/pa0100.cpp b/src/pa/pa0100.cpp
index 79de425a6..17c4026f1 100644
--- a/src/pa/pa0100.cpp
+++ b/src/pa/pa0100.cpp
@@ -65,39 +65,6 @@ static bool chiave_paf(const TRectype& doc, TString& cess, TString& numdoc)
return cess.full();
}
-// Cerca una stringa all'interno di una SLIST (Potrebbe diventare una funzione di XVT.h)
-static SLIST_ELT xvt_slist_find_str(SLIST list, const char* str)
-{
- SLIST_ELT e = NULL;
- for (e = xvt_slist_get_first(list); e; e = xvt_slist_get_next(list, e))
- {
- const char* val = xvt_slist_get(list, e, NULL);
- if (xvt_str_compare_ignoring_case(str, val) == 0)
- break;
- }
- return e;
-}
-
-// Aggiorna il file dst se più vecchio di src (Potrebbe diventare una funzione di XVT.h)
-bool xvt_fsys_fupdate(const char* src, const char* dst)
-{
- bool ok = false;
- if (xvt_fsys_file_exists(src))
- {
- const long tsrc = xvt_fsys_file_attr(src, XVT_FILE_ATTR_MTIME);
- if (tsrc > 0)
- {
- long tdst = 0;
- if (xvt_fsys_file_exists(dst))
- tdst = xvt_fsys_file_attr(dst, XVT_FILE_ATTR_MTIME);
- if (tsrc > tdst)
- ok = xvt_fsys_fcopy(src, dst) != 0;
- }
- }
-
- return ok;
-}
-
/////////////////////////////////////////////////////////////////////////////////////
// TJava_profile
/////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/ps/ps0214100.cpp b/src/ps/ps0214100.cpp
index 7a6ddc793..6d1b885d3 100755
--- a/src/ps/ps0214100.cpp
+++ b/src/ps/ps0214100.cpp
@@ -358,7 +358,6 @@ void TDichiarazione_CONAI::scrivi_csv(const TRectype& prima_riga, TDichiarazione
break;
}
}
-
if (n_riga_generata > 0)
scrivi_csv_doc_con_riga_generata(doc, n_riga_generata, csv, conai_specie);
else
diff --git a/src/sc/sc0100.cpp b/src/sc/sc0100.cpp
index 8bb87743d..88dc094b9 100755
--- a/src/sc/sc0100.cpp
+++ b/src/sc/sc0100.cpp
@@ -6,6 +6,8 @@
#include "sc0100.h"
#include "sc0100a.h"
+#include "../cg/cg2105.h"
+
#include
HIDDEN bool gruppo_handler(TMask_field& f, KEY key)
diff --git a/src/tp/tp0900.cpp b/src/tp/tp0900.cpp
index a92995af5..7ed5714ee 100755
--- a/src/tp/tp0900.cpp
+++ b/src/tp/tp0900.cpp
@@ -255,7 +255,7 @@ void TDichiarazione_CONAI::scrivi_csv_doc_speciale(const TDocumento& doc, TDichi
//prende il cliente ed i suoi dati
const TCli_for& clifo = doc.clifor();
TString80 clifo_paiv;
- //cerca la percentuale di esenzione conai sul cliente (controllo)
+ //cerca la percentuale di esenzione conai sul cliente (controllo
const real cfven_perc_conai = clifo_conai(clifo, conai_specie, clifo_paiv);
const int nrighe = doc.rows();
@@ -358,6 +358,9 @@ bool TDichiarazione_CONAI::scrivi_csv(const TRectype& prima_riga, TDichiarazione
//check di debug
if (numdoc == 1451)
const int cazzone = 1;
+ if (doc.get_long(DOC_CODCF) == 501183)
+ int i = 1;
+
#endif
//se il cliente non c'entra con il conai e' inutile perdere tempo!
@@ -563,13 +566,19 @@ void TDichiarazione_CONAI::elabora(const TMask& mask) const
//..le quantita' etc) e le righe generate da CONAI (per avere i prezzi)
TString16 scat_fieldname = conai_sottocat_name(conai_specie);
+
if (scat_fieldname.blank())
return;
scat_fieldname.insert("RG1:");
+ TString16 peso_fieldname = conai_peso_name(conai_specie);
+
+ if (peso_fieldname.blank())
+ return;
+ peso_fieldname.insert("RG1:");
TString query;
query << "USE RDOC";
- query << "\nSELECT BETWEEN(33.DATADOC,#DADATA,#ADATA)&&BETWEEN(33.TIPODOC,#TIPODOC,#TIPODOC)&&(" << scat_fieldname <<"!=\"\")";
+ query << "\nSELECT BETWEEN(33.DATADOC,#DADATA,#ADATA)&&BETWEEN(33.TIPODOC,#TIPODOC,#TIPODOC)&&((" << scat_fieldname <<"!=\"\")||(" << peso_fieldname << "!=0.00))";
query << "\nJOIN DOC INTO PROVV==PROVV ANNO==ANNO CODNUM==CODNUM NDOC==NDOC";
query << "\nFROM PROVV=D ANNO=#ANNO CODNUM=#CODNUM";
query << "\nTO PROVV=D ANNO=#ANNO CODNUM=#CODNUM";
@@ -583,6 +592,8 @@ void TDichiarazione_CONAI::elabora(const TMask& mask) const
rdoc.set_var("#ADATA", datafin);
//rdoc.set_var("#CODART", codart);
+
+
//creazione del csv recordset che verra' riempito dai record del recordset rdoc
TDichiarazione_CONAI_csv_recordset* csv = new TDichiarazione_CONAI_csv_recordset;
@@ -611,7 +622,12 @@ void TDichiarazione_CONAI::elabora(const TMask& mask) const
{
if (!pi.add_status())
break;
+
const long ndoc = rdoc.get(RDOC_NDOC).as_int();
+#ifdef DBG
+ if (ndoc == 81L)
+ int i = 1;
+#endif
if (ndoc != last_ndoc)
{
scrivi_csv(rdoc.cursor()->curr(), *csv, conai_specie, codart.as_string());
diff --git a/src/ve/ve5400.cpp b/src/ve/ve5400.cpp
index 8ef04be8a..b28e0632a 100755
--- a/src/ve/ve5400.cpp
+++ b/src/ve/ve5400.cpp
@@ -232,6 +232,9 @@ bool TArchive_doc::restore_file(TIsamtempfile& src, bool update)
{
TFast_isamfile dst(src.num());
+ if (src.curr().len() != dst.curr().len())
+ if (!yesnocancel_box(FR("Il file %s da ripristinare non è compatibile con lo stesso file\n nell'installazione andrebbe rigenerato"), src.description()))
+ return false;
TString msg; msg << TR("Trasferimento") << ' ' << dst.description();
TProgress_monitor pi(src.items(), msg);
for (int err = src.first(); err == NOERR; err = src.next())
diff --git a/src/ve/velib03a.cpp b/src/ve/velib03a.cpp
index ab27441a2..afa7b009f 100755
--- a/src/ve/velib03a.cpp
+++ b/src/ve/velib03a.cpp
@@ -267,8 +267,16 @@ const TString_array& TTipo_documento::sheet_columns() const
if (_sheet_columns.empty())
{
TFilename pn; profile_name(pn);
- TConfig prof(pn, "SHEET");
- for (int i = 0; i < MAX_COLUMNS; i++)
+ TConfig prof(pn);//, "SHEET");
+ TString_array para;
+
+ prof.list_paragraphs(para);
+ if (para.find("SHEET", 0) >= 0)
+ prof.set_paragraph("SHEET");
+ else
+ if (para.find("SH", 0) >= 0)
+ prof.set_paragraph("SH");
+ for (int i = 0; i < MAX_COLUMNS; i++)
{
const TString& id = prof.get("Col", NULL, i);
if (atoi(id) <= 0)
diff --git a/src/ve/vetbatr.uml b/src/ve/vetbatr.uml
index 9ea16607f..67ebf1e6a 100755
--- a/src/ve/vetbatr.uml
+++ b/src/ve/vetbatr.uml
@@ -247,7 +247,7 @@ END
STRING ATR_CODARTDISP 20
BEGIN
- PROMPT 2 15 "Art. dispon. "
+ PROMPT 2 16 "Art. dispon. "
COPY USE ATR_CODART
INPUT CODART ATR_CODARTDISP
COPY DISPLAY ATR_CODART
@@ -261,7 +261,7 @@ END
STRING ATR_DESCARTDISP 50 34
BEGIN
- PROMPT 40 15 ""
+ PROMPT 40 16 ""
COPY USE ATR_DESCART
INPUT DESCR ATR_DESCARTDISP
COPY DISPLAY ATR_DESCART
@@ -273,7 +273,7 @@ END
STRING ATR_TIPORADISP 2
BEGIN
- PROMPT 2 16 "Tipo ora "
+ PROMPT 2 17 "Tipo ora "
USE &CIORE
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
@@ -285,7 +285,7 @@ END
CURRENCY ATR_PREZZODISP 12
BEGIN
- PROMPT 22 16 "Prezzo disponibilità "
+ PROMPT 22 17 "Prezzo disponibilità "
FLAGS "U"
FIELD R11
MODULE ci
diff --git a/src/ve/vetbprs.uml b/src/ve/vetbprs.uml
index 9293286da..6f067de05 100755
--- a/src/ve/vetbprs.uml
+++ b/src/ve/vetbprs.uml
@@ -297,7 +297,7 @@ END
STRING PRS_CODTRB 4
BEGIN
-PROMPT 2 20 "Cod. tributo "
+PROMPT 2 22 "Cod.tributo"
FIELD S10
FLAG "U"
USE %TRB
@@ -311,7 +311,7 @@ END
STRING PRS_CODTRB1 50 22
BEGIN
-PROMPT 25 20 ""
+PROMPT 22 22 ""
USE %TRB KEY 2
INPUT S0 PRS_CODTRB1
DISPLAY "Descrizione@50" S0
@@ -323,7 +323,7 @@ END
NUMBER PRS_CODCAUS770 2
BEGIN
- PROMPT 2 21 "Caus. 770 "
+ PROMPT 2 23 "Caus. 770 "
USE %CA7 SELECT I0==#PRS_CODTRB
INPUT CODTAB PRS_CODCAUS770
DISPLAY "Cod.caus." CODTAB
@@ -340,7 +340,7 @@ END
LISTBOX PRS_CODQUA 2 10
BEGIN
- PROMPT 20 21 "Quadro "
+ PROMPT 18 23 "Quadro "
HELP "Inserire il codice quadro"
ITEM "|" MESSAGE CLEAR,PRS_CAUSD
ITEM "LA|Quadro LA" MESSAGE ENABLE,PRS_CAUSD
@@ -352,7 +352,7 @@ END
STRING PRS_CAUSD 2
BEGIN
- PROMPT 50 21 "Causale LA "
+ PROMPT 41 23 "Causale LA"
FLAGS "U"
SHEET "Codice|Descrizione@320"
INPUT PRS_CAUSD
@@ -396,7 +396,7 @@ END
LISTBOX PRS_SEZIONE 6
BEGIN
- PROMPT 2 23 "Sezione per cooperative "
+ PROMPT 56 23 "Sezione per cooperative"
FIELD S11
ITEM "D|Dare"
ITEM "A|Avere"
diff --git a/src/ve/vetbrss.uml b/src/ve/vetbrss.uml
index c20f7fd29..bcc4249a8 100755
--- a/src/ve/vetbrss.uml
+++ b/src/ve/vetbrss.uml
@@ -443,7 +443,7 @@ END
STRING RSS_TIPOSTRA1 2
BEGIN
- PROMPT 1 17 "Tipo ora straordinaria 1 "
+ PROMPT 1 20 "Tipo ora straordinaria 1 "
USE &CIORE
INPUT CODTAB RSS_TIPOSTRA1
DISPLAY "Codice" CODTAB
@@ -455,19 +455,19 @@ END
NUMBER RSS_DOPOSTRA1 2
BEGIN
- PROMPT 41 17 "dopo ore "
+ PROMPT 41 20 "dopo ore "
FIELD R5
END
CURRENCY RSS_COSTOSTRA1 9
BEGIN
- PROMPT 59 17 "Costo "
+ PROMPT 59 20 "Costo "
FIELD R6
END
STRING RSS_TIPOSTRA2 2
BEGIN
- PROMPT 1 18 "Tipo ora straordinaria 2 "
+ PROMPT 1 21 "Tipo ora straordinaria 2 "
COPY USE RSS_TIPOSTRA1
INPUT CODTAB RSS_TIPOSTRA2
COPY DISPLAY RSS_TIPOSTRA1
@@ -478,13 +478,13 @@ END
NUMBER RSS_DOPOSTRA2 2
BEGIN
- PROMPT 41 18 "dopo ore "
+ PROMPT 41 21 "dopo ore "
FIELD R7
END
CURRENCY RSS_COSTOSTRA2 9
BEGIN
- PROMPT 59 18 "Costo "
+ PROMPT 59 21 "Costo "
FIELD R8
END
diff --git a/src/ve/vetbspp.uml b/src/ve/vetbspp.uml
index ef1f34d2e..470b68ab9 100755
--- a/src/ve/vetbspp.uml
+++ b/src/ve/vetbspp.uml
@@ -269,14 +269,14 @@ END
NUMBER SPP_GRUPPOA 3
BEGIN
- PROMPT 2 12 "Conto acquisti "
+ PROMPT 2 15 "Conto acquisti "
FIELD I3
CHECKTYPE NORMAL
END
NUMBER SPP_CONTOA 3
BEGIN
- PROMPT 22 12 ""
+ PROMPT 22 15 ""
FIELD I4
USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO=="")
INPUT GRUPPO SPP_GRUPPOA
@@ -293,7 +293,7 @@ BEGIN
NUMBER SPP_SOTTOA 6
BEGIN
- PROMPT 29 12 ""
+ PROMPT 29 15 ""
FIELD I5
USE LF_PCON SELECT SOTTOCONTO!=""
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
@@ -315,7 +315,7 @@ END
STRING SPP_DESCRCONTOA 50 35
BEGIN
- PROMPT 40 12 ""
+ PROMPT 40 15 ""
FLAG "U"
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
@@ -332,7 +332,7 @@ END
LIST SPP_TIPOSP 1 20
BEGIN
- PROMPT 2 14 "Tipologia di spesa/prestazione "
+ PROMPT 2 20 "Tipologia di spesa/prestazione "
FIELD S11[1,1]
ITEM " |Altro"
ITEM "I|Incasso"
@@ -342,7 +342,7 @@ END
STRING SPP_CODTRB 4
BEGIN
- PROMPT 2 15 "Cod. tributo "
+ PROMPT 2 21 "Cod. tributo "
FIELD S10
FLAG "U"
USE %TRB
@@ -356,7 +356,7 @@ END
STRING SPP_CODTRB1 50 22
BEGIN
- PROMPT 25 15 ""
+ PROMPT 25 21 ""
USE %TRB KEY 2
INPUT S0 SPP_CODTRB1
DISPLAY "Descrizione@50" S0
@@ -368,7 +368,7 @@ END
NUMBER SPP_CODCAUS770 2
BEGIN
- PROMPT 2 16 "Caus. 770 "
+ PROMPT 2 22 "Caus. 770 "
USE %CA7 SELECT I0==#SPP_CODTRB
INPUT CODTAB SPP_CODCAUS770
DISPLAY "Cod.caus." CODTAB
@@ -385,7 +385,7 @@ END
LISTBOX SPP_CODQUA 2 10
BEGIN
- PROMPT 20 16 "Quadro "
+ PROMPT 20 22 "Quadro "
HELP "Inserire il codice quadro"
ITEM "|" MESSAGE CLEAR,SPP_CAUSD
ITEM "LA|Quadro LA" MESSAGE ENABLE,SPP_CAUSD
@@ -397,7 +397,7 @@ END
STRING SPP_CAUSD 2
BEGIN
- PROMPT 50 16 "Causale LA "
+ PROMPT 50 22 "Causale LA "
FLAGS "U"
SHEET "Codice|Descrizione@320"
INPUT SPP_CAUSD
@@ -441,63 +441,12 @@ END
LISTBOX SPP_SEZIONE 6
BEGIN
- PROMPT 2 17 "Sezione per cooperative "
+ PROMPT 2 23 "Sezione per cooperative "
FIELD S11[5,5]
ITEM "D|Dare"
ITEM "A|Avere"
END
-STRING SPP_TIPOCAS 4
-BEGIN
- PROMPT 2 18 "Tipo Cassa Previdenziale "
- FLAGS "U"
- SHEET "Codice|Descrizione@320"
- INPUT SPP_TIPOCAS
- ITEM " | "
- ITEM "TC01|Cassa nazionale previdenza e assistenza avvocati e procuratori legali"
- ITEM "TC02|Cassa previdenza dottori commercialisti"
- ITEM "TC03|Cassa previdenza e assistenza geometri"
- ITEM "TC04|Cassa nazionale previdenza e assistenza ingegneri e architetti liberi professionisti"
- ITEM "TC05|Cassa nazionale del notariato"
- ITEM "TC06|Cassa nazionale previdenza e assistenza ragionieri e periti commerciali"
- ITEM "TC07|Ente nazionale assistenza agenti e rappresentanti di commercio (ENASARCO)"
- ITEM "TC08|Ente nazionale previdenza e assistenza consulenti del lavoro (ENPACL)"
- ITEM "TC09|Ente nazionale previdenza e assistenza medici (ENPAM)"
- ITEM "TC10|Ente nazionale previdenza e assistenza farmacisti (ENPAF)"
- ITEM "TC11|Ente nazionale previdenza e assistenza veterinari (ENPAV)"
- ITEM "TC12|Ente nazionale previdenza e assistenza impiegati dell'agricoltura (ENPAIA)"
- ITEM "TC13|Fondo previdenza impiegati imprese di spedizione e agenzie marittime"
- ITEM "TC14|Istituto nazionale previdenza giornalisti italiani (INPGI)"
- ITEM "TC15|Opera nazionale assistenza orfani sanitari italiani (ONAOSI)"
- ITEM "TC16|Cassa autonoma assistenza integrativa giornalisti italiani (CASAGIT)"
- ITEM "TC17|Ente previdenza periti industriali e periti industriali laureati (EPPI)"
- ITEM "TC18|Ente previdenza e assistenza pluricategoriale (EPAP)"
- ITEM "TC19|Ente nazionale previdenza e assistenza biologi (ENPAB)"
- ITEM "TC20|Ente nazionale previdenza e assistenza professione infermieristica (ENPAPI)"
- ITEM "TC21|Ente nazionale previdenza e assistenza psicologi (ENPAP)"
- ITEM "TC22|INPS"
- OUTPUT SPP_TIPOCAS
- FIELD S13[0,4]
- FLAGS "D"
- GROUP 4
-END
-
-BOOLEAN SPP_SOGGRIT
-BEGIN
- PROMPT 40 18 "Soggetto a ritenuta "
- FLAGS "D"
- FIELD B0
- GROUP 4
-END
-
-BOOLEAN SPP_CALCRIT
-BEGIN
- PROMPT 2 19 "Spesa rientrante nel calcolo ritenuta "
- FLAGS "D"
- FIELD B1
- GROUP 4
-END
-
ENDPAGE
PAGE "Analitica" 11 60 14
diff --git a/src/xvaga/wxinc.h b/src/xvaga/wxinc.h
index 4f575f950..c0fd60d92 100755
--- a/src/xvaga/wxinc.h
+++ b/src/xvaga/wxinc.h
@@ -10,8 +10,14 @@
#define WINVER 0x0500
#define STRICT
#define WXUSINGDLL 1
+#include
+#else
+#define _FILE_OFFSET_BITS 64
+#define _LARGE_FILES
+#define __WXGTK__
+#define GTK_NO_CHECK_CASTS
+#define _IODBC
+#include
#endif
-#include
-
-#endif
\ No newline at end of file
+#endif
diff --git a/src/xvaga/xvt.h b/src/xvaga/xvt.h
index dcbb2a9ab..e53973748 100755
--- a/src/xvaga/xvt.h
+++ b/src/xvaga/xvt.h
@@ -352,6 +352,9 @@ XVTDLL long* xvt_slist_get_data(SLIST_ELT elt);
XVTDLL SLIST_ELT xvt_slist_get_first(SLIST list);
XVTDLL SLIST_ELT xvt_slist_get_next(SLIST list, SLIST_ELT item);
+XVTDLL SLIST_ELT xvt_slist_find_str(SLIST list, const char* str); // Cerca una stringa all'interno di una SLIST
+XVTDLL BOOLEAN xvt_fsys_fupdate(const char* src, const char* dst); // Aggiorna il file dst se più vecchio di src
+
XVTDLL int xvt_str_compare_ignoring_case (const char* s1, const char* s2);
XVTDLL int xvt_str_encode(const char* text, char* cypher, int mode);
XVTDLL int xvt_str_decode(const char* cypher, char* text, int mode);
@@ -478,6 +481,8 @@ XVTDLL void xvt_win_set_handler(WINDOW win, EVENT_HANDLER eh);
XVTDLL void xvt_win_trap_pointer(WINDOW win);
XVTDLL BOOLEAN xvt_win_is_taskbar_visible();
+XVTDLL BOOLEAN xvt_win_is_taskbar_visible();
+
// Added by XVAGA
XVTDLL BOOLEAN xvt_pane_add(WINDOW parent, WINDOW pane, const char* name, int dock, int flags);
XVTDLL BOOLEAN xvt_pane_change_flags(WINDOW pane, int set, int reset);
diff --git a/src/xvaga/xvt_type.h b/src/xvaga/xvt_type.h
index 38d5f0933..db3d9f36f 100755
--- a/src/xvaga/xvt_type.h
+++ b/src/xvaga/xvt_type.h
@@ -6,6 +6,14 @@
#define TRUE 1
#endif
+#ifdef LINUX
+#define _MAX_PATH 512
+#define _MAX_EXT 6
+#define _MAX_DRIVE 6
+#define _MAX_DIR 512
+#define _MAX_FNAME 512
+#endif
+
typedef unsigned long WINDOW;
typedef unsigned int UNIT_TYPE;
typedef unsigned long ULONG;
diff --git a/src/xvaga/xvtart.cpp b/src/xvaga/xvtart.cpp
index 39186eca2..b186e7887 100755
--- a/src/xvaga/xvtart.cpp
+++ b/src/xvaga/xvtart.cpp
@@ -2,7 +2,12 @@
#include "xvt.h"
#include "xvtart.h"
+
+#ifdef __WXMSW__
#include "oswin32.h"
+#else
+#include "oslinux.h"
+#endif
#include
#include
diff --git a/src/xvaga/xvtextra.cpp b/src/xvaga/xvtextra.cpp
index bdbba532d..8e5b563b5 100755
--- a/src/xvaga/xvtextra.cpp
+++ b/src/xvaga/xvtextra.cpp
@@ -946,10 +946,26 @@ BOOLEAN xvt_print_open_page(PRINT_RCD* WXUNUSED(precp))
// Added by XVAGA
///////////////////////////////////////////////////////////
+#ifdef LINUX
+static const char * cups_file = "/etc/cups/printers.conf";
+static const char * cups_local_file = "./printers.conf";
+static const char * prcap_local_file = "./printcap";
+
+static bool is_cups()
+{
+ static int printer_system = -1;
+
+ if (printer_system < 0)
+ printer_system = xvt_fsys_file_exists(cups_file) ? 1 : 2;
+
+ return printer_system == 1;
+}
+#endif
+
SLIST xvt_print_list_devices()
{
SLIST list = xvt_slist_create();
-
+#ifdef __WXMSW__
const DWORD dwFlags = PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS;
const int level = xvt_sys_get_os_version() >= XVT_WS_WIN_NT ? 4 : 5;
DWORD dwSize = 0, dwPrinters = 0;
@@ -978,13 +994,69 @@ SLIST xvt_print_list_devices()
}
delete[] pBuffer;
}
+#else
+ if (is_cups())
+ {
+ ifstream p(cups_local_file);
+ char line[4096];
+ const char * str_to_find = "Printer";
+
+ while (p.getline(line, sizeof(line)))
+ {
+ char * s;
+ if (line[0] == '<' && line[1] != '/' &&
+ (s = strstr(line, str_to_find)) != NULL)
+ {
+ s += strlen(str_to_find);
+
+ while (isspace(*s))
+ s++;
+
+ if (*s)
+ {
+ char * l = s + strlen(s) - 1;
+
+ while (*l == '>' || isspace(*l))
+ l--;
+ *(l + 1) = '\0';
+ xvt_slist_add_at_elt(list, NULL, s, 0L);
+ }
+ }
+ }
+ }
+ else
+ {
+ ifstream p(prcap_local_file); // vedere
+ char line[4096];
+
+ while (p.getline(line, sizeof(line)))
+ {
+ if (line[0] != '#')
+ {
+ const int len = strlen(line);
+ int i;
+
+ for (i = 0; i < len; i++)
+ {
+ const char c = line[i];
+
+ if (!(isalpha(c) || isdigit(c) || isblank(c)))
+ break;
+ }
+ line[i] = '\0';
+ xvt_slist_add_at_elt(list, NULL, line, 0L);
+ }
+ }
+ }
+#endif
return list;
}
BOOLEAN xvt_print_set_default_device(const char* name)
{
BOOLEAN ok = name != NULL && *name > ' ';
+#ifdef WIN32
if (ok)
{
wxString pdev(name);
@@ -996,12 +1068,51 @@ BOOLEAN xvt_print_set_default_device(const char* name)
}
ok = ::WriteProfileString("windows", "device", pdev) != 0;
}
+#endif
return ok;
}
BOOLEAN xvt_print_get_default_device(char* name, int namesize)
{
+
+#ifdef __WXMSW__
return ::GetProfileString ("windows", "device", ",,,", name, namesize) != 0;
+#else
+ bool ok = FALSE;
+ *name = '\0';
+ if (is_cups())
+ {
+ ifstream p(cups_local_file);
+ char line[4096];
+ const char * str_to_find = "' || isspace(*l))
+ l--;
+ *(l + 1) = '\0';
+ strcpy(name, s);
+ }
+ ok = TRUE;
+ }
+ }
+ }
+ return ok;
+#endif
+
}
///////////////////////////////////////////////////////////
@@ -1011,7 +1122,7 @@ BOOLEAN xvt_print_get_default_device(char* name, int namesize)
int xvt_fsys_get_campo_stp_value(const char* name, char* value, int valsize)
{
BOOLEAN bFound = FALSE;
-
+#ifdef __WXMSW__
const char* const stpfile = "c:/campo.stp";
int p;
DIRECTORY dir;
@@ -1037,6 +1148,7 @@ int xvt_fsys_get_campo_stp_value(const char* name, char* value, int valsize)
break;
}
}
+#endif
return bFound;
}
@@ -1066,7 +1178,7 @@ const char* xvt_fsys_get_campo_ini()
xvt_fsys_get_default_dir(&dir);
xvt_fsys_convert_dir_to_str(&dir, exedir, sizeof(exedir));
-
+#ifdef WIN32
if (xvt_fsys_is_network_drive(exedir))
bFound = xvt_fsys_get_campo_stp_value("CampoIni", path, sizeof(path));
@@ -1088,7 +1200,27 @@ const char* xvt_fsys_get_campo_ini()
if (!bFound)
xvt_fsys_build_pathname(path, NULL, exedir, "campo", "ini", NULL);
+#else
+ if (!bFound)
+ {
+ char username[32];
+ char ininame[_MAX_FNAME];
+ xvt_sys_get_user_name(username, sizeof(username));
+ if (xvt_str_compare_ignoring_case(username, "root") == 0)
+ *username = '\0';
+
+ sprintf(ininame, "campo%s", username);
+ xvt_fsys_build_pathname(path, NULL, exedir, ininame, "ini", NULL);
+ if (!xvt_fsys_file_exists(path) && *username > ' ')
+ {
+ char pathstd[_MAX_PATH];
+ xvt_fsys_build_pathname(pathstd, NULL, exedir, "campo", "ini", NULL);
+ if (xvt_fsys_file_exists(pathstd))
+ wxCopyFile(pathstd, path);
+ }
+ }
+#endif
if (!xvt_fsys_file_exists(path))
{
char msg[_MAX_PATH];