Patch level : 12.0 nopatch

Files correlati     : 777200.cpp; 777lib.cpp; 777lib.h; 777.vcxproj

Commento:
CU 2022: Aggiornati e riordinati tracciati record A...Z
This commit is contained in:
Simoe 2022-02-18 11:18:20 +01:00
parent a243b65d8c
commit 8c293c2964
5 changed files with 208 additions and 231 deletions

View File

@ -204,6 +204,7 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\src\m770\777100a.h" />
<ClInclude Include="..\src\m770\777200a.h" />
<ClInclude Include="..\src\m770\777200c.h" />
</ItemGroup>

View File

@ -77,5 +77,8 @@
<ClInclude Include="..\src\m770\777200a.h">
<Filter>Headers</Filter>
</ClInclude>
<ClInclude Include="..\src\m770\777100a.h">
<Filter>Headers</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@ -23,35 +23,11 @@
#include "quadroc.h"
#include "quadrod.h"
///////////////////////////////////////////////////////////
// Utilities
///////////////////////////////////////////////////////////
// Forma un numero di telefono composto di sole cifre da prefisso+numero
const TString& get_telephone(const TRectype& rec, const char* pref, const char* numf)
{
TString& num = get_tmp_string();
num << rec.get(pref) << rec.get(numf);
char* dst = num.get_buffer();
for (const char* src = dst; *src; src++)
{
if (*src >= '0' && *src <= '9')
{
if (src > dst)
*dst = *src;
dst++;
}
}
*dst = '\0';
return num;
}
///////////////////////////////////////////////////////////
// TTracciatoCU
///////////////////////////////////////////////////////////
class TTracciatoCU : public TTracciato770
{
public:
@ -64,119 +40,117 @@ TTracciatoCU::TTracciatoCU(char tipo)
NFCHECK("Tipo record non valido: %c", tipo);
set_tipo(tipo);
add_field("Tipo record", AN, 1, 1); // 1
add_field("Tipo record", AN, 1, 1); // 1
if (tipo == 'A')
{
add_filler(2, 14); // 2
add_field("Codice fornitura", AN, 16, 5); // 3
add_field("Tipo fornitore", NU, 21, 2); // 4
add_field("Codice fiscale del fornitore", CF, 23, 16);
add_filler(2, 14); // 2
add_field("Codice fornitura", AN, 16, 5); // 3
add_field("Tipo fornitore", NU, 21, 2); // 4
add_field("Codice fiscale del fornitore", AN, 23, 16); // 5
add_filler(39, 483); // 6
add_filler(522, 4); // 7
add_filler(526, 4); // 8
add_field("Campo utente", AN, 530, 100); // 9
add_filler(630, 1068); // 10
add_field("Spazio servizio telematico", AN, 1698, 200); // 11
} else
if (tipo == 'B')
{
add_field("Codice fiscale sostituto", CF, 2, 16, 2); // 2
add_field("Progressivo modulo", NU, 18, 8, 3);
add_filler(26, 1);
add_filler(27, 8);
add_filler(35, 25);
add_field("Spazio a disposizione", AN, 60, 14); // 7
add_field("CF del produttore del software", CF, 74, 16);
add_filler( 90, 1);
add_field("Codice fiscale sostituto", CF, 2, 16, 2); // 2
add_field("Progressivo modulo", NU, 18, 8, 3); // 3
add_filler(26, 1); // 4
add_filler(27, 8); // 5
add_filler(35, 25); // 6
add_field("Spazio a disposizione", AN, 60, 14); // 7
add_field("CF del produttore del software", CF, 74, 16); // 8
add_filler( 90, 1); // 9
// Tipo di dichiarazione
add_field("Annullamento", CB, 91, 1, 10); // 10
add_field("Sostituzione", CB, 92, 1, 11);
add_field("Annullamento", CB, 91, 1, 10); // 10
add_field("Sostituzione", CB, 92, 1, 11); // 11
// Dati del sostituto
add_field("Cognome", AN, 93, 24); // 12
add_field("Nome", AN,117, 20);
add_field("Denominazione (Alternativo a 12 e 13)",AN,137, 60);
add_field("Indirizzo E-mail", AN,197,100);
add_field("Telefono o Fax", AN,297, 12);
add_field("Eventi Eccezionali", NU,309, 2, 17); // 17
add_field("Codice fiscale del rappresentante", CF,311,16); // 18
add_field("Codice carica del rappresentante", NU,327, 2);
add_field("Cognome", AN,329,24);
add_field("Nome", AN,353,20);
add_field("Codice fiscale del dichiarante", CN,373,11);
add_filler(384,18); // 23
add_field("Numero comunicaz. relative a certificazioni",NU, 402, 8);
add_field("Casella quadro CT", CB, 410, 1);
add_field("Firma del dichiarante", CB, 411, 1);
add_field("Codice fiscale intermediario", CF, 412, 16); // 27
add_field("Impegno a trasmettere la dichiaraz.", NU, 428, 1);
add_field("Data dell'impegno", DT, 429, 8);
add_field("Firma dell'intermediario", CB, 437, 1);
add_filler(438, 1); //31
add_filler(439, 40);
add_filler(479, 2);
add_filler(481, 5);
add_filler(486, 35);
add_filler(521, 6);
add_field("Casella casi particolari", CB, 527, 1); // 37
add_filler(528, 11);
add_filler(539, 16);
add_filler(555, 1289);
add_field("Spazio riservato", AN, 1844, 20);
add_filler(1864, 7);
add_filler(1871, 3);
add_filler(1874, 3);
add_filler(1877, 1);
add_filler(1878, 1);
add_filler(1879, 1);
add_filler(1880, 1);
add_filler(1881, 1);
add_filler(1882, 1);
add_filler(1883, 15);
add_field("Cognome", AN, 93, 24); // 12
add_field("Nome", AN,117, 20); // 13
add_field("Denominazione (Alternativo a 12 e 13)",AN,137, 60); // 14
add_field("Indirizzo E-mail", AN,197,100); // 15
add_field("Telefono o Fax", AN,297, 12); // 16
add_field("Eventi Eccezionali", NU,309, 2, 17); // 17
add_field("Codice fiscale del rappresentante", CF,311,16); // 18
add_field("Codice carica del rappresentante", NU,327, 2); // 19
add_field("Cognome", AN,329,24); // 20
add_field("Nome", AN,353,20); // 21
add_field("Codice fiscale del dichiarante", CN,373,11); // 22
add_filler(384,18); // 23
add_field("Numero comunicaz. relative a certificazioni",NU, 402, 8);// 24
add_field("Casella quadro CT", CB, 410, 1);// 25
add_field("Firma del dichiarante", CB, 411, 1);// 26
add_field("Codice fiscale intermediario", CF, 412, 16); // 27
add_field("Impegno a trasmettere la dichiaraz.", NU, 428, 1); // 28
add_field("Data dell'impegno", DT, 429, 8); // 29
add_field("Firma dell'intermediario", CB, 437, 1); // 30
add_filler(438, 1); // 31
add_filler(439, 40); // 32
add_filler(479, 2); // 33
add_filler(481, 5); // 34
add_filler(486, 35); // 35
add_filler(521, 6); // 36
add_field("Casella casi particolari", CB, 527, 1); // 37
add_filler(528, 11); // 38
add_filler(539, 16); // 39
add_filler(555, 1289); // 40
add_field("Spazio riservato", AN, 1844, 20); // 41
add_filler(1864, 7); // 42
add_filler(1871, 3); // 43
add_filler(1874, 3); // 44
add_filler(1877, 1); // 45
add_filler(1878, 1); // 46
add_filler(1879, 1); // 47
add_filler(1880, 1); // 48
add_filler(1881, 1); // 49
add_filler(1882, 1); // 50
add_filler(1883, 15); // 51
} else
if (tipo == 'D')
{
add_field("Codice fiscale del sostituto", CF, 2, 16, 2); // 2
add_field("Progressivo modulo", NU, 18, 8, 3); // 3
add_field("Codice fiscale percipiente", CF, 26, 16, 4); // 4
add_field("Progressivo certificazione", NU, 42, 5, 5); // 5
add_field("Identificativo dell'invio", NU, 47, 17, 6); // 6
add_field("Progressivo singola C.U.", NU, 64, 6, 7); // 7
add_field("Spazio a disposizione dell'utente", AN, 70, 14, 8); // 8
add_field("Tipo Operazione", AN, 84, 1, 9); // 9
add_filler(85, 4);
add_field("Conferma singola certificazione", CB, 89, 1, 11); // 11
add_field("Codice fiscale del sostituto", AN, 2, 16); // 2
add_field("Progressivo modulo", NU, 18, 8); // 3
add_field("Codice fiscale percipiente", AN, 26, 16); // 4
add_field("Progressivo certificazione", NU, 42, 5); // 5
add_field("Identificativo dell'invio", NU, 47, 17); // 6
add_field("Progressivo singola C.U.", NU, 64, 6); // 7
add_field("Spazio a disposizione dell'utente", AN, 70, 14); // 8
add_field("Tipo Operazione", AN, 84, 1); // 9
add_filler(85, 4); // 10
add_field("Conferma singola certificazione", CB, 89, 1); // 11
} else
if (tipo == 'H')
{
add_field("Codice fiscale del sostituto", CF, 2, 16, 2); // 2
add_field("Progressivo modulo", NU, 18, 8, 3); // 3
add_field("Codice fiscale percipiente", CF, 26, 16, 4); // 4
add_field("Progressivo certificazione", NU, 42, 5, 5); // 5
add_filler(47, 17, AN); // 6
add_field("Spazio a disposizione dell'utente", AN, 64, 6, 7); // 7
add_filler(89, 1, AN); // 11
/*
add_filler(70, 14); // 8
add_filler(84, 1); // 9
add_filler(85, 4); // 10
add_filler(89, 1); // 11
*/
add_field("Codice fiscale del sostituto", CF, 2, 16); // 2
add_field("Progressivo modulo", NU, 18, 8); // 3
add_field("Codice fiscale percipiente", CF, 26, 16); // 4
add_field("Progressivo certificazione", NU, 42, 5); // 5
add_filler(47, 17, NU); // 6
add_field("Spazio a disposizione dell'utente", AN, 64, 6); // 7
add_filler(70, 14); // 8
add_filler(84, 1); // 9
add_filler(85, 4); // 10
add_filler(89, 1, NU); // 11
} else
if (tipo == 'Z')
{
add_filler(2, 14);
add_field("Numero record di tipo 'B'", NU, 16, 9, 3); // 3
add_field("Numero record di tipo 'C'", NU, 25, 9, 4);
add_field("Numero record di tipo 'D'", NU, 34, 9, 5);
add_field("Numero record di tipo 'G'", NU, 43, 9, 6); // 6
add_field("Numero record di tipo 'H'", NU, 52, 9, 7);
add_field("Numero record di tipo 'L'", NU, 61, 9, 8);
add_filler(70,9);
add_filler(79,9);
add_filler(88,1810); // 11
add_filler(1898,1); // 11
add_filler(1899,2); //12
add_filler(2, 14); // 2
add_field("Numero record di tipo 'B'", NU, 16, 9); // 3
add_field("Numero record di tipo 'C'", NU, 25, 9); // 4
add_field("Numero record di tipo 'D'", NU, 34, 9); // 5
add_field("Numero record di tipo 'G'", NU, 43, 9); // 6
add_field("Numero record di tipo 'H'", NU, 52, 9); // 7
add_field("Numero record di tipo 'L'", NU, 61, 9); // 8
add_filler(70,9); // 9
add_filler(79,9); // 10
add_filler(88,1810); // 11
add_filler(1898,1); // 12
add_filler(1899,2); // 13
}
}
@ -697,7 +671,7 @@ bool TTrasferimentoCU::append_record_d(const TRectype& qla, TLog_report& log)
rec.np_put("DA002008", anag.get(ANA_CATPAR));
const TString4 evecc = anag.get("EVECC");
if (evecc == "1" || evecc == "3" || || evecc == "99") // EDIT 2020: Non piu' valori 1, 5 ma 1, 3
if (evecc == "1" || evecc == "3" || evecc == "99") // EDIT 2020: Non piu' valori 1, 5 ma 1, 3
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

View File

@ -111,121 +111,118 @@ TTracciato770::TTracciato770(char tipo) : _tipo(tipo)
if (strchr("ABEFHJZ", tipo) == NULL)
NFCHECK("Tipo record non valido: %c", tipo);
add_field("Tipo record", AN, 1, 1); // 1
add_field("Tipo record", AN, 1, 1); // 1
if (tipo == 'A')
{
add_filler(2, 14); // 2
add_field("Codice fornitura", AN, 16, 5); // 3
add_field("Tipo fornitore", NU, 21, 2); // 4
add_field("Codice fiscale del fornitore", CF, 23, 16);
add_filler(39, 483);
// Dichiarazione su più invii
add_field("Progressivo dell'invio", NU, 522, 4); // 7
add_field("Numero totale degli invii", NU, 526, 4);
add_field("Campo utente", AN, 530, 100); // 9
} else
if (tipo == 'B')
{
add_field("Codice fiscale dichiarante", CF, 2, 16); // 2
add_field("Progressivo modulo", NU, 18, 8);
add_filler(26, 1);
add_filler(27, 8);
add_filler(35, 25);
add_field("Spazio a disposizione", AN, 60, 14);
add_field("CF del produttore del software", CF, 74, 16); // 8
add_filler(90, 1); //9
add_filler(2, 14); // 2
add_field("Codice fornitura", AN, 16, 5); // 3
add_field("Tipo fornitore", NU, 21, 2); // 4
add_field("Codice fiscale del fornitore", AN, 23, 16); // 5
add_filler(39, 483); // 6
add_filler(522, 4); // 7
add_filler(526, 4); // 8
add_field("Campo utente", AN, 530, 100); // 9
add_filler(630, 1068); // 10
add_field("Spazio servizio telematico", AN, 1698, 200); // 11
// Tipo di dichiarazione
add_field("Dichiarazione correttiva nei termini", CB, 91, 1); // 10
add_field("Dichiarazione correttiva parziale", CB, 92, 1); //11
} else if (tipo == 'B') {
add_field("Codice fiscale sostituto", CF, 2, 16, 2); // 2
add_field("Progressivo modulo", NU, 18, 8, 3); // 3
add_filler(26, 1); // 4
add_filler(27, 8); // 5
add_filler(35, 25); // 6
add_field("Spazio a disposizione", AN, 60, 14); // 7
add_field("CF del produttore del software", CF, 74, 16); // 8
add_filler(90, 1); // 9
// Tipo di dichiarazione
add_field("Annullamento", CB, 91, 1, 10); // 10
add_field("Sostituzione", CB, 92, 1, 11); // 11
// Dati del sostituto
add_field("Cognome", AN, 93, 24); // 12
add_field("Nome", AN, 117, 20); // 13
add_field("Denominazione (Alternativo a 12 e 13)", AN, 137, 60); // 14
add_field("Indirizzo E-mail", AN, 197, 100); // 15
add_field("Telefono o Fax", AN, 297, 12); // 16
add_field("Eventi Eccezionali", NU, 309, 2, 17); // 17
add_field("Codice fiscale del rappresentante", CF, 311, 16); // 18
add_field("Codice carica del rappresentante", NU, 327, 2); // 19
add_field("Cognome", AN, 329, 24); // 20
add_field("Nome", AN, 353, 20); // 21
add_field("Codice fiscale del dichiarante", CN, 373, 11); // 22
add_filler(384, 18); // 23
add_field("Numero comunicaz. relative a certificazioni", NU, 402, 8);// 24
add_field("Casella quadro CT", CB, 410, 1); // 25
add_field("Firma del dichiarante", CB, 411, 1); // 26
add_field("Codice fiscale intermediario", CF, 412, 16); // 27
add_field("Impegno a trasmettere la dichiaraz.", NU, 428, 1); // 28
add_field("Data dell'impegno", DT, 429, 8); // 29
add_field("Firma dell'intermediario", CB, 437, 1); // 30
add_filler(438, 1); // 31
add_filler(439, 40); // 32
add_filler(479, 2); // 33
add_filler(481, 5); // 34
add_filler(486, 35); // 35
add_filler(521, 6); // 36
add_field("Casella casi particolari", CB, 527, 1); // 37
add_filler(528, 11); // 38
add_filler(539, 16); // 39
add_filler(555, 1289); // 40
add_field("Spazio riservato", AN, 1844, 20); // 41
add_filler(1864, 7); // 42
add_filler(1871, 3); // 43
add_filler(1874, 3); // 44
add_filler(1877, 1); // 45
add_filler(1878, 1); // 46
add_filler(1879, 1); // 47
add_filler(1880, 1); // 48
add_filler(1881, 1); // 49
add_filler(1882, 1); // 50
add_filler(1883, 15); // 51
// Dati del contribuente
add_field("Cognome", AN, 93, 24); // 12
add_field("Nome", AN,117, 20); //13
add_field("Denominazione (Alternativo a 25 e 26)",AN,137, 60);//14
add_field("indirizzo di posta elettronica", AN, 197, 100);//15
add_field("Telefono o Fax", AN, 297, 12);//16
add_field("Eventi eccezionali", NP, 309, 2);//17
add_field("Codice fiscale del rappresentante firmatario", CF, 311, 16); //18
add_field("Codice carica del rappresentante", NU, 327, 2);//19
add_field("Cognome", AN, 329, 24); // 20
add_field("Nome", AN, 353, 20); //21
add_field("Codice fiscale societa o dichiarante", CN, 373, 11);
add_filler(384, 18);
add_field("Numero comunicaz. lavoro autonomo", NU, 402, 8); // 24
add_field("Casella quadro CT", CB, 410, 1);//25
add_field("Firma del dichiarante", CB, 411, 1);
add_field("Codice fiscale intermediario", CF, 412, 16);
add_field("Impegno a trasmettere la dichiaraz.", NU, 428, 1);
add_field("Data dell'impegno", DT, 429, 8);
add_field("Firma dell'intermediario", CB, 437, 1);
add_filler(438, 1); //31
add_filler(439, 40);
add_filler(479, 2);
add_filler(481, 5);
add_filler(486, 35);
add_filler(521, 6);
add_field("Casella casi particolari", CB, 527, 1); // 37
add_filler(528, 11);
add_filler(539, 16);
add_filler(555, 1289);
add_field("Spazio riservato", AN, 1844, 20);
add_filler(1864, 7);
add_filler(1871, 3);
add_filler(1874, 3);
add_filler(1877, 1);
add_filler(1878, 1);
add_filler(1879, 1);
add_filler(1880, 1);
add_filler(1881, 1);
add_filler(1882, 1);
add_filler(1883, 15);
} else
if (tipo == 'E' || tipo == 'F')
{
add_field("Codice fiscale del dichiarante", CF, 2, 16); // 2
add_field("Progressivo modulo", NU, 18, 8);
add_field("Spazio a disposizione", AN, 26, 3);
add_field("Tipo operazione", AN, 29, 1);
add_filler(30, 24);
add_field("Spazio a disposizione", AN, 54, 20);
add_field("Identificativo produttore software", AN, 74, 16); // 8
} else
if (tipo == 'H')
{
add_field("Codice fiscale del dichiarante", CF, 2, 16); // 2
add_field("Progressivo comunicazione", NU, 18, 8);
add_field("Spazio a disposizione", AN, 26, 3);
add_field("Tipo operazione", AN, 29, 1);
add_field("Codice fiscale del percipiente", AN, 30, 16); // 6
add_filler(46, 8);
add_field("Spazio a disposizione", AN, 54, 20);
add_field("Identificativo produttore software", AN, 74, 16); // 9
} else
if (tipo == 'J')
{
add_field("Codice fiscale del dichiarante", CF, 2, 16); // 2
add_field("Progressivo modulo", NU, 18, 8);
add_field("Spazio a disposizione", AN, 26, 3);
add_field("Tipo operazione", AN, 29, 1);
add_filler(30, 24);
add_field("Spazio a disposizione", AN, 54, 20);
add_field("Identificativo produttore software", AN, 74, 16); // 8
} else
if (tipo == 'Z')
{
add_filler(2, 14);
add_field("Numero record di tipo 'B'", NU, 16, 9, 3); // 3
add_field("Numero record di tipo 'C'", NU, 25, 9, 4);
add_field("Numero record di tipo 'D'", NU, 34, 9, 5);
add_field("Numero record di tipo 'G'", NU, 43, 9, 6);
add_field("Numero record di tipo 'H'", NU, 52, 9, 7);
add_field("Numero record di tipo 'L'", NU, 61, 9, 8);
add_filler(70, 9);
add_filler(79, 9);
add_filler(88, 1810);
} else if (tipo == 'E' || tipo == 'F') {
add_field("Codice fiscale del dichiarante", CF, 2, 16); // 2
add_field("Progressivo modulo", NU, 18, 8); // 3
add_field("Spazio a disposizione", AN, 26, 3); // 4
add_field("Tipo operazione", AN, 29, 1); // 5
add_filler(30, 24); // 6
add_field("Spazio a disposizione", AN, 54, 20); // 7
add_field("Identificativo produttore software", AN, 74, 16); // 8
} else if (tipo == 'H'){
add_field("Codice fiscale del sostituto", CF, 2, 16); // 2
add_field("Progressivo modulo", NU, 18, 8); // 3
add_field("Codice fiscale percipiente", CF, 26, 16); // 4
add_field("Progressivo certificazione", NU, 42, 5); // 5
add_filler(47, 17, NU); // 6
add_field("Spazio a disposizione dell'utente", AN, 64, 6); // 7
add_filler(70, 14); // 8
add_filler(84, 1); // 9
add_filler(85, 4); // 10
add_filler(89, 1, NU); // 11
} else if (tipo == 'J') {
add_field("Codice fiscale del dichiarante", CF, 2, 16); // 2
add_field("Progressivo modulo", NU, 18, 8); // 3
add_field("Spazio a disposizione", AN, 26, 3); // 4
add_field("Tipo operazione", AN, 29, 1); // 5
add_filler(30, 24); // 6
add_field("Spazio a disposizione", AN, 54, 20); // 7
add_field("Identificativo produttore software", AN, 74, 16); // 8
} else if (tipo == 'Z') {
add_filler(2, 14); // 2
add_field("Numero record di tipo 'B'", NU, 16, 9); // 3
add_field("Numero record di tipo 'C'", NU, 25, 9); // 4
add_field("Numero record di tipo 'D'", NU, 34, 9); // 5
add_field("Numero record di tipo 'G'", NU, 43, 9); // 6
add_field("Numero record di tipo 'H'", NU, 52, 9); // 7
add_field("Numero record di tipo 'L'", NU, 61, 9); // 8
add_filler(70, 9); // 9
add_filler(79, 9); // 10
add_filler(88, 1810); // 11
add_filler(1898, 1); // 12
add_filler(1899, 2); // 13
}
}

View File

@ -14,6 +14,8 @@
#define LAST_YEAR "2021"
#define LAST_YEARN atoi(LAST_YEAR)
const TString& get_telephone(const TRectype& rec, const char* pref, const char* numf);
enum { CODE_SIZE = 8, FIELD_SIZE = 16, BLOCK_SIZE = 24, HEADER_SIZE = 89, USEABLE_SIZE = 1800, TOTAL_SIZE = 1900 };
///////////////////////////////////////////////////////////