Skip to content

Instantly share code, notes, and snippets.

@nikiink
Last active June 30, 2017 07:21
Show Gist options
  • Save nikiink/2087cb7ab2ce01465174d28aa0e14bcd to your computer and use it in GitHub Desktop.
Save nikiink/2087cb7ab2ce01465174d28aa0e14bcd to your computer and use it in GitHub Desktop.
Creazione file per dichiarazione non detenzione apparecchi televisivi e altre dichiarazioni relative al canone TV da utilizzare nel desktop telematico dell'agenzia delle entrate
javac -cp .;lib/commons-lang3-3.4.jar;commons-lang3-3.4.jar Rai17.java
java -cp .;lib/commons-lang3-3.4.jar;commons-lang3-3.4.jar Rai17
import java.io.FileWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import org.apache.commons.lang3.StringUtils;
public class Rai17 {
// SPECIFICHE TECNICHE
// http://www.agenziaentrate.gov.it/wps/content/Nsilib/Nsi/Strumenti/Specifiche+tecniche/Specifiche+tecniche+domande+istanze/Specifiche+Tecniche+Canone+TV/
// [richiede Apache Commons Lang 3]
public static void main(String[] args) throws Exception {
/* ====== DATI MODIFICABILI ================================================================================================ */
String cfDichiarante = "FNTGUO50A01H501G";
String cognomeDichiarante = "Fantozzi";
String nomeDichiarante = "Ugo";
String dataDiNascitaDichiarante = "01011950"; //GGMMAAAA
String comuneDiNascitaDichiarante = "Roma";
String provinciaDiNascitaDichiarante = "RM";
//COMPILAZIONE CAMPI EREDE DI (LASCIARE VUOTI SE NON VANNO COMPILATI)
String cfDeCuius = "";
String cognomeDeCuius = "";
String nomeDeCuius = "";
String dataDiNascitaDeCuius = ""; //GGMMAAAA
String comuneDiNascitaDeCuius = ""; //o stato estero
String provinciaDiNascitaDeCuius = ""; //sigla
//quadro da compilare A|B|C
//A: non detenzione
//B: altro intestatario
//C: variazione presupposti
String quadroDaCompilare = "A";
//solo Quadro B
String cfIntestatarioAltraUtenzaElettricaQuadroB = "";
String dataInizioIntestatarioAltraUtenzaElettricaQuadroB = ""; //GGMMAAAA
//solo Quadro C
String dataVariazionePresuppostiQuadroC = ""; //GGMMAAAA
/* ================================================================================================================================ */
/* ================================================================================================================================ */
/* ================================================================================================================================ */
SimpleDateFormat sdf = new SimpleDateFormat("ddMMyyyy");
String dataFirma = sdf.format(new Date()); //data firma = data odierna
if (quadroDaCompilare.equals("B")) {
if (cfIntestatarioAltraUtenzaElettricaQuadroB.length() != 16) {
throw new Exception("Correggere codice fiscale altro intestatario quadro B");
}
if (dataInizioIntestatarioAltraUtenzaElettricaQuadroB.length() != 8) {
throw new Exception("Correggere data inizio altro intestatario quadro B, deve essere una data nel formato GGMMAAAA");
}
}
if (quadroDaCompilare.equals("C")) {
if (dataVariazionePresuppostiQuadroC.length() != 8) {
throw new Exception("Correggere data variazione presupposti quadro C, deve essere una data nel formato GGMMAAAA");
}
}
//Normalizzazione campi tutti maiuscoli
cognomeDichiarante = StringUtils.left(StringUtils.upperCase(cognomeDichiarante), 24);
nomeDichiarante = StringUtils.left(StringUtils.upperCase(nomeDichiarante), 20);
comuneDiNascitaDichiarante = StringUtils.left(StringUtils.upperCase(comuneDiNascitaDichiarante), 40);
cognomeDeCuius = StringUtils.left(StringUtils.upperCase(cognomeDeCuius), 24);
nomeDeCuius = StringUtils.left(StringUtils.upperCase(nomeDeCuius), 20);
comuneDiNascitaDeCuius = StringUtils.left(StringUtils.upperCase(comuneDiNascitaDeCuius), 40);
//RECORD A
ArrayList<String> listaCampiA = new ArrayList<String>();
listaCampiA.add("A"); //1
listaCampiA.add(StringUtils.leftPad("", 14, ' ')); //2 //all. a destra
listaCampiA.add("RAI17"); //3
listaCampiA.add("01"); //4
listaCampiA.add(StringUtils.leftPad(cfDichiarante, 16, ' ')); //5
listaCampiA.add(StringUtils.leftPad("", 483, ' ')); //6
listaCampiA.add(StringUtils.leftPad("0", 4, '0')); //7
listaCampiA.add(StringUtils.leftPad("0", 4, '0')); //8
listaCampiA.add(StringUtils.leftPad("", 100, ' ')); //9
listaCampiA.add(StringUtils.leftPad("", 1068, ' ')); //10
listaCampiA.add(StringUtils.leftPad("", 200, ' ')); //11
listaCampiA.add("A"); //12
listaCampiA.add("\r\n"); //13
//RECORD B
ArrayList<String> listaCampiB = new ArrayList<String>();
listaCampiB.add("B"); //1
listaCampiB.add(cfDichiarante); //2
listaCampiB.add(StringUtils.leftPad("1", 8, '0')); //3
listaCampiB.add(StringUtils.leftPad("", 3, ' ')); //4
listaCampiB.add(StringUtils.leftPad("", 25, ' ')); //5
listaCampiB.add(StringUtils.leftPad("", 20, ' ')); //6
listaCampiB.add(StringUtils.leftPad("", 16, ' ')); //7 //COD FIS PROD SOFT
listaCampiB.add(StringUtils.rightPad(cognomeDichiarante, 24, ' ')); //8
listaCampiB.add(StringUtils.rightPad(nomeDichiarante, 20, ' ')); //9
listaCampiB.add(dataDiNascitaDichiarante); //10
listaCampiB.add(StringUtils.rightPad(comuneDiNascitaDichiarante, 40, ' ')); //11
listaCampiB.add(provinciaDiNascitaDichiarante); //12
listaCampiB.add(" "); //13
//in qualita' di erede
listaCampiB.add(StringUtils.rightPad(cfDeCuius, 16, ' ')); //14 cf
listaCampiB.add(StringUtils.rightPad(cognomeDeCuius, 24, ' ')); //15 cognome
listaCampiB.add(StringUtils.rightPad(nomeDeCuius, 20, ' ')); //16 nome
listaCampiB.add(StringUtils.rightPad(dataDiNascitaDeCuius, 8, '0')); //17 nascita
listaCampiB.add(StringUtils.rightPad(comuneDiNascitaDeCuius, 40, ' ')); //18 comune
listaCampiB.add(StringUtils.rightPad(provinciaDiNascitaDeCuius, 2, ' ')); //19 prov
listaCampiB.add(" "); //20 filler
//quadro A
listaCampiB.add(StringUtils.rightPad("", 15, ' ')); //21
listaCampiB.add(quadroDaCompilare.equals("A")?"1":"0"); //22 //non detenzione 1: si, 0: no o non compilato
listaCampiB.add("0"); //23
listaCampiB.add(StringUtils.rightPad("", 8, ' ')); //24
//quadro B
listaCampiB.add(StringUtils.rightPad("", 14, ' ')); //25
listaCampiB.add(quadroDaCompilare.equals("B")?dataInizioIntestatarioAltraUtenzaElettricaQuadroB:StringUtils.rightPad("", 8, '0')); //26 data inizio
listaCampiB.add(quadroDaCompilare.equals("B")?"1":"0"); //27 (0/1)
listaCampiB.add(quadroDaCompilare.equals("B")?cfIntestatarioAltraUtenzaElettricaQuadroB:StringUtils.rightPad("", 16, ' ')); //28 codice fiscale intestatario altra utenza
listaCampiB.add(StringUtils.rightPad("", 8, ' ')); //29
//firma dichiarante
listaCampiB.add(dataFirma); //30 data firma
listaCampiB.add("1"); //31 firma
listaCampiB.add(quadroDaCompilare.equals("A")?"1":"0"); //32 quadro A
listaCampiB.add(quadroDaCompilare.equals("B")?"1":"0"); //33 quadro B
listaCampiB.add(quadroDaCompilare.equals("C")?"1":"0"); //34 quadro C
//quadro C
listaCampiB.add(quadroDaCompilare.equals("C")?dataVariazionePresuppostiQuadroC:StringUtils.rightPad("", 8, '0')); //35 data variazione presupposti
//spazi futuro utilizzo
listaCampiB.add(StringUtils.rightPad("", 40, ' ')); //36
listaCampiB.add(StringUtils.rightPad("", 1, ' ')); //37
listaCampiB.add(StringUtils.rightPad("", 2, ' ')); //38
listaCampiB.add(StringUtils.rightPad("", 3, ' ')); //39
listaCampiB.add(StringUtils.rightPad("", 4, ' ')); //40
listaCampiB.add(StringUtils.rightPad("", 5, ' ')); //41
listaCampiB.add(StringUtils.rightPad("", 10, ' ')); //42
listaCampiB.add(StringUtils.rightPad("", 16, ' ')); //43
listaCampiB.add(StringUtils.rightPad("", 24, ' ')); //44
//incaricato
listaCampiB.add(StringUtils.rightPad("", 16, ' ')); //45
listaCampiB.add(StringUtils.rightPad("", 1, ' ')); //46
listaCampiB.add(StringUtils.rightPad("", 8, '0')); //47
listaCampiB.add(StringUtils.rightPad("", 1, '0')); //48
listaCampiB.add(StringUtils.rightPad("", 1325, ' ')); //49
//riservato
listaCampiB.add(StringUtils.rightPad("", 20, ' ')); //50
listaCampiB.add(StringUtils.rightPad("", 7, ' ')); //51
listaCampiB.add(StringUtils.rightPad("", 3, ' ')); //52
listaCampiB.add(StringUtils.rightPad("", 5, ' ')); //53
listaCampiB.add(StringUtils.rightPad("", 1, ' ')); //54
listaCampiB.add(StringUtils.rightPad("", 1, ' ')); //55
listaCampiB.add(StringUtils.rightPad("", 1, ' ')); //56
listaCampiB.add(StringUtils.rightPad("", 1, ' ')); //57
listaCampiB.add(StringUtils.rightPad("", 1, ' ')); //58
listaCampiB.add(StringUtils.rightPad("", 1, ' ')); //59
listaCampiB.add(StringUtils.rightPad("", 1, ' ')); //60
listaCampiB.add(StringUtils.rightPad("", 12, ' ')); //61
listaCampiB.add("A"); //62
listaCampiB.add("\r\n"); //63
//RECORD Z
ArrayList<String> listaCampiZ = new ArrayList<String>();
listaCampiZ.add("Z"); //1
listaCampiZ.add(StringUtils.leftPad("", 14, ' ')); //2
listaCampiZ.add(StringUtils.leftPad("1", 9, '0')); //3 //numero record tipo b
listaCampiZ.add(StringUtils.leftPad("", 9, ' ')); //4
listaCampiZ.add(StringUtils.leftPad("", 9, ' ')); //5
listaCampiZ.add(StringUtils.leftPad("", 9, ' ')); //6
listaCampiZ.add(StringUtils.leftPad("", 9, ' ')); //7
listaCampiZ.add(StringUtils.leftPad("", 9, ' ')); //8
listaCampiZ.add(StringUtils.leftPad("", 9, ' ')); //9
listaCampiZ.add(StringUtils.leftPad("", 9, ' ')); //10
listaCampiZ.add(StringUtils.leftPad("", 1810, ' ')); //11
listaCampiZ.add("A"); //12
listaCampiZ.add("\r\n"); //13
String recordA = StringUtils.join(listaCampiA,"");
String recordB = StringUtils.join(listaCampiB,"");
String recordZ = StringUtils.join(listaCampiZ,"");
//System.out.println(recordA.length());
//System.out.println(recordB.length());
//System.out.println(recordZ.length());
//System.out.print(recordA);
//System.out.print(recordB);
//System.out.print(recordZ);
FileWriter fw = new FileWriter("RAI17.txt");
fw.write(recordA);
fw.write(recordB);
fw.write(recordZ);
fw.close();
System.out.println("Elaborazione completata. Creato file RAI17.txt");
}
}
javac -cp .:lib/commons-lang3-3.4.jar:commons-lang3-3.4.jar Rai17.java
java -cp .:lib/commons-lang3-3.4.jar:commons-lang3-3.4.jar Rai17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment