Last active
June 30, 2017 07:21
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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