+#!/bin/bash
+
+#############################################################################
+# PUSHDOC de masse - appliqué au flux PESv2
+# Auteur : Stephane Vast - (c)2015 Adullact Projet
+#
+# Description : Ce script fait de l'injection de masse, basé sur les règles:
+# - les flux XML depense/recette sont dans 2 repertoires séparés
+# - Un pattern dans le nom de fichier détermine le TYPE i-Parapheur
+# - Le nom de dossier selon infos extraites du XML
+# - Le sous-type est déterminé selon infos dans XML (flux paie), ou
+# pattern dans le nom de fichier (recette/depense)
+# - les paramètres d'appel changent selon la nature du XML (paie ou non)
+#
+# Pré-requis:
+# - 'xmlstarlet' pour parser le XML
+# - 'pushdociparapheur' v1.5 minimum pour le support du nommage de dossier
+#############################################################################
+JAVA="java"
+LOG_FILE="./pushdoc.log"
+JAR="./pushdociparapheur-1.6.jar"
+FICHIER_CONF_ASTRE="./confAstre.cf"
+FICHIER_CONF_ASTRE_PAYE="./confAstrepaye.cf"
+VISUEL_PDF="./template-visuelPDF.pdf"
+REPERTOIRE_SOURCE="/opt/pesv2"
+DOSSIER_DEPOT="DEPOT"
+EXTENSION="xml"
+VISIB="GROUPE"
+
+## Adresse email de l'emetteur
+EMETTEUR="CHANGEZ@MOI.com"
+
+## patterns flux Recette/Depense
+PATT_RECETTE="Recette" # "Recettes"
+PATT_DEPENSE="Depense" # "Depenses"
+
+## patterns identification de collectivite
+PATT_CDE="_CDE_"
+PATT_CCAS="_CCAS_"
+PATT_VILLE="_VILLE_"
+PATT_PARK="_PARK_"
+
+
+#############################################################################
+## Si le repertoire source renseigné en paramètre existe : on surcharge
+if [[ ( $# > 0 ) && ( -d "$1" ) ]]
+then
+ REPERTOIRE_SOURCE=$1
+fi
+
+#############################################################################
+## Vérification des prérequis
+if [[ !( -f "$FICHIER_CONF_ASTRE" ) ]]
+then
+ echo "Fichier de configuration introuvable : \"$FICHIER_CONF_ASTRE\""
+ exit 1
+fi
+
+if [[ !( -f "$JAR" ) ]]
+then
+ echo "JAR introuvable : \"$JAR\""
+ exit 1
+fi
+
+DATE=`date +%Y-%m-%d:%H:%M:%S`
+echo "$DATE - DEBUT DU TRAITEMENT" >> ${LOG_FILE}
+
+### Flux depenses et recettes
+for DOSSIER_DEPOT in depense recette
+do
+ echo "$DATE - Flux $DOSSIER_DEPOT ################" >> ${LOG_FILE}
+ for CHEMIN_FICHIER in "$REPERTOIRE_SOURCE"/"$DOSSIER_DEPOT"/*.${EXTENSION} # On parcourt les fichiers
+ do
+ if [[ -f "$CHEMIN_FICHIER" ]] # Si c'est un fichier qui existe
+ then
+ FICHIER_CONF="$FICHIER_CONF_ASTRE"
+
+ FICHIER=$(basename "$CHEMIN_FICHIER") # avec l'extension
+ # extension="${FICHIER##*.}"
+ NOM_FICHIER="${FICHIER%.*}" # sans l'extension
+ # NOM_DOSSIER=`xmlstarlet sel -N "n=http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" -t -v "/n:PES_Aller/EnTetePES/LibelleColBud/@V" -v "/n:PES_Aller/PES_DepenseAller/Bordereau/BlocBordereau/Exer/@V" -o " - Bordereau " -v "/n:PES_Aller/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/@V" -o " - Montant HT " -v "/n:PES_Aller/PES_DepenseAller/Bordereau/BlocBordereau/MtBordHT/@V" -o " - " -v "/n:PES_Aller/PES_DepenseAller/Bordereau/BlocBordereau/NbrPce/@V" -o " pièces" -n $CHEMIN_FICHIER`
+ NOM_DOSSIER=`xmlstarlet sel -t -v "//EnTetePES/LibelleColBud/@V" -v "//Bordereau/BlocBordereau/Exer/@V" -o " - Bordereau " -v "//Bordereau/BlocBordereau/IdBord/@V" -o " - Montant HT " -v "//Bordereau/BlocBordereau/MtBordHT/@V" -o " - " -v "//Bordereau/BlocBordereau/NbrPce/@V" -o " pièces" -n "$CHEMIN_FICHIER"`
+ IDUNIQUE=`xmlstarlet sel -t -v "//Bordereau/Piece/BlocPiece/InfoPce/PJRef/IdUnique/@V" -n "$CHEMIN_FICHIER"`
+
+ # Determination type et sous-type
+ TYPE="_inconnu_"
+ SOUSTYPE="_inconnu_"
+ if [[ "$NOM_FICHIER" =~ "$PATT_CDE" ]];
+ then
+ TYPE="PES_CDE"
+ fi
+ if [[ "$NOM_FICHIER" =~ "$PATT_CCAS" ]];
+ then
+ TYPE="PES_CCAS"
+ fi
+ if [[ "$NOM_FICHIER" =~ "$PATT_VILLE" ]];
+ then
+ TYPE="PES_VILLE"
+ fi
+ if [[ "$NOM_FICHIER" =~ "$PATT_PARK" ]];
+ then
+ TYPE="PES_PARK"
+ fi
+
+ ## Cas flux Recette
+ if [[ "$NOM_FICHIER" =~ "$PATT_RECETTE" ]];
+ then
+ SOUSTYPE="Recettes"
+ fi
+
+ ## Cas flux Depense
+ if [[ "$NOM_FICHIER" =~ "$PATT_DEPENSE" ]];
+ then
+ SOUSTYPE="Depenses"
+ fi
+
+ ## Isoler la Paye
+ if [[ "$IDUNIQUE" =~ "PAIE" ]]; # si _CDE_ && PAIE
+ then
+ PJREF=`xmlstarlet sel -t -v "//Bordereau/Piece/BlocPiece/InfoPce/PJRef/NomPJ/@V" -n "$CHEMIN_FICHIER"`
+ if [[ "$PJREF" =~ ".xhl" ]];
+ then
+ SOUSTYPE="Paye"
+ FICHIER_CONF="$FICHIER_CONF_ASTRE_PAYE"
+ VISIB="CONFIDENTIEL"
+ fi
+ fi
+
+
+
+ DATE=`date +%Y-%m-%d:%H:%M:%S`
+ echo "$DATE - Envoi du fichier $FICHIER (dossier \"$NOM_DOSSIER\") avec typologie : $TYPE / $SOUSTYPE" >> ${LOG_FILE}
+
+ # On envoie le fichier au i-Parapheur
+ RETOUR=`"$JAVA" -jar "$JAR" --type "$TYPE" --sousType "$SOUSTYPE" --documentPrincipal "$CHEMIN_FICHIER" --visuelPdf "$VISUEL_PDF" --nomDocumentPrincipal "$FICHIER" --xPath "//Bordereau" --visibilite ${VISIB} --id "$NOM_FICHIER" --nomDossier "$NOM_DOSSIER" --email ${EMETTEUR} --config "$FICHIER_CONF"`
+
+ DATE=`date +%Y-%m-%d:%H:%M:%S`
+ echo "$DATE - Retour du parapheur : $RETOUR" >> ${LOG_FILE}
+ if [[ "$RETOUR" == "Dossier $NOM_DOSSIER soumis dans le circuit" ]] # Si le dossier est bien créé, on supprime le fichier
+ then
+ DATE=`date +%Y-%m-%d:%H:%M:%S`
+ echo "$DATE - Suppression du fichier : $FICHIER" >> ${LOG_FILE}
+ rm -f "$CHEMIN_FICHIER"
+ fi
+ fi
+ done
+done