--- /dev/null
+package com.axyus.generator.pespj.steps;
+
+import com.axyus.generator.pespj.GeneratorPesPjWizardProcess;
+import com.axyus.generator.pespj.UnExpectedException;
+import com.axyus.generator.pespj.ui.GenerationResultUI;
+import com.axyus.generator.pespj.utils.ConfigHandler;
+import com.axyus.swing.components.JHtmlReportPanel.HyperLinkHandler.DefaultHyperLinkHandler;
+import com.axyus.swing.components.wizard.WizardProcess;
+import fr.gouv.finances.dgfip.xemelios.tools.ToolServiceProviderFactory;
+import fr.gouv.finances.dgfip.xemelios.tools.XemeliosToolServiceProvider;
+import fr.gouv.minefi.cp.helios.pes_v2.facture.r0.aller.TPESFacture;
+import fr.gouv.minefi.cp.helios.pes_v2.rev0.aller.PESAller;
+import fr.gouv.minefi.cp.helios.pes_v2.rev0.aller.TPESPJ;
+import fr.gouv.minefi.cp.helios.pes_v2.rev0.aller.TPESPJs;
+import fr.gouv.minefi.cp.helios.pes_v2.rev0.aller.TPESRefCompta;
+import java.awt.Component;
+import java.util.List;
+import javax.swing.ToolTipManager;
+
+/**
+ * @author SES
+ * Etape de compte rendu de la vérification du Fichier PES
+ */
+public class GenerationResultStep extends WizardProcess.Step<GeneratorPesPjWizardProcess> {
+
+ private GenerationResultUI generationResultUI;
+
+ private static String HEAD_CSS = new StringBuilder(" <head>").append(" <style type='text/css'>").append(" body { font-family: \"Verdana\", \"Trebuchet MS\", \"Tahoma\", \"Arial\", \"sans-serif\"; font-size: 8px }").append(" h1 { font-size: 9px; margin: 3 0 3 0; }").append(" h2 { font-size: 9px; margin: 10 0 3 0; }").append(" h3 { font-size: 9px; font-weight: bold; margin: 3 0 3 0; }").append(" th { font-weight: normal; white-space:nowrap; text-align: left; vertical-align: top; margin-right: 5; width: 160 }").append(" td { color: #00009B ;}").append(" td.black { color: #000000 }").append(" a { text-decoration: underline ; color: #000000}").append(" .value { color: #00009B }").append(" .confiance { font-weight: bold; color: #2EAE00 }").append(" .warning, .warning a { font-weight: bold; color: #FF2525 }").append(" .attention { font-weight: bold; color: #E88401 }").append(" .libelleZone-row { font-size: 1.0em; margin-right: 5px }").append(" .libelleZone-col { font-size: 1.0em; margin-right: 5px }").append(" .zone-row { font-size: 1.0em; color: #00009B }").append(" .zone-col { font-size: 1.0em; color: #00009B; margin-right: 5px }").append(" .div1 { margin-left: 0px }").append(" .div2 { margin-left: 15px }").append("</style></head>").toString();
+
+ private boolean pesFileImport;
+ private static String DOC_ID = "pes-aller";
+
+ public GenerationResultStep(boolean pesFileImport) {
+ this.generationResultUI = new GenerationResultUI();
+ ToolTipManager.sharedInstance().setDismissDelay(10000);
+ this.pesFileImport = pesFileImport;
+ }
+
+ @Override
+ public void beforeDisplay() {
+ generationResultUI.getHtmlReportPanel().setBaseURL(this.getClass().getResource("com/axyus/generator/pespj"));
+ DefaultHyperLinkHandler reportHyperLinkHandler = new DefaultHyperLinkHandler(generationResultUI.getHtmlReportPanel());
+ generationResultUI.getHtmlReportPanel().setHyperLinkHandler(reportHyperLinkHandler);
+ generationResultUI.getHtmlReportPanel().setHtml(getRendering(reportHyperLinkHandler));
+ if (pesFileImport) {
+ generationResultUI.setWizardProcess(getWizardProcess());
+ generationResultUI.setWizardDialog(getWizardProcess().getWizardDialog());
+ generationResultUI.getImportXemeliosCheckBx().setVisible(true);
+ } else {
+ generationResultUI.getImportXemeliosCheckBx().setVisible(false);
+ }
+ }
+
+ /**
+ *
+ * Genere la string du code HTML de l'affichage du compte rendu.
+ * @param reportHyperLinkHandler Handler pour la gestion des lien hypertexte
+ * @return String
+ */
+ private String getRendering(DefaultHyperLinkHandler reportHyperLinkHandler) {
+ PESAller pesAller = getWizardProcess().getPesAller();
+
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("<html>");
+ sb.append(HEAD_CSS);
+ sb.append(" <body>");
+ generateInfosCollectivite(sb, pesAller);
+ sb.append("<br/>");
+ generateInfosPJ(sb, pesAller);
+ sb.append(" </body>");
+ sb.append("</html>");
+
+ return sb.toString();
+ }
+
+ @Override
+ public String getTile() {
+ return "Résultat de la génération";
+ }
+
+ @Override
+ public void validate() throws StepValidationException {
+ XemeliosToolServiceProvider serviceProvider = ToolServiceProviderFactory.newInstance().getServiceProvider();
+ List<String> availableDocumentsList = serviceProvider.getImportableDocumentsConfigurations();
+
+ if (availableDocumentsList.contains(DOC_ID)) {
+ try {
+ getWizardProcess().setImportXemeliosException(null);
+ serviceProvider.importFile(getWizardProcess().getReferenceComptableStep().getPesPjFile(), DOC_ID);
+ } catch (Exception ex) {
+ if (ex.getClass().getName().contains("ServiceException")) {
+ getWizardProcess().setImportXemeliosException(ex);
+ } else {
+ throw new UnExpectedException(ex);
+ }
+ }
+ } else {
+ throw new StepValidationException("Le type de document " + DOC_ID + " n'est pas supporté sur ce systeme. Contacter votre administrateur.");
+ }
+ }
+
+ @Override
+ public Component getUI() {
+ return generationResultUI;
+ }
+
+ private void generateInfosCollectivite(StringBuilder sb, PESAller pesAller) {
+ sb.append(" <h2>Informations collectivité</h2>");
+
+ sb.append("<br/>");
+ sb.append("Identifiant du poste : ").append(pesAller.getEnTetePES().getIdPost().getV());
+ sb.append("<br/>");
+ sb.append("Code collectivité : ").append(pesAller.getEnTetePES().getCodCol().getV());
+ sb.append("<br/>");
+ sb.append("Code budget : ").append(pesAller.getEnTetePES().getCodBud().getV());
+ sb.append("<br/>");
+ sb.append("Identifiant de la collectivité : ").append(pesAller.getEnTetePES().getIdColl().getV());
+ if(pesAller.getEnTetePES().getFinJur() != null && !pesAller.getEnTetePES().getFinJur().getV().isEmpty()) sb.append("<br/>").append("Finess juridique : ").append(pesAller.getEnTetePES().getFinJur().getV());
+ if(pesAller.getEnTetePES().getLibelleColBud() != null && !pesAller.getEnTetePES().getLibelleColBud().getV().isEmpty()) sb.append("<br/>").append("Libelle collectivité : ").append(pesAller.getEnTetePES().getLibelleColBud().getV());
+ }
+ private void generateInfosPJ(StringBuilder sb, PESAller pesAller) {
+ ConfigHandler config = getWizardProcess().getConfigHandler();
+ List<TPESPJs.PJ> pjs = pesAller.getPESPJ().getPJ();
+
+ // Informations sur les factures
+ TPESFacture facture = pesAller.getPESFacture();
+ if(facture != null){
+ sb.append("<h2>Informations sur les Factures</h2>");
+ sb.append("<br/>");
+ sb.append("La facture contient ").append(facture.getFactureIndiv().size()).append(" factures individuelles").append("<br/><br/>");
+ }
+
+ // Informations sur les PJ
+ sb.append(" <h2>Informations sur les PJ</h2>");
+ sb.append("<br/>");
+ sb.append(pjs.size()).append(" PJ générée");
+ if(pjs.size() > 1){
+ sb.append("s");
+ }
+ sb.append(" :");
+
+ sb.append(" <ul>");
+ for(TPESPJ pj:pjs){
+ List<TPESRefCompta> refsComptas = pj.getRefCompta();
+ sb.append(" <li>").append(pj.getNomPJ().getV()).append(" (").append(refsComptas.size()).append(" réf");
+ if(refsComptas.size() > 1){
+ sb.append("s");
+ }
+ sb.append(" comptable");
+ if(refsComptas.size() > 1){
+ sb.append("s");
+ }
+ sb.append(")</li>");
+ }
+ sb.append(" </ul>");
+ }
+
+}