Author: vsalaun Date: 2011-07-13 14:00:44 +0200 (Wed, 13 Jul 2011) New Revision: 3223 Url: http://chorem.org/repositories/revision/lima/3223 Log: #347 update vat document creation Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/DocumentServiceImpl.java trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/VatStatementServiceImpl.java trunk/lima-business/src/main/java/org/chorem/lima/business/ejbinterface/VatStatementService.java Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/DocumentServiceImpl.java =================================================================== --- trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/DocumentServiceImpl.java 2011-07-12 15:29:21 UTC (rev 3222) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/DocumentServiceImpl.java 2011-07-13 12:00:44 UTC (rev 3223) @@ -36,6 +36,7 @@ import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; import java.util.Collections; import java.util.Date; @@ -46,7 +47,6 @@ import javax.ejb.Stateless; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.examples.fdf.PrintFields; import org.apache.pdfbox.examples.fdf.SetField; import org.apache.pdfbox.exceptions.COSVisitorException; import org.apache.pdfbox.pdmodel.PDDocument; @@ -77,7 +77,6 @@ import org.chorem.lima.entity.FinancialTransaction; import org.chorem.lima.entity.Identity; import org.chorem.lima.entity.LimaCallaoDAOHelper; -import org.chorem.lima.entity.VatStatement; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaContextFactory; import org.nuiton.topia.TopiaException; @@ -1462,13 +1461,6 @@ public void createVatDocuments(Date beginDate, Date endDate, FormatsEnum format) throws LimaException, IOException, COSVisitorException { try { - List<VatStatement> vatStatementsList = vatStatementService.getAllVatStatements(); - - for (VatStatement vatStatement : vatStatementsList) { - BigDecimal amount = vatStatementService.vatStatementAmounts(vatStatement, beginDate, endDate); - //System.out.println(vatStatement.getLabel() + " : " + amount); - } - String filePath = path+File.separator+DocumentsEnum.VAT.getFileName()+format.getExtension(); @@ -1478,14 +1470,13 @@ // load the document doc = PDDocument.load(reportsStream); - PrintFields printFields = new PrintFields(); - printFields.printFields(doc); SetField fields = new SetField(); Identity identity = identityService.getIdentity(); //page one + //sets names for each TextField String periodTextField = "a1.a1", serviceAddressTextField = "a2.a2", companyAlternativeAddressTextField = "a3.a3", @@ -1505,7 +1496,7 @@ finalDateTextField = "date1.date1", // dd/mm/yyyy payementDateTextField = "date2.date2"; // dd/mm/yyyy; - //Period TextField + //fills in Period TextField Calendar beginDateCal = Calendar.getInstance(); beginDateCal.setTime(beginDate); @@ -1520,14 +1511,9 @@ + " " + beginDateCal.get(Calendar.YEAR) + " - " + endDateCal.get(Calendar.DAY_OF_WEEK) + " " + endDateCal.getDisplayName(Calendar.MONTH, Calendar.LONG, locale) - + " " + endDateCal.get(Calendar.YEAR)); + + " " + endDateCal.get(Calendar.YEAR)); - - fields.setField(doc, "a2.a2", "a2"); - fields.setField(doc, "a3.a3", "a3"); - - - //address TextField + //fills in address TextField String address = ""; if (identity.getName() != null) { address = identity.getName() + "\n"; @@ -1544,21 +1530,10 @@ if (identity.getCity() != null) { address += identity.getCity(); } - fields.setField(doc, companyAddressTextField, address); - //fields.setField(doc, "a5.a5", "a5"); no field - fields.setField(doc, "a6.a6", "a6"); - fields.setField(doc, "a7.a7", "a7"); - fields.setField(doc, "a8.a8", "a8"); - fields.setField(doc, "a9.a9", "a9"); - fields.setField(doc, "a10.a10", "a10"); - fields.setField(doc, "a11.a11", "a11"); - fields.setField(doc, "a12.a12", "a12"); - - - //SIRET TextField + //fills in SIRET TextField if (identity.getVatNumber() != null) { String VATNumber = ""; for (int i=0; i<identity.getVatNumber().length(); i++) { @@ -1569,197 +1544,109 @@ } - //phone number TextField + //fills in phone number TextField if (identity.getPhoneNumber() != null) { fields.setField(doc, phoneNumberTextField, identity.getPhoneNumber()); } - fields.setField(doc, "a15.a15", "a15"); - fields.setField(doc, "a16.a16", "a16"); - - fields.setField(doc, "date1.date1", "date1"); - fields.setField(doc, "date2.date2", "date2"); - //end of page one //page two - String - //A. MONTANT DES OPERATIONS REALISEE - //OPERATIONS IMPOSABLES (H.T.) OPERATIONS NON IMPOSABLE - textField_01 = "b1.b1", textField_04 = "b8.b8", - textField_02 = "b2.b2", textField_05 = "b9.b9", - textField_2A = "b3.b3", textField_06 = "b10.b10", - textField_03 = "b4.b4", textField_6A = "b11.b11", - textField_03_bis = "b04.b04", - textField_3A = "b5.b5", textField_07 = "b12.b12", - textField_3B = "b6.b6", textField_7A = "b13.b13", - textField_3C = "b7.b7", textField_7B = "b14.b14", - - //B. DECOMPTE DE LA TVA A PAYE - //TVA BRUTE - //Base hors taxe Taxe due - textField_08_DutyFree = "b15.b15", textField_08_VAT = "b23.b23", - textField_09_DutyFree = "b16.b16", textField_09_VAT = "b24.b24", - textField_9B_DutyFree = "b17.b17", textField_9B_VAT = "b25.b25", - textField_10_DutyFree = "b18.b18", textField_10_VAT = "b26.b26", - textField_11_DutyFree = "b19.b19", textField_11_VAT = "b27.b27", - textField_12_DutyFree = "b20.b20", textField_12_VAT = "b28.b28", - textField_13_DutyFree = "b21.b21", textField_13_VAT = "b29.b29", - textField_14_DutyFree = "b22.b22", textField_14_VAT = "b30.b30", - textField_15_VAT = "b31.b31", - textField_16_VAT = "b32.b32", - textField_17_VAT = "b33.b33", - textField_18_VAT = "b34.b34", - //TVA DEDUCTIBLE - textField_19_VAT = "b35.b35", - textField_20_VAT = "b36.b36", - textField_21_VAT = "b37.b37", - textField_21_bis = "b.b", - textField_22_VAT = "b38.b38", - textField_22A = "taux.taux", - textField_23_VAT = "total1.total1", - textField_24_VAT = "b39.b39", - - //CREDIT TAXE A PAYER - textField_25 = "b40.b40", textField_28 = "b43.b43", - textField_26 = "b41.b41", textField_29 = "b44.b44", - textField_27 = "b42.b42", textField_30 = "b45.b45", - textField_31 = "b46.b46", - textField_32 = "b47.b47"; - - //Operations realisees en France metropolitaine - BigDecimal BD_08_DutyFree = new BigDecimal(0), - BD_08_VAT = new BigDecimal(0); - if (!BD_08_DutyFree.equals(BigDecimal.ZERO)) { - fields.setField(doc, textField_08_DutyFree, BD_08_DutyFree.toString()); - BD_08_VAT = BD_08_DutyFree.multiply(BigDecimal.valueOf(0.196)); - fields.setField(doc, textField_08_VAT, BD_08_VAT.toString()); - } + //sets parameters to use for each TextField + ArrayList<ArrayList<String>> listOfLists = new ArrayList<ArrayList<String>>(); - BigDecimal BD_09_DutyFree = new BigDecimal(0), - BD_09_VAT = new BigDecimal(0); - if (!BD_09_DutyFree.equals(BigDecimal.ZERO)) { - fields.setField(doc, textField_09_DutyFree, BD_09_DutyFree.toString()); - BD_09_VAT = BD_09_DutyFree.multiply(BigDecimal.valueOf(0,055)); - fields.setField(doc, textField_09_VAT, BD_09_VAT.toString()); - } + listOfLists.add(new ArrayList<String>(Arrays.asList("b1.b1", "Ventes, prestations de services"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b2.b2", "Autres opérations imposables"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b3.b3", "Achats de prestations de services intracommunautaires"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b4.b4", "Acquisitions intracommunautaires"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b5.b5", "Livraisons de gaz naturel ou d'électricité imposables en France"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b6.b6", "Achats de biens ou de prestations de services réalisées auprès d'un assujetti non établi en France"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b7.b7", "Régularisations (imposables)"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b8.b8", "Exportations hors CE"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b9.b9", "Autres opérations non imposables"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b10.b10", "Livraisons intracommunautaires"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b11.b11", "Livraisons de gaz naturel ou d'électricité non imposables en France"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b12.b12", "Achats de franchise"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b13.b13", "Ventes de biens ou prestations de services réalisées aurpès d'un assujetti non établi en France"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b14.b14", "Régularisations (non imposables)"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b15.b15", "Taux normal 19,6%", "0.196", "b23.b23"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b16.b16", "Taux réduit 5,5%", "0.055", "b24.b24"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b17.b17", "Taux normal 8,5%", "0.085", "b25.b25"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b18.b18", "Taux réduit 2,1%", "0.021", "b26.b26"))); + //unknown tax % + //listOfLists.add(new ArrayList<String>(Arrays.asList("b19.b19", "Opérations imposables à un autre taux (France métropolitaine ou DOM)", "", "b27.b27"))); + //listOfLists.add(new ArrayList<String>(Arrays.asList("b20.b20", "Ancien taux", "", "b27.b27"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b35.b35", "Biens constituant des immobilisations"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b36.b36", "Autres biens et services"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b37.b37", "Autre TVA à déduire"))); + listOfLists.add(new ArrayList<String>(Arrays.asList("b38.b38", "Report du crédit apparaissant ligne 27 de la précédente déclaration"))); - BigDecimal BD_9B_DutyFree = new BigDecimal(0), - BD_9B_VAT = new BigDecimal(0); - - - //Operations realisees dans les DOM - BigDecimal BD_10_DutyFree = new BigDecimal(0), - BD_10_VAT = new BigDecimal(0); - if (!BD_10_DutyFree.equals(BigDecimal.ZERO)) { - fields.setField(doc, textField_10_DutyFree, BD_10_DutyFree.toString()); - BD_10_VAT = BD_10_DutyFree.multiply(BigDecimal.valueOf(0,055)); - fields.setField(doc, textField_10_VAT, BD_10_VAT.toString()); + BigDecimal amount; + //A MONTANT DES OPÉRATIONS RÉALISÉES + for (int i = 0; i < 13; i++) { + amount = vatStatementService.vatStatementAmounts( + vatStatementService.findVatStatementByString(listOfLists.get(i).get(1)), + beginDate, endDate); + if (!amount.equals(BigDecimal.ZERO)) { + fields.setField(doc, listOfLists.get(i).get(0), amount.toString()); + } } - BigDecimal BD_11_DutyFree = new BigDecimal(0), - BD_11_VAT = new BigDecimal(0); - if (!BD_11_DutyFree.equals(BigDecimal.ZERO)) { - fields.setField(doc, textField_11_DutyFree, BD_11_DutyFree.toString()); - BD_11_VAT = BD_11_DutyFree.multiply(BigDecimal.valueOf(0,021)); - fields.setField(doc, textField_11_VAT, BD_11_VAT.toString()); + BigDecimal sommeTVABruteDue = new BigDecimal(0); + //B DÉCOMPTE DE LA TVA À PAYER + for (int i = 13; i < 19; i++) { + amount = vatStatementService.vatStatementAmounts( + vatStatementService.findVatStatementByString(listOfLists.get(i).get(1)), + beginDate, endDate); + if (!amount.equals(BigDecimal.ZERO)) { + sommeTVABruteDue = sommeTVABruteDue.add(amount.multiply(BigDecimal.valueOf(Double.valueOf(listOfLists.get(i).get(2))))); + fields.setField(doc, listOfLists.get(i).get(0), amount.toString()); + fields.setField(doc, listOfLists.get(i).get(3), + amount.multiply(BigDecimal.valueOf(Double.valueOf(listOfLists.get(i).get(2)))).toString()); + } } - BigDecimal BD_12_DutyFree = new BigDecimal(0), - BD_12_VAT = new BigDecimal(0); + // TVA antérieurement déduite à reverser + BigDecimal tvaAReverser = vatStatementService.vatStatementAmounts( + vatStatementService.findVatStatementByString("TVA antérieurement déduite à reverser"), + beginDate, endDate); + sommeTVABruteDue = sommeTVABruteDue.add(tvaAReverser); + if (!tvaAReverser.equals(BigDecimal.ZERO)) { + fields.setField(doc, "b31.b31" , tvaAReverser.toString()); + } - //Operations imposables a un autre taux (France metro. ou DOM) - BigDecimal BD_13_DutyFree = new BigDecimal(0), - BD_13_VAT = new BigDecimal(0); - - BigDecimal BD_14_DutyFree = new BigDecimal(0), - BD_14_VAT = new BigDecimal(0); - - - - BigDecimal BD_15_VAT = new BigDecimal(0); - //Total de la TVA brute due - //Total from line 08 to 15 - BigDecimal BD_16_VAT = - BD_08_VAT.add(BD_09_VAT).add(BD_9B_VAT).add(BD_10_VAT) - .add(BD_11_VAT).add(BD_12_VAT).add(BD_13_VAT).add(BD_14_VAT) - .add(BD_15_VAT); + fields.setField(doc, "b32.b32" , sommeTVABruteDue.toString()); - fields.setField(doc, textField_16_VAT, BD_16_VAT.toString()); - - //TVA DEDUCTIBLE - BigDecimal BD_19_VAT = new BigDecimal(0); - if (!BD_19_VAT.equals(BigDecimal.ZERO)) { - fields.setField(doc, textField_19_VAT, BD_19_VAT.toString()); - } - - BigDecimal BD_20_VAT = new BigDecimal(0); - if (!BD_20_VAT.equals(BigDecimal.ZERO)) { - fields.setField(doc, textField_20_VAT, BD_20_VAT.toString()); - } - - BigDecimal BD_21_VAT = new BigDecimal(0); - if (!BD_21_VAT.equals(BigDecimal.ZERO)) { - fields.setField(doc, textField_21_VAT, BD_21_VAT.toString()); - } - - BigDecimal BD_21_bis = new BigDecimal(0); - if (!BD_21_bis.equals(BigDecimal.ZERO)) { - fields.setField(doc, textField_21_bis, BD_21_bis.toString()); - } - - BigDecimal BD_22_VAT = new BigDecimal(0); - if (!BD_22_VAT.equals(BigDecimal.ZERO)) { - fields.setField(doc, textField_22_VAT, BD_22_VAT.toString()); - } - - //Total TVA deductible - //Total from line 19 to 22 - BigDecimal BD_23_VAT = - BD_19_VAT.add(BD_20_VAT).add(BD_21_VAT).add(BD_22_VAT); - fields.setField(doc, textField_23_VAT, BD_23_VAT.toString()); - - //CREDIT - BigDecimal BD_27 = new BigDecimal(0); - if (BD_23_VAT.subtract(BD_16_VAT).compareTo(BigDecimal.ZERO) < 0) { - BigDecimal BD_25 = BD_23_VAT.subtract(BD_16_VAT); - fields.setField(doc, textField_25, BD_25.toString()); - - BigDecimal BD_26 = new BigDecimal(0); - if (!BD_26.equals(BigDecimal.ZERO)) { - fields.setField(doc, textField_26, BD_26.toString()); + BigDecimal sommeTVADeductible = new BigDecimal(0); + //TVA DÉDUCTIBLE + for (int i = 19; i < 22; i++) { + amount = vatStatementService.vatStatementAmounts( + vatStatementService.findVatStatementByString(listOfLists.get(i).get(1)), + beginDate, endDate); + if (!amount.equals(BigDecimal.ZERO)) { + sommeTVADeductible = sommeTVADeductible.add(amount); + fields.setField(doc, listOfLists.get(i).get(0), amount.toString()); } - - //Credit a reporter = - //Credit de TVA - remboursement demande sur form. n. 3519 - BD_27 = BD_25.subtract(BD_26); } - fields.setField(doc, textField_27, BD_27.toString()); - //TAXE A PAYER - BigDecimal BD_32 = new BigDecimal(0); - if (BD_23_VAT.subtract(BD_16_VAT).compareTo(BigDecimal.ZERO) > 0) { - //TVA nette due - BigDecimal BD_28 = BD_16_VAT.subtract(BD_23_VAT); - fields.setField(doc, textField_28, BD_28.toString()); - - BigDecimal BD_29 = new BigDecimal(0); - BigDecimal BD_30 = new BigDecimal(0); - BigDecimal BD_31 = new BigDecimal(0); - - //Total a payer = - //TVA nette due + taxes assimilees (annexe 3310) - // - sommes a imputer + sommes a ajouter - BD_32 = BD_28.add(BD_29).subtract(BD_30).add(BD_31); - } - fields.setField(doc, textField_32, BD_32.toString()); + //Total de la TVA déductible + fields.setField(doc, "total1.total1" , sommeTVADeductible.toString()); + + //Crédit de TVA + BigDecimal creditDeTva = sommeTVADeductible.subtract(sommeTVABruteDue); + if (creditDeTva.compareTo(BigDecimal.ZERO) == 1) { + fields.setField(doc, "b40.b40" , creditDeTva.abs().toString()); + fields.setField(doc, "b42.b42" , creditDeTva.abs().toString()); + } else { + fields.setField(doc, "b43.b43" , creditDeTva.abs().toString()); + fields.setField(doc, "b47.b47" , creditDeTva.abs().toString()); + } //end of page two - // save the updated document to the new file and close doc.save(filePath); doc.close(); Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/VatStatementServiceImpl.java =================================================================== --- trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/VatStatementServiceImpl.java 2011-07-12 15:29:21 UTC (rev 3222) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/VatStatementServiceImpl.java 2011-07-13 12:00:44 UTC (rev 3223) @@ -25,7 +25,6 @@ package org.chorem.lima.business.ejb; import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.StringTokenizer; @@ -46,11 +45,10 @@ import org.chorem.lima.business.ejbinterface.VatStatementServiceLocal; import org.chorem.lima.entity.Account; import org.chorem.lima.entity.AccountDAO; -import org.chorem.lima.entity.FinancialStatement; -import org.chorem.lima.entity.FinancialStatementDAO; import org.chorem.lima.entity.LimaCallaoDAOHelper; import org.chorem.lima.entity.VatStatement; import org.chorem.lima.entity.VatStatementDAO; +import org.chorem.lima.entity.VatStatementImpl; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaContextFactory; import org.nuiton.topia.TopiaException; @@ -342,7 +340,49 @@ } return debitTemp.subtract(creditTemp).abs(); } + + @Override + public VatStatement findVatStatementByString(String label) throws LimaException { + + VatStatement vatStatement = new VatStatementImpl(); + TopiaContext transaction = null; + + try { + + transaction = beginTransaction(); + + VatStatementDAO vatStatementDAO = + LimaCallaoDAOHelper.getVatStatementDAO(transaction); + TopiaQuery query = vatStatementDAO.createQuery(); + + String labelProperty = + TopiaQuery.getProperty(VatStatement.LABEL); + + //not to be used causing query exception with ' character + //query.addWhere(labelProperty + " " + Op.LIKE + " '%" + + // vatStatement.getLabel() + "%'"); + + query.addWhere(labelProperty, Op.LIKE, label); + query.setMaxResults(1); + log.debug("query to find account by VAT " + query); + + List<VatStatement> vatStatementsList = vatStatementDAO.findAllByQuery(query); + + if (vatStatementsList.size() > 0) { + vatStatement = vatStatementsList.get(0); + } + + } + catch (TopiaException e) { + doCatch(transaction, e, log); + } + finally { + doFinally(transaction, log); + } + return vatStatement; + } + protected TopiaContext beginTransaction() throws TopiaException { // basic check done, make check in database Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/ejbinterface/VatStatementService.java =================================================================== --- trunk/lima-business/src/main/java/org/chorem/lima/business/ejbinterface/VatStatementService.java 2011-07-12 15:29:21 UTC (rev 3222) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/ejbinterface/VatStatementService.java 2011-07-13 12:00:44 UTC (rev 3223) @@ -55,5 +55,7 @@ Date selectedBeginDate, Date selectedEndDate) throws LimaException, TopiaException; + VatStatement findVatStatementByString(String label) throws LimaException; + } \ No newline at end of file