Merge branch 'R_10_00' of http://10.65.20.33/sirio/CAMPO/campo into R_10_00

This commit is contained in:
Simone Palacino 2019-07-03 11:11:31 +02:00
commit 890c6936dd
34 changed files with 830 additions and 452 deletions

9
cd/test/ba0848.txt Normal file
View File

@ -0,0 +1,9 @@
recdesc\f23.dir
recdesc\f21.trr
recdesc\f21.dir
recdesc\f23.trr
Aggiunta data competenza costi ricavi
Issue #15
Aggiunto tipo provvisorio "B" Bilancio costi/ricavi (Prima nota, Stampa Bilancio, Apertura Chiusura conti)

34
cd/test/ba0848a.ini Normal file
View File

@ -0,0 +1,34 @@
[Main]
Demo=0
[ba2]
File(325) = recdesc\f21.dir|X
File(326) = recdesc\f21.trr|X
File(329) = recdesc\f23.dir|X
File(330) = recdesc\f23.trr|X
Patch = 848
Versione = 21511200
[ba99]
Kill(0) = batbsce.txt|x
Kill(1) = wxmsw240.dll|x
Kill(2) = bastcms.rep|x
Kill(3) = bastcms.msk|x
Kill(4) = bastfsc.msk|x
Kill(5) = bastfsc.rep|x
Kill(6) = bastuue.msk|x
Kill(7) = bastuue.rep|x
[ba]
Data = 24-05-2018
Descrizione = Base
Dischi = 1
Moduli = sy
OEM =
Patch = 848
PostProcess = bainst -0 BA
PreProcess =
Prezzo(1) =
Prezzo(2) =
Versione = 21511200

BIN
cd/test/ba0848a1.zip Normal file

Binary file not shown.

View File

@ -1,5 +1,6 @@
cg2100a.msk cg2100a.msk
cg2fppro.msk cg2.exe
cg2100t.msk
Cambiata icona ricarica fatture su 'Fatture SDI' Cambiata icona ricarica fatture su 'Fatture SDI'
Aggiunta importazione percent. e natura iva da ini con f1 Aggiunta importazione percent. e natura iva da ini con f1
@ -8,3 +9,4 @@ Corretto calcolo ritenute in maschera fppro
Sistemate larghezze colonne maschera fppro Sistemate larghezze colonne maschera fppro
Sistemato ordinamento fatture sdi Sistemato ordinamento fatture sdi
Aggiunta ragione sociale su maschera fppro Aggiunta ragione sociale su maschera fppro
Cambiato nome maschera fppro

View File

@ -4,81 +4,83 @@ Demo=0
[cg2] [cg2]
Edit_23 = cg2 -0 Edit_23 = cg2 -0
File(154) = cg2.exe|X File(154) = cg2.exe|X
File(167) = cg2fppro.msk|X File(155) = cg2100a.msk|X
File(165) = cg2100t.msk|X
Patch = 846 Patch = 846
Versione = 21511200 Versione = 21511200
[cg99] [cg99]
Kill(0) = batbcve.msk|x Kill(0) = bastpor.rep|x
Kill(1) = bastzon.rep|x Kill(1) = batbcam.msk|x
Kill(2) = batbtra.msk|x Kill(2) = batbscc.msk|x
Kill(3) = batbndo.msk|x Kill(3) = bastnot.msk|x
Kill(4) = bastver.msk|x Kill(4) = cgtbcon.msk|x
Kill(5) = bastcfi.rep|x Kill(5) = bastdpn.msk|x
Kill(6) = batbpor.msk|x Kill(6) = bastpor.msk|x
Kill(7) = bastcam.rep|x Kill(7) = bastarb.msk|x
Kill(8) = bastleg.rep|x Kill(8) = bastmsp.rep|x
Kill(9) = batbver.msk|x Kill(9) = batbcfi.msk|x
Kill(10) = batbcam.msk|x Kill(10) = bastndo.rep|x
Kill(11) = bastpor.msk|x Kill(11) = batblia.msk|x
Kill(12) = bastcco.rep|x Kill(12) = batbdpn.msk|x
Kill(13) = batbind.msk|x Kill(13) = bastcco.msk|x
Kill(14) = bastnot.msk|x Kill(14) = batbpor.msk|x
Kill(15) = batbivd.msk|x Kill(15) = batbins.msk|x
Kill(16) = batbleg.msk|x Kill(16) = batbleg.msk|x
Kill(17) = batbcco.msk|x Kill(17) = batbvet.msk|x
Kill(18) = bastmsp.msk|x Kill(18) = batbcco.msk|x
Kill(19) = bastntb.rep|x Kill(19) = bastver.msk|x
Kill(20) = bastcco.msk|x Kill(20) = batbind.msk|x
Kill(21) = batbtit.msk|x Kill(21) = batbntb.msk|x
Kill(22) = batblia.msk|x Kill(22) = bastivd.msk|x
Kill(23) = bastscc.msk|x Kill(23) = bastcam.msk|x
Kill(24) = batbarb.msk|x Kill(24) = bastzon.rep|x
Kill(25) = bastvet.msk|x Kill(25) = batbivd.msk|x
Kill(26) = bastzon.msk|x Kill(26) = batbtra.msk|x
Kill(27) = bastesc.msk|x Kill(27) = batbtit.msk|x
Kill(28) = batbmsp.msk|x Kill(28) = bastscc.rep|x
Kill(29) = bastivd.rep|x Kill(29) = bastarb.rep|x
Kill(30) = bastndo.rep|x Kill(30) = bastesc.rep|x
Kill(31) = bastpdb.msk|x Kill(31) = bastivd.rep|x
Kill(32) = bastcve.rep|x Kill(32) = batbndo.msk|x
Kill(33) = batbvet.msk|x Kill(33) = batbinl.msk|x
Kill(34) = batbreg.msk|x Kill(34) = batblia.msk|x
Kill(35) = bastndo.msk|x Kill(35) = bastvet.msk|x
Kill(36) = bastdpn.msk|x Kill(36) = bastcfi.rep|x
Kill(37) = batblbu.msk|x Kill(37) = batbdel.msk|x
Kill(38) = bastntb.msk|x Kill(38) = cg2fppro.msk|x
Kill(39) = cgtbcon.msk|x Kill(39) = bastver.rep|x
Kill(40) = bastvet.rep|x Kill(40) = bastvet.rep|x
Kill(41) = batbdel.msk|x Kill(41) = bastntb.msk|x
Kill(42) = batbzon.msk|x Kill(42) = bastleg.msk|x
Kill(43) = bastcam.msk|x Kill(43) = batbzon.msk|x
Kill(44) = bastpdb.rep|x Kill(44) = bastnot.rep|x
Kill(45) = bastver.rep|x Kill(45) = batbnot.msk|x
Kill(46) = bastreg.msk|x Kill(46) = bastcam.rep|x
Kill(47) = bastdpn.rep|x Kill(47) = batbver.msk|x
Kill(48) = batblia.msk|x Kill(48) = batbarb.msk|x
Kill(49) = batbcfi.msk|x Kill(49) = bastndo.msk|x
Kill(50) = bastesc.rep|x Kill(50) = batbcve.msk|x
Kill(51) = bastcfi.msk|x Kill(51) = batbmsp.msk|x
Kill(52) = batbinl.msk|x Kill(52) = bastcve.msk|x
Kill(53) = bastarb.msk|x Kill(53) = bastpdb.msk|x
Kill(54) = batbscc.msk|x Kill(54) = bastreg.msk|x
Kill(55) = bastarb.rep|x Kill(55) = bastdpn.rep|x
Kill(56) = bastnot.rep|x Kill(56) = bastreg.rep|x
Kill(57) = batbnot.msk|x Kill(57) = batbesc.msk|x
Kill(58) = bastcve.msk|x Kill(58) = bastzon.msk|x
Kill(59) = batbntb.msk|x Kill(59) = batblbu.msk|x
Kill(60) = bastivd.msk|x Kill(60) = bastleg.rep|x
Kill(61) = batbins.msk|x Kill(61) = batbreg.msk|x
Kill(62) = batbpdb.msk|x Kill(62) = bastesc.msk|x
Kill(63) = bastreg.rep|x Kill(63) = bastntb.rep|x
Kill(64) = batbesc.msk|x Kill(64) = bastscc.msk|x
Kill(65) = bastpor.rep|x Kill(65) = batbpdb.msk|x
Kill(66) = bastmsp.rep|x Kill(66) = bastpdb.rep|x
Kill(67) = bastleg.msk|x Kill(67) = bastcco.rep|x
Kill(68) = batbdpn.msk|x Kill(68) = bastcve.rep|x
Kill(69) = bastscc.rep|x Kill(69) = bastcfi.msk|x
Kill(70) = bastmsp.msk|x
[cg] [cg]
Data = 01-07-2019 Data = 01-07-2019

Binary file not shown.

12
cd/test/cg0848.txt Normal file
View File

@ -0,0 +1,12 @@
cg5500b.rep
cg2.exe
cg2100c.msk
cg2100b.msk
cg2200a.msk
cg1500a.msk
cg1.exe
Aggiunta data competenza costi ricavi
Issue #15
Aggiunto tipo provvisorio "B" Bilancio costi/ricavi (Prima nota, Stampa Bilancio, Apertura Chiusura conti)

113
cd/test/cg0848a.ini Normal file
View File

@ -0,0 +1,113 @@
[Main]
Demo=0
[cg1]
File(65) = cg5500b.rep|X
Patch = 848
Versione = 21511200
[cg2]
Edit_23 = cg2 -0
File(154) = cg2.exe|X
File(156) = cg2100b.msk|X
File(157) = cg2100c.msk|X
File(167) = cg2200a.msk|X
Patch = 848
Versione = 21511200
[cg9]
Edit_19 = cg0 -0
Edit_20 = cg0 -1
Edit_26 = cg0 -4
Edit_5 = cg0 -5
File(189) = cg1.exe|X
File(201) = cg1500a.msk|X
Patch = 848
Versione = 21511200
[cg99]
Kill(0) = bastver.msk|x
Kill(1) = batbivd.msk|x
Kill(2) = bastivd.rep|x
Kill(3) = batbcco.msk|x
Kill(4) = bastzon.rep|x
Kill(5) = bastesc.rep|x
Kill(6) = batbtit.msk|x
Kill(7) = batbinl.msk|x
Kill(8) = batbtra.msk|x
Kill(9) = batbndo.msk|x
Kill(10) = batbins.msk|x
Kill(11) = batbntb.msk|x
Kill(12) = batbpor.msk|x
Kill(13) = batbind.msk|x
Kill(14) = batbvet.msk|x
Kill(15) = bastcam.msk|x
Kill(16) = batbleg.msk|x
Kill(17) = bastivd.msk|x
Kill(18) = batblia.msk|x
Kill(19) = bastndo.rep|x
Kill(20) = bastcco.msk|x
Kill(21) = batbdpn.msk|x
Kill(22) = batblbu.msk|x
Kill(23) = batbpdb.msk|x
Kill(24) = bastzon.msk|x
Kill(25) = bastscc.msk|x
Kill(26) = bastmsp.msk|x
Kill(27) = bastcco.rep|x
Kill(28) = bastpdb.rep|x
Kill(29) = bastndo.msk|x
Kill(30) = bastdpn.rep|x
Kill(31) = batbreg.msk|x
Kill(32) = batbarb.msk|x
Kill(33) = bastreg.msk|x
Kill(34) = bastleg.rep|x
Kill(35) = batbesc.msk|x
Kill(36) = bastntb.rep|x
Kill(37) = bastreg.rep|x
Kill(38) = bastesc.msk|x
Kill(39) = bastver.rep|x
Kill(40) = batbnot.msk|x
Kill(41) = batbmsp.msk|x
Kill(42) = cg2fppro.msk|x
Kill(43) = bastnot.rep|x
Kill(44) = batbcve.msk|x
Kill(45) = batbver.msk|x
Kill(46) = bastpdb.msk|x
Kill(47) = bastcam.rep|x
Kill(48) = bastcve.msk|x
Kill(49) = bastarb.rep|x
Kill(50) = bastvet.msk|x
Kill(51) = bastntb.msk|x
Kill(52) = bastscc.rep|x
Kill(53) = batblia.msk|x
Kill(54) = bastvet.rep|x
Kill(55) = batbdel.msk|x
Kill(56) = batbzon.msk|x
Kill(57) = bastcfi.rep|x
Kill(58) = bastleg.msk|x
Kill(59) = bastcfi.msk|x
Kill(60) = bastcve.rep|x
Kill(61) = batbcfi.msk|x
Kill(62) = bastmsp.rep|x
Kill(63) = batbcam.msk|x
Kill(64) = bastpor.rep|x
Kill(65) = bastdpn.msk|x
Kill(66) = cgtbcon.msk|x
Kill(67) = bastnot.msk|x
Kill(68) = batbscc.msk|x
Kill(69) = bastarb.msk|x
Kill(70) = bastpor.msk|x
[cg]
Data = 01-07-2019
Descrizione = Contabilita' Generale
Dischi = 1
Moduli = ba
OEM =
Patch = 848
PostProcess = bainst -0 CG
PreProcess =
Prezzo(1) =
Prezzo(2) =
Versione = 21511200

BIN
cd/test/cg0848a1.zip Normal file

Binary file not shown.

View File

@ -1449,7 +1449,7 @@ bool TStampa_bilanci::bil_verifica()
_mov_ap = FALSE; _mov_ap = FALSE;
//modifica del 19/06/95 //modifica del 19/06/95
movimentato = calcola(g,c,s); movimentato = calcola(g,c,s);
if (_stampa_mov_prov != 3) if (_stampa_mov_prov & 0x1)
{ {
if (movimentato) if (movimentato)
{ {
@ -1472,7 +1472,7 @@ bool TStampa_bilanci::bil_verifica()
{ {
if (_annoes != 0 && (indbil_conto == 1 || indbil_conto == 2 || indbil_conto == 5)) if (_annoes != 0 && (indbil_conto == 1 || indbil_conto == 2 || indbil_conto == 5))
{ {
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov == 2); saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov);
//modifica del 21/11/95 //modifica del 21/11/95
if (saldo_iniziale > ZERO) if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale; _saldo_ini_dare = saldo_iniziale;
@ -1502,7 +1502,7 @@ bool TStampa_bilanci::bil_verifica()
{ {
if (_annoes != 0 && (indbil_conto == 1 || indbil_conto == 2 || indbil_conto == 5)) if (_annoes != 0 && (indbil_conto == 1 || indbil_conto == 2 || indbil_conto == 5))
{ {
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov == 2); saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov);
//modifica del 21/11/95 //modifica del 21/11/95
if (saldo_iniziale > ZERO) if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale; _saldo_ini_dare = saldo_iniziale;
@ -1543,7 +1543,7 @@ bool TStampa_bilanci::bil_verifica()
{ {
movimentato = sld.ultima_immissione_verifica(_annoes,g,c,s,indbil_conto,_stampa_mov_prov); movimentato = sld.ultima_immissione_verifica(_annoes,g,c,s,indbil_conto,_stampa_mov_prov);
if (_stampa_mov_prov != 3) if (_stampa_mov_prov & 0x1)
{ {
if (movimentato) if (movimentato)
saldo_iniziale = sld.saldoini(); saldo_iniziale = sld.saldoini();
@ -1551,7 +1551,7 @@ bool TStampa_bilanci::bil_verifica()
{ {
if (indbil_conto == 1 || indbil_conto == 2 || indbil_conto == 5) if (indbil_conto == 1 || indbil_conto == 2 || indbil_conto == 5)
{ {
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,FALSE,_stampa_mov_prov == 2); saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,FALSE,_stampa_mov_prov);
if (_stampav == 1 && sld.significativo()) if (_stampav == 1 && sld.significativo())
movimentato = TRUE; movimentato = TRUE;
} }
@ -1753,10 +1753,10 @@ bool TStampa_bilanci::calcola(int g, int c, long s)
const char provvis = mov.get_char(MOV_PROVVIS); const char provvis = mov.get_char(MOV_PROVVIS);
const TDate datacomp = mov.get_date(MOV_DATACOMP); const TDate datacomp = mov.get_date(MOV_DATACOMP);
if (_stampa_mov_prov == 1 && provvis != '\0') //bilancio normale (non comprende i provvisori) if (_stampa_mov_prov == 0x1 && provvis != '\0') //bilancio normale (non comprende i provvisori)
continue; continue;
if (_stampa_mov_prov == 3 && provvis == '\0') //bilancio dei soli provvisori if (!(_stampa_mov_prov & 0x1) && provvis == '\0') //bilancio dei soli provvisori
continue; continue;
const TString& codcaus = mov.get(MOV_CODCAUS); const TString& codcaus = mov.get(MOV_CODCAUS);
@ -1853,7 +1853,7 @@ bool TStampa_bilanci::ricerca_cf(int g,int c,char tipocf,int ib, real& saldo_fin
//modifica del 19/06. Vedi appunti per capire //modifica del 19/06. Vedi appunti per capire
bool movimentato = calcola(g,c,s); bool movimentato = calcola(g,c,s);
if (_stampa_mov_prov != 3) if (_stampa_mov_prov & 0x1)
{ {
if (movimentato) if (movimentato)
{ {
@ -1879,7 +1879,7 @@ bool TStampa_bilanci::ricerca_cf(int g,int c,char tipocf,int ib, real& saldo_fin
{ {
if (_annoes != 0 && (ib == 1 || ib == 2 || ib == 5)) if (_annoes != 0 && (ib == 1 || ib == 2 || ib == 5))
{ {
saldo_iniziale += sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov==2); saldo_iniziale += sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov);
//modifica del 21/11/1995 //modifica del 21/11/1995
if (saldo_iniziale > ZERO) if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale; _saldo_ini_dare = saldo_iniziale;
@ -1909,7 +1909,7 @@ bool TStampa_bilanci::ricerca_cf(int g,int c,char tipocf,int ib, real& saldo_fin
{ {
if (_annoes != 0 && (ib == 1 || ib == 2 || ib == 5)) if (_annoes != 0 && (ib == 1 || ib == 2 || ib == 5))
{ {
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov==2); saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov);
//modifica del 21/11/1995 //modifica del 21/11/1995
if (saldo_iniziale > ZERO) if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale; _saldo_ini_dare = saldo_iniziale;
@ -1956,7 +1956,7 @@ bool TStampa_bilanci::ricerca_cf(int g,int c,char tipocf,int ib, real& saldo_fin
//modifica del 31/03/1995 //modifica del 31/03/1995
bool movimentato = sld.ultima_immissione_verifica(_annoes,g,c,s,ib,_stampa_mov_prov); bool movimentato = sld.ultima_immissione_verifica(_annoes,g,c,s,ib,_stampa_mov_prov);
if (_stampa_mov_prov != 3) if (_stampa_mov_prov & 0x1)
{ {
saldo_iniziale = sld.saldoini(); saldo_iniziale = sld.saldoini();
if (!movimentato) if (!movimentato)
@ -1967,7 +1967,7 @@ bool TStampa_bilanci::ricerca_cf(int g,int c,char tipocf,int ib, real& saldo_fin
//solo se e' un conto patrimoniale //solo se e' un conto patrimoniale
if (ib == 1 || ib == 2 || ib == 5) if (ib == 1 || ib == 2 || ib == 5)
{ {
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov==2); saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov);
movimentato = sld.significativo(); movimentato = sld.significativo();
} }
} }
@ -2331,12 +2331,12 @@ void TStampa_bilanci::leggi_clifo(const TArray& gccf)
//modifica del 19/06/95 //modifica del 19/06/95
_indbil = cerca_indbil(g,c); _indbil = cerca_indbil(g,c);
movimentato = calcola(g,c,codcf); movimentato = calcola(g,c,codcf);
if (_stampa_mov_prov != 3) if (_stampa_mov_prov & 0x1)
if (!movimentato) if (!movimentato)
if (_indbil == 1 || _indbil == 2 || _indbil == 5) if (_indbil == 1 || _indbil == 2 || _indbil == 5)
if (_annoes != 0) //cioe' se sto ragionando per competenza if (_annoes != 0) //cioe' se sto ragionando per competenza
{ {
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,codcf,false,_stampa_mov_prov==2); saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,codcf,false,_stampa_mov_prov);
if (saldo_iniziale > ZERO) if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale; _saldo_ini_dare = saldo_iniziale;
else _saldo_ini_avere = -saldo_iniziale; else _saldo_ini_avere = -saldo_iniziale;
@ -2359,11 +2359,11 @@ void TStampa_bilanci::leggi_clifo(const TArray& gccf)
if (saldi.read() == NOERR) if (saldi.read() == NOERR)
{ {
const real s = saldi.get_real(SLD_SALDO); const real s = saldi.get_real(SLD_SALDO);
if (_stampa_mov_prov != 3) if (_stampa_mov_prov & 0x1)
if (_indbil == 1 || _indbil == 2 || _indbil == 5) if (_indbil == 1 || _indbil == 2 || _indbil == 5)
if (s.is_zero() && _annoes != 0) //competenza!!! if (s.is_zero() && _annoes != 0) //competenza!!!
{ {
saldo_iniziale += sld.saldofin_esprec(_annoes,g,c,codcf,false,_stampa_mov_prov==2); saldo_iniziale += sld.saldofin_esprec(_annoes,g,c,codcf,false,_stampa_mov_prov);
//modifica del 21/11/1995 //modifica del 21/11/1995
if (saldo_iniziale > ZERO) if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale; _saldo_ini_dare = saldo_iniziale;
@ -2398,10 +2398,10 @@ void TStampa_bilanci::leggi_clifo(const TArray& gccf)
_indbil = cerca_indbil(g,c); _indbil = cerca_indbil(g,c);
movimentato = sld.ultima_immissione_verifica(anno,g,c,codcf,_indbil,_stampa_mov_prov); movimentato = sld.ultima_immissione_verifica(anno,g,c,codcf,_indbil,_stampa_mov_prov);
if (_stampa_mov_prov != 3) if (_stampa_mov_prov & 0x1)
if (!movimentato /* && _stampac!=1 */ ) if (!movimentato /* && _stampac!=1 */ )
if (_indbil == 1 || _indbil == 2 || _indbil == 5) if (_indbil == 1 || _indbil == 2 || _indbil == 5)
saldo_iniziale = sld.saldofin_esprec(anno,g,c,codcf,false,_stampa_mov_prov==2); saldo_iniziale = sld.saldofin_esprec(anno,g,c,codcf,false,_stampa_mov_prov);
if (movimentato) if (movimentato)
saldo_iniziale = sld.saldoini(); saldo_iniziale = sld.saldoini();
@ -3787,15 +3787,19 @@ bool TStampa_bilanci::set_print(int)
m.set_handler (F_DATALIM, mask_datalim); m.set_handler (F_DATALIM, mask_datalim);
m.set_handler (F_DATADA, mask_date); m.set_handler (F_DATADA, mask_date);
m.set_handler (F_DATAA, mask_date); m.set_handler (F_DATAA, mask_date);
m.set_handler (F_ANNO, mask_anno); m.set_handler (F_ANNO, mask_anno);
m.set(F_NORMALI, "X");
while (m.run() == K_ENTER) while (m.run() == K_ENTER)
{ {
_annoes = m.get_int(F_ANNO); _annoes = m.get_int(F_ANNO);
_bilancio = m.get_int(F_BILANCIO); _bilancio = m.get_int(F_BILANCIO);
_data = m.get(F_DATASTAMPA); _data = m.get(F_DATASTAMPA);
_stampa_mov_prov = m.get_int(F_STAMPAMPROV); _stampa_mov_prov = m.get_bool(F_NORMALI) ? 0x1 : 0; // qui
_quadratura = m.get_bool(F_QUADRATURA); _stampa_mov_prov |= m.get_bool(F_PROVVM) ? 0x2 : 0; // qui
_stampa_mov_prov |= m.get_bool(F_PROVVB) ? 0x4 : 0; // qui
_stampa_mov_prov |= m.get_bool(F_PROVVC) ? 0x8 : 0; // qui
_quadratura = m.get_bool(F_QUADRATURA);
_hide_clifo = m.get_bool(F_HIDE_CLIFO); _hide_clifo = m.get_bool(F_HIDE_CLIFO);
_noseparator = m.get_bool(F_SEPARATOR); _noseparator = m.get_bool(F_SEPARATOR);
#ifdef CONT_SEP #ifdef CONT_SEP
@ -3905,9 +3909,9 @@ int TStampa_bilanci::stampa_intestazione_ditta()
//_stampa_mov_provv(1=normale,2=globale,3=solo provvisori) //_stampa_mov_provv(1=normale,2=globale,3=solo provvisori)
const char* tipoprovv = ""; const char* tipoprovv = "";
if (_stampa_mov_prov == 2) if (_stampa_mov_prov > 0x1)
tipoprovv = TR("GLOBALE"); tipoprovv = TR("GLOBALE");
if (_stampa_mov_prov == 3) if (!(_stampa_mov_prov & 0x1))
tipoprovv = TR("PROVVISORIO"); tipoprovv = TR("PROVVISORIO");
//l'uso della overwrite e' una vera vaccata! //l'uso della overwrite e' una vera vaccata!
riga.overwrite (format("%s %s %s %s", TR("Partita iva"), (const char*)_paiva, TR("Codice fiscale"), (const char*)_cofi)); riga.overwrite (format("%s %s %s %s", TR("Partita iva"), (const char*)_paiva, TR("Codice fiscale"), (const char*)_cofi));

View File

@ -20,7 +20,7 @@
#define F_STAMPAC 119 #define F_STAMPAC 119
#define F_ORDINAMENTO 120 #define F_ORDINAMENTO 120
#define F_MODULO 121 #define F_MODULO 121
#define F_STAMPAMPROV 122 #define F_NORMALI 122
#define F_QUADRATURA 123 #define F_QUADRATURA 123
#define F_SEPARATOR 124 #define F_SEPARATOR 124
#define F_PICTURE 125 #define F_PICTURE 125
@ -34,8 +34,11 @@
#define F_A_SOTTOCONTO 138 #define F_A_SOTTOCONTO 138
#define F_A_DESCRIZIONE 139 #define F_A_DESCRIZIONE 139
#define F_PRINT_FULL_CODE 140 #define F_PRINT_FULL_CODE 140
#define F_PROVVM 141
#define F_PROVVB 142
#define F_PROVVC 143
#ifdef CONT_SEP #ifdef CONT_SEP
#define F_CONTSEP 141 #define F_CONTSEP 144
#endif #endif
#endif // __CG1500_H #endif // __CG1500_H

View File

@ -166,12 +166,24 @@ BEGIN
PROMPT 60 10 "" PROMPT 60 10 ""
END END
LIST F_STAMPAMPROV 15 BOOLEAN F_NORMALI
BEGIN BEGIN
PROMPT 2 11 "Bilancio " PROMPT 2 11 "Movimenti : Normali"
ITEM "1|Normale" END
ITEM "2|Globale"
ITEM "3|Solo provvisori" BOOLEAN F_PROVVM
BEGIN
PROMPT 30 11 "Provv.Manuali"
END
BOOLEAN F_PROVVB
BEGIN
PROMPT 50 11 "Provv.Bilancio"
END
BOOLEAN F_PROVVC
BEGIN
PROMPT 70 11 "Provv.Cespiti"
END END
LIST F_MODULO 1 12 LIST F_MODULO 1 12

View File

@ -46,6 +46,7 @@ public:
TDate _datadoc, _datareg; TDate _datadoc, _datareg;
TString8 _numdoc; TString8 _numdoc;
real _totale; real _totale;
long _movcoll;
TString4 _causale_originale; TString4 _causale_originale;
TipoIVA _iva_originale; TipoIVA _iva_originale;
}; };
@ -184,7 +185,10 @@ TMask* TPrimanota_application::load_mask(int n)
// Se esiste lo sheet delle rate // Se esiste lo sheet delle rate
if (is_fattura()) if (is_fattura())
{ {
m->set_handler(F_DATACOMPCR, datacompcr_handler);
TSheet_field& ps = m->sfield(FS_RATESHEET); TSheet_field& ps = m->sfield(FS_RATESHEET);
ps.set_notify(pag_notify); ps.set_notify(pag_notify);
m->set_handler(FS_RATESHEET, pag_sheet_handler); m->set_handler(FS_RATESHEET, pag_sheet_handler);
m->set_handler(F_ANNORIF, annorif_handler); m->set_handler(F_ANNORIF, annorif_handler);
@ -672,6 +676,10 @@ void TPrimanota_application::init_mask(TMask& m)
TEdit_field& rc = m.efield(F_REVCHARGE); TEdit_field& rc = m.efield(F_REVCHARGE);
rc.show(cc.iva() == iva_acquisti && cc.reverse_charge()); rc.show(cc.iva() == iva_acquisti && cc.reverse_charge());
m.efield(F_MOVCOLL).show((cc.iva() == iva_acquisti && cc.reverse_charge()) ||
(cc.iva() == iva_vendite && cc.causale_reg_iva()));
// m.efield(F_GOCOLL).show((c.iva() == iva_acquisti && c.reverse_charge()) ||
// (c.iva() == iva_vendite && c.causale_reg_iva()));
activate_split_payment(m); activate_split_payment(m);
} }
@ -841,6 +849,15 @@ bool TPrimanota_application::get_next_key(TToken_string& tmp)
else else
tmp.add(m.get(F_DATACOMP)); tmp.add(m.get(F_DATACOMP));
if (_iva != nessuna_iva)
{
tmp.add(F_DATACOMPCR); // Ricopia data competenza
if (m.field(F_DATACOMPCR).empty())
tmp.add(m.get(F_DATAREG));
else
tmp.add(m.get(F_DATACOMPCR));
}
if (_iva == iva_vendite) if (_iva == iva_vendite)
{ {
tmp.add(F_DATADOC); tmp.add(m.get(F_DATADOC)); // Ricopia data documento tmp.add(F_DATADOC); tmp.add(m.get(F_DATADOC)); // Ricopia data documento
@ -915,7 +932,11 @@ void TPrimanota_application::init_insert_mode(TMask& m)
if (_automatico->_step == 1) if (_automatico->_step == 1)
genera_automatico(_automatico->_tipo, NULL); genera_automatico(_automatico->_tipo, NULL);
else else
{
m.reset(F_DATACOMP); // Azzera quasi sempre la data di competenza m.reset(F_DATACOMP); // Azzera quasi sempre la data di competenza
if (m.find_by_id(F_DATACOMPCR))
m.reset(F_DATACOMPCR);
}
// La preservo solo per l'incasso immediato // La preservo solo per l'incasso immediato
_as400 = false; // Un movimento nuovo non puo' essere trasferito da AS400 _as400 = false; // Un movimento nuovo non puo' essere trasferito da AS400
@ -1145,7 +1166,7 @@ int TPrimanota_application::read(TMask& m)
} }
_saldi.reset(); // Azzera saldi _saldi.reset(); // Azzera saldi
_saldi.set_movprovv(_rel->curr().get_char(MOV_PROVVIS) > ' '); _saldi.set_movprovv(_rel->curr().get_char(MOV_PROVVIS));
tiposal tsal = causale().apertura() ? apertura : tiposal tsal = causale().apertura() ? apertura :
(causale().chiusura() ? chiusura : normale); (causale().chiusura() ? chiusura : normale);
_saldi.set_tipo_saldo(tsal); _saldi.set_tipo_saldo(tsal);
@ -1268,7 +1289,7 @@ void TPrimanota_application::mask2rel(const TMask& m)
const TDate datareg(m.get(F_DATAREG)); const TDate datareg(m.get(F_DATAREG));
const int annoes = m.get_int(F_ANNOES); const int annoes = m.get_int(F_ANNOES);
_saldi.set_movprovv(m.get(F_PROVVISORIO)[0] > ' '); _saldi.set_movprovv(m.get(F_PROVVISORIO)[0]);
tiposal tsal = causale().apertura() ? apertura : tiposal tsal = causale().apertura() ? apertura :
(causale().chiusura() ? chiusura : normale); (causale().chiusura() ? chiusura : normale);
_saldi.set_tipo_saldo(tsal); _saldi.set_tipo_saldo(tsal);
@ -1467,8 +1488,49 @@ bool TPrimanota_application::has_tot_doc(TToken_string& fppro_keys)
return tot.full() && real(tot) != 0; return tot.full() && real(tot) != 0;
} }
int TPrimanota_application::controlli_f1(const TMask& m) void TPrimanota_application::find_movcoll(const long numreg)
{ {
const TCausale& cau = cached_causale(_rel->file().get(MOV_CODCAUS), _rel->file().get_int(MOV_ANNOES));
const TString4 cau_reg = cau.causale_reg_iva();
TMask * m = mask(CGMaskType::_iva);
TToken_string key(m->get(F_CLIFO)); key.add(m->get_long(F_CODCLIFOR));
const long codcli = cache().get(LF_CLIFO, key).get_long(CLI_CODCFASS);
TString query("USE ");
query << LF_MOV << " KEY 1 SELECT " << MOV_CODCAUS << "==\"" << cau_reg << "\"\nFROM " << MOV_NUMREG << "==" << numreg;
TISAM_recordset mov(query);
long movcoll = 0L;
for (bool ok = mov.move_first(); ok ; ok = mov.move_next())
{
TRectype& curr = (TRectype&) mov.cursor()->curr();
const long movcoll_found = curr.get_long(MOV_MOVCOLL);
if ((curr.get_long(MOV_CODCF) == codcli) && ((movcoll_found == 0L) || (movcoll_found == numreg)))
{
movcoll = mov.get(MOV_NUMREG).as_int();
curr.put(MOV_MOVCOLL, numreg);
curr.rewrite(TLocalisamfile(LF_MOV));
break;
}
}
if (movcoll != 0L)
m->set(F_MOVCOLL, movcoll);
}
void TPrimanota_application::set_movcoll(const long movcoll, const long numreg)
{
TRectype mov(LF_MOV);
mov.put(MOV_NUMREG, movcoll);
if (mov.read(TLocalisamfile(LF_MOV)) == NOERR)
{
mov.put(MOV_MOVCOLL, numreg);
const int err = mov.rewrite(TLocalisamfile(LF_MOV));
}
}
int TPrimanota_application::controlli_f1(const TMask& m){
if (m.find_by_id(F_PROKEY) != NULL && m.get(F_PROKEY).full() && has_f1_db((TMask*)&m) && fp_db().sq_is_connect() && check_causale(m.get(F_CODCAUS))) if (m.find_by_id(F_PROKEY) != NULL && m.get(F_PROKEY).full() && has_f1_db((TMask*)&m) && fp_db().sq_is_connect() && check_causale(m.get(F_CODCAUS)))
{ {
TToken_string keys(m.get(F_PROKEY), ';'); TToken_string keys(m.get(F_PROKEY), ';');
@ -1522,8 +1584,17 @@ int TPrimanota_application::write(const TMask& m)
} }
const int err = _rel->write(true); const int err = _rel->write(true);
if (err == NOERR) if (err == NOERR)
{ {
if (cached_causale(_rel->file().get(MOV_CODCAUS), _rel->file().get_int(MOV_ANNOES)).regolarizzazione())
{
const long movcoll = _rel->file().get_long(MOV_MOVCOLL);
const long numreg = _rel->file().get_long(MOV_NUMREG);
if (movcoll != 0L)
set_movcoll(movcoll, numreg);
}
write_fppro(); write_fppro();
_saldi.registra(); _saldi.registra();
@ -1579,7 +1650,7 @@ int TPrimanota_application::write(const TMask& m)
if (tipauto <= 1) if (tipauto <= 1)
{ {
causauto = causale().causale_collegata(); causauto = causale().causale_collegata();
if (cached_causale(causauto, causale().reg().year()).ril_fat_em_ric()) if (causauto.full() && cached_causale(causauto, causale().reg().year()).ril_fat_em_ric())
tipauto = 4; tipauto = 4;
} }
if (tipauto <= 0) if (tipauto <= 0)
@ -1609,6 +1680,13 @@ int TPrimanota_application::write(const TMask& m)
int TPrimanota_application::rewrite(const TMask& m) int TPrimanota_application::rewrite(const TMask& m)
{ {
if (cached_causale(_rel->file().get(MOV_CODCAUS), _rel->file().get_int(MOV_ANNOES)).reverse_charge())
{
const long movcoll = m.get_long(F_MOVCOLL);
if (movcoll == 0L)
find_movcoll(_rel->file().get_long(MOV_NUMREG));
}
mask2rel(m); mask2rel(m);
switch (controlli_f1(m)) // Solo con F1 switch (controlli_f1(m)) // Solo con F1
@ -1619,7 +1697,7 @@ int TPrimanota_application::rewrite(const TMask& m)
return _isnowarning; return _isnowarning;
default: case pro_noerr: break; default: case pro_noerr: break;
} }
const int err = _rel->rewrite(true); const int err = _rel->rewrite(true);
if (err == NOERR) if (err == NOERR)
{ {
@ -1770,6 +1848,7 @@ void TPrimanota_application::genera_automatico(int tipo, const char* causimm)
if (_automatico->_tipo == 2) if (_automatico->_tipo == 2)
{ {
_automatico->_totale += m.get_real(F_REVCHARGE) + m.get_real(F_RITFIS); _automatico->_totale += m.get_real(F_REVCHARGE) + m.get_real(F_RITFIS);
_automatico->_movcoll = m.get_long(F_NUMREG);
_automatico->_codiva = m.get(F_CODIVA); _automatico->_codiva = m.get(F_CODIVA);
if (_automatico->_codiva.blank() && _rel->iva_items() > 0) if (_automatico->_codiva.blank() && _rel->iva_items() > 0)
_automatico->_codiva = _rel->iva(0).get(RMI_CODIVA); _automatico->_codiva = _rel->iva(0).get(RMI_CODIVA);
@ -1847,6 +1926,7 @@ void TPrimanota_application::genera_automatico(int tipo, const char* causimm)
m.set(F_CODCLIFOR, clnt); m.set(F_CODCLIFOR, clnt);
} }
m.set(F_TOTALE, _automatico->_totale); // Imposta il totale documento e ... m.set(F_TOTALE, _automatico->_totale); // Imposta il totale documento e ...
m.set(F_MOVCOLL, _automatico->_movcoll); // Imposta il movimenti collegato e ...
m.set(F_CODIVA, _automatico->_codiva, true); // ... scatena creazione prima riga IVA m.set(F_CODIVA, _automatico->_codiva, true); // ... scatena creazione prima riga IVA
if (TRelation_application::is_transaction()) if (TRelation_application::is_transaction())
m.send_key(K_CTRL+'R', 0); m.send_key(K_CTRL+'R', 0);

View File

@ -22,6 +22,7 @@
#define F_RITFATT 231 #define F_RITFATT 231
#define F_PROKEY 232 #define F_PROKEY 232
#define F_COLFPPRO 233 #define F_COLFPPRO 233
#define F_DATACOMPCR 234
#define F_CLIFO 128 #define F_CLIFO 128
#define F_CODCLIFOR 151 #define F_CODCLIFOR 151
@ -88,6 +89,8 @@
#define F_SOTTOCONTO 182 #define F_SOTTOCONTO 182
#define F_SALDOCONTO 183 #define F_SALDOCONTO 183
#define F_REVCHARGE 184 #define F_REVCHARGE 184
#define F_MOVCOLL 185
#define F_GOCOLL 186
#define F_SHEETCG 190 #define F_SHEETCG 190
#define F_SHEETIVA 191 #define F_SHEETIVA 191

View File

@ -75,13 +75,15 @@ BEGIN
MESSAGE COPY,K_DESCRCAUS MESSAGE COPY,K_DESCRCAUS
END END
LIST F_PROVVISORIO 1 24 LIST F_PROVVISORIO 1 28
BEGIN BEGIN
PROMPT 1 5 "Movimento provvisorio " PROMPT 1 5 "Mov.provvisorio "
FIELD PROVVIS FIELD PROVVIS
ITEM " |No (movimento normale)" ITEM " |No (movimento normale)"
ITEM "P|Si (cancellabile)" ITEM "P|Si (cancellabile)"
ITEM "C|Cespiti" ITEM "N|Si (Non cancellabile)"
ITEM "B|Si (Bilancio costi/ricavi)"
ITEM "C|Si (Cespiti)"
END END
STRING F_TIPODOC 2 STRING F_TIPODOC 2

View File

@ -85,9 +85,16 @@ BEGIN
FIELD REG FIELD REG
END END
DATE F_DATACOMPCR
BEGIN
PROMPT 1 3 "Data comp.c/r "
FIELD DATACOMPCR
FLAGS "G"
END
STRING F_CODCAUS 3 STRING F_CODCAUS 3
BEGIN BEGIN
PROMPT 1 3 "Causale " PROMPT 1 4 "Causale "
FLAGS "UZ" FLAGS "UZ"
FIELD CODCAUS FIELD CODCAUS
USE LF_CAUSALI SELECT REG!="" USE LF_CAUSALI SELECT REG!=""
@ -107,7 +114,7 @@ END
STRING F_DESCRCAUS 50 STRING F_DESCRCAUS 50
BEGIN BEGIN
PROMPT 25 3 "" PROMPT 25 4 ""
USE LF_CAUSALI KEY 2 SELECT REG!="" USE LF_CAUSALI KEY 2 SELECT REG!=""
INPUT DESCR F_DESCRCAUS INPUT DESCR F_DESCRCAUS
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
@ -122,13 +129,13 @@ END
STRING F_NUMDOCEXT 50 STRING F_NUMDOCEXT 50
BEGIN BEGIN
PROMPT 1 4 "Numero documento esteso " PROMPT 1 5 "Numero documento esteso "
FIELD NUMDOCEXT FIELD NUMDOCEXT
END END
STRING F_NUMDOC 7 STRING F_NUMDOC 7
BEGIN BEGIN
PROMPT 1 5 "Documento n. " PROMPT 1 6 "Documento n. "
FIELD NUMDOC FIELD NUMDOC
FLAGS "U" FLAGS "U"
WARNING "La causale o il saldaconto richiedono il numero documento" WARNING "La causale o il saldaconto richiedono il numero documento"
@ -136,7 +143,7 @@ END
DATE F_DATADOC DATE F_DATADOC
BEGIN BEGIN
PROMPT 27 5 "Data documento " PROMPT 27 6 "Data documento "
FIELD DATADOC FIELD DATADOC
WARNING "Inserire una data documento non superiore alla data dell'operazione" WARNING "Inserire una data documento non superiore alla data dell'operazione"
VALIDATE DATE_CMP_FUNC <= F_DATAREG VALIDATE DATE_CMP_FUNC <= F_DATAREG
@ -144,37 +151,38 @@ END
STRING F_TIPODOC 2 STRING F_TIPODOC 2
BEGIN BEGIN
PROMPT 56 5 "Tipo " PROMPT 56 6 "Tipo "
FIELD TIPODOC FIELD TIPODOC
FLAGS "D" FLAGS "D"
END END
BUTTON F_LINKDOC 3 1 BUTTON F_LINKDOC 3 1
BEGIN BEGIN
PROMPT 73 5 "Doc." PROMPT 73 6 "Doc."
END END
LIST F_SOLAIVA 1 3 LIST F_SOLAIVA 1 3
BEGIN BEGIN
PROMPT 1 6 "Movimento di sola IVA " PROMPT 1 7 "Movimento di sola IVA "
ITEM " |No" ITEM " |No"
ITEM "X|Si" ITEM "X|Si"
END END
LIST F_PROVVISORIO 1 22 LIST F_PROVVISORIO 1 28
BEGIN BEGIN
PROMPT 31 6 "Movimento provvisorio " PROMPT 31 7 "Mov.provvisorio "
FIELD PROVVIS FIELD PROVVIS
ITEM " |No (movimento normale)" ITEM " |No (movimento normale)"
ITEM "P|Si (cancellabile)" ITEM "P|Si (cancellabile)"
ITEM "N|Si (Non cancellabile)" ITEM "N|Si (Non cancellabile)"
ITEM "C|Cespiti" ITEM "B|Si (Bilancio costi/ricavi)"
ITEM "C|Si (Cespiti)"
FLAGS "DG" FLAGS "DG"
END END
STRING F_DESCAGG 5 6 STRING F_DESCAGG 5 6
BEGIN BEGIN
PROMPT 1 7 "Descrizione " PROMPT 1 8 "Descrizione "
FLAGS "UZ" FLAGS "UZ"
USE %DPN USE %DPN
INPUT CODTAB F_DESCAGG INPUT CODTAB F_DESCAGG
@ -187,7 +195,7 @@ END
STRING F_DESCR 50 STRING F_DESCR 50
BEGIN BEGIN
PROMPT 25 7 "" PROMPT 25 8 ""
FIELD DESCR FIELD DESCR
USE %DPN KEY 2 USE %DPN KEY 2
INPUT S0 F_DESCR INPUT S0 F_DESCR
@ -198,13 +206,13 @@ END
NUMBER F_PROTIVA 6 NUMBER F_PROTIVA 6
BEGIN BEGIN
PROMPT 1 8 "Protocollo IVA " PROMPT 1 9 "Protocollo IVA "
FIELD PROTIVA FIELD PROTIVA
END END
NUMBER F_RIEPILOGO 6 NUMBER F_RIEPILOGO 6
BEGIN BEGIN
PROMPT 25 8 "Riepilogo al n." PROMPT 25 9 "Riepilogo al n."
FIELD UPROTIVA FIELD UPROTIVA
NUM_EXPR {(#F_RIEPILOGO==0)||(#F_RIEPILOGO>=#F_PROTIVA)} NUM_EXPR {(#F_RIEPILOGO==0)||(#F_RIEPILOGO>=#F_PROTIVA)}
WARNING "Inserire un riepilogo non inferiore al protocollo IVA (Obbigatorio se il cliente/fornitore ha codice inserimento in allegati uguale a 3)" WARNING "Inserire un riepilogo non inferiore al protocollo IVA (Obbigatorio se il cliente/fornitore ha codice inserimento in allegati uguale a 3)"
@ -212,14 +220,14 @@ END
LIST F_DIFFERITA 1 19 LIST F_DIFFERITA 1 19
BEGIN BEGIN
PROMPT 48 8 "Liquid. " PROMPT 48 9 "Liquid. "
ITEM " |periodo in corso" ITEM " |periodo in corso"
ITEM "X|periodo precedente" ITEM "X|periodo precedente"
END END
NUMBER F_CODCLIFOR 6 NUMBER F_CODCLIFOR 6
BEGIN BEGIN
PROMPT 1 9 "Cliente " PROMPT 1 10 "Cliente "
FIELD CODCF FIELD CODCF
GROUP 1 GROUP 1
USE LF_CLIFO USE LF_CLIFO
@ -244,7 +252,7 @@ END
STRING F_RAGSOCCF 50 STRING F_RAGSOCCF 50
BEGIN BEGIN
PROMPT 25 9 "" PROMPT 25 10 ""
GROUP 2 GROUP 2
USE LF_CLIFO KEY 2 USE LF_CLIFO KEY 2
INPUT TIPOCF F_CLIFO SELECT INPUT TIPOCF F_CLIFO SELECT
@ -262,7 +270,7 @@ END
STRING F_COFI 16 STRING F_COFI 16
BEGIN BEGIN
PROMPT 1 10 "C.F. " PROMPT 1 11 "C.F. "
GROUP 1 GROUP 1
USE LF_CLIFO KEY 4 USE LF_CLIFO KEY 4
INPUT TIPOCF F_CLIFO SELECT INPUT TIPOCF F_CLIFO SELECT
@ -279,7 +287,7 @@ END
STRING F_PIVA 12 STRING F_PIVA 12
BEGIN BEGIN
PROMPT 26 10 "P.I. " PROMPT 26 11 "P.I. "
GROUP 1 GROUP 1
USE LF_CLIFO KEY 5 USE LF_CLIFO KEY 5
INPUT TIPOCF F_CLIFO SELECT INPUT TIPOCF F_CLIFO SELECT
@ -297,7 +305,7 @@ END
STRING F_STATOPAIV 2 STRING F_STATOPAIV 2
BEGIN BEGIN
PROMPT 46 10 "" PROMPT 46 11 ""
FLAGS "U" FLAGS "U"
USE %SCE USE %SCE
INPUT CODTAB F_STATOPAIV INPUT CODTAB F_STATOPAIV
@ -309,7 +317,7 @@ END
STRING F_RICALT 30 18 STRING F_RICALT 30 18
BEGIN BEGIN
PROMPT 52 10 "Alt. " PROMPT 52 11 "Alt. "
USE LF_CLIFO KEY 6 USE LF_CLIFO KEY 6
INPUT TIPOCF F_CLIFO SELECT INPUT TIPOCF F_CLIFO SELECT
INPUT RICALT F_RICALT INPUT RICALT F_RICALT
@ -327,13 +335,13 @@ END
BUTTON F_OCCASEDIT 50 BUTTON F_OCCASEDIT 50
BEGIN BEGIN
PROMPT 1 10 "Dati del cliente o fornitore occasionale" PROMPT 1 11 "Dati del cliente o fornitore occasionale"
FLAGS "H" FLAGS "H"
END END
STRING F_CODPAG 4 STRING F_CODPAG 4
BEGIN BEGIN
PROMPT 1 11 "Codice Pagamento " PROMPT 1 12 "Codice Pagamento "
FIELD CODPAG FIELD CODPAG
FLAGS "U#" FLAGS "U#"
USE %CPG USE %CPG
@ -349,7 +357,7 @@ END
STRING F_DESPAG 50 STRING F_DESPAG 50
BEGIN BEGIN
PROMPT 25 11 "" PROMPT 25 12 ""
USE %CPG KEY 2 USE %CPG KEY 2
INPUT S0 F_DESPAG INPUT S0 F_DESPAG
DISPLAY "Descrizione@60" S0 DISPLAY "Descrizione@60" S0
@ -362,7 +370,7 @@ END
LIST F_CLIFO 1 10 LIST F_CLIFO 1 10
BEGIN BEGIN
PROMPT 1 12 "Tipo " PROMPT 1 13 "Tipo "
ITEM "|Conto" ITEM "|Conto"
ITEM "C|Cliente" ITEM "C|Cliente"
ITEM "F|Fornitore" ITEM "F|Fornitore"
@ -372,7 +380,7 @@ END
NUMBER F_BOLLACODCLI 6 NUMBER F_BOLLACODCLI 6
BEGIN BEGIN
PROMPT 1 12 "Forn. collegato " PROMPT 1 13 "Forn. collegato "
FIELD CFBOLLADOG FIELD CFBOLLADOG
USE LF_CLIFO USE LF_CLIFO
INPUT TIPOCF "F" INPUT TIPOCF "F"
@ -392,7 +400,7 @@ END
STRING F_BOLLARAGCLI 50 47 STRING F_BOLLARAGCLI 50 47
BEGIN BEGIN
PROMPT 28 12 "" PROMPT 28 13 ""
USE LF_CLIFO KEY 2 USE LF_CLIFO KEY 2
INPUT TIPOCF "F" INPUT TIPOCF "F"
INPUT RAGSOC F_BOLLARAGCLI INPUT RAGSOC F_BOLLARAGCLI
@ -412,7 +420,7 @@ END
STRING SK_VALUTA 3 STRING SK_VALUTA 3
BEGIN BEGIN
PROMPT 1 13 "Valuta " PROMPT 1 14 "Valuta "
FIELD CODVAL FIELD CODVAL
FLAGS "UZ" FLAGS "UZ"
GROUP 3 GROUP 3
@ -427,7 +435,7 @@ END
DATE SK_DATACAMBIO DATE SK_DATACAMBIO
BEGIN BEGIN
PROMPT 18 13 "Data cambio " PROMPT 18 14 "Data cambio "
FIELD DATACAM FIELD DATACAM
FLAGS "R" FLAGS "R"
USE CAM USE CAM
@ -446,7 +454,7 @@ END
NUMBER SK_CAMBIO 15 6 NUMBER SK_CAMBIO 15 6
BEGIN BEGIN
PROMPT 44 13 "Cambio " PROMPT 44 14 "Cambio "
FIELD CAMBIO FIELD CAMBIO
FLAGS "RU" FLAGS "RU"
GROUP 3 GROUP 3
@ -457,13 +465,13 @@ END
CURRENCY F_TOTALE 18 CURRENCY F_TOTALE 18
BEGIN BEGIN
PROMPT 1 14 "Totale documento " PROMPT 1 15 "Totale documento "
FIELD TOTDOC FIELD TOTDOC
END END
CURRENCY SK_TOTDOCVAL 18 CURRENCY SK_TOTDOCVAL 18
BEGIN BEGIN
PROMPT 38 14 "in valuta " PROMPT 38 15 "in valuta "
FIELD TOTDOCVAL FIELD TOTDOCVAL
GROUP 3 GROUP 3
VALIDATE REQIF_FUNC 1 F_TOTALE VALIDATE REQIF_FUNC 1 F_TOTALE
@ -472,7 +480,7 @@ END
STRING F_CODIVA 4 STRING F_CODIVA 4
BEGIN BEGIN
PROMPT 67 14 "IVA " PROMPT 67 15 "IVA "
FLAGS "U" FLAGS "U"
USE %IVA USE %IVA
INPUT CODTAB F_CODIVA INPUT CODTAB F_CODIVA
@ -488,25 +496,39 @@ END
CURRENCY F_RITFIS 18 CURRENCY F_RITFIS 18
BEGIN BEGIN
PROMPT 1 15 "Ritenute fiscali " PROMPT 1 16 "Ritenute fiscali "
FIELD RITFIS FIELD RITFIS
END END
CURRENCY F_RITSOC 18 CURRENCY F_RITSOC 18
BEGIN BEGIN
PROMPT 1 16 "Ritenute sociali " PROMPT 1 17 "Ritenute sociali "
FIELD RITSOC FIELD RITSOC
END END
CURRENCY F_REVCHARGE 18 CURRENCY F_REVCHARGE 18
BEGIN BEGIN
PROMPT 1 17 "Reverse charge " PROMPT 1 18 "Reverse charge "
FIELD REVCHARGE FIELD REVCHARGE
END END
NUMBER F_MOVCOLL 7
BEGIN
PROMPT 40 18 "Mov.collegato"
WARNING "Movimento collegato reverse charge"
FIELD MOVCOLL
FLAGS "HDG"
END
BUTTON F_GOCOLL 10 1
BEGIN
PROMPT 64 18 "Mov.Coll."
FLAGS "HDG"
END
DATE F_DATA74TER DATE F_DATA74TER
BEGIN BEGIN
PROMPT 52 15 "Data 74/ter " PROMPT 52 16 "Data 74/ter "
WARNING "E' richiesta la data del 74/ter" WARNING "E' richiesta la data del 74/ter"
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FIELD DATA74TER FIELD DATA74TER
@ -514,14 +536,14 @@ END
BOOLEAN F_IVAXCASSA BOOLEAN F_IVAXCASSA
BEGIN BEGIN
PROMPT 1 18 "IVA per cassa" PROMPT 1 20 "IVA per cassa"
FIELD IVAXCASSA FIELD IVAXCASSA
MODULE IC MODULE IC
END END
BOOLEAN F_LIQDIFF BOOLEAN F_LIQDIFF
BEGIN BEGIN
PROMPT 25 18 "Liquidazione differita" PROMPT 25 20 "Liquidazione differita"
WARNING "Data di incasso per liquidazione differita" WARNING "Data di incasso per liquidazione differita"
FIELD LIQDIFF FIELD LIQDIFF
MESSAGE FALSE CLEAR,F_DATAINC MESSAGE FALSE CLEAR,F_DATAINC
@ -531,7 +553,7 @@ END
LIST F_SPLITPAY 1 2 LIST F_SPLITPAY 1 2
BEGIN BEGIN
PROMPT 51 18 "Scissione pagamenti " PROMPT 51 20 "Scissione pagamenti "
FIELD SPLITPAY FIELD SPLITPAY
ITEM "| " ITEM "| "
ITEM "S|Si" ITEM "S|Si"
@ -541,28 +563,28 @@ END
DATE F_DATAINC DATE F_DATAINC
BEGIN BEGIN
PROMPT 52 17 "Data incasso " PROMPT 52 19 "Data incasso "
WARNING "Data di incasso per liquidazione differita" WARNING "Data di incasso per liquidazione differita"
FIELD DATAINC FIELD DATAINC
END END
NUMBER F_ANNORIF 4 NUMBER F_ANNORIF 4
BEGIN BEGIN
PROMPT 48 16 "Rif.partita " PROMPT 48 17 "Rif.partita "
FIELD LF_PARTITE->ANNO FIELD LF_PARTITE->ANNO
FLAGS "U" FLAGS "U"
END END
STRING F_NUMRIF 7 STRING F_NUMRIF 7
BEGIN BEGIN
PROMPT 66 16 "/ " PROMPT 66 17 "/ "
FIELD LF_PARTITE->NUMPART FIELD LF_PARTITE->NUMPART
FLAGS "U#" FLAGS "U#"
END END
STRING F_VALUTAINTRA 3 STRING F_VALUTAINTRA 3
BEGIN BEGIN
PROMPT 1 19 "Cambio intracom. " PROMPT 1 21 "Cambio intracom. "
FIELD CODVALI FIELD CODVALI
FLAGS "UZ" FLAGS "UZ"
GROUP 4 GROUP 4
@ -580,7 +602,7 @@ END
NUMBER F_CAMBIOINTRA 15 6 NUMBER F_CAMBIOINTRA 15 6
BEGIN BEGIN
PROMPT 25 19 "" PROMPT 25 21 ""
FIELD CAMBIOI FIELD CAMBIOI
FLAGS "U" FLAGS "U"
GROUP 4 GROUP 4
@ -589,20 +611,20 @@ END
DATE F_DATAINTRA DATE F_DATAINTRA
BEGIN BEGIN
PROMPT 43 19 "Data competenza intra " PROMPT 43 21 "Data competenza intra "
FIELD DATACOMPI FIELD DATACOMPI
END END
CURRENCY F_CORRISPETTIVO 18 CURRENCY F_CORRISPETTIVO 18
BEGIN BEGIN
PROMPT 1 20 "Corrispettivo " PROMPT 1 22 "Corrispettivo "
FIELD CORRLIRE FIELD CORRLIRE
GROUP 4 GROUP 4
END END
CURRENCY F_CORRVALUTA 18 CURRENCY F_CORRVALUTA 18
BEGIN BEGIN
PROMPT 39 20 "Corrispet. valuta " PROMPT 39 22 "Corrispet. valuta "
FIELD CORRVALUTA FIELD CORRVALUTA
GROUP 4 GROUP 4
VALIDATE REQIF_FUNC 1 F_VALUTAINTRA VALIDATE REQIF_FUNC 1 F_VALUTAINTRA
@ -617,7 +639,7 @@ END
STRING F_PROKEY 80 STRING F_PROKEY 80
BEGIN BEGIN
PROMPT 1 19 "db key" PROMPT 1 20 "db key"
HELP "Chiave database" HELP "Chiave database"
FIELD KEYFPPRO FIELD KEYFPPRO
FLAGS "H" FLAGS "H"
@ -625,7 +647,7 @@ END
BOOLEAN F_RITFATT BOOLEAN F_RITFATT
BEGIN BEGIN
PROMPT 1 21 "Fattura in ritardo " PROMPT 1 23 "Fattura in ritardo "
FIELD RITFATT FIELD RITFATT
END END
@ -638,7 +660,7 @@ END
#endif #endif
STRING NP_CONTSEP 6 STRING NP_CONTSEP 6
BEGIN BEGIN
PROMPT 1 22 "Cont. separata " PROMPT 1 23 "Cont. separata "
USE &NPENT USE &NPENT
INPUT CODTAB NP_CONTSEP INPUT CODTAB NP_CONTSEP
DISPLAY "Codice@6" CODTAB DISPLAY "Codice@6" CODTAB
@ -651,7 +673,7 @@ END
STRING NP_DESCONTSEP 50 STRING NP_DESCONTSEP 50
BEGIN BEGIN
PROMPT 25 22 "" PROMPT 25 24 ""
USE &NPENT KEY 2 USE &NPENT KEY 2
INPUT S0 NP_DESCONTSEP INPUT S0 NP_DESCONTSEP
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0

View File

@ -2328,12 +2328,17 @@ bool TPrimanota_application::caus_modify_handler(TMask_field& f, KEY key)
TString4 provv; provv << c.provvisorio(); TString4 provv; provv << c.provvisorio();
m.set(F_PROVVISORIO, provv); m.set(F_PROVVISORIO, provv);
if (c.iva() != nessuna_iva && mask_ok) if (c.iva() != nessuna_iva && mask_ok)
{
m.set(F_SOLAIVA, c.soloiva() ? "X" : " "); m.set(F_SOLAIVA, c.soloiva() ? "X" : " ");
m.efield(F_REVCHARGE).show(c.iva() == iva_acquisti && c.reverse_charge());
a.activate_split_payment(m);
}
} }
if (c.iva() != nessuna_iva && mask_ok)
{
m.efield(F_REVCHARGE).show(c.iva() == iva_acquisti && c.reverse_charge());
m.efield(F_MOVCOLL).show((c.iva() == iva_acquisti && c.reverse_charge()) ||
(c.iva() == iva_vendite && c.causale_reg_iva()));
// m.efield(F_GOCOLL).show((c.iva() == iva_acquisti && c.reverse_charge()) ||
// (c.iva() == iva_vendite && c.causale_reg_iva()));
a.activate_split_payment(m);
}
// Se la causale ha come tipo documento una bolla doganale, se si abilito i campi per collegare il fornitore // Se la causale ha come tipo documento una bolla doganale, se si abilito i campi per collegare il fornitore
if(m.find_by_id(F_BOLLACODCLI) != NULL) if(m.find_by_id(F_BOLLACODCLI) != NULL)
{ {
@ -2544,10 +2549,32 @@ bool TPrimanota_application::datacomp_handler(TMask_field& f, KEY key)
return f.error_box(FR("%s non appartiene a nessun esercizio"), data); return f.error_box(FR("%s non appartiene a nessun esercizio"), data);
} }
} }
return true; return true;
} }
// Handler of the F_DATACOMP field on the modify mask
// Certified 90%
bool TPrimanota_application::datacompcr_handler(TMask_field& f, KEY key)
{
TMask& m = f.mask();
if (key == K_ENTER)
{
const TDate dr(m.get(F_DATAREG)); // Data operazione
TDate datacompcr(f.get());
if (datacompcr.empty())
{
f.set(dr);
datacompcr = dr;
}
if (datacompcr > dr)
return f.message_box(TR("La data di competenze costi/ricavi maggiore di %s"), dr.stringa());
}
return true;
}
// Handler of the F_DATA74TER field on the modify mask // Handler of the F_DATA74TER field on the modify mask
// Certified 90% // Certified 90%
bool TPrimanota_application::data74ter_handler(TMask_field& f, KEY key) bool TPrimanota_application::data74ter_handler(TMask_field& f, KEY key)

View File

@ -80,7 +80,7 @@ class TPrimanota_application : public TRelation_application
bool _sal_dirty; // Il saldaconto e' stato "toccato"? bool _sal_dirty; // Il saldaconto e' stato "toccato"?
TipoIVA _iva; // Tipo di IVA corrente TipoIVA _iva; // Tipo di IVA corrente
TCausale* _causale; // Causale corrente TCausale * _causale; // Causale corrente
TLibro_giornale* _giornale; // Libro giornale corrente TLibro_giornale* _giornale; // Libro giornale corrente
long _lastreg; // Numero ultima registrazione long _lastreg; // Numero ultima registrazione
@ -118,8 +118,9 @@ class TPrimanota_application : public TRelation_application
static void check_fppro_fields(TMask& m); static void check_fppro_fields(TMask& m);
static bool caus_modify_handler(TMask_field& f, KEY key); static bool caus_modify_handler(TMask_field& f, KEY key);
static bool datareg_handler(TMask_field& f, KEY key); static bool datareg_handler(TMask_field& f, KEY key);
static bool datacomp_handler(TMask_field& f, KEY key); static bool datacomp_handler(TMask_field& f, KEY key);
static bool data74ter_handler(TMask_field& f, KEY key); static bool datacompcr_handler(TMask_field& f, KEY key);
static bool data74ter_handler(TMask_field& f, KEY key);
static bool datadoc_handler(TMask_field& f, KEY key); static bool datadoc_handler(TMask_field& f, KEY key);
static bool numdoc_handler(TMask_field& f, KEY key); static bool numdoc_handler(TMask_field& f, KEY key);
static bool ndocext_handler(TMask_field& f, KEY key); static bool ndocext_handler(TMask_field& f, KEY key);
@ -251,7 +252,9 @@ protected: // TRelation_application
virtual bool is_transaction() const; virtual bool is_transaction() const;
virtual bool get_next_key(TToken_string& key); virtual bool get_next_key(TToken_string& key);
virtual int read(TMask& m); virtual int read(TMask& m);
virtual int write(const TMask& m); void find_movcoll(const long numreg);
void set_movcoll(const long movcoll, const long numreg);
virtual int write(const TMask& m);
virtual int rewrite(const TMask& m); virtual int rewrite(const TMask& m);
virtual bool remove(); virtual bool remove();
virtual void write_enable(bool) {} virtual void write_enable(bool) {}
@ -385,7 +388,7 @@ public:
void reset_colors(); void reset_colors();
real calcola_saldo() const; real calcola_saldo() const;
TCausale& causale() const { return *_causale; } TCausale& causale() const { return * _causale; }
TPartite_array& partite() { return _partite; } // Partite editate TPartite_array& partite() { return _partite; } // Partite editate
bool edit_pagamento(TPartita& p, int nriga, int nrata, int nrigp); bool edit_pagamento(TPartita& p, int nriga, int nrata, int nrigp);
bool notify_edit_pagamento(TPartita& partita, TRectype& new_pag, bool notify_edit_pagamento(TPartita& partita, TRectype& new_pag,

View File

@ -17,13 +17,23 @@ TCausale::TCausale(const char* cod, int year)
: TArray(12), _rec(LF_CAUSALI), : TArray(12), _rec(LF_CAUSALI),
_iva(iva_errata), _corrisp(false), _iva(iva_errata), _corrisp(false),
_sezione_clifo(' '), _provvisorio(' '), _sezione_clifo(' '), _provvisorio(' '),
_sezione_ritsoc(' '), _sezione_ritfis(' '), _sezione_revcharge(' ') _sezione_ritsoc(' '), _sezione_ritfis(' '), _sezione_revcharge(' '),
_regolarizzazione(false)
{ {
_regolarizzazione = 0x2; if (cod && *cod)
if (cod && *cod) read(cod, year);
read(cod, year); if (soloiva())
{
TCursor c(new TRelation(LF_CAUSALI));
int items = c.items();
for (c = 0L; c.pos() < items && !_regolarizzazione; ++c)
_regolarizzazione = c.curr().get(CAU_CODCAUREG) == codice();
}
} }
bool TCausale::reread() bool TCausale::reread()
{ {
const TString4 cod = codice(); const TString4 cod = codice();
@ -145,22 +155,8 @@ bool TCausale::soloiva() const
int TCausale::regime_speciale() const int TCausale::regime_speciale() const
{ return _rec.get_int(CAU_REGSPIVA); } { return _rec.get_int(CAU_REGSPIVA); }
bool TCausale::regolarizzazione() bool TCausale::regolarizzazione() const
{ { return _regolarizzazione; }
if ((int) _regolarizzazione == 0x2)
{
_regolarizzazione = false;
if (soloiva())
{
TCursor c(new TRelation(LF_CAUSALI));
int items = c.items();
for (c = 0L; c.pos() < items && !_regolarizzazione; ++c)
_regolarizzazione = c.curr().get(CAU_CODCAUREG) == codice();
}
}
return _regolarizzazione != 0;
}
bool TCausale::ril_fat_em_ric() const bool TCausale::ril_fat_em_ric() const
{ {

View File

@ -14,7 +14,7 @@ class TCausale : public TArray
TipoIVA _iva; TipoIVA _iva;
bool _corrisp; bool _corrisp;
char _sezione_clifo, _sezione_ritsoc, _sezione_ritfis, _sezione_revcharge, _provvisorio; char _sezione_clifo, _sezione_ritsoc, _sezione_ritfis, _sezione_revcharge, _provvisorio;
int _regolarizzazione; bool _regolarizzazione;
protected: protected:
const TRectype* row(int num) const { return (const TRectype*)objptr(num); } const TRectype* row(int num) const { return (const TRectype*)objptr(num); }
@ -41,7 +41,7 @@ public:
bool valintra() const; bool valintra() const;
bool soloiva() const; bool soloiva() const;
bool reverse_charge() const; bool reverse_charge() const;
bool regolarizzazione(); bool regolarizzazione() const;
bool ril_fat_em_ric() const; bool ril_fat_em_ric() const;
bool datareg_prec() const; bool datareg_prec() const;
char provvisorio() const { return _provvisorio; } char provvisorio() const { return _provvisorio; }

View File

@ -158,8 +158,9 @@ bool TProvvisori_msk::on_field_event(TOperable_field& o, TField_event e, long jo
switch (o.get()[0]) switch (o.get()[0])
{ {
case 'C': fil << "=\"C\""; break; case 'C': fil << "=\"C\""; break;
case 'P': fil << "=\"P\""; break; case 'B': fil << "=\"B\""; break;
default : fil << "!=\"\""; break; case 'P': fil << "=\"P\""; break;
default : fil << "!=\"\""; break;
} }
update_search(F_FROMDATE, fil); update_search(F_FROMDATE, fil);
update_search(F_TODATE, fil); update_search(F_TODATE, fil);
@ -297,7 +298,7 @@ void TProvvisori_app::aggiungi_saldi(const TRectype& r, bool lettura)
TBill conto; conto.get(r); TBill conto; conto.get(r);
TImporto importo(r.get_char(RMV_SEZIONE), r.get_real(RMV_IMPORTO)); TImporto importo(r.get_char(RMV_SEZIONE), r.get_real(RMV_IMPORTO));
_saldi.set_movprovv(lettura); // In lettura sono tutti provvisori _saldi.set_movprovv(lettura); // In lettura sono tutti provvisori qui
_saldi.aggiorna(conto, importo, !lettura); // In lettura devo sottrarre l'importo _saldi.aggiorna(conto, importo, !lettura); // In lettura devo sottrarre l'importo
} }

View File

@ -24,12 +24,13 @@ ENDPAGE
PAGE "Gestione Movimenti Provvisori" -1 -1 52 14 PAGE "Gestione Movimenti Provvisori" -1 -1 52 14
LIST F_PROVV 10 LIST F_PROVV 25
BEGIN BEGIN
PROMPT 1 0 "@bTipo movimenti provvisori " PROMPT 1 0 "@bTipo movimenti provvisori "
ITEM "P|Contabili" ITEM "P|Contabili"
ITEM " |Tutti" ITEM " |Tutti"
ITEM "C|Cespiti" ITEM "B|Bilancio costi/ricavi"
ITEM "C|Cespiti"
END END
GROUPBOX DLG_NULL 50 3 GROUPBOX DLG_NULL 50 3

View File

@ -728,7 +728,7 @@ void TApertura_chiusura::costi()
} }
s = saldi.get_long(SLD_SOTTOCONTO); s = saldi.get_long(SLD_SOTTOCONTO);
sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil, 1); sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil);
_saldo = sale.saldo(); _saldo = sale.saldo();
if (_saldo.is_zero()) if (_saldo.is_zero())
@ -875,7 +875,7 @@ void TApertura_chiusura::ricavi()
//numrig++; //numrig++;
s = saldi.get_long(SLD_SOTTOCONTO); s = saldi.get_long(SLD_SOTTOCONTO);
//sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); //sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil);
sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil, 1); sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil);
_saldo = sale.saldo(); _saldo = sale.saldo();
if (_saldo.is_zero()) continue; if (_saldo.is_zero()) continue;
@ -1114,7 +1114,7 @@ void TApertura_chiusura::chiudi_attivita()
} }
s = saldi.get_long(SLD_SOTTOCONTO); s = saldi.get_long(SLD_SOTTOCONTO);
sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil, 1); sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil);
_saldo = sale.saldo(); _saldo = sale.saldo();
const int dbkey = saldi.getkey(); const int dbkey = saldi.getkey();
saldi.setkey(1); saldi.setkey(1);
@ -1264,7 +1264,7 @@ void TApertura_chiusura::chiudi_passivita()
//numrig++; //numrig++;
s = saldi.get_long(SLD_SOTTOCONTO); s = saldi.get_long(SLD_SOTTOCONTO);
//sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); //sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil);
sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil, 1); sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil);
_saldo = sale.saldo(); _saldo = sale.saldo();
if (_saldo.is_zero()) continue; if (_saldo.is_zero()) continue;
@ -1409,7 +1409,7 @@ void TApertura_chiusura::chiudi_conti_ordine()
} }
s = saldi.get_long(SLD_SOTTOCONTO); s = saldi.get_long(SLD_SOTTOCONTO);
sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil, 1); sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil);
_saldo = sale.saldo(); _saldo = sale.saldo();
const int dbkey = saldi.getkey(); const int dbkey = saldi.getkey();
saldi.setkey(1); saldi.setkey(1);
@ -1606,7 +1606,7 @@ void TApertura_chiusura::apri_attivita()
//numrig++; //numrig++;
s = saldi.get_long(SLD_SOTTOCONTO); s = saldi.get_long(SLD_SOTTOCONTO);
sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil, 1, false); sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil, 0x1, false);
_saldo = sale.saldo(); _saldo = sale.saldo();
if (_saldo == ZERO) continue; if (_saldo == ZERO) continue;
@ -1752,7 +1752,7 @@ void TApertura_chiusura::apri_passivita()
//numrig++; //numrig++;
s = saldi.get_long(SLD_SOTTOCONTO); s = saldi.get_long(SLD_SOTTOCONTO);
sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil, 1, false); sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil, 0x1, false);
_saldo = sale.saldo(); _saldo = sale.saldo();
if (_saldo.is_zero()) continue; if (_saldo.is_zero()) continue;
@ -1898,7 +1898,7 @@ void TApertura_chiusura::apri_conti_ordine()
//numrig++; //numrig++;
s = saldi.get_long(SLD_SOTTOCONTO); s = saldi.get_long(SLD_SOTTOCONTO);
sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil, 1, false); sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil, 0x1, false);
_saldo = sale.saldo(); _saldo = sale.saldo();
if (_saldo == ZERO) continue; if (_saldo == ZERO) continue;

View File

@ -313,7 +313,7 @@ END
CURRENCY S_INTERESSI 15 CURRENCY S_INTERESSI 15
BEGIN BEGIN
PROMPT 1 6 "Interessi " PROMPT 1 7 "Interessi "
FLAGS "RD" FLAGS "RD"
END END

View File

@ -95,7 +95,7 @@ TSaldo::TSaldo() : _saldi(LF_SALDI), _saldoiniziale(ZERO), _saldo_iniziale(ZERO)
} }
} }
real TSaldo::saldofin_esprec(int annoes, int g, int c, long s, bool saldo_chiusura, bool provvis) real TSaldo::saldofin_esprec(int annoes, int g, int c, long s, bool saldo_chiusura, int provv)
{ {
_significativo = false; _significativo = false;
@ -107,8 +107,6 @@ real TSaldo::saldofin_esprec(int annoes, int g, int c, long s, bool saldo_chiusu
const real saldo = _saldi.get_real(SLD_SALDO); const real saldo = _saldi.get_real(SLD_SALDO);
const real pdare = _saldi.get_real(SLD_PDARE); const real pdare = _saldi.get_real(SLD_PDARE);
const real pavere = _saldi.get_real(SLD_PAVERE); const real pavere = _saldi.get_real(SLD_PAVERE);
const real pdarepro = _saldi.get_real(SLD_PDAREPRO);
const real paverepro = _saldi.get_real(SLD_PAVEREPRO);
const char flagsf = _saldi.get_char(SLD_FLAGSALFIN); const char flagsf = _saldi.get_char(SLD_FLAGSALFIN);
const real saldosf = _saldi.get_real(SLD_SALDOFIN); const real saldosf = _saldi.get_real(SLD_SALDOFIN);
@ -125,19 +123,29 @@ real TSaldo::saldofin_esprec(int annoes, int g, int c, long s, bool saldo_chiusu
tot -= saldosf; // che e' l'unico programma ad usare la funzione tot -= saldosf; // che e' l'unico programma ad usare la funzione
} // passandogli come flag saldo_chiusura il valore true. } // passandogli come flag saldo_chiusura il valore true.
if (provvis) if (provv & 0x2)
{ {
tot += pdarepro; tot += _saldi.get_real(SLD_PDAREPRO);
tot -= paverepro; tot -= _saldi.get_real(SLD_PAVEREPRO);
} }
if (provv & 0x4)
{
tot += _saldi.get_real(SLD_PDAREPROB);
tot -= _saldi.get_real(SLD_PAVEREPROB);
}
if (provv & 0x8)
{
tot += _saldi.get_real(SLD_PDAREPROC);
tot -= _saldi.get_real(SLD_PAVEREPROC);
}
_significativo = !tot.is_zero(); _significativo = !tot.is_zero();
return tot; return tot;
} }
//richiamata nel bilancio a sez.contr per data limite //richiamata nel bilancio a sez.contr per data limite
//in realtà calcola il saldo finale es.prec //in realtà calcola il saldo finale es.prec
real TSaldo::calcola_saldo_iniziale(int g,int c,long s,int indbil, bool provvis) real TSaldo::calcola_saldo_iniziale(int g,int c,long s,int indbil, int provv)
{ {
real saldoini; real saldoini;
_significativo = true; _significativo = true;
@ -162,7 +170,7 @@ real TSaldo::calcola_saldo_iniziale(int g,int c,long s,int indbil, bool provvis)
if (indbil == 1 || indbil == 2 || indbil == 5) if (indbil == 1 || indbil == 2 || indbil == 5)
{ {
_prec = true; _prec = true;
saldoini = saldofin_esprec(_annoes, g, c, s, false, provvis); saldoini = saldofin_esprec(_annoes, g, c, s, false, provv);
} }
_saldo_iniziale = saldoini; _saldo_iniziale = saldoini;
} }
@ -187,7 +195,7 @@ bool TSaldo::leggi_mov(long nr)
//per bilancio scalare (ovvero a sezioni contrapposte) per data limite //per bilancio scalare (ovvero a sezioni contrapposte) per data limite
bool TSaldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDate& data_inf, bool TSaldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDate& data_inf,
const TDate& data_sup, int indbil, int stp_prov, const char* filter) const TDate& data_sup, int indbil, int provv, const char* filter)
{ {
_saldo_iniziale = ZERO; _saldo_iniziale = ZERO;
_saldo = ZERO; _saldo = ZERO;
@ -208,8 +216,8 @@ bool TSaldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDat
cur.freeze(); cur.freeze();
// Anche se non movimentato vado a vedere il saldo // Anche se non movimentato vado a vedere il saldo
if (stp_prov != 3 && (filter == NULL || *filter == '\0')) if ((provv & 0x1) && (filter == NULL || *filter == '\0'))
_saldo = calcola_saldo_iniziale(g,c,s,indbil,stp_prov == 2); _saldo = calcola_saldo_iniziale(g,c,s,indbil,provv);
for (cur = 0L; cur.pos() < items; ++cur) for (cur = 0L; cur.pos() < items; ++cur)
{ {
@ -234,34 +242,30 @@ bool TSaldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDat
// "Se la causale del movimento e' di chiusura, // "Se la causale del movimento e' di chiusura,
// o di apertura il movimento non va considerato" // o di apertura il movimento non va considerato"
if (_codcaus.not_empty()) if (_codcaus.full())
{ {
const TString& movap = _causali_apertura.decode(_codcaus); const TString& movap = _causali_apertura.decode(_codcaus);
if (movap == "C") if (movap == "C")
continue; continue;
} }
//bilancio normale (non comprende i provvisori) ? if (((provv & 0x1) && _provv.blank()) ||
if (stp_prov == 1 && _provv.not_empty()) ((provv & 0x2) && ((_provv == "P") || (_provv == "N"))) ||
continue; ((provv & 0x4) && (_provv == "B")) || ((provv & 0x8) && (_provv == "C")))
{
//bilancio dei soli provvisori ? const char sezione = rmov.get_char(RMV_SEZIONE);
if (stp_prov == 3 && _provv.empty()) const real importo = rmov.get_real(RMV_IMPORTO);
continue;
const char sezione = rmov.get_char(RMV_SEZIONE);
const real importo = rmov.get_real(RMV_IMPORTO);
// I mov. di puro riferimento (= con importo = 0) vanno scartati
if (importo.is_zero())
continue;
_movimentato = true;
if (sezione == 'D') // I mov. di puro riferimento (= con importo = 0) vanno scartati
_saldo += importo; if (importo != ZERO)
else {
_saldo -= importo; _movimentato = true;
if (sezione == 'D')
_saldo += importo;
else
_saldo -= importo;
}
}
} }
#ifdef DBG #ifdef DBG
@ -273,11 +277,10 @@ bool TSaldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDat
//per bilancio di verifica all'ultima immissione //per bilancio di verifica all'ultima immissione
bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil,int stp_prov) bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil, int provv)
{ {
//Si considerano i saldi e non piu' i movimenti //Si considerano i saldi e non piu' i movimenti
char sezione; char sezione;
real pdarepro, paverepro;
bool esito = false; bool esito = false;
_saldo_iniziale = ZERO; _saldo_iniziale = ZERO;
@ -310,21 +313,14 @@ bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil
_saldo_iniziale = _saldi.get_real(SLD_SALDO); _saldo_iniziale = _saldi.get_real(SLD_SALDO);
_prg_dare = _saldi.get_real(SLD_PDARE); _prg_dare = _saldi.get_real(SLD_PDARE);
_prg_avere = _saldi.get_real(SLD_PAVERE); _prg_avere = _saldi.get_real(SLD_PAVERE);
pdarepro = _saldi.get_real(SLD_PDAREPRO);
paverepro = _saldi.get_real(SLD_PAVEREPRO);
sezione = _saldi.get_char(SLD_FLAGSALINI); sezione = _saldi.get_char(SLD_FLAGSALINI);
_sezsf = _saldi.get_char(SLD_FLAGSALFIN); // W96SALDI del 19-06-96 modifica richiesta _sezsf = _saldi.get_char(SLD_FLAGSALFIN); // W96SALDI del 19-06-96 modifica richiesta
_saldofin = _saldi.get_real(SLD_SALDOFIN); // da PATRIZIA _saldofin = _saldi.get_real(SLD_SALDOFIN); // da PATRIZIA
if (stp_prov == 1) //bilancio normale (senza provvisori) if (provv == 1) //bilancio normale (senza provvisori)
if (_saldo_iniziale.is_zero() && _prg_dare.is_zero() && _prg_avere.is_zero()) if (_saldo_iniziale.is_zero() && _prg_dare.is_zero() && _prg_avere.is_zero())
return esito; return esito;
// if (stp_prov == 0 && paverepro == ZERO)
if (stp_prov == 3 && paverepro.is_zero() && pdarepro.is_zero()) // Modifica del 24-09-96 errore MI0890.
{
_saldo = _prg_dare = _prg_avere = ZERO; // N.B. Non e' detto che funzioni sempre!!!!!!
return esito;
}
if (sezione == 'A') if (sezione == 'A')
_saldo_iniziale = -_saldo_iniziale; _saldo_iniziale = -_saldo_iniziale;
if (_sezsf == 'A') if (_sezsf == 'A')
@ -333,34 +329,35 @@ bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil
_saldoiniziale = _saldo_iniziale; //saldo iniziale presente sul record saldi _saldoiniziale = _saldo_iniziale; //saldo iniziale presente sul record saldi
//non comprensivo del saldo finale es.precedente //non comprensivo del saldo finale es.precedente
if (_saldo_iniziale.is_zero() && stp_prov != 3) if (_saldo_iniziale.is_zero() && !(provv & 0x1))
{ {
if (indbil == 1 || indbil == 2 || indbil == 5) if (indbil == 1 || indbil == 2 || indbil == 5)
_saldo_iniziale += saldofin_esprec(annoes,g,c,s, false, stp_prov == 2); _saldo_iniziale += saldofin_esprec(annoes,g,c,s, false, provv);
} }
esito = true; esito = true;
_saldo = _saldo_iniziale + _saldofin;
switch (stp_prov) if (!(provv & 0x1))
{ {
case 1: _prg_dare = ZERO;
_saldo = _saldo_iniziale + _prg_dare - _prg_avere + _saldofin; // W96SALDI del 19-06-96 _prg_avere = ZERO;
break; }
case 2:
_saldo = _saldo_iniziale + _prg_dare - _prg_avere + pdarepro - paverepro + _saldofin; // W96SALDI del 19-06-96 if (provv & 0x2)
if (pdarepro != ZERO) // Modifica del 24-09-96 errore MI0890: nel caso in cui i progressivi {
_prg_dare = pdarepro; // pdarepro o paverepro sono compilati sono in presenza di un movimento _prg_dare += _saldi.get_real(SLD_PDAREPRO);
if (paverepro != ZERO) // provvisorio, dunque li trasferisco nei progressivi che poi uso nel _prg_avere += _saldi.get_real(SLD_PAVEREPRO);
_prg_avere = paverepro; // CG1500 per la stampa. }
break; if (provv & 0x4)
case 3: {
_saldo = pdarepro - paverepro; _prg_dare += _saldi.get_real(SLD_PDAREPROB);
_prg_dare = pdarepro; // Idem come sopra. _prg_avere += _saldi.get_real(SLD_PAVEREPROB);
_prg_avere = paverepro; // N.B. Non e' detto che funzioni sempre!!!!!! }
break; if (provv & 0x8)
default: {
break; _prg_dare += _saldi.get_real(SLD_PDAREPROC);
} _prg_avere += _saldi.get_real(SLD_PAVEREPROC);
}
} }
return esito; return esito;
} }
@ -372,13 +369,13 @@ bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil
// risulterebbero aperti); siccome alcuni programmi (esempio il bilancio IV dir. CEE) non ne // risulterebbero aperti); siccome alcuni programmi (esempio il bilancio IV dir. CEE) non ne
// devono tenere conto, si e' data la possibilità di usare la funzione passandogli il parametro a false. // devono tenere conto, si e' data la possibilità di usare la funzione passandogli il parametro a false.
// Modifica del 09-07-96 // Modifica del 09-07-96
bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil,int stp_prov,bool saldo_chiusura) bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil,int provv,bool saldo_chiusura)
{ {
//Si considerano i saldi e non piu' i movimenti //Si considerano i saldi e non piu' i movimenti
char sezione; char sezione;
// int gruppo, conto, annoe; // int gruppo, conto, annoe;
// long sottoconto; // long sottoconto;
real pdarepro, paverepro; real pdarepro, paverepro, pdareprob, pavereprob, pdareproc, pavereproc;
bool esito = false; bool esito = false;
_saldo_iniziale = ZERO; _saldo_iniziale = ZERO;
@ -413,21 +410,25 @@ bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil
_saldo_iniziale = _saldi.get_real(SLD_SALDO); _saldo_iniziale = _saldi.get_real(SLD_SALDO);
_prg_dare = _saldi.get_real(SLD_PDARE); _prg_dare = _saldi.get_real(SLD_PDARE);
_prg_avere = _saldi.get_real(SLD_PAVERE); _prg_avere = _saldi.get_real(SLD_PAVERE);
pdarepro = _saldi.get_real(SLD_PDAREPRO); pdarepro = _saldi.get_real(SLD_PDAREPRO);
paverepro = _saldi.get_real(SLD_PAVEREPRO); paverepro = _saldi.get_real(SLD_PAVEREPRO);
sezione = _saldi.get_char(SLD_FLAGSALINI); pdareprob = _saldi.get_real(SLD_PDAREPROB);
pavereprob = _saldi.get_real(SLD_PAVEREPROB);
pdareproc = _saldi.get_real(SLD_PDAREPROC);
pavereproc = _saldi.get_real(SLD_PAVEREPROC);
sezione = _saldi.get_char(SLD_FLAGSALINI);
_sezsf = _saldi.get_char(SLD_FLAGSALFIN); _sezsf = _saldi.get_char(SLD_FLAGSALFIN);
_saldofin = _saldi.get_real(SLD_SALDOFIN); _saldofin = _saldi.get_real(SLD_SALDOFIN);
if (stp_prov == 1) //bilancio normale (senza provvisori) esito = false;
esito = (_saldo_iniziale != ZERO || _prg_dare != ZERO || _prg_avere != ZERO); if (provv & 0x1)
esito |= (_saldo_iniziale != ZERO || _prg_dare != ZERO || _prg_avere != ZERO);
if (stp_prov == 2) //bilancio globale (con provvisori) if (provv & 0x2) // (con provvisori manuali)
esito = (_saldo_iniziale != ZERO || _prg_dare != ZERO || _prg_avere != ZERO esito |= (pdarepro != ZERO || paverepro != ZERO);
|| pdarepro != ZERO || paverepro != ZERO); if (provv & 0x4) // (con provvisori bilancio costi/ricavi)
esito |= (pdareprob != ZERO || pavereprob != ZERO);
if (stp_prov == 3) //bilancio dei soli mov. provvisori if (provv & 0x8) // (con provvisori cespiti)
esito = (pdarepro != ZERO || paverepro != ZERO); esito |= (pdareproc != ZERO || pavereproc != ZERO);
if (sezione == 'A') if (sezione == 'A')
_saldo_iniziale = -_saldo_iniziale; _saldo_iniziale = -_saldo_iniziale;
@ -439,34 +440,30 @@ bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil
_rec_presente_ec = esito; _rec_presente_ec = esito;
} }
if (_saldo_iniziale.is_zero() && stp_prov != 3) if (_saldo_iniziale.is_zero() && (provv & 0x1))
if (indbil == 1 || indbil == 2 || indbil == 5) if (indbil == 1 || indbil == 2 || indbil == 5)
{ {
_prec = true; _prec = true;
_saldo_iniziale += saldofin_esprec(annoes,g,c,s,false,stp_prov==2); _saldo_iniziale += saldofin_esprec(annoes,g,c,s,false,provv);
} }
if (stp_prov == 1) _saldo = ZERO;
_saldo = _saldo_iniziale + _prg_dare - _prg_avere; if (provv & 0x1)
_saldo += _saldo_iniziale + _prg_dare - _prg_avere;
if (stp_prov == 2) if (provv & 0x2) // (con provvisori manuali)
_saldo = _saldo_iniziale + _prg_dare - _prg_avere + pdarepro - paverepro; _saldo += pdarepro - paverepro;
if (provv & 0x4) // (con provvisori bilancio costi/ricavi)
if (stp_prov == 3) _saldo += pdareprob - pavereprob;
_saldo = pdarepro - paverepro; if (provv & 0x8) // (con provvisori cespiti)
_saldo += pdareproc - pavereproc;
if (saldo_chiusura) // W96SALDI modifica inserita per il discorso di inclusione oppure if (saldo_chiusura && (provv & 0x1)) // W96SALDI modifica inserita per il discorso di inclusione oppure
_saldo += _saldofin; // no del saldo di chiusura inserita il 09-07-96 _saldo += _saldofin; // no del saldo di chiusura inserita il 09-07-96
#ifdef __LONGDOUBLE__
_saldo.round(TCurrency::get_firm_dec());
#endif
return esito; return esito;
} }
const real& TSaldo::saldo_periodo(int g, int c, long s, const TDate& dal, const TDate& al, const real& TSaldo::saldo_periodo(int g, int c, long s, const TDate& dal, const TDate& al,
int indbil, bool provv) int indbil, int provv)
{ {
_saldo_iniziale = ZERO; _saldo_iniziale = ZERO;
@ -496,9 +493,7 @@ const real& TSaldo::saldo_periodo(int g, int c, long s, const TDate& dal, const
_prec = _saldo_iniziale.is_zero() && (indbil == 1 || indbil == 2 || indbil == 5); _prec = _saldo_iniziale.is_zero() && (indbil == 1 || indbil == 2 || indbil == 5);
if (_prec) if (_prec)
{
_saldo_iniziale = saldofin_esprec(codes,g,c,s); _saldo_iniziale = saldofin_esprec(codes,g,c,s);
}
else else
{ {
if (saldo.get_char(SLD_FLAGSALINI) == 'A') if (saldo.get_char(SLD_FLAGSALINI) == 'A')
@ -542,7 +537,7 @@ const real& TSaldo::saldo_periodo(int g, int c, long s, const TDate& dal, const
leggi_mov(num_reg); leggi_mov(num_reg);
const TString& movap = _causali_apertura.decode(_codcaus); const TString& movap = _causali_apertura.decode(_codcaus);
if ((provv || _provv.empty()) && movap.blank()) if (!((provv & 0x1) || _provv.empty()) && movap.blank()) // ????
{ {
if (_datacomp >= dal && _datacomp <= al) if (_datacomp >= dal && _datacomp <= al)
{ {
@ -701,8 +696,10 @@ bool TSaldo::saldo_cont_sep(int g, int c, long s, const int codes, TDate al,
_datacomp = mov.get(MOV_DATACOMP); _datacomp = mov.get(MOV_DATACOMP);
const TString& movap = _causali_apertura.decode(_codcaus); const TString& movap = _causali_apertura.decode(_codcaus);
if (provv > 1 || _provv.empty()) if (((provv & 0x1) && _provv.empty()) ||
{ ((provv & 0x2) && (_provv == "P" || _provv == "N")) ||
(provv & 0x4) && (_provv == "B") || (provv & 0x8) && (_provv == "C"))
{
if (_datacomp >= inizio && _datacomp <= al) if (_datacomp >= inizio && _datacomp <= al)
{ {
if (movap.blank()) if (movap.blank())
@ -797,7 +794,7 @@ void TTab_conti::remove(const TBill& c, int anno, bool scar)
void TTab_conti::aggiorna_conto(const TBill& tcon, void TTab_conti::aggiorna_conto(const TBill& tcon,
int anno_es, const TImporto& importo, tiposal movap, int anno_es, const TImporto& importo, tiposal movap,
bool provv, bool somma, bool movimentato, bool scaricato) char provv, bool somma, bool movimentato, bool scaricato)
{ {
TContoExt* tc = (TContoExt*)find(tcon, anno_es, scaricato); TContoExt* tc = (TContoExt*)find(tcon, anno_es, scaricato);
if (tc == NULL) if (tc == NULL)
@ -805,40 +802,56 @@ void TTab_conti::aggiorna_conto(const TBill& tcon,
const real i(somma ? importo.valore() : -importo.valore()); const real i(somma ? importo.valore() : -importo.valore());
if (provv) if ((provv == 'P') || (provv == 'N'))
{ {
if (importo.sezione() == 'D') if (importo.sezione() == 'D')
tc->darepro() += i; tc->darepro() += i;
else else
tc->averepro() += i; tc->averepro() += i;
} }
else else
{ if (provv == 'B')
if (movap == apertura) {
{ if (importo.sezione() == 'D')
if (importo.sezione() == 'D') tc->dareprob() += i;
tc->saldo() += i; else
else tc->avereprob() += i;
tc->saldo() -= i; }
} else
else if (provv == 'C')
{ {
if (movap == chiusura) if (importo.sezione() == 'D')
tc->dareproc() += i;
else
tc->avereproc() += i;
}
else
{ {
if (importo.sezione() == 'D') if (movap == apertura)
tc->saldofin() += i; {
if (importo.sezione() == 'D')
tc->saldo() += i;
else
tc->saldo() -= i;
}
else else
tc->saldofin() -= i; {
if (movap == chiusura)
{
if (importo.sezione() == 'D')
tc->saldofin() += i;
else
tc->saldofin() -= i;
}
else
{
if (importo.sezione() == 'D')
tc->dare() += i;
else
tc->avere() += i;
}
}
} }
else
{
if (importo.sezione() == 'D')
tc->dare() += i;
else
tc->avere() += i;
}
}
}
// rimuovo dalla tabella il conto se dare e avere vanno a zero // rimuovo dalla tabella il conto se dare e avere vanno a zero
@ -945,8 +958,6 @@ void TSaldo_agg::clear_saldi(int year)
void TSaldo_agg::registra() void TSaldo_agg::registra()
{ {
real si, r;
char flag_salini;
TDate data_ulmov; TDate data_ulmov;
long num_ulmov; long num_ulmov;
TLocalisamfile saldi(LF_SALDI); TLocalisamfile saldi(LF_SALDI);
@ -978,19 +989,19 @@ void TSaldo_agg::registra()
saldi.put(SLD_SOTTOCONTO, tcon.sottoconto()); saldi.put(SLD_SOTTOCONTO, tcon.sottoconto());
saldi.put(SLD_FLSCA, tcon.scaricato()); saldi.put(SLD_FLSCA, tcon.scaricato());
si = tcon.saldo(); const bool swap = tcon.saldo() < ZERO;
if (si < ZERO)
{ flag_salini = 'A'; si = -si; }
else
flag_salini = 'D';
saldi.put(SLD_FLAGSALINI, flag_salini); saldi.put(SLD_FLAGSALINI, swap ? "A" : "D");
saldi.put(SLD_SALDO, si); saldi.put(SLD_SALDO, swap ? -tcon.saldo() : tcon.saldo());
saldi.put(SLD_PDARE, tcon.dare()); saldi.put(SLD_PDARE, tcon.dare());
saldi.put(SLD_PAVERE, tcon.avere()); saldi.put(SLD_PAVERE, tcon.avere());
saldi.put(SLD_PDAREPRO, tcon.darepro()); saldi.put(SLD_PDAREPRO, tcon.darepro());
saldi.put(SLD_PAVEREPRO, tcon.averepro()); saldi.put(SLD_PAVEREPRO, tcon.averepro());
saldi.put(SLD_PDAREPROB, tcon.dareprob());
saldi.put(SLD_PAVEREPROB, tcon.avereprob());
saldi.put(SLD_PDAREPROC, tcon.dareproc());
saldi.put(SLD_PAVEREPROC, tcon.avereproc());
real sf = tcon.saldofin(); real sf = tcon.saldofin();
char flag_salfin = sf < ZERO ? 'A' : 'D'; char flag_salfin = sf < ZERO ? 'A' : 'D';
if (flag_salfin == 'A') sf = -sf; if (flag_salfin == 'A') sf = -sf;
@ -1014,12 +1025,15 @@ void TSaldo_agg::registra()
saldi.put(SLD_NUMULTMOV, _num_ulmov); saldi.put(SLD_NUMULTMOV, _num_ulmov);
if ((_data_ulmov.ok()) && (_data_ulmov > data_ulmov)) if ((_data_ulmov.ok()) && (_data_ulmov > data_ulmov))
saldi.put(SLD_DATAULMOV, _data_ulmov); saldi.put(SLD_DATAULMOV, _data_ulmov);
r = tcon.saldo();
si = saldi.get_real(SLD_SALDO); const real r = tcon.saldo();
flag_salini = saldi.get_char(SLD_FLAGSALINI); real si = saldi.get_real(SLD_SALDO);
char flag_salini = saldi.get_char(SLD_FLAGSALINI);
if (!r.is_zero()) if (!r.is_zero())
{ {
if (flag_salini == 'A')
if (flag_salini == 'A')
si = r - si; si = r - si;
else else
si += r; si += r;
@ -1033,75 +1047,72 @@ void TSaldo_agg::registra()
saldi.put(SLD_FLAGSALINI, flag_salini); saldi.put(SLD_FLAGSALINI, flag_salini);
saldi.put(SLD_SALDO, si); saldi.put(SLD_SALDO, si);
} }
TImporto sld('D', tcon.saldo());
TImporto old_sld(saldi.get_char(SLD_FLAGSALINI), saldi.get_real(SLD_SALDO));
sld += old_sld;
sld.normalize();
saldi.put(SLD_FLAGSALINI, sld.sezione());
saldi.put(SLD_SALDO, sld.valore());
TImporto sf('D', tcon.saldofin()); TImporto sf('D', tcon.saldofin());
char old_flag_sf = saldi.get(SLD_FLAGSALFIN)[0]; TImporto old_sf(saldi.get_char(SLD_FLAGSALFIN), saldi.get_real(SLD_SALDOFIN));
TImporto old_sf(old_flag_sf, saldi.get_real(SLD_SALDOFIN));
sf += old_sf; sf += old_sf;
sf.normalize(); sf.normalize();
saldi.put(SLD_FLAGSALFIN, sf.sezione()); saldi.put(SLD_FLAGSALFIN, sf.sezione());
saldi.put(SLD_SALDOFIN, sf.valore()); saldi.put(SLD_SALDOFIN, sf.valore());
r = saldi.get_real(SLD_PDARE); saldi.add(SLD_PDARE, tcon.dare());
r += tcon.dare(); saldi.add(SLD_PAVERE, tcon.avere());
saldi.put(SLD_PDARE, r); saldi.add(SLD_PDAREPRO, tcon.darepro());
saldi.add(SLD_PAVEREPRO, tcon.averepro());
saldi.add(SLD_PDAREPROB, tcon.dareprob());
saldi.add(SLD_PAVEREPROB, tcon.avereprob());
saldi.add(SLD_PDAREPROC, tcon.dareproc());
saldi.add(SLD_PAVEREPROC, tcon.avereproc());
r = saldi.get_real(SLD_PAVERE); const int err = saldi.rewrite();
r += tcon.avere();
saldi.put(SLD_PAVERE, r);
r = saldi.get_real(SLD_PDAREPRO);
r += tcon.darepro();
saldi.put(SLD_PDAREPRO, r);
r = saldi.get_real(SLD_PAVEREPRO);
r += tcon.averepro();
saldi.put(SLD_PAVEREPRO, r);
const int err = saldi.rewrite();
if (err != NOERR) if (err != NOERR)
yesnofatal_box(FR("Errore %d nell'aggiornamento del saldo %d %d %ld"), yesnofatal_box(FR("Errore %d nell'aggiornamento del saldo %d %d %ld"),
err, tcon.gruppo(), tcon.conto(), tcon.sottoconto()); err, tcon.gruppo(), tcon.conto(), tcon.sottoconto());
}
// Calcolo saldo finale per controllo segno in prima nota
if (si.is_zero())
{
TLocalisamfile pcon(LF_PCON);
TRectype& curr = pcon.curr();
curr.put(PCN_GRUPPO, tcon.gruppo());
curr.put(PCN_CONTO, tcon.conto());
const int err = pcon.read();
if (err == NOERR)
{
const int indbil = curr.get_int(PCN_INDBIL);
if (indbil == 1 || indbil == 2 || indbil == 5)
{
TSaldo saldo;
si = saldo.saldofin_esprec(annoes, tcon.gruppo(), tcon.conto(), tcon.sottoconto());
if (si < ZERO)
{
flag_salini = 'A';
si = -si;
}
else
flag_salini = 'D';
}
}
else
{
// Era errore fatale
}
}
TImporto sf(flag_salini, si); // Calcolo saldo finale per controllo segno in prima nota
const TImporto dare('D', saldi.get_real(SLD_PDARE)); if (si.is_zero())
const TImporto avere('A', saldi.get_real(SLD_PAVERE)); {
sf += dare; TLocalisamfile pcon(LF_PCON);
sf += avere; TRectype& curr = pcon.curr();
sf.normalize(+1); // Rendi sempre positivo curr.put(PCN_GRUPPO, tcon.gruppo());
tcon.saldo_finale() = sf; curr.put(PCN_CONTO, tcon.conto());
if (pcon.read() == NOERR)
{
const int indbil = curr.get_int(PCN_INDBIL);
if (indbil == 1 || indbil == 2 || indbil == 5)
{
TSaldo saldo;
si = saldo.saldofin_esprec(annoes, tcon.gruppo(), tcon.conto(), tcon.sottoconto());
if (si < ZERO)
{
flag_salini = 'A';
si = -si;
}
else
flag_salini = 'D';
}
}
}
TImporto sldf(flag_salini, si);
const TImporto dare('D', saldi.get_real(SLD_PDARE));
const TImporto avere('A', saldi.get_real(SLD_PAVERE));
sldf += dare;
sldf += avere;
sldf.normalize(+1); // Rendi sempre positivo
tcon.saldo_finale() = sldf;
}
} }
} }
@ -1113,14 +1124,14 @@ TBalance::TBalance()
{ {
} }
TBalance::TBalance(int g, int c, long s, int esercizio, bool ignora_movap, bool provvis) TBalance::TBalance(int g, int c, long s, int esercizio, bool ignora_movap, bool provv)
{ {
read(g, c, s, esercizio, ignora_movap, provvis); read(g, c, s, esercizio, ignora_movap, provv);
} }
TBalance::TBalance(const TBill& b, int esercizio, bool ignora_movap, bool provvis) TBalance::TBalance(const TBill& b, int esercizio, bool ignora_movap, bool provv)
{ {
read(b, esercizio, ignora_movap, provvis); read(b, esercizio, ignora_movap, provv);
} }
bool TBalance::find(const TBill& b, int esercizio, bool TBalance::find(const TBill& b, int esercizio,
@ -1141,8 +1152,12 @@ bool TBalance::find(const TBill& b, int esercizio,
av.set('A', saldi.get_real(SLD_PAVERE)); av.set('A', saldi.get_real(SLD_PAVERE));
sf.set(saldi.get_char(SLD_FLAGSALFIN), saldi.get_real(SLD_SALDOFIN)); sf.set(saldi.get_char(SLD_FLAGSALFIN), saldi.get_real(SLD_SALDOFIN));
pd.set('D', saldi.get_real(SLD_PDAREPRO)); pd.set('D', saldi.get_real(SLD_PDAREPRO));
pa.set('A', saldi.get_real(SLD_PAVEREPRO)); pd += TImporto('D', saldi.get_real(SLD_PDAREPROB));
} pd += TImporto('D', saldi.get_real(SLD_PDAREPROC));
pa.set('A', saldi.get_real(SLD_PAVEREPRO));
pa += TImporto('A', saldi.get_real(SLD_PAVEREPROB));
pa += TImporto('A', saldi.get_real(SLD_PAVEREPROC));
}
else else
{ {
si.set('D', ZERO); si.set('D', ZERO);
@ -1151,10 +1166,10 @@ bool TBalance::find(const TBill& b, int esercizio,
return ok; return ok;
} }
void TBalance::read(int gruppo, int conto, long sottoconto, int esercizio, bool ignora_movap, bool provvis) void TBalance::read(int gruppo, int conto, long sottoconto, int esercizio, bool ignora_movap, bool provv) // qui
{ {
const TBill zio(gruppo, conto, sottoconto); const TBill zio(gruppo, conto, sottoconto);
read(zio, esercizio, ignora_movap, provvis); read(zio, esercizio, ignora_movap, provv);
} }
int TBalance::indicatore_bilancio(const TBill& b) const int TBalance::indicatore_bilancio(const TBill& b) const
@ -1173,12 +1188,12 @@ int TBalance::indicatore_bilancio(const TBill& b) const
return ib; return ib;
} }
void TBalance::read(const TBill& b, int esercizio, bool ignora_movap, bool provvis) void TBalance::read(const TBill& b, int esercizio, bool ignora_movap, bool provv)
{ {
TImporto si, sf, pd, pa, prd, pra; TImporto si, sf, pd, pa, prd, pra;
find(b, esercizio, si, pd, pa, sf, prd, pra); find(b, esercizio, si, pd, pa, sf, prd, pra);
if (provvis) if (provv)
{ {
pd += prd; pd += prd;
pa += pra; pa += pra;
@ -1197,7 +1212,7 @@ void TBalance::read(const TBill& b, int esercizio, bool ignora_movap, bool provv
const int precedente = esercizi.pred(esercizio); const int precedente = esercizi.pred(esercizio);
if (precedente > 0 && find(b, precedente, si, pd, pa, sf, prd, pra)) if (precedente > 0 && find(b, precedente, si, pd, pa, sf, prd, pra))
{ {
if (provvis) if (provv)
{ {
pd += prd; pd += prd;
pa += pra; pa += pra;

View File

@ -17,7 +17,7 @@ class TCausale;
class TConto : public TBill class TConto : public TBill
{ {
real _dare, _avere, _darepro, _averepro, _saldofin, _saldo; real _dare, _avere, _darepro, _averepro, _dareprob, _avereprob, _dareproc, _avereproc, _saldofin, _saldo;
TImporto _saldo_finale; TImporto _saldo_finale;
public: public:
@ -38,7 +38,19 @@ public:
real& averepro() { return _averepro; } real& averepro() { return _averepro; }
const real& averepro() const { return _averepro; } const real& averepro() const { return _averepro; }
real& saldo() { return _saldo; } real& dareprob() { return _dareprob; }
const real& dareprob() const { return _dareprob; }
real& avereprob() { return _avereprob; }
const real& avereprob() const { return _avereprob; }
real& dareproc() { return _dareproc; }
const real& dareproc() const { return _dareproc; }
real& avereproc() { return _avereproc; }
const real& avereproc() const { return _avereproc; }
real& saldo() { return _saldo; }
const real& saldo() const { return _saldo; } const real& saldo() const { return _saldo; }
real& saldofin() { return _saldofin; } real& saldofin() { return _saldofin; }
@ -94,7 +106,7 @@ class TSaldo : public TObject
protected: protected:
void InFinEs(int); void InFinEs(int);
bool leggi_mov(long numreg); // Leggi testata bool leggi_mov(long numreg); // Leggi testata
real calcola_saldo_iniziale(int g, int c, long s, int indbil, bool provvis); real calcola_saldo_iniziale(int g, int c, long s, int indbil, int provv = 0x1);
bool prg_saldo(int, TConto&, real&, real&, bool); bool prg_saldo(int, TConto&, real&, real&, bool);
const real& iniziale() const { return _saldo_iniziale;} const real& iniziale() const { return _saldo_iniziale;}
void set_iniziale(const real& val) { _saldo_iniziale = val; } void set_iniziale(const real& val) { _saldo_iniziale = val; }
@ -115,14 +127,14 @@ public:
bool causale_mov(long, const TDate&, const TDate&, TString&); bool causale_mov(long, const TDate&, const TDate&, TString&);
bool ultima_immissione_bilancio(int annoes, int g,int c,long s,int indbil,int prov,bool saldo_chiusura = true); bool ultima_immissione_bilancio(int annoes, int g,int c,long s,int indbil,int provv = 0x1,bool saldo_chiusura = true);
bool ultima_immissione_verifica(int annoes, int g,int c,long s,int indbil,int prov); bool ultima_immissione_verifica(int annoes, int g,int c,long s,int indbil,int provv = 0x1);
bool data_limite_bilancio(int annoes,int g,int c,long s,const TDate& data_inf,const TDate& data_suo,int indbil,int stp_prov, const char* filter = NULL); bool data_limite_bilancio(int annoes,int g,int c,long s,const TDate& data_inf,const TDate& data_suo,int indbil, int provv = 0x1, const char* filter = NULL);
const real& saldo_periodo(int g, int c, long s, const TDate& dal, const TDate& al, int indbil, bool provv); const real& saldo_periodo(int g, int c, long s, const TDate& dal, const TDate& al, int indbil, int provv = 0x1);
bool saldo_cont_sep(int g, int c, long s, const int codes, TDate al, int indbil, const char * cont_sep, int provv, bool chiusura = false, bool first = true); bool saldo_cont_sep(int g, int c, long s, const int codes, TDate al, int indbil, const char * cont_sep, int provv = 0x1, bool chiusura = false, bool first = true);
bool ricerca_progr_prec(int, int, int, long); bool ricerca_progr_prec(int, int, int, long);
real saldofin_esprec(int,int,int,long,bool saldo_chiusura = FALSE, bool provvisori = FALSE); real saldofin_esprec(int,int,int,long,bool saldo_chiusura = FALSE, int provv = 0x1);
bool prg_attuali(int i,TConto& c, real& p1, real& p2) bool prg_attuali(int i,TConto& c, real& p1, real& p2)
{ return prg_saldo(i, c, p1, p2, FALSE); } { return prg_saldo(i, c, p1, p2, FALSE); }
bool prg_mov_eliminati(int i, TConto& c, real& p1, real& p2) bool prg_mov_eliminati(int i, TConto& c, real& p1, real& p2)
@ -153,7 +165,7 @@ protected:
public: public:
void aggiorna_conto(const TBill& tc, int anno_es, const TImporto& importo, void aggiorna_conto(const TBill& tc, int anno_es, const TImporto& importo,
tiposal movap, bool provv, bool somma, bool movimentato, bool scaricato); tiposal movap, char provv, bool somma, bool movimentato, bool scaricato);
TConto* add(const TBill& c, int anno, bool provv = FALSE); TConto* add(const TBill& c, int anno, bool provv = FALSE);
TConto* find(const TBill& c, int anno, bool provv = FALSE); TConto* find(const TBill& c, int anno, bool provv = FALSE);
@ -167,7 +179,7 @@ class TSaldo_agg : public TObject
TDate _data_ulmov; // data ultimo movimento TDate _data_ulmov; // data ultimo movimento
long _num_ulmov; // numero ultimo movimento long _num_ulmov; // numero ultimo movimento
tiposal _movap; // se e' mov. d'apertura (aggiorno SALDO e FLAGSALINI in saldi) tiposal _movap; // se e' mov. d'apertura (aggiorno SALDO e FLAGSALINI in saldi)
bool _provv; char _provv;
TRectype* _rec; // record corrente sui saldi TRectype* _rec; // record corrente sui saldi
bool _movimentato; // di default e' FALSE; viene usato a TRUE solo quando voglio bool _movimentato; // di default e' FALSE; viene usato a TRUE solo quando voglio
// che un conto sia movimentato sui saldi anche se progressivi // che un conto sia movimentato sui saldi anche se progressivi
@ -189,8 +201,8 @@ public:
void set_tipo_saldo (tiposal movap) { _movap = movap; } void set_tipo_saldo (tiposal movap) { _movap = movap; }
tiposal tipo_saldo() const { return _movap; } tiposal tipo_saldo() const { return _movap; }
void set_movprovv (bool p) { _provv = p; } void set_movprovv (char p) { _provv = p; }
bool movprovv() const { return _provv; } char movprovv() const { return _provv; }
void set_movimentato (bool movimentato) { _movimentato = movimentato; } void set_movimentato (bool movimentato) { _movimentato = movimentato; }
bool movimentato() const { return _movimentato; } bool movimentato() const { return _movimentato; }
@ -223,8 +235,8 @@ protected:
int indicatore_bilancio(const TBill& b) const; int indicatore_bilancio(const TBill& b) const;
public: public:
void read(int g, int c, long s, int esercizio, bool ignora_movap, bool provvis); void read(int g, int c, long s, int esercizio, bool ignora_movap, bool provv);
void read(const TBill& b, int esercizio, bool ignora_movap, bool provvis); void read(const TBill& b, int esercizio, bool ignora_movap, bool provv);
void reread(); void reread();
const TImporto& saldo_iniziale() const; const TImporto& saldo_iniziale() const;
@ -236,8 +248,8 @@ public:
TImporto saldo_finale_chiusura() const; TImporto saldo_finale_chiusura() const;
TBalance(); TBalance();
TBalance(int g, int c, long s, int esercizio, bool ignora_movap, bool provvis); TBalance(int g, int c, long s, int esercizio, bool ignora_movap, bool provv);
TBalance(const TBill& b, int esercizio, bool ignora_movap, bool provvis); TBalance(const TBill& b, int esercizio, bool ignora_movap, bool provv);
virtual ~TBalance() { } virtual ~TBalance() { }
}; };

View File

@ -1,3 +1,3 @@
21 21
0 0
$saldi|||143|0|Saldi||| $saldi|||215|0|Saldi|||

View File

@ -1,5 +1,5 @@
21 21
15 19
ANNOES|9|4|0|Codice esercizio ANNOES|9|4|0|Codice esercizio
GRUPPO|2|3|0|Gruppo GRUPPO|2|3|0|Gruppo
CONTO|2|3|0|Conto CONTO|2|3|0|Conto
@ -13,6 +13,10 @@ PDARE|4|18|3|Progressivo dare
PAVERE|4|18|3|Progressivo avere PAVERE|4|18|3|Progressivo avere
PDAREPRO|4|18|3|Progressivo dare movimenti provvisori PDAREPRO|4|18|3|Progressivo dare movimenti provvisori
PAVEREPRO|4|18|3|Progressivo avere movimenti provvisori PAVEREPRO|4|18|3|Progressivo avere movimenti provvisori
PDAREPROB|4|18|3|Progressivo dare movimenti provvisori bilancio costi ricavi
PAVEREPROB|4|18|3|Progressivo avere movimenti provvisori bilancio costi ricavi
PDAREPROC|4|18|3|Progressivo dare movimenti provvisori cespiti
PAVEREPROC|4|18|3|Progressivo avere movimenti provvisori cespiti
DATAULMOV|5|8|0|Data ultimo movimento DATAULMOV|5|8|0|Data ultimo movimento
NUMULTMOV|3|7|0|Numero operazione dell'ultimo movimento NUMULTMOV|3|7|0|Numero operazione dell'ultimo movimento
3 3

View File

@ -1,3 +1,3 @@
23 23
0 0
$mov|96174|96174|559|0|Movimenti di prima nota|NMOV|| $mov|||574|0|Movimenti di prima nota|NMOV||

View File

@ -1,9 +1,10 @@
23 23
60 62
ANNOES|9|4|0|Codice esercizio ANNOES|9|4|0|Codice esercizio
NUMREG|3|7|0|Numero di operazione NUMREG|3|7|0|Numero di operazione
DATAREG|5|8|0|Data operazione DATAREG|5|8|0|Data operazione
DATACOMP|5|8|0|Data competenza DATACOMP|5|8|0|Data competenza
DATACOMPCR|5|8|0|Data competenza costi/ricavi
DATADOC|5|8|0|Data documento DATADOC|5|8|0|Data documento
RITFATT|8|1|0|Fattura in ritardo RITFATT|8|1|0|Fattura in ritardo
DATA74TER|5|8|0|Data per art. 74 ter DATA74TER|5|8|0|Data per art. 74 ter
@ -31,7 +32,7 @@ TOTDOCVAL|4|18|3|Totale documento in valuta
RITFIS|4|18|3|Ritenute fiscali RITFIS|4|18|3|Ritenute fiscali
RITSOC|4|18|3|Ritenute sociali RITSOC|4|18|3|Ritenute sociali
REVCHARGE|4|18|3|Reverse charge REVCHARGE|4|18|3|Reverse charge
PROVVIS|1|1|0|Tipo movimento (" " Normale, "P" Provvisorio cancellabile, "C" Provvisorio cespiti) PROVVIS|1|1|0|Tipo movimento (< > Normale, Provvisorio <P> cancellabile, <C> cespiti, <B> bilancio costi/ricavi
CODVALI|1|3|0|Codice valuta intra-comunitaria CODVALI|1|3|0|Codice valuta intra-comunitaria
CAMBIOI|4|15|6|Cambio della valuta intra-comunitaria CAMBIOI|4|15|6|Cambio della valuta intra-comunitaria
CORRLIRE|4|18|3|Corrispettivo in lire intra-comunitario CORRLIRE|4|18|3|Corrispettivo in lire intra-comunitario
@ -60,6 +61,7 @@ TFINVIO|7|1|0|Flag Invio Trasferimento Fatture
TFDATA|5|8|0|Data ultimo invio Trasferimento Fatture TFDATA|5|8|0|Data ultimo invio Trasferimento Fatture
IVALIQ|8|1|0|Iva per cassa liquidata completamente IVALIQ|8|1|0|Iva per cassa liquidata completamente
KEYFPPRO|1|80|0|Chiavi dell'FPPRO [KEYPRGINVIO;KEYHEADERFATT;KEYBODYFATT] KEYFPPRO|1|80|0|Chiavi dell'FPPRO [KEYPRGINVIO;KEYHEADERFATT;KEYBODYFATT]
MOVCOLL|3|7|0|Movimento collegato
4 4
NUMREG| NUMREG|
DATAREG+NUMREG|X DATAREG+NUMREG|X

View File

@ -212,8 +212,10 @@ public:
void put(const char* fieldname, long double val) void put(const char* fieldname, long double val)
{ put(fieldname, real(val)); } { put(fieldname, real(val)); }
#endif #endif
// @cmember Incrementa il contenuto del campo <p fieldname> in formato reale // @cmember Incrementa il contenuto del campo <p fieldname> in formato reale
void add(const char* fieldname, const real& val); void add(const char* fieldname, const real& val);
// @cmember Decrementa il contenuto del campo <p fieldname> in formato reale
void sub(const char* fieldname, const real& val) { add(fieldname, -val); }
// @cmember Vuota il campo puntato da <p fieldname> // @cmember Vuota il campo puntato da <p fieldname>
virtual void zero(const char * fieldname); virtual void zero(const char * fieldname);
@ -513,6 +515,13 @@ public:
void put(const char* fieldname, const char* val) void put(const char* fieldname, const char* val)
{ curr().put(fieldname, val);} { curr().put(fieldname, val);}
// @cmember Incrementa il contenuto del campo <p fieldname> di tipo real
void add(const char* fieldname, const real& val)
{ curr().add(fieldname, val); }
// @cmember Incrementa il contenuto del campo <p fieldname> di tipo real
void sub(const char* fieldname, const real& val)
{ curr().sub(fieldname, val); }
// @cmember Vuota il contenuto del campo <p fieldname> nel record corrente (vedi <mf TRectype::zero>) // @cmember Vuota il contenuto del campo <p fieldname> nel record corrente (vedi <mf TRectype::zero>)
void zero(const char * fieldname) void zero(const char * fieldname)
{ curr().zero(fieldname);} { curr().zero(fieldname);}

View File

@ -59,6 +59,7 @@
#define MOV_IVALIQ "IVALIQ" #define MOV_IVALIQ "IVALIQ"
#define MOV_KEYFPPRO "KEYFPPRO" #define MOV_KEYFPPRO "KEYFPPRO"
#define MOV_DATAELABF9 "DATAELABF9" #define MOV_DATAELABF9 "DATAELABF9"
#define MOV_MOVCOLL "MOVCOLL"
#define NUMREG_PROVVISORIO 999999L #define NUMREG_PROVVISORIO 999999L

View File

@ -11,8 +11,12 @@
#define SLD_PAVERE "PAVERE" #define SLD_PAVERE "PAVERE"
#define SLD_DATAULMOV "DATAULMOV" #define SLD_DATAULMOV "DATAULMOV"
#define SLD_NUMULTMOV "NUMULTMOV" #define SLD_NUMULTMOV "NUMULTMOV"
#define SLD_PAVEREPRO "PAVEREPRO"
#define SLD_PDAREPRO "PDAREPRO" #define SLD_PDAREPRO "PDAREPRO"
#define SLD_PAVEREPRO "PAVEREPRO"
#define SLD_PDAREPROB "PDAREPROB"
#define SLD_PAVEREPROB "PAVEREPROB"
#define SLD_PDAREPROC "PDAREPROC"
#define SLD_PAVEREPROC "PAVEREPROC"
#define SLD_FLSCA "FLSCA" #define SLD_FLSCA "FLSCA"
#define SLD_FLAGSALFIN "FLAGSALFIN" #define SLD_FLAGSALFIN "FLAGSALFIN"
#define SLD_SALDOFIN "SALDOFIN" #define SLD_SALDOFIN "SALDOFIN"

View File

@ -184,6 +184,11 @@ long TPayLine_app::export_clifo(long codcf, TPayLine_recset& clienti, TLog_repor
row.add(TR("Fallimento"), 9); // Status legale row.add(TR("Fallimento"), 9); // Status legale
row.add(TR("Bloccato"), 10); // Status bloccato row.add(TR("Bloccato"), 10); // Status bloccato
} }
else
{
row.add("", 9); // Status legale
row.add("", 10); // Status bloccato
}
clienti.new_rec(row); clienti.new_rec(row);
return codcf; return codcf;