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];