<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
- <version>4.0.1</version>
+ <version>5.0.1</version>
<exclusions>
<exclusion>
<groupId>xml-apis</groupId>
String nom
String descriptif
Boolean systeme
- Integer numeroVersion
String police
Etablissement etablissement
TemplateEliot templateEliot
String nom
String descriptif
String code
- Integer numeroVersion
TemplateTypeFonctionnalite typeFonctionnalite
TemplateJasper templateJasper
Boolean sousRapport = false
String param
String jrxml
- String templateDynamiqueFactoryClasse = ""
byte[] jasper
// donne la référence au sous rapport, si celui-ci existe
TemplateJasper sousTemplate
param(nullable: true)
jasper(nullable: true)
sousTemplate(nullable: true)
- templateDynamiqueFactoryClasse(nullable: true)
}
static mapping = {
* Indique que les critères précisent un seuil
* @return un Boolean
*/
- Boolean hasSeuil(){
+ public Boolean hasSeuil() {
return valeurSeuil > 0
}
+
+ public Boolean hasSansMotif() {
+ motifs?.find {!it.modifiable}
+ }
+
}
try {
String jrxml = jrxmlIS.getText(ConfigImpression.DEFAULT_ENCODING)
JasperDesign jasperDesign = JRXmlLoader.load(
- new ByteArrayInputStream(
- jrxml.getBytes(ConfigImpression.DEFAULT_ENCODING)
- )
+ new ByteArrayInputStream(
+ jrxml.getBytes(ConfigImpression.DEFAULT_ENCODING)
+ )
)
templateJasper = new TemplateJasper(
- param: param,
- jrxml: jrxml,
- jasper: jasperToBytes(compile(jasperDesign)),
- sousTemplate: sousRapport,
- templateDynamiqueFactoryClasse: templateDynamiqueFactoryClasse
+ param: param,
+ jrxml: jrxml,
+ jasper: jasperToBytes(compile(jasperDesign)),
+ sousTemplate: sousRapport,
+ templateDynamiqueFactoryClasse: templateDynamiqueFactoryClasse
)
templateJasper.save(flush: true, failOnError: true)
} catch (Exception e) {
log.error e.message
throw new ImpressionServiceException(
- "Le template Jasper n'a pas pu etre importe.",
- e
+ "Le template Jasper n'a pas pu etre importe.",
+ e
)
}
@Transactional
TemplateEliot importeTemplateEliot(TemplateTypeFonctionnalite typeFonctionnalite,
TemplateEliotEnum templateEliotEnum,
- Integer numeroVersion,
String param,
InputStream templateJasperIS,
TemplateTypeDonnees typeDonnees,
}
// traite le chemin template Jasper
TemplateJasper templateJasper = importeTemplateJasper(
- param,
- templateJasperIS
+ param,
+ templateJasperIS
)
//cree et sauvegarde le template eliot
templateEliot = new TemplateEliot(
- nom: templateEliotEnum.nom,
- descriptif: templateEliotEnum.description,
- code: templateEliotEnum.toString(),
- numeroVersion: numeroVersion,
- typeFonctionnalite: typeFonctionnalite,
- templateJasper: templateJasper,
- sousRapport: sousRapport,
- typeDonnees: typeDonnees,
- infoAbsences: templateEliotEnum.getInfoAbsences(),
- infoRetards: templateEliotEnum.getInfoRetards(),
- infoReleveNotes: templateEliotEnum.getInfoReleveNotes(),
- infoBulletinNotes: templateEliotEnum.getInfoBulletinNotes(),
- infoDetailAbsences: templateEliotEnum.getInfoDetailAbsences(),
- infoDetailRetards: templateEliotEnum.getInfoDetailRetards()
+ nom: templateEliotEnum.nom,
+ descriptif: templateEliotEnum.description,
+ code: templateEliotEnum.toString(),
+ typeFonctionnalite: typeFonctionnalite,
+ templateJasper: templateJasper,
+ sousRapport: sousRapport,
+ typeDonnees: typeDonnees,
+ infoAbsences: templateEliotEnum.getInfoAbsences(),
+ infoRetards: templateEliotEnum.getInfoRetards(),
+ infoReleveNotes: templateEliotEnum.getInfoReleveNotes(),
+ infoBulletinNotes: templateEliotEnum.getInfoBulletinNotes(),
+ infoDetailAbsences: templateEliotEnum.getInfoDetailAbsences(),
+ infoDetailRetards: templateEliotEnum.getInfoDetailRetards()
).save(failOnError: true)
} catch (Exception e) {
log.error e.message
throw new ImpressionServiceException(
- "Le template eliot n'a pas pu etre importe.",
- e
+ "Le template eliot n'a pas pu etre importe.",
+ e
)
}
return templateEliot
TemplateEliot metAJourTemplateEliot(TemplateEliot templateEliot,
TemplateTypeFonctionnalite typeFonctionnalite,
TemplateEliotEnum templateEliotEnum,
- Integer numeroVersion,
String param,
InputStream templateJasperIS,
TemplateTypeDonnees typeDonnees,
videTemplateEliot(templateEliot)
// traite le chemin template Jasper
TemplateJasper templateJasper = importeTemplateJasper(
- param,
- templateJasperIS
+ param,
+ templateJasperIS
)
templateEliot.nom = templateEliotEnum.nom
templateEliot.descriptif = templateEliotEnum.description
templateEliot.code = templateEliotEnum.toString()
- templateEliot.numeroVersion = numeroVersion
templateEliot.typeFonctionnalite = typeFonctionnalite
templateEliot.templateJasper = templateJasper
templateEliot.sousRapport = sousRapport
} catch (Exception e) {
log.error e.message
throw new ImpressionServiceException(
- "Le template eliot n'a pas pu etre mis a jour.",
- e
+ "Le template eliot n'a pas pu etre mis a jour.",
+ e
)
}
}
@Transactional
TemplateEliot importeTableau(TemplateTypeFonctionnalite typeFonctionnalite,
TemplateEliotEnum templateEliotEnum,
- Integer numeroVersion,
InputStream tableauIS,
InputStream sousRapportIS,
InputStream sousSousRapportIS,
TemplateJasper sousSousTemplateJasper = null
if (sousSousRapportIS) {
sousSousTemplateJasper = importeTemplateJasper(
- ConfigImpression.PARAM_LIGNE_SOUS_MATIERE,
- sousSousRapportIS,
- null,
- classeFactorySousSousRapport)
+ ConfigImpression.PARAM_LIGNE_SOUS_MATIERE,
+ sousSousRapportIS,
+ null,
+ classeFactorySousSousRapport)
}
// fsil : step 2 : importer le template jasper correspondant au sous rapport
TemplateJasper sousTemplateJasper = null
if (sousRapportIS) {
sousTemplateJasper = importeTemplateJasper(
- ConfigImpression.PARAM_LIGNE_MATIERE,
- sousRapportIS,
- sousSousTemplateJasper,
- classeFactorySousRapport)
+ ConfigImpression.PARAM_LIGNE_MATIERE,
+ sousRapportIS,
+ sousSousTemplateJasper,
+ classeFactorySousRapport)
}
// fsil : step 3 : importer le template jasper correspondant au tableau
TemplateJasper tableauTemplateJasper = importeTemplateJasper(
- ConfigImpression.PARAM_TABLEAU,
- tableauIS,
- sousTemplateJasper,
- classeFactoryTableau)
+ ConfigImpression.PARAM_TABLEAU,
+ tableauIS,
+ sousTemplateJasper,
+ classeFactoryTableau)
// fsil : step 4 : creer et sauvegarder le template eliot
try {
if (typeFonctionnalite) {
// fsil : step 4.1 : creer et sauvegarder le template eliot correspondant
// au ssSsRapport
templateEliot = new TemplateEliot(
- nom: templateEliotEnum.nom,
- descriptif: templateEliotEnum.description,
- code: templateEliotEnum.toString(),
- numeroVersion: numeroVersion,
- sousRapport: true,
- templateJasper: tableauTemplateJasper,
- typeFonctionnalite: typeFonctionnalite,
- typeDonnees: typeDonnees,
- infoAbsences: templateEliotEnum.getInfoAbsences(),
- infoRetards: templateEliotEnum.getInfoRetards(),
- infoReleveNotes: templateEliotEnum.getInfoReleveNotes(),
- infoBulletinNotes: templateEliotEnum.getInfoBulletinNotes(),
- infoDetailAbsences: templateEliotEnum.getInfoDetailAbsences(),
- infoDetailRetards: templateEliotEnum.getInfoDetailRetards()
-
+ nom: templateEliotEnum.nom,
+ descriptif: templateEliotEnum.description,
+ code: templateEliotEnum.toString(),
+ sousRapport: true,
+ templateJasper: tableauTemplateJasper,
+ typeFonctionnalite: typeFonctionnalite,
+ typeDonnees: typeDonnees,
+ infoAbsences: templateEliotEnum.getInfoAbsences(),
+ infoRetards: templateEliotEnum.getInfoRetards(),
+ infoReleveNotes: templateEliotEnum.getInfoReleveNotes(),
+ infoBulletinNotes: templateEliotEnum.getInfoBulletinNotes(),
+ infoDetailAbsences: templateEliotEnum.getInfoDetailAbsences(),
+ infoDetailRetards: templateEliotEnum.getInfoDetailRetards()
+
).save(failOnError: true)
} catch (Exception e) {
log.error e.message
throw new ImpressionServiceException(
- "Le tableau n'a pas pu etre importe.",
- e
+ "Le tableau n'a pas pu etre importe.",
+ e
)
}
return templateEliot
TemplateEliot metAJourTableau(TemplateEliot tableau,
TemplateTypeFonctionnalite typeFonctionnalite,
TemplateEliotEnum templateEliotEnum,
- Integer numeroVersion,
InputStream tableauIS,
InputStream sousRapportIS,
InputStream sousSousRapportIS,
TemplateJasper sousSousTemplateJasper = null
if (sousSousRapportIS) {
sousSousTemplateJasper = importeTemplateJasper(
- ConfigImpression.PARAM_LIGNE_SOUS_MATIERE,
- sousSousRapportIS,
- null,
- classeFactorySousSousRapport)
+ ConfigImpression.PARAM_LIGNE_SOUS_MATIERE,
+ sousSousRapportIS,
+ null,
+ classeFactorySousSousRapport)
}
// fsil : step 2 : importer le template jasper correspondant au sous rapport
TemplateJasper sousTemplateJasper = null
if (sousRapportIS) {
sousTemplateJasper = importeTemplateJasper(
- ConfigImpression.PARAM_LIGNE_MATIERE,
- sousRapportIS,
- sousSousTemplateJasper,
- classeFactorySousRapport)
+ ConfigImpression.PARAM_LIGNE_MATIERE,
+ sousRapportIS,
+ sousSousTemplateJasper,
+ classeFactorySousRapport)
}
// fsil : step 3 : importer le template jasper correspondant au tableau
TemplateJasper tableauTemplateJasper = importeTemplateJasper(
- ConfigImpression.PARAM_TABLEAU,
- tableauIS,
- sousTemplateJasper,
- classeFactoryTableau)
+ ConfigImpression.PARAM_TABLEAU,
+ tableauIS,
+ sousTemplateJasper,
+ classeFactoryTableau)
// fsil : step 4 : creer et sauvegarder le template eliot
try {
tableau.nom = templateEliotEnum.nom
tableau.descriptif = templateEliotEnum.description
tableau.code = templateEliotEnum.toString()
- tableau.numeroVersion = numeroVersion
tableau.sousRapport = true
tableau.templateJasper = tableauTemplateJasper
tableau.typeFonctionnalite = typeFonctionnalite
} catch (Exception e) {
log.error e.message
throw new ImpressionServiceException(
- "Le tableau n'a pas pu etre mis a jour.",
- e
+ "Le tableau n'a pas pu etre mis a jour.",
+ e
)
}
return tableau
List<TemplateChampMemo> listeTemplateChampMemo,
List<TemplateDocumentSousTemplateEliot> listeTemplateDocumentSousRapport,
TypeMedia typeMedia,
- Boolean systeme,
- Integer numeroVersion)
+ Boolean systeme
+ )
throws ImpressionServiceException {
TemplateDocument templateDocument = null
try {
}
// cree et sauvegarde le template document
templateDocument = new TemplateDocument(
- etablissement: etablissement,
- nom: templateDocumentEnum.nom,
- descriptif: templateDocumentEnum.description,
- code: templateDocumentEnum.toString(),
- templateEliot: templateEliot,
- media: typeMedia?.code,
- systeme: systeme,
- numeroVersion: numeroVersion
+ etablissement: etablissement,
+ nom: templateDocumentEnum.nom,
+ descriptif: templateDocumentEnum.description,
+ code: templateDocumentEnum.toString(),
+ templateEliot: templateEliot,
+ media: typeMedia?.code,
+ systeme: systeme
+
).save(failOnError: true)
// traite les champs memo
listeTemplateChampMemo.each { TemplateChampMemo templateChampMemo ->
}
@Transactional
- TemplateDocument metAJourTemplateDocument(
- TemplateDocument templateDocument,
- Etablissement etablissement,
- TemplateDocumentEnum templateDocumentEnum,
- TemplateEliot templateEliot,
- List<TemplateChampMemo> listeTemplateChampMemo,
- List<TemplateEliot> listeSousTemplateEliot,
- TypeMedia typeMedia,
- Boolean systeme,
- Integer numeroVersion
+ public TemplateDocument metAJourTemplateDocument(
+ TemplateDocument templateDocument,
+ Etablissement etablissement,
+ TemplateDocumentEnum templateDocumentEnum,
+ TemplateEliot templateEliot,
+ List<TemplateChampMemo> listeTemplateChampMemo,
+ List sousModeles,
+ TypeMedia typeMedia,
+ Boolean systeme
) throws ImpressionServiceException {
try {
videTemplateDocument(templateDocument)
- listeSousTemplateEliot.each {
- TemplateDocumentSousTemplateEliot docSousTemplateEliot =
- createTemplateDocumentSousTemplateEliot(
- ConfigImpression.PARAM_TABLEAU, it)
- docSousTemplateEliot.templateDocument = templateDocument
- docSousTemplateEliot.save()
+ sousModeles.each { Map element ->
+ element.each {k, v ->
+ TemplateDocumentSousTemplateEliot docSousTemplateEliot =
+ createTemplateDocumentSousTemplateEliot(
+ k, v)
+ docSousTemplateEliot.templateDocument = templateDocument
+ docSousTemplateEliot.save()
+ }
}
listeTemplateChampMemo.each {
it.templateDocument = templateDocument
}
- if (templateEliot){
+ if (templateEliot) {
templateDocument.templateEliot = templateEliot
}
templateDocument.etablissement = etablissement
templateDocument.code = templateDocumentEnum.toString()
templateDocument.media = typeMedia?.code
templateDocument.systeme = systeme
- templateDocument.numeroVersion = numeroVersion
} catch (Exception e) {
log.error e.message
throw new ImpressionServiceException(
- "La mise à jour du document a échoué.",
- e
+ "La mise à jour du document a échoué.",
+ e
)
}
return templateDocument
private List videTemplateDocument(TemplateDocument templateDocumentAVider) {
List<TemplateChampMemo> champMemos = TemplateChampMemo.
- findAllByTemplateDocument(templateDocumentAVider)
+ findAllByTemplateDocument(templateDocumentAVider)
champMemos.each {
it.delete()
}
List<TemplateDocumentSousTemplateEliot> sousTemplates =
- TemplateDocumentSousTemplateEliot.findAllByTemplateDocument(
- templateDocumentAVider
- )
+ TemplateDocumentSousTemplateEliot.findAllByTemplateDocument(
+ templateDocumentAVider
+ )
sousTemplates.each {
it.delete(flush: true)
throws ImpressionServiceException {
if (!champ) {
throw new ImpressionServiceException(
- "Le parametre champ est null ou vide."
+ "Le parametre champ est null ou vide."
)
}
new TemplateChampMemo(
- champ: champ,
- template: templateGroovy
+ champ: champ,
+ template: templateGroovy
)
}
) throws ImpressionServiceException {
if (!param) {
throw new ImpressionServiceException(
- "Le parametre param est null ou vide."
+ "Le parametre param est null ou vide."
)
}
if (!templateEliot) {
throw new ImpressionServiceException("Le template eliot est null.")
}
new TemplateDocumentSousTemplateEliot(
- param: param,
- templateEliot: templateEliot
+ param: param,
+ templateEliot: templateEliot
)
}
import org.lilie.services.eliot.impression.image.ImpressionImageService
import org.lilie.services.eliot.impression.image.ImageType
import org.lilie.services.eliot.impression.donnees.DonneesOptions
+import net.sf.jasperreports.engine.data.JsonDataSource
+import net.sf.jasperreports.engine.JREmptyDataSource
/**
* Service d'org.lilie.services.eliot.impression
String codeTemplateDocument,
Object data
) {
+ TemplateDocument templateDocument = getTemplateDocument(codeTemplateDocument)
+
+ JasperPrint jasperPrint = construitJasperPrint(
+ data,
+ etab,
+ templateDocument
+ )
+
+ return printPdf(jasperPrint)
+ }
+
+ public ByteArrayOutputStream creeArchiveFromJSON(Etablissement etab,
+ String codeTemplateDocument,
+ String classe,
+ String dateDebut,
+ String dateFin,
+ InputStream jsonData,
+ List<String> requete
+ ) {
+ TemplateDocument templateDocument = getTemplateDocument(codeTemplateDocument)
+
+ JasperPrint jasperPrint = archive(
+ etab,
+ templateDocument,
+ classe,
+ dateDebut,
+ dateFin,
+ jsonData,
+ requete)
+
+ return printPdf(jasperPrint)
+ }
+
+ private TemplateDocument getTemplateDocument(String codeTemplateDocument) {
+
TemplateDocument templateDocument = TemplateDocument.findByCode(
codeTemplateDocument
)
if (!templateDocument) {
throw new IllegalStateException("Le modèle $codeTemplateDocument n'existe pas en base.")
}
+ templateDocument
- JasperPrint jasperPrint = construitJasperPrint(data, etab, templateDocument)
- return printPdf(jasperPrint)
}
/**
Object options = null) throws ImpressionServiceException {
if (log.infoEnabled) {
- log.info("Fusionne : " + templateDocument.nom)
+ log.info("Fusionne json : " + templateDocument.nom)
}
JasperPrint jasperPrint = null
try {
jrBeanCollectionDataSource
)
+ if (log.debugEnabled) {
+ log.debug("fin fusion json: " + templateDocument.nom)
+ }
+
+ } catch (Exception e) {
+ log.error e.message
+ throw new ImpressionServiceException(
+ "Le document n'a pas pu etre fusionne.",
+ e
+ )
+ }
+ return jasperPrint
+ }
+
+ /**
+ * fusionne le modèle utilisateur et les données pour retourner un descriptif du
+ * document à imprimer. Se base sur des données json
+ * @param etab l'établissement
+ * @param templateDocument template de document
+ * @param data données de publipostage
+ * @return un objet JasperPrint
+ */
+ private JasperPrint archive(Etablissement etab,
+ TemplateDocument templateDocument,
+ String classe,
+ String dateDebut,
+ String dateFin,
+ InputStream data,
+ List<String> requete) throws ImpressionServiceException {
+
+ if (log.infoEnabled) {
+ log.info("Fusionne : " + templateDocument.nom)
+ }
+ JasperPrint jasperPrint = null
+ try {
+ // tests preliminaires
+ TemplateJasper templateJasper =
+ templateDocument?.templateEliot?.templateJasper
+
+ if (templateJasper?.jasper == null) {
+ throw new ImpressionServiceException(
+ "Pas de template Jasper correspondant au template document."
+ )
+ }
+
+ if (log.debugEnabled) {
+ log.debug("Chargement modèle principal")
+ }
+
+ JasperReport jasperReport = impressionTemplateFactoryService.chargeModeleJasperParDefaut(
+ templateJasper
+ )
+
+ List<JsonDataSource> allJsonDataSource = []
+
+ requete.each {
+ JsonDataSource jsonDataSource = new JsonDataSource(data, it)
+ allJsonDataSource << jsonDataSource
+ data.reset()
+ }
+
+ // Set les parametres
+ ListeParametresImpression parameters = findParametresTemplateDocument(
+ templateDocument,
+ null
+ )
+
+ parameters.json = allJsonDataSource
+ parameters.titre = templateDocument.nom
+ parameters.classe = classe
+ parameters.dateDebut = dateDebut
+ parameters.dateFin = dateFin
+ parameters.etablissement = etab.nomAffichage
+
+ // lance la fusion
+ if (log.debugEnabled) {
+ log.debug("parametres=$parameters")
+ log.debug("fusion jasper")
+ }
+
+ jasperPrint = JasperFillManager.fillReport(
+ jasperReport,
+ parameters,
+ new JREmptyDataSource(1)
+ )
+
if (log.debugEnabled) {
log.debug("fin fusion : " + templateDocument.nom)
}
docSsTemplatesEliot.each {
TemplateDocumentSousTemplateEliot templateDocumentSousTemplateEliot ->
- TemplateJasper currentTemplateJasper =
- templateDocumentSousTemplateEliot.templateEliot?.templateJasper
+ parameters = chargeSousModele(
+ parameters,
+ templateDocument,
+ templateDocumentSousTemplateEliot,
+ options)
+
+ }
+ return parameters
+ }
- while (currentTemplateJasper) {
+ private ListeParametresImpression chargeSousModele(ListeParametresImpression parameters,
+ TemplateDocument templateDocument,
+ TemplateDocumentSousTemplateEliot templateDocumentSousTemplateEliot,
+ Object options) {
- if (log.debugEnabled) {
- log.debug("Chargement sous-modèle " + currentTemplateJasper.param)
- }
+ TemplateJasper currentTemplateJasper =
+ templateDocumentSousTemplateEliot.templateEliot?.templateJasper
- JasperReport jasperReport = impressionTemplateFactoryService.binaryTemplateJasperFactory(
- templateDocument,
- currentTemplateJasper,
- options
- )
+ String premierParametre = templateDocumentSousTemplateEliot.param
- parameters.put(
- currentTemplateJasper.param,
- jasperReport
- )
+ if (log.debugEnabled) {
+ log.debug("Chargement sous-modèle racine " + premierParametre)
+ }
+
+ JasperReport jasperReportSousModele = impressionTemplateFactoryService.binaryTemplateJasperFactory(
+ templateDocument,
+ currentTemplateJasper,
+ options
+ )
+
+ parameters.put(
+ premierParametre,
+ jasperReportSousModele
+ )
+
+ currentTemplateJasper = currentTemplateJasper.sousTemplate
- currentTemplateJasper = currentTemplateJasper.sousTemplate
+ while (currentTemplateJasper) {
+ if (log.debugEnabled) {
+ log.debug("Chargement sous-modèle du sous-modèle" + templateDocumentSousTemplateEliot.param)
}
+ JasperReport jasperReport = impressionTemplateFactoryService.binaryTemplateJasperFactory(
+ templateDocument,
+ currentTemplateJasper,
+ options
+ )
+
+ parameters.put(
+ currentTemplateJasper.param,
+ jasperReport
+ )
+
+ currentTemplateJasper = currentTemplateJasper.sousTemplate
+
}
- return parameters
+ parameters
}
/**
SYNTHESE_1('Synthèse 1', 'Synthèse 1', 'synthese/'),
TABLEAU_NOTES_1('Tableau de notes 1', 'Tableau de notes 1', 'tableau de notes/'),
TABLEAU_NOTES_ANNEE('Tableau de notes annuel', 'Tableau de notes 1', 'tableau de notes/'),
- APPRECIATIONS('Tableau des appréciations', 'appréciations', 'appreciations/')
+ APPRECIATIONS('Tableau des appréciations', 'appréciations', 'appreciations/'),
+ REGISTRE_APPELS('Registre des appels','','registre appels/'),
+ SUIVI_ENVOIS_FAMILLES('Suivi des envois aux familles','','suivi envois familles/'),
+ REGISTRE_PUNITIONS('Registre des punitions','','registre punitions/'),
+ REGISTRE_SANCTIONS('Registre des sanctions','','registre sanctions/'),
+ TABLEAU_DE_BORD('Tableau de bord', '', 'tableau de bord/'),
+ STATS_MENSUELLES_VOLUME('Statistiques mensuelles', '', 'statistiques mensuelles en volume/'),
+ STATS_MENSUELLES_POURCENT('Statistiques mensuelles', '', 'statistiques mensuelles en pourcent/')
private String nom
private String description
'tableau.jrxml',
'Aucun',
'Aucun'
+ ),
+ ARCHIVAGE(
+ 'A4.jrxml',
+ 'Archivage',
+ 'Archivage'
+ ),
+ REGISTRE_APPELS(
+ 'tableau.jrxml',
+ 'Registre des appels',
+ 'Registre des appels'
+ ),
+ SUIVI_ENVOIS_FAMILLES(
+ 'tableau.jrxml',
+ 'Suivi des envois aux familles',
+ 'Suivi des envois aux familles'
+ ),
+ REGISTRE_PUNITIONS(
+ 'tableau.jrxml',
+ 'Registre des punitions',
+ 'Registre des punitions'
+ ),
+ REGISTRE_SANCTIONS(
+ 'tableau.jrxml',
+ 'Registre des sanctions',
+ 'Registre des sanctions'
+ ),
+ TABLEAU_DE_BORD(
+ 'tableau.jrxml',
+ 'Tableau de bord',
+ 'Tableau de bord'
+ ),
+ TABLEAU_DE_BORD_TOTAL(
+ 'tableau.jrxml',
+ 'Tableau de bord total',
+ 'Tableau de bord total'
+ ),
+ STATS_MENSUELLES_VOLUME(
+ 'tableau.jrxml',
+ 'Statistiques mensuelles en volume',
+ 'Statistiques mensuelles en volume'
+ ),
+ STATS_MENSUELLES_VOLUME_TOTAL(
+ 'tableau.jrxml',
+ 'Statistiques mensuelles total en volume',
+ 'Statistiques mensuelles total en volume'
+ ),
+ STATS_MENSUELLES_POURCENT(
+ 'tableau.jrxml',
+ 'Statistiques mensuelles en pourcent',
+ 'Statistiques mensuelles en pourcent'
+ ),
+ STATS_MENSUELLES_POURCENT_TOTAL(
+ 'tableau.jrxml',
+ 'Statistiques mensuelles total en pourcent',
+ 'Statistiques mensuelles total en pourcent'
)
private String nomFichier
ELEVE_RETARDS,
SYNTHESE_CLASSE_NOTES,
ELEVE_BREVET,
- APPRECIATIONS
+ APPRECIATIONS,
+ ARCHIVAGE
private TemplateTypeDonneeEnum() {}
}
\ No newline at end of file
SYNTHESE_NOTES('SYNTHESE NOTES', 'Synthèse de notes', ModuleEliot.ELIOT_NOTES),
BREVET('BREVET', 'Brevet', ModuleEliot.BREVET),
SMS('SMS', 'Sms', ModuleEliot.SMS),
- APPRECIATIONS('APPRECIATIONS', 'Appreciations', ModuleEliot.ELIOT_NOTES)
+ APPRECIATIONS('APPRECIATIONS', 'Appreciations', ModuleEliot.ELIOT_NOTES),
+ ARCHIVAGE('ARCHIVAGE','Archivage')
private String nom
private String description
*/
public enum TypeMedia {
COURRIER(1, 'eliot.impression.media.courrier','edition','impressionEditionCourrier'),
- MAIL(2, 'eliot.impression.media.mail','',''),
+ MAIL(2, 'eliot.impression.media.email','',''),
SMS(3, 'eliot.impression.media.sms','editionSms','impressionEditionSms')
private int code
/**
* Lecture du modele jasper pré-compilé en base
*/
- private JasperReport chargeModeleJasperParDefaut(TemplateJasper currentTemplateJasper) {
+ public JasperReport chargeModeleJasperParDefaut(TemplateJasper currentTemplateJasper) {
ByteArrayInputStream modeleBinaire = new ByteArrayInputStream(
currentTemplateJasper.jasper
)
package org.lilie.services.eliot.parametrages.calendrier
import org.lilie.services.eliot.absences.PreferencesEtablissementAbsences
+import org.lilie.services.eliot.constantes.ConstDate
import org.lilie.services.eliot.scolarite.Calendrier
import org.lilie.services.eliot.scolarite.anneescolaire.AnneeScolaireService
import org.lilie.services.eliot.absences.PlageHoraire
return moisInfos
}
+ /**
+ * [debutDate:..., debutString:..., finDate:..., finString:...]
+ */
+ Map mapDebutFinAnnee(Etablissement etablissement) {
+ Calendrier calendrier = getCalendrierForEtablissement(etablissement)
+ [
+ debutDate: calendrier.premierJour,
+ debutString: calendrier.premierJour.format(ConstDate.DATE_JJMMAAA),
+ finDate: calendrier.dernierJour,
+ finString: calendrier.dernierJour.format(ConstDate.DATE_JJMMAAA)
+ ]
+ }
}
\ No newline at end of file
public static final String DATE_JJMMAAA= 'dd/MM/yyyy'
public static final String HEURE_HHMM= 'HH:mm'
public static final String DATE_DDMM = 'dd/MM'
+ public static final String DATE_HEURE = 'dd/MM/yyyy HH:mm'
}
--- /dev/null
+<!--
+ ~ Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ ~ This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ ~
+ ~ Lilie is free software. You can redistribute it and/or modify since
+ ~ you respect the terms of either (at least one of the both license) :
+ ~ - under the terms of the GNU Affero General Public License as
+ ~ published by the Free Software Foundation, either version 3 of the
+ ~ License, or (at your option) any later version.
+ ~ - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ ~ License, or any later version
+ ~
+ ~ There are special exceptions to the terms and conditions of the
+ ~ licenses as they are applied to this software. View the full text of
+ ~ the exception in file LICENSE.txt in the directory of this software
+ ~ distribution.
+ ~
+ ~ Lilie is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ ~ Licenses for more details.
+ ~
+ ~ You should have received a copy of the GNU General Public License
+ ~ and the CeCILL-C along with Lilie. If not, see :
+ ~ <http://www.gnu.org/licenses/> and
+ ~ <http://www.cecill.info/licences.fr.html>.
+ -->
+
+<databaseChangeLog
+ xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
+
+ <changeSet id="1" author="othe">
+
+ <comment>
+ Ajout du type de donnée archivage
+ </comment>
+
+
+ <sql>
+ INSERT INTO impression.template_type_donnees (id, libelle, code) VALUES
+ (nextval('impression.template_type_donnees_id_seq'), 'Archivage', 'ARCHIVAGE');
+ </sql>
+
+ </changeSet>
+
+
+ <changeSet id="2" author="othe">
+ <comment>
+ Suppression de la notion de classe de traitement des modèles jasper
+ </comment>
+
+ <sql>
+ ALTER TABLE impression.template_jasper DROP template_dynamique_factory_classe
+ </sql>
+
+ </changeSet>
+
+
+</databaseChangeLog>
\ No newline at end of file
--- /dev/null
+<!--
+ ~ Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ ~ This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ ~
+ ~ Lilie is free software. You can redistribute it and/or modify since
+ ~ you respect the terms of either (at least one of the both license) :
+ ~ - under the terms of the GNU Affero General Public License as
+ ~ published by the Free Software Foundation, either version 3 of the
+ ~ License, or (at your option) any later version.
+ ~ - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ ~ License, or any later version
+ ~
+ ~ There are special exceptions to the terms and conditions of the
+ ~ licenses as they are applied to this software. View the full text of
+ ~ the exception in file LICENSE.txt in the directory of this software
+ ~ distribution.
+ ~
+ ~ Lilie is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ ~ Licenses for more details.
+ ~
+ ~ You should have received a copy of the GNU General Public License
+ ~ and the CeCILL-C along with Lilie. If not, see :
+ ~ <http://www.gnu.org/licenses/> and
+ ~ <http://www.cecill.info/licences.fr.html>.
+ -->
+
+<databaseChangeLog
+ xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
+
+ <changeSet id="1" author="othe">
+
+ <comment>
+ Ajout du type de fonctionnalité archivage
+ </comment>
+
+ <sql>
+ INSERT INTO impression.template_type_fonctionnalite (id, libelle, parent_id, code)
+ VALUES (nextval('impression.template_type_fonctionnalite_id_seq'),
+ 'Archivage', NULL,
+ 'ARCHIVAGE');
+ </sql>
+
+ </changeSet>
+
+ <changeSet id="2" author="othe">
+ <comment>
+ Suppression de la notion de version de modèle d'impression
+ </comment>
+
+ <sql>
+ ALTER TABLE impression.template_eliot DROP numero_version
+ </sql>
+
+ </changeSet>
+
+ <changeSet id="3" author="othe">
+ <comment>
+ Suppression de la notion de version de modèle d'impression
+ </comment>
+
+ <sql>
+ ALTER TABLE impression.template_document DROP numero_version
+ </sql>
+
+ </changeSet>
+
+
+</databaseChangeLog>
\ No newline at end of file
<include file="changelogs/securite/2014-02-17-0034355.xml"/>
<include file="changelogs/scolarite/2014-01-10-0027535.xml"/>
<include file="changelogs/securite/2014-02-25-0034704.xml"/>
- <include file="changelogs/scolarite/2014-03-11-0033848.xml"/>
+ <include file="changelogs/scolarite/2014-03-10-0035063.xml"/>
+ <include file="changelogs/scolarite/2014-03-10-0035063-2.xml"/>
+ <include file="changelogs/scolarite/2014-03-11-0033848.xml"/>
<include file="changelogs/scolarite/2014-03-12-0028846.xml"/>
</databaseChangeLog>
EtapeService etapeService
def index = {
+
if (!getSecuriteSession().hasFonctionIn([FonctionEnum.CORRESPONDANT_DEPLOIEMENT])) {
throw AutorisationException.consultationContenuException()
}
}
+
+ def testArchive = {
+ if (!securiteSession.hasFonctionIn([FonctionEnum.CORRESPONDANT_DEPLOIEMENT])) {
+ throw AutorisationException.consultationContenuException()
+ }
+ redirect(controller: "maintenanceRapports", action: "index")
+ }
+
def maintenanceTechnique = {
if (!securiteSession.hasFonctionIn([FonctionEnum.CORRESPONDANT_DEPLOIEMENT])) {
throw AutorisationException.consultationContenuException()
--- /dev/null
+/*
+ * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ *
+ * Lilie is free software. You can redistribute it and/or modify since
+ * you respect the terms of either (at least one of the both license) :
+ * - under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ * License, or any later version
+ *
+ * There are special exceptions to the terms and conditions of the
+ * licenses as they are applied to this software. View the full text of
+ * the exception in file LICENSE.txt in the directory of this software
+ * distribution.
+ *
+ * Lilie is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * Licenses for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the CeCILL-C along with Lilie. If not, see :
+ * <http://www.gnu.org/licenses/> and
+ * <http://www.cecill.info/licences.fr.html>.
+ */
+
+
+
+package org.lilie.services.eliot.absences.maintenance
+
+import org.lilie.services.eliot.absences.statistiques.mensuelle.ModeCalcul
+import org.lilie.services.eliot.securite.AutorisationException
+import org.lilie.services.eliot.impression.constantes.TemplateDocumentEnum
+import org.lilie.services.eliot.impression.ImpressionMoteurService
+import org.lilie.services.eliot.absences.AbstractAbsencesController
+import org.lilie.services.eliot.absences.archivage.ArchivageRequetageService
+import grails.converters.JSON
+import org.lilie.services.eliot.scolarite.StructureEnseignement
+import org.lilie.services.eliot.scolarite.Etablissement
+import org.lilie.services.eliot.absences.PreferencesEtablissementAbsences
+import org.lilie.services.eliot.parametrages.calendrier.CalendrierService
+import org.lilie.services.eliot.scolarite.structureenseignement.LocalStructureEnseignementService
+
+class MaintenanceRapportsController extends AbstractAbsencesController {
+
+ ImpressionMoteurService impressionMoteurService
+ ArchivageRequetageService archivageRequetageService
+ CalendrierService calendrierService
+ LocalStructureEnseignementService localStructureEnseignementService
+
+ def index = {
+
+ if (!getSecuriteSession().hasFonctionIn([org.lilie.services.eliot.annuaire.FonctionEnum.CORRESPONDANT_DEPLOIEMENT])) {
+ throw AutorisationException.consultationContenuException()
+ }
+ Map modele = [
+ classes: localStructureEnseignementService.findAllClasseByEtablissement(etablissementCourant(), 'code', true)
+ ]
+ render(view: "/maintenance/testArchive", model: modele)
+
+ }
+
+ def registreAppels = {
+
+ if (!securiteSession.hasFonctionIn([org.lilie.services.eliot.annuaire.FonctionEnum.CORRESPONDANT_DEPLOIEMENT])) {
+ throw AutorisationException.consultationContenuException()
+ }
+
+ Etablissement etablissement = etablissementCourant()
+ Map mapDebutFinAnnee = calendrierService.mapDebutFinAnnee(etablissement)
+
+ String codeClasse = params.classeCode
+ StructureEnseignement structureEnseignement = StructureEnseignement.findByCodeAndEtablissement(
+ codeClasse,
+ etablissement
+ )
+
+ JSON json = archivageRequetageService.registreAppel(
+ getSecuriteSession(),
+ etablissement,
+ structureEnseignement.id,
+ mapDebutFinAnnee.debutDate,
+ mapDebutFinAnnee.finDate)
+
+ imprimeDocumentPDF(
+ json.toString(),
+ ["lignes"],
+ TemplateDocumentEnum.REGISTRE_APPELS,
+ response,
+ structureEnseignement.nomAffichage,
+ mapDebutFinAnnee.debutString,
+ mapDebutFinAnnee.finString
+ )
+
+ }
+
+ def suiviEnvoiFamille = {
+
+ if (!securiteSession.hasFonctionIn([org.lilie.services.eliot.annuaire.FonctionEnum.CORRESPONDANT_DEPLOIEMENT])) {
+ throw AutorisationException.consultationContenuException()
+ }
+
+ Etablissement etablissement = etablissementCourant()
+ Map mapDebutFinAnnee = calendrierService.mapDebutFinAnnee(etablissement)
+
+ String codeClasse = params.classeCode
+
+ StructureEnseignement structureEnseignement = StructureEnseignement.findByCodeAndEtablissement(
+ codeClasse,
+ etablissementCourant()
+ )
+
+ JSON json = archivageRequetageService.suiviEnvoisFamilles(
+ etablissement,
+ structureEnseignement.id,
+ mapDebutFinAnnee.debutDate,
+ mapDebutFinAnnee.finDate)
+
+ imprimeDocumentPDF(
+ json.toString(),
+ ["data"],
+ TemplateDocumentEnum.SUIVI_ENVOIS_FAMILLES,
+ response,
+ structureEnseignement.nomAffichage,
+ mapDebutFinAnnee.debutString,
+ mapDebutFinAnnee.finString
+ )
+
+ }
+
+ def tableauDeBord = {
+
+ Etablissement etablissement = etablissementCourant()
+ Map mapDebutFinAnnee = calendrierService.mapDebutFinAnnee(etablissement)
+
+ PreferencesEtablissementAbsences pref = PreferencesEtablissementAbsences.findByEtablissement(etablissement)
+
+ JSON json = archivageRequetageService.tableauDeBord(
+ pref,
+ etablissement,
+ mapDebutFinAnnee.debutDate,
+ mapDebutFinAnnee.finDate
+ )
+
+ imprimeDocumentPDF(
+ json.toString(),
+ ["dataGrille.lignes","dataTotaux.lignes"],
+ TemplateDocumentEnum.TABLEAU_DE_BORD,
+ response,
+ "",
+ mapDebutFinAnnee.debutString,
+ mapDebutFinAnnee.finString
+ )
+
+ }
+
+ def registrePunitions = {
+
+ if (!securiteSession.hasFonctionIn([org.lilie.services.eliot.annuaire.FonctionEnum.CORRESPONDANT_DEPLOIEMENT])) {
+ throw AutorisationException.consultationContenuException()
+ }
+
+ Etablissement etablissement = etablissementCourant()
+ Map mapDebutFinAnnee = calendrierService.mapDebutFinAnnee(etablissement)
+
+ JSON json = archivageRequetageService.registrePunition(
+ getSecuriteSession(),
+ etablissement,
+ mapDebutFinAnnee.debutDate,
+ mapDebutFinAnnee.finDate)
+
+ imprimeDocumentPDF(
+ json.toString(),
+ ["data"],
+ TemplateDocumentEnum.REGISTRE_PUNITIONS,
+ response,
+ '',
+ mapDebutFinAnnee.debutString,
+ mapDebutFinAnnee.finString
+ )
+ }
+
+ def registreSanctions = {
+
+ if (!securiteSession.hasFonctionIn([org.lilie.services.eliot.annuaire.FonctionEnum.CORRESPONDANT_DEPLOIEMENT])) {
+ throw AutorisationException.consultationContenuException()
+ }
+
+ Etablissement etablissement = etablissementCourant()
+ Map mapDebutFinAnnee = calendrierService.mapDebutFinAnnee(etablissement)
+
+ JSON json = archivageRequetageService.registreSanction(
+ getSecuriteSession(),
+ etablissement,
+ mapDebutFinAnnee.debutDate,
+ mapDebutFinAnnee.finDate)
+
+ imprimeDocumentPDF(
+ json.toString(),
+ ["data"],
+ TemplateDocumentEnum.REGISTRE_SANCTIONS,
+ response,
+ '',
+ mapDebutFinAnnee.debutString,
+ mapDebutFinAnnee.finString
+ )
+ }
+
+ def statsMensuelles = {
+
+ if (!securiteSession.hasFonctionIn([org.lilie.services.eliot.annuaire.FonctionEnum.CORRESPONDANT_DEPLOIEMENT])) {
+ throw AutorisationException.consultationContenuException()
+ }
+
+ Etablissement etablissement = etablissementCourant()
+ Map mapDebutFinAnnee = calendrierService.mapDebutFinAnnee(etablissement)
+
+ String codeClasse = params.classeCode
+ StructureEnseignement structureEnseignement = StructureEnseignement.findByCodeAndEtablissement(codeClasse, etablissement)
+ ModeCalcul modeCalcul = ModeCalcul.parseByCode(Integer.parseInt(params.modeCalculCode))
+
+ JSON json = archivageRequetageService.statsMensuelles(
+ getSecuriteSession(),
+ etablissement,
+ structureEnseignement.id,
+ mapDebutFinAnnee.debutDate,
+ mapDebutFinAnnee.finDate,
+ modeCalcul)
+
+ imprimeDocumentPDF(
+ json.toString(),
+ ["data","totaux"],
+ modeCalcul == ModeCalcul.VOLUME ?
+ TemplateDocumentEnum.STATS_MENSUELLES_VOLUME :
+ TemplateDocumentEnum.STATS_MENSUELLES_POURCENT,
+ response,
+ structureEnseignement.code,
+ mapDebutFinAnnee.debutString,
+ mapDebutFinAnnee.finString
+ )
+ }
+
+ private void imprimeDocumentPDF(String donnees,
+ List<String> requete,
+ TemplateDocumentEnum templateDocumentEnum,
+ def response,
+ String classe,
+ String dateDebut,
+ String dateFin
+ ) {
+
+ InputStream is = new ByteArrayInputStream(donnees.bytes)
+ is.reset()
+
+ ByteArrayOutputStream documentPDF = impressionMoteurService.creeArchiveFromJSON(
+ etablissementCourant(),
+ templateDocumentEnum.toString(),
+ classe,
+ dateDebut,
+ dateFin,
+ is,
+ requete
+ )
+
+ sendPdfFile(
+ response,
+ documentPDF,
+ templateDocumentEnum.nom
+ )
+
+ }
+
+}
date: it.dateEnvoi,
nom: it.personne?.nomAffichage(),
classe: it.classe?.code,
- type: getType(it),
+ type: message(code: TypeMedia.typeMediaForCode(it.media).libelle),
modele: it?.templateDocument.nom,
responsable: it?.responsable?.nomAffichage(),
portable: it?.responsable?.getTelephonePortable(),
return result
}
- private String getType(PublipostageSuivi it) {
- String type
- switch (it.media) {
- case 1:
- type = message(code: 'eliot.impression.media.courrier')
- break;
-
- case 2:
- type = message(code: 'eliot.impression.media.sms')
- break;
-
- case 3:
- type = message(code: 'eliot.impression.media.email')
- break;
- }
- return type
- }
-
/**
* recherche la liste des structures d'enseignement par rapport à la liste des
* id passée en paramètre
String classe
String type
String statut
+
+ // rajoutés pour archivage
+ String description
+ String typeIncident
}
String statut
String type
Boolean absenceLiee
+
+ // spécial archivage
+ String debutAbsence
+ String finAbsence
+ String description
+ String typeIncident
}
# Maintenance
maintenance.accueil.maintenanceTechnique=Maintenance technique
+maintenance.accueil.testarchive=Test modèles pour archivage
+
maintenance.bascule.rapport.titre=Rapport de la bascule d''année de {0} de {1} vers {2}
maintenance.bascule.rapport.infoLancement=Traitement lancé par {0} le {1} à {2}
maintenance.bascule.rapport.titreTableauRecap=Traitements effectués
--- /dev/null
+/*
+ * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ *
+ * Lilie is free software. You can redistribute it and/or modify since
+ * you respect the terms of either (at least one of the both license) :
+ * - under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ * License, or any later version
+ *
+ * There are special exceptions to the terms and conditions of the
+ * licenses as they are applied to this software. View the full text of
+ * the exception in file LICENSE.txt in the directory of this software
+ * distribution.
+ *
+ * Lilie is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * Licenses for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the CeCILL-C along with Lilie. If not, see :
+ * <http://www.gnu.org/licenses/> and
+ * <http://www.cecill.info/licences.fr.html>.
+ */
+
+package org.lilie.services.eliot.absences.archivage
+
+import grails.converters.JSON
+import org.lilie.services.eliot.absences.saisie.discipline.ConsultationPunitionSanctionNomColonnes
+import org.lilie.services.eliot.absences.saisie.discipline.punition.AbsencesPunitionService
+import org.lilie.services.eliot.absences.saisie.discipline.punition.PunitionConsultationInfo
+import org.lilie.services.eliot.absences.saisie.discipline.sanction.AbsencesSanctionService
+import org.lilie.services.eliot.absences.saisie.discipline.sanction.SanctionConsultationInfo
+import org.lilie.services.eliot.absences.statistiques.StatsMarshallerService
+import org.lilie.services.eliot.absences.statistiques.Type
+import org.lilie.services.eliot.absences.statistiques.mensuelle.ModeCalcul
+import org.lilie.services.eliot.impression.constantes.TypeMedia
+import java.text.SimpleDateFormat
+import org.lilie.services.eliot.constantes.ConstDate
+import org.lilie.services.eliot.scolarite.Etablissement
+import org.lilie.services.eliot.annuaire.SecuriteSession
+import org.lilie.services.eliot.absences.Motif
+import org.lilie.services.eliot.parametrages.motifs.MotifService
+import org.lilie.services.eliot.temps.DateUtil
+import org.lilie.services.eliot.absences.consultation.ConsultationParseCriteriaService
+import org.lilie.services.eliot.absences.consultation.ConsultationService
+import org.lilie.services.eliot.absences.consultation.ResultatConsultation
+import org.lilie.services.eliot.absences.consultation.BilanCriteresRecherche
+import org.lilie.services.eliot.absences.consultation.ConstantesNomColBilanAbsences
+import org.lilie.services.eliot.absences.consultation.LigneConsultation
+import org.codehaus.groovy.grails.commons.ApplicationHolder
+import org.springframework.context.MessageSource
+import org.springframework.beans.factory.BeanCreationException
+import org.lilie.services.eliot.scolarite.StructureEnseignement
+import org.lilie.services.eliot.impression.ImpressionSuiviEleveService
+import org.lilie.services.eliot.impression.PublipostageSuivi
+import org.lilie.services.eliot.sms.SmsStatut
+import org.lilie.services.eliot.impression.TemplateDocument
+import org.lilie.services.eliot.absences.statistiques.tableaudebord.TableauDeBordParams
+import org.lilie.services.eliot.absences.statistiques.tableaudebord.TableauDeBordService
+import org.lilie.services.eliot.absences.PreferencesEtablissementAbsences
+import org.lilie.services.eliot.absences.statistiques.tableaudebord.TypeSeuilEnum
+import org.lilie.services.eliot.scolarite.structureenseignement.LocalStructureEnseignementService
+import org.lilie.services.eliot.absences.statistiques.mensuelle.StatsMensuelles
+import org.lilie.services.eliot.absences.statistiques.mensuelle.AbsencesStatsMensuellesService
+import org.lilie.services.eliot.absences.statistiques.mensuelle.StatsMensuellesParams
+import org.lilie.services.eliot.applications.absences.PriseEnCompteMotif
+
+class ArchivageRequetageService {
+
+ def grailsApplication
+
+ ConsultationParseCriteriaService consultationParseCriteriaService
+ ConsultationService consultationService
+ MotifService motifService
+ ImpressionSuiviEleveService impressionSuiviEleveService
+ TableauDeBordService tableauDeBordService
+ AbsencesPunitionService absencesPunitionService
+ AbsencesSanctionService absencesSanctionService
+ LocalStructureEnseignementService localStructureEnseignementService
+ AbsencesStatsMensuellesService absencesStatsMensuellesService
+ StatsMarshallerService statsMarshallerService
+
+ public JSON registreAppel(SecuriteSession securiteSession,
+ Etablissement etablissement,
+ Long structureEnseignementId,
+ Date deb,
+ Date fin) {
+
+ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss")
+
+ String dateDebut = df.format(deb)
+ String dateFin = df.format(fin)
+
+ Map params = [:]
+ params.dateDebut = dateDebut
+ params.dateFin = dateFin
+ params.division = structureEnseignementId
+ List<Motif> allMotif = Motif.findAll()
+ String motifs = ""
+ allMotif.each {
+ motifs += it.id + ","
+ }
+ motifs = motifs.substring(0, motifs.length() - 1)
+ params.motif = motifs
+ params.groupeMotifs = -1
+ params.elevesId = -1
+ params.regimeIds = -1
+ String sortInfo = '{"field":"nomPrenom"}'
+ params.sortInfo = sortInfo
+ params.type = -1
+
+ ResultatConsultation listeBilan = traduitResultatBilan(
+ getAbsencesSelonCriteres(
+ securiteSession,
+ params,
+ etablissement,
+ params.start,
+ params.limit,
+ params.sort,
+ params.dir,
+ true
+ )
+ )
+
+ listeBilan.toMap() as JSON
+ }
+
+ public JSON suiviEnvoisFamilles(Etablissement etablissement,
+ Long structureEnseignementId,
+ Date dateDebut,
+ Date dateFin) {
+ int start = 0
+ Map sortInfo = [:]
+ List classes = [StructureEnseignement.get(structureEnseignementId)]
+ List<TemplateDocument> modeles = []
+ TypeMedia typeMedia = null
+ List<SmsStatut> statuts = []
+ dateFin.setTime(dateFin.getTime() + 24 * 3600 * 1000)
+
+ Map listeEnvoi = impressionSuiviEleveService.listeEnvoi(
+ etablissement,
+ dateDebut,
+ dateFin,
+ classes,
+ modeles,
+ start,
+ sortInfo,
+ typeMedia,
+ statuts
+ )
+
+ List<PublipostageSuivi> suivis = listeEnvoi.liste
+
+ [data: suivis.collect {
+ [
+ date: it.dateEnvoi.format(ConstDate.DATE_HEURE),
+ nom: it.personne?.nomAffichage(),
+ classe: it.classe?.code,
+ type: message(code: TypeMedia.typeMediaForCode(it.media).libelle),
+ modele: it?.templateDocument.nom
+ ]
+ }] as JSON
+ }
+
+ public JSON registrePunition(SecuriteSession securiteSession,
+ Etablissement etablissement,
+ Date dateDebut,
+ Date dateFin) {
+
+ Map criteres = [dateDebut: dateDebut, dateFin: dateFin]
+
+ Map resultats = absencesPunitionService.findPunitions(
+ securiteSession,
+ securiteSession.personne,
+ etablissement,
+ ConsultationPunitionSanctionNomColonnes.NOM_AFFICHAGE,
+ true,
+ 0,
+ null,
+ criteres,
+ true
+ )
+
+ [
+ data: parsePunitionsInfoForConsultation(resultats.punitionsInfo)
+ ] as JSON
+ }
+
+ public JSON registreSanction(SecuriteSession securiteSession,
+ Etablissement etablissement,
+ Date dateDebut,
+ Date dateFin) {
+
+ Map criteres = [dateDebut: dateDebut, dateFin: dateFin]
+
+ Map resultats = absencesSanctionService.findAllSanctionParPersonne(
+ securiteSession,
+ etablissement,
+ securiteSession.personne,
+ ConsultationPunitionSanctionNomColonnes.NOM_AFFICHAGE,
+ true,
+ 0,
+ null,
+ criteres,
+ true
+ )
+
+
+ [
+ data: parseSanctionsInfoForConsultation(resultats.sanctionsInfo)
+ ] as JSON
+ }
+
+ public JSON statsMensuelles(SecuriteSession securiteSession,
+ Etablissement etablissement,
+ Long structureEnseignementId,
+ Date dateDebut,
+ Date dateFin,
+ ModeCalcul modeCalcul) {
+
+ PreferencesEtablissementAbsences pref = PreferencesEtablissementAbsences.findByEtablissement(etablissement)
+
+ StatsMensuellesParams statsMensuellesParams = getStatsMensuellesParams(
+ etablissement,
+ pref,
+ structureEnseignementId,
+ dateDebut,
+ dateFin,
+ modeCalcul
+ )
+
+ StatsMensuelles statsMensuelles = absencesStatsMensuellesService.
+ calculeStatsMensuelles(
+ securiteSession,
+ statsMensuellesParams,
+ pref
+ )
+
+ [
+ data: statsMarshallerService.marshallStatsInfo(statsMensuelles),
+ totaux: statsMarshallerService.marshallTotaux(
+ statsMensuelles,
+ statsMensuellesParams
+ )
+ ] as JSON
+ }
+
+ @SuppressWarnings('CatchException')
+ private ResultatConsultation getAbsencesSelonCriteres(SecuriteSession securiteSession,
+ Map params,
+ Etablissement etablissement,
+ String start,
+ String limit,
+ String sortField,
+ String sens,
+ Boolean compteEleves = false
+ ) {
+
+ BilanCriteresRecherche criteria = consultationParseCriteriaService.parseBilanCriteria(params)
+ criteria.etablissementId = etablissement.id
+ criteria.compteEleves = compteEleves
+
+ criteria.colonneClassement = sortField ?:
+ ConstantesNomColBilanAbsences.NOM_COL_NOM_PRENOM
+ criteria.classementAscendant = (sens != 'DESC')
+ criteria.start = start ? Integer.parseInt(start) : 0
+ criteria.limit = limit ? Integer.parseInt(limit) :
+ grailsApplication.config.eliot.absences.bilan.nombreLignesParPage
+ ResultatConsultation listeBilan = new ResultatConsultation()
+ try {
+ listeBilan = traduitProfilAppelant(consultationService.listeDesAbsencesEtRetards(
+ criteria,
+ securiteSession,
+ etablissement
+ ))
+ } catch (Exception e) {
+ log.error("Une erreur inconnue est survenue lors de la récupération des absences/retards.", e)
+ listeBilan.success = false
+ listeBilan.message = message(code: "absences.bilan.erreur")
+ }
+
+ return listeBilan
+ }
+
+ private ResultatConsultation traduitProfilAppelant(ResultatConsultation resultatConsultation) {
+ resultatConsultation.lignes.each {LigneConsultation ligne ->
+ String profils = ligne.profilAppelant.split(ConsultationService.SEPARATEUR_PROFILS)
+ .toList()
+ .collect {message(code: it)}
+ .join(ConsultationService.SEPARATEUR_PROFILS)
+ ligne.setProfilAppelant(profils)
+ }
+ return resultatConsultation
+ }
+
+ /**
+ * Traduit le résultat du bilan
+ * @param la map contenant le bilan
+ * @return la même map traduite
+ * @author jbui
+ */
+ private ResultatConsultation traduitResultatBilan(ResultatConsultation liste) {
+ SimpleDateFormat simpleDateFormatDate = new SimpleDateFormat(ConstDate.DATE_JJMMAAA,
+ Locale.FRANCE)
+ SimpleDateFormat simpleDateFormatHeure = new SimpleDateFormat(ConstDate.HEURE_HHMM,
+ Locale.FRANCE)
+ liste.lignes.each {
+ LigneConsultation it ->
+ it.absenceTypeMessage = message(code: it.absenceTypeMessageCode)
+ it.dateFormatee = simpleDateFormatDate.format(it.date)
+ if (it.heure) {
+ it.heureFormatee = message(code: it.heure.codeMessage,
+ args: [
+ simpleDateFormatHeure.format(it.heure.heure1),
+ simpleDateFormatHeure.format(it.heure.heure2)
+ ])
+ }
+ }
+ return liste
+ }
+
+ public JSON tableauDeBord(PreferencesEtablissementAbsences pref, Etablissement etablissement, Date debut, Date fin) {
+
+ Map params = [:]
+
+ params.dateDebut = debut
+ params.dateFin = fin
+ params.classesId = -1
+ params.valeurSeuil = 0
+ params.typeSeuil = 1
+ params.totalInfo = true
+ params.afficherLesAbsencesEnHeures = false
+
+ TableauDeBordParams criteres = parseParams(params, etablissement)
+
+ criteres.motifs = motifService.findAllMotifForPriseEnCompteMotif(pref, PriseEnCompteMotif.STATS)
+
+ criteres.filtreMotifsStats = true
+
+ criteres.sortField = "divisionCode"
+
+ Map result = [:]
+
+ try {
+ result = tableauDeBordService.calculeTableauDeBord(
+ criteres,
+ pref
+ ).getInfos(criteres.totalInfo)
+
+ result.success = true
+ result.message = ''
+ } catch (Exception e) {
+ log.error("Une erreur inconnue est survenue lors de la création du TableauDeBord.", e)
+ result.success = false
+ result.message = message(code: 'absences.message.erreurInconnue')
+ }
+
+ return result as JSON
+ }
+
+ private TableauDeBordParams parseParams(Map paramDatas, Etablissement etablissement) {
+
+ Calendar cal = Calendar.getInstance()
+ cal.setTime(paramDatas.dateFin)
+ DateUtil.setFinJour(cal)
+
+ TableauDeBordParams result = new TableauDeBordParams(
+ dateDebut: paramDatas.dateDebut,
+ dateFin: cal.getTime(),
+ sortField: "nomPrenom",
+ sortAsc: true,
+ start: 0,
+ totalInfo: paramDatas.totalInfo,
+ valeurSeuil: paramDatas.valeurSeuil,
+ typeSeuil: TypeSeuilEnum.parseByCode(paramDatas.typeSeuil),
+ afficherLesAbsencesEnHeures: paramDatas?.afficherLesAbsencesEnHeures
+ )
+
+ result.classes = localStructureEnseignementService.findAllClasseByEtablissement(etablissement)
+ return result
+ }
+
+ private String message(Map map) {
+ String code = map.code
+ def ctx = ApplicationHolder.getApplication().getMainContext()
+ MessageSource messageSource = (MessageSource) ctx.getBean("messageSource")
+ if (messageSource == null) {
+ throw new BeanCreationException("Pas de bean de gestion i18n")
+ }
+ Object[] args = null
+ if (map.args) {
+ args = map.args
+ }
+ return messageSource.getMessage(code, args, Locale.FRANCE)
+ }
+
+ /**
+ * Permet de construire les dto le registre des punitions
+ */
+ private List<PunitionConsultationInfo> parsePunitionsInfoForConsultation(
+ List punitionsInfo
+ ) {
+
+ List<PunitionConsultationInfo> punitionsConsultationInfo = []
+ String libelleEffectue = message(code: 'absences.data.effectuee')
+ String libelleNonEffectue = message(code: 'absences.data.nonEffectuee')
+ SimpleDateFormat sdf = new SimpleDateFormat(ConstDate.DATE_JJMMAAA, Locale.FRANCE)
+ punitionsInfo.each { def punitionInfo ->
+ punitionsConsultationInfo.add(
+ new PunitionConsultationInfo(
+ date: sdf.format(punitionInfo[0].date),
+ nomAffichage: punitionInfo[2],
+ type: punitionInfo[0].typePunition.libelle,
+ classe: punitionInfo[1].code,
+ censeur: punitionInfo[3],
+ statut: punitionInfo[0].effectue ? libelleEffectue : libelleNonEffectue,
+ description: punitionInfo[0].description ?: '',
+ typeIncident: punitionInfo[4] ?: ''
+ )
+ )
+ }
+
+ return punitionsConsultationInfo
+ }
+
+ private List<SanctionConsultationInfo> parseSanctionsInfoForConsultation(
+ List sanctionsInfo
+ ) {
+
+ List<SanctionConsultationInfo> sanctionsConsultationInfo = []
+ String libelleEffectue = message(code: 'absences.data.effectuee')
+ String libelleNonEffectue = message(code: 'absences.data.nonEffectuee')
+ SimpleDateFormat sdfDate = new SimpleDateFormat(ConstDate.DATE_JJMMAAA, Locale.FRANCE)
+ SimpleDateFormat sdfDateHeure = new SimpleDateFormat(ConstDate.DATE_HEURE, Locale.FRANCE)
+ sanctionsInfo.each { def sanctionInfo ->
+ boolean absenceLiee = sanctionInfo[0].absenceLiee
+ sanctionsConsultationInfo.add(
+ new SanctionConsultationInfo(
+ date: sdfDate.format(sanctionInfo[0].date),
+ nomAffichage: sanctionInfo[2],
+ type: sanctionInfo[0].typeSanction.libelle,
+ classe: sanctionInfo[1].code,
+ censeur: sanctionInfo[3],
+ statut: sanctionInfo[0].effectue ? libelleEffectue : libelleNonEffectue,
+ debutAbsence: absenceLiee ? sdfDateHeure.format(sanctionInfo[0].debutAbsence) : '',
+ finAbsence: absenceLiee ? sdfDateHeure.format(sanctionInfo[0].finAbsence) : '',
+ description: sanctionInfo[0].description ?: '',
+ typeIncident: sanctionInfo[4] ?: ''
+ )
+ )
+ }
+
+ return sanctionsConsultationInfo
+ }
+
+
+ private StatsMensuellesParams getStatsMensuellesParams(
+ Etablissement etablissement,
+ PreferencesEtablissementAbsences pref,
+ Long classeId,
+ Date dateDebut,
+ Date dateFin,
+ ModeCalcul modeCalcul) {
+
+ List<Long> eleveIds = localStructureEnseignementService.listeElevesActifsOuSortants([classeId])*.autoriteId
+ List<Long> motifIds = motifService.getMotifsForStats(pref)*.id
+ Calendar calendarDebut = Calendar.getInstance()
+ calendarDebut.setTime(dateDebut)
+ Calendar calendarFin = Calendar.getInstance()
+ calendarFin.setTime(dateFin)
+
+ new StatsMensuellesParams(
+ eleveIds: eleveIds,
+ motifIds: motifIds,
+ structIds: [classeId],
+ etablissementId: etablissement.id,
+ modeCalcul: modeCalcul,
+ type: Type.ABSENCES,
+ dateDebut: calendarDebut,
+ dateFin: calendarFin,
+ elevesActifsSeulement: false,
+ absencesValables: true,
+ absencesNonValables: true
+ )
+ }
+
+}
--- /dev/null
+/*
+ * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ *
+ * Lilie is free software. You can redistribute it and/or modify since
+ * you respect the terms of either (at least one of the both license) :
+ * - under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ * License, or any later version
+ *
+ * There are special exceptions to the terms and conditions of the
+ * licenses as they are applied to this software. View the full text of
+ * the exception in file LICENSE.txt in the directory of this software
+ * distribution.
+ *
+ * Lilie is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * Licenses for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the CeCILL-C along with Lilie. If not, see :
+ * <http://www.gnu.org/licenses/> and
+ * <http://www.cecill.info/licences.fr.html>.
+ */
+
+package org.lilie.services.eliot.absences.consultation
+
+import org.lilie.services.eliot.absences.consultation.BilanCriteresRecherche
+import org.lilie.services.eliot.applications.absences.BasicCriteresRecherche
+import org.lilie.services.eliot.temps.DateUtil
+import org.lilie.services.eliot.scolarite.Personne
+import org.lilie.services.eliot.applications.absences.AbsencesType
+import org.lilie.services.eliot.absences.Motif
+import org.lilie.services.eliot.absences.GroupeMotif
+import org.lilie.services.eliot.applications.absences.RegimeService
+
+class ConsultationParseCriteriaService {
+
+ RegimeService regimeService
+
+ /**
+ * Récupère les critères de sélection et de classement dans Params
+ * @param params : les paramètres de la requêtes
+ * @return un BilanCriteria rempli
+ * @author jbui
+ */
+ public BilanCriteresRecherche parseBilanCriteria(Map params) {
+ BilanCriteresRecherche criteria = new BilanCriteresRecherche()
+ parseBilanCriteriaType(params.type, criteria)
+ parseBilanCriteriaDates(params, criteria)
+ parseCriteriaMotifs(params.motif, params.groupeMotifs, criteria)
+ parseBilanCriteriaDivisions(params.division, criteria)
+ parseBilanCriteriaEleves(params.elevesId, criteria)
+ parseCriteriaRegimes(params.regimeIds, criteria)
+ return criteria
+ }
+
+ private void parseBilanCriteriaDates(Map params,
+ BasicCriteresRecherche criteria) {
+ String dateDebut = params.dateDebut
+ String dateFin = params.dateFin
+
+ criteria.dateDebut.setTime(DateUtil.parseDateJavascript(dateDebut))
+ criteria.dateFin.setTime(DateUtil.parseDateJavascript(dateFin))
+ }
+
+ private final static Long VALEUR_TOUS = -1
+
+ /**
+ * Récupère les paramètres des élèves
+ * @param params : les paramètres de la requêtes
+ * @return un BilanCriteria complété avec les divisions
+ * @author bahj
+ */
+ private void parseBilanCriteriaEleves(def listeEleves, BasicCriteresRecherche criteria) {
+ if (listeEleves) {
+ List<Long> autoriteElevesId = []
+ List personneElevesId = (listeEleves as String).split(',').collect {
+ Long.parseLong((String) it)
+ }
+
+ // Elèves
+ if (!personneElevesId.contains(VALEUR_TOUS)) {
+ List<Personne> personneEleves = Personne.getAll(personneElevesId)
+ autoriteElevesId = personneEleves*.autorite.id
+ }
+
+ criteria.eleveIds = autoriteElevesId
+ }
+ else {
+ criteria.eleveIds = []
+ }
+ }
+
+/**
+ * Récupère les paramètres de type
+ * @param params : les paramètres de la requêtes
+ * @return un BilanCriteria complété avec les types
+ * @author jbui
+ * @author bahj
+ */
+ private void parseBilanCriteriaType(def listeTypes, BasicCriteresRecherche criteria) {
+ List<Integer> typesEnInt
+ if (listeTypes) {
+ typesEnInt = (listeTypes as String).split(',').collect {
+ Integer.parseInt((String) it)
+ }
+ } else {
+ typesEnInt = []
+ }
+ if (typesEnInt.contains(BasicCriteresRecherche.VALEUR_TOUS as Integer)) {
+ criteria.setTousTypes(true)
+ criteria.demiPension = false
+ criteria.internat = false
+ }
+ else {
+ criteria.setTousTypes(false)
+ for (int type : typesEnInt) {
+ switch (type) {
+ case AbsencesType.ABSENCE_VALABLE.id:
+ criteria.absencesValables = true
+ break
+
+ case AbsencesType.ABSENCE_NON_VALABLE.id:
+ criteria.absencesNonValables = true
+ break
+
+ case AbsencesType.ABSENCE_PREVISIONNELLE.id:
+ criteria.absencesPrevisionnelles = true
+ break
+
+ case AbsencesType.RETARD.id:
+ criteria.retards = true
+ break
+
+ case AbsencesType.DEPART_ANTICIPE.id:
+ criteria.departsAnticipes = true
+ break
+
+ case AbsencesType.DEMI_PENSION.id:
+ criteria.demiPension = true
+ break
+
+ case AbsencesType.INTERNAT.id:
+ criteria.internat = true
+ break
+
+ }
+ }
+ }
+ }
+
+ /**
+ * Récupère les paramètres de motifs
+ * @param params : les paramètres de la requêtes
+ * @param criteria : le criteria à compléter
+ * @return un BilanCriteria complété avec les motifs
+ * @author jbui
+ */
+ protected void parseCriteriaMotifs(def listeMotifs,
+ listeGroupeMotifs,
+ BasicCriteresRecherche criteria) {
+ if (listeMotifs) {
+ criteria.motifIds = (listeMotifs as String).split(',').collect {
+ Long.parseLong(it)
+ }
+ } else {
+ criteria.motifIds = []
+ }
+ if ((criteria.motifIds.size() > 0) &&
+ (criteria.motifIds[0] == BasicCriteresRecherche.VALEUR_TOUS)) {
+ parseCriteriaGroupeMotifs(listeGroupeMotifs, criteria)
+ }
+ }
+
+ /**
+ * Récupère les motifs associés aux groupes de motifs
+ * @param params : les paramètres de la requête
+ * @param bilanCriteria : le BilanCriteria à compléter
+ * @author jbui
+ */
+ protected void parseCriteriaGroupeMotifs(def listeGroupeMotifs,
+ BasicCriteresRecherche bilanCriteria) {
+ List<Long> groupeMotifs
+ if (listeGroupeMotifs) {
+ groupeMotifs = (listeGroupeMotifs as String).split(',').collect {
+ Long.parseLong(it)
+ }
+ } else {
+ groupeMotifs = []
+ }
+ bilanCriteria.motifIds.clear()
+ if ((groupeMotifs.size() > 0) && (groupeMotifs[0] == BasicCriteresRecherche.VALEUR_TOUS)) {
+ bilanCriteria.motifIds << BasicCriteresRecherche.VALEUR_TOUS
+ } else {
+ groupeMotifs.each {
+ bilanCriteria.motifIds.addAll(
+ Motif.findAllByGroupeMotif(
+ GroupeMotif.get(it)
+ )*.id)
+ }
+ }
+ }
+
+ /**
+ * Récupère les paramètres de divisions
+ * @param params : les paramètres de la requêtes
+ * @return un BilanCriteria complété avec les divisions
+ * @author jbui
+ */
+ private void parseBilanCriteriaDivisions(def listeDivisions, BasicCriteresRecherche criteria) {
+ if (listeDivisions) {
+ criteria.structIds = (listeDivisions as String).split(',').collect {
+ Long.parseLong(it)
+ }
+ } else {
+ criteria.structIds = []
+ }
+ }
+
+ /**
+ * Récupère les paramètres des regimes
+ * @param params : les paramètres de la requêtes
+ * @return un BilanCriteria complété avec les regimes
+ * @author msan
+ */
+ private void parseCriteriaRegimes(def listeRegimes, BasicCriteresRecherche criteria) {
+ if (listeRegimes) {
+ List<Long> regimeIds = (listeRegimes as String).split(',').collect {
+ Long.parseLong((String) it)
+ }
+ if (regimeIds.contains(VALEUR_TOUS)) {
+ regimeIds = regimeService.findAll().collect { it.id }
+ }
+ criteria.regimeIds = regimeIds
+ } else {
+ criteria.regimeIds = []
+ }
+ }
+
+}
import org.lilie.services.eliot.absences.Incident
import org.lilie.services.eliot.applications.absences.PunitionService
import org.lilie.services.eliot.scolarite.personne.eleve.EleveAnnuaireService
-import org.lilie.services.eliot.scolarite.Enseignement
-import org.lilie.services.eliot.securite.perimetre.PerimetreEnseignement
/**
* @author bahj
static transactional = true
+
+ private static final String HQL_PUNITION = """
+ select punition, pps.proprietesScolarite.structureEnseignement
+ from Punition as punition, PersonneProprietesScolarite as pps
+ inner join fetch punition.eleve as eleve
+ inner join fetch punition.censeur as censeur
+ inner join fetch punition.typePunition as typePunition
+ where punition.etablissement.id = :etablissementId
+ and eleve=pps.personne
+ and pps.estActive=true
+ and pps.proprietesScolarite.structureEnseignement.actif=true
+ and pps.proprietesScolarite.structureEnseignement.type = :typeClasse
+ """
+
+ // idem HQL_PUNITION avec le type d'incident en plus (pour les archives)
+ // et des fetch en moins sinon Hibernate mélange élève et censeur
+ private static final String HQL_PUNITION_AVEC_TYPE_INCIDENT = """
+ select punition, pps.proprietesScolarite.structureEnseignement, eleve.nom||' '||eleve.prenom, censeur.nom||' '||censeur.prenom, typeIncident.libelle
+ from Punition as punition, PersonneProprietesScolarite as pps
+ inner join punition.eleve as eleve
+ inner join punition.censeur as censeur
+ inner join fetch punition.typePunition as typePunition
+ left join punition.incident.type as typeIncident
+ where punition.etablissement.id = :etablissementId
+ and eleve=pps.personne
+ and pps.estActive=true
+ and pps.proprietesScolarite.structureEnseignement.actif=true
+ and pps.proprietesScolarite.structureEnseignement.type = :typeClasse
+ """
+
/**
* Crée une nouvelle punition en vérifiant les droits
* @return une Punition
Boolean ascendant,
Integer start,
Integer limit,
- Map criteres = [:]) {
+ Map criteres = [:],
+ Boolean specialArchive = false) {
Map result = [
'nbPunitionsInfo': 0,
etablissementId: etablissement.id,
typeClasse: StructureEnseignement.TYPE_CLASSE
]
- String hqlFromPunition = findPunitionHqlFromPunition()
+ String hqlFromPunition = findPunitionHqlFromPunition(specialArchive)
boolean personneIsEnseignant = droitsService.hasOnlyPerimetreEnseignement(
securiteSession
hqlFromPunition = ajouteFiltresParCriteresSimples(hqlFromPunition, hqlParams, criteres)
- String hqlCount = hqlFromPunition
- .replace(
- 'select punition, pps.proprietesScolarite.structureEnseignement',
- 'select count (distinct punition.id)'
- )
- .replaceAll(' join fetch ', ' join ')
+ result['nbPunitionsInfo'] = comptePunitions(hqlFromPunition,
+ hqlParams,
+ !specialArchive)
String ordre = ascendant ? ' asc' : ' desc'
String champ = getNomCompletChampOrdre(champOrdre)
paginationMap
)
- result['nbPunitionsInfo'] =
- Punition.executeQuery(hqlCount, hqlParams).first()
-
return result
}
+ private Integer comptePunitions(String hqlPunitions, Map hqlParams, Boolean compter) {
+ if(compter) {
+ String hqlCount = hqlPunitions
+ .replace(
+ 'select punition, pps.proprietesScolarite.structureEnseignement',
+ 'select count (distinct punition.id)'
+ )
+ .replaceAll(' join fetch ', ' join ')
+
+ Punition.executeQuery(hqlCount, hqlParams).first()
+ } else {
+ 0
+ }
+ }
+
private String ajouteFiltresParCriteresSimples(String hqlFromPunition,
Map hqlParams,
Map criteres) {
return champ
}
- Map findPunitions(SecuriteSession securiteSession,
- Personne personne,
- Etablissement etablissement) {
-
- List<Personne> eleves = []
- Map result = [
- 'nbPunitionsInfo': 0,
- 'punitionsInfo': []
- ]
- Map params = (Map) [:]
- Map paramsPagination = (Map) [:]
- String hqlFromPunition = findPunitionHqlFromPunition()
-
- boolean estSeulementEnseig = droitsService.hasOnlyPerimetreEnseignement(
- securiteSession
- )
-
- if (estSeulementEnseig) {
- List<Enseignement> enseignements =
- droitsService.getAllObjetDuPerimetre(securiteSession, PerimetreEnseignement)
-
- eleves = eleveAnnuaireService.findAllEleveByService(
- securiteSession,
- enseignements*.service*.id
- )?.collect { it.autorite }
-
- if (eleves.size() == 0) {
- return result
- }
- hqlFromPunition += ' and eleve in (:eleves)'
- params.eleves = eleves
- result['nbPunitionsInfo'] = Punition.createCriteria().get {
- eq('etablissement', etablissement)
- 'in'('eleve', eleves)
- projections {
- countDistinct('id')
- }
- }
- } else {
- result['nbPunitionsInfo'] = Punition.countByEtablissement(etablissement)
- }
-
- params.etablissementId = etablissement.id
- params.typeClasse = StructureEnseignement.TYPE_CLASSE
- result['punitionsInfo'] = Punition.executeQuery(
- hqlFromPunition,
- params,
- paramsPagination
- )
-
- return result
- }
-
- private String findPunitionHqlFromPunition() {
- String hqlFromPunition = """
- select punition, pps.proprietesScolarite.structureEnseignement
- from Punition as punition, PersonneProprietesScolarite as pps
- inner join fetch punition.eleve as eleve
- inner join fetch punition.censeur as censeur
- inner join fetch punition.typePunition as typePunition
- where punition.etablissement.id = :etablissementId
- and eleve=pps.personne
- and pps.estActive=true
- and pps.proprietesScolarite.structureEnseignement.actif=true
- and pps.proprietesScolarite.structureEnseignement.type = :typeClasse
- """
- return hqlFromPunition
+ private String findPunitionHqlFromPunition(Boolean avecTypeIncident) {
+ return avecTypeIncident ? HQL_PUNITION_AVEC_TYPE_INCIDENT : HQL_PUNITION
}
}
EleveAnnuaireService eleveAnnuaireService
ScolariteService scolariteService
+
+ private static final String HQL_SANCTION = """
+ select sanction, pps.proprietesScolarite.structureEnseignement
+ from Sanction as sanction, PersonneProprietesScolarite as pps
+ inner join fetch sanction.eleve as eleve
+ inner join fetch sanction.censeur as censeur
+ inner join fetch sanction.typeSanction as typeSanction
+ where sanction.etablissement.id = :etablissementId and
+ eleve=pps.personne and
+ pps.estActive=true and
+ pps.proprietesScolarite.structureEnseignement.actif=true
+ and pps.proprietesScolarite.structureEnseignement.type = :typeClasse
+ """
+
+ // idem HQL_SANCTION avec le type d'incident en plus (pour les archives)
+ // et des fetch en moins sinon Hibernate mélange élève et censeur
+ private static final String HQL_SANCTION_AVEC_TYPE_INCIDENT = """
+ select sanction, pps.proprietesScolarite.structureEnseignement, eleve.nom||' '||eleve.prenom, censeur.nom||' '||censeur.prenom, typeIncident.libelle
+ from Sanction as sanction, PersonneProprietesScolarite as pps
+ inner join sanction.eleve as eleve
+ inner join sanction.censeur as censeur
+ inner join fetch sanction.typeSanction as typeSanction
+ left join sanction.incident.type as typeIncident
+ where sanction.etablissement.id = :etablissementId and
+ eleve=pps.personne and
+ pps.estActive=true and
+ pps.proprietesScolarite.structureEnseignement.actif=true
+ and pps.proprietesScolarite.structureEnseignement.type = :typeClasse
+ """
+
+
+
/**
* Crée une nouvelle sanction
* Vérifie les droits
Boolean ascendant,
Integer start,
Integer limit,
- Map criteres = [:]) {
+ Map criteres = [:],
+ Boolean specialArchive = false) {
List sanctionsInfo = []
Map resultats = [
typeClasse: StructureEnseignement.TYPE_CLASSE
]
- String hqlFromSanction = findAllSanctionsHqlFromSanctions()
+ String hqlFromSanction = findAllSanctionsHqlFromSanctions(specialArchive)
hqlFromSanction = ajouteFiltresParCriteresSimples(hqlFromSanction, hqlParams, criteres)
}
}
- String hqlCount = hqlFromSanction
- .replace(
- 'select sanction, pps.proprietesScolarite.structureEnseignement',
- 'select count (distinct sanction.id)'
- )
- .replaceAll(' join fetch ', ' join ')
+ resultats['nbsanctionsInfo'] = compteSanctions(hqlFromSanction,
+ hqlParams,
+ !specialArchive)
String ordre = ascendant ? ' asc' : ' desc'
String champ = getNomCompletChampOrdre(champOrdre)
paginationMap
)
- resultats['nbsanctionsInfo'] =
- Sanction.executeQuery(hqlCount, hqlParams).first()
-
return resultats
}
+ private Integer compteSanctions(String hqlSanction, Map hqlParams, Boolean compter) {
+ if(compter) {
+ String hqlCount = hqlSanction
+ .replace(
+ 'select sanction, pps.proprietesScolarite.structureEnseignement',
+ 'select count (distinct sanction.id)'
+ )
+ .replaceAll(' join fetch ', ' join ')
+
+ Sanction.executeQuery(hqlCount, hqlParams).first()
+ } else {
+ 0
+ }
+ }
+
+
private String ajouteFiltresParCriteresSimples(String hqlFromSanction,
LinkedHashMap<String, Serializable> hqlParams,
Map criteres) {
return champ
}
- /**
- * Liste des sanctions associées à une personne
- */
- public Map findAllSanctionParPersonne(SecuriteSession securiteSession, // TOREFACT : créer une classe pour le type de retour de cette méthode
- Etablissement etablissement,
- Personne personne) {
-
- Map resultats = [
- nbsanctionsInfo: 0,
- sanctionsInfo: []
- ]
- Map hqlParams = [
- etablissementId: etablissement.id,
- typeClasse: StructureEnseignement.TYPE_CLASSE
- ]
- List<Personne> eleves = []
- String hqlFromSanction = findAllSanctionsHqlFromSanctions()
-
- Boolean estSeulementEnseig = droitsService.hasOnlyPerimetreEnseignement(
- securiteSession
- )
-
- if (estSeulementEnseig) {
- List<Enseignement> enseignements =
- droitsService.getAllObjetDuPerimetre(securiteSession, PerimetreEnseignement)
-
- eleves = eleveAnnuaireService.findAllEleveByService(
- securiteSession,
- enseignements*.service*.id
- )?.collect { it.autorite }
-
- if (eleves.size() == 0) {
- return resultats
- }
-
- hqlFromSanction += ' and eleve in (:eleves)'
- hqlParams['eleves'] = eleves
- resultats['nbsanctionsInfo'] = Sanction.createCriteria().get {
- eq('etablissement', etablissement)
- 'in'('eleve', eleves)
- projections {
- countDistinct('id')
- }
- }
- }
- else {
- resultats['nbsanctionsInfo'] = Sanction.countByEtablissement(
- etablissement
- )
- }
-
- resultats['donnees'] = Sanction.executeQuery(
- hqlFromSanction,
- hqlParams
- )
-
- return resultats
- }
-
-
- private String findAllSanctionsHqlFromSanctions() {
- String hqlFromSanction = """
- select sanction, pps.proprietesScolarite.structureEnseignement
- from Sanction as sanction, PersonneProprietesScolarite as pps
- inner join fetch sanction.eleve as eleve
- inner join fetch sanction.censeur as censeur
- inner join fetch sanction.typeSanction as typeSanction
- where sanction.etablissement.id = :etablissementId and
- eleve=pps.personne and
- pps.estActive=true and
- pps.proprietesScolarite.structureEnseignement.actif=true
- and pps.proprietesScolarite.structureEnseignement.type = :typeClasse
- """
- return hqlFromSanction
+ private String findAllSanctionsHqlFromSanctions(Boolean avecTypeIncident) {
+ return avecTypeIncident ? HQL_SANCTION_AVEC_TYPE_INCIDENT : HQL_SANCTION
}
/**
import org.lilie.services.eliot.absences.PreferencesEtablissementAbsences
import org.lilie.services.eliot.scolarite.structureenseignement.LocalStructureEnseignementServiceHql
import org.lilie.services.eliot.constantes.ConstFonct
-import org.lilie.services.eliot.scolarite.structureenseignement.LocalStructureEnseignementService
+import org.lilie.services.eliot.scolarite.structureenseignement.LocalStructureEnseignementService
/**
* @author jbui
TableauDeBord tableauDeBord,
PreferencesEtablissementAbsences pref) {
- tableauDeBordAbsencesService.calculeLignesAbsencesSansMotif(
- criteres,
- tableauDeBord,
- pref
- )
+ if (!criteres.filtreMotifsStats || criteres.hasSansMotif()) {
+
+ tableauDeBordAbsencesService.calculeLignesAbsencesSansMotif(
+ criteres,
+ tableauDeBord,
+ pref
+ )
+
+ }
+
tableauDeBordAbsencesService.calculeLignesAbsencesAvecMotif(
criteres,
tableauDeBord,
* correspondant à un résultat paginé
*/
Map findEleveDatasForStructures(TableauDeBordParams tableauDeBordParams) {
- Map mapARetourner = [eleveInfos:[], nbrEleves:0]
+ Map mapARetourner = [eleveInfos: [], nbrEleves: 0]
if (tableauDeBordParams.classes.size() > 0) {
def sql = LocalStructureEnseignementServiceHql.SQL_ELEVES_ACTIFS_OU_SORTANTS_CLASSE
(tableauDeBordParams.classes*.id).findAll {it})
sqlQuery.setLong("eleveFonctionId",
Fonction.findByCode(FonctionEnum.ELEVE.getCode(), [cache: true]).id)
- sqlQuery.setLong("offset",tableauDeBordParams.start)
+ sqlQuery.setLong("offset", tableauDeBordParams.start)
if (tableauDeBordParams.limit > 0) {
- sqlQuery.setLong("limit",tableauDeBordParams.limit)
+ sqlQuery.setLong("limit", tableauDeBordParams.limit)
}
List resultat = sqlQuery.list()
resultat.each {
- mapARetourner.eleveInfos << new EleveInfo(it[1],it[2],it[3],it[4],it[0])
+ mapARetourner.eleveInfos << new EleveInfo(it[1], it[2], it[3], it[4], it[0])
}
- mapARetourner.nbrEleves = resultat.collect{it[5]}.unique().sum()
+ mapARetourner.nbrEleves = resultat.collect {it[5]}.unique().sum()
}
return mapARetourner
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <title>Maintenance<g:meta name="app.name"/></title>
+ <title>Maintenance <g:meta name="app.name"/></title>
</head>
<body>
<g:link action="basculeAnnee"><g:message code="maintenance.accueil.bascule"/></g:link><hr/>
<g:link action="maintenanceTechnique"><g:message code="maintenance.accueil.maintenanceTechnique"/></g:link><hr/>
+<g:link action="testArchive"><g:message code="maintenance.accueil.testarchive"/></g:link><hr/>
</body>
</html>
\ No newline at end of file
--- /dev/null
+%{--
+ - Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ - This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ -
+ - Lilie is free software. You can redistribute it and/or modify since
+ - you respect the terms of either (at least one of the both license) :
+ - under the terms of the GNU Affero General Public License as
+ - published by the Free Software Foundation, either version 3 of the
+ - License, or (at your option) any later version.
+ - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ - License, or any later version
+ -
+ - There are special exceptions to the terms and conditions of the
+ - licenses as they are applied to this software. View the full text of
+ - the exception in file LICENSE.txt in the directory of this software
+ - distribution.
+ -
+ - Lilie is distributed in the hope that it will be useful,
+ - but WITHOUT ANY WARRANTY; without even the implied warranty of
+ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ - Licenses for more details.
+ -
+ - You should have received a copy of the GNU General Public License
+ - and the CeCILL-C along with Lilie. If not, see :
+ - <http://www.gnu.org/licenses/> and
+ - <http://www.cecill.info/licences.fr.html>.
+ --}%
+
+
+
+
+<%@ page import="org.lilie.services.eliot.absences.statistiques.mensuelle.ModeCalcul" contentType="text/html;charset=UTF-8" %>
+<html>
+<head>
+ <meta name="layout" content="maintenance"/>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+</head>
+<body>
+
+<h1>Test modèles pour archivage</h1>
+<h2>Tous les modèles se lancent sur l'année en cours.</h2>
+
+<hr/>
+
+<p>
+ <g:link controller="maintenance" action="index">Maintenance</g:link>
+</p>
+
+<hr/>
+<g:form name="myForm" url="[action:'registreAppels',controller:'maintenanceRapports']">
+ <g:select name="classeCode" from="${classes}" optionValue="code" optionKey="code" noSelection="['':'-Choisir une classe-']"/>
+ <g:submitButton name="update" value="Registre des appels" />
+</g:form>
+
+<g:form name="myForm" url="[action:'suiviEnvoiFamille',controller:'maintenanceRapports']">
+ <g:select name="classeCode" from="${classes}" optionValue="code" optionKey="code" noSelection="['':'-Choisir une classe-']"/>
+ <g:submitButton name="update" value="Suivi des envois aux familles" />
+</g:form>
+
+<p><g:link controller="maintenanceRapports" action="registrePunitions">Registre des punitions</g:link></p>
+<p><g:link controller="maintenanceRapports" action="registreSanctions">Registre des sanctions</g:link></p>
+
+
+<g:form name="myForm" url="[action:'statsMensuelles',controller:'maintenanceRapports']">
+ <g:select name="classeCode" from="${classes}" optionValue="code" optionKey="code" noSelection="['':'-Choisir une classe-']"/>
+ <g:radio name="modeCalculCode" value="${ModeCalcul.VOLUME.code}" checked="true"/> Volume
+ <g:radio name="modeCalculCode" value="${ModeCalcul.POURCENTAGE.code}"/> Pourcentage
+ <g:submitButton name="update" value="Statistiques mensuelles" />
+</g:form>
+
+<p><g:link controller="maintenanceRapports" action="tableauDeBord">Tableau de bord</g:link></p>
+<hr/>
+
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ *
+ * Lilie is free software. You can redistribute it and/or modify since
+ * you respect the terms of either (at least one of the both license) :
+ * - under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ * License, or any later version
+ *
+ * There are special exceptions to the terms and conditions of the
+ * licenses as they are applied to this software. View the full text of
+ * the exception in file LICENSE.txt in the directory of this software
+ * distribution.
+ *
+ * Lilie is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * Licenses for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the CeCILL-C along with Lilie. If not, see :
+ * <http://www.gnu.org/licenses/> and
+ * <http://www.cecill.info/licences.fr.html>.
+ */
+
+package org.lilie.services.eliot.absences
+
+import grails.test.GrailsUnitTestCase
+import org.lilie.services.eliot.scolarite.Etablissement
+import org.lilie.services.eliot.scolarite.StructureEnseignement
+import grails.converters.JSON
+import org.lilie.services.eliot.impression.constantes.TemplateDocumentEnum
+import org.lilie.services.eliot.absences.archivage.ArchivageRequetageService
+import org.lilie.services.eliot.parametrages.calendrier.CalendrierService
+import org.lilie.services.eliot.test.PopulationTestEtablissement
+import org.lilie.services.eliot.test.LocalInitDonneesCommunesTestService
+import org.lilie.services.eliot.annuaire.SecuriteSession
+import org.lilie.services.eliot.test.PopulationTestActeur
+import org.lilie.services.eliot.test.InitDonneesCommunesTestAbsenceService
+import org.lilie.services.eliot.impression.ImpressionMoteurService
+import org.lilie.services.eliot.scolarite.etablissement.PreferencesEtablissementAbsencesService
+import org.lilie.services.eliot.securite.AutorisationException
+import org.lilie.services.eliot.absences.statistiques.mensuelle.ModeCalcul
+
+class ArchivesTests extends GrailsUnitTestCase {
+
+ ArchivageRequetageService archivageRequetageService
+ CalendrierService calendrierService
+ LocalInitDonneesCommunesTestService localInitDonneesCommunesTestService
+ InitDonneesCommunesTestAbsenceService initDonneesCommunesTestAbsenceService
+ ImpressionMoteurService impressionMoteurService
+ PreferencesEtablissementAbsencesService preferencesEtablissementAbsencesService
+
+ protected void setUp() {
+ super.setUp()
+
+ etablissement = localInitDonneesCommunesTestService.getEtablissement(
+ PopulationTestEtablissement.ETABLISSEMENT_1)
+
+ securiteSession = initDonneesCommunesTestAbsenceService.getSecuriteSession(
+ PopulationTestActeur.DIRECTION_1)
+
+ pref = preferencesEtablissementAbsencesService.
+ getPreferencesEtablissementForEtablissement(etablissement)
+
+ }
+
+ Etablissement etablissement
+ PreferencesEtablissementAbsences pref
+ SecuriteSession securiteSession
+
+ void testregistreAppels() {
+
+ Map mapDebutFinAnnee = calendrierService.mapDebutFinAnnee(etablissement)
+
+ String codeClasse = "1SE2"
+
+ StructureEnseignement structureEnseignement = StructureEnseignement.findByCodeAndEtablissement(
+ codeClasse,
+ etablissement
+ )
+
+ JSON json = archivageRequetageService.registreAppel(
+ securiteSession,
+ etablissement,
+ structureEnseignement.id,
+ mapDebutFinAnnee.debutDate,
+ mapDebutFinAnnee.finDate)
+
+ imprimeDocumentPDF(
+ json.toString(),
+ ["lignes"],
+ TemplateDocumentEnum.REGISTRE_APPELS,
+ structureEnseignement.nomAffichage,
+ mapDebutFinAnnee.debutString,
+ mapDebutFinAnnee.finString
+ )
+
+ }
+
+ void testSuiviEnvoiFamille() {
+
+ Map mapDebutFinAnnee = calendrierService.mapDebutFinAnnee(etablissement)
+
+ String codeClasse = "1SE2"
+
+ StructureEnseignement structureEnseignement = StructureEnseignement.findByCodeAndEtablissement(
+ codeClasse,
+ etablissement
+ )
+
+ JSON json = archivageRequetageService.suiviEnvoisFamilles(
+ etablissement,
+ structureEnseignement.id,
+ mapDebutFinAnnee.debutDate,
+ mapDebutFinAnnee.finDate)
+
+ imprimeDocumentPDF(
+ json.toString(),
+ ["data"],
+ TemplateDocumentEnum.SUIVI_ENVOIS_FAMILLES,
+ structureEnseignement.nomAffichage,
+ mapDebutFinAnnee.debutString,
+ mapDebutFinAnnee.finString
+ )
+
+ }
+
+ void testTableauDeBord() {
+
+ Map mapDebutFinAnnee = calendrierService.mapDebutFinAnnee(etablissement)
+
+ JSON json = archivageRequetageService.tableauDeBord(
+ pref,
+ etablissement,
+ mapDebutFinAnnee.debutDate,
+ mapDebutFinAnnee.finDate
+ )
+
+ imprimeDocumentPDF(
+ json.toString(),
+ ["dataGrille.lignes", "dataTotaux.lignes"],
+ TemplateDocumentEnum.TABLEAU_DE_BORD,
+ "",
+ mapDebutFinAnnee.debutString,
+ mapDebutFinAnnee.finString
+ )
+
+ }
+
+ void testRegistrePunitions() {
+
+ Map mapDebutFinAnnee = calendrierService.mapDebutFinAnnee(etablissement)
+
+ JSON json = archivageRequetageService.registrePunition(
+ getSecuriteSession(),
+ etablissement,
+ mapDebutFinAnnee.debutDate,
+ mapDebutFinAnnee.finDate)
+
+ imprimeDocumentPDF(
+ json.toString(),
+ ["data"],
+ TemplateDocumentEnum.REGISTRE_PUNITIONS,
+ '',
+ mapDebutFinAnnee.debutString,
+ mapDebutFinAnnee.finString
+ )
+ }
+
+ void testRegistreSanctions() {
+
+ Map mapDebutFinAnnee = calendrierService.mapDebutFinAnnee(etablissement)
+
+ JSON json = archivageRequetageService.registreSanction(
+ getSecuriteSession(),
+ etablissement,
+ mapDebutFinAnnee.debutDate,
+ mapDebutFinAnnee.finDate)
+
+ imprimeDocumentPDF(
+ json.toString(),
+ ["data"],
+ TemplateDocumentEnum.REGISTRE_SANCTIONS,
+ '',
+ mapDebutFinAnnee.debutString,
+ mapDebutFinAnnee.finString
+ )
+ }
+
+ void testStatsMensuellesVolume() {
+
+ Map mapDebutFinAnnee = calendrierService.mapDebutFinAnnee(etablissement)
+
+ String codeClasse = "1ES2"
+ StructureEnseignement structureEnseignement = StructureEnseignement.findByCodeAndEtablissement(codeClasse, etablissement)
+ ModeCalcul modeCalcul = ModeCalcul.VOLUME
+
+ JSON json = archivageRequetageService.statsMensuelles(
+ getSecuriteSession(),
+ etablissement,
+ structureEnseignement.id,
+ mapDebutFinAnnee.debutDate,
+ mapDebutFinAnnee.finDate,
+ modeCalcul)
+
+ imprimeDocumentPDF(
+ json.toString(),
+ ["data"],
+ TemplateDocumentEnum.STATS_MENSUELLES_VOLUME,
+ structureEnseignement.code,
+ mapDebutFinAnnee.debutString,
+ mapDebutFinAnnee.finString
+ )
+ }
+
+ void testStatsMensuellesPourcent() {
+
+ Map mapDebutFinAnnee = calendrierService.mapDebutFinAnnee(etablissement)
+
+ String codeClasse = "1ES2"
+ StructureEnseignement structureEnseignement = StructureEnseignement.findByCodeAndEtablissement(codeClasse, etablissement)
+ ModeCalcul modeCalcul = ModeCalcul.POURCENTAGE
+
+ JSON json = archivageRequetageService.statsMensuelles(
+ getSecuriteSession(),
+ etablissement,
+ structureEnseignement.id,
+ mapDebutFinAnnee.debutDate,
+ mapDebutFinAnnee.finDate,
+ modeCalcul)
+
+ imprimeDocumentPDF(
+ json.toString(),
+ ["data"],
+ TemplateDocumentEnum.STATS_MENSUELLES_POURCENT,
+ structureEnseignement.code,
+ mapDebutFinAnnee.debutString,
+ mapDebutFinAnnee.finString
+ )
+ }
+
+ private void imprimeDocumentPDF(String donnees,
+ List<String> requete,
+ TemplateDocumentEnum templateDocumentEnum,
+ String classe,
+ String dateDebut,
+ String dateFin
+ ) {
+
+ InputStream is = new ByteArrayInputStream(donnees.bytes)
+ is.reset()
+
+ ByteArrayOutputStream documentPDF = impressionMoteurService.creeArchiveFromJSON(
+ etablissement,
+ templateDocumentEnum.toString(),
+ classe,
+ dateDebut,
+ dateFin,
+ is,
+ requete
+ )
+
+ }
+
+
+}
eliot.scolarite.import.udtConnecteur.racineDossiers = '/tmp/importUDT'
}
+//eliot.mode.maintenance = false
\ No newline at end of file
}
}
+ def testArchive = {
+ if (!securiteSession.hasFonctionIn([FonctionEnum.CORRESPONDANT_DEPLOIEMENT])) {
+ throw AutorisationException.consultationContenuException()
+ }
+
+ Map modele = [:]
+
+ render(
+ view: '/maintenance/testArchive',
+ model: modele
+ )
+
+ }
def infoJvm = {
if (!securiteSession.hasFonctionIn([FonctionEnum.CORRESPONDANT_DEPLOIEMENT])) {
)
ScolariteBasculeAnneeRapportHtmlBuilder rapportHtmlBuilder =
- new ScolariteBasculeAnneeRapportHtmlBuilder(
- rapport: rapport,
- controlleur: this
- )
+ new ScolariteBasculeAnneeRapportHtmlBuilder(
+ rapport: rapport,
+ controlleur: this
+ )
if (rapport) {
// enregiste le rapport
model.usersInfo = listeInfos
AnnuaireConsultationUsersInfo listUsersInfo =
- new AnnuaireConsultationUsersInfo(
- listUsersInfo: listeInfos
- )
+ new AnnuaireConsultationUsersInfo(
+ listUsersInfo: listeInfos
+ )
usersInfo = listUsersInfo
}
catch (IllegalStateException ise) {
model.usersInfo = listeInfos.subList(0, DEFAULT_LIMIT_USERS_INFO)
}
AnnuaireConsultationUsersInfo listUsersInfo =
- new AnnuaireConsultationUsersInfo(
- listUsersInfo: listeInfos
- )
+ new AnnuaireConsultationUsersInfo(
+ listUsersInfo: listeInfos
+ )
usersInfo = listUsersInfo
}
catch (IllegalStateException ise) {
)
model.usersInfo = listeInfos
AnnuaireConsultationUsersInfo listUsersInfo =
- new AnnuaireConsultationUsersInfo(
- listUsersInfo: listeInfos
- )
+ new AnnuaireConsultationUsersInfo(
+ listUsersInfo: listeInfos
+ )
usersInfo = listUsersInfo
}
catch (IllegalStateException ise) {
}
}
- /**
- * Indique si le template est obsolète
- */
- protected boolean templateEliotEstObsolete(TemplateEliotEnum templateEliotEnum,
- Integer version) {
-// Boolean result = false
-// TemplateEliot template = (TemplateEliot) templateEliots.find {
-// it.code == templateEliotEnum.toString()
-// }
-// if (template?.numeroVersion != version) {
-// result = true
-// }
-// return result
-
- return true
- }
-
/**
* Retourne le flux de lecture sur le fichier à importer
* @return un InputStream
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.lilie.services.eliot.impression.ImpressionImportService
+import org.lilie.services.eliot.impression.constantes.TemplateEliotEnum
/**
* Module d'import des modèles de document "usine"
)
TemplateEliot feuille = findTemplateEliotInList(documentsUsine.getFeuille().toString())
- TemplateEliot sousModele = findTemplateEliotInList(documentsUsine.getSousModele().toString())
+
+// TemplateEliot sousModele = findTemplateEliotInList(documentsUsine.getSousModele().toString())
+// documentsUsine.getSousModele().each{
+// k,v->
+//
+// }
+ List<Map<String, TemplateEliot>> sousModeles = []
+
+ documentsUsine.getSousModele().each {String param, TemplateEliotEnum templateEliotEnum ->
+
+ Map<String, TemplateEliot> sousModele = [:]
+ TemplateEliot templateEliot = findTemplateEliotInList(templateEliotEnum.toString())
+ if (!templateEliot) {
+ throw new IllegalStateException("Le sous-modèle ${templateEliotEnum.toString()} n'existe pas en base")
+ }
+ sousModele.put(param, templateEliot)
+ sousModeles << sousModele
+ }
if (templateDocument) {
- if (LOG.infoEnabled){
+ if (LOG.infoEnabled) {
LOG.info "MAJ " + documentsUsine.getDocument().toString()
}
metAJourDocument(
documentsUsine,
templateDocument,
- sousModele,
+ sousModeles,
feuille
)
} else {
- if (LOG.infoEnabled){
+ if (LOG.infoEnabled) {
LOG.info "IMP " + documentsUsine.getDocument().toString()
}
importeDocument(
documentsUsine,
- sousModele,
+ sousModeles,
feuille
)
}
}
protected String rootDir() {
- return null;
+ return null
}
private void metAJourDocument(ModelesUsine documentsUsine,
TemplateDocument bulletinNotes,
- TemplateEliot bulletinNotesTableau,
+ List sousModeles,
TemplateEliot bulletinNotesA4) {
+
impressionImportService.metAJourTemplateDocument(
bulletinNotes,
null,
documentsUsine.getDocument(),
bulletinNotesA4,
[],
- [bulletinNotesTableau],
+ sousModeles,
TypeMedia.COURRIER,
- true,
- documentsUsine.getVersion()
+ true
)
}
- void importeDocument(ModelesUsine documentsUsine,
- TemplateEliot tableauDeNote,
- TemplateEliot templateBulletin
+ private void importeDocument(ModelesUsine documentsUsine,
+ List sousModeles,
+ TemplateEliot templateBulletin
) {
- TemplateDocumentSousTemplateEliot docSousTemplateEliot =
- impressionImportService.createTemplateDocumentSousTemplateEliot(
- ConfigImpression.PARAM_TABLEAU, tableauDeNote)
+ List<TemplateDocumentSousTemplateEliot> listeSousTemplate = []
+ sousModeles.each {k, v ->
+ TemplateDocumentSousTemplateEliot docSousTemplateEliot =
+ impressionImportService.createTemplateDocumentSousTemplateEliot(
+ k, v)
+
+ listeSousTemplate << docSousTemplateEliot
+ }
impressionImportService.importeTemplateDocument(
null,
documentsUsine.getDocument(),
templateBulletin,
[],
- [docSousTemplateEliot],
+ listeSousTemplate,
TypeMedia.COURRIER,
- true,
- documentsUsine.getVersion()
+ true
)
}
)
if (templateEliot) {
- if (templateEliotEstObsolete(
- modeles.getTemplateEliotEnum(),
- modeles.getVersion()
- )) {
- if (LOG.infoEnabled) {
- LOG.info "MAJ " + modeles.getTemplateEliotEnum().toString()
- }
+ LOG.info "MAJ " + modeles.getTemplateEliotEnum().toString()
return metAJourModele(templateEliot, modeles)
- } else {
- return templateEliot
- }
} else {
if (LOG.infoEnabled) {
LOG.info "IMP " + modeles.getTemplateEliotEnum().toString()
templateEliot,
templateTypeFonctionnalite,
modeles.getTemplateEliotEnum(),
- modeles.getVersion(),
'',
bulletinIs,
templateTypeDonnees
modeles.getTemplateTypeFonctionnaliteEnum().toString()
),
modeles.getTemplateEliotEnum(),
- modeles.getVersion(),
'',
bulletinIs,
TemplateTypeDonnees.findByCode(
)
if (!templateTypeDonnees) {
- throw new ImportModeleException("Erreur initialisation base de données sur le type de données", null)
+ throw new ImportModeleException("Erreur initialisation base de données sur le type de données ${sousModeles.getTemplateTypeDonneeEnum().toString()}", null)
}
TemplateTypeFonctionnalite templateTypeFonctionnalite =
)
if (!templateTypeFonctionnalite) {
- throw new ImportModeleException("Erreur initialisation base de données sur le type de fonctionnalité", null)
+ throw new ImportModeleException("Erreur initialisation base de données sur le type de fonctionnalité ${sousModeles.getTemplateTypeFonctionnaliteEnum().toString()}", null)
}
)
if (templateEliot) {
- if (templateEliotEstObsolete(
- sousModeles.getNiveau1(),
- sousModeles.getVersion()
- )) {
return metAJourSousModele(
sousModeles,
templateEliot,
templateTypeFonctionnalite,
templateTypeDonnees
)
- } else {
- return templateEliot
- }
} else {
return importeSousModele(
sousModeles,
templateEliot,
templateTypeFonctionnalite,
sousModeles.getNiveau1(),
- sousModeles.getVersion(),
tableauIs,
sousRapportIs,
sousSousRapportIs,
return impressionImportService.importeTableau(
templateTypeFonctionnalite,
sousModeles.getNiveau1(),
- sousModeles.getVersion(),
tableauIs,
sousRapportIs,
sousSousRapportIs,
public void verifieEtMetAJourResources() {
- if (log.infoEnabled) {log.info("Import des sous-modèles")}
+ if (log.infoEnabled) {
+ log.info("Import des sous-modèles")
+ }
ImporteurSousModele importeurSousModele = new ImporteurSousModele(applicationContext)
SousModeles.each { SousModeles sousModeles ->
import org.lilie.services.eliot.impression.constantes.TemplateTypeDonneeEnum
import org.lilie.services.eliot.impression.constantes.TemplateTypeFonctionnaliteEnum
import org.lilie.services.eliot.impression.constantes.TemplateEliotEnum
+import org.lilie.services.eliot.impression.constantes.TemplateDocumentEnum
/**
* Liste des modèles de types de documents. On entend par là les feuilles A4
BUL_NOTES_A4(
TemplateEliotEnum.BUL_NOTES_A4,
TemplateTypeDonneeEnum.ELEVE_NOTES,
- TemplateTypeFonctionnaliteEnum.BULLETIN_NOTES,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.BULLETIN_NOTES
),
BUL_NOTES_LETTRE(
TemplateEliotEnum.BUL_NOTES_LETTRE,
TemplateTypeDonneeEnum.ELEVE_NOTES,
- TemplateTypeFonctionnaliteEnum.BULLETIN_NOTES,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.BULLETIN_NOTES
),
BUL_NOTES_LETTRE_SANS_ADRESSE(
TemplateEliotEnum.BUL_NOTES_SANS_ADRESSE,
TemplateTypeDonneeEnum.ELEVE_NOTES,
- TemplateTypeFonctionnaliteEnum.BULLETIN_NOTES,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.BULLETIN_NOTES
),
LETTRE_ABS_LETTRE_ABSENCES(
TemplateEliotEnum.LETTRE_ABS_LETTRE_ABSENCES,
TemplateTypeDonneeEnum.ELEVE_ABSENCES,
- TemplateTypeFonctionnaliteEnum.LETTRE_ABSENCES,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.LETTRE_ABSENCES
),
LETTRE_RET_LETTRE_RETARDS(
TemplateEliotEnum.LETTRE_RET_LETTRE_RETARDS,
TemplateTypeDonneeEnum.ELEVE_RETARDS,
- TemplateTypeFonctionnaliteEnum.LETTRE_RETARDS,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.LETTRE_RETARDS
),
REL_NOTES_A4(
TemplateEliotEnum.REL_NOTES_A4,
TemplateTypeDonneeEnum.ELEVE_NOTES,
- TemplateTypeFonctionnaliteEnum.RELEVE_NOTES,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.RELEVE_NOTES
),
REL_NOTES_LETTRE(
TemplateEliotEnum.REL_NOTES_LETTRE,
TemplateTypeDonneeEnum.ELEVE_NOTES,
- TemplateTypeFonctionnaliteEnum.RELEVE_NOTES,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.RELEVE_NOTES
),
SYNTHESE_A4(
TemplateEliotEnum.SYNTHESE_A4,
TemplateTypeDonneeEnum.SYNTHESE_CLASSE_NOTES,
- TemplateTypeFonctionnaliteEnum.SYNTHESE_NOTES,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.SYNTHESE_NOTES
),
TABLEAU_NOTES_A4(
TemplateEliotEnum.TABLEAU_NOTES_A4,
TemplateTypeDonneeEnum.SYNTHESE_CLASSE_NOTES,
- TemplateTypeFonctionnaliteEnum.SYNTHESE_NOTES,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.SYNTHESE_NOTES
),
TABLEAU_NOTES_ANNEE(
TemplateEliotEnum.TABLEAU_NOTES_ANNEE_A4,
TemplateTypeDonneeEnum.SYNTHESE_CLASSE_NOTES,
- TemplateTypeFonctionnaliteEnum.SYNTHESE_NOTES,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.SYNTHESE_NOTES
),
LETTRE_ADMIN_ABS(
TemplateEliotEnum.LETTRE_ADMIN_ABS,
TemplateTypeDonneeEnum.ELEVE_ABSENCES,
- TemplateTypeFonctionnaliteEnum.LETTRE_ABSENCES,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.LETTRE_ABSENCES
),
BREVET(
TemplateEliotEnum.BREVET,
TemplateTypeDonneeEnum.ELEVE_BREVET,
- TemplateTypeFonctionnaliteEnum.BREVET,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.BREVET
),
APPRECIATIONS(
TemplateEliotEnum.APPRECIATIONS,
TemplateTypeDonneeEnum.APPRECIATIONS,
- TemplateTypeFonctionnaliteEnum.APPRECIATIONS,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.APPRECIATIONS
+ ),
+
+ ARCHIVAGE(
+ TemplateEliotEnum.ARCHIVAGE,
+ TemplateTypeDonneeEnum.ARCHIVAGE,
+ TemplateTypeFonctionnaliteEnum.ARCHIVAGE
)
private Modeles() {}
private TemplateTypeFonctionnaliteEnum templateTypeFonctionnaliteEnum
- private Integer version
-
private Modeles modeles
private Modeles(TemplateEliotEnum templateEliotEnum,
TemplateTypeDonneeEnum templateTypeDonneeEnum,
TemplateTypeFonctionnaliteEnum templateTypeFonctionnaliteEnum,
- Integer version,
Modeles modeles = null) {
this.templateEliotEnum = templateEliotEnum
this.templateTypeDonneeEnum = templateTypeDonneeEnum
this.templateTypeFonctionnaliteEnum = templateTypeFonctionnaliteEnum
- this.version = version
this.modeles = modeles
}
templateTypeFonctionnaliteEnum
}
- public Integer getVersion() {
- this.version
- }
-
public Modeles getModeles() {
this.modeles
}
import org.lilie.services.eliot.impression.constantes.TemplateDocumentEnum
import org.lilie.services.eliot.impression.constantes.TemplateEliotEnum
+import org.lilie.services.eliot.impression.constantes.ConfigImpression
/**
* Modèles complets fourni d'origine
public enum ModelesUsine {
TABLEAU_NOTES(
- TemplateDocumentEnum.TABLEAU_NOTES_1,
- TemplateEliotEnum.TABLEAU_NOTES_A4,
- TemplateEliotEnum.TABLEAU_NOTES_TABLEAU,
- 30
+ TemplateDocumentEnum.TABLEAU_NOTES_1,
+ TemplateEliotEnum.TABLEAU_NOTES_A4,
+ [(ConfigImpression.PARAM_TABLEAU): TemplateEliotEnum.TABLEAU_NOTES_TABLEAU]
),
TABLEAU_NOTES_ANNEE(
- TemplateDocumentEnum.TABLEAU_NOTES_ANNEE,
- TemplateEliotEnum.TABLEAU_NOTES_ANNEE_A4,
- TemplateEliotEnum.TABLEAU_NOTES_ANNEE,
- 30
+ TemplateDocumentEnum.TABLEAU_NOTES_ANNEE,
+ TemplateEliotEnum.TABLEAU_NOTES_ANNEE_A4,
+ [(ConfigImpression.PARAM_TABLEAU): TemplateEliotEnum.TABLEAU_NOTES_ANNEE]
),
BULLETIN_NOTES(
- TemplateDocumentEnum.BULLETIN_NOTES_1,
- TemplateEliotEnum.BUL_NOTES_A4,
- TemplateEliotEnum.BUL_NOTES_TABLEAU,
- 30
-
+ TemplateDocumentEnum.BULLETIN_NOTES_1,
+ TemplateEliotEnum.BUL_NOTES_A4,
+ [(ConfigImpression.PARAM_TABLEAU): TemplateEliotEnum.BUL_NOTES_TABLEAU]
),
RELEVE_NOTES(
- TemplateDocumentEnum.RELEVE_NOTES_1,
- TemplateEliotEnum.REL_NOTES_A4,
- TemplateEliotEnum.REL_NOTES_TABLEAU,
- 30
+ TemplateDocumentEnum.RELEVE_NOTES_1,
+ TemplateEliotEnum.REL_NOTES_A4,
+ [(ConfigImpression.PARAM_TABLEAU): TemplateEliotEnum.REL_NOTES_TABLEAU]
),
SYNTHESE(
- TemplateDocumentEnum.SYNTHESE_1,
- TemplateEliotEnum.SYNTHESE_A4,
- TemplateEliotEnum.SYNTHESE_TABLEAU,
- 30
+ TemplateDocumentEnum.SYNTHESE_1,
+ TemplateEliotEnum.SYNTHESE_A4,
+ [(ConfigImpression.PARAM_TABLEAU): TemplateEliotEnum.SYNTHESE_TABLEAU]
),
APPRECIATIONS(
- TemplateDocumentEnum.APPRECIATIONS,
- TemplateEliotEnum.APPRECIATIONS,
- TemplateEliotEnum.APPRECIATIONS_TAB,
- 1
+ TemplateDocumentEnum.APPRECIATIONS,
+ TemplateEliotEnum.APPRECIATIONS,
+ [(ConfigImpression.PARAM_TABLEAU): TemplateEliotEnum.APPRECIATIONS_TAB]
+ ),
+ REGISTRE_APPELS(
+ TemplateDocumentEnum.REGISTRE_APPELS,
+ TemplateEliotEnum.ARCHIVAGE,
+ [(ConfigImpression.PARAM_TABLEAU): TemplateEliotEnum.REGISTRE_APPELS]
+ ),
+ SUIVI_ENVOIS_FAMILLES(
+ TemplateDocumentEnum.SUIVI_ENVOIS_FAMILLES,
+ TemplateEliotEnum.ARCHIVAGE,
+ [(ConfigImpression.PARAM_TABLEAU): TemplateEliotEnum.SUIVI_ENVOIS_FAMILLES]
+ ),
+ REGISTRE_PUNITIONS(
+ TemplateDocumentEnum.REGISTRE_PUNITIONS,
+ TemplateEliotEnum.ARCHIVAGE,
+ [(ConfigImpression.PARAM_TABLEAU): TemplateEliotEnum.REGISTRE_PUNITIONS]
+ ),
+ REGISTRE_SANCTIONS(
+ TemplateDocumentEnum.REGISTRE_SANCTIONS,
+ TemplateEliotEnum.ARCHIVAGE,
+ [(ConfigImpression.PARAM_TABLEAU): TemplateEliotEnum.REGISTRE_SANCTIONS]
+ ),
+ TABLEAU_DE_BORD(
+ TemplateDocumentEnum.TABLEAU_DE_BORD,
+ TemplateEliotEnum.ARCHIVAGE,
+ [(ConfigImpression.PARAM_TABLEAU): TemplateEliotEnum.TABLEAU_DE_BORD,
+ "total":TemplateEliotEnum.TABLEAU_DE_BORD_TOTAL]
+ ),
+ STATS_MENSUELLES_VOLUME(
+ TemplateDocumentEnum.STATS_MENSUELLES_VOLUME,
+ TemplateEliotEnum.ARCHIVAGE,
+ [(ConfigImpression.PARAM_TABLEAU): TemplateEliotEnum.STATS_MENSUELLES_VOLUME,
+ "total":TemplateEliotEnum.STATS_MENSUELLES_VOLUME_TOTAL]
+ ),
+ STATS_MENSUELLES_POURCENT(
+ TemplateDocumentEnum.STATS_MENSUELLES_POURCENT,
+ TemplateEliotEnum.ARCHIVAGE,
+ [(ConfigImpression.PARAM_TABLEAU): TemplateEliotEnum.STATS_MENSUELLES_POURCENT,
+ "total":TemplateEliotEnum.STATS_MENSUELLES_POURCENT_TOTAL]
)
private TemplateDocumentEnum templateDocumentEnum
private TemplateEliotEnum feuille
- private TemplateEliotEnum sousModele
- private Integer version
+ private Map sousModele
private ModelesUsine() {}
private ModelesUsine(TemplateDocumentEnum templateDocumentEnum,
TemplateEliotEnum feuille,
- TemplateEliotEnum sousModele,
- Integer version) {
+ Map sousModele
+ ) {
this.templateDocumentEnum = templateDocumentEnum
this.feuille = feuille
this.sousModele = sousModele
- this.version = version
}
public TemplateEliotEnum getFeuille() {
this.feuille
}
- public TemplateEliotEnum getSousModele() {
+ public Map getSousModele() {
this.sousModele
}
this.templateDocumentEnum
}
- public Integer getVersion() {
- this.version
- }
-
-
}
\ No newline at end of file
TemplateEliotEnum.BUL_NOTES_LIG_MATIERES,
null,
TemplateTypeDonneeEnum.ELEVE_NOTES,
- TemplateTypeFonctionnaliteEnum.BULLETIN_NOTES,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.BULLETIN_NOTES
),
RELEVE_NOTES(
TemplateEliotEnum.REL_NOTES_LIG_MATIERES,
TemplateEliotEnum.REL_NOTES_LIG_SOUS_MATIERES,
TemplateTypeDonneeEnum.ELEVE_NOTES,
- TemplateTypeFonctionnaliteEnum.RELEVE_NOTES,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.RELEVE_NOTES
),
SYNTHESE(
null,
null,
TemplateTypeDonneeEnum.ELEVE_NOTES,
- TemplateTypeFonctionnaliteEnum.SYNTHESE_NOTES,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.SYNTHESE_NOTES
),
TABLEAU_NOTES(
null,
null,
TemplateTypeDonneeEnum.ELEVE_NOTES,
- TemplateTypeFonctionnaliteEnum.SYNTHESE_NOTES,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.SYNTHESE_NOTES
),
TABLEAU_NOTES_ANNEE(
TemplateEliotEnum.TABLEAU_NOTES_ANNEE,
null,
null,
TemplateTypeDonneeEnum.ELEVE_NOTES,
- TemplateTypeFonctionnaliteEnum.SYNTHESE_NOTES,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.SYNTHESE_NOTES
),
ABS_TABLEAU_1(
TemplateEliotEnum.LETTRE_ABS_TAB_ABSENCES_1,
null,
null,
TemplateTypeDonneeEnum.ELEVE_ABSENCES,
- TemplateTypeFonctionnaliteEnum.LETTRE_ABSENCES,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.LETTRE_ABSENCES
),
ABS_TABLEAU_2(
null,
null,
TemplateTypeDonneeEnum.ELEVE_ABSENCES,
- TemplateTypeFonctionnaliteEnum.LETTRE_ABSENCES,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.LETTRE_ABSENCES
),
RET_TABLEAU_1(
null,
null,
TemplateTypeDonneeEnum.ELEVE_RETARDS,
- TemplateTypeFonctionnaliteEnum.LETTRE_RETARDS,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.LETTRE_RETARDS
),
RET_TABLEAU_2(
null,
null,
TemplateTypeDonneeEnum.ELEVE_RETARDS,
- TemplateTypeFonctionnaliteEnum.LETTRE_RETARDS,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.LETTRE_RETARDS
),
BREVET_AVEC_COMP(
TemplateEliotEnum.BREVET_AVEC_COMP,
null,
null,
TemplateTypeDonneeEnum.ELEVE_BREVET,
- TemplateTypeFonctionnaliteEnum.BREVET,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.BREVET
),
BREVET_SANS_COMP(
null,
null,
TemplateTypeDonneeEnum.ELEVE_BREVET,
- TemplateTypeFonctionnaliteEnum.BREVET,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.BREVET
),
APPRECIATIONS(
TemplateEliotEnum.APPRECIATIONS_TAB,
null,
null,
TemplateTypeDonneeEnum.ELEVE_NOTES,
- TemplateTypeFonctionnaliteEnum.GENERAL,
- VersionModele.VERSION
+ TemplateTypeFonctionnaliteEnum.GENERAL
+ ),
+ REGISTRE_APPELS(
+ TemplateEliotEnum.REGISTRE_APPELS,
+ null,
+ null,
+ TemplateTypeDonneeEnum.ARCHIVAGE,
+ TemplateTypeFonctionnaliteEnum.ARCHIVAGE
+ ),
+ SUIVI_ENVOIS_FAMILLES(
+ TemplateEliotEnum.SUIVI_ENVOIS_FAMILLES,
+ null,
+ null,
+ TemplateTypeDonneeEnum.ARCHIVAGE,
+ TemplateTypeFonctionnaliteEnum.ARCHIVAGE
+ ),
+ REGISTRE_PUNITIONS(
+ TemplateEliotEnum.REGISTRE_PUNITIONS,
+ null,
+ null,
+ TemplateTypeDonneeEnum.ARCHIVAGE,
+ TemplateTypeFonctionnaliteEnum.ARCHIVAGE
+ ),
+ REGISTRE_SANCTIONS(
+ TemplateEliotEnum.REGISTRE_SANCTIONS,
+ null,
+ null,
+ TemplateTypeDonneeEnum.ARCHIVAGE,
+ TemplateTypeFonctionnaliteEnum.ARCHIVAGE
+ ),
+ TABLEAU_DE_BORD(
+ TemplateEliotEnum.TABLEAU_DE_BORD,
+ null,
+ null,
+ TemplateTypeDonneeEnum.ARCHIVAGE,
+ TemplateTypeFonctionnaliteEnum.ARCHIVAGE
+ ),
+ TABLEAU_DE_BORD_TOTAL(
+ TemplateEliotEnum.TABLEAU_DE_BORD_TOTAL,
+ null,
+ null,
+ TemplateTypeDonneeEnum.ARCHIVAGE,
+ TemplateTypeFonctionnaliteEnum.ARCHIVAGE
+ ),
+ STATS_MENSUELLES_VOLUME(
+ TemplateEliotEnum.STATS_MENSUELLES_VOLUME,
+ null,
+ null,
+ TemplateTypeDonneeEnum.ARCHIVAGE,
+ TemplateTypeFonctionnaliteEnum.ARCHIVAGE
+ ),
+ STATS_MENSUELLES_VOLUME_TOTAL(
+ TemplateEliotEnum.STATS_MENSUELLES_VOLUME_TOTAL,
+ null,
+ null,
+ TemplateTypeDonneeEnum.ARCHIVAGE,
+ TemplateTypeFonctionnaliteEnum.ARCHIVAGE
+ ),
+ STATS_MENSUELLES_POURCENT(
+ TemplateEliotEnum.STATS_MENSUELLES_POURCENT,
+ null,
+ null,
+ TemplateTypeDonneeEnum.ARCHIVAGE,
+ TemplateTypeFonctionnaliteEnum.ARCHIVAGE
+ ),
+ STATS_MENSUELLES_POURCENT_TOTAL(
+ TemplateEliotEnum.STATS_MENSUELLES_POURCENT_TOTAL,
+ null,
+ null,
+ TemplateTypeDonneeEnum.ARCHIVAGE,
+ TemplateTypeFonctionnaliteEnum.ARCHIVAGE
)
private TemplateEliotEnum niveau1
private TemplateEliotEnum niveau3
private TemplateTypeFonctionnaliteEnum templateTypeFonctionnaliteEnum
private TemplateTypeDonneeEnum templateTypeDonneeEnum
- private Integer version
private SousModeles() {}
TemplateEliotEnum niveau2,
TemplateEliotEnum niveau3,
TemplateTypeDonneeEnum templateTypeDonneeEnum,
- TemplateTypeFonctionnaliteEnum templateTypeFonctionnaliteEnum,
- Integer version
+ TemplateTypeFonctionnaliteEnum templateTypeFonctionnaliteEnum
) {
this.niveau1 = niveau1
this.niveau2 = niveau2
this.niveau3 = niveau3
this.templateTypeFonctionnaliteEnum = templateTypeFonctionnaliteEnum
this.templateTypeDonneeEnum = templateTypeDonneeEnum
- this.version = version
}
public TemplateEliotEnum getNiveau1() {
this.templateTypeFonctionnaliteEnum
}
- public Integer getVersion() {
- this.version
- }
-
}
+++ /dev/null
-/*
- * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
- * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
- *
- * Lilie is free software. You can redistribute it and/or modify since
- * you respect the terms of either (at least one of the both license) :
- * - under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- * - the CeCILL-C as published by CeCILL-C; either version 1 of the
- * License, or any later version
- *
- * There are special exceptions to the terms and conditions of the
- * licenses as they are applied to this software. View the full text of
- * the exception in file LICENSE.txt in the directory of this software
- * distribution.
- *
- * Lilie is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * Licenses for more details.
- *
- * You should have received a copy of the GNU General Public License
- * and the CeCILL-C along with Lilie. If not, see :
- * <http://www.gnu.org/licenses/> and
- * <http://www.cecill.info/licences.fr.html>.
- */
-
-package org.lilie.services.eliot.scolarite.impression.importmodeles.donnees
-
-/**
- * @deprecated
- */
-class VersionModele {
- public final static Integer VERSION = 180
-}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="archivage" language="groovy" pageWidth="842" pageHeight="595" orientation="Landscape" whenNoDataType="BlankPage" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="1e4e4532-f993-4b19-8ef1-8cd6ce160e83">
+ <property name="ireport.zoom" value="1.5"/>
+ <property name="ireport.x" value="0"/>
+ <property name="ireport.y" value="0"/>
+ <property name="ireport.callouts" value="##Tue Mar 11 15:41:52 CET 2014"/>
+ <style name="titre_document" hAlign="Center" fontName="Arial" fontSize="18"/>
+ <style name="label" hAlign="Left" fontName="Arial" fontSize="10"/>
+ <style name="valeur_champ" fontName="Arial" fontSize="10"/>
+ <parameter name="tableau" class="java.lang.Object" isForPrompting="false"/>
+ <parameter name="json" class="java.util.List" isForPrompting="false"/>
+ <parameter name="titre" class="java.lang.String" isForPrompting="false"/>
+ <parameter name="classe" class="java.lang.String" isForPrompting="false"/>
+ <parameter name="dateDebut" class="java.lang.String" isForPrompting="false"/>
+ <parameter name="dateFin" class="java.lang.String" isForPrompting="false"/>
+ <parameter name="etablissement" class="java.lang.String" isForPrompting="false"/>
+ <parameter name="total" class="java.lang.Object" isForPrompting="false"/>
+ <field name="classe" class="java.lang.String"/>
+ <field name="periode" class="java.lang.String"/>
+ <field name="etablissement" class="java.lang.Integer"/>
+ <variable name="currentPage" class="java.lang.Integer" resetType="None">
+ <variableExpression><![CDATA[$V{currentPage}==null?0:$V{currentPage}+1]]></variableExpression>
+ <initialValueExpression><![CDATA[0]]></initialValueExpression>
+ </variable>
+ <pageHeader>
+ <band height="36">
+ <textField isStretchWithOverflow="true">
+ <reportElement uuid="1ec0bec7-d26c-4e34-8942-db8fbfdc2e92" style="valeur_champ" stretchType="RelativeToBandHeight" x="134" y="10" width="97" height="20">
+ <printWhenExpression><![CDATA[$F{classe}.trim().length()>0]]></printWhenExpression>
+ </reportElement>
+ <textElement>
+ <font fontName="Arial" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA["Classe : "+$P{classe}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="5d8f8808-d0a9-4f4e-a262-a23d1e2da2c1" x="0" y="10" width="118" height="20"/>
+ <textElement>
+ <font fontName="Arial" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$P{etablissement}]]></textFieldExpression>
+ </textField>
+ <textField isStretchWithOverflow="true">
+ <reportElement uuid="66cab38d-b735-43f5-a858-8ab3f627a94e" style="valeur_champ" stretchType="RelativeToBandHeight" x="0" y="10" width="802" height="20"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA["Période du "+$P{dateDebut}+" au "+$P{dateFin}]]></textFieldExpression>
+ </textField>
+ <textField isStretchWithOverflow="true">
+ <reportElement uuid="d3e60eb4-11c4-4f79-ae76-6c18bb19bcdf" style="valeur_champ" stretchType="RelativeToBandHeight" x="578" y="0" width="223" height="20"/>
+ <textElement textAlignment="Right">
+ <font fontName="Arial" isBold="true" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$P{titre}]]></textFieldExpression>
+ </textField>
+ </band>
+ </pageHeader>
+ <detail>
+ <band height="50">
+ <subreport>
+ <reportElement uuid="2ec616e7-6854-4bcb-881d-2ce1b4b1eebd" x="0" y="0" width="802" height="50"/>
+ <subreportParameter name="total">
+ <subreportParameterExpression><![CDATA[$P{total}]]></subreportParameterExpression>
+ </subreportParameter>
+ <subreportParameter name="json">
+ <subreportParameterExpression><![CDATA[$P{json}.size()==2?$P{json}[1]:null]]></subreportParameterExpression>
+ </subreportParameter>
+ <dataSourceExpression><![CDATA[$P{json}[0]]]></dataSourceExpression>
+ <subreportExpression><![CDATA[$P{tableau}]]></subreportExpression>
+ </subreport>
+ </band>
+ </detail>
+ <pageFooter>
+ <band height="31">
+ <textField pattern="">
+ <reportElement uuid="61095707-e0a6-4cae-a63d-b07400527221" x="644" y="5" width="157" height="20"/>
+ <textElement textAlignment="Right">
+ <font fontName="Arial" size="6" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[(
+ new SimpleDateFormat(
+ "EEEEE dd MMMMM yyyy",
+ Locale.FRANCE
+ )
+).format(new java.util.Date())]]></textFieldExpression>
+ </textField>
+ <textField evaluationTime="Auto">
+ <reportElement uuid="32539178-ddea-41bd-b5a5-e6faaf140c07" x="0" y="11" width="290" height="14"/>
+ <textElement>
+ <font fontName="Arial" size="6" isBold="false"/>
+ </textElement>
+ <textFieldExpression><![CDATA[msg("Page {0} / {1}", $V{currentPage}, $V{PAGE_NUMBER})]]></textFieldExpression>
+ </textField>
+ </band>
+ </pageFooter>
+</jasperReport>
<?xml version="1.0" encoding="UTF-8"?>
-<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="proto" language="groovy" pageWidth="842" pageHeight="595" orientation="Landscape" whenNoDataType="BlankPage" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
+<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="proto" language="groovy" pageWidth="842" pageHeight="595" orientation="Landscape" whenNoDataType="BlankPage" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="521772db-93cb-4e66-805f-f55a83a321df">
<property name="ireport.zoom" value="1.5"/>
<property name="ireport.x" value="124"/>
<property name="ireport.y" value="0"/>
<pageHeader>
<band height="40">
<textField isStretchWithOverflow="true">
- <reportElement style="valeur_champ" stretchType="RelativeToBandHeight" x="198" y="10" width="97" height="20"/>
+ <reportElement uuid="9b5ceb71-8366-43ab-8173-3c3ac693dd06" style="valeur_champ" stretchType="RelativeToBandHeight" x="198" y="10" width="97" height="20"/>
<textElement>
<font fontName="Arial" isPdfEmbedded="true"/>
</textElement>
- <textFieldExpression class="java.lang.String"><![CDATA[$F{classe}]]></textFieldExpression>
+ <textFieldExpression><![CDATA[$F{classe}]]></textFieldExpression>
</textField>
<textField>
- <reportElement x="9" y="10" width="137" height="20"/>
+ <reportElement uuid="891cf000-31dc-4858-8b29-9d73403d98be" x="9" y="10" width="137" height="20"/>
<textElement>
<font fontName="Arial" isPdfEmbedded="true"/>
</textElement>
- <textFieldExpression class="java.lang.String"><![CDATA[$F{etablissement}]]></textFieldExpression>
+ <textFieldExpression><![CDATA[$F{etablissement}]]></textFieldExpression>
</textField>
<staticText>
- <reportElement style="label" x="295" y="10" width="66" height="20"/>
+ <reportElement uuid="69076d29-d922-4e19-8c39-27e507ba9422" style="label" x="295" y="10" width="66" height="20"/>
<textElement textAlignment="Right">
<font fontName="Arial" isPdfEmbedded="true"/>
</textElement>
<text><![CDATA[Période : ]]></text>
</staticText>
<staticText>
- <reportElement style="label" x="146" y="10" width="52" height="20"/>
+ <reportElement uuid="dbaa0f4a-2966-4c37-bd92-59fb467a560e" style="label" x="146" y="10" width="52" height="20"/>
<textElement textAlignment="Right">
<font fontName="Arial" isPdfEmbedded="true"/>
</textElement>
<text><![CDATA[Classe : ]]></text>
</staticText>
<staticText>
- <reportElement style="titre_document" x="599" y="0" width="202" height="30"/>
+ <reportElement uuid="10a9a34d-feda-4f54-ba73-e1b908bffb3c" style="titre_document" x="599" y="0" width="202" height="30"/>
<textElement>
<font fontName="Arial" size="12" isPdfEmbedded="true"/>
</textElement>
<text><![CDATA[Synthèse]]></text>
</staticText>
<textField isStretchWithOverflow="true">
- <reportElement style="valeur_champ" stretchType="RelativeToBandHeight" x="361" y="10" width="124" height="20"/>
+ <reportElement uuid="4bbea895-2d92-4fcc-b24d-19e34f2034c0" style="valeur_champ" stretchType="RelativeToBandHeight" x="361" y="10" width="124" height="20"/>
<textElement>
<font fontName="Arial" isPdfEmbedded="true"/>
</textElement>
- <textFieldExpression class="java.lang.String"><![CDATA[$F{periode}]]></textFieldExpression>
+ <textFieldExpression><![CDATA[$F{periode}]]></textFieldExpression>
</textField>
</band>
</pageHeader>
<detail>
<band height="50">
<subreport>
- <reportElement x="0" y="0" width="802" height="50"/>
+ <reportElement uuid="8d3796c9-810c-42aa-ab29-c1e72fea30ed" x="0" y="0" width="802" height="50"/>
<subreportParameter name="options">
<subreportParameterExpression><![CDATA[$P{options}]]></subreportParameterExpression>
</subreportParameter>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{data})]]></dataSourceExpression>
- <subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA[$P{tableau}]]></subreportExpression>
+ <subreportExpression><![CDATA[$P{tableau}]]></subreportExpression>
</subreport>
</band>
</detail>
<pageFooter>
<band height="31">
<textField>
- <reportElement x="9" y="10" width="80" height="20"/>
+ <reportElement uuid="2a5350df-afe0-4fc1-9c6b-277a4669080c" x="9" y="10" width="80" height="20"/>
<textElement textAlignment="Right">
<font fontName="Arial" size="6" isPdfEmbedded="true"/>
</textElement>
- <textFieldExpression class="java.lang.String"><![CDATA["Page "+$V{PAGE_NUMBER}+" sur"]]></textFieldExpression>
+ <textFieldExpression><![CDATA["Page "+$V{PAGE_NUMBER}+" sur"]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
- <reportElement x="89" y="10" width="40" height="20"/>
+ <reportElement uuid="1532cd13-c449-4af1-bf52-64a59f77fc6b" x="89" y="10" width="40" height="20"/>
<textElement>
<font fontName="Arial" size="6" isPdfEmbedded="true"/>
</textElement>
- <textFieldExpression class="java.lang.String"><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
+ <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<textField pattern="">
- <reportElement x="551" y="11" width="250" height="20"/>
+ <reportElement uuid="b5bcbe8c-1ffe-412e-ab6b-176ec8f81c2b" x="551" y="11" width="250" height="20"/>
<textElement textAlignment="Right">
<font fontName="Arial" size="6" isPdfEmbedded="true"/>
</textElement>
- <textFieldExpression class="java.lang.String"><![CDATA[(
+ <textFieldExpression><![CDATA[(
new SimpleDateFormat(
"EEEEE dd MMMMM yyyy",
Locale.FRANCE
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="RegistreAppel" pageWidth="842" pageHeight="500" columnWidth="842" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="a894078a-929b-4aae-a1d0-46485f0f8835">
+ <property name="ireport.zoom" value="3.0"/>
+ <property name="ireport.x" value="0"/>
+ <property name="ireport.y" value="0"/>
+ <style name="cellule" mode="Transparent">
+ <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1">
+ <topPen lineWidth="0.25"/>
+ <leftPen lineWidth="0.25"/>
+ <bottomPen lineWidth="0.25"/>
+ <rightPen lineWidth="0.25"/>
+ </box>
+ </style>
+ <queryString language="json">
+ <![CDATA[]]>
+ </queryString>
+ <field name="date" class="java.lang.String">
+ <fieldDescription><![CDATA[date]]></fieldDescription>
+ </field>
+ <field name="heure" class="java.lang.String">
+ <fieldDescription><![CDATA[heure]]></fieldDescription>
+ </field>
+ <field name="nomPrenom" class="java.lang.String">
+ <fieldDescription><![CDATA[nomPrenom]]></fieldDescription>
+ </field>
+ <field name="division" class="java.lang.String">
+ <fieldDescription><![CDATA[division]]></fieldDescription>
+ </field>
+ <field name="type" class="java.lang.String">
+ <fieldDescription><![CDATA[type]]></fieldDescription>
+ </field>
+ <field name="grpMotif" class="java.lang.String">
+ <fieldDescription><![CDATA[grpMotif]]></fieldDescription>
+ </field>
+ <field name="motif" class="java.lang.String">
+ <fieldDescription><![CDATA[motif]]></fieldDescription>
+ </field>
+ <field name="nomAppelant" class="java.lang.String">
+ <fieldDescription><![CDATA[nomAppelant]]></fieldDescription>
+ </field>
+ <field name="profilAppelant" class="java.lang.String">
+ <fieldDescription><![CDATA[profilAppelant]]></fieldDescription>
+ </field>
+ <columnHeader>
+ <band height="12">
+ <staticText>
+ <reportElement uuid="dc406057-b0ba-45aa-950b-b8b168cf0e59" style="cellule" x="0" y="0" width="58" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Date]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="9a77313b-6bb0-4c93-b210-bd7a4d6d88f2" style="cellule" x="58" y="0" width="82" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Heure]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="96ce8af5-62d7-4122-8e0e-c798d202b8a2" style="cellule" x="140" y="0" width="144" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Nom prénom]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="fb84fda3-9ea9-422e-b3af-896a528c038f" style="cellule" x="284" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Classe]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="cb041e2f-407d-4720-9b0c-8cbfe3e9b053" style="cellule" x="327" y="0" width="92" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Type]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="2a837673-3e28-4d86-bbb4-63097a01aa92" style="cellule" x="419" y="0" width="111" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Groupe de motifs]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="31f92d62-d318-4b6e-8d82-dd7355c87bb6" style="cellule" x="530" y="0" width="106" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Motif]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="a5a17361-05bb-4994-84d8-6861c33b4290" style="cellule" x="636" y="0" width="78" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Appel]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="7926a339-c114-4bda-a61e-0cc2ffeefe8e" style="cellule" x="714" y="0" width="70" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Profil]]></text>
+ </staticText>
+ </band>
+ </columnHeader>
+ <detail>
+ <band height="12">
+ <textField>
+ <reportElement uuid="076faf05-2c8e-4f33-be6b-2f3c57fffdd5" style="cellule" mode="Opaque" x="140" y="0" width="144" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{nomPrenom}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="15d28d7f-389a-4d2b-9d76-b019a05beb09" style="cellule" mode="Opaque" x="0" y="0" width="58" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{date}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="92f55578-4d6b-443e-bcef-cede329acf61" style="cellule" mode="Opaque" x="58" y="0" width="82" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{heure}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="947b44a6-178a-4bd9-8d86-eff2975f868d" style="cellule" mode="Opaque" x="284" y="0" width="43" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{division}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="25db4d8e-89e4-428d-b8b8-aef799a0f8f0" style="cellule" x="327" y="0" width="92" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{type}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="f54f73d7-3642-4e74-9f4c-070219415270" style="cellule" x="419" y="0" width="111" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{grpMotif}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="7605ee1e-bfb6-464c-87f3-e8a798b087bb" style="cellule" x="530" y="0" width="106" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{motif}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="e5fe0b73-86a7-43f8-96de-a75f77d25bf9" style="cellule" x="636" y="0" width="78" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{nomAppelant}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="ddd873ae-ae05-48ed-a2c0-520739726f44" style="cellule" x="714" y="0" width="70" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{profilAppelant}]]></textFieldExpression>
+ </textField>
+ </band>
+ </detail>
+</jasperReport>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="RegistreAppel" pageWidth="842" pageHeight="500" columnWidth="842" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="a894078a-929b-4aae-a1d0-46485f0f8835">
+ <property name="ireport.zoom" value="3.0"/>
+ <property name="ireport.x" value="81"/>
+ <property name="ireport.y" value="0"/>
+ <style name="cellule" mode="Transparent">
+ <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1">
+ <topPen lineWidth="0.25"/>
+ <leftPen lineWidth="0.25"/>
+ <bottomPen lineWidth="0.25"/>
+ <rightPen lineWidth="0.25"/>
+ </box>
+ </style>
+ <queryString language="json">
+ <![CDATA[]]>
+ </queryString>
+ <field name="date" class="java.lang.String">
+ <fieldDescription><![CDATA[date]]></fieldDescription>
+ </field>
+ <field name="nomAffichage" class="java.lang.String">
+ <fieldDescription><![CDATA[nomAffichage]]></fieldDescription>
+ </field>
+ <field name="classe" class="java.lang.String">
+ <fieldDescription><![CDATA[classe]]></fieldDescription>
+ </field>
+ <field name="type" class="java.lang.String">
+ <fieldDescription><![CDATA[type]]></fieldDescription>
+ </field>
+ <field name="censeur" class="java.lang.String">
+ <fieldDescription><![CDATA[censeur]]></fieldDescription>
+ </field>
+ <field name="statut" class="java.lang.String">
+ <fieldDescription><![CDATA[statut]]></fieldDescription>
+ </field>
+ <field name="description" class="java.lang.String">
+ <fieldDescription><![CDATA[description]]></fieldDescription>
+ </field>
+ <field name="typeIncident" class="java.lang.String">
+ <fieldDescription><![CDATA[typeIncident]]></fieldDescription>
+ </field>
+ <columnHeader>
+ <band height="12">
+ <staticText>
+ <reportElement uuid="dc406057-b0ba-45aa-950b-b8b168cf0e59" style="cellule" x="0" y="0" width="58" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Date]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="9a77313b-6bb0-4c93-b210-bd7a4d6d88f2" style="cellule" x="58" y="0" width="82" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Nom Prénom]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="96ce8af5-62d7-4122-8e0e-c798d202b8a2" style="cellule" x="140" y="0" width="100" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Classe]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="fb84fda3-9ea9-422e-b3af-896a528c038f" style="cellule" x="240" y="0" width="87" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Type]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="cb041e2f-407d-4720-9b0c-8cbfe3e9b053" style="cellule" x="327" y="0" width="92" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Responsable]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="2a837673-3e28-4d86-bbb4-63097a01aa92" style="cellule" x="419" y="0" width="111" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Statut]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="31f92d62-d318-4b6e-8d82-dd7355c87bb6" style="cellule" x="530" y="0" width="194" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Description]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="a5a17361-05bb-4994-84d8-6861c33b4290" style="cellule" x="724" y="0" width="78" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Incident]]></text>
+ </staticText>
+ </band>
+ </columnHeader>
+ <detail>
+ <band height="12">
+ <textField>
+ <reportElement uuid="076faf05-2c8e-4f33-be6b-2f3c57fffdd5" style="cellule" mode="Opaque" x="140" y="0" width="100" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{classe}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="15d28d7f-389a-4d2b-9d76-b019a05beb09" style="cellule" mode="Opaque" x="0" y="0" width="58" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{date}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="92f55578-4d6b-443e-bcef-cede329acf61" style="cellule" mode="Opaque" x="58" y="0" width="82" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{nomAffichage}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="947b44a6-178a-4bd9-8d86-eff2975f868d" style="cellule" mode="Opaque" x="240" y="0" width="87" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{type}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="25db4d8e-89e4-428d-b8b8-aef799a0f8f0" style="cellule" x="327" y="0" width="92" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{censeur}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="f54f73d7-3642-4e74-9f4c-070219415270" style="cellule" x="419" y="0" width="111" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{statut}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="7605ee1e-bfb6-464c-87f3-e8a798b087bb" style="cellule" x="530" y="0" width="194" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{description}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="e5fe0b73-86a7-43f8-96de-a75f77d25bf9" style="cellule" x="724" y="0" width="78" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{typeIncident}]]></textFieldExpression>
+ </textField>
+ </band>
+ </detail>
+</jasperReport>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="RegistreAppel" pageWidth="842" pageHeight="500" columnWidth="842" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="a894078a-929b-4aae-a1d0-46485f0f8835">
+ <property name="ireport.zoom" value="3.0"/>
+ <property name="ireport.x" value="1436"/>
+ <property name="ireport.y" value="0"/>
+ <style name="cellule" mode="Transparent">
+ <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1">
+ <topPen lineWidth="0.25"/>
+ <leftPen lineWidth="0.25"/>
+ <bottomPen lineWidth="0.25"/>
+ <rightPen lineWidth="0.25"/>
+ </box>
+ </style>
+ <queryString language="json">
+ <![CDATA[]]>
+ </queryString>
+ <field name="date" class="java.lang.String">
+ <fieldDescription><![CDATA[date]]></fieldDescription>
+ </field>
+ <field name="nomAffichage" class="java.lang.String">
+ <fieldDescription><![CDATA[nomAffichage]]></fieldDescription>
+ </field>
+ <field name="classe" class="java.lang.String">
+ <fieldDescription><![CDATA[classe]]></fieldDescription>
+ </field>
+ <field name="type" class="java.lang.String">
+ <fieldDescription><![CDATA[type]]></fieldDescription>
+ </field>
+ <field name="censeur" class="java.lang.String">
+ <fieldDescription><![CDATA[censeur]]></fieldDescription>
+ </field>
+ <field name="statut" class="java.lang.String">
+ <fieldDescription><![CDATA[statut]]></fieldDescription>
+ </field>
+ <field name="description" class="java.lang.String">
+ <fieldDescription><![CDATA[description]]></fieldDescription>
+ </field>
+ <field name="debutAbsence" class="java.lang.String">
+ <fieldDescription><![CDATA[debutAbsence]]></fieldDescription>
+ </field>
+ <field name="finAbsence" class="java.lang.String">
+ <fieldDescription><![CDATA[finAbsence]]></fieldDescription>
+ </field>
+ <field name="typeIncident" class="java.lang.String">
+ <fieldDescription><![CDATA[typeIncident]]></fieldDescription>
+ </field>
+ <columnHeader>
+ <band height="12">
+ <staticText>
+ <reportElement uuid="dc406057-b0ba-45aa-950b-b8b168cf0e59" style="cellule" x="0" y="0" width="58" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Date]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="9a77313b-6bb0-4c93-b210-bd7a4d6d88f2" style="cellule" x="58" y="0" width="80" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Type]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="96ce8af5-62d7-4122-8e0e-c798d202b8a2" style="cellule" x="138" y="0" width="144" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Nom prénom]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="fb84fda3-9ea9-422e-b3af-896a528c038f" style="cellule" x="282" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Classe]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="cb041e2f-407d-4720-9b0c-8cbfe3e9b053" style="cellule" x="325" y="0" width="92" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Responsable]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="2a837673-3e28-4d86-bbb4-63097a01aa92" style="cellule" x="417" y="0" width="80" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Statut]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="31f92d62-d318-4b6e-8d82-dd7355c87bb6" style="cellule" x="497" y="0" width="106" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Description]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="a5a17361-05bb-4994-84d8-6861c33b4290" style="cellule" x="603" y="0" width="60" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Début Absence]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="7926a339-c114-4bda-a61e-0cc2ffeefe8e" style="cellule" x="663" y="0" width="54" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Fin Absence]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="fb9ecd42-8509-427b-809b-ca2951c651e4" style="cellule" x="717" y="0" width="81" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Type Incident]]></text>
+ </staticText>
+ </band>
+ </columnHeader>
+ <detail>
+ <band height="12">
+ <textField>
+ <reportElement uuid="076faf05-2c8e-4f33-be6b-2f3c57fffdd5" style="cellule" mode="Opaque" x="138" y="0" width="144" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{nomAffichage}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="15d28d7f-389a-4d2b-9d76-b019a05beb09" style="cellule" mode="Opaque" x="0" y="0" width="58" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{date}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="92f55578-4d6b-443e-bcef-cede329acf61" style="cellule" mode="Opaque" x="58" y="0" width="80" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{type}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="947b44a6-178a-4bd9-8d86-eff2975f868d" style="cellule" mode="Opaque" x="282" y="0" width="43" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{classe}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="25db4d8e-89e4-428d-b8b8-aef799a0f8f0" style="cellule" x="325" y="0" width="92" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{censeur}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="f54f73d7-3642-4e74-9f4c-070219415270" style="cellule" x="417" y="0" width="80" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{statut}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="7605ee1e-bfb6-464c-87f3-e8a798b087bb" style="cellule" x="497" y="0" width="106" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{description}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="e5fe0b73-86a7-43f8-96de-a75f77d25bf9" style="cellule" x="603" y="0" width="60" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{debutAbsence}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="ddd873ae-ae05-48ed-a2c0-520739726f44" style="cellule" x="663" y="0" width="54" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{finAbsence}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="b8e7ab2d-0c19-41e5-a7da-c1e74ab2f503" style="cellule" x="717" y="0" width="81" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{typeIncident}]]></textFieldExpression>
+ </textField>
+ </band>
+ </detail>
+</jasperReport>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="RegistreAppel" pageWidth="842" pageHeight="500" columnWidth="842" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="a894078a-929b-4aae-a1d0-46485f0f8835">
+ <property name="ireport.zoom" value="3.0"/>
+ <property name="ireport.x" value="0"/>
+ <property name="ireport.y" value="0"/>
+ <style name="cellule" mode="Transparent">
+ <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1">
+ <topPen lineWidth="0.25"/>
+ <leftPen lineWidth="0.25"/>
+ <bottomPen lineWidth="0.25"/>
+ <rightPen lineWidth="0.25"/>
+ </box>
+ </style>
+ <parameter name="json" class="java.lang.Object"/>
+ <parameter name="total" class="java.lang.Object"/>
+ <queryString language="json">
+ <![CDATA[]]>
+ </queryString>
+ <field name="classe" class="java.lang.String">
+ <fieldDescription><![CDATA[classe]]></fieldDescription>
+ </field>
+ <field name="nomPrenom" class="java.lang.String">
+ <fieldDescription><![CDATA[nomPrenom]]></fieldDescription>
+ </field>
+ <field name="total" class="java.lang.String">
+ <fieldDescription><![CDATA[total]]></fieldDescription>
+ </field>
+ <field name="AOUT" class="java.lang.String">
+ <fieldDescription><![CDATA[AOUT]]></fieldDescription>
+ </field>
+ <field name="SEPTEMBRE" class="java.lang.String">
+ <fieldDescription><![CDATA[SEPTEMBRE]]></fieldDescription>
+ </field>
+ <field name="OCTOBRE" class="java.lang.String">
+ <fieldDescription><![CDATA[OCTOBRE]]></fieldDescription>
+ </field>
+ <field name="NOVEMBRE" class="java.lang.String">
+ <fieldDescription><![CDATA[NOVEMBRE]]></fieldDescription>
+ </field>
+ <field name="DECEMBRE" class="java.lang.String">
+ <fieldDescription><![CDATA[DECEMBRE]]></fieldDescription>
+ </field>
+ <field name="JANVIER" class="java.lang.String">
+ <fieldDescription><![CDATA[JANVIER]]></fieldDescription>
+ </field>
+ <field name="FEVRIER" class="java.lang.String">
+ <fieldDescription><![CDATA[FEVRIER]]></fieldDescription>
+ </field>
+ <field name="MARS" class="java.lang.String">
+ <fieldDescription><![CDATA[MARS]]></fieldDescription>
+ </field>
+ <field name="AVRIL" class="java.lang.String">
+ <fieldDescription><![CDATA[AVRIL]]></fieldDescription>
+ </field>
+ <field name="MAI" class="java.lang.String">
+ <fieldDescription><![CDATA[MAI]]></fieldDescription>
+ </field>
+ <field name="JUIN" class="java.lang.String">
+ <fieldDescription><![CDATA[JUIN]]></fieldDescription>
+ </field>
+ <field name="JUILLET" class="java.lang.String">
+ <fieldDescription><![CDATA[JUILLET]]></fieldDescription>
+ </field>
+ <columnHeader>
+ <band height="12">
+ <staticText>
+ <reportElement uuid="dc406057-b0ba-45aa-950b-b8b168cf0e59" style="cellule" x="0" y="0" width="58" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Date]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="9a77313b-6bb0-4c93-b210-bd7a4d6d88f2" style="cellule" x="58" y="0" width="111" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Nom]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="7926a339-c114-4bda-a61e-0cc2ffeefe8e" style="cellule" x="685" y="0" width="115" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Total]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="62de88a8-aaf3-4fc1-b2a3-f57ff6027803" style="cellule" x="169" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Août]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="2852e3e5-65b4-4933-a276-cecf336f7fd3" style="cellule" x="212" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Septembre]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="9cf941af-bcee-4f55-a7da-524f89b01a46" style="cellule" x="255" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Octobre]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="f43342dd-d93e-42b0-9b3f-c0935ef9b057" style="cellule" x="298" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Novembre]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="1d1a60c1-ebb4-4bc7-9236-cb7a1ad4a349" style="cellule" x="341" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Décembre]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="25867574-d5dc-4abc-91de-7314e68e5dde" style="cellule" x="384" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Janvier]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="5f8cefc8-b6b6-4619-8c66-3750a9e2f38d" style="cellule" x="427" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Février]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="6e13cf06-dbb6-4528-924e-72003824ade6" style="cellule" x="470" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Mars]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="94ea7aac-c1de-4425-b7da-d27aa62469c3" style="cellule" x="513" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Avril]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="292f5608-1d4d-408a-b6ef-159eec3179a9" style="cellule" x="556" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Mai]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="5b354722-5165-4c89-b626-d5496170bade" style="cellule" x="599" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Juin]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="f850ddc3-8dbf-4df5-8237-7c689a673a68" style="cellule" x="642" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Juillet]]></text>
+ </staticText>
+ </band>
+ </columnHeader>
+ <detail>
+ <band height="12">
+ <textField>
+ <reportElement uuid="076faf05-2c8e-4f33-be6b-2f3c57fffdd5" style="cellule" mode="Opaque" x="169" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{AOUT}.equals("0")?"-":$F{AOUT}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="15d28d7f-389a-4d2b-9d76-b019a05beb09" style="cellule" mode="Opaque" x="0" y="0" width="58" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{classe}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="92f55578-4d6b-443e-bcef-cede329acf61" style="cellule" mode="Opaque" x="58" y="0" width="111" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{nomPrenom}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="ddd873ae-ae05-48ed-a2c0-520739726f44" style="cellule" x="685" y="0" width="115" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{total}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="0b3cd6d9-e853-49c6-8022-87a28a8f853d" style="cellule" mode="Opaque" x="212" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{SEPTEMBRE}.equals("0")?"-":$F{SEPTEMBRE}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="825d19ba-2076-4b42-b83f-aeff49907f21" style="cellule" mode="Opaque" x="255" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{OCTOBRE}.equals("0")?"-":$F{OCTOBRE}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="ffad29a2-b2a7-419d-9e9c-39b4ba0b895d" style="cellule" mode="Opaque" x="341" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{DECEMBRE}.equals("0")?"-":$F{DECEMBRE}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="6b4c43e8-f707-403c-8087-e3038bd239cf" style="cellule" mode="Opaque" x="384" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{JANVIER}.equals("0")?"-":$F{JANVIER}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="448cea47-179d-49d7-86ed-7d10ef6d6eb8" style="cellule" mode="Opaque" x="427" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{FEVRIER}.equals("0")?"-":$F{FEVRIER}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="1403d0ac-5616-42e7-821c-d315b865a044" style="cellule" mode="Opaque" x="470" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{MARS}.equals("0")?"-":$F{MARS}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="3e7e361a-50a6-407b-a072-088211d70241" style="cellule" mode="Opaque" x="513" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{AVRIL}.equals("0")?"-":$F{AVRIL}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="9cb68205-95dd-44a8-9fde-df3f821c01b2" style="cellule" mode="Opaque" x="556" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{MAI}.equals("0")?"-":$F{MAI}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="65b961f2-f5d8-4981-b717-9564b3a906aa" style="cellule" mode="Opaque" x="599" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{JUIN}.equals("0")?"-":$F{JUIN}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="b8a25a62-3873-4b10-a844-383d85488602" style="cellule" mode="Opaque" x="642" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{JUILLET}.equals("0")?"-":$F{JUILLET}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="c1434312-bc04-4adb-bfbb-18a11efcc31a" style="cellule" mode="Opaque" x="298" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{NOVEMBRE}.equals("0")?"-":$F{NOVEMBRE}+"%"]]></textFieldExpression>
+ </textField>
+ </band>
+ </detail>
+ <lastPageFooter>
+ <band height="30">
+ <subreport>
+ <reportElement uuid="70289c99-22d7-4bbd-a18a-a7e314e62296" x="0" y="0" width="800" height="30">
+ <printWhenExpression><![CDATA[$P{json}!=null]]></printWhenExpression>
+ </reportElement>
+ <dataSourceExpression><![CDATA[$P{json}]]></dataSourceExpression>
+ <subreportExpression><![CDATA[$P{total}]]></subreportExpression>
+ </subreport>
+ </band>
+ </lastPageFooter>
+</jasperReport>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="RegistreAppel" pageWidth="842" pageHeight="500" columnWidth="842" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="a894078a-929b-4aae-a1d0-46485f0f8835">
+ <property name="ireport.zoom" value="3.0"/>
+ <property name="ireport.x" value="613"/>
+ <property name="ireport.y" value="0"/>
+ <style name="cellule" mode="Transparent">
+ <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1">
+ <topPen lineWidth="0.25"/>
+ <leftPen lineWidth="0.25"/>
+ <bottomPen lineWidth="0.25"/>
+ <rightPen lineWidth="0.25"/>
+ </box>
+ </style>
+ <queryString language="json">
+ <![CDATA[]]>
+ </queryString>
+ <field name="classe" class="java.lang.String">
+ <fieldDescription><![CDATA[classe]]></fieldDescription>
+ </field>
+ <field name="nomPrenom" class="java.lang.String">
+ <fieldDescription><![CDATA[nomPrenom]]></fieldDescription>
+ </field>
+ <field name="total" class="java.lang.String">
+ <fieldDescription><![CDATA[total]]></fieldDescription>
+ </field>
+ <field name="AOUT" class="java.lang.String">
+ <fieldDescription><![CDATA[AOUT]]></fieldDescription>
+ </field>
+ <field name="SEPTEMBRE" class="java.lang.String">
+ <fieldDescription><![CDATA[SEPTEMBRE]]></fieldDescription>
+ </field>
+ <field name="OCTOBRE" class="java.lang.String">
+ <fieldDescription><![CDATA[OCTOBRE]]></fieldDescription>
+ </field>
+ <field name="NOVEMBRE" class="java.lang.String">
+ <fieldDescription><![CDATA[NOVEMBRE]]></fieldDescription>
+ </field>
+ <field name="DECEMBRE" class="java.lang.String">
+ <fieldDescription><![CDATA[DECEMBRE]]></fieldDescription>
+ </field>
+ <field name="JANVIER" class="java.lang.String">
+ <fieldDescription><![CDATA[JANVIER]]></fieldDescription>
+ </field>
+ <field name="FEVRIER" class="java.lang.String">
+ <fieldDescription><![CDATA[FEVRIER]]></fieldDescription>
+ </field>
+ <field name="MARS" class="java.lang.String">
+ <fieldDescription><![CDATA[MARS]]></fieldDescription>
+ </field>
+ <field name="AVRIL" class="java.lang.String">
+ <fieldDescription><![CDATA[AVRIL]]></fieldDescription>
+ </field>
+ <field name="MAI" class="java.lang.String">
+ <fieldDescription><![CDATA[MAI]]></fieldDescription>
+ </field>
+ <field name="JUIN" class="java.lang.String">
+ <fieldDescription><![CDATA[JUIN]]></fieldDescription>
+ </field>
+ <field name="JUILLET" class="java.lang.String">
+ <fieldDescription><![CDATA[JUILLET]]></fieldDescription>
+ </field>
+ <detail>
+ <band height="12">
+ <textField>
+ <reportElement uuid="076faf05-2c8e-4f33-be6b-2f3c57fffdd5" style="cellule" mode="Opaque" x="169" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{AOUT}.equals("0")?"-":$F{AOUT}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="15d28d7f-389a-4d2b-9d76-b019a05beb09" style="cellule" mode="Opaque" x="0" y="0" width="58" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA["Total ("+$F{nomPrenom}+")"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="92f55578-4d6b-443e-bcef-cede329acf61" style="cellule" mode="Opaque" x="58" y="0" width="111" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[""]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="ddd873ae-ae05-48ed-a2c0-520739726f44" style="cellule" x="685" y="0" width="115" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{total}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="0b3cd6d9-e853-49c6-8022-87a28a8f853d" style="cellule" mode="Opaque" x="212" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{SEPTEMBRE}.equals("0")?"-":$F{SEPTEMBRE}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="825d19ba-2076-4b42-b83f-aeff49907f21" style="cellule" mode="Opaque" x="255" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{OCTOBRE}.equals("0")?"-":$F{OCTOBRE}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="ffad29a2-b2a7-419d-9e9c-39b4ba0b895d" style="cellule" mode="Opaque" x="341" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{DECEMBRE}.equals("0")?"-":$F{DECEMBRE}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="6b4c43e8-f707-403c-8087-e3038bd239cf" style="cellule" mode="Opaque" x="384" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{JANVIER}.equals("0")?"-":$F{JANVIER}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="448cea47-179d-49d7-86ed-7d10ef6d6eb8" style="cellule" mode="Opaque" x="427" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{FEVRIER}.equals("0")?"-":$F{FEVRIER}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="1403d0ac-5616-42e7-821c-d315b865a044" style="cellule" mode="Opaque" x="470" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{MARS}.equals("0")?"-":$F{MARS}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="3e7e361a-50a6-407b-a072-088211d70241" style="cellule" mode="Opaque" x="513" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{AVRIL}.equals("0")?"-":$F{AVRIL}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="9cb68205-95dd-44a8-9fde-df3f821c01b2" style="cellule" mode="Opaque" x="556" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{MAI}.equals("0")?"-":$F{MAI}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="65b961f2-f5d8-4981-b717-9564b3a906aa" style="cellule" mode="Opaque" x="599" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{JUIN}.equals("0")?"-":$F{JUIN}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="b8a25a62-3873-4b10-a844-383d85488602" style="cellule" mode="Opaque" x="642" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{JUILLET}.equals("0")?"-":$F{JUILLET}+"%"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="c1434312-bc04-4adb-bfbb-18a11efcc31a" style="cellule" mode="Opaque" x="298" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{NOVEMBRE}.equals("0")?"-":$F{NOVEMBRE}+"%"]]></textFieldExpression>
+ </textField>
+ </band>
+ </detail>
+</jasperReport>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="RegistreAppel" pageWidth="842" pageHeight="500" columnWidth="842" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="a894078a-929b-4aae-a1d0-46485f0f8835">
+ <property name="ireport.zoom" value="3.0"/>
+ <property name="ireport.x" value="24"/>
+ <property name="ireport.y" value="0"/>
+ <style name="cellule" mode="Transparent">
+ <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1">
+ <topPen lineWidth="0.25"/>
+ <leftPen lineWidth="0.25"/>
+ <bottomPen lineWidth="0.25"/>
+ <rightPen lineWidth="0.25"/>
+ </box>
+ </style>
+ <parameter name="json" class="java.lang.Object" isForPrompting="false"/>
+ <parameter name="total" class="java.lang.Object" isForPrompting="false"/>
+ <queryString language="json">
+ <![CDATA[]]>
+ </queryString>
+ <field name="classe" class="java.lang.String">
+ <fieldDescription><![CDATA[classe]]></fieldDescription>
+ </field>
+ <field name="nomPrenom" class="java.lang.String">
+ <fieldDescription><![CDATA[nomPrenom]]></fieldDescription>
+ </field>
+ <field name="total" class="java.lang.String">
+ <fieldDescription><![CDATA[total]]></fieldDescription>
+ </field>
+ <field name="AOUT" class="java.lang.String">
+ <fieldDescription><![CDATA[AOUT]]></fieldDescription>
+ </field>
+ <field name="SEPTEMBRE" class="java.lang.String">
+ <fieldDescription><![CDATA[SEPTEMBRE]]></fieldDescription>
+ </field>
+ <field name="OCTOBRE" class="java.lang.String">
+ <fieldDescription><![CDATA[OCTOBRE]]></fieldDescription>
+ </field>
+ <field name="NOVEMBRE" class="java.lang.String">
+ <fieldDescription><![CDATA[NOVEMBRE]]></fieldDescription>
+ </field>
+ <field name="DECEMBRE" class="java.lang.String">
+ <fieldDescription><![CDATA[DECEMBRE]]></fieldDescription>
+ </field>
+ <field name="JANVIER" class="java.lang.String">
+ <fieldDescription><![CDATA[JANVIER]]></fieldDescription>
+ </field>
+ <field name="FEVRIER" class="java.lang.String">
+ <fieldDescription><![CDATA[FEVRIER]]></fieldDescription>
+ </field>
+ <field name="MARS" class="java.lang.String">
+ <fieldDescription><![CDATA[MARS]]></fieldDescription>
+ </field>
+ <field name="AVRIL" class="java.lang.String">
+ <fieldDescription><![CDATA[AVRIL]]></fieldDescription>
+ </field>
+ <field name="MAI" class="java.lang.String">
+ <fieldDescription><![CDATA[MAI]]></fieldDescription>
+ </field>
+ <field name="JUIN" class="java.lang.String">
+ <fieldDescription><![CDATA[JUIN]]></fieldDescription>
+ </field>
+ <field name="JUILLET" class="java.lang.String">
+ <fieldDescription><![CDATA[JUILLET]]></fieldDescription>
+ </field>
+ <columnHeader>
+ <band height="12">
+ <staticText>
+ <reportElement uuid="dc406057-b0ba-45aa-950b-b8b168cf0e59" style="cellule" x="0" y="0" width="58" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Date]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="9a77313b-6bb0-4c93-b210-bd7a4d6d88f2" style="cellule" x="58" y="0" width="111" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Nom]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="7926a339-c114-4bda-a61e-0cc2ffeefe8e" style="cellule" x="685" y="0" width="115" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Total]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="62de88a8-aaf3-4fc1-b2a3-f57ff6027803" style="cellule" x="169" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Août]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="2852e3e5-65b4-4933-a276-cecf336f7fd3" style="cellule" x="212" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Septembre]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="9cf941af-bcee-4f55-a7da-524f89b01a46" style="cellule" x="255" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Octobre]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="f43342dd-d93e-42b0-9b3f-c0935ef9b057" style="cellule" x="298" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Novembre]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="1d1a60c1-ebb4-4bc7-9236-cb7a1ad4a349" style="cellule" x="341" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Décembre]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="25867574-d5dc-4abc-91de-7314e68e5dde" style="cellule" x="384" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Janvier]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="5f8cefc8-b6b6-4619-8c66-3750a9e2f38d" style="cellule" x="427" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Février]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="6e13cf06-dbb6-4528-924e-72003824ade6" style="cellule" x="470" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Mars]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="94ea7aac-c1de-4425-b7da-d27aa62469c3" style="cellule" x="513" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Avril]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="292f5608-1d4d-408a-b6ef-159eec3179a9" style="cellule" x="556" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Mai]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="5b354722-5165-4c89-b626-d5496170bade" style="cellule" x="599" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Juin]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="f850ddc3-8dbf-4df5-8237-7c689a673a68" style="cellule" x="642" y="0" width="43" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Juillet]]></text>
+ </staticText>
+ </band>
+ </columnHeader>
+ <detail>
+ <band height="12">
+ <textField>
+ <reportElement uuid="076faf05-2c8e-4f33-be6b-2f3c57fffdd5" style="cellule" mode="Opaque" x="169" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{AOUT}.equals("0")?"-":$F{AOUT}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="15d28d7f-389a-4d2b-9d76-b019a05beb09" style="cellule" mode="Opaque" x="0" y="0" width="58" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{classe}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="92f55578-4d6b-443e-bcef-cede329acf61" style="cellule" mode="Opaque" x="58" y="0" width="111" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{nomPrenom}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="ddd873ae-ae05-48ed-a2c0-520739726f44" style="cellule" x="685" y="0" width="115" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{total}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="0b3cd6d9-e853-49c6-8022-87a28a8f853d" style="cellule" mode="Opaque" x="212" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{SEPTEMBRE}.equals("0")?"-":$F{SEPTEMBRE}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="825d19ba-2076-4b42-b83f-aeff49907f21" style="cellule" mode="Opaque" x="255" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{OCTOBRE}.equals("0")?"-":$F{OCTOBRE}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="ffad29a2-b2a7-419d-9e9c-39b4ba0b895d" style="cellule" mode="Opaque" x="341" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{DECEMBRE}.equals("0")?"-":$F{DECEMBRE}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="6b4c43e8-f707-403c-8087-e3038bd239cf" style="cellule" mode="Opaque" x="384" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{JANVIER}.equals("0")?"-":$F{JANVIER}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="448cea47-179d-49d7-86ed-7d10ef6d6eb8" style="cellule" mode="Opaque" x="427" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{FEVRIER}.equals("0")?"-":$F{FEVRIER}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="1403d0ac-5616-42e7-821c-d315b865a044" style="cellule" mode="Opaque" x="470" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{MARS}.equals("0")?"-":$F{MARS}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="3e7e361a-50a6-407b-a072-088211d70241" style="cellule" mode="Opaque" x="513" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{AVRIL}.equals("0")?"-":$F{AVRIL}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="9cb68205-95dd-44a8-9fde-df3f821c01b2" style="cellule" mode="Opaque" x="556" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{MAI}.equals("0")?"-":$F{MAI}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="65b961f2-f5d8-4981-b717-9564b3a906aa" style="cellule" mode="Opaque" x="599" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{JUIN}.equals("0")?"-":$F{JUIN}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="b8a25a62-3873-4b10-a844-383d85488602" style="cellule" mode="Opaque" x="642" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{JUILLET}.equals("0")?"-":$F{JUILLET}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="c1434312-bc04-4adb-bfbb-18a11efcc31a" style="cellule" mode="Opaque" x="298" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{NOVEMBRE}.equals("0")?"-":$F{NOVEMBRE}]]></textFieldExpression>
+ </textField>
+ </band>
+ </detail>
+ <lastPageFooter>
+ <band height="30">
+ <subreport>
+ <reportElement uuid="0f7e39d3-a356-41d9-8627-dd87deb6688f" x="0" y="0" width="800" height="30">
+ <printWhenExpression><![CDATA[$P{json}!=null]]></printWhenExpression>
+ </reportElement>
+ <dataSourceExpression><![CDATA[$P{json}]]></dataSourceExpression>
+ <subreportExpression><![CDATA[$P{total}]]></subreportExpression>
+ </subreport>
+ </band>
+ </lastPageFooter>
+</jasperReport>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="RegistreAppel" pageWidth="842" pageHeight="500" columnWidth="842" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="a894078a-929b-4aae-a1d0-46485f0f8835">
+ <property name="ireport.zoom" value="3.0"/>
+ <property name="ireport.x" value="0"/>
+ <property name="ireport.y" value="0"/>
+ <style name="cellule" mode="Transparent">
+ <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1">
+ <topPen lineWidth="0.25"/>
+ <leftPen lineWidth="0.25"/>
+ <bottomPen lineWidth="0.25"/>
+ <rightPen lineWidth="0.25"/>
+ </box>
+ </style>
+ <queryString language="json">
+ <![CDATA[]]>
+ </queryString>
+ <field name="nomPrenom" class="java.lang.String">
+ <fieldDescription><![CDATA[nomPrenom]]></fieldDescription>
+ </field>
+ <field name="total" class="java.lang.String">
+ <fieldDescription><![CDATA[total]]></fieldDescription>
+ </field>
+ <field name="AOUT" class="java.lang.String">
+ <fieldDescription><![CDATA[AOUT]]></fieldDescription>
+ </field>
+ <field name="SEPTEMBRE" class="java.lang.String">
+ <fieldDescription><![CDATA[SEPTEMBRE]]></fieldDescription>
+ </field>
+ <field name="OCTOBRE" class="java.lang.String">
+ <fieldDescription><![CDATA[OCTOBRE]]></fieldDescription>
+ </field>
+ <field name="NOVEMBRE" class="java.lang.String">
+ <fieldDescription><![CDATA[NOVEMBRE]]></fieldDescription>
+ </field>
+ <field name="DECEMBRE" class="java.lang.String">
+ <fieldDescription><![CDATA[DECEMBRE]]></fieldDescription>
+ </field>
+ <field name="JANVIER" class="java.lang.String">
+ <fieldDescription><![CDATA[JANVIER]]></fieldDescription>
+ </field>
+ <field name="FEVRIER" class="java.lang.String">
+ <fieldDescription><![CDATA[FEVRIER]]></fieldDescription>
+ </field>
+ <field name="MARS" class="java.lang.String">
+ <fieldDescription><![CDATA[MARS]]></fieldDescription>
+ </field>
+ <field name="AVRIL" class="java.lang.String">
+ <fieldDescription><![CDATA[AVRIL]]></fieldDescription>
+ </field>
+ <field name="MAI" class="java.lang.String">
+ <fieldDescription><![CDATA[MAI]]></fieldDescription>
+ </field>
+ <field name="JUIN" class="java.lang.String">
+ <fieldDescription><![CDATA[JUIN]]></fieldDescription>
+ </field>
+ <field name="JUILLET" class="java.lang.String">
+ <fieldDescription><![CDATA[JUILLET]]></fieldDescription>
+ </field>
+ <detail>
+ <band height="12">
+ <textField>
+ <reportElement uuid="076faf05-2c8e-4f33-be6b-2f3c57fffdd5" style="cellule" mode="Opaque" x="169" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{AOUT}.equals("0")?"-":$F{AOUT}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="15d28d7f-389a-4d2b-9d76-b019a05beb09" style="cellule" mode="Opaque" x="0" y="0" width="58" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA["Total ("+$F{nomPrenom}+")"]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="92f55578-4d6b-443e-bcef-cede329acf61" style="cellule" mode="Opaque" x="58" y="0" width="111" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[""]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="ddd873ae-ae05-48ed-a2c0-520739726f44" style="cellule" x="685" y="0" width="115" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{total}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="0b3cd6d9-e853-49c6-8022-87a28a8f853d" style="cellule" mode="Opaque" x="212" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{SEPTEMBRE}.equals("0")?"-":$F{SEPTEMBRE}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="825d19ba-2076-4b42-b83f-aeff49907f21" style="cellule" mode="Opaque" x="255" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{OCTOBRE}.equals("0")?"-":$F{OCTOBRE}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="ffad29a2-b2a7-419d-9e9c-39b4ba0b895d" style="cellule" mode="Opaque" x="341" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{DECEMBRE}.equals("0")?"-":$F{DECEMBRE}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="6b4c43e8-f707-403c-8087-e3038bd239cf" style="cellule" mode="Opaque" x="384" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{JANVIER}.equals("0")?"-":$F{JANVIER}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="448cea47-179d-49d7-86ed-7d10ef6d6eb8" style="cellule" mode="Opaque" x="427" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{FEVRIER}.equals("0")?"-":$F{FEVRIER}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="1403d0ac-5616-42e7-821c-d315b865a044" style="cellule" mode="Opaque" x="470" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{MARS}.equals("0")?"-":$F{MARS}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="3e7e361a-50a6-407b-a072-088211d70241" style="cellule" mode="Opaque" x="513" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{AVRIL}.equals("0")?"-":$F{AVRIL}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="9cb68205-95dd-44a8-9fde-df3f821c01b2" style="cellule" mode="Opaque" x="556" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{MAI}.equals("0")?"-":$F{MAI}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="65b961f2-f5d8-4981-b717-9564b3a906aa" style="cellule" mode="Opaque" x="599" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{JUIN}.equals("0")?"-":$F{JUIN}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="b8a25a62-3873-4b10-a844-383d85488602" style="cellule" mode="Opaque" x="642" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{JUILLET}.equals("0")?"-":$F{JUILLET}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="c1434312-bc04-4adb-bfbb-18a11efcc31a" style="cellule" mode="Opaque" x="298" y="0" width="43" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{NOVEMBRE}.equals("0")?"-":$F{NOVEMBRE}]]></textFieldExpression>
+ </textField>
+ </band>
+ </detail>
+</jasperReport>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="sample" pageWidth="802" pageHeight="500" columnWidth="802" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="a894078a-929b-4aae-a1d0-46485f0f8835">
+ <property name="ireport.zoom" value="2.0"/>
+ <property name="ireport.x" value="730"/>
+ <property name="ireport.y" value="0"/>
+ <style name="cellule" mode="Transparent" fontName="Arial" fontSize="8">
+ <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1">
+ <topPen lineWidth="0.25"/>
+ <leftPen lineWidth="0.25"/>
+ <bottomPen lineWidth="0.25"/>
+ <rightPen lineWidth="0.25"/>
+ </box>
+ </style>
+ <queryString language="json">
+ <![CDATA[]]>
+ </queryString>
+ <field name="date" class="java.lang.String">
+ <fieldDescription><![CDATA[date]]></fieldDescription>
+ </field>
+ <field name="nom" class="java.lang.String">
+ <fieldDescription><![CDATA[nom]]></fieldDescription>
+ </field>
+ <field name="classe" class="java.lang.String">
+ <fieldDescription><![CDATA[classe]]></fieldDescription>
+ </field>
+ <field name="type" class="java.lang.String">
+ <fieldDescription><![CDATA[type]]></fieldDescription>
+ </field>
+ <field name="modele" class="java.lang.String">
+ <fieldDescription><![CDATA[modele]]></fieldDescription>
+ </field>
+ <columnHeader>
+ <band height="12">
+ <staticText>
+ <reportElement uuid="31794c22-2162-4472-8d00-021de47fd072" style="cellule" x="0" y="0" width="98" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Date]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="c4a04ce8-5110-443c-9f5d-12f1780434bf" style="cellule" x="98" y="0" width="146" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Nom prénom]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="3cd09a25-39eb-4a9a-983a-26646c3e951e" style="cellule" x="244" y="0" width="160" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Classe]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="24ecda08-f7e6-4bd1-b108-4a1d8e9df43f" style="cellule" x="404" y="0" width="125" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Type]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="4ccd0539-61fa-45c4-8184-1ce12aee9906" style="cellule" x="529" y="0" width="273" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Modèle]]></text>
+ </staticText>
+ </band>
+ </columnHeader>
+ <detail>
+ <band height="12">
+ <textField>
+ <reportElement uuid="076faf05-2c8e-4f33-be6b-2f3c57fffdd5" style="cellule" mode="Opaque" x="244" y="0" width="160" height="12"/>
+ <textElement textAlignment="Left">
+ <font fontName="Arial" size="8" isBold="false" pdfEncoding="Cp1251" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{classe}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="15d28d7f-389a-4d2b-9d76-b019a05beb09" style="cellule" mode="Opaque" x="0" y="0" width="98" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{date}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="92f55578-4d6b-443e-bcef-cede329acf61" style="cellule" mode="Opaque" x="98" y="0" width="146" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{nom}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="947b44a6-178a-4bd9-8d86-eff2975f868d" style="cellule" mode="Opaque" x="404" y="0" width="125" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{type}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="25db4d8e-89e4-428d-b8b8-aef799a0f8f0" style="cellule" x="529" y="0" width="273" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8" isBold="false" isPdfEmbedded="true"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{modele}]]></textFieldExpression>
+ </textField>
+ </band>
+ </detail>
+</jasperReport>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="TableauDeBord" pageWidth="802" pageHeight="500" columnWidth="802" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="a894078a-929b-4aae-a1d0-46485f0f8835">
+ <property name="ireport.zoom" value="3.0"/>
+ <property name="ireport.x" value="0"/>
+ <property name="ireport.y" value="0"/>
+ <style name="cellule" mode="Transparent" isBlankWhenNull="true" fontName="Arial" fontSize="8" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false">
+ <box topPadding="1" leftPadding="2" bottomPadding="1" rightPadding="2">
+ <topPen lineWidth="0.25"/>
+ <leftPen lineWidth="0.25"/>
+ <bottomPen lineWidth="0.25"/>
+ <rightPen lineWidth="0.25"/>
+ </box>
+ </style>
+ <parameter name="json" class="java.lang.Object" isForPrompting="false"/>
+ <parameter name="total" class="java.lang.Object" isForPrompting="false"/>
+ <queryString language="json">
+ <![CDATA[]]>
+ </queryString>
+ <field name="divisionCode" class="java.lang.String">
+ <fieldDescription><![CDATA[divisionCode]]></fieldDescription>
+ </field>
+ <field name="nomPrenom" class="java.lang.String">
+ <fieldDescription><![CDATA[nomPrenom]]></fieldDescription>
+ </field>
+ <field name="retardsNb" class="java.lang.String">
+ <fieldDescription><![CDATA[retardsNb]]></fieldDescription>
+ </field>
+ <field name="departsAnticipesNb" class="java.lang.String">
+ <fieldDescription><![CDATA[departsAnticipesNb]]></fieldDescription>
+ </field>
+ <field name="sanctionsNb" class="java.lang.String">
+ <fieldDescription><![CDATA[sanctionsNb]]></fieldDescription>
+ </field>
+ <field name="punitionsNb" class="java.lang.String">
+ <fieldDescription><![CDATA[punitionsNb]]></fieldDescription>
+ </field>
+ <field name="internatsNb" class="java.lang.String">
+ <fieldDescription><![CDATA[internatsNb]]></fieldDescription>
+ </field>
+ <field name="demiPensionsNb" class="java.lang.String">
+ <fieldDescription><![CDATA[demiPensionsNb]]></fieldDescription>
+ </field>
+ <field name="absencesNb" class="java.lang.String">
+ <fieldDescription><![CDATA[absencesNb]]></fieldDescription>
+ </field>
+ <field name="nonExcuseesNb" class="java.lang.String">
+ <fieldDescription><![CDATA[nonExcuseesNb]]></fieldDescription>
+ </field>
+ <field name="excuseesNb" class="java.lang.String">
+ <fieldDescription><![CDATA[excuseesNb]]></fieldDescription>
+ </field>
+ <field name="nonValablesNb" class="java.lang.String">
+ <fieldDescription><![CDATA[nonValablesNb]]></fieldDescription>
+ </field>
+ <columnHeader>
+ <band height="12">
+ <staticText>
+ <reportElement uuid="dc406057-b0ba-45aa-950b-b8b168cf0e59" style="cellule" x="0" y="0" width="58" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Classes]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="9a77313b-6bb0-4c93-b210-bd7a4d6d88f2" style="cellule" x="58" y="0" width="167" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Nom prénom]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="96ce8af5-62d7-4122-8e0e-c798d202b8a2" style="cellule" x="225" y="0" width="57" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Abs tot.]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="fb84fda3-9ea9-422e-b3af-896a528c038f" style="cellule" x="282" y="0" width="57" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Non just.]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="cb041e2f-407d-4720-9b0c-8cbfe3e9b053" style="cellule" x="453" y="0" width="57" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Retards]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="2a837673-3e28-4d86-bbb4-63097a01aa92" style="cellule" x="510" y="0" width="57" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Départs]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="31f92d62-d318-4b6e-8d82-dd7355c87bb6" style="cellule" x="567" y="0" width="57" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Sanctions]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="a5a17361-05bb-4994-84d8-6861c33b4290" style="cellule" x="681" y="0" width="57" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Internat]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="7926a339-c114-4bda-a61e-0cc2ffeefe8e" style="cellule" x="738" y="0" width="57" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Demi-pension]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="ed8782c2-88a1-471d-921a-078b4df4151e" style="cellule" x="339" y="0" width="57" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Justifiées]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="1e12164e-2746-422f-8873-b3c6f8dff79b" style="cellule" x="396" y="0" width="57" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Non rec.]]></text>
+ </staticText>
+ <staticText>
+ <reportElement uuid="47bfe132-9a8c-4c19-bb8b-4aeba113a986" style="cellule" x="624" y="0" width="57" height="12"/>
+ <textElement textAlignment="Center">
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <text><![CDATA[Punitions]]></text>
+ </staticText>
+ </band>
+ </columnHeader>
+ <detail>
+ <band height="12">
+ <textField>
+ <reportElement uuid="af3e9a78-cfde-450c-b13e-a119e7886126" style="cellule" x="0" y="0" width="58" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{divisionCode}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="cffb6738-0b8e-4319-91a5-95b75c592b35" style="cellule" x="58" y="0" width="167" height="12"/>
+ <textElement>
+ <font fontName="Arial" size="8"/>
+ </textElement>
+ <textFieldExpression><![CDATA[$F{nomPrenom}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="229cf286-0ab8-4197-9294-97f28c3f9bd5" style="cellule" x="738" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{demiPensionsNb}.equals("0")?"-":$F{demiPensionsNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="fab0cedc-d5a8-4b1a-badf-284bda3e34fb" style="cellule" x="681" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{internatsNb}.equals("0")?"-":$F{internatsNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="1e5cbe7c-ae89-457e-8c82-f495a0277af9" style="cellule" x="624" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{punitionsNb}.equals("0")?"-":$F{punitionsNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="904569d0-0640-4864-a1a3-b5ec1d515196" style="cellule" x="567" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{sanctionsNb}.equals("0")?"-":$F{sanctionsNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="aea1c7c1-e012-46bf-bc11-c9df115bc119" style="cellule" x="510" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{departsAnticipesNb}.equals("0")?"-":$F{departsAnticipesNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="48bce19f-2357-491b-a8dd-df58fd3b0dde" style="cellule" x="453" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{retardsNb}.equals("0")?"-":$F{retardsNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="f699bbf0-9bd4-4705-a47f-be47b034f8ed" style="cellule" x="225" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{absencesNb}.equals("0")?"-":$F{absencesNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="73455b7d-c33b-4c07-af95-6bf3aa79c07e" style="cellule" x="282" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{nonExcuseesNb}.equals("0")?"-":$F{nonExcuseesNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="9ea8b488-5daa-44c7-ab81-0a9f5319be5a" style="cellule" x="339" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{excuseesNb}.equals("0")?"-":$F{excuseesNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="a8e5d2a8-8738-4797-98e3-bb64e32a33f6" style="cellule" x="396" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{nonValablesNb}.equals("0")?"-":$F{nonValablesNb}]]></textFieldExpression>
+ </textField>
+ </band>
+ </detail>
+ <lastPageFooter>
+ <band height="30" splitType="Stretch">
+ <subreport>
+ <reportElement uuid="4cfc6eaa-f5e5-4b95-9ae3-ecde53b2666b" x="0" y="0" width="795" height="30">
+ <printWhenExpression><![CDATA[$P{json}!=null]]></printWhenExpression>
+ </reportElement>
+ <dataSourceExpression><![CDATA[$P{json}]]></dataSourceExpression>
+ <subreportExpression><![CDATA[$P{total}]]></subreportExpression>
+ </subreport>
+ </band>
+ </lastPageFooter>
+</jasperReport>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="TableauDeBord" pageWidth="802" pageHeight="500" columnWidth="802" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="a894078a-929b-4aae-a1d0-46485f0f8835">
+ <property name="ireport.zoom" value="3.0"/>
+ <property name="ireport.x" value="0"/>
+ <property name="ireport.y" value="0"/>
+ <style name="cellule" mode="Transparent" isBlankWhenNull="true" fontName="Arial" fontSize="8" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false">
+ <box topPadding="1" leftPadding="2" bottomPadding="1" rightPadding="2">
+ <topPen lineWidth="0.25"/>
+ <leftPen lineWidth="0.25"/>
+ <bottomPen lineWidth="0.25"/>
+ <rightPen lineWidth="0.25"/>
+ </box>
+ </style>
+ <queryString language="json">
+ <![CDATA[]]>
+ </queryString>
+ <field name="retardsNb" class="java.lang.String">
+ <fieldDescription><![CDATA[retardsNb]]></fieldDescription>
+ </field>
+ <field name="departsAnticipesNb" class="java.lang.String">
+ <fieldDescription><![CDATA[departsAnticipesNb]]></fieldDescription>
+ </field>
+ <field name="sanctionsNb" class="java.lang.String">
+ <fieldDescription><![CDATA[sanctionsNb]]></fieldDescription>
+ </field>
+ <field name="punitionsNb" class="java.lang.String">
+ <fieldDescription><![CDATA[punitionsNb]]></fieldDescription>
+ </field>
+ <field name="internatsNb" class="java.lang.String">
+ <fieldDescription><![CDATA[internatsNb]]></fieldDescription>
+ </field>
+ <field name="demiPensionsNb" class="java.lang.String">
+ <fieldDescription><![CDATA[demiPensionsNb]]></fieldDescription>
+ </field>
+ <field name="absencesNb" class="java.lang.String">
+ <fieldDescription><![CDATA[absencesNb]]></fieldDescription>
+ </field>
+ <field name="nonExcuseesNb" class="java.lang.String">
+ <fieldDescription><![CDATA[nonExcuseesNb]]></fieldDescription>
+ </field>
+ <field name="excuseesNb" class="java.lang.String">
+ <fieldDescription><![CDATA[excuseesNb]]></fieldDescription>
+ </field>
+ <field name="nonValablesNb" class="java.lang.String">
+ <fieldDescription><![CDATA[nonValablesNb]]></fieldDescription>
+ </field>
+ <field name="elevesNb" class="java.lang.String">
+ <fieldDescription><![CDATA[elevesNb]]></fieldDescription>
+ </field>
+ <detail>
+ <band height="12">
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="229cf286-0ab8-4197-9294-97f28c3f9bd5" style="cellule" x="738" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{demiPensionsNb}.equals("0")?"-":$F{demiPensionsNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="fab0cedc-d5a8-4b1a-badf-284bda3e34fb" style="cellule" x="681" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{internatsNb}.equals("0")?"-":$F{internatsNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="1e5cbe7c-ae89-457e-8c82-f495a0277af9" style="cellule" x="624" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{punitionsNb}.equals("0")?"-":$F{punitionsNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="904569d0-0640-4864-a1a3-b5ec1d515196" style="cellule" x="567" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{sanctionsNb}.equals("0")?"-":$F{sanctionsNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="aea1c7c1-e012-46bf-bc11-c9df115bc119" style="cellule" x="510" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{departsAnticipesNb}.equals("0")?"-":$F{departsAnticipesNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="48bce19f-2357-491b-a8dd-df58fd3b0dde" style="cellule" x="453" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{retardsNb}.equals("0")?"-":$F{retardsNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="f699bbf0-9bd4-4705-a47f-be47b034f8ed" style="cellule" x="225" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{absencesNb}.equals("0")?"-":$F{absencesNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="73455b7d-c33b-4c07-af95-6bf3aa79c07e" style="cellule" x="282" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{nonExcuseesNb}.equals("0")?"-":$F{nonExcuseesNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="9ea8b488-5daa-44c7-ab81-0a9f5319be5a" style="cellule" x="339" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{excuseesNb}.equals("0")?"-":$F{excuseesNb}]]></textFieldExpression>
+ </textField>
+ <textField isBlankWhenNull="true">
+ <reportElement uuid="a8e5d2a8-8738-4797-98e3-bb64e32a33f6" style="cellule" x="396" y="0" width="57" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA[$F{nonValablesNb}.equals("0")?"-":$F{nonValablesNb}]]></textFieldExpression>
+ </textField>
+ <textField>
+ <reportElement uuid="73aec53e-3eac-4b92-b529-41e48430557d" style="cellule" x="0" y="0" width="225" height="12"/>
+ <textElement/>
+ <textFieldExpression><![CDATA["Total pour ces "+$F{elevesNb}+" élèves"]]></textFieldExpression>
+ </textField>
+ </band>
+ </detail>
+</jasperReport>