Patch level : 12.0 700
Files correlati : fp Commento : - Merge commits - Aggiunta personalizzazione calcoli righe di tipo merce per il fruttivendolo
This commit is contained in:
		
						commit
						c308f94190
					
				
							
								
								
									
										4
									
								
								cd/test/770698.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								cd/test/770698.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
77tbca7.msk
 | 
			
		||||
777.exe
 | 
			
		||||
 | 
			
		||||
Certificazione unica (CU) 2019
 | 
			
		||||
							
								
								
									
										32
									
								
								cd/test/770698a.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								cd/test/770698a.ini
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
			
		||||
[Main]
 | 
			
		||||
Demo=0
 | 
			
		||||
 | 
			
		||||
[771]
 | 
			
		||||
File(121) = 77tbca7.msk|X
 | 
			
		||||
Patch = 698
 | 
			
		||||
Versione = 21511200
 | 
			
		||||
 | 
			
		||||
[777]
 | 
			
		||||
File(134) = 777.exe|X
 | 
			
		||||
Patch = 698
 | 
			
		||||
Versione = 21511200
 | 
			
		||||
 | 
			
		||||
[7799]
 | 
			
		||||
Kill(0) = batbca7.msk|x
 | 
			
		||||
Kill(1) = batbcaf.msk|x
 | 
			
		||||
Kill(2) = batbent.msk|x
 | 
			
		||||
 | 
			
		||||
[77]
 | 
			
		||||
Data = 06-06-2016
 | 
			
		||||
Descrizione = Percipienti (Mod.770)
 | 
			
		||||
Dischi = 1
 | 
			
		||||
Edit_4 = 770 -3
 | 
			
		||||
Moduli = ba
 | 
			
		||||
OEM = 
 | 
			
		||||
Patch = 698
 | 
			
		||||
PostProcess = 
 | 
			
		||||
PreProcess = 
 | 
			
		||||
Prezzo(1) = 
 | 
			
		||||
Prezzo(2) = 
 | 
			
		||||
Versione = 21511200
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								cd/test/770698a1.zip
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								cd/test/770698a1.zip
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										3
									
								
								cd/test/ba0698.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								cd/test/ba0698.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
ba8.exe
 | 
			
		||||
 | 
			
		||||
Modificata esportazione in excel
 | 
			
		||||
							
								
								
									
										34
									
								
								cd/test/ba0698a.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								cd/test/ba0698a.ini
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
[Main]
 | 
			
		||||
Demo=0
 | 
			
		||||
 | 
			
		||||
[ba1]
 | 
			
		||||
Edit_4 = ba3 -0
 | 
			
		||||
Edit_5 = ba3 -0
 | 
			
		||||
Edit_6 = ba4 -1
 | 
			
		||||
File(76) = ba8.exe|X
 | 
			
		||||
Patch = 698
 | 
			
		||||
Versione = 21511200
 | 
			
		||||
 | 
			
		||||
[ba99]
 | 
			
		||||
Kill(0) = wxmsw240.dll|x
 | 
			
		||||
Kill(1) = batbsce.txt|x
 | 
			
		||||
Kill(2) = bastfsc.rep|x
 | 
			
		||||
Kill(3) = bastfsc.msk|x
 | 
			
		||||
Kill(4) = bastcms.msk|x
 | 
			
		||||
Kill(5) = bastcms.rep|x
 | 
			
		||||
Kill(6) = bastuue.rep|x
 | 
			
		||||
Kill(7) = bastuue.msk|x
 | 
			
		||||
 | 
			
		||||
[ba]
 | 
			
		||||
Data = 24-05-2018
 | 
			
		||||
Descrizione = Base
 | 
			
		||||
Dischi = 1
 | 
			
		||||
Moduli = sy
 | 
			
		||||
OEM = 
 | 
			
		||||
Patch = 698
 | 
			
		||||
PostProcess = bainst -0 BA
 | 
			
		||||
PreProcess = 
 | 
			
		||||
Prezzo(1) = 
 | 
			
		||||
Prezzo(2) = 
 | 
			
		||||
Versione = 21511200
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								cd/test/ba0698a1.zip
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								cd/test/ba0698a1.zip
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										4
									
								
								cd/test/ba0699.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								cd/test/ba0699.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
ba4200b.msk
 | 
			
		||||
ba4200c.msk
 | 
			
		||||
 | 
			
		||||
Certificazione unica (CU) 2019
 | 
			
		||||
							
								
								
									
										35
									
								
								cd/test/ba0699a.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								cd/test/ba0699a.ini
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,35 @@
 | 
			
		||||
[Main]
 | 
			
		||||
Demo=0
 | 
			
		||||
 | 
			
		||||
[ba1]
 | 
			
		||||
Edit_4 = ba3 -0
 | 
			
		||||
Edit_5 = ba3 -0
 | 
			
		||||
Edit_6 = ba4 -1
 | 
			
		||||
File(54) = ba4200b.msk|X
 | 
			
		||||
File(55) = ba4200c.msk|X
 | 
			
		||||
Patch = 699
 | 
			
		||||
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 = 12-05-2017
 | 
			
		||||
Descrizione = Base
 | 
			
		||||
Dischi = 1
 | 
			
		||||
Moduli = sy
 | 
			
		||||
OEM = 
 | 
			
		||||
Patch = 699
 | 
			
		||||
PostProcess = bainst -0 BA
 | 
			
		||||
PreProcess = 
 | 
			
		||||
Prezzo(1) = 
 | 
			
		||||
Prezzo(2) = 
 | 
			
		||||
Versione = 21511200
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								cd/test/ba0699a1.zip
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								cd/test/ba0699a1.zip
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										3
									
								
								cd/test/cg0698.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								cd/test/cg0698.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
cg4.exe
 | 
			
		||||
 | 
			
		||||
Le righe IVA di tipo non soggetto e con competenza precedente non venivano incluse in liquidazione
 | 
			
		||||
							
								
								
									
										94
									
								
								cd/test/cg0698a.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								cd/test/cg0698a.ini
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,94 @@
 | 
			
		||||
[Main]
 | 
			
		||||
Demo=0
 | 
			
		||||
 | 
			
		||||
[cg1]
 | 
			
		||||
Edit_23 = cg2 -0
 | 
			
		||||
File(39) = cg4.exe|X
 | 
			
		||||
Patch = 698
 | 
			
		||||
Versione = 21511200
 | 
			
		||||
 | 
			
		||||
[cg99]
 | 
			
		||||
Kill(0) = bastntb.msk|x
 | 
			
		||||
Kill(1) = batbntb.msk|x
 | 
			
		||||
Kill(2) = batbpdb.msk|x
 | 
			
		||||
Kill(3) = batbivd.msk|x
 | 
			
		||||
Kill(4) = batbmsp.msk|x
 | 
			
		||||
Kill(5) = batbvet.msk|x
 | 
			
		||||
Kill(6) = batbcve.msk|x
 | 
			
		||||
Kill(7) = batbndo.msk|x
 | 
			
		||||
Kill(8) = bastcve.rep|x
 | 
			
		||||
Kill(9) = batbtit.msk|x
 | 
			
		||||
Kill(10) = bastver.rep|x
 | 
			
		||||
Kill(11) = bastpor.rep|x
 | 
			
		||||
Kill(12) = batbarb.msk|x
 | 
			
		||||
Kill(13) = batbind.msk|x
 | 
			
		||||
Kill(14) = bastcve.msk|x
 | 
			
		||||
Kill(15) = bastarb.msk|x
 | 
			
		||||
Kill(16) = batbleg.msk|x
 | 
			
		||||
Kill(17) = bastscc.rep|x
 | 
			
		||||
Kill(18) = bastscc.msk|x
 | 
			
		||||
Kill(19) = cgtbcon.msk|x
 | 
			
		||||
Kill(20) = bastcco.msk|x
 | 
			
		||||
Kill(21) = bastver.msk|x
 | 
			
		||||
Kill(22) = batbpor.msk|x
 | 
			
		||||
Kill(23) = bastvet.rep|x
 | 
			
		||||
Kill(24) = batbcfi.msk|x
 | 
			
		||||
Kill(25) = batbdpn.msk|x
 | 
			
		||||
Kill(26) = batbscc.msk|x
 | 
			
		||||
Kill(27) = bastntb.rep|x
 | 
			
		||||
Kill(28) = bastarb.rep|x
 | 
			
		||||
Kill(29) = batbesc.msk|x
 | 
			
		||||
Kill(30) = bastivd.msk|x
 | 
			
		||||
Kill(31) = bastzon.rep|x
 | 
			
		||||
Kill(32) = bastcco.rep|x
 | 
			
		||||
Kill(33) = bastmsp.msk|x
 | 
			
		||||
Kill(34) = batbzon.msk|x
 | 
			
		||||
Kill(35) = bastesc.rep|x
 | 
			
		||||
Kill(36) = bastdpn.msk|x
 | 
			
		||||
Kill(37) = batbcco.msk|x
 | 
			
		||||
Kill(38) = bastzon.msk|x
 | 
			
		||||
Kill(39) = bastleg.msk|x
 | 
			
		||||
Kill(40) = batblia.msk|x
 | 
			
		||||
Kill(41) = bastleg.rep|x
 | 
			
		||||
Kill(42) = bastdpn.rep|x
 | 
			
		||||
Kill(43) = bastndo.rep|x
 | 
			
		||||
Kill(44) = batbinl.msk|x
 | 
			
		||||
Kill(45) = batbtra.msk|x
 | 
			
		||||
Kill(46) = bastreg.msk|x
 | 
			
		||||
Kill(47) = batbreg.msk|x
 | 
			
		||||
Kill(48) = bastvet.msk|x
 | 
			
		||||
Kill(49) = bastcam.msk|x
 | 
			
		||||
Kill(50) = batbins.msk|x
 | 
			
		||||
Kill(51) = bastivd.rep|x
 | 
			
		||||
Kill(52) = batbnot.msk|x
 | 
			
		||||
Kill(53) = bastpdb.msk|x
 | 
			
		||||
Kill(54) = bastnot.msk|x
 | 
			
		||||
Kill(55) = bastcfi.rep|x
 | 
			
		||||
Kill(56) = bastnot.rep|x
 | 
			
		||||
Kill(57) = bastpdb.rep|x
 | 
			
		||||
Kill(58) = bastndo.msk|x
 | 
			
		||||
Kill(59) = bastesc.msk|x
 | 
			
		||||
Kill(60) = bastpor.msk|x
 | 
			
		||||
Kill(61) = batbver.msk|x
 | 
			
		||||
Kill(62) = batblia.msk|x
 | 
			
		||||
Kill(63) = batbdel.msk|x
 | 
			
		||||
Kill(64) = bastcam.rep|x
 | 
			
		||||
Kill(65) = bastcfi.msk|x
 | 
			
		||||
Kill(66) = batbcam.msk|x
 | 
			
		||||
Kill(67) = batblbu.msk|x
 | 
			
		||||
Kill(68) = bastmsp.rep|x
 | 
			
		||||
Kill(69) = bastreg.rep|x
 | 
			
		||||
 | 
			
		||||
[cg]
 | 
			
		||||
Data = 06-06-2016
 | 
			
		||||
Descrizione = Contabilita' Generale
 | 
			
		||||
Dischi = 1
 | 
			
		||||
Moduli = ba,pr9
 | 
			
		||||
OEM = 
 | 
			
		||||
Patch = 698
 | 
			
		||||
PostProcess = bainst -0 CG
 | 
			
		||||
PreProcess = 
 | 
			
		||||
Prezzo(1) = 
 | 
			
		||||
Prezzo(2) = 
 | 
			
		||||
Versione = 21511200
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								cd/test/cg0698a1.zip
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								cd/test/cg0698a1.zip
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										3
									
								
								cd/test/ve0698.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								cd/test/ve0698.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
ve0200d.msk
 | 
			
		||||
 | 
			
		||||
Ricompilata la maschera ve0200d
 | 
			
		||||
							
								
								
									
										134
									
								
								cd/test/ve0698a.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								cd/test/ve0698a.ini
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,134 @@
 | 
			
		||||
[Main]
 | 
			
		||||
Demo=0
 | 
			
		||||
 | 
			
		||||
[ve9]
 | 
			
		||||
Edit_163 = ve0 -4
 | 
			
		||||
Edit_33 = ve0 -0
 | 
			
		||||
Edit_4 = ve0 -4
 | 
			
		||||
Edit_47 = ve2 -3
 | 
			
		||||
Edit_5 = ve0 -4
 | 
			
		||||
File(147) = ve0200d.msk|X
 | 
			
		||||
Patch = 0698
 | 
			
		||||
Versione = 21511200
 | 
			
		||||
 | 
			
		||||
[ve99]
 | 
			
		||||
Kill(0) = batbcld.msk|x
 | 
			
		||||
Kill(1) = bastspp.rep|x
 | 
			
		||||
Kill(2) = batbgmc.msk|x
 | 
			
		||||
Kill(3) = bastbnp.rep|x
 | 
			
		||||
Kill(4) = bastasf.rep|x
 | 
			
		||||
Kill(5) = bastabe.msk|x
 | 
			
		||||
Kill(6) = bastprs.msk|x
 | 
			
		||||
Kill(7) = batbcra.msk|x
 | 
			
		||||
Kill(8) = ve7300a.msk|x
 | 
			
		||||
Kill(9) = bastcra.rep|x
 | 
			
		||||
Kill(10) = batbfid.msk|x
 | 
			
		||||
Kill(11) = bastctr.rep|x
 | 
			
		||||
Kill(12) = ve7200a.frm|x
 | 
			
		||||
Kill(13) = batbgsa.msk|x
 | 
			
		||||
Kill(14) = batbgcg.msk|x
 | 
			
		||||
Kill(15) = batbrfa.msk|x
 | 
			
		||||
Kill(16) = eftbbnp.msk|x
 | 
			
		||||
Kill(17) = bastbnp.msk|x
 | 
			
		||||
Kill(18) = bastimb.rep|x
 | 
			
		||||
Kill(19) = batbfrr.msk|x
 | 
			
		||||
Kill(20) = ve7701a.ini|x
 | 
			
		||||
Kill(21) = batbcau.msk|x
 | 
			
		||||
Kill(22) = batbasf.msk|x
 | 
			
		||||
Kill(23) = bastgcg.msk|x
 | 
			
		||||
Kill(24) = basteld.rep|x
 | 
			
		||||
Kill(25) = bastgca.rep|x
 | 
			
		||||
Kill(26) = bastprs.rep|x
 | 
			
		||||
Kill(27) = bastfrd.rep|x
 | 
			
		||||
Kill(28) = batbfrm.msk|x
 | 
			
		||||
Kill(29) = bastnum.rep|x
 | 
			
		||||
Kill(30) = bastctr.msk|x
 | 
			
		||||
Kill(31) = bastfrr.msk|x
 | 
			
		||||
Kill(32) = basteld.msk|x
 | 
			
		||||
Kill(33) = bastcaa.rep|x
 | 
			
		||||
Kill(34) = bastfrd.msk|x
 | 
			
		||||
Kill(35) = bastcau.msk|x
 | 
			
		||||
Kill(36) = baststd.rep|x
 | 
			
		||||
Kill(37) = ve7.exe|x
 | 
			
		||||
Kill(38) = ve7500a.msk|x
 | 
			
		||||
Kill(39) = batbctr.msk|x
 | 
			
		||||
Kill(40) = bastcra.msk|x
 | 
			
		||||
Kill(41) = batbnum.msk|x
 | 
			
		||||
Kill(42) = baststd.msk|x
 | 
			
		||||
Kill(43) = batbgca.msk|x
 | 
			
		||||
Kill(44) = bastrfa.msk|x
 | 
			
		||||
Kill(45) = bastimb.msk|x
 | 
			
		||||
Kill(46) = basttip.rep|x
 | 
			
		||||
Kill(47) = bastrfc.rep|x
 | 
			
		||||
Kill(48) = ve7600a.msk|x
 | 
			
		||||
Kill(49) = batbtip.msk|x
 | 
			
		||||
Kill(50) = batbstd.msk|x
 | 
			
		||||
Kill(51) = batbfsa.msk|x
 | 
			
		||||
Kill(52) = bastgmc.msk|x
 | 
			
		||||
Kill(53) = ve7300a.frm|x
 | 
			
		||||
Kill(54) = bastums.msk|x
 | 
			
		||||
Kill(55) = bastfrr.rep|x
 | 
			
		||||
Kill(56) = batbcaa.msk|x
 | 
			
		||||
Kill(57) = bastfrm.rep|x
 | 
			
		||||
Kill(58) = bastspp.msk|x
 | 
			
		||||
Kill(59) = basttag.rep|x
 | 
			
		||||
Kill(60) = bastrfc.msk|x
 | 
			
		||||
Kill(61) = batbspp.msk|x
 | 
			
		||||
Kill(62) = ve7100a.msk|x
 | 
			
		||||
Kill(63) = ve7400conf.ini|x
 | 
			
		||||
Kill(64) = bastcau.rep|x
 | 
			
		||||
Kill(65) = efstbnp.rep|x
 | 
			
		||||
Kill(66) = basttag.msk|x
 | 
			
		||||
Kill(67) = batbprs.msk|x
 | 
			
		||||
Kill(68) = batbtag.msk|x
 | 
			
		||||
Kill(69) = bastabe.rep|x
 | 
			
		||||
Kill(70) = bastcaa.msk|x
 | 
			
		||||
Kill(71) = bastubi.rep|x
 | 
			
		||||
Kill(72) = batbubi.msk|x
 | 
			
		||||
Kill(73) = bastubi.msk|x
 | 
			
		||||
Kill(74) = bastgca.msk|x
 | 
			
		||||
Kill(75) = batbfca.msk|x
 | 
			
		||||
Kill(76) = basttri.msk|x
 | 
			
		||||
Kill(77) = ve7700a.msk|x
 | 
			
		||||
Kill(78) = batbrfc.msk|x
 | 
			
		||||
Kill(79) = ve7200a.msk|x
 | 
			
		||||
Kill(80) = batbums.msk|x
 | 
			
		||||
Kill(81) = bastfca.msk|x
 | 
			
		||||
Kill(82) = batbmre.msk|x
 | 
			
		||||
Kill(83) = ve7400a.ini|x
 | 
			
		||||
Kill(84) = bastasf.msk|x
 | 
			
		||||
Kill(85) = batbabe.msk|x
 | 
			
		||||
Kill(86) = basttri.rep|x
 | 
			
		||||
Kill(87) = bastfca.rep|x
 | 
			
		||||
Kill(88) = batbprv.msk|x
 | 
			
		||||
Kill(89) = bastfrm.msk|x
 | 
			
		||||
Kill(90) = batbbnp.msk|x
 | 
			
		||||
Kill(91) = efstbnp.msk|x
 | 
			
		||||
Kill(92) = bastums.rep|x
 | 
			
		||||
Kill(93) = bastnum.msk|x
 | 
			
		||||
Kill(94) = batbfrd.msk|x
 | 
			
		||||
Kill(95) = bastgmc.rep|x
 | 
			
		||||
Kill(96) = basttip.msk|x
 | 
			
		||||
Kill(97) = bastrfa.rep|x
 | 
			
		||||
Kill(98) = batbacr.msk|x
 | 
			
		||||
Kill(99) = batbimb.msk|x
 | 
			
		||||
Kill(100) = ve7400a.msk|x
 | 
			
		||||
Kill(101) = batbtri.msk|x
 | 
			
		||||
Kill(102) = batbeld.msk|x
 | 
			
		||||
Kill(103) = batbspt.msk|x
 | 
			
		||||
Kill(104) = bastgcg.rep|x
 | 
			
		||||
Kill(105) = batbpro.msk|x
 | 
			
		||||
 | 
			
		||||
[ve]
 | 
			
		||||
Data = 06-06-2016
 | 
			
		||||
Descrizione = Vendite
 | 
			
		||||
Dischi = 1
 | 
			
		||||
Moduli = ba,cg9,pr9,mg9,sv9,in9,ef9
 | 
			
		||||
OEM = 
 | 
			
		||||
Patch = 0698
 | 
			
		||||
PostProcess = bainst -0 VE
 | 
			
		||||
PreProcess = 
 | 
			
		||||
Prezzo(1) = 
 | 
			
		||||
Prezzo(2) = 
 | 
			
		||||
Versione = 21511200
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								cd/test/ve0698a1.zip
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								cd/test/ve0698a1.zip
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										1079
									
								
								exe/install.ini
									
									
									
									
									
								
							
							
						
						
									
										1079
									
								
								exe/install.ini
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -909,8 +909,7 @@ BEGIN
 | 
			
		||||
  OUTPUT LST_AF4_EVECC
 | 
			
		||||
  ITEM " |Nessuno"
 | 
			
		||||
  ITEM "1|Vittime di richieste di natura estorsiva"
 | 
			
		||||
  ITEM "3|Residenti a Lampedusa e Linosa nel 2011"
 | 
			
		||||
  ITEM "8|Altri eventi eccezionali"
 | 
			
		||||
  ITEM "5|Contribuenti colpiti da altri eventi eccezionali"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BOOLEAN FLD_AF4_RFDIVERSA
 | 
			
		||||
 | 
			
		||||
@ -1025,8 +1025,7 @@ BEGIN
 | 
			
		||||
  OUTPUT LST_AG5_EVECC
 | 
			
		||||
  ITEM " |Nessuno"
 | 
			
		||||
  ITEM "1|Vittime di richieste di natura estorsiva"
 | 
			
		||||
  ITEM "3|Residenti a Lampedusa e Linosa nel 2011"
 | 
			
		||||
  ITEM "6|Altri eventi eccezionali"
 | 
			
		||||
  ITEM "5|Contribuenti colpiti da altri eventi eccezionali"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BOOLEAN CHK_AG5_RFDSL
 | 
			
		||||
 | 
			
		||||
@ -12,8 +12,9 @@ int main(int argc, char** argv)
 | 
			
		||||
    case  3: cg0400(argc,argv); break; // Progressivi IVA
 | 
			
		||||
    case  4: cg0500(argc,argv); break; // Causali contabili
 | 
			
		||||
    case  5: cg0600(argc,argv); break; // Tabelle contabili
 | 
			
		||||
    case  6: cg0700(argc,argv); break; // Clienti/Fornitori occasionali
 | 
			
		||||
    default: cg0100(argc,argv); break; // Piano dei conti
 | 
			
		||||
		case  6: cg0700(argc, argv); break; // Clienti/Fornitori occasionali
 | 
			
		||||
		case  7: cg0800(argc, argv); break; // Stampa progressivi IVA avanzata
 | 
			
		||||
		default: cg0100(argc,argv); break; // Piano dei conti
 | 
			
		||||
  }
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -8,6 +8,7 @@ int cg0400(int argc, char* argv[]);
 | 
			
		||||
int cg0500(int argc, char* argv[]);
 | 
			
		||||
int cg0600(int argc, char* argv[]);
 | 
			
		||||
int cg0700(int argc, char* argv[]);
 | 
			
		||||
int cg0800(int argc, char* argv[]);
 | 
			
		||||
 | 
			
		||||
#endif // __CG0_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										107
									
								
								src/cg/cg0800.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								src/cg/cg0800.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,107 @@
 | 
			
		||||
#include <applicat.h>
 | 
			
		||||
#include <automask.h>
 | 
			
		||||
#include <reprint.h>
 | 
			
		||||
#include <variant.h>
 | 
			
		||||
 | 
			
		||||
#include "cglib05.h"
 | 
			
		||||
#include "cg0800a.h"
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
// TRiepilogoIVA_mask
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
class TRiepilogoIVA_mask : public TAutomask
 | 
			
		||||
{
 | 
			
		||||
protected:
 | 
			
		||||
	virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
	TRiepilogoIVA_mask() : TAutomask("cg0800a") { }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
bool TRiepilogoIVA_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | 
			
		||||
{
 | 
			
		||||
	TRiepilogoIVA_mask & m = (TRiepilogoIVA_mask &) o.mask();
 | 
			
		||||
 | 
			
		||||
	switch (o.dlg())
 | 
			
		||||
	{
 | 
			
		||||
	case F_DAMESE:
 | 
			
		||||
		if (e == fe_modify || e == fe_close)
 | 
			
		||||
		{
 | 
			
		||||
			if (atoi(o.get()) > m.get_int(F_AMESE))
 | 
			
		||||
				m.set(F_AMESE, o.get());
 | 
			
		||||
		}
 | 
			
		||||
		break;
 | 
			
		||||
	case F_AMESE:
 | 
			
		||||
		if (e == fe_modify || e == fe_close)
 | 
			
		||||
		{
 | 
			
		||||
			if (atoi(o.get()) < m.get_int(F_DAMESE))
 | 
			
		||||
				o.set(m.get(F_DAMESE));
 | 
			
		||||
		}
 | 
			
		||||
		break;
 | 
			
		||||
	default:
 | 
			
		||||
		break;
 | 
			
		||||
	}
 | 
			
		||||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
// TRiepilogoIVA_app
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
class TRiepilogoIVA_app : public TSkeleton_application
 | 
			
		||||
{
 | 
			
		||||
protected:
 | 
			
		||||
	virtual void main_loop();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void TRiepilogoIVA_app::main_loop()
 | 
			
		||||
{
 | 
			
		||||
	TRiepilogoIVA_mask m;
 | 
			
		||||
 | 
			
		||||
	while (m.run() != K_QUIT)
 | 
			
		||||
	{
 | 
			
		||||
		TRiepilogoIVA_report rep;
 | 
			
		||||
		TFilename repname = m.get(F_REPORT);
 | 
			
		||||
		TRiepilogoIVA_recordset * recset = new TRiepilogoIVA_recordset;
 | 
			
		||||
 | 
			
		||||
		if (repname.blank())
 | 
			
		||||
			repname = "cg0800a";
 | 
			
		||||
 | 
			
		||||
		 rep.load(repname);
 | 
			
		||||
		 if (recset != NULL)
 | 
			
		||||
		 {
 | 
			
		||||
			 const int anno = m.get_int(F_ANNO);
 | 
			
		||||
			 int damese = m.get_int(F_DAMESE);
 | 
			
		||||
			 int amese = m.get_int(F_AMESE);
 | 
			
		||||
 | 
			
		||||
			 if (damese == 13)
 | 
			
		||||
			 {
 | 
			
		||||
				 damese = 1;
 | 
			
		||||
				 amese = 12;
 | 
			
		||||
			 }
 | 
			
		||||
 | 
			
		||||
			 const TDate da(1, damese, anno);
 | 
			
		||||
			 TDate a(1, amese, anno);
 | 
			
		||||
 | 
			
		||||
			 a.set_end_month();
 | 
			
		||||
			 recset->freeze();
 | 
			
		||||
			 recset->set_from(da);
 | 
			
		||||
			 recset->set_to(a);
 | 
			
		||||
			 recset->set_var("#ANNO", m.get_long(F_ANNO), true);
 | 
			
		||||
			 recset->set_var("#DAMESE", m.get_long(F_DAMESE), true);
 | 
			
		||||
			 recset->set_var("#AMESE", m.get_long(F_AMESE), true);
 | 
			
		||||
			 recset->unfreeze();
 | 
			
		||||
			 rep.set_recordset(recset);
 | 
			
		||||
 | 
			
		||||
			 rep.print_or_preview();
 | 
			
		||||
		 }
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int cg0800(int argc, char* argv[])
 | 
			
		||||
{     
 | 
			
		||||
  TRiepilogoIVA_app app;
 | 
			
		||||
  app.run(argc, argv, TR("Stampa progressivi IVA avanzata"));
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										144
									
								
								src/cg/cg0800a.rep
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								src/cg/cg0800a.rep
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,144 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8" ?>
 | 
			
		||||
<report name="cg0800a" lpi="6" class="cg0800">
 | 
			
		||||
 <description>Riepilogo progressivi IVA</description>
 | 
			
		||||
 <font face="Arial" size="7" />
 | 
			
		||||
 <section type="Head" pattern="1">
 | 
			
		||||
  <field x="4" type="Data" width="10" pattern="1">
 | 
			
		||||
   <source>#SYSTEM.DATE</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="39" type="Testo" align="center" width="4" pattern="1" text="Ditta">
 | 
			
		||||
   <source>#SYSTEM.RAGSOC</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="45" type="Stringa" align="center" width="50" pattern="1">
 | 
			
		||||
   <source>#SYSTEM.RAGSOC</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="127" type="Testo" width="4" pattern="1" text="Pag.">
 | 
			
		||||
   <source>#PAGE</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="131.5" type="Numero" align="right" width="5" pattern="1">
 | 
			
		||||
   <source>#PAGE</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="28" y="1" type="Testo" width="32" height="2" pattern="1" text="Progressivi IVA">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="62.5" y="1" type="Numero" align="right" width="10" height="2" pattern="1">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
   <source>#ANNO</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="73.5" y="1" type="Testo" width="4" height="2" pattern="1" text="da">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="78" y="1" type="Array" width="20" height="2" pattern="1">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
   <source>#DAMESE</source>
 | 
			
		||||
   <list>
 | 
			
		||||
    <li Value="Gennaio" Code="1" />
 | 
			
		||||
    <li Value="Febbraio" Code="2" />
 | 
			
		||||
    <li Value="Marzo" Code="3" />
 | 
			
		||||
    <li Value="Aprile" Code="4" />
 | 
			
		||||
    <li Value="Maggio" Code="5" />
 | 
			
		||||
    <li Value="Giugno" Code="6" />
 | 
			
		||||
    <li Value="Luglio" Code="7" />
 | 
			
		||||
    <li Value="Agosto" Code="8" />
 | 
			
		||||
    <li Value="Settembre" Code="9" />
 | 
			
		||||
    <li Value="Ottobre" Code="10" />
 | 
			
		||||
    <li Value="Novembre" Code="11" />
 | 
			
		||||
    <li Value="Dicembre" Code="12" />
 | 
			
		||||
   </list>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="99" y="1" type="Testo" width="4" height="2" pattern="1" text="a">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="102.5" y="1" type="Array" width="20" height="2" pattern="1">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
   <source>#AMESE</source>
 | 
			
		||||
   <list>
 | 
			
		||||
    <li Value="Gennaio" Code="1" />
 | 
			
		||||
    <li Value="Febbraio" Code="2" />
 | 
			
		||||
    <li Value="Marzo" Code="3" />
 | 
			
		||||
    <li Value="Aprile" Code="4" />
 | 
			
		||||
    <li Value="Maggio" Code="5" />
 | 
			
		||||
    <li Value="Giugno" Code="6" />
 | 
			
		||||
    <li Value="Luglio" Code="7" />
 | 
			
		||||
    <li Value="Agosto" Code="8" />
 | 
			
		||||
    <li Value="Settembre" Code="9" />
 | 
			
		||||
    <li Value="Ottobre" Code="10" />
 | 
			
		||||
    <li Value="Novembre" Code="11" />
 | 
			
		||||
    <li Value="Dicembre" Code="12" />
 | 
			
		||||
   </list>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="60" y="3" type="Testo" width="10" pattern="1" text="Vendite">
 | 
			
		||||
   <font face="Courier New" size="10" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="85.5" y="3" type="Testo" width="18" pattern="1" text="Corrispettivi">
 | 
			
		||||
   <font face="Courier New" size="10" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="114" y="3" type="Testo" width="12" pattern="1" text="Acquisti">
 | 
			
		||||
   <font face="Courier New" size="10" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="53" y="4" type="Testo" width="30" pattern="1" text="  Imponibile Imposta">
 | 
			
		||||
   <font face="Courier New" size="10" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="81" y="4" type="Testo" width="30" pattern="1" text="  Imponibile Imposta">
 | 
			
		||||
   <font face="Courier New" size="10" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="108" y="4" type="Testo" width="30" pattern="1" text="  Imponibile Imposta">
 | 
			
		||||
   <font face="Courier New" size="10" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field border="2" x="4" y="5.5" type="Linea" width="134" height="0" pattern="1" />
 | 
			
		||||
 </section>
 | 
			
		||||
 <section type="Head" level="1" pattern="1" />
 | 
			
		||||
 <section type="Body" pattern="1" />
 | 
			
		||||
 <section type="Body" level="1" pattern="1">
 | 
			
		||||
  <field x="4" type="Stringa" width="4" pattern="1">
 | 
			
		||||
   <source>COD</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="9" type="Stringa" dynamic_height="1" width="45" height="2" pattern="1">
 | 
			
		||||
   <source>DESC</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="55" type="Valuta" align="right" width="13" pattern="1" hide_zero="1" text="###.###.###,@@">
 | 
			
		||||
   <source>IMPVEN</source>
 | 
			
		||||
   <postscript description="B1.0 POSTSCRIPT">#THIS @
 | 
			
		||||
#F1.102 +!</postscript>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="69.5" type="Valuta" align="right" width="13" pattern="1" hide_zero="1" text="###.###.###,@@">
 | 
			
		||||
   <source>IVAVEN</source>
 | 
			
		||||
   <postscript description="B1.0 POSTSCRIPT">#THIS @
 | 
			
		||||
#F1.103 +!</postscript>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="82.5" type="Valuta" align="right" width="13" pattern="1" hide_zero="1" text="###.###.###,@@">
 | 
			
		||||
   <source>IMPCORR</source>
 | 
			
		||||
   <postscript description="B1.0 POSTSCRIPT">#THIS @
 | 
			
		||||
#F1.104 +!</postscript>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="96.5" type="Valuta" align="right" width="13" pattern="1" hide_zero="1" text="###.###.###,@@">
 | 
			
		||||
   <source>IVACORR</source>
 | 
			
		||||
   <postscript description="B1.0 POSTSCRIPT">#THIS @
 | 
			
		||||
#F1.105 +!</postscript>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="110" type="Valuta" align="right" width="13" pattern="1" hide_zero="1" text="###.###.###,@@">
 | 
			
		||||
   <source>IMPACQ</source>
 | 
			
		||||
   <postscript description="B1.0 POSTSCRIPT">#THIS @
 | 
			
		||||
#F1.106 +!</postscript>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="123" type="Valuta" align="right" width="13" pattern="1" hide_zero="1" text="###.###.###,@@">
 | 
			
		||||
   <source>IVAACQ</source>
 | 
			
		||||
   <postscript description="B1.0 POSTSCRIPT">#THIS @
 | 
			
		||||
#F1.107 +!</postscript>
 | 
			
		||||
  </field>
 | 
			
		||||
 </section>
 | 
			
		||||
 <section type="Foot" pattern="1" />
 | 
			
		||||
 <section type="Foot" level="1" pattern="1">
 | 
			
		||||
  <field border="2" x="4" y="0.5" type="Linea" width="134" height="0" pattern="1" />
 | 
			
		||||
  <field x="9" y="1" type="Testo" width="20" height="2" id="101" pattern="1" text="Totale">
 | 
			
		||||
   <source>DESC</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="55" y="1" type="Valuta" align="right" width="13" id="102" pattern="1" hide_zero="1" text="###.###.###,@@" />
 | 
			
		||||
  <field x="69.5" y="1" type="Valuta" align="right" width="13" id="103" pattern="1" hide_zero="1" text="###.###.###,@@" />
 | 
			
		||||
  <field x="82.5" y="1" type="Valuta" align="right" width="13" id="104" pattern="1" hide_zero="1" text="###.###.###,@@" />
 | 
			
		||||
  <field x="96.5" y="1" type="Valuta" align="right" width="13" id="105" pattern="1" hide_zero="1" text="###.###.###,@@" />
 | 
			
		||||
  <field x="110" y="1" type="Valuta" align="right" width="13" id="106" pattern="1" hide_zero="1" text="###.###.###,@@" />
 | 
			
		||||
  <field x="123" y="1" type="Valuta" align="right" width="13" id="107" pattern="1" hide_zero="1" text="###.###.###,@@" />
 | 
			
		||||
 </section>
 | 
			
		||||
 <sql>USE 25 KEY 1 SELECT BETWEEN(23.DATAREG;#FROMDATE;#TODATE) \nJOIN 23 INTO NUMREG==NUMREG";</sql>
 | 
			
		||||
</report>
 | 
			
		||||
							
								
								
									
										87
									
								
								src/cg/cg0800a.uml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								src/cg/cg0800a.uml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,87 @@
 | 
			
		||||
#include "cg0800a.h"
 | 
			
		||||
 | 
			
		||||
TOOLBAR "topbar" 0 0 0 2
 | 
			
		||||
BUTTON DLG_PRINT 2 2
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 1 "Stampa"
 | 
			
		||||
  PICTURE BMP_PRINT
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BUTTON DLG_SETPRINT 2 2
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 1 "Imposta"
 | 
			
		||||
  PICTURE BMP_SETPRINT
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BUTTON DLG_EDIT 2 2
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 1 "~Edit"
 | 
			
		||||
  PICTURE BMP_EDIT
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
#include <helpbar.h>
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
 | 
			
		||||
PAGE "Stampa Riepilogo IVA" -1 -1 62 5
 | 
			
		||||
 | 
			
		||||
GROUPBOX DLG_NULL 74 3
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 0 ""
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
NUMBER F_CODDITTA 5
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 2 1 "Ditta "
 | 
			
		||||
  FLAGS "FRD"
 | 
			
		||||
  USE LF_NDITTE KEY 1
 | 
			
		||||
  INPUT CODDITTA F_CODDITTA
 | 
			
		||||
  OUTPUT F_RAGSOC RAGSOC
 | 
			
		||||
  CHECKTYPE REQUIRED
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING F_RAGSOC 50
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 15 1 "Ragione "
 | 
			
		||||
  FLAGS "D"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
NUMBER F_ANNO 4
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 2 3 "Anno      "
 | 
			
		||||
  FLAGS "AP"
 | 
			
		||||
  CHECKTYPE REQUIRED
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
LIST F_DAMESE 20
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 2 5 "Da mese   "
 | 
			
		||||
	ITEM "13|13a liquid."
 | 
			
		||||
  FLAGS "MP"
 | 
			
		||||
	MESSAGE COPY,F_AMESE
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
LIST F_AMESE 20
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 2 7 " A mese   "
 | 
			
		||||
	ITEM "13|13a liquid."
 | 
			
		||||
  FLAGS "MP"
 | 
			
		||||
	WARINIG "Il mese di inizio non può essere successico al mese di fine"
 | 
			
		||||
	VALIDATE F_DAMESE<=F_AMESE
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING F_REPORT 256 50
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 2 -3 "Tipo di stampa  "
 | 
			
		||||
  RSELECT "cg0800a"
 | 
			
		||||
  CHECKTYPE NORMAL
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING DLG_PROFILE 256 50
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 2 -1 "Profilo         "
 | 
			
		||||
  PSELECT
 | 
			
		||||
END
 | 
			
		||||
ENDPAGE
 | 
			
		||||
 | 
			
		||||
ENDMASK
 | 
			
		||||
@ -57,5 +57,6 @@
 | 
			
		||||
#define F_RAGSOC             505
 | 
			
		||||
#define F_SCELTE             506
 | 
			
		||||
#define F_DATASTAMPA         507
 | 
			
		||||
#define F_DATA_LIQ					 508
 | 
			
		||||
 | 
			
		||||
#endif  // __CG3200_H
 | 
			
		||||
 | 
			
		||||
@ -4,7 +4,7 @@
 | 
			
		||||
 | 
			
		||||
int main(int argc,char** argv)
 | 
			
		||||
{
 | 
			
		||||
  const int n = argc > 1 ? argv[1][1]-'0' : 0; 
 | 
			
		||||
  const int n = argc > 1 ? abs(atoi(argv[1])) : 0; 
 | 
			
		||||
  switch (n)
 | 
			
		||||
  {
 | 
			
		||||
  case  1: cg4200(argc,argv); break; // Copia archivi
 | 
			
		||||
@ -13,10 +13,11 @@ int main(int argc,char** argv)
 | 
			
		||||
  case  4: cg4500(argc,argv); break; // Apertura nuovo esercizio
 | 
			
		||||
  case  5: cg4600(argc,argv); break; // Chiusura /Apertura
 | 
			
		||||
  case  6: cg4700(argc,argv); break; // Gestione acconti
 | 
			
		||||
  //case  7: cg4800(argc,argv); break; // Creazione versamenti per acconto
 | 
			
		||||
  case  7: cg4800(argc,argv); break; // Creazione versamenti per acconto
 | 
			
		||||
  case  8: cg4900(argc,argv); break; // Visualizzazione liquidazione acconti
 | 
			
		||||
  case  9: cg4a00(argc,argv); break; // Gestione Autotrasportatori
 | 
			
		||||
  default: cg4100(argc,argv); break; // Ricalcolo saldi
 | 
			
		||||
	case  9: cg4a00(argc, argv); break; // Gestione Autotrasportatori
 | 
			
		||||
	case  10: cg4b00(argc, argv); break; // Stampa progressivi IVA per competenza
 | 
			
		||||
	default: cg4100(argc,argv); break; // Ricalcolo saldi
 | 
			
		||||
  }
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -11,6 +11,7 @@ int cg4700(int argc, char* argv[]);
 | 
			
		||||
int cg4800(int argc, char* argv[]);
 | 
			
		||||
int cg4900(int argc, char* argv[]);
 | 
			
		||||
int cg4a00(int argc, char* argv[]);
 | 
			
		||||
int cg4b00(int argc, char* argv[]);
 | 
			
		||||
 | 
			
		||||
#endif // __CG4_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -891,8 +891,7 @@ bool TLiquidazione_app::set_liquidazione()
 | 
			
		||||
	if (k == K_ENTER) 
 | 
			
		||||
  {                   
 | 
			
		||||
    // handlers have set everything
 | 
			
		||||
    _month   = _what == trimestre ? m.get_int(CG43_LST_TRIM) : 
 | 
			
		||||
    m.get_int(CG43_LST_MESE);
 | 
			
		||||
    _month   = _what == trimestre ? m.get_int(CG43_LST_TRIM) : m.get_int(CG43_LST_MESE);
 | 
			
		||||
   
 | 
			
		||||
    _year       = m.get(CG43_FLD_ANNO);
 | 
			
		||||
    _date       = m.get(CG43_FLD_DATA);
 | 
			
		||||
 | 
			
		||||
@ -1157,7 +1157,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
 | 
			
		||||
#ifdef DBG
 | 
			
		||||
		long nr = _mov->get_long(MOV_NUMREG);
 | 
			
		||||
 | 
			
		||||
		if (nr == 18489 || nr == 27710)
 | 
			
		||||
		if (nr == 17146)
 | 
			
		||||
				int i = 1;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@ -1184,6 +1184,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
 | 
			
		||||
      if (date.year() != year_int)  // Controlla anno di appartenenza, altrimenti is_date_ok potrebbe non funzionare
 | 
			
		||||
        continue;
 | 
			
		||||
    }  
 | 
			
		||||
   
 | 
			
		||||
    const TRectype& rcs     = _cur->curr(LF_CAUSALI);
 | 
			
		||||
		const TDate datareg     = _mov->get_date(MOV_DATAREG);
 | 
			
		||||
		const TDate datadoc     = _mov->get_date(MOV_DATADOC);
 | 
			
		||||
@ -1547,7 +1548,9 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
 | 
			
		||||
		  const int tp = clifo.get_int(CLI_ALLEG);
 | 
			
		||||
 | 
			
		||||
#ifdef DBG
 | 
			
		||||
			if (nr == 25722 || nr == 27710)
 | 
			
		||||
			long nr = _mov->get_long(MOV_NUMREG);
 | 
			
		||||
 | 
			
		||||
			if (nr >= 35363 && nr <= 35368)
 | 
			
		||||
				int i = 1;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@ -2025,7 +2028,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
 | 
			
		||||
        real imponibile = is_detraibile == 0 ? impon_det : impon_ind;
 | 
			
		||||
        real imposta    = is_detraibile == 0? impos_det : impos_ind;
 | 
			
		||||
				const TDate datareg = _mov->get_date(MOV_DATAREG);
 | 
			
		||||
				const bool ok = (is_month_ok(month, datareg.month()) || month == 13) && (atoi(_year) == datareg.year());
 | 
			
		||||
				const bool ok = (is_month_ok(month, liqmonth == 0 ? datareg.month() : liqmonth) || month == 13) && (atoi(_year) == datareg.year());
 | 
			
		||||
 | 
			
		||||
				if (civa.senza_imposta() && !ok)
 | 
			
		||||
						continue;
 | 
			
		||||
 | 
			
		||||
@ -104,10 +104,8 @@ bool VersAcc_app::create()
 | 
			
		||||
  TDate oggi(TODAY);
 | 
			
		||||
  _year = oggi.year();
 | 
			
		||||
 | 
			
		||||
  begin_wait();
 | 
			
		||||
  build_nomiditte();
 | 
			
		||||
  build_ditte_sheet();
 | 
			
		||||
  end_wait();
 | 
			
		||||
  
 | 
			
		||||
  dispatch_e_menu(BAR_ITEM_ID(1));
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										157
									
								
								src/cg/cg4b00.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										157
									
								
								src/cg/cg4b00.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,157 @@
 | 
			
		||||
#include <applicat.h>
 | 
			
		||||
#include <automask.h>
 | 
			
		||||
#include <reprint.h>
 | 
			
		||||
#include <variant.h>
 | 
			
		||||
 | 
			
		||||
#include "cglib05.h"
 | 
			
		||||
#include "cg4b00a.h"
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
// TRiepilogoIVA_mask
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
class TRiepilogoIVA_mask : public TAutomask
 | 
			
		||||
{
 | 
			
		||||
protected:
 | 
			
		||||
	virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
	TRiepilogoIVA_mask() : TAutomask("cg4b00a") { }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
bool TRiepilogoIVA_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | 
			
		||||
{
 | 
			
		||||
	TRiepilogoIVA_mask & m = (TRiepilogoIVA_mask &)o.mask();
 | 
			
		||||
 | 
			
		||||
	switch (o.dlg())
 | 
			
		||||
	{
 | 
			
		||||
	case F_DADATA:
 | 
			
		||||
		if (e == fe_modify || e == fe_close)
 | 
			
		||||
		{
 | 
			
		||||
			if (TDate(o.get()) > m.get_date(F_ADATA))
 | 
			
		||||
				m.set(F_ADATA, o.get());
 | 
			
		||||
		}
 | 
			
		||||
		break;
 | 
			
		||||
	case F_ADATA:
 | 
			
		||||
		if (e == fe_modify || e == fe_close)
 | 
			
		||||
		{
 | 
			
		||||
			if (TDate(o.get()) < m.get_date(F_DADATA))
 | 
			
		||||
				o.set(m.get(F_DADATA));
 | 
			
		||||
		}
 | 
			
		||||
	case F_DASOTTOC:
 | 
			
		||||
		if (e == fe_modify || e == fe_close)
 | 
			
		||||
		{
 | 
			
		||||
			TString da; da.format("%03d%03d%06ld", m.get_int(F_DAGRUPPO), m.get_int(F_DACONTO), m.get_long(F_DASOTTOC));
 | 
			
		||||
			TString a; a.format("%03d%03d%06ld", m.get_int(F_AGRUPPO), m.get_int(F_ACONTO), m.get_long(F_ASOTTOC));
 | 
			
		||||
 | 
			
		||||
			if (da > a)
 | 
			
		||||
			{
 | 
			
		||||
				m.set(F_AGRUPPO, da.left(3));
 | 
			
		||||
				m.set(F_ACONTO, da.mid(3, 3));
 | 
			
		||||
				m.set(F_ASOTTOC, da.right(6), 0x3);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		break;
 | 
			
		||||
	case F_ASOTTOC:
 | 
			
		||||
		if (e == fe_modify || e == fe_close)
 | 
			
		||||
		{
 | 
			
		||||
			TString da; da.format("%03d%03d%06ld", m.get_int(F_DAGRUPPO), m.get_int(F_DACONTO), m.get_long(F_DASOTTOC));
 | 
			
		||||
			TString a; a.format("%03d%03d%06ld", m.get_int(F_AGRUPPO), m.get_int(F_ACONTO), m.get_long(F_ASOTTOC));
 | 
			
		||||
 | 
			
		||||
			if (da > a)
 | 
			
		||||
			{
 | 
			
		||||
				m.set(F_AGRUPPO, da.left(3));
 | 
			
		||||
				m.set(F_ACONTO, da.mid(3, 3));
 | 
			
		||||
				m.set(F_ASOTTOC, da.right(6), 0x3);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	default:
 | 
			
		||||
		break;
 | 
			
		||||
	}
 | 
			
		||||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
// TRiepilogoIVAcompetenza_recordset
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
class TRiepilogoIVAcompetenza_recordset : public TRiepilogoIVA_recordset
 | 
			
		||||
{
 | 
			
		||||
	bool _senzacompetenza;
 | 
			
		||||
	bool _competenzadiversa;
 | 
			
		||||
	bool _registrazioneritardo;
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
	virtual bool set_senzacompetenzaIVA(bool on) { _senzacompetenza = on; return on; }
 | 
			
		||||
	virtual bool set_competenzadiversaIVA(bool on) { _competenzadiversa = on; return on; }
 | 
			
		||||
	virtual bool set_registrazioneIVAritardo(bool on) { return _registrazioneritardo = on; return on; }
 | 
			
		||||
	virtual bool senzacompetenzaIVA() { return _senzacompetenza; }
 | 
			
		||||
	virtual bool competenzadiversaIVA() { return _competenzadiversa; }
 | 
			
		||||
	virtual bool registrazioneIVAritardo() { return _registrazioneritardo; }
 | 
			
		||||
 | 
			
		||||
	TRiepilogoIVAcompetenza_recordset() {}
 | 
			
		||||
	virtual ~TRiepilogoIVAcompetenza_recordset() { }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
// TRiepilogoIVA_app
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
class TRiepilogoIVA_app : public TSkeleton_application
 | 
			
		||||
{
 | 
			
		||||
protected:
 | 
			
		||||
	virtual void main_loop();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void TRiepilogoIVA_app::main_loop()
 | 
			
		||||
{
 | 
			
		||||
	TRiepilogoIVA_mask m;
 | 
			
		||||
 | 
			
		||||
	while (m.run() != K_QUIT)
 | 
			
		||||
	{
 | 
			
		||||
		TRiepilogoIVA_report rep;
 | 
			
		||||
		TFilename repname = m.get(F_REPORT);
 | 
			
		||||
		TRiepilogoIVAcompetenza_recordset *recset = new TRiepilogoIVAcompetenza_recordset;
 | 
			
		||||
 | 
			
		||||
		if (repname.blank())
 | 
			
		||||
			repname = "cg4b00a";
 | 
			
		||||
		rep.load(repname);
 | 
			
		||||
		if (recset != NULL)
 | 
			
		||||
		{
 | 
			
		||||
		 recset->freeze();
 | 
			
		||||
		 recset->set_senzacompetenzaIVA(m.get_bool(F_NOCOMP));
 | 
			
		||||
		 recset->set_competenzadiversaIVA(m.get_bool(F_COMPDIV));
 | 
			
		||||
		 recset->set_registrazioneIVAritardo(m.get_bool(F_REGRIT));
 | 
			
		||||
		 recset->set_from(m.get_date(F_DADATA));
 | 
			
		||||
		 recset->set_to(m.get_date(F_ADATA));
 | 
			
		||||
 | 
			
		||||
		 recset->set_from_conto(m.get_long(F_DAGRUPPO), m.get_long(F_DACONTO), m.get_long(F_DASOTTOC));
 | 
			
		||||
		 if (m.get_long(F_DAGRUPPO) != 0)
 | 
			
		||||
			 recset->set_to_conto(m.get_long(F_AGRUPPO), m.get_long(F_ACONTO), m.get_long(F_ASOTTOC));
 | 
			
		||||
		 recset->set_var("#NOCOMP", m.get_bool(F_NOCOMP), true);
 | 
			
		||||
		 recset->set_var("#COMPDIV", m.get_bool(F_COMPDIV), true);
 | 
			
		||||
		 recset->set_var("#REGRIT", m.get_bool(F_REGRIT), true);
 | 
			
		||||
		 recset->set_var("#TODATE", m.get_date(F_ADATA), true);
 | 
			
		||||
		 recset->set_var("#FROMDATE", m.get_date(F_DADATA), true);
 | 
			
		||||
		 recset->set_var("#TODATE", m.get_date(F_ADATA), true);
 | 
			
		||||
 		 recset->set_var("#DAGRUPPO", m.get_long(F_DAGRUPPO), true);
 | 
			
		||||
	 	 recset->set_var("#DACONTO", m.get_long(F_DACONTO), true);
 | 
			
		||||
		 recset->set_var("#DASOTTOCONTO", m.get_long(F_DASOTTOC), true);
 | 
			
		||||
		 recset->set_var("#AGRUPPO", m.get_long(F_AGRUPPO), true);
 | 
			
		||||
		 recset->set_var("#ACONTO", m.get_long(F_ACONTO), true);
 | 
			
		||||
		 recset->set_var("#ASOTTOCONTO", m.get_long(F_ASOTTOC), true);
 | 
			
		||||
		 recset->unfreeze();
 | 
			
		||||
		 rep.set_recordset(recset);
 | 
			
		||||
 | 
			
		||||
		 rep.print_or_preview();
 | 
			
		||||
	 }
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int cg4b00(int argc, char* argv[])
 | 
			
		||||
{     
 | 
			
		||||
  TRiepilogoIVA_app app;
 | 
			
		||||
  app.run(argc, argv, TR("Stampa progressivi IVA per competenza"));
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										19
									
								
								src/cg/cg4b00a.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/cg/cg4b00a.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
			
		||||
#define F_CODDITTA	 101
 | 
			
		||||
#define F_RAGSOC		 102
 | 
			
		||||
#define F_DADATA     103
 | 
			
		||||
#define F_ADATA      104
 | 
			
		||||
#define F_DAGRUPPO   105
 | 
			
		||||
#define F_DACONTO    106
 | 
			
		||||
#define F_DASOTTOC   107
 | 
			
		||||
#define F_AGRUPPO    108
 | 
			
		||||
#define F_ACONTO     109
 | 
			
		||||
#define F_ASOTTOC    110
 | 
			
		||||
#define F_DADESCR    111
 | 
			
		||||
#define F_ADESCR     112
 | 
			
		||||
#define F_NOCOMP		 113	
 | 
			
		||||
#define F_COMPDIV		 114 
 | 
			
		||||
#define F_REGRIT		 115
 | 
			
		||||
 | 
			
		||||
#define F_REPORT     200
 | 
			
		||||
#define F_PROFILO    201
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										151
									
								
								src/cg/cg4b00a.rep
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										151
									
								
								src/cg/cg4b00a.rep
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,151 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8" ?>
 | 
			
		||||
<report name="cg4b00a" lpi="6" class="cg4b00">
 | 
			
		||||
 <description>Riepilogo progressivi IVA per competenza</description>
 | 
			
		||||
 <font face="Arial" size="7" />
 | 
			
		||||
 <section type="Head" pattern="1">
 | 
			
		||||
  <field x="4" type="Data" width="10" pattern="1">
 | 
			
		||||
   <source>#SYSTEM.DATE</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="39" type="Testo" align="center" width="4" pattern="1" text="Ditta">
 | 
			
		||||
   <source>#SYSTEM.RAGSOC</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="45" type="Stringa" align="center" width="50" pattern="1">
 | 
			
		||||
   <source>#SYSTEM.RAGSOC</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="127" type="Testo" width="4" pattern="1" text="Pag.">
 | 
			
		||||
   <source>#PAGE</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="131.5" type="Numero" align="right" width="5" pattern="1">
 | 
			
		||||
   <source>#PAGE</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="7" y="1" type="Testo" width="32" height="2" pattern="1" text="Progressivi IVA dal">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="38.5" y="1" type="Data" width="20" height="2" pattern="1">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
   <source>#FROMDATE</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="59.5" y="1" type="Testo" width="4" height="2" pattern="1" text="al">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="63.5" y="1" type="Data" width="20" height="2" pattern="1">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
   <source>#TODATE</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="86" y="1" type="Testo" width="8" height="2" pattern="1" text="IVA">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="96" y="1" type="Array" width="30" height="2" pattern="1">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
   <source>#COMPIVA</source>
 | 
			
		||||
   <list>
 | 
			
		||||
    <li Value="competenza attuale" Code="1" />
 | 
			
		||||
    <li Value="competenza precedente" Code="2" />
 | 
			
		||||
    <li Value="senza competenza" Code="3" />
 | 
			
		||||
   </list>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="7" y="3" type="Testo" width="15" height="2" pattern="1" text="Da conto">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="24" y="3" type="Numero" align="right" width="6" height="2" pattern="1">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
   <source>#DAGRUPPO</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="31" y="3" type="Numero" align="right" width="6" height="2" pattern="1">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
   <source>#DACONTO</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="38" y="3" type="Numero" align="right" width="12" height="2" pattern="1">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
   <source>#DASOTTOCONTO</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="59.5" y="3" type="Testo" width="15" height="2" pattern="1" text="A conto">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="76.5" y="3" type="Numero" align="right" width="6" height="2" pattern="1">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
   <source>#AGRUPPO</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="83.5" y="3" type="Numero" align="right" width="6" height="2" pattern="1">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
   <source>#ACONTO</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="90.5" y="3" type="Numero" align="right" width="12" height="2" pattern="1">
 | 
			
		||||
   <font face="Courier New" bold="1" size="14" />
 | 
			
		||||
   <source>#ASOTTOCONTO</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="63" y="5" type="Testo" width="10" pattern="1" text="Vendite">
 | 
			
		||||
   <font face="Courier New" size="10" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="88" y="5" type="Testo" width="18" pattern="1" text="Corrispettivi">
 | 
			
		||||
   <font face="Courier New" size="10" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="117.5" y="5" type="Testo" width="12" pattern="1" text="Acquisti">
 | 
			
		||||
   <font face="Courier New" size="10" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="53" y="6" type="Testo" width="30" pattern="1" text="  Imponibile Imposta">
 | 
			
		||||
   <font face="Courier New" size="10" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="81" y="6" type="Testo" width="30" pattern="1" text="  Imponibile Imposta">
 | 
			
		||||
   <font face="Courier New" size="10" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="108" y="6" type="Testo" width="30" pattern="1" text="  Imponibile Imposta">
 | 
			
		||||
   <font face="Courier New" size="10" />
 | 
			
		||||
  </field>
 | 
			
		||||
  <field border="2" x="4" y="7.5" type="Linea" width="134" height="0" pattern="1" />
 | 
			
		||||
 </section>
 | 
			
		||||
 <section type="Head" level="1" pattern="1" />
 | 
			
		||||
 <section type="Body" pattern="1" />
 | 
			
		||||
 <section type="Body" level="1" pattern="1">
 | 
			
		||||
  <field x="4" type="Stringa" width="4" pattern="1">
 | 
			
		||||
   <source>COD</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="9" type="Stringa" dynamic_height="1" width="45" height="2" pattern="1">
 | 
			
		||||
   <source>DESC</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="55" type="Valuta" align="right" width="13" pattern="1" hide_zero="1" text="###.###.###,@@">
 | 
			
		||||
   <source>IMPVEN</source>
 | 
			
		||||
   <postscript description="B1.0 POSTSCRIPT">#THIS @
 | 
			
		||||
#F1.102 +!</postscript>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="69.5" type="Valuta" align="right" width="13" pattern="1" hide_zero="1" text="###.###.###,@@">
 | 
			
		||||
   <source>IVAVEN</source>
 | 
			
		||||
   <postscript description="B1.0 POSTSCRIPT">#THIS @
 | 
			
		||||
#F1.103 +!</postscript>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="82.5" type="Valuta" align="right" width="13" pattern="1" hide_zero="1" text="###.###.###,@@">
 | 
			
		||||
   <source>IMPCORR</source>
 | 
			
		||||
   <postscript description="B1.0 POSTSCRIPT">#THIS @
 | 
			
		||||
#F1.104 +!</postscript>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="96.5" type="Valuta" align="right" width="13" pattern="1" hide_zero="1" text="###.###.###,@@">
 | 
			
		||||
   <source>IVACORR</source>
 | 
			
		||||
   <postscript description="B1.0 POSTSCRIPT">#THIS @
 | 
			
		||||
#F1.105 +!</postscript>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="110" type="Valuta" align="right" width="13" pattern="1" hide_zero="1" text="###.###.###,@@">
 | 
			
		||||
   <source>IMPACQ</source>
 | 
			
		||||
   <postscript description="B1.0 POSTSCRIPT">#THIS @
 | 
			
		||||
#F1.106 +!</postscript>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="123" type="Valuta" align="right" width="13" pattern="1" hide_zero="1" text="###.###.###,@@">
 | 
			
		||||
   <source>IVAACQ</source>
 | 
			
		||||
   <postscript description="B1.0 POSTSCRIPT">#THIS @
 | 
			
		||||
#F1.107 +!</postscript>
 | 
			
		||||
  </field>
 | 
			
		||||
 </section>
 | 
			
		||||
 <section type="Foot" pattern="1" />
 | 
			
		||||
 <section type="Foot" level="1" pattern="1">
 | 
			
		||||
  <field border="2" x="4" y="0.5" type="Linea" width="134" height="0" pattern="1" />
 | 
			
		||||
  <field x="9" y="1" type="Testo" width="20" height="2" id="101" pattern="1" text="Totale">
 | 
			
		||||
   <source>DESC</source>
 | 
			
		||||
  </field>
 | 
			
		||||
  <field x="55" y="1" type="Valuta" align="right" width="13" id="102" pattern="1" hide_zero="1" text="###.###.###,@@" />
 | 
			
		||||
  <field x="69.5" y="1" type="Valuta" align="right" width="13" id="103" pattern="1" hide_zero="1" text="###.###.###,@@" />
 | 
			
		||||
  <field x="82.5" y="1" type="Valuta" align="right" width="13" id="104" pattern="1" hide_zero="1" text="###.###.###,@@" />
 | 
			
		||||
  <field x="96.5" y="1" type="Valuta" align="right" width="13" id="105" pattern="1" hide_zero="1" text="###.###.###,@@" />
 | 
			
		||||
  <field x="110" y="1" type="Valuta" align="right" width="13" id="106" pattern="1" hide_zero="1" text="###.###.###,@@" />
 | 
			
		||||
  <field x="123" y="1" type="Valuta" align="right" width="13" id="107" pattern="1" hide_zero="1" text="###.###.###,@@" />
 | 
			
		||||
 </section>
 | 
			
		||||
 <sql>USE 25 KEY 1 SELECT BETWEEN(23.DATAREG;#FROMDATE;#TODATE) \nJOIN 23 INTO NUMREG==NUMREG";</sql>
 | 
			
		||||
</report>
 | 
			
		||||
							
								
								
									
										209
									
								
								src/cg/cg4b00a.uml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										209
									
								
								src/cg/cg4b00a.uml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,209 @@
 | 
			
		||||
#include "cg4b00a.h"
 | 
			
		||||
 | 
			
		||||
TOOLBAR "topbar" 0 0 0 2
 | 
			
		||||
BUTTON DLG_PRINT 2 2
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 1 "Stampa"
 | 
			
		||||
  PICTURE BMP_PRINT
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BUTTON DLG_SETPRINT 2 2
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 1 "Imposta"
 | 
			
		||||
  PICTURE BMP_SETPRINT
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BUTTON DLG_EDIT 2 2
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 1 "~Edit"
 | 
			
		||||
  PICTURE BMP_EDIT
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
#include <helpbar.h>
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
 | 
			
		||||
PAGE "Stampa" -1 -1 62 5
 | 
			
		||||
 | 
			
		||||
GROUPBOX DLG_NULL 74 3
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 0 ""
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
NUMBER F_CODDITTA 5
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 2 1 "Ditta "
 | 
			
		||||
  FLAGS "FRD"
 | 
			
		||||
  USE LF_NDITTE KEY 1
 | 
			
		||||
  INPUT CODDITTA F_CODDITTA
 | 
			
		||||
  OUTPUT F_RAGSOC RAGSOC
 | 
			
		||||
  CHECKTYPE REQUIRED
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING F_RAGSOC 50
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 15 1 "Ragione "
 | 
			
		||||
  FLAGS "D"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
DATE F_DADATA
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 2 3 "Da:   data   "
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
DATE F_ADATA
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 2 5 " A:  data    "
 | 
			
		||||
	WARINIG "La data di inizio non può essere successico alla data di fine"
 | 
			
		||||
	VALIDATE DATE_CMP_FUNC >= F_>ADATA
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
NUMBER F_DAGRUPPO 3
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 2 7 "Da:   Gruppo "
 | 
			
		||||
  USE LF_PCON KEY 1 SELECT (CONTO="")
 | 
			
		||||
  INPUT GRUPPO F_DAGRUPPO 
 | 
			
		||||
  DISPLAY "Gruppo" GRUPPO
 | 
			
		||||
  DISPLAY "Descrizione@50" DESCR
 | 
			
		||||
  OUTPUT F_DAGRUPPO GRUPPO    
 | 
			
		||||
  CHECKTYPE NORMAL
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
NUMBER F_DACONTO 3
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 23 7 "Conto "
 | 
			
		||||
  USE LF_PCON KEY 1 SELECT (SOTTOCONTO="")
 | 
			
		||||
  INPUT GRUPPO F_DAGRUPPO 
 | 
			
		||||
  INPUT CONTO  F_DACONTO    
 | 
			
		||||
  DISPLAY "Gruppo" GRUPPO
 | 
			
		||||
  DISPLAY "Conto" CONTO
 | 
			
		||||
  DISPLAY "Descrizione@50" DESCR   
 | 
			
		||||
  OUTPUT F_DACONTO CONTO  
 | 
			
		||||
  OUTPUT F_DAGRUPPO GRUPPO
 | 
			
		||||
  CHECKTYPE NORMAL 
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
NUMBER F_DASOTTOC 6
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 36 7 "Sottoconto "
 | 
			
		||||
  USE LF_PCON
 | 
			
		||||
  INPUT GRUPPO F_DAGRUPPO 
 | 
			
		||||
  INPUT CONTO  F_DACONTO 
 | 
			
		||||
  INPUT SOTTOCONTO F_DASOTTOC
 | 
			
		||||
  DISPLAY "Gruppo" GRUPPO
 | 
			
		||||
  DISPLAY "Conto" CONTO
 | 
			
		||||
  DISPLAY "Sottoconto" SOTTOCONTO
 | 
			
		||||
  DISPLAY "Descrizione@50" DESCR
 | 
			
		||||
  OUTPUT F_DASOTTOC SOTTOCONTO
 | 
			
		||||
  OUTPUT F_DAGRUPPO GRUPPO
 | 
			
		||||
  OUTPUT F_DACONTO CONTO  
 | 
			
		||||
  OUTPUT F_DADESCR DESCR
 | 
			
		||||
  CHECKTYPE NORMAL
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING F_DADESCR 50
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 14 9 ""
 | 
			
		||||
  USE LF_PCON KEY 2
 | 
			
		||||
  INPUT DESCR F_DADESCR
 | 
			
		||||
  DISPLAY "Descrizione@50" DESCR
 | 
			
		||||
  DISPLAY "Gruppo" GRUPPO
 | 
			
		||||
  DISPLAY "Conto" CONTO
 | 
			
		||||
  DISPLAY "Sottoconto" SOTTOCONTO
 | 
			
		||||
  OUTPUT F_DASOTTOC SOTTOCONTO
 | 
			
		||||
  OUTPUT F_DACONTO CONTO
 | 
			
		||||
  OUTPUT F_DAGRUPPO GRUPPO
 | 
			
		||||
  OUTPUT F_DADESCR DESCR
 | 
			
		||||
  CHECKTYPE NORMAL
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
NUMBER F_AGRUPPO 3
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 2 11 " A:   Gruppo "
 | 
			
		||||
  USE LF_PCON KEY 1 SELECT (CONTO="")
 | 
			
		||||
  INPUT GRUPPO F_AGRUPPO 
 | 
			
		||||
  DISPLAY "Gruppo" GRUPPO
 | 
			
		||||
  DISPLAY "Descrizione@50" DESCR
 | 
			
		||||
  OUTPUT F_AGRUPPO GRUPPO    
 | 
			
		||||
  CHECKTYPE NORMAL
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
NUMBER F_ACONTO 3
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 23 11 "Conto "
 | 
			
		||||
  USE LF_PCON KEY 1 SELECT (SOTTOCONTO="")
 | 
			
		||||
  INPUT GRUPPO F_AGRUPPO 
 | 
			
		||||
  INPUT CONTO  F_ACONTO    
 | 
			
		||||
  DISPLAY "Gruppo" GRUPPO
 | 
			
		||||
  DISPLAY "Conto" CONTO
 | 
			
		||||
  DISPLAY "Descrizione@50" DESCR   
 | 
			
		||||
  OUTPUT F_ACONTO CONTO  
 | 
			
		||||
  OUTPUT F_AGRUPPO GRUPPO
 | 
			
		||||
  CHECKTYPE NORMAL 
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
NUMBER F_ASOTTOC 6
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 36 11 "Sottoconto "
 | 
			
		||||
  USE LF_PCON
 | 
			
		||||
  INPUT GRUPPO F_AGRUPPO 
 | 
			
		||||
  INPUT CONTO  F_ACONTO 
 | 
			
		||||
  INPUT SOTTOCONTO F_ASOTTOC
 | 
			
		||||
	DISPLAY "Gruppo" GRUPPO
 | 
			
		||||
  DISPLAY "Conto" CONTO
 | 
			
		||||
  DISPLAY "Sottoconto" SOTTOCONTO
 | 
			
		||||
  DISPLAY "Descrizione@50" DESCR
 | 
			
		||||
  OUTPUT F_ASOTTOC SOTTOCONTO
 | 
			
		||||
  OUTPUT F_AGRUPPO GRUPPO
 | 
			
		||||
  OUTPUT F_ACONTO CONTO  
 | 
			
		||||
  OUTPUT F_ADESCR DESCR
 | 
			
		||||
  CHECKTYPE NORMAL
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING F_ADESCR 50
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 14 13 ""
 | 
			
		||||
  USE LF_PCON KEY 2
 | 
			
		||||
  INPUT DESCR F_ADESCR
 | 
			
		||||
  DISPLAY "Descrizione@50" DESCR
 | 
			
		||||
  DISPLAY "Gruppo" GRUPPO
 | 
			
		||||
  DISPLAY "Conto" CONTO
 | 
			
		||||
  DISPLAY "Sottoconto" SOTTOCONTO
 | 
			
		||||
  OUTPUT F_ASOTTOC SOTTOCONTO
 | 
			
		||||
  OUTPUT F_ACONTO CONTO
 | 
			
		||||
  OUTPUT F_AGRUPPO GRUPPO
 | 
			
		||||
  OUTPUT F_ADESCR DESCR
 | 
			
		||||
  CHECKTYPE NORMAL
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BOOLEAN F_NOCOMP
 | 
			
		||||
BEGIN
 | 
			
		||||
	PROMPT 2 15 "Movimenti senza competenza diversa"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BOOLEAN F_COMPDIV
 | 
			
		||||
BEGIN
 | 
			
		||||
	PROMPT 2 17 "Movimenti con competenza nel periodo"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BOOLEAN F_REGRIT
 | 
			
		||||
BEGIN
 | 
			
		||||
	PROMPT 2 19 "Movimenti registrati in ritardo"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING F_REPORT 256 50
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 2 -3 "Tipo di stampa  "
 | 
			
		||||
  RSELECT "cg4b00a"
 | 
			
		||||
  CHECKTYPE NORMAL
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING DLG_PROFILE 256 50
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 2 -1 "Profilo         "
 | 
			
		||||
  PSELECT
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
 | 
			
		||||
ENDMASK
 | 
			
		||||
@ -280,6 +280,16 @@ TInteressi_IVA_table::~TInteressi_IVA_table()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int TInteressi_IVA_table::giorno_acc() const
 | 
			
		||||
{
 | 
			
		||||
	int d = get_int("I0");
 | 
			
		||||
 | 
			
		||||
	if (d == 0)
 | 
			
		||||
		d = 20;
 | 
			
		||||
	return d;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int TInteressi_IVA_table::read(int anno, int mese)
 | 
			
		||||
{
 | 
			
		||||
  TString8 k; k.format("%04d%02d",anno,mese);
 | 
			
		||||
 | 
			
		||||
@ -33,6 +33,7 @@ public:
 | 
			
		||||
  int  read(int anno, int mese);
 | 
			
		||||
  //int  status() { return _ver->status();}
 | 
			
		||||
  real get(int what);
 | 
			
		||||
	int giorno_acc() const;
 | 
			
		||||
  TInteressi_IVA_table();
 | 
			
		||||
  virtual ~TInteressi_IVA_table();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										291
									
								
								src/cg/cglib05.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										291
									
								
								src/cg/cglib05.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,291 @@
 | 
			
		||||
#include "cglib05.h"
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
// TRiepilogoIVA_recordset
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
class TRiepilogoIVA_record : public TObject
 | 
			
		||||
{
 | 
			
		||||
	TString4 _cod;
 | 
			
		||||
	TArray _values;
 | 
			
		||||
 | 
			
		||||
	real & get_val(int index);
 | 
			
		||||
	TRiepilogoIVA_record & copy(const TRiepilogoIVA_record & r);
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
	virtual TObject* dup() const { return new TRiepilogoIVA_record(*this); }
 | 
			
		||||
	const TString & cod() const { return _cod; }
 | 
			
		||||
	real & impacq() { return get_val(0); }
 | 
			
		||||
	real & ivaacq() { return get_val(1); }
 | 
			
		||||
	real & impcorr() { return get_val(2); }
 | 
			
		||||
	real & ivacorr() { return get_val(3); }
 | 
			
		||||
	real & impven() { return get_val(4); }
 | 
			
		||||
	real & ivaven() { return get_val(5); }
 | 
			
		||||
	TRiepilogoIVA_record& operator= (const TRiepilogoIVA_record & rec) { return copy(rec);}
 | 
			
		||||
 | 
			
		||||
	TRiepilogoIVA_record(const TRiepilogoIVA_record & rec) { copy(rec); }
 | 
			
		||||
 | 
			
		||||
	TRiepilogoIVA_record(const char * cod) : _cod(cod) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
TRiepilogoIVA_record & TRiepilogoIVA_record::copy(const TRiepilogoIVA_record & r)
 | 
			
		||||
{
 | 
			
		||||
	_cod = r._cod;
 | 
			
		||||
	_values = r._values;
 | 
			
		||||
	return *this;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
real & TRiepilogoIVA_record::get_val(int index)
 | 
			
		||||
{
 | 
			
		||||
	real * val = (real *)_values.objptr(index);
 | 
			
		||||
	if (val == NULL)
 | 
			
		||||
		_values.add(val = new real, index);
 | 
			
		||||
	return *val;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TRiepilogoIVA_recordset::requery()
 | 
			
		||||
{
 | 
			
		||||
	if (_freezed)
 | 
			
		||||
		return;
 | 
			
		||||
	TString wrk = query_text();
 | 
			
		||||
	TString query;
 | 
			
		||||
	TAssoc_array work_array;
 | 
			
		||||
	TString16 reg_fieldname; reg_fieldname << LF_MOV << "." << MOV_REG;
 | 
			
		||||
	TString16 datareg_fieldname; datareg_fieldname << LF_MOV << "." << MOV_DATAREG;
 | 
			
		||||
	TString16 datacomp_fieldname; datacomp_fieldname << LF_MOV << "." << MOV_MESELIQ;
 | 
			
		||||
	TString16 meseliq_fieldname; meseliq_fieldname << LF_MOV << "." << MOV_MESELIQ;
 | 
			
		||||
 | 
			
		||||
	int p = wrk.find("FROMDATE");
 | 
			
		||||
 | 
			
		||||
	if (p > 0)
 | 
			
		||||
		query << wrk.left(p) << _from_date.string();
 | 
			
		||||
	wrk.ltrim(p + 8);
 | 
			
		||||
	p = wrk.find("TODATE");
 | 
			
		||||
 | 
			
		||||
	if (p > 0)
 | 
			
		||||
	{
 | 
			
		||||
		query << wrk.left(p);
 | 
			
		||||
		if (senzacompetenzaIVA() && !competenzadiversaIVA() && !registrazioneIVAritardo())
 | 
			
		||||
			query << _to_date.string();
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			TDate to(_to_date);
 | 
			
		||||
 | 
			
		||||
			to.set_day(31);
 | 
			
		||||
			to.set_month(12);
 | 
			
		||||
			if (_to_date.month() == 12)
 | 
			
		||||
				to.addyear(1);
 | 
			
		||||
			query << to.string();
 | 
			
		||||
		}
 | 
			
		||||
		query << wrk.mid(p + 6);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	TISAM_recordset recset(query);
 | 
			
		||||
 | 
			
		||||
	for (bool ok = recset.move_first(); ok; ok = recset.move_next())
 | 
			
		||||
	{
 | 
			
		||||
		TString cod = recset.get(RMI_CODIVA).as_string();
 | 
			
		||||
		TRiepilogoIVA_record * rec = (TRiepilogoIVA_record *)work_array.objptr(cod);
 | 
			
		||||
		long gruppo = recset.get(RMI_GRUPPO).as_int();
 | 
			
		||||
		long conto = recset.get(RMI_CONTO).as_int();
 | 
			
		||||
		long sottoconto = recset.get(RMI_SOTTOCONTO).as_int();
 | 
			
		||||
 | 
			
		||||
		if (((gruppo >= _from_gruppo) && (gruppo <= _to_gruppo)) &&
 | 
			
		||||
				((conto >= _from_conto) && (conto <= _to_conto)) &&
 | 
			
		||||
				((sottoconto >= _from_sottoconto) && (conto <= _to_sottoconto)))
 | 
			
		||||
		{
 | 
			
		||||
			TRegistro codreg(recset.get(reg_fieldname).as_string());
 | 
			
		||||
 | 
			
		||||
			TipoIVA t = codreg.iva();
 | 
			
		||||
 | 
			
		||||
			// filtro competenza
 | 
			
		||||
			TDate data = recset.get(datareg_fieldname).as_date();
 | 
			
		||||
 | 
			
		||||
			if (competenzadiversaIVA())
 | 
			
		||||
			{
 | 
			
		||||
				const int meseliq = recset.get(meseliq_fieldname).as_int();
 | 
			
		||||
 | 
			
		||||
				if (meseliq != 0)
 | 
			
		||||
				{
 | 
			
		||||
					data.set_month(meseliq);
 | 
			
		||||
					data.set_end_month();
 | 
			
		||||
					if (data < _from_date || data > _to_date)
 | 
			
		||||
						continue;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if (registrazioneIVAritardo())
 | 
			
		||||
			{
 | 
			
		||||
				TDate datacomp = recset.get(datacomp_fieldname).as_date();
 | 
			
		||||
			}
 | 
			
		||||
			if (senzacompetenzaIVA() && (data < _from_date || data > _to_date))
 | 
			
		||||
				continue;
 | 
			
		||||
 | 
			
		||||
			if (rec == NULL)
 | 
			
		||||
				work_array.add(cod, rec = new TRiepilogoIVA_record(cod));
 | 
			
		||||
			if (t == iva_acquisti)
 | 
			
		||||
			{
 | 
			
		||||
				real & r = rec->impacq();
 | 
			
		||||
				r += recset.get(RMI_IMPONIBILE).as_real();
 | 
			
		||||
				real & r1 = rec->ivaacq();
 | 
			
		||||
				r1 += recset.get(RMI_IMPOSTA).as_real();
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
				if (t == iva_vendite)
 | 
			
		||||
				{
 | 
			
		||||
					if (codreg.corrispettivi())
 | 
			
		||||
					{
 | 
			
		||||
						real & r = rec->impcorr();
 | 
			
		||||
						r += recset.get(RMI_IMPONIBILE).as_real();
 | 
			
		||||
						real & r1 = rec->ivacorr();
 | 
			
		||||
						r1 += recset.get(RMI_IMPOSTA).as_real();
 | 
			
		||||
					}
 | 
			
		||||
					else
 | 
			
		||||
					{
 | 
			
		||||
						real & r = rec->impven();
 | 
			
		||||
						r += recset.get(RMI_IMPONIBILE).as_real();
 | 
			
		||||
						real & r1 = rec->ivaven();
 | 
			
		||||
						r1 += recset.get(RMI_IMPOSTA).as_real();
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	TString_array keys;
 | 
			
		||||
 | 
			
		||||
	work_array.get_keys(keys);
 | 
			
		||||
	_rows.destroy();
 | 
			
		||||
	FOR_EACH_ARRAY_ITEM(keys, i, obj)
 | 
			
		||||
	{
 | 
			
		||||
		TString & key = (TString &) *obj;
 | 
			
		||||
		TRiepilogoIVA_record & row = (TRiepilogoIVA_record &) work_array.find(key);
 | 
			
		||||
 | 
			
		||||
		_rows.add(row);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TRiepilogoIVA_recordset::move_to(TRecnotype pos)
 | 
			
		||||
{
 | 
			
		||||
	bool ok =  (pos >= 0) && (pos < items());
 | 
			
		||||
 | 
			
		||||
	if (_pos < 0)
 | 
			
		||||
		pos = 0;
 | 
			
		||||
	else
 | 
			
		||||
		if (_pos >= items())
 | 
			
		||||
			_pos = items() - 1;
 | 
			
		||||
		else
 | 
			
		||||
			_pos = pos;
 | 
			
		||||
	return ok;
 | 
			
		||||
}
 | 
			
		||||
const TString& TRiepilogoIVA_recordset::query_text() const
 | 
			
		||||
{
 | 
			
		||||
	TString & query = get_tmp_string();
 | 
			
		||||
 | 
			
		||||
	query << "USE " << LF_RMOVIVA << " KEY 1 SELECT BETWEEN(" << LF_MOV << "." << MOV_DATAREG << ";" << '"' << "FROMDATE" << '"' << ";" << '"' << "TODATE" << '"' << ") \nJOIN " << LF_MOV << " INTO NUMREG==NUMREG";
 | 
			
		||||
//	query << "USE " << LF_RMOVIVA << " KEY 1 SELECT BETWEEN(" << LF_MOV << "." << MOV_DATAREG << ";FROMDATE;TODATE) \nJOIN " << LF_MOV << " INTO NUMREG==NUMREG";
 | 
			
		||||
	return query;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const TVariant& TRiepilogoIVA_recordset::get_field(int num, const char* field) const
 | 
			
		||||
{
 | 
			
		||||
	if (*field != '#')
 | 
			
		||||
	{ 
 | 
			
		||||
		TVariant & val = get_tmp_var();
 | 
			
		||||
		TRiepilogoIVA_record & row = (TRiepilogoIVA_record &) _rows[_pos];
 | 
			
		||||
 | 
			
		||||
		if (xvt_str_compare_ignoring_case(field, IVAVEN) == 0)
 | 
			
		||||
			int i = 1;
 | 
			
		||||
		if (xvt_str_compare_ignoring_case(field, COD) == 0)
 | 
			
		||||
		{
 | 
			
		||||
			val = row.cod();
 | 
			
		||||
			return val;
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
			if (xvt_str_compare_ignoring_case(field, DESC) == 0)
 | 
			
		||||
			{
 | 
			
		||||
				TCodiceIVA c(row.cod());
 | 
			
		||||
					
 | 
			
		||||
				val = c.descrizione();
 | 
			
		||||
				return val;
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
				if (xvt_str_compare_ignoring_case(field, IMPACQ) == 0)
 | 
			
		||||
				{
 | 
			
		||||
					val = row.impacq();
 | 
			
		||||
					return val;
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
					if (xvt_str_compare_ignoring_case(field, IVAACQ) == 0)
 | 
			
		||||
					{
 | 
			
		||||
						val = row.ivaacq();
 | 
			
		||||
						return val;
 | 
			
		||||
					}
 | 
			
		||||
					else
 | 
			
		||||
						if (xvt_str_compare_ignoring_case(field, IMPCORR) == 0)
 | 
			
		||||
						{
 | 
			
		||||
							val = row.impcorr();
 | 
			
		||||
							return val;
 | 
			
		||||
						}
 | 
			
		||||
						else
 | 
			
		||||
							if (xvt_str_compare_ignoring_case(field, IVACORR) == 0)
 | 
			
		||||
							{
 | 
			
		||||
								val = row.ivacorr();
 | 
			
		||||
								return val;
 | 
			
		||||
							}
 | 
			
		||||
							else
 | 
			
		||||
								if (xvt_str_compare_ignoring_case(field, IMPVEN) == 0)
 | 
			
		||||
								{
 | 
			
		||||
									val = row.impven();
 | 
			
		||||
									return val;
 | 
			
		||||
								}
 | 
			
		||||
								else
 | 
			
		||||
									if (xvt_str_compare_ignoring_case(field, IVAVEN) == 0)
 | 
			
		||||
									{
 | 
			
		||||
										val = row.ivaven();
 | 
			
		||||
										return val;
 | 
			
		||||
									}
 | 
			
		||||
	}
 | 
			
		||||
	return NULL_VARIANT;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TRiepilogoIVA_recordset::add_field(TFieldtypes tipo, short id, int width, const char* name)
 | 
			
		||||
{
 | 
			
		||||
	TRecordset_column_info* i = new TRecordset_column_info;
 | 
			
		||||
 | 
			
		||||
	TString& n = i->_name;
 | 
			
		||||
 | 
			
		||||
	if (name && *name)
 | 
			
		||||
		n = name;
 | 
			
		||||
	i->_type = tipo;
 | 
			
		||||
	i->_pos = id;
 | 
			
		||||
	i->_width = width;
 | 
			
		||||
 | 
			
		||||
	_info.add(i);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const TVariant& TRiepilogoIVA_recordset::get(unsigned int column) const
 | 
			
		||||
{
 | 
			
		||||
	TVariant & v = get_tmp_var();
 | 
			
		||||
	if (_pos >= 0 && _pos < items() && column >= 0 && column < columns())
 | 
			
		||||
	{
 | 
			
		||||
		const TRecordset_column_info& info = column_info(column);
 | 
			
		||||
 | 
			
		||||
		v = get_field(0, info._name);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return v;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TRiepilogoIVA_recordset::TRiepilogoIVA_recordset() : TRecordset(), _pos(0), _from_date(botime), _to_date(eotime),
 | 
			
		||||
																										 _from_gruppo(0), _from_conto(0), _from_sottoconto(0L),
 | 
			
		||||
																										 _to_gruppo(999), _to_conto(999), _to_sottoconto(999999L),
 | 
			
		||||
																										 _freezed(false)
 | 
			
		||||
{
 | 
			
		||||
	add_field(_alfafld, 101, 4, COD);
 | 
			
		||||
	add_field(_alfafld, 102, 50, DESC);
 | 
			
		||||
	add_field(_realfld, 103, 18, IMPACQ);
 | 
			
		||||
	add_field(_realfld, 104, 18, IVAACQ);
 | 
			
		||||
	add_field(_realfld, 105, 18, IMPCORR);
 | 
			
		||||
	add_field(_realfld, 106, 18, IVACORR);
 | 
			
		||||
	add_field(_realfld, 107, 18, IMPVEN);
 | 
			
		||||
	add_field(_realfld, 108, 18, IVAVEN);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										83
									
								
								src/cg/cglib05.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								src/cg/cglib05.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,83 @@
 | 
			
		||||
#include <variant.h>
 | 
			
		||||
 | 
			
		||||
#include "cglib01.h"
 | 
			
		||||
#include "mov.h"
 | 
			
		||||
#include "rmoviva.h"
 | 
			
		||||
#include "../ba/ba8500.h"
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
// TRiepilogoIVA_recordset
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
#define COD "COD"
 | 
			
		||||
#define DESC "DESC"
 | 
			
		||||
#define IMPACQ "IMPACQ"
 | 
			
		||||
#define IVAACQ "IVAACQ"
 | 
			
		||||
#define IMPCORR "IMPCORR"
 | 
			
		||||
#define IVACORR "IVACORR"
 | 
			
		||||
#define IMPVEN "IMPVEN"
 | 
			
		||||
#define IVAVEN "IVAVEN"
 | 
			
		||||
 | 
			
		||||
class TRiepilogoIVA_recordset : public TRecordset
 | 
			
		||||
{
 | 
			
		||||
	TArray _rows;
 | 
			
		||||
	long   _pos;
 | 
			
		||||
	TDate _from_date;
 | 
			
		||||
	TDate _to_date;
 | 
			
		||||
	long _from_gruppo;
 | 
			
		||||
	long _from_conto;
 | 
			
		||||
	long _from_sottoconto;
 | 
			
		||||
	long _to_gruppo;
 | 
			
		||||
	long _to_conto;
 | 
			
		||||
	long _to_sottoconto;
 | 
			
		||||
	TArray _info;
 | 
			
		||||
	bool _freezed;
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
	virtual const TVariant& get_field(int num, const char* field) const;
 | 
			
		||||
	void TRiepilogoIVA_recordset::add_field(TFieldtypes tipo, short id, int width, const char* name);
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
	virtual TRecnotype items() const { return _rows.items(); }
 | 
			
		||||
	virtual bool move_to(TRecnotype pos);
 | 
			
		||||
	virtual TRecnotype current_row() const { return _pos; }
 | 
			
		||||
	virtual void requery();
 | 
			
		||||
	virtual const TString& query_text() const;
 | 
			
		||||
	virtual unsigned int columns() const { return _info.items(); }
 | 
			
		||||
	virtual const TRecordset_column_info& column_info(unsigned int column) const { return (const TRecordset_column_info&)_info[column]; }
 | 
			
		||||
	void freeze(bool on = true) { _freezed = on; }
 | 
			
		||||
	void unfreeze() { freeze(false); }
 | 
			
		||||
	//	const TString& col2name(unsigned int column) const;
 | 
			
		||||
	virtual const TVariant& get(unsigned int column) const;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	TDate set_from(const TDate& from) { return _from_date = from; }
 | 
			
		||||
	TDate set_to(const TDate& to) { return _to_date = to; }
 | 
			
		||||
	void set_from_conto(int gruppo, int conto, long sottoconto) { _from_gruppo = gruppo; _from_conto = conto; _from_sottoconto = sottoconto; }
 | 
			
		||||
	void set_to_conto(int gruppo, int conto, long sottoconto) { _to_gruppo = gruppo; _to_conto = conto; _to_sottoconto = sottoconto; }
 | 
			
		||||
 | 
			
		||||
	virtual bool set_senzacompetenzaIVA(bool on) { return true; }
 | 
			
		||||
	virtual bool set_competenzadiversaIVA(bool on) { return false; }
 | 
			
		||||
	virtual bool set_registrazioneIVAritardo(bool on) { return false; }
 | 
			
		||||
	virtual bool senzacompetenzaIVA() { return true; }
 | 
			
		||||
	virtual bool competenzadiversaIVA() { return false; }
 | 
			
		||||
	virtual bool registrazioneIVAritardo() { return false; }
 | 
			
		||||
 | 
			
		||||
	TRiepilogoIVA_recordset();
 | 
			
		||||
	virtual ~TRiepilogoIVA_recordset() { }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
// TRiepilogoIVA_report
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
class TRiepilogoIVA_report : public TReport
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
	virtual bool use_mask() { return false; }
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
	virtual bool set_recordset(TRecordset * set) { return TReport::set_recordset(set); }
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
@ -114,6 +114,8 @@ Item_09 = "Gestione F24", <gvmenu.men>
 | 
			
		||||
Item_10 = "Operazioni annuali", [CGMENU_029]
 | 
			
		||||
Item_11 = "IVA per cassa / differita", <icmenu.men>
 | 
			
		||||
Item_12 = "Gestione autotrasportatori", "cg4 -9", "F"
 | 
			
		||||
Item_13 = "Stampa progressivi avanzata", "cg0 -7", "F"
 | 
			
		||||
Item_13 = "Stampa progressivi IVA per competenza", "cg4 -10", "F"
 | 
			
		||||
 | 
			
		||||
[CGMENU_011]
 | 
			
		||||
Caption = "Tabelle ministeriali"
 | 
			
		||||
 | 
			
		||||
@ -8,8 +8,9 @@ int main(int argc, char** argv)
 | 
			
		||||
 | 
			
		||||
  switch (r)
 | 
			
		||||
  {
 | 
			
		||||
	case 2: rt = fp0300(argc, argv); break;   // Gestione fatture attive (PAA, Ex Fattura PA)
 | 
			
		||||
	case 1: rt = fp0200(argc, argv); break;	  // Inserimento massivo PEC e Cod Sdi clifo
 | 
			
		||||
	case 2: rt = fp0300(argc, argv); break;   // Gestione fatture attive (PAA, Ex Fattura PA)
 | 
			
		||||
	case 3: rt = fp0400(argc, argv); break;   // Monitor fatture passive
 | 
			
		||||
	case 4: rt = fp0500(argc, argv); break;	  // Elenco mancate consegna
 | 
			
		||||
	default: rt = fp0100(argc, argv); break;	// Configurazione
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,7 @@
 | 
			
		||||
int fp0100(int argc, char* argv[]);
 | 
			
		||||
int fp0200(int argc, char* argv[]);
 | 
			
		||||
int fp0300(int argc, char* argv[]);
 | 
			
		||||
int fp0400(int argc, char* argv[]);
 | 
			
		||||
int fp0500(int argc, char* argv[]);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@ -44,6 +44,7 @@ void TParametri_mask::save_all() const
 | 
			
		||||
	fp_settings().set_gest_alleg(get_bool(F_ESPORTAALLEG));
 | 
			
		||||
	fp_settings().set_allega_fat(get_bool(F_ESPORTADOC));
 | 
			
		||||
	fp_settings().set_f8(get_bool(F_F8));
 | 
			
		||||
	TFP_righe_custom().save_sheet(sfield(F_FORMPERS));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TParametri_mask::load_all()
 | 
			
		||||
@ -58,6 +59,7 @@ void TParametri_mask::load_all()
 | 
			
		||||
	set(F_ESPORTAALLEG, fp_settings().get_gest_alleg());
 | 
			
		||||
	set(F_ESPORTADOC, fp_settings().get_allega_fat());
 | 
			
		||||
	set(F_F8, fp_settings().is_f8());
 | 
			
		||||
	TFP_righe_custom().load_sheet(sfield(F_FORMPERS));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TParametri_mask::tipi_import() const
 | 
			
		||||
 | 
			
		||||
@ -1,15 +1,24 @@
 | 
			
		||||
#define F_INDIRIZZO			101
 | 
			
		||||
#define F_DATABASE      102
 | 
			
		||||
#define F_USER		      103
 | 
			
		||||
#define F_PASSWORD		  104
 | 
			
		||||
#define F_FLDDEST				105
 | 
			
		||||
#define F_FLDUSRDEST		106
 | 
			
		||||
#define F_COFI					107
 | 
			
		||||
#define F_ESPORTAALLEG	108
 | 
			
		||||
#define F_ESPORTADOC		109
 | 
			
		||||
#define F_F8						110
 | 
			
		||||
#define F_INDIRIZZO			201
 | 
			
		||||
#define F_DATABASE      202
 | 
			
		||||
#define F_USER		      203
 | 
			
		||||
#define F_PASSWORD		  204
 | 
			
		||||
#define F_FLDDEST				205
 | 
			
		||||
#define F_FLDUSRDEST		206
 | 
			
		||||
#define F_COFI					207
 | 
			
		||||
#define F_ESPORTAALLEG	208
 | 
			
		||||
#define F_ESPORTADOC		209
 | 
			
		||||
#define F_F8						210
 | 
			
		||||
 | 
			
		||||
#define F_SETPATCH			201
 | 
			
		||||
#define F_ENPTYTABLE		202
 | 
			
		||||
#define F_DROPTABLE			203
 | 
			
		||||
#define F_REBORNDB			204
 | 
			
		||||
#define F_SETPATCH			301
 | 
			
		||||
#define F_ENPTYTABLE		302
 | 
			
		||||
#define F_DROPTABLE			303
 | 
			
		||||
#define F_REBORNDB			304
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define F_FORMPERS			401
 | 
			
		||||
 | 
			
		||||
#define S_TIPODOC		    101
 | 
			
		||||
#define S_TIPORIGA		  102
 | 
			
		||||
#define S_QTA						103
 | 
			
		||||
#define S_PREZZO				104
 | 
			
		||||
#define S_IMPONIBILE		105
 | 
			
		||||
@ -89,6 +89,7 @@ END
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
PAGE "Assistenza FP" 0 2 0 0
 | 
			
		||||
 | 
			
		||||
BUTTON F_SETPATCH 15 2
 | 
			
		||||
@ -116,4 +117,90 @@ BEGIN
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
 | 
			
		||||
PAGE "Formule Pers " 0 2 0 0
 | 
			
		||||
 | 
			
		||||
SPREADSHEET F_FORMPERS 60 6
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 1 "Personalizzazioni calcolo tipi righe "
 | 
			
		||||
  ITEM "Tipo\nDoc@4"
 | 
			
		||||
  ITEM "Tipo\nRiga@4"
 | 
			
		||||
  ITEM "Qta"
 | 
			
		||||
  ITEM "Prezzo"
 | 
			
		||||
  ITEM "Imponibile"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
ENDMASK
 | 
			
		||||
 | 
			
		||||
PAGE "Elementi spredsheet" 0 2 0 0
 | 
			
		||||
 | 
			
		||||
STRING S_TIPODOC 4
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 15 1  "Tipo doc "
 | 
			
		||||
  HELP "Lasciare libero per tutti i tipo documento"
 | 
			
		||||
  USE %TIP
 | 
			
		||||
  SELECT S3[37,40]!=""
 | 
			
		||||
  INPUT CODTAB S_TIPODOC
 | 
			
		||||
  DISPLAY "Codice@10" CODTAB
 | 
			
		||||
  DISPLAY "Descrizione@50" S0
 | 
			
		||||
  DISPLAY "Tipo SDI@10" S3[37,40]
 | 
			
		||||
  OUTPUT S_TIPODOC CODTAB
 | 
			
		||||
  FLAG "UPA"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING S_TIPORIGA 4
 | 
			
		||||
BEGIN
 | 
			
		||||
	PROMPT 15 1  "Tipo riga "
 | 
			
		||||
	USE %TRI
 | 
			
		||||
	INPUT CODTAB S_TIPORIGA
 | 
			
		||||
	DISPLAY "Codice@10" CODTAB
 | 
			
		||||
	DISPLAY "Descrizione@50" S0
 | 
			
		||||
	OUTPUT S_TIPORIGA CODTAB
 | 
			
		||||
	CHECKTYPE REQUIRED
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING S_QTA 10
 | 
			
		||||
BEGIN
 | 
			
		||||
	PROMPT 0 2 "Qta"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING S_PREZZO 10
 | 
			
		||||
BEGIN
 | 
			
		||||
	PROMPT 0 2 "Prezzo"
 | 
			
		||||
	USE %FRR
 | 
			
		||||
	INPUT CODTAB S_PREZZO
 | 
			
		||||
	DISPLAY "Codice@10" CODTAB
 | 
			
		||||
	DISPLAY "Descrizione@50" S0
 | 
			
		||||
	OUTPUT S_PREZZO CODTAB
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING S_IMPONIBILE 10
 | 
			
		||||
BEGIN
 | 
			
		||||
	PROMPT 0 2 "Imponibile"
 | 
			
		||||
	USE %FRR
 | 
			
		||||
	INPUT CODTAB S_IMPONIBILE
 | 
			
		||||
	DISPLAY "Codice" CODTAB
 | 
			
		||||
	DISPLAY "Descrizione@50" S0
 | 
			
		||||
	OUTPUT S_IMPONIBILE CODTAB
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
 | 
			
		||||
TOOLBAR "Riga" 0 0 0 2
 | 
			
		||||
 | 
			
		||||
BUTTON DLG_OK 2 2 
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 1 ""
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
BUTTON DLG_CANCEL 2 2 
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 1 ""
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
 | 
			
		||||
ENDMASK
 | 
			
		||||
@ -10,6 +10,16 @@
 | 
			
		||||
#include "fp0400a.h"
 | 
			
		||||
#include "fplib.h"
 | 
			
		||||
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
	no_cf					= -14,	// Non trovato con cod.fisc. (se non ho nemmeno la p.iva)
 | 
			
		||||
	no_match_cf		= -15,	// Trovato forn. ma il cod. fisc non corrisponde
 | 
			
		||||
	no_forn				= -5,		// Non trovato forn.con p.iva
 | 
			
		||||
	err_match_db	= -3,		// Salvato in db ma non corrisponde a un fornitore
 | 
			
		||||
	saved_db			= 0,		// Salvato già in db FPPRO
 | 
			
		||||
	found_piva		= 2,		// Lo trovo con p.iva
 | 
			
		||||
	found_cf			= 4,		// Non ho p.iva lo trovo con cod.fisc
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class TPassive_mask : public TAutomask
 | 
			
		||||
{
 | 
			
		||||
@ -19,11 +29,15 @@ protected:
 | 
			
		||||
	bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
 | 
			
		||||
	void next_page(int p) override;
 | 
			
		||||
	void fill();
 | 
			
		||||
	static int find_fornitore(TLocalisamfile& clifo);
 | 
			
		||||
	static void add_row_err_forn(int forn_code, TSheet_field& sf_err, TString& denom);
 | 
			
		||||
	static void aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TSheet_field& sf_err);
 | 
			
		||||
	void init();
 | 
			
		||||
 | 
			
		||||
	void load_all_fields();
 | 
			
		||||
 | 
			
		||||
	bool _filter_changed;
 | 
			
		||||
	void salva_for();
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
	void save_all_fields() const;
 | 
			
		||||
@ -52,91 +66,186 @@ void TPassive_mask::next_page(int p)
 | 
			
		||||
 | 
			
		||||
void TPassive_mask::fill()
 | 
			
		||||
{
 | 
			
		||||
	TSheet_field& sf = sfield(F_DOCS);
 | 
			
		||||
	//TString_array& sht = sf.rows_array();
 | 
			
		||||
	TSheet_field& sf	= sfield(F_DOCS);
 | 
			
		||||
	TSheet_field& sf_err = sfield(F_ERR);
 | 
			
		||||
	TString query;
 | 
			
		||||
	TLocalisamfile clifo(LF_CLIFO);
 | 
			
		||||
 | 
			
		||||
	const TDate dal		= get(F_DATAINI);
 | 
			
		||||
	const TDate al		= get(F_DATAEND);
 | 
			
		||||
 | 
			
		||||
	sf.hide();
 | 
			
		||||
	sf.destroy();
 | 
			
		||||
 | 
			
		||||
	const TDate dal = get(F_DATAINI);
 | 
			
		||||
	const TDate al = get(F_DATAEND);
 | 
			
		||||
 | 
			
		||||
	TString query;
 | 
			
		||||
	sf_err.hide();
 | 
			
		||||
	sf_err.destroy();
 | 
			
		||||
	
 | 
			
		||||
	query << "SELECT YEAR(P7_DATA) as ANNO, P7_TIPODOC as [TIPO_SDI], P7_NUMERO as [NUM_DOC], " <<
 | 
			
		||||
		"P7_DATA as [DATA_DOC], PQ_IMPTOTDOC as [TOT_DOC], P2_ANADENOMIN AS [RAG_SOC], P2_ANANOME AS NOME, " <<
 | 
			
		||||
		"P2_ANACOGNOME AS COGNOME, P2_FISCIVACOD AS [P_IVA], P2_CODFISCALE AS [COD_FISC], P2_FISCIVAPAESE AS [COD_PAESE], PP_ATTACHMENT ATTACHMENT, P1_CODDEST as [COD_SDI], PU_PEC AS PEC\n" <<
 | 
			
		||||
	query << "SELECT YEAR(P7_DATA) AS ANNO, P7_TIPODOC AS [TIPO_SDI], P7_NUMERO AS [NUM_DOC], " <<
 | 
			
		||||
		"P7_DATA AS [DATA_DOC], PQ_IMPTOTDOC AS [TOT_DOC], P2_ANADENOMIN AS [RAG_SOC], P2_ANANOME AS NOME, " <<
 | 
			
		||||
		"P2_ANACOGNOME AS COGNOME, P2_FISCIVACOD AS [P_IVA], P2_CODFISCALE AS [COD_FISC], P2_FISCIVAPAESE AS [COD_PAESE],\n" <<
 | 
			
		||||
		"COUNT(PP_ATTACHMENT) AS ATTACHMENT, P1_CODDEST AS [COD_SDI], PU_PEC AS PEC, P1_KEYPRGINVIO AS KEYPROG, P1_KEYHEADERFATT AS KEYHEAD, P1_KEYBODYFATT AS KEYFATT, " <<
 | 
			
		||||
		"PZ_TIPOPROT AS [TIPO_PROT], PZ_NUMPROT AS [NUM_PROT], PZ_ANNOPROT AS [ANNO_PROT], PZ_TIPOCF AS [TIPO_CF], PZ_CLIFOR AS [COD_CLIFOR]\n" <<
 | 
			
		||||
		"FROM PAA0100F PAA01\n" <<
 | 
			
		||||
		"JOIN PAA0200F PAA02 ON P1_KEYPRGINVIO = P2_KEYPRGINVIO and P1_KEYHEADERFATT = P2_KEYHEADERFATT and P1_KEYBODYFATT = P2_KEYBODYFATT\n" <<
 | 
			
		||||
		"JOIN PAA0700F PAA07 ON P1_KEYPRGINVIO = P7_KEYPRGINVIO and P1_KEYHEADERFATT = P7_KEYHEADERFATT and P1_KEYBODYFATT = P7_KEYBODYFATT\n" <<
 | 
			
		||||
		"JOIN PAA2700F PAA27 ON P1_KEYPRGINVIO = PQ_KEYPRGINVIO and P1_KEYHEADERFATT = PQ_KEYHEADERFATT and P1_KEYBODYFATT = PQ_KEYBODYFATT\n" <<
 | 
			
		||||
		"LEFT JOIN PAA2600F PAA26 ON P1_KEYPRGINVIO = PP_KEYPRGINVIO and P1_KEYHEADERFATT = PP_KEYHEADERFATT and P1_KEYBODYFATT = PP_KEYBODYFATT\n" <<
 | 
			
		||||
		"LEFT JOIN PAA3200F PAA32 ON P1_KEYPRGINVIO = PU_KEYPRGINVIO and PU_KEYHEADERFATT = PU_KEYHEADERFATT and P1_KEYBODYFATT = PU_KEYBODYFATT\n" <<
 | 
			
		||||
		"WHERE P7_DATA >= \'" << dal.date2ansi() << "\' AND P7_DATA <= \'" << al.date2ansi() << "\'";
 | 
			
		||||
		"LEFT JOIN PAA3200F PAA32 ON P1_KEYPRGINVIO = PU_KEYPRGINVIO and P1_KEYHEADERFATT = PU_KEYHEADERFATT and P1_KEYBODYFATT = PU_KEYBODYFATT\n" <<
 | 
			
		||||
		"LEFT JOIN FPPRO00F FPPRO ON P1_KEYPRGINVIO = PZ_KEYPRGINVIO and P1_KEYHEADERFATT = PZ_KEYHEADERFATT and P1_KEYBODYFATT = PZ_KEYBODYFATT\n" <<
 | 
			
		||||
		"WHERE P7_DATA >= \'" << dal.date2ansi() << "\' AND P7_DATA <= \'" << al.date2ansi() << "\'\n" <<
 | 
			
		||||
		"GROUP BY YEAR(P7_DATA), P7_TIPODOC, P7_NUMERO, P7_DATA, PQ_IMPTOTDOC, P2_ANADENOMIN, P2_ANANOME, P2_ANACOGNOME, P2_FISCIVACOD, P2_CODFISCALE, P2_FISCIVAPAESE,\n" <<
 | 
			
		||||
		"P1_CODDEST, PU_PEC, P1_KEYPRGINVIO, P1_KEYHEADERFATT, P1_KEYBODYFATT, PZ_TIPOPROT, PZ_NUMPROT, PZ_ANNOPROT, PZ_TIPOCF, PZ_CLIFOR";
 | 
			
		||||
	fp_db().sq_set_exec(query, false);
 | 
			
		||||
 | 
			
		||||
	//TProgress_monitor pi(fp_db().sq_items(), nullptr);
 | 
			
		||||
 | 
			
		||||
	TLocalisamfile clifo(LF_CLIFO);
 | 
			
		||||
 | 
			
		||||
	while(fp_db().sq_next())
 | 
			
		||||
	//for(bool ok = ; ok; ok = s.sq_next())
 | 
			
		||||
	{
 | 
			
		||||
		clifo.zero();
 | 
			
		||||
		clifo.put(CLI_TIPOCF, 'F');
 | 
			
		||||
		TToken_string& row = sf.row(-1);
 | 
			
		||||
		TString denom = fp_db().sq_get("RAG_SOC");
 | 
			
		||||
		if (denom.blank()) {
 | 
			
		||||
			denom = fp_db().sq_get("NOME");
 | 
			
		||||
			denom.trim();
 | 
			
		||||
			denom << " " << fp_db().sq_get("COGNOME");
 | 
			
		||||
			denom.trim();
 | 
			
		||||
		}
 | 
			
		||||
		TString id_fisc = fp_db().sq_get("COGNOME");
 | 
			
		||||
 | 
			
		||||
		row.add(fp_db().sq_get_int("ANNO"), 0);
 | 
			
		||||
		row.add(fp_db().sq_get("TIPO_SDI"));
 | 
			
		||||
		row.add(fp_db().sq_get("NUM_DOC"));
 | 
			
		||||
		row.add(fp_db().sq_get("DATA_DOC"));
 | 
			
		||||
		row.add(fp_db().sq_get("TOT_DOC"));
 | 
			
		||||
		// Cerco se il fornitore è presente in Campo
 | 
			
		||||
 | 
			
		||||
		if (fp_db().sq_get("P_IVA") == "01903590154")
 | 
			
		||||
			bool tolla = true;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		if(fp_db().sq_get("COD_PAESE").full() && fp_db().sq_get("P_IVA").full())
 | 
			
		||||
		{
 | 
			
		||||
			clifo.setkey(5);
 | 
			
		||||
			clifo.put(CLI_STATOPAIV, fp_db().sq_get("COD_PAESE"));
 | 
			
		||||
			clifo.put(CLI_PAIV, fp_db().sq_get("P_IVA"));
 | 
			
		||||
			if(clifo.read() == NOERR)
 | 
			
		||||
				row.add(clifo.get(CLI_CODCF));
 | 
			
		||||
			else if (fp_db().sq_get("COD_PAESE") == "IT")
 | 
			
		||||
			{
 | 
			
		||||
				clifo.put(CLI_PAIV, fp_db().sq_get("P_IVA"));
 | 
			
		||||
				clifo.put(CLI_STATOPAIV, "");
 | 
			
		||||
				if (clifo.read() == NOERR)
 | 
			
		||||
					row.add(clifo.get(CLI_CODCF));
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else if(fp_db().sq_get("COD_FISC").full())
 | 
			
		||||
		{
 | 
			
		||||
			clifo.setkey(4);
 | 
			
		||||
			clifo.put(CLI_COFI, fp_db().sq_get("COD_FISC"));
 | 
			
		||||
			if (clifo.read() == NOERR)
 | 
			
		||||
				row.add(clifo.get(CLI_CODCF));
 | 
			
		||||
		}
 | 
			
		||||
		row.add(denom, sf.cid2index(S_RAGSOC));
 | 
			
		||||
 | 
			
		||||
		row.add(fp_db().sq_get("COD_PAESE") << fp_db().sq_get("P_IVA"));
 | 
			
		||||
		row.add(fp_db().sq_get("COD_FISC"));
 | 
			
		||||
		TString appo = fp_db().sq_get("ATTACHMENT");
 | 
			
		||||
		row.add( appo.blank() ? "" : "X" );
 | 
			
		||||
		row.add(fp_db().sq_get("COD_SDI").blank() ? fp_db().sq_get("PEC") : fp_db().sq_get("COD_SDI"));
 | 
			
		||||
		aggiungi_riga(clifo, sf, sf_err);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	sf.force_update();
 | 
			
		||||
	sf.show();
 | 
			
		||||
	sf_err.force_update();
 | 
			
		||||
	sf_err.show();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TSheet_field& sf_err)
 | 
			
		||||
{
 | 
			
		||||
	int forn_code = -1;
 | 
			
		||||
	TString denom								= fp_db().sq_get("RAG_SOC");
 | 
			
		||||
	const TString paa_codfisc		= fp_db().sq_get("COD_FISC");
 | 
			
		||||
	const TString paa_piva			= fp_db().sq_get("P_IVA");
 | 
			
		||||
	const TString paa_codpaese	= fp_db().sq_get("COD_PAESE");
 | 
			
		||||
	const TString paa_codsdi		= fp_db().sq_get("COD_SDI");
 | 
			
		||||
 | 
			
		||||
	TToken_string& row = sf.row(-1);
 | 
			
		||||
	
 | 
			
		||||
	clifo.zero();
 | 
			
		||||
	clifo.put(CLI_TIPOCF, 'F');
 | 
			
		||||
	
 | 
			
		||||
	if (denom.blank()) {
 | 
			
		||||
		denom = fp_db().sq_get("NOME");
 | 
			
		||||
		denom << " " << fp_db().sq_get("COGNOME");
 | 
			
		||||
	}
 | 
			
		||||
	denom.cut(50);
 | 
			
		||||
 | 
			
		||||
	row.add(fp_db().sq_get_int("ANNO"), 1);
 | 
			
		||||
	row.add(fp_db().sq_get("TIPO_SDI"));
 | 
			
		||||
	row.add(fp_db().sq_get("NUM_DOC"));
 | 
			
		||||
	row.add(fp_db().sq_get("DATA_DOC"));
 | 
			
		||||
	row.add(fp_db().sq_get("TOT_DOC"));
 | 
			
		||||
 | 
			
		||||
	// Dopo aver fatto le ricerche se lo trovo aggiungo se no coloro la cella
 | 
			
		||||
	forn_code = find_fornitore(clifo);
 | 
			
		||||
 | 
			
		||||
	if(forn_code >= 0)
 | 
			
		||||
	{
 | 
			
		||||
		row.add(clifo.get(CLI_CODCF));
 | 
			
		||||
		row.add(clifo.get(CLI_RAGSOC));
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		//sf.set_back_and_fore_color(COLOR_RED, COLOR_WHITE, 2, sf.cid2index(S_FORNITORE));
 | 
			
		||||
		//sf.set_back_and_fore_color(COLOR_RED, COLOR_WHITE, 2, sf.cid2index(S_RAGSOC));
 | 
			
		||||
		add_row_err_forn(forn_code, sf_err, denom);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	row.add(paa_codpaese, sf.cid2index(S_STATOPAIV));
 | 
			
		||||
	row.add(paa_piva);
 | 
			
		||||
	row.add(paa_codfisc);
 | 
			
		||||
	
 | 
			
		||||
	row.add(fp_db().sq_get("ATTACHMENT").blank() ? "" : "X");
 | 
			
		||||
	row.add(paa_codsdi.blank() ? fp_db().sq_get("PEC") : paa_codsdi);
 | 
			
		||||
	row.add(denom);
 | 
			
		||||
	row.add(fp_db().sq_get("TIPO_PROT") << fp_db().sq_get("NUM_PROT") << "/" << fp_db().sq_get("ANNO_PROT"));
 | 
			
		||||
	TString key_prot; key_prot << fp_db().sq_get("KEYPROG") << ";" << fp_db().sq_get("KEYHEAD") << ";" << fp_db().sq_get("KEYFATT");
 | 
			
		||||
	row.add(key_prot);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TPassive_mask::add_row_err_forn(int forn_code, TSheet_field& sf_err, TString& denom)
 | 
			
		||||
{
 | 
			
		||||
	TToken_string& row_err = sf_err.row(-1);
 | 
			
		||||
	row_err.add(fp_db().sq_get("COD_PAESE"), 0);
 | 
			
		||||
	row_err.add(fp_db().sq_get("P_IVA"));
 | 
			
		||||
	row_err.add(fp_db().sq_get("COD_FISC"));
 | 
			
		||||
	row_err.add(denom);
 | 
			
		||||
 | 
			
		||||
	switch (forn_code){
 | 
			
		||||
	case err_match_db:
 | 
			
		||||
		row_err.add("Salvato in db ma non corrisponde a un fornitore.");
 | 
			
		||||
		break;
 | 
			
		||||
	case no_forn:
 | 
			
		||||
		row_err.add("Non trovato fornitore con per quella P.IVA.");
 | 
			
		||||
		break;
 | 
			
		||||
	case no_match_cf:
 | 
			
		||||
		row_err.add("Trovato fornitore ma il codice fiscale non corrisponde.");
 | 
			
		||||
		break;
 | 
			
		||||
	case no_cf:
 | 
			
		||||
		row_err.add("Non trovato fornitore con quel codice fiscale (senza la P.IVA).");
 | 
			
		||||
		break;
 | 
			
		||||
	default:
 | 
			
		||||
		row_err.add("Errore durante identificazione fornitore.");
 | 
			
		||||
		break;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int TPassive_mask::find_fornitore(TLocalisamfile& clifo)
 | 
			
		||||
{
 | 
			
		||||
	TString paa_codfisc					= fp_db().sq_get("COD_FISC");
 | 
			
		||||
	TString paa_piva						= fp_db().sq_get("P_IVA");
 | 
			
		||||
	TString paa_codpaese				= fp_db().sq_get("COD_PAESE");
 | 
			
		||||
	const TString fppro_tipocf	= fp_db().sq_get("TIPO_CF");
 | 
			
		||||
	TString fppro_codcf					= fp_db().sq_get("COD_CLIFOR");
 | 
			
		||||
 | 
			
		||||
	// Cerco se il fornitore è presente in Campo
 | 
			
		||||
	int found_clifo = -1;
 | 
			
		||||
 | 
			
		||||
	if (fppro_codcf == "17")
 | 
			
		||||
		bool simo = true;
 | 
			
		||||
 | 
			
		||||
	TString piva;
 | 
			
		||||
	// Leggo dall FPPRO se è già stato salvato il fornitore
 | 
			
		||||
	// Se è già salvato nell FPPRO ricerco in Campo col codice fornitore (chiave 1)
 | 
			
		||||
	if (fppro_tipocf == "F" && !fppro_codcf.blank())
 | 
			
		||||
	{
 | 
			
		||||
		clifo.setkey(1);
 | 
			
		||||
		clifo.put(CLI_CODCF, fppro_codcf);
 | 
			
		||||
		// Se trovo dall FPPRO setto a 0
 | 
			
		||||
		clifo.read() == NOERR ? found_clifo = 0 : found_clifo = -3;
 | 
			
		||||
	}
 | 
			
		||||
	else if (paa_codpaese.full() && (piva = paa_piva).full()) // Se non c'è nell FPPRO ricerco con chiave 5
 | 
			
		||||
	{
 | 
			
		||||
		if (piva == "01903590154")
 | 
			
		||||
			bool simo = true;
 | 
			
		||||
		clifo.setkey(5);
 | 
			
		||||
		clifo.put(CLI_STATOPAIV, paa_codpaese);
 | 
			
		||||
		clifo.put(CLI_PAIV, paa_piva);
 | 
			
		||||
		clifo.read() == NOERR ? found_clifo = 2 : found_clifo = -1;		// Se trovo con partita iva setto a 2
 | 
			
		||||
 | 
			
		||||
		if (found_clifo != 2 && paa_codpaese == "IT")		// Se non l'ho trovato potrebbe essere italiano e ha codice paese blank
 | 
			
		||||
		{
 | 
			
		||||
			clifo.put(CLI_PAIV, paa_piva);
 | 
			
		||||
			clifo.put(CLI_STATOPAIV, "");
 | 
			
		||||
			clifo.read() == NOERR ? found_clifo = 2 : found_clifo = -5;	// Se trovo con partita iva setto a 2
 | 
			
		||||
		}
 | 
			
		||||
		// Se trovo con p.iva controllo il cod. fisc. e, se c'è da db e se c'è in clienti-fornitori, altrimenti vado avanti
 | 
			
		||||
		if (found_clifo == 2 && paa_codfisc.full() && clifo.get(CLI_COFI).full())
 | 
			
		||||
		{
 | 
			
		||||
			if (clifo.get(CLI_COFI) == paa_codfisc) // Controllo che il cod fisc (se c'è) corrisponda
 | 
			
		||||
				found_clifo = 2;
 | 
			
		||||
			else
 | 
			
		||||
				found_clifo = -15;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	// Altrimenti lo cerco con chiave 4, se ho il codice fiscale o ho il cod fisc e l'ho trovato con p iva
 | 
			
		||||
	else if (paa_codfisc.full())
 | 
			
		||||
	{
 | 
			
		||||
		clifo.setkey(4);
 | 
			
		||||
		clifo.put(CLI_COFI, paa_codfisc);
 | 
			
		||||
		clifo.read() == NOERR ? found_clifo = 4 : found_clifo = -14;		// Se il cod fisc corrisponde setto a 2
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	return found_clifo;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TPassive_mask::init()
 | 
			
		||||
@ -147,10 +256,51 @@ void TPassive_mask::load_all_fields()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TPassive_mask::salva_for()
 | 
			
		||||
{
 | 
			
		||||
	if(fp_db().sq_is_connect())
 | 
			
		||||
	{
 | 
			
		||||
		TString q_update;											// Query per update
 | 
			
		||||
		TSheet_field& sf = sfield(F_DOCS);
 | 
			
		||||
		TLocalisamfile clifo(LF_CLIFO);				// Leggo in Campo per controllare che il codice cliente non sia errato
 | 
			
		||||
 | 
			
		||||
		FOR_EACH_SHEET_ROW(sf, nr, row)
 | 
			
		||||
		{
 | 
			
		||||
			if (row->starts_with("X") && strcmp(clifo.get(CLI_CODCF), "17") == 0)
 | 
			
		||||
				bool simo = true;
 | 
			
		||||
			TString cod_forn = row->get(sf.cid2index(S_FORNITORE));
 | 
			
		||||
			if(row->starts_with("X") && cod_forn != "")
 | 
			
		||||
			{
 | 
			
		||||
				clifo.zero();
 | 
			
		||||
				clifo.setkey(1);
 | 
			
		||||
				clifo.put(CLI_TIPOCF, "F");
 | 
			
		||||
				clifo.put(CLI_CODCF, cod_forn);
 | 
			
		||||
				if(clifo.read() == NOERR)
 | 
			
		||||
				{
 | 
			
		||||
					q_update = "";
 | 
			
		||||
					TToken_string key(row->get(sf.cid2index(S_PROKEY)), ';');
 | 
			
		||||
					TString clifo_cofi = clifo.get(CLI_COFI);
 | 
			
		||||
					TString clifo_paiv = clifo.get(CLI_PAIV);
 | 
			
		||||
					if (clifo_cofi != "" && strcmp(row->get(sf.cid2index(S_CODFISC)), clifo_cofi) == 0 || clifo_paiv != "" && strcmp(row->get(sf.cid2index(S_PARIVA)), clifo_paiv) == 0)
 | 
			
		||||
					{
 | 
			
		||||
						q_update << "UPDATE FPPRO00F SET PZ_TIPOCF = 'F', PZ_CLIFOR = '" << row->get(sf.cid2index(S_FORNITORE)) << "' WHERE PZ_KEYPRGINVIO = '" << key.get(0) << "' AND PZ_KEYHEADERFATT = '" << key.get(1) << "' AND PZ_KEYBODYFATT = '" << key.get(2) << "'";
 | 
			
		||||
						fp_db().sq_set_exec(q_update, false);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		fp_db().sq_commit();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TPassive_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | 
			
		||||
{
 | 
			
		||||
	switch (o.dlg())
 | 
			
		||||
	{
 | 
			
		||||
	case DLG_SAVEREC:
 | 
			
		||||
		if (e == fe_button)
 | 
			
		||||
			salva_for();
 | 
			
		||||
		break;
 | 
			
		||||
	case F_DATAINI:
 | 
			
		||||
		if (e == fe_init)
 | 
			
		||||
			o.set(ini_get_string(CONFIG_DITTA, "fp", "LastXML", "01-01-2019"));
 | 
			
		||||
 | 
			
		||||
@ -1,32 +1,41 @@
 | 
			
		||||
#define START_MASK			401
 | 
			
		||||
#define F_DATAINI				401
 | 
			
		||||
#define F_DATAEND				402
 | 
			
		||||
#define F_SAVEFOR				403
 | 
			
		||||
#define END_MASK				499
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define F_DOCUMENTI_TIPO 301
 | 
			
		||||
 | 
			
		||||
//#define F_DOCUMENTI_TIPO 301
 | 
			
		||||
//#define S_SELCODNUM   101
 | 
			
		||||
//#define S_TIPODOCSEL  102
 | 
			
		||||
//#define S_DASTATO     103
 | 
			
		||||
//#define S_ASTATO      104
 | 
			
		||||
//#define S_TIPODOCSDI  105
 | 
			
		||||
 | 
			
		||||
#define F_DOCS     201
 | 
			
		||||
 | 
			
		||||
//#define S_SELECTED 101
 | 
			
		||||
#define S_ANNO     101
 | 
			
		||||
#define S_CODSDI   102
 | 
			
		||||
#define S_NDOC     103
 | 
			
		||||
#define S_DATADOC  104
 | 
			
		||||
#define S_TOTDOC   105
 | 
			
		||||
#define S_CLIENTE  106
 | 
			
		||||
#define S_RAGSOC   107
 | 
			
		||||
#define S_PARIVA	 108
 | 
			
		||||
#define S_CODFISC  109
 | 
			
		||||
#define S_ATTACH   110
 | 
			
		||||
#define S_COFI     111
 | 
			
		||||
#define F_DOCS				201
 | 
			
		||||
 | 
			
		||||
#define S_SELECTED		101
 | 
			
		||||
#define S_ANNO				102
 | 
			
		||||
#define S_CODSDI			103
 | 
			
		||||
#define S_NDOC				104
 | 
			
		||||
#define S_DATADOC			105
 | 
			
		||||
#define S_TOTDOC			106
 | 
			
		||||
#define S_FORNITORE		107
 | 
			
		||||
#define S_RAGSOC			108
 | 
			
		||||
#define S_STATOPAIV		109
 | 
			
		||||
#define S_PARIVA			110
 | 
			
		||||
#define S_CODFISC			111
 | 
			
		||||
#define S_ATTACH			112
 | 
			
		||||
#define S_COFI				113
 | 
			
		||||
#define S_RAGXML			114
 | 
			
		||||
#define S_NPROT				115
 | 
			
		||||
#define S_PROKEY			116
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define F_ERR					301
 | 
			
		||||
 | 
			
		||||
#define S_STATOERR		101
 | 
			
		||||
#define S_PIVAERR			102
 | 
			
		||||
#define S_CODFIERR		103
 | 
			
		||||
#define S_RAGSERR			104
 | 
			
		||||
#define S_DESCERR			105
 | 
			
		||||
@ -8,18 +8,11 @@ BEGIN
 | 
			
		||||
	PICTURE TOOL_MULTISEL
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BUTTON DLG_OK 2 2
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 1 "Elabora"
 | 
			
		||||
  PICTURE TOOL_ELABORA
 | 
			
		||||
  FLAGS "D"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BUTTON DLG_SAVEREC 2 2
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 1 "Elimina"
 | 
			
		||||
  PICTURE TOOL_WARNING
 | 
			
		||||
  FLAGS "D"
 | 
			
		||||
  PROMPT 1 1 "Salva Fornitori"
 | 
			
		||||
  PICTURE TOOL_ELABORA
 | 
			
		||||
	FLAGS ""
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BUTTON DLG_FINDREC 2 2
 | 
			
		||||
@ -57,6 +50,7 @@ PAGE "Elenco Fatture" 0 2 0 0
 | 
			
		||||
SPREADSHEET F_DOCS
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 0 2 ""
 | 
			
		||||
	ITEM ""
 | 
			
		||||
  ITEM "Anno"
 | 
			
		||||
  ITEM "Tipo SDI@4"
 | 
			
		||||
  ITEM "Num.\nDoc.@11"
 | 
			
		||||
@ -64,10 +58,28 @@ BEGIN
 | 
			
		||||
	ITEM "Totale\nDoc."
 | 
			
		||||
  ITEM "Fornitore"
 | 
			
		||||
  ITEM "Ragione Sociale@50"
 | 
			
		||||
	ITEM "Stato P.IVA@2"
 | 
			
		||||
  ITEM "P. IVA@16"
 | 
			
		||||
	ITEM "Cod. Fiscale@16"
 | 
			
		||||
  ITEM "Allegati"
 | 
			
		||||
  ITEM "Codice destinatario@20"
 | 
			
		||||
	ITEM "Rag. Soc. (XML)@50"
 | 
			
		||||
	ITEM "Numero Protocollo"
 | 
			
		||||
	ITEM "Chiave Prot.@80"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
 | 
			
		||||
PAGE "Errore Fornitori" 0 2 0 0
 | 
			
		||||
 | 
			
		||||
SPREADSHEET F_ERR
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 0 2 ""
 | 
			
		||||
	ITEM "Stato\nP.IVA@5"
 | 
			
		||||
  ITEM "P. IVA@16"
 | 
			
		||||
	ITEM "Cod. Fiscale@16"
 | 
			
		||||
	ITEM "Rag. Soc. (XML)@50"
 | 
			
		||||
	ITEM "Descrizione @100"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
@ -76,6 +88,12 @@ ENDMASK
 | 
			
		||||
 | 
			
		||||
PAGE "Documento" -1 -1 78 9
 | 
			
		||||
 | 
			
		||||
BOOLEAN S_SELECTED
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 8 ""
 | 
			
		||||
  FLAGS ""
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
NUMBER S_ANNO 4
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 2 "Anno "
 | 
			
		||||
@ -113,28 +131,96 @@ BEGIN
 | 
			
		||||
  FLAGS "D"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
NUMBER S_CLIENTE 6
 | 
			
		||||
NUMBER S_FORNITORE 6
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 4 "Fornitore "
 | 
			
		||||
  FLAGS "D"
 | 
			
		||||
  FIELD CODCF
 | 
			
		||||
  FLAGS "GR"
 | 
			
		||||
  KEY 1
 | 
			
		||||
  USE LF_CLIFO
 | 
			
		||||
  INPUT TIPOCF "F" SELECT
 | 
			
		||||
  INPUT CODCF S_FORNITORE
 | 
			
		||||
  DISPLAY "Codice@6R" CODCF
 | 
			
		||||
  DISPLAY "Sospeso@C" SOSPESO
 | 
			
		||||
  DISPLAY "Ragione sociale@50" RAGSOC
 | 
			
		||||
  DISPLAY "Codice fiscale@16" COFI
 | 
			
		||||
  DISPLAY "Partita IVA@11" PAIV
 | 
			
		||||
  OUTPUT S_FORNITORE CODCF
 | 
			
		||||
  OUTPUT S_RAGSOC RAGSOC
 | 
			
		||||
  HELP "Codice relativo al cliente o fornitore"
 | 
			
		||||
  MESSAGE COPY,2@
 | 
			
		||||
  CHECKTYPE REQUIRED
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING S_RAGSOC 50
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 21 4 ""
 | 
			
		||||
  FLAGS "D"
 | 
			
		||||
  KEY 2
 | 
			
		||||
  USE LF_CLIFO KEY 2
 | 
			
		||||
  INPUT TIPOCF "F"
 | 
			
		||||
  INPUT RAGSOC S_RAGSOC
 | 
			
		||||
  DISPLAY "Ragione sociale@50" RAGSOC
 | 
			
		||||
  DISPLAY "Sospeso@C" SOSPESO
 | 
			
		||||
  DISPLAY "Codice@R" CODCF
 | 
			
		||||
  DISPLAY "Codice fiscale@16" COFI
 | 
			
		||||
  DISPLAY "Partita IVA@11" PAIV
 | 
			
		||||
  COPY OUTPUT S_FORNITORE
 | 
			
		||||
  HELP "Prima parte della ragione sociale o cognome"
 | 
			
		||||
  MESSAGE COPY,3@
 | 
			
		||||
  WARNING "Manca la ragione sociale"
 | 
			
		||||
  CHECKTYPE REQUIRED
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING S_STATOPAIV 2
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 5 ""
 | 
			
		||||
  HELP "Codice ISO dello stato"
 | 
			
		||||
  FLAGS "U"
 | 
			
		||||
  USE %SCE
 | 
			
		||||
  INPUT CODTAB S_STATOPAIV
 | 
			
		||||
  DISPLAY "Codice" CODTAB
 | 
			
		||||
  DISPLAY "Descrizione@50" S0
 | 
			
		||||
  OUTPUT S_STATOPAIV CODTAB
 | 
			
		||||
  CHECKTYPE NORMAL
 | 
			
		||||
	FLAGS "D"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
STRING S_PARIVA 50 20
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 5 ""
 | 
			
		||||
  FLAGS "D"
 | 
			
		||||
  KEY 5
 | 
			
		||||
  USE LF_CLIFO KEY 5
 | 
			
		||||
  INPUT TIPOCF "F"
 | 
			
		||||
  INPUT STATOPAIV F_STATOPAIV
 | 
			
		||||
  INPUT PAIV S_PAIV
 | 
			
		||||
  DISPLAY "ISO@3" STATOPAIV
 | 
			
		||||
  DISPLAY "Partita IVA@11" PAIV
 | 
			
		||||
  DISPLAY "Sospeso" SOSPESO
 | 
			
		||||
  DISPLAY "Codice@R" CODCF
 | 
			
		||||
  DISPLAY "Ragione sociale@50" RAGSOC
 | 
			
		||||
  DISPLAY "Codice fiscale@16" COFI
 | 
			
		||||
  COPY OUTPUT S_FORNITORE
 | 
			
		||||
  HELP "Partita IVA del cliente/fornitore"
 | 
			
		||||
	FLAGS "D"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING S_CODFISC 50 20
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 5 ""
 | 
			
		||||
  FLAGS "D"
 | 
			
		||||
  FLAGS "U"
 | 
			
		||||
  KEY 4
 | 
			
		||||
  USE LF_CLIFO KEY 4
 | 
			
		||||
  INPUT TIPOCF "F"
 | 
			
		||||
  INPUT COFI F_COFI
 | 
			
		||||
  DISPLAY "Codice fiscale@16" COFI
 | 
			
		||||
  DISPLAY "Sospeso" SOSPESO
 | 
			
		||||
  DISPLAY "Codice@R" CODCF
 | 
			
		||||
  DISPLAY "Ragione sociale@50" RAGSOC
 | 
			
		||||
  DISPLAY "Partita IVA@11" PAIV
 | 
			
		||||
  COPY OUTPUT S_FORNITORE
 | 
			
		||||
  HELP "Codice fiscale del cliente/fornitore"
 | 
			
		||||
	FLAGS "D"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING S_COFI 20
 | 
			
		||||
@ -149,6 +235,27 @@ BEGIN
 | 
			
		||||
  FLAGS "D"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING S_RAGXML 50
 | 
			
		||||
	BEGIN
 | 
			
		||||
  PROMPT 21 4 ""
 | 
			
		||||
	FLAG "D"
 | 
			
		||||
	HELP "Ragione sociale scritta nell'xml"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING S_NPROT 20
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 5 ""
 | 
			
		||||
  HELP "Numero Protocollo"
 | 
			
		||||
	FLAGS "D"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING S_PROKEY 80
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 5 ""
 | 
			
		||||
  HELP "Numero Protocollo"
 | 
			
		||||
	FLAGS "D"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
 | 
			
		||||
@ -172,4 +279,40 @@ BEGIN
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
ENDMASK
 | 
			
		||||
ENDMASK
 | 
			
		||||
 | 
			
		||||
PAGE "Riga Errore" -1 -1 69 14
 | 
			
		||||
 | 
			
		||||
STRING S_STATOERR 2
 | 
			
		||||
BEGIN
 | 
			
		||||
	PROMPT 21 4 ""
 | 
			
		||||
	FLAG "D"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING S_PIVAERR 50 20
 | 
			
		||||
BEGIN
 | 
			
		||||
	PROMPT 21 4 ""
 | 
			
		||||
	FLAG "D"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING S_CODFIERR 50 20
 | 
			
		||||
BEGIN
 | 
			
		||||
	PROMPT 21 4 ""
 | 
			
		||||
	FLAG "D"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING S_RAGSERR 50
 | 
			
		||||
BEGIN
 | 
			
		||||
	PROMPT 21 4 ""
 | 
			
		||||
	FLAG "D"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING S_DESCERR 100
 | 
			
		||||
BEGIN
 | 
			
		||||
	PROMPT 21 4 ""
 | 
			
		||||
	FLAG "D"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
ENDMASK
 | 
			
		||||
 | 
			
		||||
@ -15,10 +15,6 @@
 | 
			
		||||
 | 
			
		||||
#define SQL_FLD "sql/"
 | 
			
		||||
 | 
			
		||||
#ifndef CARATTERI_SPECIALI
 | 
			
		||||
#define CARATTERI_SPECIALI "àèéìòù°"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Ritorna la connessione al DB paf secondo i parametri impostati nel programma di configurazione
 | 
			
		||||
SSimple_query& fp_db();
 | 
			
		||||
// Controlla il livello di patch installato e aggiorna le tabelle se necessario
 | 
			
		||||
@ -259,4 +255,40 @@ public:
 | 
			
		||||
	TFP_selected_docs();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Typedef per aiutare a capire cosa sono le chiavi
 | 
			
		||||
typedef TString MCodice_riga;
 | 
			
		||||
typedef TString MTipo_documento;
 | 
			
		||||
 | 
			
		||||
// Mannaggia il fruttivendolo
 | 
			
		||||
class TFP_righe_custom : public TObject
 | 
			
		||||
{
 | 
			
		||||
	bool _loaded;
 | 
			
		||||
 | 
			
		||||
	struct TCustCol
 | 
			
		||||
	{
 | 
			
		||||
		TString _col_qta;
 | 
			
		||||
		// Le colonne prezzo e imp non sono lette se di default
 | 
			
		||||
		TString _col_prezzo;
 | 
			
		||||
		TString _col_imponibile;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	// Mappa con in chiave COD_RIGA, TIPO_DOC
 | 
			
		||||
	std::map<MCodice_riga, std::map<MTipo_documento, TCustCol>> _custom_table;
 | 
			
		||||
 | 
			
		||||
	void load_map();
 | 
			
		||||
	static TCustCol& get_no_custom();
 | 
			
		||||
	TCustCol& get(const TString& codriga, const TString& tipodoc);
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
 | 
			
		||||
	static void save_sheet(TSheet_field& sheet_field);
 | 
			
		||||
	static void load_sheet(TSheet_field& sheet_field);
 | 
			
		||||
 | 
			
		||||
	const TString get_qta(const TString& codriga, const TString& tipodoc) { return get(codriga, tipodoc)._col_qta; }
 | 
			
		||||
	const TString get_prezzo(const TString& codriga, const TString& tipodoc) { return get(codriga, tipodoc)._col_prezzo; }
 | 
			
		||||
	const TString get_imponibile(const TString& codriga, const TString& tipodoc) { return get(codriga, tipodoc)._col_imponibile; }
 | 
			
		||||
 | 
			
		||||
	TFP_righe_custom();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // __FPLIB_H
 | 
			
		||||
 | 
			
		||||
@ -198,24 +198,7 @@ inline const TString& no_special(char a)
 | 
			
		||||
	TString& r = get_tmp_string().cut(0);
 | 
			
		||||
	switch(a)
 | 
			
		||||
	{
 | 
			
		||||
		case 'à':
 | 
			
		||||
			r << "a''";
 | 
			
		||||
			break;
 | 
			
		||||
		case 'è':
 | 
			
		||||
		case 'é':
 | 
			
		||||
			r << "e''";
 | 
			
		||||
			break;
 | 
			
		||||
		case 'ì':
 | 
			
		||||
			r << "i''";
 | 
			
		||||
			break;
 | 
			
		||||
		case 'ò':
 | 
			
		||||
			r << "o''";
 | 
			
		||||
			break;
 | 
			
		||||
		case 'ù':
 | 
			
		||||
			r << "u''";
 | 
			
		||||
			break;
 | 
			
		||||
		case '\'':
 | 
			
		||||
			r << "''";
 | 
			
		||||
			break;
 | 
			
		||||
		default:
 | 
			
		||||
			r << a;
 | 
			
		||||
@ -914,9 +897,18 @@ void TDoc_fp::set_qta_prezzo(TPaf_record& paf1800f, TRiga_documento* rdoc) const
 | 
			
		||||
{
 | 
			
		||||
	// Setto l'unità di misura
 | 
			
		||||
	paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
 | 
			
		||||
	real qta = rdoc->get_real(RDOC_QTA);
 | 
			
		||||
 | 
			
		||||
	static TFP_righe_custom righe_custom;
 | 
			
		||||
 | 
			
		||||
	const TString field_qta = righe_custom.get_qta(rdoc->tipo().codice(), rdoc->doc().tipo().codice());
 | 
			
		||||
	const TString field_prezzo = righe_custom.get_prezzo(rdoc->tipo().codice(), rdoc->doc().tipo().codice());
 | 
			
		||||
	const TString field_imponibile = righe_custom.get_imponibile(rdoc->tipo().codice(), rdoc->doc().tipo().codice());
 | 
			
		||||
 | 
			
		||||
	const bool custom_prezzo = field_prezzo != RDOC_PREZZO;
 | 
			
		||||
 | 
			
		||||
	real qta = rdoc->get_real(field_qta);
 | 
			
		||||
	// Prendendo la stringa non ho problemi in scrittura della query, a volte accadono cose stupide
 | 
			
		||||
	const TString& qta_string = rdoc->get(RDOC_QTA);
 | 
			
		||||
	const TString& qta_string = rdoc->get(field_qta);
 | 
			
		||||
	real prezzo_unit;
 | 
			
		||||
	real prezzo_tot;
 | 
			
		||||
	if (qta >= ZERO)
 | 
			
		||||
@ -924,16 +916,32 @@ void TDoc_fp::set_qta_prezzo(TPaf_record& paf1800f, TRiga_documento* rdoc) const
 | 
			
		||||
		if (qta == ZERO)
 | 
			
		||||
			qta = UNO;
 | 
			
		||||
		paf1800f.set("PI_QUANTITA", qta_string);
 | 
			
		||||
		prezzo_unit = rdoc->prezzo(false, false, 8);
 | 
			
		||||
		prezzo_tot = rdoc->importo(true, false);
 | 
			
		||||
		if(custom_prezzo)
 | 
			
		||||
		{
 | 
			
		||||
			prezzo_unit = rdoc->get_real(field_prezzo);
 | 
			
		||||
			prezzo_tot = rdoc->get_real(field_imponibile);
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			prezzo_unit = rdoc->prezzo(false, false, 8);
 | 
			
		||||
			prezzo_tot = rdoc->importo(true, false);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	else if(qta < ZERO)
 | 
			
		||||
	{
 | 
			
		||||
		// Metto la qualità senza il segno
 | 
			
		||||
		paf1800f.set("PI_QUANTITA", qta_string.mid(1));
 | 
			
		||||
		// E i prezzi in negativo, perchè l'importo non ha lo stesso segno del prezzo?
 | 
			
		||||
		prezzo_unit = -abs(rdoc->prezzo(false, false, 8));
 | 
			
		||||
		prezzo_tot = -abs(rdoc->importo(true, false));
 | 
			
		||||
		if (custom_prezzo)
 | 
			
		||||
		{
 | 
			
		||||
			prezzo_unit = -abs(rdoc->get_real(field_prezzo));
 | 
			
		||||
			prezzo_tot = -abs(rdoc->get_real(field_imponibile));
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			prezzo_unit = -abs(rdoc->prezzo(false, false, 8));
 | 
			
		||||
			prezzo_tot = -abs(rdoc->importo(true, false));
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	// Salvo tutto
 | 
			
		||||
	paf1800f.set("PI_PREZZOUNIT", converti_prezzo(prezzo_unit));
 | 
			
		||||
 | 
			
		||||
@ -20,14 +20,27 @@
 | 
			
		||||
#define FP_ESP_EST_COD			"espestcod"
 | 
			
		||||
#define FP_F8								"f8"
 | 
			
		||||
 | 
			
		||||
// Sheet fp0300
 | 
			
		||||
#define FP_SLD_COD					"SLD"
 | 
			
		||||
 | 
			
		||||
#define FP_SLD_CODTAB				"CODTAB"
 | 
			
		||||
#define FP_SLD_CODNUM				"S0"
 | 
			
		||||
#define FP_SLD_TIPODOC			"S1"
 | 
			
		||||
#define FP_SLD_DASTATO			"I0"
 | 
			
		||||
#define FP_SLD_ASTATO				"I1"
 | 
			
		||||
 | 
			
		||||
// Sheet fp0100
 | 
			
		||||
#define FP_SHT_CUST						"SCUSTRIG"
 | 
			
		||||
#define FP_SHT_CODTAB					FP_SLD_CODTAB
 | 
			
		||||
#define FP_SHT_TIPODOC				"S0"
 | 
			
		||||
#define FP_SHT_TIPORIGA				"S1"
 | 
			
		||||
#define FP_SHT_COL_QTA				"S2"
 | 
			
		||||
#define FP_SHT_COL_PREZZO			"S3"
 | 
			
		||||
#define FP_SHT_COL_IMPONIBILE "S4"
 | 
			
		||||
 | 
			
		||||
#define FP_SHT_DEF_QTA					RDOC_QTA
 | 
			
		||||
#define FP_SHT_DEF_PREZZO				"PREZZONN"
 | 
			
		||||
#define FP_SHT_DEF_IMPONIBILE		"IMPNS"
 | 
			
		||||
 | 
			
		||||
const TString& TFP_settings::get_db_indirizzo() const
 | 
			
		||||
{
 | 
			
		||||
@ -222,3 +235,122 @@ TFP_selected_docs::TFP_selected_docs() : _r_tabmod(LF_TABMOD), _flt(fill_rectype
 | 
			
		||||
{
 | 
			
		||||
	_cur.reset(new TCursor(&_r_tabmod, "", 1, &_flt, &_flt));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
TFP_righe_custom::TCustCol& TFP_righe_custom::get_no_custom()
 | 
			
		||||
{
 | 
			
		||||
	static TCustCol* default_cust_col = nullptr;
 | 
			
		||||
	if(default_cust_col == nullptr)
 | 
			
		||||
	{
 | 
			
		||||
		default_cust_col = new TCustCol();
 | 
			
		||||
		default_cust_col->_col_qta = FP_SHT_DEF_QTA;
 | 
			
		||||
		default_cust_col->_col_prezzo = FP_SHT_DEF_PREZZO;
 | 
			
		||||
		default_cust_col->_col_imponibile = FP_SHT_DEF_IMPONIBILE;
 | 
			
		||||
	}
 | 
			
		||||
	return *default_cust_col;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TFP_righe_custom::TCustCol& TFP_righe_custom::get(const TString& codriga, const TString& tipodoc)
 | 
			
		||||
{
 | 
			
		||||
	if(!_loaded)
 | 
			
		||||
	{
 | 
			
		||||
		load_map();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if(_custom_table.find(codriga) != _custom_table.end())
 | 
			
		||||
	{
 | 
			
		||||
		if (_custom_table[codriga].find(tipodoc) != _custom_table[codriga].end())
 | 
			
		||||
		{
 | 
			
		||||
			return _custom_table[codriga][tipodoc];
 | 
			
		||||
		}
 | 
			
		||||
		else if (_custom_table[codriga].find("") != _custom_table[codriga].end())
 | 
			
		||||
		{
 | 
			
		||||
			return _custom_table[codriga][""];
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return get_no_custom();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TFP_righe_custom::load_map()
 | 
			
		||||
{
 | 
			
		||||
	TRelation rel(LF_TABMOD);
 | 
			
		||||
	TRectype rec(LF_TABMOD);
 | 
			
		||||
	rec.put("MOD", FP_TAB_MOD);
 | 
			
		||||
	rec.put("COD", FP_SHT_CUST);
 | 
			
		||||
	TCursor cur(&rel, "", 1, &rec, &rec);
 | 
			
		||||
	for (cur = 0; cur.pos() < cur.items(); ++cur)
 | 
			
		||||
	{
 | 
			
		||||
		rec = cur.curr();
 | 
			
		||||
		TCustCol& app = _custom_table[rec.get(FP_SHT_TIPORIGA)][rec.get(FP_SHT_TIPODOC)];
 | 
			
		||||
		app._col_qta = rec.get(FP_SHT_COL_QTA).full() ? rec.get(FP_SHT_COL_QTA) : FP_SHT_DEF_QTA;
 | 
			
		||||
		app._col_prezzo = rec.get(FP_SHT_COL_PREZZO).full() ? rec.get(FP_SHT_COL_PREZZO) : FP_SHT_DEF_PREZZO;
 | 
			
		||||
		app._col_imponibile = rec.get(FP_SHT_COL_IMPONIBILE).full() ? rec.get(FP_SHT_COL_IMPONIBILE) : FP_SHT_DEF_IMPONIBILE;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_loaded = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TFP_righe_custom::save_sheet(TSheet_field& sheet_field)
 | 
			
		||||
{
 | 
			
		||||
	// Svuoto il db
 | 
			
		||||
	TLocalisamfile tabmod(LF_TABMOD);
 | 
			
		||||
	TRelation rel(LF_TABMOD);
 | 
			
		||||
	TRectype rec(LF_TABMOD);
 | 
			
		||||
	rec.put("MOD", FP_TAB_MOD);
 | 
			
		||||
	rec.put("COD", FP_SHT_CUST);
 | 
			
		||||
	TCursor cur(&rel, "", 1, &rec, &rec);
 | 
			
		||||
 | 
			
		||||
	for (cur = 0; cur.pos() != cur.items();)
 | 
			
		||||
	{
 | 
			
		||||
		rec = cur.curr();
 | 
			
		||||
		int err = rec.remove(tabmod);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Carico il db
 | 
			
		||||
	FOR_EACH_SHEET_ROW(sheet_field, n, r)
 | 
			
		||||
	{
 | 
			
		||||
		// Chissene anche se copio ogni volta
 | 
			
		||||
		rec.put("MOD", FP_TAB_MOD);
 | 
			
		||||
		rec.put("COD", FP_SHT_CUST);
 | 
			
		||||
		static TString num;
 | 
			
		||||
		num.cut(0);
 | 
			
		||||
		num.format("%08d", n);
 | 
			
		||||
		
 | 
			
		||||
		rec.put(FP_SHT_CODTAB, num);
 | 
			
		||||
 | 
			
		||||
		// Prendo tutta la riga tranne il cod sdi
 | 
			
		||||
		rec.put(FP_SHT_TIPODOC, r->get(0));
 | 
			
		||||
		rec.put(FP_SHT_TIPORIGA, r->get());
 | 
			
		||||
		rec.put(FP_SHT_COL_QTA, r->get());
 | 
			
		||||
		rec.put(FP_SHT_COL_PREZZO, r->get());
 | 
			
		||||
		rec.put(FP_SHT_COL_IMPONIBILE, r->get());
 | 
			
		||||
 | 
			
		||||
		rec.write(tabmod);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TFP_righe_custom::load_sheet(TSheet_field& sheet_field)
 | 
			
		||||
{
 | 
			
		||||
	TRelation rel(LF_TABMOD);
 | 
			
		||||
	TRectype rec(LF_TABMOD);
 | 
			
		||||
	rec.put("MOD", FP_TAB_MOD);
 | 
			
		||||
	rec.put("COD", FP_SHT_CUST);
 | 
			
		||||
	TCursor cur(&rel, "", 1, &rec, &rec);
 | 
			
		||||
	for (cur = 0; cur.pos() < cur.items(); ++cur)
 | 
			
		||||
	{
 | 
			
		||||
		TToken_string& row = sheet_field.row(-1);
 | 
			
		||||
		TRectype& cur_rec = cur.curr();
 | 
			
		||||
		row.add(cur_rec.get(FP_SHT_TIPODOC), 0);
 | 
			
		||||
		row.add(cur_rec.get(FP_SHT_TIPORIGA));
 | 
			
		||||
		row.add(cur_rec.get(FP_SHT_COL_QTA));
 | 
			
		||||
		row.add(cur_rec.get(FP_SHT_COL_PREZZO));
 | 
			
		||||
		row.add(cur_rec.get(FP_SHT_COL_IMPONIBILE));
 | 
			
		||||
	}
 | 
			
		||||
	sheet_field.force_update();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TFP_righe_custom::TFP_righe_custom() : _loaded(false)
 | 
			
		||||
{
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -5,4 +5,5 @@ Module  = fp
 | 
			
		||||
Flags   = ""
 | 
			
		||||
Item_01 = "Configurazione", "fp0 -0", ""+
 | 
			
		||||
Item_02 = "Invio fatture", "fp0 -2", ""
 | 
			
		||||
Item_03 = "Inserimento riferimenti C/F", "fp0 -1", ""
 | 
			
		||||
Item_03 = "Inserimento riferimenti C/F", "fp0 -1", ""
 | 
			
		||||
Item_04 = "Monitor Fatture Passive", "fp0 -3", ""
 | 
			
		||||
@ -10,4 +10,23 @@ const TDate SSimple_query::sq_get_date(const char * field)
 | 
			
		||||
{
 | 
			
		||||
	const TDate app(_rec.get_date(field));
 | 
			
		||||
	return  app;
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TString SSimple_query::sq_get(const char* field, bool rtrim)
 | 
			
		||||
{
 | 
			
		||||
	TString fld = _rec.get(field);
 | 
			
		||||
	if (rtrim)
 | 
			
		||||
		fld.rtrim();
 | 
			
		||||
 | 
			
		||||
	return fld;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TString SSimple_query::sq_get(string field, bool rtrim)
 | 
			
		||||
{
 | 
			
		||||
	return sq_get(field.c_str(), rtrim);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TString SSimple_query::sq_get(TString& field, bool rtrim)
 | 
			
		||||
{
 | 
			
		||||
	return  sq_get(static_cast<const char*>(field), rtrim);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -166,11 +166,11 @@ public:
 | 
			
		||||
	/**< Ritorna il valore nel campo (field) in formato (SADateTime), Campo non gestisce le ore */
 | 
			
		||||
	//SADateTime		sqGetDateTime(const char* field) { get_short(field); }
 | 
			
		||||
	/**< Ritorna il valore nel campo (field) passato come (const char *) in formato (const char *) */
 | 
			
		||||
	const char*		sq_get(const char* field) { return _rec.get(field); }
 | 
			
		||||
	TString				sq_get(const char* field, bool rtrim = true);
 | 
			
		||||
	/**< Ritorna il valore nel campo (field) passato come (string) in formato (const char *) */
 | 
			
		||||
	const char*		sq_get(string field) { return  _rec.get(field.c_str()); }
 | 
			
		||||
	TString				sq_get(string field, bool rtrim = true);
 | 
			
		||||
	/**< Ritorna il valore nel campo (field) passato come (TString) in formato (const char *)  */
 | 
			
		||||
	const char*		sq_get(TString& field) { return  _rec.get(static_cast<const char*>(field)); }
 | 
			
		||||
	TString				sq_get(TString& field, bool rtrim = true);
 | 
			
		||||
	/**< Ritorna il valore nel campo (field) in formato (char) */
 | 
			
		||||
	const char		sq_get_char(const char* field) { return _rec.get_char(field); }
 | 
			
		||||
	/**< Ritorna la posizione attuale */
 | 
			
		||||
 | 
			
		||||
@ -565,7 +565,10 @@ bool TTrasferimentoCU::append_record_b()
 | 
			
		||||
  rec.set(16, numtel);
 | 
			
		||||
 | 
			
		||||
	const TRectype& rec_anagr = cache().get(LF_ANAG, TString(rec_nditte.get("TIPOA")) << "|" << rec_nditte.get("CODANAGR"));
 | 
			
		||||
	rec.set(17, rec_anagr.get_int("EVECC"));
 | 
			
		||||
	const int evecc = rec_anagr.get_int("EVECC");
 | 
			
		||||
 | 
			
		||||
	if (evecc == 1 || evecc == 5)
 | 
			
		||||
		rec.set(17, evecc);
 | 
			
		||||
 | 
			
		||||
  const TAnagrafica rapp(LF_ANAG, 'F', rec_nditte.get_long(NDT_RAPPR));
 | 
			
		||||
  if (rapp.ok())
 | 
			
		||||
@ -604,10 +607,6 @@ bool TTrasferimentoCU::append_record_d(const TRectype& qla, TLog_report& log)
 | 
			
		||||
	const char tipoanag = qla.get_char("TIPOA");
 | 
			
		||||
	const long codanagr = qla.get_long("CODANAGR");
 | 
			
		||||
 | 
			
		||||
#ifdef DBG
 | 
			
		||||
	if (tipoanag == 'F' && codanagr == 1705)
 | 
			
		||||
		bool tolla = true;
 | 
			
		||||
#endif
 | 
			
		||||
  if (tipoanag < 'F'  || codanagr <= 0)
 | 
			
		||||
  {
 | 
			
		||||
    TString msg; msg.format(FR("Scartato percipiente non valido %c/%ld"), tipoanag, codanagr);
 | 
			
		||||
@ -684,7 +683,10 @@ bool TTrasferimentoCU::append_record_d(const TRectype& qla, TLog_report& log)
 | 
			
		||||
 | 
			
		||||
  const TRectype& anag = cache().get_rec(LF_ANAG, qla.get("TIPOA"), qla.get("CODANAGR"));
 | 
			
		||||
  rec.np_put("DA002008", anag.get(ANA_CATPAR));
 | 
			
		||||
  rec.np_put("DA002009", anag.get_long(ANA_EVECC));
 | 
			
		||||
	const TString4 evecc = anag.get("EVECC");
 | 
			
		||||
 | 
			
		||||
	if (evecc == "1" || evecc == "5")
 | 
			
		||||
		rec.np_put("DA002009", evecc);
 | 
			
		||||
	long int da2010 = anag.get_long(ANA_ESCPRECOMP);
 | 
			
		||||
	// Tolla 2017: Aggiunto questo controllo in quanto noi non gestiamo nessuno dei quadri che richiedono il valore 2
 | 
			
		||||
	if(da2010 == 2) da2010 = 0;
 | 
			
		||||
@ -791,7 +793,7 @@ bool TTrasferimentoCU::append_record_h(const TRectype& qla, int modulo, TLog_rep
 | 
			
		||||
 | 
			
		||||
  const TString4 causale = qla.get("CAUSALE");
 | 
			
		||||
  rec.np_put("AU001001", causale);
 | 
			
		||||
  if (causale >= "G" && causale <= "I")
 | 
			
		||||
  if ((causale >= "G" && causale <= "I")&& (qla.get_long("ANNO") < 2019L))
 | 
			
		||||
    rec.np_put("AU001002", qla.get_long("ANNO")); // Potrebbe essere anche l'anno precedente
 | 
			
		||||
 | 
			
		||||
  //  rec.np_put("AU001003", "");
 | 
			
		||||
@ -807,9 +809,9 @@ bool TTrasferimentoCU::append_record_h(const TRectype& qla, int modulo, TLog_rep
 | 
			
		||||
  long codice = atol(cache().get("%CA7", codcaus, "I1")); // 1, 2, 5, 6, 7
 | 
			
		||||
	
 | 
			
		||||
	real altre_somme = qla.get_real("SOMME");
 | 
			
		||||
	if (altre_somme > -0.02 && altre_somme < 0.02)
 | 
			
		||||
	{
 | 
			
		||||
		altre_somme = ZERO;
 | 
			
		||||
	if (altre_somme > -0.02 && altre_somme < 0.02)
 | 
			
		||||
	{
 | 
			
		||||
		altre_somme = ZERO;
 | 
			
		||||
	}
 | 
			
		||||
  if (altre_somme.is_zero() && codice == 7)
 | 
			
		||||
  {
 | 
			
		||||
@ -818,8 +820,10 @@ bool TTrasferimentoCU::append_record_h(const TRectype& qla, int modulo, TLog_rep
 | 
			
		||||
  }
 | 
			
		||||
  if (!altre_somme.is_zero())
 | 
			
		||||
  {
 | 
			
		||||
    if (codice <= 0) codice = 7; // Regime minimi
 | 
			
		||||
    rec.np_put("AU001006", codice);  // 1, 2, 5, 6, 7
 | 
			
		||||
		if (codice <= 0) codice = 7; // Regime minimi
 | 
			
		||||
		if (codice == 2)
 | 
			
		||||
			message_box("Anagrafica %c &ld : Il codice 2 somme non soggette è stato eliminato", tipoanag, codanagr);
 | 
			
		||||
		rec.np_put("AU001006", codice);  // 1, 5, 6, 7
 | 
			
		||||
    rec.np_put("AU001007", altre_somme);
 | 
			
		||||
  }
 | 
			
		||||
  rec.np_put("AU001008", imponibile); // 004 - 005 - 007
 | 
			
		||||
@ -920,7 +924,7 @@ bool TTrasferimentoCU::split(const char* path)
 | 
			
		||||
    {      
 | 
			
		||||
      TRecordCU rec;
 | 
			
		||||
      rec.tipo_record('A');      // Compila record di testata A
 | 
			
		||||
      rec.set(3, "CUR18");       // Codice fornitura	2018
 | 
			
		||||
      rec.set(3, "CUR19");       // Codice fornitura	2019
 | 
			
		||||
      rec.set(4, 1);             // Tipo fornitore: 01=Soggetto che invia la propria dichiarazione; 10=CAF
 | 
			
		||||
      rec.set(5, _codfis_int.full() ? _codfis_int : cod_fis_dic()); // Codice fiscale del fornitore  
 | 
			
		||||
      outfile << rec;            // Scrive record testata
 | 
			
		||||
@ -1147,12 +1151,12 @@ void TCU_app::main_loop()
 | 
			
		||||
void TCU_app::isUpdated()
 | 
			
		||||
{
 | 
			
		||||
	TRelation anagr(LF_ANAG);
 | 
			
		||||
	TCursor c(&anagr);
 | 
			
		||||
/*	TCursor c(&anagr);
 | 
			
		||||
	long int items = c.items();
 | 
			
		||||
	TProgress_monitor p(items, "Aggiornamento valori per CU");
 | 
			
		||||
	bool trovato = false;
 | 
			
		||||
	// Eseguo questo controllo per verificare la presenza EVECC == 8
 | 
			
		||||
	for(c=0; c.pos() < items && !trovato; ++c) 
 | 
			
		||||
	Eseguo questo controllo per verificare la presenza EVECC == 8
 | 
			
		||||
	/*for(c=0; c.pos() < items && !trovato; ++c) 
 | 
			
		||||
	{
 | 
			
		||||
		TRectype r = c.curr();
 | 
			
		||||
		if(r.get_int("EVECC") == 8)
 | 
			
		||||
@ -1171,7 +1175,7 @@ void TCU_app::isUpdated()
 | 
			
		||||
				r.write_rewrite(anagr.lfile());
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	} */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int m777200(int argc, char* argv[])
 | 
			
		||||
 | 
			
		||||
@ -6,10 +6,10 @@
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Nota che sono stati definiti anche in 777lib
 | 
			
		||||
#define THIS_YEAR "2018"
 | 
			
		||||
#define THIS_YEARN 2018
 | 
			
		||||
#define LAST_YEAR "2017"
 | 
			
		||||
#define LAST_YEARN 2017
 | 
			
		||||
#define THIS_YEAR "2019"
 | 
			
		||||
#define THIS_YEARN 2019
 | 
			
		||||
#define LAST_YEAR "2018"
 | 
			
		||||
#define LAST_YEARN 2018
 | 
			
		||||
 | 
			
		||||
class TRecordCU;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -514,7 +514,7 @@ TReport_field& TCU_report::add_big_text(TReport_section& sec, int row, int col,
 | 
			
		||||
  txt->set_type('T');
 | 
			
		||||
  txt->set_picture(label);
 | 
			
		||||
  txt->set_pos(CU_FORM_BORDER+col*100, row*100);
 | 
			
		||||
  txt->set_size(strlen(label)*300, 200);
 | 
			
		||||
  txt->set_size(strlen(label)*300, 300);
 | 
			
		||||
  txt->set_pattern(PAT_HOLLOW);
 | 
			
		||||
  txt->set_back_color(COLOR_INVALID);
 | 
			
		||||
  txt->set_text_color(rgb);
 | 
			
		||||
@ -593,7 +593,7 @@ void TCU_report::create_logo(TReport_section& header)
 | 
			
		||||
  TReport_field* txt = new TReport_field(&header);
 | 
			
		||||
  txt->set_type('I');
 | 
			
		||||
  txt->set("res/AgenziaEntrate.gif");
 | 
			
		||||
  txt->set_pos(CU_FORM_BORDER, 800);
 | 
			
		||||
  txt->set_pos(CU_FORM_BORDER, 900);
 | 
			
		||||
  txt->set_size(1200, 200);
 | 
			
		||||
  header.add(txt);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -9,10 +9,10 @@
 | 
			
		||||
#define CF_PRODUTTORE get_iva_sirio();
 | 
			
		||||
 | 
			
		||||
// Nota che sono anche definiti in 777200.h
 | 
			
		||||
#define THIS_YEAR "2018"
 | 
			
		||||
#define THIS_YEARN 2018
 | 
			
		||||
#define LAST_YEAR "2017"
 | 
			
		||||
#define LAST_YEARN 2017
 | 
			
		||||
#define THIS_YEAR "2019"
 | 
			
		||||
#define THIS_YEARN 2019
 | 
			
		||||
#define LAST_YEAR "2018"
 | 
			
		||||
#define LAST_YEARN 2018
 | 
			
		||||
 | 
			
		||||
enum { CODE_SIZE = 8, FIELD_SIZE = 16, BLOCK_SIZE = 24, HEADER_SIZE = 89, USEABLE_SIZE = 1800, TOTAL_SIZE = 1900 };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -335,7 +335,6 @@ BEGIN
 | 
			
		||||
  INPUT F_IC
 | 
			
		||||
  ITEM " | "
 | 
			
		||||
  ITEM "1|Somme che non hanno concorso a formare il reddito imponibile (90% dell’ammontare erogato), relativo ai compensi percepiti dai docenti e dai ricercatori in base a quanto stabilito dal D.L. 29 novembre 2008, n. 185 convertito, con modificazioni dalla L. n. 2 del 28 gennaio 2009. Vanno altresì inseriti i relativi rimborsi spese"
 | 
			
		||||
  ITEM "2|Somme che non hanno concorso a formare il reddito imponibile (rispettivamente l’80% dell’ammontare erogato per le lavoratrici ed il 70% per i lavoratori) per i lavoratori appartenenti alle categorie individuate con Decreto del Ministro dell’Economia e delle Finanze del 3 giugno 2011 in possesso dei requisiti previsti e che hanno richiesto di fruire del beneficio fiscale previsto dall’art. 3 della L. 30 dicembre 2010, n. 238"
 | 
			
		||||
  ITEM "5|Nel caso di somme corrisposte che non hanno concorso a formare il reddito imponibile (50% dell'ammontare erogato), relative ai compensi percepiti dai soggetti che hanno avviato un'attività di lavoro autonomo di impresa, in base a quanto stabilito dall'articolo 16 del D.lgs. n. 147 del 2015 modificato dalla legge n. 232 dell'11 dicembre 2016"
 | 
			
		||||
  ITEM "6|Nel caso di assegni di servizio civile di cui all'art.16 del D.lgs. n. 40 del 2017 per i quali la norma ha previsto la loro esenzione"
 | 
			
		||||
  ITEM "7|Erogazione di altri redditi non soggetti a ritenuta ovvero esenti"
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								src/m770/Allegato A Specifiche Tecniche 770 2018.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/m770/Allegato A Specifiche Tecniche 770 2018.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								src/m770/CU 2019.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/m770/CU 2019.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user